{"version":3,"file":"uiowa-universal-workflow.mjs","sources":["../../../../projects/uiowa/universal-workflow/src/lib/workflow.service.ts","../../../../projects/uiowa/universal-workflow/src/lib/workflow-widget.component.ts","../../../../projects/uiowa/universal-workflow/src/lib/uw-routing-history.component.ts","../../../../projects/uiowa/universal-workflow/src/lib/universal-workflow.module.ts","../../../../projects/uiowa/universal-workflow/src/public-api.ts","../../../../projects/uiowa/universal-workflow/src/uiowa-universal-workflow.ts"],"sourcesContent":["import { Inject, Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { forkJoin, Observable, ReplaySubject, shareReplay } from 'rxjs';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\nexport interface WidgetConfig {\r\n  clientId: string;\r\n  workflowEnvironment: string;\r\n  formId: number;\r\n  scope: string;\r\n}\r\n\r\nexport interface WorkflowAllowedActions {\r\n  signatureId?: number;\r\n  canAddApprover: boolean;\r\n  canSign: boolean;\r\n  canVoidAfter: boolean;\r\n  canView: boolean;\r\n  packageId: number;\r\n  canInitiatorVoid: boolean;\r\n  canEdit: boolean;\r\n  canVoid: boolean;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class WorkflowService {\r\n  protected readonly api: string = 'api/workflow';\r\n  private _loadedLibraries: { [url: string]: ReplaySubject<number> } = {};\r\n  today = new Date();\r\n  private _widgetConfig$?: Observable<WidgetConfig>;\r\n\r\n  constructor(\r\n    protected httpClient: HttpClient,\r\n    @Inject(DOCUMENT) private readonly document: Document\r\n  ) {}\r\n\r\n  getWorkflowWidgetConfig(): Observable<WidgetConfig> {\r\n    if (!this._widgetConfig$) {\r\n      this._widgetConfig$ = this.httpClient\r\n        .get<WidgetConfig>(`${this.api}/widget-config`)\r\n        .pipe(shareReplay(1));\r\n    }\r\n    return this._widgetConfig$;\r\n  }\r\n\r\n  getPackageRoutingHistory(packageId: number): Observable<string> {\r\n    return this.httpClient.get<string>(\r\n      `${this.api}/packages/${packageId}/routing-history`\r\n    );\r\n  }\r\n\r\n  lazyLoadWorkflowWidget(): Observable<any> {\r\n    return this.loadScript(\r\n      'https://workflow.uiowa.edu/workflow-widget/workflow.js?ver=' +\r\n        new Date().getTime()\r\n    );\r\n  }\r\n\r\n  lazyLoadHistoryWidget(): Observable<any> {\r\n    return forkJoin([\r\n      this.loadScript(\r\n        'https://workflow.uiowa.edu/workflow-widget/historyFormat.js?ver=' +\r\n          this.today.getTime()\r\n      ),\r\n      this.loadScript(\r\n        'https://workflow.uiowa.edu/workflow-widget/assets/js/workflow-widget-route-table.js?ver=' +\r\n          this.today.getTime()\r\n      ),\r\n      this.loadScript('https://code.jquery.com/jquery-3.6.0.min.js'),\r\n      this.loadScript(\r\n        'https://workflow.uiowa.edu/workflow-widget/assets/js/moment/moment.2.7.0.js'\r\n      ),\r\n    ]);\r\n  }\r\n\r\n  private loadScript(url: string): Observable<any> {\r\n    if (this._loadedLibraries[url]) {\r\n      return this._loadedLibraries[url].asObservable();\r\n    }\r\n\r\n    this._loadedLibraries[url] = new ReplaySubject();\r\n\r\n    const script = this.document.createElement('script');\r\n    script.type = 'text/javascript';\r\n    script.async = true;\r\n    script.src = url;\r\n    script.onload = () => {\r\n      this._loadedLibraries[url].next(1);\r\n      this._loadedLibraries[url].complete();\r\n    };\r\n\r\n    this.document.body.appendChild(script);\r\n\r\n    return this._loadedLibraries[url].asObservable();\r\n  }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { finalize } from 'rxjs';\r\nimport { WorkflowService } from './workflow.service';\r\n\r\ndeclare global {\r\n  interface Window {\r\n    /**\r\n     * Global WorkflowWidget object\r\n     * https://workflow.uiowa.edu/help/article/36/6\r\n     */\r\n    WorkflowWidget: {\r\n      form_id: number;\r\n      package_id: number;\r\n      signature_id: string;\r\n      scope: string;\r\n      client_id: string;\r\n      environment: string;\r\n      post_sign_void?: string;\r\n      post_version_mismatch?: string;\r\n    };\r\n  }\r\n}\r\n\r\n@Component({\r\n  selector: 'workflow-widget',\r\n  template: `\r\n    @if(loading){\r\n    <div style=\"height: 20rem\">\r\n      <loading-placeholder></loading-placeholder>\r\n    </div>\r\n    }\r\n    <div id=\"workflowWidgetContainer\"></div>\r\n  `,\r\n  styles: [],\r\n})\r\nexport class WorkflowWidgetComponent implements OnInit {\r\n  @Input() packageId = 0;\r\n  @Input() signatureId = '';\r\n  loading = false;\r\n\r\n  constructor(private readonly svc: WorkflowService) {}\r\n\r\n  ngOnInit(): void {\r\n    this.loading = true;\r\n    this.svc.getWorkflowWidgetConfig().subscribe((c) => {\r\n      window.WorkflowWidget = {\r\n        form_id: c.formId,\r\n        package_id: this.packageId,\r\n        scope: c.scope,\r\n        client_id: c.clientId,\r\n        environment: c.workflowEnvironment,\r\n        signature_id: this.signatureId,\r\n        post_sign_void: '',\r\n        post_version_mismatch: '',\r\n      };\r\n      this.svc\r\n        .lazyLoadWorkflowWidget()\r\n        .pipe(finalize(() => (this.loading = false)))\r\n        .subscribe();\r\n    });\r\n  }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { WorkflowService } from './workflow.service';\r\nimport { finalize } from 'rxjs';\r\n\r\ndeclare function formatWorkflowHistory(\r\n  workflowPath: string,\r\n  package_id: number\r\n): string;\r\n\r\n@Component({\r\n  selector: 'uw-routing-history',\r\n  template: `\r\n    @if(loading){\r\n    <div style=\"height: 20rem\">\r\n      <loading-placeholder></loading-placeholder>\r\n    </div>\r\n    } @else {\r\n    <div id=\"routingHistory\" [innerHtml]=\"routingHistoryString\"></div>\r\n    }\r\n  `,\r\n  styles: [],\r\n})\r\nexport class UwRoutingHistoryComponent implements OnInit {\r\n  @Input() packageId = 0;\r\n  loading = false;\r\n  routingHistoryString = '';\r\n\r\n  constructor(private readonly svc: WorkflowService) {}\r\n\r\n  ngOnInit(): void {\r\n    this.loading = true;\r\n    this.svc.lazyLoadHistoryWidget().subscribe((_) => {\r\n      this.svc\r\n        .getPackageRoutingHistory(this.packageId || 0)\r\n        .pipe(finalize(() => (this.loading = false)))\r\n        .subscribe((x) => {\r\n          this.routingHistoryString = formatWorkflowHistory(\r\n            x,\r\n            this.packageId || 0\r\n          );\r\n        });\r\n    });\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SpinnerModule } from '@uiowa/spinner';\r\nimport { WorkflowWidgetComponent } from './workflow-widget.component';\r\nimport { UwRoutingHistoryComponent } from './uw-routing-history.component';\r\n\r\n@NgModule({\r\n  declarations: [WorkflowWidgetComponent, UwRoutingHistoryComponent],\r\n  imports: [CommonModule, SpinnerModule],\r\n  exports: [WorkflowWidgetComponent, UwRoutingHistoryComponent],\r\n})\r\nexport class UniversalWorkflowModule {}\r\n","/*\r\n * Public API Surface of universal-workflow\r\n */\r\n\r\nexport * from './lib/workflow.service';\r\nexport * from './lib/universal-workflow.module';\r\nexport * from './lib/uw-routing-history.component';\r\nexport * from './lib/workflow-widget.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.WorkflowService"],"mappings":"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"}