{"version":3,"file":"uofx-app-components-cad-viewer.mjs","sources":["../../../projects/uofx-app-pack/cad-viewer/src/api/cad-viewer.service.ts","../../../projects/uofx-app-pack/cad-viewer/src/cad-viewer.dialog.ts","../../../projects/uofx-app-pack/cad-viewer/src/cad-viewer.dialog.html","../../../projects/uofx-app-pack/cad-viewer/src/cad-viewer.module.ts","../../../projects/uofx-app-pack/cad-viewer/src/api/cad-viewer.model.ts","../../../projects/uofx-app-pack/cad-viewer/uofx-app-components-cad-viewer.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\n\r\nimport { UofxCADReadableResModel, UofxCADViewerTokenModel } from './cad-viewer.model';\r\n\r\n@Injectable()\r\nexport class UofxCADViewerService {\r\n  constructor(private http: HttpClient) {}\r\n\r\n  /**\r\n   * 取得Autodesk Token\r\n   * @memberof UofxCADViewerService\r\n   */\r\n  public getAutodeskToken() {\r\n    return this.http.get<UofxCADViewerTokenModel>('~/api/app/base/utility/cad/token');\r\n  }\r\n\r\n  /**\r\n   * 檢查CAD檔是否可讀取\r\n   * @memberof UofxCADViewerService\r\n   */\r\n  public checkCADReadable(fileId: string) {\r\n    return this.http.get<UofxCADReadableResModel>(`~/api/app/base/utility/checkcad/${fileId}`);\r\n  }\r\n}\r\n","import { ActionSheetController, AlertController } from '@ionic/angular';\r\nimport { Component, Input, inject } from '@angular/core';\r\nimport { ViewerInitializedEvent, ViewerOptions } from 'ng2-adsk-forge-viewer';\r\n\r\nimport { MCORE_CONFIG } from '@uofx/core/mcore-config';\r\nimport { UofxCADViewerService } from './api/cad-viewer.service';\r\nimport { UofxFileDownloadHelper } from '@uofx/app-components/file-helper';\r\nimport { UofxI18NService } from '@uofx/core';\r\n\r\n@Component({\r\n  selector: 'uofx-cad-viewer-dialog',\r\n  templateUrl: './cad-viewer.dialog.html',\r\n  styleUrls: ['./cad-viewer.dialog.scss'],\r\n})\r\nexport class UofxCADViewerDialog {\r\n  /** 檢視器標題(如果未填，會顯示fileName) */\r\n  @Input() title: string;\r\n  /** 檔案id */\r\n  @Input() fileId: string;\r\n  /** CAD檔名 */\r\n  @Input() fileName: string;\r\n  /** cad urn */\r\n  @Input() urn: string;\r\n\r\n  /**\r\n   * 下載url(file:綁token的下載url、img:原始檔案url)，\r\n   * 欄位是前端用，未在 UofxFileModel裡，所以另外傳入。\r\n   */\r\n  @Input() downloadUrl: string;\r\n  /** 原始檔案url */\r\n  @Input() url: string;\r\n  /** 是否允許下載原始檔 */\r\n  @Input() allowDownloadFile: boolean;\r\n\r\n  private mcoreConfig = inject(MCORE_CONFIG);\r\n\r\n  /** Viewer的設定 */\r\n  viewerOptions: ViewerOptions;\r\n  /**\r\n   * Viewer Token\r\n   * -\r\n   * 1. 透過後端跟Autodesk取得\r\n   * 2. 這組token是有時效性的，因此需要即時跟後端取得\r\n   */\r\n  ACCESS_TOKEN: string;\r\n  /** 要檢視的CAD檔案 (這組base64是經過Autodesk轉換後的URN) */\r\n  DOCUMENT_URN: string;\r\n\r\n  constructor(\r\n    private service: UofxCADViewerService,\r\n    private i18n: UofxI18NService,\r\n    private alertCtrl: AlertController,\r\n    private actSheetCtrl: ActionSheetController,\r\n    private downloadHelper: UofxFileDownloadHelper\r\n  ) {}\r\n\r\n  ionViewDidEnter(): void {\r\n    this.initParams();\r\n    this.initCAD();\r\n    this.checkCADReadable();\r\n  }\r\n\r\n  /** 初始化dialog params */\r\n  initParams() {\r\n    this.DOCUMENT_URN = this.urn;\r\n  }\r\n\r\n  /**\r\n   * 初始化CAD\r\n   * -\r\n   * 1. 取得Autodesk Token\r\n   * 2. 設定Viewer Options\r\n   */\r\n  initCAD() {\r\n    this.service.getAutodeskToken().subscribe({\r\n      next: (res) => {\r\n        this.ACCESS_TOKEN = res.accesstoken;\r\n      },\r\n      complete: () => {\r\n        this.setViewerOptions();\r\n      },\r\n    });\r\n  }\r\n\r\n  /**\r\n   * 檢查CAD檔是否可讀取\r\n   * -\r\n   * 不可讀取時api也會是200，但會提示無法觀看\r\n   */\r\n  checkCADReadable() {\r\n    this.service.checkCADReadable(this.fileId).subscribe({\r\n      next: (res) => {\r\n        if (res.errorCode) {\r\n          this.alertMessage(res.errorCode);\r\n        }\r\n      },\r\n    });\r\n  }\r\n\r\n  /** 設定Viewer Options */\r\n  setViewerOptions() {\r\n    this.viewerOptions = {\r\n      initializerOptions: {\r\n        env: 'AutodeskProduction',\r\n        api: 'derivativeV2',\r\n        getAccessToken: (onGetAccessToken: (token: string, expire: number) => void) => {\r\n          const expireTimeSeconds = 60 * 30;\r\n          onGetAccessToken(this.ACCESS_TOKEN, expireTimeSeconds);\r\n        },\r\n      },\r\n      viewerConfig: {\r\n        extensions: ['Autodesk.DocumentBrowser'],\r\n        theme: 'dark-theme',\r\n      },\r\n      onViewerInitialized: (args: ViewerInitializedEvent) => {\r\n        args.viewerComponent.DocumentId = this.DOCUMENT_URN;\r\n      },\r\n    };\r\n  }\r\n\r\n  /** 提示無法觀看 */\r\n  async alertMessage(errorCode: string) {\r\n    const alert = await this.alertCtrl.create({\r\n      // 檔案無法線上觀看\r\n      // *UKEY:\"global.cad-viewer.alert-unreadable-title\"\r\n      // 請向管理員尋求協助 ( errorcode )\r\n      // *UKEY:\"global.cad-viewer.alert-unreadable-content\"\r\n      // 確定\r\n      // *UKEY:\"global.comm.alert.ok\"\r\n      header: this.i18n.trans('global.cad-viewer.alert-unreadable-title'),\r\n      subHeader: this.i18n.trans('global.cad-viewer.alert-unreadable-content', { errorCode }),\r\n      buttons: [\r\n        {\r\n          text: this.i18n.trans('global.comm.alert.ok'),\r\n          cssClass: 'uofx-alert-button',\r\n        },\r\n      ],\r\n    });\r\n    await alert.present();\r\n  }\r\n\r\n  /** 點按右上角 [更多] 按鈕 */\r\n  async onMoreBtnClick() {\r\n    const actionSheet = await this.actSheetCtrl.create({\r\n      buttons: this.setMoreItemButtons(),\r\n    });\r\n    await actionSheet.present();\r\n  }\r\n\r\n  /** more items */\r\n  setMoreItemButtons() {\r\n    // *UKEY:\"global.cad-viewer.action-sheet.download\"\r\n    const button = [];\r\n    // 下載原始檔\r\n    button.push({\r\n      text: this.i18n.trans('global.cad-viewer.action-sheet.download'),\r\n      handler: () => {\r\n        this.downloadCAD(false, this.downloadUrl, this.url);\r\n      },\r\n    });\r\n    // 取消\r\n    button.push({\r\n      text: this.i18n.trans('global.comm.button.cancel'),\r\n      role: 'cancel',\r\n    });\r\n    return button;\r\n  }\r\n\r\n  /**\r\n   * 下載檔案\r\n   * -\r\n   * 1. if: web下載檔案\r\n   * 2. else: app下載檔案\r\n   */\r\n  downloadCAD(isPdfUrl: boolean, downloadUrl: string, url: string) {\r\n    const isWebMode = this.mcoreConfig.IsMock;\r\n    // downloadUrl 下載url(file:綁token的下載url、img:原始檔案url)\r\n    // url 原始檔案url(24小時內有效)\r\n\r\n    if (isWebMode) {\r\n      this.downloadHelper.webModeDownloadFile(downloadUrl, this.fileName);\r\n    } else {\r\n      this.downloadHelper.downloadRawFileInAppBrowser(isPdfUrl, downloadUrl, url);\r\n    }\r\n  }\r\n}\r\n","<uofx-modal-header [title]=\"title ? title : fileName\">\r\n  <ion-button *ngIf=\"allowDownloadFile\" class=\"uofx-btn-icon\" (click)=\"onMoreBtnClick()\">\r\n    <uofx-icon color=\"gb-500\" slot=\"icon-only\" size=\"24\" name=\"ellipsis-horizontal\"></uofx-icon>\r\n  </ion-button>\r\n</uofx-modal-header>\r\n<ion-content [fullscreen]=\"true\">\r\n  <div class=\"viewer-host\">\r\n    <adsk-forge-viewer [viewerOptions]=\"viewerOptions\"></adsk-forge-viewer>\r\n  </div>\r\n</ion-content>\r\n","import { ViewerModule } from 'ng2-adsk-forge-viewer';\r\n\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { UofxIconModule } from '@uofx/app-components/icon';\r\nimport { UofxModalModule } from '@uofx/app-components/modal';\r\n\r\nimport { UofxCADViewerService } from './api/cad-viewer.service';\r\nimport { UofxCADViewerDialog } from './cad-viewer.dialog';\r\n\r\n@NgModule({\r\n  imports: [CommonModule, IonicModule, ViewerModule, UofxModalModule, UofxIconModule],\r\n  exports: [],\r\n  declarations: [UofxCADViewerDialog],\r\n  providers: [UofxCADViewerService],\r\n})\r\nexport class UofxCadViewerModule {}\r\n","/** cad viewer token */\r\nexport interface UofxCADViewerTokenModel {\r\n  /** token */\r\n  accesstoken: string;\r\n}\r\n\r\n/** CAD檔案動作類型 */\r\nexport enum UofxCADFileActionType {\r\n  /** 新增 */\r\n  Add,\r\n  /** 下載 */\r\n  Download,\r\n  /** 觀看 */\r\n  View,\r\n  /** 更新 */\r\n  Update,\r\n}\r\n\r\n/** 檢查CAD檔是否可讀取 resModel */\r\nexport interface UofxCADReadableResModel {\r\n  /** 錯誤代碼 (可觀看時為null) */\r\n  errorCode: string;\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.UofxCADViewerService"],"mappings":"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"}