@optimajet/workflow-designer-angular
Version:
Angular Designer for Workflow Engine
1 lines • 16.2 kB
Source Map (JSON)
{"version":3,"file":"optimajet-workflow-designer-angular.mjs","sources":["../../../projects/workflow-designer-angular/src/lib/workflow-designer.service.ts","../../../projects/workflow-designer-angular/src/lib/workflow-designer.component.ts","../../../projects/workflow-designer-angular/src/lib/workflow-designer.module.ts","../../../projects/workflow-designer-angular/src/public-api.ts","../../../projects/workflow-designer-angular/src/optimajet-workflow-designer-angular.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class WorkflowDesignerService {\n\n constructor() { }\n}\n","import {AfterViewInit, Component, DoCheck, HostListener, Input, KeyValueDiffer, KeyValueDiffers, NgZone} from '@angular/core';\n// @ts-ignore\nimport jQuery from \"jquery\";\n// @ts-ignore\nwindow.$ = window.jQuery = jQuery;\n\n// @ts-ignore\nimport moment from 'moment'\n// @ts-ignore\nwindow.moment = moment;\n\n// @ts-ignore\nimport WorkflowDesigner from '@optimajet/workflow-designer/no-css-esm';\n\n@Component({\n //changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'workflow-designer',\n template: `\n <div id=\"{{this.designerConfig.renderTo}}\"></div>\n <form action=\"\" id=\"{{this.designerConfig.uploadFormId}}\" method=\"post\" style=\"display: none;\" encType=\"multipart/form-data\">\n <input type=\"file\" name=\"{{this.designerConfig.uploadFileId}}\" id=\"{{this.designerConfig.uploadFileId}}\" (change)=\"uploadChange()\"/>\n </form>\n `,\n styles: [],\n standalone: false\n})\nexport class WorkflowDesignerComponent implements AfterViewInit, DoCheck {\n // Class members which could be assigned from outside\n @Input() schemeCode = '';\n @Input() processId = '';\n @Input() designerFolder = '';\n @Input() designerConfig: any = {\n renderTo:'workflow-designer', //default id value\n uploadFormId: 'workflow-uploadform', //default id value\n uploadFileId: 'workflow-uploadfile' //default id value\n };\n\n // Public class members\n public data?: object = undefined;\n public innerDesigner: any = null;\n\n // Private class members\n private uploadCallback: any = null;\n private uploadType?: string = \"scheme\";\n private resizeTimer?: any = undefined;\n private configDiffer: KeyValueDiffer<string, any>;\n\n constructor(private _ngZone: NgZone, private window: Window, private differs: KeyValueDiffers) {\n this.configDiffer = this.differs.find(this.designerConfig).create();\n }\n\n ngDoCheck() {\n if (this.configDiffer.diff(this.designerConfig)) {\n this.redrawDesigner();\n }\n }\n\n // ------------- Methods for using from other components ------------- //\n\n /**\n * Clears the designer, equivalent of creating empty scheme design\n */\n clearScheme() {\n this.innerDesigner.create();\n }\n\n /**\n * Get Workflow Designer Errors\n *\n * @returns Errors in Workflow Designer\n */\n getDesignerErrors() {\n return this.innerDesigner.validate();\n }\n\n /**\n * Save Workflow scheme\n *\n * @param {function} successCallback Function which will be executed if save was successful\n * @param {function} errorCallback Function which will be executed if save operation failed\n */\n save(successCallback: Function, errorCallback:Function) {\n this.innerDesigner.schemecode = this.schemeCode;\n const error = this.getDesignerErrors();\n\n if (error != undefined && error.length > 0) {\n errorCallback(error);\n } else {\n this.innerDesigner.save(successCallback);\n }\n }\n\n /**\n * Download XML file which contain Workflow Scheme description\n */\n downloadScheme() {\n this.innerDesigner.downloadscheme({\n name: this.schemeCode\n });\n }\n\n /**\n * Upload BPMN or XML file\n *\n * @param uploadType {string} Upload type, can be 'scheme' or 'bpmn'\n * @param {function} callback Function that will be executed after uploading file\n */\n upload(uploadType: string, callback : Function) {\n this.uploadCallback = callback;\n this.uploadType = uploadType;\n\n this.triggerUploadEvent();\n }\n\n /**\n * Check for scheme existence by the scheme code from props\n *\n * @returns {boolean} If scheme exists true, otherwise, false\n */\n isSchemeExist() {\n const data = {\n schemecode: this.schemeCode,\n processid: undefined\n };\n\n return this.innerDesigner.exists(data);\n }\n\n /**\n * Check for process existence by scheme code\n * and process id given in props\n *\n * @returns {boolean} If process exists true, otherwise, false\n */\n isProcessExist() {\n const data = {\n schemecode: this.schemeCode,\n processid: this.processId,\n };\n\n return this.innerDesigner.exists(data);\n }\n\n /**\n * Refresh data in WorkflowDesigner\n */\n refresh() {\n this.innerDesigner.refresh();\n }\n\n // ------------- End of methods for using from other components ------------- //\n ngAfterViewInit() {\n this.redrawDesigner();\n }\n\n uploadChange() {\n const form = document.getElementById(this.designerConfig.uploadFormId);\n\n if (this.uploadType === \"bpmn\") {\n this.innerDesigner.uploadbpmn(form, this.uploadCallback);\n } else {\n this.innerDesigner.uploadscheme(form, this.uploadCallback);\n }\n }\n\n triggerUploadEvent() {\n const file = document.getElementById(this.designerConfig.uploadFileId);\n\n if (file) {\n file.click();\n }\n }\n\n graphSize(): any {\n const {widthDiff, heightDiff} = this.designerConfig;\n return {\n width: window.innerWidth - (widthDiff ?? 0),\n height: window.innerHeight - (heightDiff ?? 0)\n }\n }\n\n @HostListener('window:resize')\n resizeDesigner(): void {\n if (this.resizeTimer) {\n clearTimeout(this.resizeTimer);\n this.resizeTimer = undefined;\n }\n\n this.resizeTimer = setTimeout(() => {\n const {width, height} = this.graphSize();\n this.innerDesigner.resize(width, height);\n }, 150);\n }\n\n redrawDesigner(): void {\n const designerDiv = document.getElementById(this.designerConfig.renderTo);\n\n if (this.schemeCode === '' && this.processId === '') {\n return;\n }\n\n if (!designerDiv) {\n return;\n }\n\n const designerConfig = {\n ...this.designerConfig,\n renderTo: this.designerConfig.renderTo,\n graphwidth: this.graphSize().width,\n graphheight: this.graphSize().height\n };\n\n this._ngZone.runOutsideAngular(() => {\n if (this.innerDesigner) {\n this.processExistingDesigner(designerConfig);\n } else {\n this.createNewDesigner(designerConfig);\n }\n });\n }\n\n processExistingDesigner(config: object) {\n const data = this.innerDesigner?.data;\n const schemecode = this.innerDesigner?.schemecode;\n this.innerDesigner?.destroy();\n\n this.innerDesigner = this.getWorkflowDesigner(config);\n this.innerDesigner.schemecode = schemecode;\n\n if (!data) {\n this.loadScheme();\n } else {\n this.innerDesigner.data = data;\n this.innerDesigner.render();\n }\n }\n\n createNewDesigner(config: object) {\n this.innerDesigner = this.getWorkflowDesigner(config);\n this.loadScheme();\n }\n\n getWorkflowDesigner(config: object): any {\n return new WorkflowDesigner(config);\n }\n\n loadScheme() {\n\n let data = {\n schemecode: this.schemeCode,\n processid: this.processId,\n readonly: this.processId != undefined && this.processId != \"\"\n };\n\n const callback = () => {\n this.data = this.innerDesigner.data;\n };\n const loadData = new Promise((resolve, reject) => {\n if (this.innerDesigner.exists(data)) {\n this.innerDesigner.load(data, resolve);\n } else {\n this.innerDesigner.create(this.schemeCode);\n }\n });\n\n loadData.then(callback);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { WorkflowDesignerComponent } from './workflow-designer.component';\n\n@NgModule({\n providers: [\n { provide: Window, useValue: window } \n ],\n declarations: [\n WorkflowDesignerComponent\n ],\n imports: [\n ],\n exports: [\n WorkflowDesignerComponent\n ]\n})\nexport class WorkflowDesignerModule { }\n","/*\n * Public API Surface of workflow-designer-angular\n */\n\nexport * from './lib/workflow-designer.service';\nexport * from './lib/workflow-designer.component';\nexport * from './lib/workflow-designer.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}