@valtimo/process 4.22.0 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/esm2020/lib/models/index.mjs +19 -0
  2. package/esm2020/lib/models/process.model.mjs +17 -0
  3. package/esm2020/lib/process-diagram/process-diagram.component.mjs +259 -0
  4. package/esm2020/lib/process.module.mjs +67 -0
  5. package/esm2020/lib/process.service.mjs +122 -0
  6. package/esm2020/public_api.mjs +23 -0
  7. package/esm2020/valtimo-process.mjs +5 -0
  8. package/fesm2015/valtimo-process.mjs +483 -0
  9. package/fesm2015/valtimo-process.mjs.map +1 -0
  10. package/{fesm2015/valtimo-process.js → fesm2020/valtimo-process.mjs} +83 -58
  11. package/fesm2020/valtimo-process.mjs.map +1 -0
  12. package/lib/models/index.d.ts +1 -0
  13. package/lib/models/index.d.ts.map +1 -0
  14. package/lib/models/process.model.d.ts +1 -0
  15. package/lib/models/process.model.d.ts.map +1 -0
  16. package/lib/process-diagram/process-diagram.component.d.ts +4 -0
  17. package/lib/process-diagram/process-diagram.component.d.ts.map +1 -0
  18. package/lib/process.module.d.ts +10 -0
  19. package/lib/process.module.d.ts.map +1 -0
  20. package/lib/process.service.d.ts +4 -0
  21. package/lib/process.service.d.ts.map +1 -0
  22. package/package.json +23 -11
  23. package/public_api.d.ts +1 -0
  24. package/public_api.d.ts.map +1 -0
  25. package/valtimo-process.d.ts +2 -0
  26. package/valtimo-process.d.ts.map +1 -0
  27. package/bundles/valtimo-process.umd.js +0 -491
  28. package/bundles/valtimo-process.umd.js.map +0 -1
  29. package/bundles/valtimo-process.umd.min.js +0 -2
  30. package/bundles/valtimo-process.umd.min.js.map +0 -1
  31. package/esm2015/lib/models/index.js +0 -19
  32. package/esm2015/lib/models/process.model.js +0 -16
  33. package/esm2015/lib/process-diagram/process-diagram.component.js +0 -256
  34. package/esm2015/lib/process.module.js +0 -43
  35. package/esm2015/lib/process.service.js +0 -125
  36. package/esm2015/public_api.js +0 -23
  37. package/esm2015/valtimo-process.js +0 -5
  38. package/fesm2015/valtimo-process.js.map +0 -1
  39. package/valtimo-process.metadata.json +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../projects/valtimo/process/src/lib/process.service.ts","../../../../projects/valtimo/process/src/lib/process-diagram/process-diagram.component.ts","../../../../projects/valtimo/process/src/lib/process.module.ts"],"names":["ProcessService","http","configService","this","valtimoEndpointUri","config","valtimoApi","endpointUri","prototype","getProcessDefinitions","get","getProcessDefinitionVersions","key","getProcessDefinition","getProcessDefinitionStartFormData","processDefinitionKey","startProcesInstance","businessKey","variables","post","getProcessDefinitionXml","processDefinitionId","getProcessXml","id","getProcessCount","processVariables","name","value","getProcessHeatmapCount","processDefinition","version","getProcessHeatmapDuration","getProcessInstances","page","size","sort","params","HttpParams","set","toString","getProcessInstance","processInstanceId","getProcessInstanceTasks","getProcessInstanceVariables","variableNames","addProcessInstancesDefaultVariablesValues","processInstances","_this","forEach","processInstance","addDefaultVariablesValues","startUser","startUserId","processStarted","startTime","processEnded","endTime","active","getInstancesStatistics","fromDate","toDate","processFilter","deployProcess","processXml","formData","FormData","append","File","migrateProcess","processDefinition1Id","processDefinition2Id","Injectable","args","providedIn","HttpClient","ConfigService","ProcessDiagramComponent","processService","importDone","EventEmitter","enumHeatmapOptions","ngOnInit","loadProcessDefinitionFromKey","loadProcessInstanceXml","bpmnJS","BpmnJS","on","_a","error","canvas_1","eventBus","processDiagram","historicActivityInstances","instance","activityType","addMarker","activityId","zoom","processDefinitionVersions","showHeatmap","clearHeatmap","loadHeatmapData","ngOnChanges","ngOnDestroy","destroy","loadProcessDefinition","subscribe","response","heatmapOption","loadProcessDefinitionXml","loadProcessDefinitionVersions","importXML","bpmn20Xml","attachTo","el","nativeElement","loadProcessDefinitionHeatmapCount","inputData","valueKey","heatPoints","data","min","max","Object","keys","diagramContainer","querySelector","getBoundingClientRect","diagramElm","setMax","push","x","Math","round","width","y","height","radius","addCounterActiveOverlays","loadHeatmap","onWindowResize","oldCanvas","remove","heatMapInstance","loadProcessDefinitionHeatmapDuration","setProcessDefinitionKey","setProcessDefinitionVersion","setHeatmapOption","toggleShowHeatmap","heatmap.create","blur","maxOpacity","minOpacity","container","setData","find","definition","heatmapDuration","averageDurationInMilliseconds","heatmapCount","totalCount","count","add","position","bottom","left","show","minZoom","maxZoom","html","Component","selector","template","encapsulation","ViewEncapsulation","None","ViewChild","static","Output","Input","NgModule","declarations","imports","CommonModule","ListModule","WidgetModule","TimelineModule","BpmnJsDiagramModule","CamundaFormModule","BrowserAnimationsModule","ToastrModule","forRoot","positionClass","preventDuplicates","exports"],"mappings":"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","sourcesContent":["/*\n * Copyright 2015-2020 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {HttpClient, HttpParams} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {\n ProcessDefinition,\n ProcessDefinitionStartForm,\n ProcessInstance,\n ProcessInstanceTask,\n ProcessStart,\n} from './models';\nimport {ConfigService} from '@valtimo/config';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProcessService {\n private valtimoEndpointUri: string;\n\n constructor(private http: HttpClient, configService: ConfigService) {\n this.valtimoEndpointUri = configService.config.valtimoApi.endpointUri;\n }\n\n getProcessDefinitions(): Observable<ProcessDefinition[]> {\n return this.http.get<ProcessDefinition[]>(`${this.valtimoEndpointUri}process/definition`);\n }\n\n getProcessDefinitionVersions(key: string): Observable<ProcessDefinition[]> {\n return this.http.get<ProcessDefinition[]>(\n `${this.valtimoEndpointUri}process/definition/${key}/versions`\n );\n }\n\n getProcessDefinition(key: string): Observable<ProcessDefinition> {\n return this.http.get<ProcessDefinition>(`${this.valtimoEndpointUri}process/definition/${key}`);\n }\n\n getProcessDefinitionStartFormData(\n processDefinitionKey: string\n ): Observable<ProcessDefinitionStartForm> {\n return this.http.get<ProcessDefinitionStartForm>(\n `${this.valtimoEndpointUri}process/definition/${processDefinitionKey}/start-form`\n );\n }\n\n startProcesInstance(\n key: string,\n businessKey: string,\n variables: Map<string, any>\n ): Observable<any> {\n return this.http.post<ProcessStart>(\n `${this.valtimoEndpointUri}process/definition/${key}/${businessKey}/start`,\n variables\n );\n }\n\n getProcessDefinitionXml(processDefinitionId: string): Observable<any> {\n return this.http.get(`${this.valtimoEndpointUri}process/definition/${processDefinitionId}/xml`);\n }\n\n getProcessXml(id: string): Observable<any> {\n return this.http.get(`${this.valtimoEndpointUri}process/${id}/xml`);\n }\n\n getProcessCount(id: string): Observable<any> {\n return this.http.post(`${this.valtimoEndpointUri}v2/process/definition/${id}/count`, {\n key: id,\n processVariables: [{'@type': 'boolean', name: 'active', value: true}],\n });\n }\n\n getProcessHeatmapCount(processDefinition: ProcessDefinition): Observable<any[]> {\n return this.http.get<any[]>(\n `${this.valtimoEndpointUri}process/definition/${processDefinition.key}/heatmap/count?version=${processDefinition.version}`\n );\n }\n\n getProcessHeatmapDuration(processDefinition: ProcessDefinition): Observable<any[]> {\n return this.http.get<any[]>(\n `${this.valtimoEndpointUri}process/definition/${processDefinition.key}/heatmap/duration?version=${processDefinition.version}`\n );\n }\n\n getProcessInstances(key: string, page: number, size: number, sort: string): Observable<any> {\n const params = new HttpParams()\n .set('page', page.toString())\n .set('size', size.toString())\n .set('sort', sort);\n\n return this.http.post<ProcessInstance>(\n `${this.valtimoEndpointUri}v2/process/${key}/search`,\n {},\n {params: params}\n );\n }\n\n getProcessInstance(processInstanceId: string): Observable<ProcessInstance> {\n return this.http.get<ProcessInstance>(\n `${this.valtimoEndpointUri}process/${processInstanceId}`,\n {}\n );\n }\n\n getProcessInstanceTasks(id: string): Observable<ProcessInstanceTask[]> {\n return this.http.get<ProcessInstanceTask[]>(\n `${this.valtimoEndpointUri}process/${id}/tasks`,\n {}\n );\n }\n\n getProcessInstanceVariables(id: string, variableNames: Array<any>): Observable<any> {\n return this.http.post(\n `${this.valtimoEndpointUri}process-instance/${id}/variables`,\n variableNames\n );\n }\n\n addProcessInstancesDefaultVariablesValues(processInstances: Array<any>) {\n processInstances.forEach(processInstance => this.addDefaultVariablesValues(processInstance));\n return processInstances;\n }\n\n addDefaultVariablesValues(processInstance: any) {\n if (!processInstance['startUser']) {\n processInstance.startUser = processInstance.startUserId;\n }\n if (!processInstance['processStarted']) {\n processInstance.processStarted = processInstance.startTime;\n }\n if (!processInstance['processEnded']) {\n processInstance.processEnded = processInstance.endTime;\n }\n if (!processInstance['active']) {\n processInstance.active = processInstance.endTime == null;\n }\n return processInstance;\n }\n\n getInstancesStatistics(fromDate?: string, toDate?: string, processFilter?: string) {\n const params = new HttpParams();\n params.set('fromDate', fromDate);\n params.set('toDate', toDate);\n params.set('processFilter', processFilter);\n return this.http.get<any[]>(`${this.valtimoEndpointUri}reporting/instancesstatistics`, {\n params: params,\n });\n }\n\n deployProcess(processXml: string) {\n const formData = new FormData();\n formData.append('file', new File([processXml], 'process.bpmn'));\n formData.append('deployment-name', 'valtimoConsoleApp');\n formData.append('deployment-source', 'process application');\n return this.http.post(\n `${this.valtimoEndpointUri}camunda-rest/engine/default/deployment/create`,\n formData\n );\n }\n\n migrateProcess(\n processDefinition1Id: string,\n processDefinition2Id: string,\n params: any\n ): Observable<any> {\n return this.http.post(\n `${this.valtimoEndpointUri}process/definition/${processDefinition1Id}/${processDefinition2Id}/migrate`,\n params\n );\n }\n}\n","/*\n * Copyright 2015-2020 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {ProcessService} from '../process.service';\n\nimport * as BpmnJS from 'bpmn-js/dist/bpmn-navigated-viewer.production.min.js';\nimport * as heatmap from 'heatmap.js-fixed/build/heatmap.js';\n\n@Component({\n selector: 'valtimo-process-diagram',\n templateUrl: './process-diagram.component.html',\n styleUrls: ['./process-diagram.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class ProcessDiagramComponent implements OnInit, OnDestroy, OnChanges {\n private bpmnJS: BpmnJS;\n private heatMapInstance: any;\n\n @ViewChild('ref', {static: true}) public el: ElementRef;\n @Output() public importDone: EventEmitter<any> = new EventEmitter();\n @Input() public processDefinitionKey?: string;\n @Input() public processInstanceId?: string;\n\n public processDiagram: any;\n public processDefinition: any;\n public processDefinitionVersions: any;\n public heatmapCount: any;\n public heatmapDuration: any;\n public tasksCount: any;\n public showHeatmap: boolean;\n public enumHeatmapOptions = ['count', 'duration'];\n public heatmapOption: string;\n public version: any;\n public heatPoints: any;\n public min: number;\n public max: number;\n public inputData: any;\n public valueKey: any;\n\n constructor(private processService: ProcessService) {}\n\n ngOnInit() {\n if (this.processDefinitionKey) {\n this.loadProcessDefinitionFromKey(this.processDefinitionKey);\n }\n if (this.processInstanceId) {\n this.loadProcessInstanceXml(this.processInstanceId);\n }\n this.bpmnJS = new BpmnJS();\n this.bpmnJS.on('import.done', ({error}) => {\n if (!error) {\n const canvas = this.bpmnJS.get('canvas'),\n eventBus = this.bpmnJS.get('eventBus');\n if (this.processDiagram.historicActivityInstances) {\n this.processDiagram.historicActivityInstances.forEach(instance => {\n // exclude multiInstanceBody\n if (instance.activityType !== 'multiInstanceBody') {\n canvas.addMarker(\n instance.activityId,\n instance.endTime ? 'highlight-overlay-past' : 'highlight-overlay-current'\n );\n }\n });\n }\n\n canvas.zoom('fit-viewport', 'auto');\n if (this.processDefinitionVersions) {\n eventBus.on('canvas.init', () => {\n if (this.showHeatmap) {\n this.clearHeatmap();\n }\n this.loadHeatmapData();\n });\n eventBus.on('canvas.viewbox.changing', () => {\n if (this.showHeatmap) {\n this.clearHeatmap();\n }\n });\n eventBus.on('canvas.viewbox.changed', () => {\n this.loadHeatmapData();\n });\n }\n }\n });\n }\n\n ngOnChanges(): void {\n if (this.processDefinitionKey) {\n this.loadProcessDefinitionFromKey(this.processDefinitionKey);\n } else if (this.processInstanceId) {\n this.loadProcessInstanceXml(this.processInstanceId);\n }\n }\n\n ngOnDestroy() {\n if (this.bpmnJS) {\n this.bpmnJS.destroy();\n }\n }\n\n public loadProcessDefinition(processDefinitionKey) {\n this.processService.getProcessDefinition(processDefinitionKey).subscribe(response => {\n this.heatmapOption = this.enumHeatmapOptions[0];\n this.version = response.version;\n this.loadProcessDefinitionXml(response.id);\n });\n }\n\n public loadProcessDefinitionVersions(processDefinitionKey) {\n this.processService.getProcessDefinitionVersions(processDefinitionKey).subscribe(response => {\n this.processDefinitionVersions = response;\n });\n }\n\n public loadProcessDefinitionFromKey(processDefinitionKey) {\n this.loadProcessDefinitionVersions(processDefinitionKey);\n this.loadProcessDefinition(processDefinitionKey);\n }\n\n public loadProcessDefinitionXml(processDefinitionId) {\n this.processService.getProcessDefinitionXml(processDefinitionId).subscribe(response => {\n this.processDiagram = response;\n this.bpmnJS.importXML(this.processDiagram.bpmn20Xml);\n this.bpmnJS.attachTo(this.el.nativeElement);\n });\n }\n\n private loadProcessInstanceXml(processInstanceId) {\n this.processService.getProcessXml(processInstanceId).subscribe(response => {\n this.processDiagram = response;\n this.bpmnJS.importXML(this.processDiagram.bpmn20Xml);\n this.bpmnJS.attachTo(this.el.nativeElement);\n });\n }\n\n public loadProcessDefinitionHeatmapCount(processDefinition) {\n this.processService.getProcessHeatmapCount(processDefinition).subscribe(response => {\n this.inputData = response;\n this.valueKey = 'totalCount';\n this.heatPoints = {data: []};\n this.min = 0;\n this.max = 0;\n\n Object.keys(this.inputData).forEach(key => {\n const diagramContainer = this.el.nativeElement.querySelector('svg').getBoundingClientRect(),\n diagramElm = this.el.nativeElement\n .querySelector(`g[data-element-id=${key}]`)\n .getBoundingClientRect();\n this.setMax(key);\n this.heatPoints.data.push({\n x: Math.round(diagramElm.x - diagramContainer.x + diagramElm.width / 2),\n y: Math.round(diagramElm.y - diagramContainer.y + diagramElm.height / 2),\n value: this.inputData[key][this.valueKey],\n radius: diagramElm.width / 2,\n });\n this.addCounterActiveOverlays(key, this.inputData);\n });\n this.clearHeatmap();\n if (this.showHeatmap) {\n this.loadHeatmap();\n }\n });\n }\n\n public onWindowResize() {\n const oldCanvas = this.el.nativeElement.querySelector('canvas[class=heatmap-canvas]');\n if (oldCanvas) {\n oldCanvas.remove();\n this.heatMapInstance = null;\n }\n if (this.showHeatmap) {\n this.loadHeatmap();\n }\n }\n\n public loadProcessDefinitionHeatmapDuration(processDefinition) {\n this.processService.getProcessHeatmapDuration(processDefinition).subscribe(response => {\n this.inputData = response;\n this.valueKey = 'averageDurationInMilliseconds';\n this.heatPoints = {data: []};\n this.min = 0;\n this.max = 0;\n\n Object.keys(this.inputData).forEach(key => {\n const diagramContainer = this.el.nativeElement.querySelector('svg').getBoundingClientRect(),\n diagramElm = this.el.nativeElement\n .querySelector(`g[data-element-id=${key}]`)\n .getBoundingClientRect();\n this.setMax(key);\n this.heatPoints.data.push({\n x: Math.round(diagramElm.x - diagramContainer.x + diagramElm.width / 2),\n y: Math.round(diagramElm.y - diagramContainer.y + diagramElm.height / 2),\n value: this.inputData[key][this.valueKey],\n radius: diagramElm.width / 2,\n });\n this.addCounterActiveOverlays(key, this.inputData);\n });\n this.clearHeatmap();\n if (this.showHeatmap) {\n this.loadHeatmap();\n }\n });\n }\n\n public setProcessDefinitionKey(processDefinitionKey) {\n this.processDefinitionKey = processDefinitionKey;\n this.loadProcessDefinitionFromKey(this.processDefinitionKey);\n }\n\n public setProcessDefinitionVersion(version) {\n this.version = +version;\n this.loadHeatmapData();\n }\n\n public setHeatmapOption(heatmapOption) {\n this.heatmapOption = heatmapOption;\n this.loadHeatmapData();\n }\n\n public toggleShowHeatmap() {\n this.showHeatmap = !this.showHeatmap;\n this.loadHeatmapData();\n }\n\n public loadHeatmap() {\n if (!this.heatMapInstance) {\n this.heatMapInstance = heatmap.create({\n radius: 54,\n blur: 0.7,\n maxOpacity: 0.4,\n minOpacity: 0,\n container: this.el.nativeElement,\n });\n }\n this.heatMapInstance.setData({\n min: this.min,\n max: this.max,\n data: this.heatPoints.data,\n });\n }\n\n public clearHeatmap() {\n if (this.heatMapInstance) {\n this.heatMapInstance.setData({data: []});\n }\n }\n\n public loadHeatmapData() {\n this.processDefinition = this.processDefinitionVersions.find(\n definition => definition.version === this.version\n );\n\n if (this.heatmapOption === 'count') {\n this.loadProcessDefinitionHeatmapCount(this.processDefinition);\n }\n if (this.heatmapOption === 'duration') {\n this.loadProcessDefinitionHeatmapDuration(this.processDefinition);\n }\n }\n\n public setMax(key: any) {\n if (this.heatmapDuration) {\n this.max = Math.max(this.heatmapDuration[key].averageDurationInMilliseconds, this.max);\n } else if (this.heatmapCount) {\n this.max = Math.max(\n this.heatmapCount[key].totalCount + this.heatmapCount[key].count,\n this.max\n );\n }\n }\n\n public addCounterActiveOverlays(key: any, inputData: any) {\n const overlays = this.bpmnJS.get('overlays');\n overlays.add(key, {\n position: {\n bottom: 13,\n left: -12,\n },\n show: {\n minZoom: 0,\n maxZoom: 5.0,\n },\n html: `<span class=\"badge badge-pill badge-primary\">${inputData[key].count}</span>`,\n });\n }\n}\n","/*\n * Copyright 2015-2020 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {\n BpmnJsDiagramModule,\n CamundaFormModule,\n ListModule,\n TimelineModule,\n WidgetModule,\n} from '@valtimo/components';\nimport {ToastrModule} from 'ngx-toastr';\nimport {BrowserAnimationsModule} from '@angular/platform-browser/animations';\nimport {ProcessDiagramComponent} from './process-diagram/process-diagram.component';\n\n@NgModule({\n declarations: [ProcessDiagramComponent],\n imports: [\n CommonModule,\n ListModule,\n WidgetModule,\n TimelineModule,\n BpmnJsDiagramModule,\n CamundaFormModule,\n BrowserAnimationsModule,\n ToastrModule.forRoot({\n positionClass: 'toast-bottom-full-width',\n preventDuplicates: true,\n }),\n ],\n exports: [ProcessDiagramComponent],\n})\nexport class ProcessModule {}\n"]}
@@ -1,19 +0,0 @@
1
- /*
2
- *
3
- * * Copyright 2015-2020 Ritense BV, the Netherlands.
4
- * *
5
- * * Licensed under EUPL, Version 1.2 (the "License");
6
- * * you may not use this file except in compliance with the License.
7
- * * You may obtain a copy of the License at
8
- * *
9
- * * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
10
- * *
11
- * * Unless required by applicable law or agreed to in writing, software
12
- * * distributed under the License is distributed on an "AS IS" basis,
13
- * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * * See the License for the specific language governing permissions and
15
- * * limitations under the License.
16
- *
17
- */
18
- export * from './process.model';
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiL3RtcC9qZW5raW5zLTg3ZTU2NmU4L3dvcmtzcGFjZS9yb250ZW5kX2xpYnJhcmllc18tX3JlbGVhc2VfbWFpbi9wcm9qZWN0cy92YWx0aW1vL3Byb2Nlc3Mvc3JjLyIsInNvdXJjZXMiOlsibGliL21vZGVscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUVILGNBQWMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICpcbiAqICAqIENvcHlyaWdodCAyMDE1LTIwMjAgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICogICpcbiAqICAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiAgKlxuICogICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICogICpcbiAqICAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqICAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHJvY2Vzcy5tb2RlbCc7XG4iXX0=
@@ -1,16 +0,0 @@
1
- /*
2
- * Copyright 2015-2020 Ritense BV, the Netherlands.
3
- *
4
- * Licensed under EUPL, Version 1.2 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" basis,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIvdG1wL2plbmtpbnMtODdlNTY2ZTgvd29ya3NwYWNlL3JvbnRlbmRfbGlicmFyaWVzXy1fcmVsZWFzZV9tYWluL3Byb2plY3RzL3ZhbHRpbW8vcHJvY2Vzcy9zcmMvIiwic291cmNlcyI6WyJsaWIvbW9kZWxzL3Byb2Nlc3MubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0ciLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb2Nlc3NTdGFydCB7XG4gIGtleTogc3RyaW5nO1xuICBidXNpbmVzc0tleTogc3RyaW5nO1xuICB2YXJpYWJsZXM6IEFycmF5PGFueT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2VzcyB7XG4gIGlkOiBzdHJpbmc7XG4gIGJ1c2luZXNzS2V5OiBzdHJpbmc7XG4gIHN0YXJ0VGltZTogc3RyaW5nO1xuICBlbmRUaW1lOiBzdHJpbmc7XG4gIHByb2Nlc3NEZWZpbml0aW9uS2V5OiBzdHJpbmc7XG4gIHByb2Nlc3NEZWZpbml0aW9uTmFtZTogc3RyaW5nO1xuICBzdGFydFVzZXJJZDogc3RyaW5nO1xuICBkZWxldGVSZWFzb246IHN0cmluZztcbiAgc3RhcnRVc2VyOiBzdHJpbmc7XG4gIHByb2Nlc3NTdGFydGVkOiBzdHJpbmc7XG4gIHByb2Nlc3NFbmRlZDogc3RyaW5nO1xuICBhY3RpdmU6IGJvb2xlYW47XG4gIHZhcmlhYmxlczogUHJvY2Vzc0luc3RhbmNlVmFyaWFibGVbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9jZXNzRGVmaW5pdGlvbiB7XG4gIHZpc2libGVJbk1lbnU6IGFueTtcbiAgY2F0ZWdvcnk6IHN0cmluZztcbiAgZGVwbG95bWVudElkOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGRpYWdyYW06IHN0cmluZztcbiAgaGlzdG9yeVRpbWVUb0xpdmU6IHN0cmluZztcbiAgaWQ6IHN0cmluZztcbiAga2V5OiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgcmVzb3VyY2U6IHN0cmluZztcbiAgc3RhcnRhYmxlSW5UYXNrbGlzdDogYm9vbGVhbjtcbiAgc3VzcGVuZGVkOiBmYWxzZTtcbiAgdGVuYW50SWQ6IHN0cmluZztcbiAgdmVyc2lvbjogbnVtYmVyO1xuICB2ZXJzaW9uVGFnOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc0RlZmluaXRpb25TdGFydEZvcm0ge1xuICBmb3JtRmllbGRzOiBBcnJheTxhbnk+O1xuICBmb3JtTG9jYXRpb246IHN0cmluZztcbiAgZ2VuZXJpY0Zvcm06IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc0luc3RhbmNlIHtcbiAgaWQ6IHN0cmluZztcbiAgYnVzaW5lc3NLZXk6IHN0cmluZztcbiAgc3RhcnRUaW1lOiBzdHJpbmc7XG4gIGVuZFRpbWU6IHN0cmluZztcbiAgcHJvY2Vzc0RlZmluaXRpb25LZXk6IHN0cmluZztcbiAgcHJvY2Vzc0RlZmluaXRpb25OYW1lOiBzdHJpbmc7XG4gIHN0YXJ0VXNlcklkOiBzdHJpbmc7XG4gIGRlbGV0ZVJlYXNvbjogc3RyaW5nO1xuICB2YXJpYWJsZXM6IFByb2Nlc3NJbnN0YW5jZVZhcmlhYmxlW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc0luc3RhbmNlVmFyaWFibGUge1xuICBpZDogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgdGV4dFZhbHVlPzogc3RyaW5nO1xuICBsb25nVmFsdWU/OiBudW1iZXI7XG4gIGxvY2FsOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb2Nlc3NJbnN0YW5jZVRhc2sge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGFzc2lnbmVlOiBzdHJpbmc7XG4gIGNyZWF0ZWQ6IHN0cmluZztcbiAgY3JlYXRlZFVuaXg6IG51bWJlcjtcbiAgZHVlOiBzdHJpbmc7XG4gIGZvbGxvd1VwOiBzdHJpbmc7XG4gIGRlbGVnYXRpb25TdGF0ZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBleGVjdXRpb25JZDogc3RyaW5nO1xuICBvd25lcjogc3RyaW5nO1xuICBwYXJlbnRUYXNrSWQ6IHN0cmluZztcbiAgcHJpb3JpdHk6IG51bWJlcjtcbiAgcHJvY2Vzc0RlZmluaXRpb25JZDogc3RyaW5nO1xuICBwcm9jZXNzSW5zdGFuY2VJZDogc3RyaW5nO1xuICB0YXNrRGVmaW5pdGlvbktleTogc3RyaW5nO1xuICBjYXNlRXhlY3V0aW9uSWQ6IHN0cmluZztcbiAgY2FzZUluc3RhbmNlSWQ6IHN0cmluZztcbiAgY2FzZURlZmluaXRpb25JZDogc3RyaW5nO1xuICBzdXNwZW5kZWQ6IGJvb2xlYW47XG4gIGZvcm1LZXk6IHN0cmluZztcbiAgdGVuYW50SWQ6IHN0cmluZztcbiAgaWRlbnRpdHlMaW5rczogSWRlbnRpdHlMaW5rW107XG5cbiAgaXNMb2NrZWQoKTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJZGVudGl0eUxpbmsge1xuICB1c2VySWQ6IHN0cmluZztcbiAgZ3JvdXBJZDogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG59XG4iXX0=
@@ -1,256 +0,0 @@
1
- /*
2
- * Copyright 2015-2020 Ritense BV, the Netherlands.
3
- *
4
- * Licensed under EUPL, Version 1.2 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" basis,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { Component, ElementRef, EventEmitter, Input, Output, ViewChild, ViewEncapsulation, } from '@angular/core';
17
- import { ProcessService } from '../process.service';
18
- import * as BpmnJS from 'bpmn-js/dist/bpmn-navigated-viewer.production.min.js';
19
- import * as heatmap from 'heatmap.js-fixed/build/heatmap.js';
20
- export class ProcessDiagramComponent {
21
- constructor(processService) {
22
- this.processService = processService;
23
- this.importDone = new EventEmitter();
24
- this.enumHeatmapOptions = ['count', 'duration'];
25
- }
26
- ngOnInit() {
27
- if (this.processDefinitionKey) {
28
- this.loadProcessDefinitionFromKey(this.processDefinitionKey);
29
- }
30
- if (this.processInstanceId) {
31
- this.loadProcessInstanceXml(this.processInstanceId);
32
- }
33
- this.bpmnJS = new BpmnJS();
34
- this.bpmnJS.on('import.done', ({ error }) => {
35
- if (!error) {
36
- const canvas = this.bpmnJS.get('canvas'), eventBus = this.bpmnJS.get('eventBus');
37
- if (this.processDiagram.historicActivityInstances) {
38
- this.processDiagram.historicActivityInstances.forEach(instance => {
39
- // exclude multiInstanceBody
40
- if (instance.activityType !== 'multiInstanceBody') {
41
- canvas.addMarker(instance.activityId, instance.endTime ? 'highlight-overlay-past' : 'highlight-overlay-current');
42
- }
43
- });
44
- }
45
- canvas.zoom('fit-viewport', 'auto');
46
- if (this.processDefinitionVersions) {
47
- eventBus.on('canvas.init', () => {
48
- if (this.showHeatmap) {
49
- this.clearHeatmap();
50
- }
51
- this.loadHeatmapData();
52
- });
53
- eventBus.on('canvas.viewbox.changing', () => {
54
- if (this.showHeatmap) {
55
- this.clearHeatmap();
56
- }
57
- });
58
- eventBus.on('canvas.viewbox.changed', () => {
59
- this.loadHeatmapData();
60
- });
61
- }
62
- }
63
- });
64
- }
65
- ngOnChanges() {
66
- if (this.processDefinitionKey) {
67
- this.loadProcessDefinitionFromKey(this.processDefinitionKey);
68
- }
69
- else if (this.processInstanceId) {
70
- this.loadProcessInstanceXml(this.processInstanceId);
71
- }
72
- }
73
- ngOnDestroy() {
74
- if (this.bpmnJS) {
75
- this.bpmnJS.destroy();
76
- }
77
- }
78
- loadProcessDefinition(processDefinitionKey) {
79
- this.processService.getProcessDefinition(processDefinitionKey).subscribe(response => {
80
- this.heatmapOption = this.enumHeatmapOptions[0];
81
- this.version = response.version;
82
- this.loadProcessDefinitionXml(response.id);
83
- });
84
- }
85
- loadProcessDefinitionVersions(processDefinitionKey) {
86
- this.processService.getProcessDefinitionVersions(processDefinitionKey).subscribe(response => {
87
- this.processDefinitionVersions = response;
88
- });
89
- }
90
- loadProcessDefinitionFromKey(processDefinitionKey) {
91
- this.loadProcessDefinitionVersions(processDefinitionKey);
92
- this.loadProcessDefinition(processDefinitionKey);
93
- }
94
- loadProcessDefinitionXml(processDefinitionId) {
95
- this.processService.getProcessDefinitionXml(processDefinitionId).subscribe(response => {
96
- this.processDiagram = response;
97
- this.bpmnJS.importXML(this.processDiagram.bpmn20Xml);
98
- this.bpmnJS.attachTo(this.el.nativeElement);
99
- });
100
- }
101
- loadProcessInstanceXml(processInstanceId) {
102
- this.processService.getProcessXml(processInstanceId).subscribe(response => {
103
- this.processDiagram = response;
104
- this.bpmnJS.importXML(this.processDiagram.bpmn20Xml);
105
- this.bpmnJS.attachTo(this.el.nativeElement);
106
- });
107
- }
108
- loadProcessDefinitionHeatmapCount(processDefinition) {
109
- this.processService.getProcessHeatmapCount(processDefinition).subscribe(response => {
110
- this.inputData = response;
111
- this.valueKey = 'totalCount';
112
- this.heatPoints = { data: [] };
113
- this.min = 0;
114
- this.max = 0;
115
- Object.keys(this.inputData).forEach(key => {
116
- const diagramContainer = this.el.nativeElement.querySelector('svg').getBoundingClientRect(), diagramElm = this.el.nativeElement
117
- .querySelector(`g[data-element-id=${key}]`)
118
- .getBoundingClientRect();
119
- this.setMax(key);
120
- this.heatPoints.data.push({
121
- x: Math.round(diagramElm.x - diagramContainer.x + diagramElm.width / 2),
122
- y: Math.round(diagramElm.y - diagramContainer.y + diagramElm.height / 2),
123
- value: this.inputData[key][this.valueKey],
124
- radius: diagramElm.width / 2,
125
- });
126
- this.addCounterActiveOverlays(key, this.inputData);
127
- });
128
- this.clearHeatmap();
129
- if (this.showHeatmap) {
130
- this.loadHeatmap();
131
- }
132
- });
133
- }
134
- onWindowResize() {
135
- const oldCanvas = this.el.nativeElement.querySelector('canvas[class=heatmap-canvas]');
136
- if (oldCanvas) {
137
- oldCanvas.remove();
138
- this.heatMapInstance = null;
139
- }
140
- if (this.showHeatmap) {
141
- this.loadHeatmap();
142
- }
143
- }
144
- loadProcessDefinitionHeatmapDuration(processDefinition) {
145
- this.processService.getProcessHeatmapDuration(processDefinition).subscribe(response => {
146
- this.inputData = response;
147
- this.valueKey = 'averageDurationInMilliseconds';
148
- this.heatPoints = { data: [] };
149
- this.min = 0;
150
- this.max = 0;
151
- Object.keys(this.inputData).forEach(key => {
152
- const diagramContainer = this.el.nativeElement.querySelector('svg').getBoundingClientRect(), diagramElm = this.el.nativeElement
153
- .querySelector(`g[data-element-id=${key}]`)
154
- .getBoundingClientRect();
155
- this.setMax(key);
156
- this.heatPoints.data.push({
157
- x: Math.round(diagramElm.x - diagramContainer.x + diagramElm.width / 2),
158
- y: Math.round(diagramElm.y - diagramContainer.y + diagramElm.height / 2),
159
- value: this.inputData[key][this.valueKey],
160
- radius: diagramElm.width / 2,
161
- });
162
- this.addCounterActiveOverlays(key, this.inputData);
163
- });
164
- this.clearHeatmap();
165
- if (this.showHeatmap) {
166
- this.loadHeatmap();
167
- }
168
- });
169
- }
170
- setProcessDefinitionKey(processDefinitionKey) {
171
- this.processDefinitionKey = processDefinitionKey;
172
- this.loadProcessDefinitionFromKey(this.processDefinitionKey);
173
- }
174
- setProcessDefinitionVersion(version) {
175
- this.version = +version;
176
- this.loadHeatmapData();
177
- }
178
- setHeatmapOption(heatmapOption) {
179
- this.heatmapOption = heatmapOption;
180
- this.loadHeatmapData();
181
- }
182
- toggleShowHeatmap() {
183
- this.showHeatmap = !this.showHeatmap;
184
- this.loadHeatmapData();
185
- }
186
- loadHeatmap() {
187
- if (!this.heatMapInstance) {
188
- this.heatMapInstance = heatmap.create({
189
- radius: 54,
190
- blur: 0.7,
191
- maxOpacity: 0.4,
192
- minOpacity: 0,
193
- container: this.el.nativeElement,
194
- });
195
- }
196
- this.heatMapInstance.setData({
197
- min: this.min,
198
- max: this.max,
199
- data: this.heatPoints.data,
200
- });
201
- }
202
- clearHeatmap() {
203
- if (this.heatMapInstance) {
204
- this.heatMapInstance.setData({ data: [] });
205
- }
206
- }
207
- loadHeatmapData() {
208
- this.processDefinition = this.processDefinitionVersions.find(definition => definition.version === this.version);
209
- if (this.heatmapOption === 'count') {
210
- this.loadProcessDefinitionHeatmapCount(this.processDefinition);
211
- }
212
- if (this.heatmapOption === 'duration') {
213
- this.loadProcessDefinitionHeatmapDuration(this.processDefinition);
214
- }
215
- }
216
- setMax(key) {
217
- if (this.heatmapDuration) {
218
- this.max = Math.max(this.heatmapDuration[key].averageDurationInMilliseconds, this.max);
219
- }
220
- else if (this.heatmapCount) {
221
- this.max = Math.max(this.heatmapCount[key].totalCount + this.heatmapCount[key].count, this.max);
222
- }
223
- }
224
- addCounterActiveOverlays(key, inputData) {
225
- const overlays = this.bpmnJS.get('overlays');
226
- overlays.add(key, {
227
- position: {
228
- bottom: 13,
229
- left: -12,
230
- },
231
- show: {
232
- minZoom: 0,
233
- maxZoom: 5.0,
234
- },
235
- html: `<span class="badge badge-pill badge-primary">${inputData[key].count}</span>`,
236
- });
237
- }
238
- }
239
- ProcessDiagramComponent.decorators = [
240
- { type: Component, args: [{
241
- selector: 'valtimo-process-diagram',
242
- template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<div class=\"process-diagram-container\">\n <div *ngIf=\"processDefinitionKey\" class=\"diagram-container-switch-holder\">\n <div class=\"container-fluid\">\n <div class=\"row p-4 bg-light\">\n <div class=\"col-4\">\n <label><strong>Version</strong></label\n ><br />\n <select class=\"form-control\" (change)=\"setProcessDefinitionVersion($event.target.value)\">\n <option\n *ngFor=\"let processDefinitionVersion of processDefinitionVersions\"\n [value]=\"processDefinitionVersion.version\"\n [selected]=\"processDefinitionVersion.version === version\"\n >\n {{ processDefinitionVersion.version }}\n </option>\n </select>\n </div>\n <div class=\"col-4\">\n <label><strong>Heatmap type</strong></label\n ><br />\n <select class=\"form-control\" (change)=\"setHeatmapOption($event.target.value)\">\n <option\n *ngFor=\"let option of enumHeatmapOptions\"\n [value]=\"option\"\n [selected]=\"option === heatmapOption\"\n >\n {{ option }}\n </option>\n </select>\n </div>\n <div class=\"col-4 text-right\">\n <label><strong>Show heatmap</strong></label\n ><br />\n <div class=\"text-left switch-button switch-button-sm switch-button-success\">\n <input\n type=\"checkbox\"\n id=\"toggleHeatmap\"\n [checked]=\"showHeatmap\"\n (click)=\"toggleShowHeatmap()\"\n /><span> <label for=\"toggleHeatmap\"></label></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div #ref (window:resize)=\"onWindowResize()\" class=\"diagram-container\"></div>\n\n <div *ngIf=\"processInstanceId\" class=\"p-4 text-center legenda-holder\">\n <span\n ><div class=\"legenda highlight-overlay-past\"></div>\n Executed tasks</span\n >\n <span class=\"ml-3\"\n ><div class=\"legenda highlight-overlay-current\"></div>\n Current tasks</span\n >\n </div>\n\n <div *ngIf=\"processDefinitionKey\" class=\"p-4 text-center legenda-holder\">\n <span\n ><span class=\"badge badge-pill badge-primary\">N</span>&nbsp;&nbsp;Amount of currently active\n instances of this task.</span\n >\n <span\n >&nbsp;&nbsp;|&nbsp;&nbsp;Red/yellow/green orbs: The amount of times the task is executed in\n comparison to the other tasks.</span\n >\n </div>\n</div>\n",
243
- encapsulation: ViewEncapsulation.None,
244
- styles: [".process-diagram-container .diagram-container{height:50vh;width:100%}.process-diagram-container .diagram-container-switch-holder{position:absolute;width:100%;z-index:1000}.process-diagram-container .highlight-overlay-past:not(.djs-connection) .djs-visual>:first-child{fill:#d8d8d8!important}.process-diagram-container .highlight-overlay-current:not(.djs-connection) .djs-visual>:first-child{fill:#b2e0ff!important}.process-diagram-container .legenda-holder{font-size:1em}.process-diagram-container .legenda{border:2px solid #000;border-radius:3px;display:inline-block;margin-bottom:-4px;margin-right:5px;padding:7px}.process-diagram-container .legenda.highlight-overlay-past{background-color:#d8d8d8}.process-diagram-container .legenda.highlight-overlay-current{background-color:#b2e0ff}"]
245
- },] }
246
- ];
247
- ProcessDiagramComponent.ctorParameters = () => [
248
- { type: ProcessService }
249
- ];
250
- ProcessDiagramComponent.propDecorators = {
251
- el: [{ type: ViewChild, args: ['ref', { static: true },] }],
252
- importDone: [{ type: Output }],
253
- processDefinitionKey: [{ type: Input }],
254
- processInstanceId: [{ type: Input }]
255
- };
256
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1kaWFncmFtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvdG1wL2plbmtpbnMtODdlNTY2ZTgvd29ya3NwYWNlL3JvbnRlbmRfbGlicmFyaWVzXy1fcmVsZWFzZV9tYWluL3Byb2plY3RzL3ZhbHRpbW8vcHJvY2Vzcy9zcmMvIiwic291cmNlcyI6WyJsaWIvcHJvY2Vzcy1kaWFncmFtL3Byb2Nlc3MtZGlhZ3JhbS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUVsRCxPQUFPLEtBQUssTUFBTSxNQUFNLHNEQUFzRCxDQUFDO0FBQy9FLE9BQU8sS0FBSyxPQUFPLE1BQU0sbUNBQW1DLENBQUM7QUFRN0QsTUFBTSxPQUFPLHVCQUF1QjtJQXlCbEMsWUFBb0IsY0FBOEI7UUFBOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBcEJqQyxlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFXN0QsdUJBQWtCLEdBQUcsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFTRyxDQUFDO0lBRXRELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUM3QixJQUFJLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7U0FDOUQ7UUFDRCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQixJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7U0FDckQ7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUM7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QyxFQUFFO2FBQ1Y7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osT0FBTyxFQUFFLENBQUM7Z0JBQ1YsT0FBTyxFQUFFLEdBQUc7YUFDYjtZQUNELElBQUksRUFBRSxnREFBZ0QsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssU0FBUztTQUNwRixDQUFDLENBQUM7SUFDTCxDQUFDOzs7WUFwUkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSx5QkFBeUI7Z0JBQ25DLDZyR0FBK0M7Z0JBRS9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJOzthQUN0Qzs7O1lBVk8sY0FBYzs7O2lCQWVuQixTQUFTLFNBQUMsS0FBSyxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQzt5QkFDL0IsTUFBTTttQ0FDTixLQUFLO2dDQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1Byb2Nlc3NTZXJ2aWNlfSBmcm9tICcuLi9wcm9jZXNzLnNlcnZpY2UnO1xuXG5pbXBvcnQgKiBhcyBCcG1uSlMgZnJvbSAnYnBtbi1qcy9kaXN0L2JwbW4tbmF2aWdhdGVkLXZpZXdlci5wcm9kdWN0aW9uLm1pbi5qcyc7XG5pbXBvcnQgKiBhcyBoZWF0bWFwIGZyb20gJ2hlYXRtYXAuanMtZml4ZWQvYnVpbGQvaGVhdG1hcC5qcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tcHJvY2Vzcy1kaWFncmFtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2Nlc3MtZGlhZ3JhbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Byb2Nlc3MtZGlhZ3JhbS5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9jZXNzRGlhZ3JhbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICBwcml2YXRlIGJwbW5KUzogQnBtbkpTO1xuICBwcml2YXRlIGhlYXRNYXBJbnN0YW5jZTogYW55O1xuXG4gIEBWaWV3Q2hpbGQoJ3JlZicsIHtzdGF0aWM6IHRydWV9KSBwdWJsaWMgZWw6IEVsZW1lbnRSZWY7XG4gIEBPdXRwdXQoKSBwdWJsaWMgaW1wb3J0RG9uZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBJbnB1dCgpIHB1YmxpYyBwcm9jZXNzRGVmaW5pdGlvbktleT86IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIHByb2Nlc3NJbnN0YW5jZUlkPzogc3RyaW5nO1xuXG4gIHB1YmxpYyBwcm9jZXNzRGlhZ3JhbTogYW55O1xuICBwdWJsaWMgcHJvY2Vzc0RlZmluaXRpb246IGFueTtcbiAgcHVibGljIHByb2Nlc3NEZWZpbml0aW9uVmVyc2lvbnM6IGFueTtcbiAgcHVibGljIGhlYXRtYXBDb3VudDogYW55O1xuICBwdWJsaWMgaGVhdG1hcER1cmF0aW9uOiBhbnk7XG4gIHB1YmxpYyB0YXNrc0NvdW50OiBhbnk7XG4gIHB1YmxpYyBzaG93SGVhdG1hcDogYm9vbGVhbjtcbiAgcHVibGljIGVudW1IZWF0bWFwT3B0aW9ucyA9IFsnY291bnQnLCAnZHVyYXRpb24nXTtcbiAgcHVibGljIGhlYXRtYXBPcHRpb246IHN0cmluZztcbiAgcHVibGljIHZlcnNpb246IGFueTtcbiAgcHVibGljIGhlYXRQb2ludHM6IGFueTtcbiAgcHVibGljIG1pbjogbnVtYmVyO1xuICBwdWJsaWMgbWF4OiBudW1iZXI7XG4gIHB1YmxpYyBpbnB1dERhdGE6IGFueTtcbiAgcHVibGljIHZhbHVlS2V5OiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwcm9jZXNzU2VydmljZTogUHJvY2Vzc1NlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMucHJvY2Vzc0RlZmluaXRpb25LZXkpIHtcbiAgICAgIHRoaXMubG9hZFByb2Nlc3NEZWZpbml0aW9uRnJvbUtleSh0aGlzLnByb2Nlc3NEZWZpbml0aW9uS2V5KTtcbiAgICB9XG4gICAgaWYgKHRoaXMucHJvY2Vzc0luc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMubG9hZFByb2Nlc3NJbnN0YW5jZVhtbCh0aGlzLnByb2Nlc3NJbnN0YW5jZUlkKTtcbiAgICB9XG4gICAgdGhpcy5icG1uSlMgPSBuZXcgQnBtbkpTKCk7XG4gICAgdGhpcy5icG1uSlMub24oJ2ltcG9ydC5kb25lJywgKHtlcnJvcn0pID0+IHtcbiAgICAgIGlmICghZXJyb3IpIHtcbiAgICAgICAgY29uc3QgY2FudmFzID0gdGhpcy5icG1uSlMuZ2V0KCdjYW52YXMnKSxcbiAgICAgICAgICBldmVudEJ1cyA9IHRoaXMuYnBtbkpTLmdldCgnZXZlbnRCdXMnKTtcbiAgICAgICAgaWYgKHRoaXMucHJvY2Vzc0RpYWdyYW0uaGlzdG9yaWNBY3Rpdml0eUluc3RhbmNlcykge1xuICAgICAgICAgIHRoaXMucHJvY2Vzc0RpYWdyYW0uaGlzdG9yaWNBY3Rpdml0eUluc3RhbmNlcy5mb3JFYWNoKGluc3RhbmNlID0+IHtcbiAgICAgICAgICAgIC8vIGV4Y2x1ZGUgbXVsdGlJbnN0YW5jZUJvZHlcbiAgICAgICAgICAgIGlmIChpbnN0YW5jZS5hY3Rpdml0eVR5cGUgIT09ICdtdWx0aUluc3RhbmNlQm9keScpIHtcbiAgICAgICAgICAgICAgY2FudmFzLmFkZE1hcmtlcihcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5hY3Rpdml0eUlkLFxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmVuZFRpbWUgPyAnaGlnaGxpZ2h0LW92ZXJsYXktcGFzdCcgOiAnaGlnaGxpZ2h0LW92ZXJsYXktY3VycmVudCdcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhbnZhcy56b29tKCdmaXQtdmlld3BvcnQnLCAnYXV0bycpO1xuICAgICAgICBpZiAodGhpcy5wcm9jZXNzRGVmaW5pdGlvblZlcnNpb25zKSB7XG4gICAgICAgICAgZXZlbnRCdXMub24oJ2NhbnZhcy5pbml0JywgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2hvd0hlYXRtYXApIHtcbiAgICAgICAgICAgICAgdGhpcy5jbGVhckhlYXRtYXAoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubG9hZEhlYXRtYXBEYXRhKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZXZlbnRCdXMub24oJ2NhbnZhcy52aWV3Ym94LmNoYW5naW5nJywgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2hvd0hlYXRtYXApIHtcbiAgICAgICAgICAgICAgdGhpcy5jbGVhckhlYXRtYXAoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBldmVudEJ1cy5vbignY2FudmFzLnZpZXdib3guY2hhbmdlZCcsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZEhlYXRtYXBEYXRhKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb2Nlc3NEZWZpbml0aW9uS2V5KSB7XG4gICAgICB0aGlzLmxvYWRQcm9jZXNzRGVmaW5pdGlvbkZyb21LZXkodGhpcy5wcm9jZXNzRGVmaW5pdGlvbktleSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnByb2Nlc3NJbnN0YW5jZUlkKSB7XG4gICAgICB0aGlzLmxvYWRQcm9jZXNzSW5zdGFuY2VYbWwodGhpcy5wcm9jZXNzSW5zdGFuY2VJZCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuYnBtbkpTKSB7XG4gICAgICB0aGlzLmJwbW5KUy5kZXN0cm95KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGxvYWRQcm9jZXNzRGVmaW5pdGlvbihwcm9jZXNzRGVmaW5pdGlvbktleSkge1xuICAgIHRoaXMucHJvY2Vzc1NlcnZpY2UuZ2V0UHJvY2Vzc0RlZmluaXRpb24ocHJvY2Vzc0RlZmluaXRpb25LZXkpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICB0aGlzLmhlYXRtYXBPcHRpb24gPSB0aGlzLmVudW1IZWF0bWFwT3B0aW9uc1swXTtcbiAgICAgIHRoaXMudmVyc2lvbiA9IHJlc3BvbnNlLnZlcnNpb247XG4gICAgICB0aGlzLmxvYWRQcm9jZXNzRGVmaW5pdGlvblhtbChyZXNwb25zZS5pZCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbG9hZFByb2Nlc3NEZWZpbml0aW9uVmVyc2lvbnMocHJvY2Vzc0RlZmluaXRpb25LZXkpIHtcbiAgICB0aGlzLnByb2Nlc3NTZXJ2aWNlLmdldFByb2Nlc3NEZWZpbml0aW9uVmVyc2lvbnMocHJvY2Vzc0RlZmluaXRpb25LZXkpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICB0aGlzLnByb2Nlc3NEZWZpbml0aW9uVmVyc2lvbnMgPSByZXNwb25zZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkUHJvY2Vzc0RlZmluaXRpb25Gcm9tS2V5KHByb2Nlc3NEZWZpbml0aW9uS2V5KSB7XG4gICAgdGhpcy5sb2FkUHJvY2Vzc0RlZmluaXRpb25WZXJzaW9ucyhwcm9jZXNzRGVmaW5pdGlvbktleSk7XG4gICAgdGhpcy5sb2FkUHJvY2Vzc0RlZmluaXRpb24ocHJvY2Vzc0RlZmluaXRpb25LZXkpO1xuICB9XG5cbiAgcHVibGljIGxvYWRQcm9jZXNzRGVmaW5pdGlvblhtbChwcm9jZXNzRGVmaW5pdGlvbklkKSB7XG4gICAgdGhpcy5wcm9jZXNzU2VydmljZS5nZXRQcm9jZXNzRGVmaW5pdGlvblhtbChwcm9jZXNzRGVmaW5pdGlvbklkKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgdGhpcy5wcm9jZXNzRGlhZ3JhbSA9IHJlc3BvbnNlO1xuICAgICAgdGhpcy5icG1uSlMuaW1wb3J0WE1MKHRoaXMucHJvY2Vzc0RpYWdyYW0uYnBtbjIwWG1sKTtcbiAgICAgIHRoaXMuYnBtbkpTLmF0dGFjaFRvKHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRQcm9jZXNzSW5zdGFuY2VYbWwocHJvY2Vzc0luc3RhbmNlSWQpIHtcbiAgICB0aGlzLnByb2Nlc3NTZXJ2aWNlLmdldFByb2Nlc3NYbWwocHJvY2Vzc0luc3RhbmNlSWQpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICB0aGlzLnByb2Nlc3NEaWFncmFtID0gcmVzcG9uc2U7XG4gICAgICB0aGlzLmJwbW5KUy5pbXBvcnRYTUwodGhpcy5wcm9jZXNzRGlhZ3JhbS5icG1uMjBYbWwpO1xuICAgICAgdGhpcy5icG1uSlMuYXR0YWNoVG8odGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkUHJvY2Vzc0RlZmluaXRpb25IZWF0bWFwQ291bnQocHJvY2Vzc0RlZmluaXRpb24pIHtcbiAgICB0aGlzLnByb2Nlc3NTZXJ2aWNlLmdldFByb2Nlc3NIZWF0bWFwQ291bnQocHJvY2Vzc0RlZmluaXRpb24pLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICB0aGlzLmlucHV0RGF0YSA9IHJlc3BvbnNlO1xuICAgICAgdGhpcy52YWx1ZUtleSA9ICd0b3RhbENvdW50JztcbiAgICAgIHRoaXMuaGVhdFBvaW50cyA9IHtkYXRhOiBbXX07XG4gICAgICB0aGlzLm1pbiA9IDA7XG4gICAgICB0aGlzLm1heCA9IDA7XG5cbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuaW5wdXREYXRhKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGNvbnN0IGRpYWdyYW1Db250YWluZXIgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3Rvcignc3ZnJykuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgICAgICAgZGlhZ3JhbUVsbSA9IHRoaXMuZWwubmF0aXZlRWxlbWVudFxuICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoYGdbZGF0YS1lbGVtZW50LWlkPSR7a2V5fV1gKVxuICAgICAgICAgICAgLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICB0aGlzLnNldE1heChrZXkpO1xuICAgICAgICB0aGlzLmhlYXRQb2ludHMuZGF0YS5wdXNoKHtcbiAgICAgICAgICB4OiBNYXRoLnJvdW5kKGRpYWdyYW1FbG0ueCAtIGRpYWdyYW1Db250YWluZXIueCArIGRpYWdyYW1FbG0ud2lkdGggLyAyKSxcbiAgICAgICAgICB5OiBNYXRoLnJvdW5kKGRpYWdyYW1FbG0ueSAtIGRpYWdyYW1Db250YWluZXIueSArIGRpYWdyYW1FbG0uaGVpZ2h0IC8gMiksXG4gICAgICAgICAgdmFsdWU6IHRoaXMuaW5wdXREYXRhW2tleV1bdGhpcy52YWx1ZUtleV0sXG4gICAgICAgICAgcmFkaXVzOiBkaWFncmFtRWxtLndpZHRoIC8gMixcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYWRkQ291bnRlckFjdGl2ZU92ZXJsYXlzKGtleSwgdGhpcy5pbnB1dERhdGEpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmNsZWFySGVhdG1hcCgpO1xuICAgICAgaWYgKHRoaXMuc2hvd0hlYXRtYXApIHtcbiAgICAgICAgdGhpcy5sb2FkSGVhdG1hcCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uV2luZG93UmVzaXplKCkge1xuICAgIGNvbnN0IG9sZENhbnZhcyA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdjYW52YXNbY2xhc3M9aGVhdG1hcC1jYW52YXNdJyk7XG4gICAgaWYgKG9sZENhbnZhcykge1xuICAgICAgb2xkQ2FudmFzLnJlbW92ZSgpO1xuICAgICAgdGhpcy5oZWF0TWFwSW5zdGFuY2UgPSBudWxsO1xuICAgIH1cbiAgICBpZiAodGhpcy5zaG93SGVhdG1hcCkge1xuICAgICAgdGhpcy5sb2FkSGVhdG1hcCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBsb2FkUHJvY2Vzc0RlZmluaXRpb25IZWF0bWFwRHVyYXRpb24ocHJvY2Vzc0RlZmluaXRpb24pIHtcbiAgICB0aGlzLnByb2Nlc3NTZXJ2aWNlLmdldFByb2Nlc3NIZWF0bWFwRHVyYXRpb24ocHJvY2Vzc0RlZmluaXRpb24pLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICB0aGlzLmlucHV0RGF0YSA9IHJlc3BvbnNlO1xuICAgICAgdGhpcy52YWx1ZUtleSA9ICdhdmVyYWdlRHVyYXRpb25Jbk1pbGxpc2Vjb25kcyc7XG4gICAgICB0aGlzLmhlYXRQb2ludHMgPSB7ZGF0YTogW119O1xuICAgICAgdGhpcy5taW4gPSAwO1xuICAgICAgdGhpcy5tYXggPSAwO1xuXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLmlucHV0RGF0YSkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICBjb25zdCBkaWFncmFtQ29udGFpbmVyID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgICAgICAgIGRpYWdyYW1FbG0gPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICAgIC5xdWVyeVNlbGVjdG9yKGBnW2RhdGEtZWxlbWVudC1pZD0ke2tleX1dYClcbiAgICAgICAgICAgIC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgdGhpcy5zZXRNYXgoa2V5KTtcbiAgICAgICAgdGhpcy5oZWF0UG9pbnRzLmRhdGEucHVzaCh7XG4gICAgICAgICAgeDogTWF0aC5yb3VuZChkaWFncmFtRWxtLnggLSBkaWFncmFtQ29udGFpbmVyLnggKyBkaWFncmFtRWxtLndpZHRoIC8gMiksXG4gICAgICAgICAgeTogTWF0aC5yb3VuZChkaWFncmFtRWxtLnkgLSBkaWFncmFtQ29udGFpbmVyLnkgKyBkaWFncmFtRWxtLmhlaWdodCAvIDIpLFxuICAgICAgICAgIHZhbHVlOiB0aGlzLmlucHV0RGF0YVtrZXldW3RoaXMudmFsdWVLZXldLFxuICAgICAgICAgIHJhZGl1czogZGlhZ3JhbUVsbS53aWR0aCAvIDIsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFkZENvdW50ZXJBY3RpdmVPdmVybGF5cyhrZXksIHRoaXMuaW5wdXREYXRhKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jbGVhckhlYXRtYXAoKTtcbiAgICAgIGlmICh0aGlzLnNob3dIZWF0bWFwKSB7XG4gICAgICAgIHRoaXMubG9hZEhlYXRtYXAoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRQcm9jZXNzRGVmaW5pdGlvbktleShwcm9jZXNzRGVmaW5pdGlvbktleSkge1xuICAgIHRoaXMucHJvY2Vzc0RlZmluaXRpb25LZXkgPSBwcm9jZXNzRGVmaW5pdGlvbktleTtcbiAgICB0aGlzLmxvYWRQcm9jZXNzRGVmaW5pdGlvbkZyb21LZXkodGhpcy5wcm9jZXNzRGVmaW5pdGlvbktleSk7XG4gIH1cblxuICBwdWJsaWMgc2V0UHJvY2Vzc0RlZmluaXRpb25WZXJzaW9uKHZlcnNpb24pIHtcbiAgICB0aGlzLnZlcnNpb24gPSArdmVyc2lvbjtcbiAgICB0aGlzLmxvYWRIZWF0bWFwRGF0YSgpO1xuICB9XG5cbiAgcHVibGljIHNldEhlYXRtYXBPcHRpb24oaGVhdG1hcE9wdGlvbikge1xuICAgIHRoaXMuaGVhdG1hcE9wdGlvbiA9IGhlYXRtYXBPcHRpb247XG4gICAgdGhpcy5sb2FkSGVhdG1hcERhdGEoKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVTaG93SGVhdG1hcCgpIHtcbiAgICB0aGlzLnNob3dIZWF0bWFwID0gIXRoaXMuc2hvd0hlYXRtYXA7XG4gICAgdGhpcy5sb2FkSGVhdG1hcERhdGEoKTtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkSGVhdG1hcCgpIHtcbiAgICBpZiAoIXRoaXMuaGVhdE1hcEluc3RhbmNlKSB7XG4gICAgICB0aGlzLmhlYXRNYXBJbnN0YW5jZSA9IGhlYXRtYXAuY3JlYXRlKHtcbiAgICAgICAgcmFkaXVzOiA1NCxcbiAgICAgICAgYmx1cjogMC43LFxuICAgICAgICBtYXhPcGFjaXR5OiAwLjQsXG4gICAgICAgIG1pbk9wYWNpdHk6IDAsXG4gICAgICAgIGNvbnRhaW5lcjogdGhpcy5lbC5uYXRpdmVFbGVtZW50LFxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuaGVhdE1hcEluc3RhbmNlLnNldERhdGEoe1xuICAgICAgbWluOiB0aGlzLm1pbixcbiAgICAgIG1heDogdGhpcy5tYXgsXG4gICAgICBkYXRhOiB0aGlzLmhlYXRQb2ludHMuZGF0YSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhckhlYXRtYXAoKSB7XG4gICAgaWYgKHRoaXMuaGVhdE1hcEluc3RhbmNlKSB7XG4gICAgICB0aGlzLmhlYXRNYXBJbnN0YW5jZS5zZXREYXRhKHtkYXRhOiBbXX0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBsb2FkSGVhdG1hcERhdGEoKSB7XG4gICAgdGhpcy5wcm9jZXNzRGVmaW5pdGlvbiA9IHRoaXMucHJvY2Vzc0RlZmluaXRpb25WZXJzaW9ucy5maW5kKFxuICAgICAgZGVmaW5pdGlvbiA9PiBkZWZpbml0aW9uLnZlcnNpb24gPT09IHRoaXMudmVyc2lvblxuICAgICk7XG5cbiAgICBpZiAodGhpcy5oZWF0bWFwT3B0aW9uID09PSAnY291bnQnKSB7XG4gICAgICB0aGlzLmxvYWRQcm9jZXNzRGVmaW5pdGlvbkhlYXRtYXBDb3VudCh0aGlzLnByb2Nlc3NEZWZpbml0aW9uKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaGVhdG1hcE9wdGlvbiA9PT0gJ2R1cmF0aW9uJykge1xuICAgICAgdGhpcy5sb2FkUHJvY2Vzc0RlZmluaXRpb25IZWF0bWFwRHVyYXRpb24odGhpcy5wcm9jZXNzRGVmaW5pdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldE1heChrZXk6IGFueSkge1xuICAgIGlmICh0aGlzLmhlYXRtYXBEdXJhdGlvbikge1xuICAgICAgdGhpcy5tYXggPSBNYXRoLm1heCh0aGlzLmhlYXRtYXBEdXJhdGlvbltrZXldLmF2ZXJhZ2VEdXJhdGlvbkluTWlsbGlzZWNvbmRzLCB0aGlzLm1heCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmhlYXRtYXBDb3VudCkge1xuICAgICAgdGhpcy5tYXggPSBNYXRoLm1heChcbiAgICAgICAgdGhpcy5oZWF0bWFwQ291bnRba2V5XS50b3RhbENvdW50ICsgdGhpcy5oZWF0bWFwQ291bnRba2V5XS5jb3VudCxcbiAgICAgICAgdGhpcy5tYXhcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFkZENvdW50ZXJBY3RpdmVPdmVybGF5cyhrZXk6IGFueSwgaW5wdXREYXRhOiBhbnkpIHtcbiAgICBjb25zdCBvdmVybGF5cyA9IHRoaXMuYnBtbkpTLmdldCgnb3ZlcmxheXMnKTtcbiAgICBvdmVybGF5cy5hZGQoa2V5LCB7XG4gICAgICBwb3NpdGlvbjoge1xuICAgICAgICBib3R0b206IDEzLFxuICAgICAgICBsZWZ0OiAtMTIsXG4gICAgICB9LFxuICAgICAgc2hvdzoge1xuICAgICAgICBtaW5ab29tOiAwLFxuICAgICAgICBtYXhab29tOiA1LjAsXG4gICAgICB9LFxuICAgICAgaHRtbDogYDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtcGlsbCBiYWRnZS1wcmltYXJ5XCI+JHtpbnB1dERhdGFba2V5XS5jb3VudH08L3NwYW4+YCxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,43 +0,0 @@
1
- /*
2
- * Copyright 2015-2020 Ritense BV, the Netherlands.
3
- *
4
- * Licensed under EUPL, Version 1.2 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" basis,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { NgModule } from '@angular/core';
17
- import { CommonModule } from '@angular/common';
18
- import { BpmnJsDiagramModule, CamundaFormModule, ListModule, TimelineModule, WidgetModule, } from '@valtimo/components';
19
- import { ToastrModule } from 'ngx-toastr';
20
- import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
21
- import { ProcessDiagramComponent } from './process-diagram/process-diagram.component';
22
- export class ProcessModule {
23
- }
24
- ProcessModule.decorators = [
25
- { type: NgModule, args: [{
26
- declarations: [ProcessDiagramComponent],
27
- imports: [
28
- CommonModule,
29
- ListModule,
30
- WidgetModule,
31
- TimelineModule,
32
- BpmnJsDiagramModule,
33
- CamundaFormModule,
34
- BrowserAnimationsModule,
35
- ToastrModule.forRoot({
36
- positionClass: 'toast-bottom-full-width',
37
- preventDuplicates: true,
38
- }),
39
- ],
40
- exports: [ProcessDiagramComponent],
41
- },] }
42
- ];
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiL3RtcC9qZW5raW5zLTg3ZTU2NmU4L3dvcmtzcGFjZS9yb250ZW5kX2xpYnJhcmllc18tX3JlbGVhc2VfbWFpbi9wcm9qZWN0cy92YWx0aW1vL3Byb2Nlc3Mvc3JjLyIsInNvdXJjZXMiOlsibGliL3Byb2Nlc3MubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsVUFBVSxFQUNWLGNBQWMsRUFDZCxZQUFZLEdBQ2IsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBQ3hDLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQzdFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBbUJwRixNQUFNLE9BQU8sYUFBYTs7O1lBakJ6QixRQUFRLFNBQUM7Z0JBQ1IsWUFBWSxFQUFFLENBQUMsdUJBQXVCLENBQUM7Z0JBQ3ZDLE9BQU8sRUFBRTtvQkFDUCxZQUFZO29CQUNaLFVBQVU7b0JBQ1YsWUFBWTtvQkFDWixjQUFjO29CQUNkLG1CQUFtQjtvQkFDbkIsaUJBQWlCO29CQUNqQix1QkFBdUI7b0JBQ3ZCLFlBQVksQ0FBQyxPQUFPLENBQUM7d0JBQ25CLGFBQWEsRUFBRSx5QkFBeUI7d0JBQ3hDLGlCQUFpQixFQUFFLElBQUk7cUJBQ3hCLENBQUM7aUJBQ0g7Z0JBQ0QsT0FBTyxFQUFFLENBQUMsdUJBQXVCLENBQUM7YUFDbkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQnBtbkpzRGlhZ3JhbU1vZHVsZSxcbiAgQ2FtdW5kYUZvcm1Nb2R1bGUsXG4gIExpc3RNb2R1bGUsXG4gIFRpbWVsaW5lTW9kdWxlLFxuICBXaWRnZXRNb2R1bGUsXG59IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtUb2FzdHJNb2R1bGV9IGZyb20gJ25neC10b2FzdHInO1xuaW1wb3J0IHtCcm93c2VyQW5pbWF0aW9uc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zJztcbmltcG9ydCB7UHJvY2Vzc0RpYWdyYW1Db21wb25lbnR9IGZyb20gJy4vcHJvY2Vzcy1kaWFncmFtL3Byb2Nlc3MtZGlhZ3JhbS5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtQcm9jZXNzRGlhZ3JhbUNvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTGlzdE1vZHVsZSxcbiAgICBXaWRnZXRNb2R1bGUsXG4gICAgVGltZWxpbmVNb2R1bGUsXG4gICAgQnBtbkpzRGlhZ3JhbU1vZHVsZSxcbiAgICBDYW11bmRhRm9ybU1vZHVsZSxcbiAgICBCcm93c2VyQW5pbWF0aW9uc01vZHVsZSxcbiAgICBUb2FzdHJNb2R1bGUuZm9yUm9vdCh7XG4gICAgICBwb3NpdGlvbkNsYXNzOiAndG9hc3QtYm90dG9tLWZ1bGwtd2lkdGgnLFxuICAgICAgcHJldmVudER1cGxpY2F0ZXM6IHRydWUsXG4gICAgfSksXG4gIF0sXG4gIGV4cG9ydHM6IFtQcm9jZXNzRGlhZ3JhbUNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFByb2Nlc3NNb2R1bGUge31cbiJdfQ==