Last active
January 10, 2019 09:57
-
-
Save adsl99801/90812bb2e563fe99bb10e3667fbecd3b to your computer and use it in GitHub Desktop.
bpmn.io minimap fail in angular cli project
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//file1 | |
//bpmn-js.ts | |
import _Modeler from 'bpmn-js/lib/Modeler.js'; | |
import * as _propertiesPanelModule from 'bpmn-js-properties-panel'; | |
// import * as _propertiesProviderModule from 'bpmn-js-properties-panel/lib/provider/camunda'; | |
import * as _BpmnPropertiesProvider from 'bpmn-js-properties-panel/lib/provider/bpmn'; | |
import * as _EntryFactory from 'bpmn-js-properties-panel/lib/factory/EntryFactory'; | |
import _PaletteProvider from 'bpmn-js/lib/features/palette/PaletteProvider'; | |
import _CustomModeler from '../bpmn-js/custom-modeler'; | |
import _nyanDrawModule from '../bpmn-js/custom-modeler/nyan/draw'; | |
import _nyanPaletteModule from '../bpmn-js/custom-modeler/nyan/palette'; | |
import _minimapModule from 'diagram-js-minimap'; | |
export const minimapModule = _minimapModule; | |
export const nyanDrawModule = _nyanDrawModule; | |
export const nyanPaletteModule = _nyanPaletteModule; | |
export const CustomModeler = _CustomModeler; | |
export const Modeler = _Modeler; | |
export const EntryFactory = _EntryFactory; | |
export const propertiesPanelModule = _propertiesPanelModule; | |
// export const propertiesProviderModule = _propertiesProviderModule; | |
export const BpmnPropertiesProvider = _BpmnPropertiesProvider; | |
export interface IPaletteProvider { | |
getPaletteEntries(): any; | |
} | |
export interface IPalette { | |
registerProvider(provider: IPaletteProvider): any; | |
} | |
export interface IPropertiesProvider { | |
getTabs(elemnt): any; | |
} | |
//file 2 | |
//bpmn.component.ts | |
import { Component, OnInit, OnDestroy } from '@angular/core'; | |
import { HttpClient } from '@angular/common/http'; | |
// import camundaModdleDescriptor from '../../../assets/camunda.json'; | |
import { | |
CustomModeler, propertiesPanelModule, BpmnPropertiesProvider | |
, minimapModule, Modeler | |
} from '../../bpmn-js/bpmn-js'; | |
@Component({ | |
selector: 'app-bpmn', | |
templateUrl: './bpmn.component.html', | |
styleUrls: ['./bpmn.component.css'] | |
}) | |
export class BpmnComponent implements OnInit, OnDestroy { | |
title = 'Angular/BPMN'; | |
modeler; | |
constructor(private http: HttpClient) { | |
} | |
ngOnDestroy(): void { | |
console.log('ngOnDestroy save'); | |
} | |
ngOnInit(): void { | |
this.modeler = new Modeler({ | |
container: '#canvas', | |
width: '100%', | |
height: '100%', | |
keyboard: { | |
bindTo: document | |
}, | |
propertiesPanel: { | |
parent: '#js-properties-panel' | |
}, | |
additionalModules: [ | |
propertiesPanelModule, | |
BpmnPropertiesProvider, | |
minimapModule | |
], moddleExtensions: { | |
// camunda: camundaModdleDescriptor | |
} | |
}); | |
const xml = window.localStorage['xmlTemp'] || ''; | |
if (xml) { | |
this.modeler.importXML(xml); | |
} | |
const canvas = this.modeler.get('canvas'); | |
canvas.zoom('fit-viewport'); | |
} | |
handleError(err: any) { | |
if (err) { | |
console.warn('Ups, error: ', err); | |
} | |
} | |
read(): void { | |
console.log('Modeler:', this.modeler); | |
const elementRegistry = this.modeler.get('elementRegistry'); | |
console.log('elementRegistry:', elementRegistry); | |
const elements = elementRegistry.getAll(); | |
for (let _i = 0; _i < elements.length; _i++) { | |
const num = elements[_i]; | |
console.log('name:' + num.name, num); | |
} | |
const task = elementRegistry.get('Task_0y8cmbf'); | |
const sequenceFlow = task.businessObject; | |
console.log('sequenceFlow:', sequenceFlow); | |
} | |
load(): void { | |
// tslint:disable-next-line:max-line-length | |
this.modeler.importXML('<?xml version="1.0" encoding="UTF-8"?> <bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd" id="sample-diagram" targetNamespace="http://bpmn.io/schema/bpmn"> <bpmn2:process id="Process_1" isExecutable="false"> <bpmn2:startEvent id="StartEvent_1"/> </bpmn2:process> <bpmndi:BPMNDiagram id="BPMNDiagram_1"> <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_1"> <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1"> <dc:Bounds height="36.0" width="36.0" x="412.0" y="240.0"/> </bpmndi:BPMNShape> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> </bpmn2:definitions>', this.handleError); | |
// const url = '/assets/bpmn/newDiagram.bpmn'; | |
// this.http.get(url, { | |
// headers: { observe: 'response' }, responseType: 'text' | |
// }).subscribe( | |
// (x: any) => { | |
// console.log('Fetched XML, now importing: ', x); | |
// this.modeler.importXML(x, this.handleError); | |
// }, | |
// this.handleError | |
// ); | |
this.modeler.get('eventBus').on('element.click', function (e) { | |
console.log(e.element.id); | |
}); | |
} | |
save(): void { | |
this.modeler.saveXML((err: any, xml: any) => { | |
window.localStorage['xmlTemp'] = xml; | |
console.log('Result of saving XML: ', err, xml); | |
} | |
); | |
} | |
} | |
//file3 | |
//bpmn.component.css | |
.toolbox { | |
background-color: aquamarine | |
} | |
.modeler { | |
/* display: flex; */ | |
background-color: gray; | |
width: 100%; | |
height: 100%; | |
} | |
#canvas { | |
flex: 8 | |
} | |
#js-properties-panel { | |
flex: 2 | |
} | |
//file4 | |
//bpmn.component.html | |
<div class="toolbox"> | |
<button (click)="load()">Load <i class="fa fa-folder-open"></i></button> | |
<button (click)="save()">Save <i class="fa fa-save"></i></button> | |
<button (click)="read()">read</button> | |
</div> | |
<div class="modeler"> | |
<div id="canvas"></div> | |
<div id="js-properties-panel"></div> | |
</div> | |
//file 5 | |
//angular.json | |
{ | |
"$schema": "./node_modules/@angular/cli/lib/config/schema.json", | |
"version": 1, | |
"newProjectRoot": "projects", | |
"projects": { | |
"demo": { | |
"root": "", | |
"sourceRoot": "src", | |
"projectType": "application", | |
"prefix": "app", | |
"schematics": {}, | |
"architect": { | |
"build": { | |
"builder": "@angular-devkit/build-angular:browser", | |
"options": { | |
"outputPath": "dist/demo", | |
"index": "src/index.html", | |
"main": "src/main.ts", | |
"polyfills": "src/polyfills.ts", | |
"tsConfig": "src/tsconfig.app.json", | |
"assets": [ | |
"src/favicon.ico", | |
"src/assets" | |
], | |
"styles": [ | |
"src/styles.css", | |
"node_modules/bpmn-js/dist/assets/diagram-js.css", | |
"node_modules/bpmn-js/dist/assets/bpmn-font/css/bpmn-embedded.css", | |
"node_modules/diagram-js-minimap/assets/diagram-js-minimap.css", | |
"node_modules/bpmn-js-properties-panel/styles/properties.less", | |
"node_modules/font-awesome/css/font-awesome.css" | |
], | |
"scripts": [] | |
}, | |
"configurations": { | |
"production": { | |
"fileReplacements": [{ | |
"replace": "src/environments/environment.ts", | |
"with": "src/environments/environment.prod.ts" | |
}], | |
"optimization": true, | |
"outputHashing": "all", | |
"sourceMap": false, | |
"extractCss": true, | |
"namedChunks": false, | |
"aot": true, | |
"extractLicenses": true, | |
"vendorChunk": false, | |
"buildOptimizer": true, | |
"budgets": [{ | |
"type": "initial", | |
"maximumWarning": "2mb", | |
"maximumError": "5mb" | |
}] | |
} | |
} | |
}, | |
"serve": { | |
"builder": "@angular-devkit/build-angular:dev-server", | |
"options": { | |
"browserTarget": "demo:build" | |
}, | |
"configurations": { | |
"production": { | |
"browserTarget": "demo:build:production" | |
} | |
} | |
}, | |
"extract-i18n": { | |
"builder": "@angular-devkit/build-angular:extract-i18n", | |
"options": { | |
"browserTarget": "demo:build" | |
} | |
}, | |
"test": { | |
"builder": "@angular-devkit/build-angular:karma", | |
"options": { | |
"main": "src/test.ts", | |
"polyfills": "src/polyfills.ts", | |
"tsConfig": "src/tsconfig.spec.json", | |
"karmaConfig": "src/karma.conf.js", | |
"styles": [ | |
"src/styles.css" | |
], | |
"scripts": [], | |
"assets": [ | |
"src/favicon.ico", | |
"src/assets" | |
] | |
} | |
}, | |
"lint": { | |
"builder": "@angular-devkit/build-angular:tslint", | |
"options": { | |
"tsConfig": [ | |
"src/tsconfig.app.json", | |
"src/tsconfig.spec.json" | |
], | |
"exclude": [ | |
"**/node_modules/**" | |
] | |
} | |
} | |
} | |
}, | |
"demo-e2e": { | |
"root": "e2e/", | |
"projectType": "application", | |
"prefix": "", | |
"architect": { | |
"e2e": { | |
"builder": "@angular-devkit/build-angular:protractor", | |
"options": { | |
"protractorConfig": "e2e/protractor.conf.js", | |
"devServerTarget": "demo:serve" | |
}, | |
"configurations": { | |
"production": { | |
"devServerTarget": "demo:serve:production" | |
} | |
} | |
}, | |
"lint": { | |
"builder": "@angular-devkit/build-angular:tslint", | |
"options": { | |
"tsConfig": "e2e/tsconfig.e2e.json", | |
"exclude": [ | |
"**/node_modules/**" | |
] | |
} | |
} | |
} | |
} | |
}, | |
"defaultProject": "demo" | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment