page-book-display.component.ts 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import { CommonModule } from '@angular/common';
  2. import { Component, OnInit } from '@angular/core';
  3. import { ActivatedRoute } from '@angular/router';
  4. import { CloudObject, CloudQuery } from 'src/lib/ncloud';
  5. import {
  6. IonHeader, IonToolbar, IonTitle, IonContent, IonButtons,
  7. IonBackButton, IonCard, IonCardHeader, IonCardTitle,
  8. IonCardSubtitle, IonCardContent, IonChip, IonLabel,
  9. IonIcon, IonButton, IonImg, IonSpinner, NavController
  10. } from '@ionic/angular/standalone';
  11. import { addIcons } from 'ionicons';
  12. import {
  13. star, downloadOutline, createOutline, bookmarkOutline,
  14. documentTextOutline, timeOutline, fileTrayOutline,
  15. pricetagsOutline, shareSocialOutline
  16. } from 'ionicons/icons';
  17. @Component({
  18. selector: 'app-page-book-display',
  19. templateUrl: './page-book-display.component.html',
  20. styleUrls: ['./page-book-display.component.scss'],
  21. standalone: true,
  22. imports: [
  23. CommonModule,
  24. IonHeader, IonToolbar, IonTitle, IonContent, IonButtons,
  25. IonBackButton, IonCard, IonCardHeader, IonCardTitle,
  26. IonCardSubtitle, IonCardContent, IonChip, IonLabel,
  27. IonIcon, IonButton, IonImg, IonSpinner
  28. ]
  29. })
  30. export class PageBookDisplayComponent implements OnInit {
  31. book: CloudObject | undefined | null;
  32. constructor(
  33. private route: ActivatedRoute,
  34. private navCtrl: NavController
  35. ) {
  36. addIcons({
  37. star, downloadOutline, createOutline, bookmarkOutline,
  38. documentTextOutline, timeOutline, fileTrayOutline,
  39. pricetagsOutline, shareSocialOutline
  40. });
  41. this.route.params.subscribe(params => {
  42. this.loadBook(params['bookId']);
  43. });
  44. }
  45. //返回
  46. back() {
  47. this.navCtrl.back();
  48. }
  49. //加载文书
  50. async loadBook(bookId: string) {
  51. let query = new CloudQuery("DocumentCategory");
  52. this.book = await query.get(bookId);
  53. }
  54. // 为标签生成随机颜色
  55. getTagColor(tag: string): string {
  56. const colors = ['primary', 'secondary', 'tertiary', 'success', 'warning', 'danger'];
  57. const index = Math.abs(this.hashCode(tag)) % colors.length;
  58. return colors[index];
  59. }
  60. // 简单的字符串hash函数
  61. private hashCode(str: string): number {
  62. let hash = 0;
  63. for (let i = 0; i < str.length; i++) {
  64. const char = str.charCodeAt(i);
  65. hash = ((hash << 5) - hash) + char;
  66. hash |= 0; // Convert to 32bit integer
  67. }
  68. return hash;
  69. }
  70. ngOnInit() {}
  71. }