@valtimo/components 4.15.2-next-main.14 → 4.15.3-next-main.15
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.
- package/bundles/valtimo-components.umd.js +4795 -4793
- package/bundles/valtimo-components.umd.js.map +1 -1
- package/bundles/valtimo-components.umd.min.js +1 -1
- package/bundles/valtimo-components.umd.min.js.map +1 -1
- package/esm2015/lib/alert/alert.component.js +141 -141
- package/esm2015/lib/alert/alert.module.js +27 -27
- package/esm2015/lib/alert/alert.service.js +80 -80
- package/esm2015/lib/bpmn-js-diagram/bpmn-js-diagram.component.js +159 -159
- package/esm2015/lib/bpmn-js-diagram/bpmn-js-diagram.module.js +29 -29
- package/esm2015/lib/breadcrumb-navigation/breadcrumb-navigation.component.js +92 -92
- package/esm2015/lib/breadcrumb-navigation/breadcrumb-navigation.module.js +33 -33
- package/esm2015/lib/camunda/form/camunda-form.components.js +36 -36
- package/esm2015/lib/camunda/form/camunda-form.module.js +37 -37
- package/esm2015/lib/camunda/form/custom/camunda-custom-form.component.js +41 -41
- package/esm2015/lib/camunda/form/custom/camunda-custom-form.module.js +33 -33
- package/esm2015/lib/camunda/form/generated/camunda-generated-form.component.js +68 -68
- package/esm2015/lib/camunda/form/generated/camunda-generated-form.module.js +62 -62
- package/esm2015/lib/camunda/form/generated/formfield/boolean/camunda-boolean-formfield.component.js +27 -27
- package/esm2015/lib/camunda/form/generated/formfield/camunda-formfield-generator.directive.js +63 -63
- package/esm2015/lib/camunda/form/generated/formfield/camunda-formfield.service.js +66 -66
- package/esm2015/lib/camunda/form/generated/formfield/choicefield/camunda-choicefield-formfield.component.js +37 -37
- package/esm2015/lib/camunda/form/generated/formfield/date/camunda-date-formfield.component.js +65 -65
- package/esm2015/lib/camunda/form/generated/formfield/enum/camunda-enum-formfield.component.js +30 -30
- package/esm2015/lib/camunda/form/generated/formfield/formfield.model.js +15 -15
- package/esm2015/lib/camunda/form/generated/formfield/long/camunda-long-formfield.component.js +27 -27
- package/esm2015/lib/camunda/form/generated/formfield/string/camunda-string-formfield.component.js +27 -27
- package/esm2015/lib/camunda/form/generated/formfield/textarea/camunda-textarea-formfield.component.js +27 -27
- package/esm2015/lib/camunda/form/generated/formfield/validation/camunda-formfield-validation.component.js +35 -35
- package/esm2015/lib/camunda/form/generated/formfield/validation/date.validators.js +59 -59
- package/esm2015/lib/card/card.component.js +36 -36
- package/esm2015/lib/card/card.module.js +29 -29
- package/esm2015/lib/components.module.js +21 -21
- package/esm2015/lib/data-list/data-list.component.js +33 -33
- package/esm2015/lib/data-list/data-list.module.js +29 -29
- package/esm2015/lib/dropzone/dropzone.component.js +142 -142
- package/esm2015/lib/dropzone/dropzone.module.js +31 -31
- package/esm2015/lib/field-auto-focus/field-auto-focus.directive.js +34 -34
- package/esm2015/lib/field-auto-focus/field-auto-focus.module.js +31 -31
- package/esm2015/lib/file-size/file-size.module.js +29 -29
- package/esm2015/lib/file-size/file-size.pipe.js +44 -44
- package/esm2015/lib/filter-sidebar/filter-sidebar.component.js +45 -45
- package/esm2015/lib/filter-sidebar/filter-sidebar.module.js +29 -29
- package/esm2015/lib/form-io/form-io-builder.component.js +38 -38
- package/esm2015/lib/form-io/form-io-uploader/form-io-uploader-edit-form.js +89 -89
- package/esm2015/lib/form-io/form-io-uploader/form-io-uploader.component.js +71 -71
- package/esm2015/lib/form-io/form-io-uploader/form-io-uploader.formio.js +25 -25
- package/esm2015/lib/form-io/form-io.component.js +157 -157
- package/esm2015/lib/form-io/form-io.module.js +55 -55
- package/esm2015/lib/form-io/formio-config.js +21 -21
- package/esm2015/lib/form-io/services/form-io-dom.service.js +22 -22
- package/esm2015/lib/form-io/services/form-io-state.service.js +23 -23
- package/esm2015/lib/left-sidebar/left-sidebar.component.js +113 -113
- package/esm2015/lib/left-sidebar/left-sidebar.module.js +33 -33
- package/esm2015/lib/list/ListFilterPipe.directive.js +34 -34
- package/esm2015/lib/list/list.component.js +176 -176
- package/esm2015/lib/list/list.module.js +32 -32
- package/esm2015/lib/menu/menu-item-text.component.js +27 -27
- package/esm2015/lib/menu/menu-routing.module.js +28 -28
- package/esm2015/lib/menu/menu.component.js +64 -64
- package/esm2015/lib/menu/menu.init.js +33 -33
- package/esm2015/lib/menu/menu.module.js +38 -38
- package/esm2015/lib/menu/menu.service.js +126 -126
- package/esm2015/lib/menu/submenu-item-text.component.js +27 -27
- package/esm2015/lib/modal/modal.component.js +47 -47
- package/esm2015/lib/modal/modal.module.js +27 -27
- package/esm2015/lib/page-header/page-header.component.js +28 -28
- package/esm2015/lib/page-header/page-header.module.js +33 -33
- package/esm2015/lib/page-title/page-title.component.js +75 -75
- package/esm2015/lib/page-title/page-title.module.js +31 -31
- package/esm2015/lib/progress-bar/progress-bar.component.js +25 -25
- package/esm2015/lib/progress-bar/progress-bar.module.js +29 -29
- package/esm2015/lib/right-sidebar/right-sidebar.component.js +130 -130
- package/esm2015/lib/right-sidebar/right-sidebar.module.js +48 -48
- package/esm2015/lib/searchable-dropdown/searchable-dropdown.component.js +184 -184
- package/esm2015/lib/searchable-dropdown/searchable-dropdown.module.js +28 -28
- package/esm2015/lib/searchable-dropdown-select/searchable-dropdown-select.component.js +51 -51
- package/esm2015/lib/searchable-dropdown-select/searchable-dropdown-select.module.js +29 -29
- package/esm2015/lib/spinner/spinner.component.js +45 -43
- package/esm2015/lib/spinner/spinner.module.js +35 -35
- package/esm2015/lib/timeline/timeline.component.js +28 -28
- package/esm2015/lib/timeline/timeline.module.js +31 -31
- package/esm2015/lib/topbar/topbar.component.js +28 -28
- package/esm2015/lib/topbar/topbar.module.js +31 -31
- package/esm2015/lib/uploader/uploader-drag-drop.directive.js +48 -48
- package/esm2015/lib/uploader/uploader.component.js +69 -69
- package/esm2015/lib/uploader/uploader.module.js +32 -32
- package/esm2015/lib/version/version.service.js +37 -37
- package/esm2015/lib/view-content/type-converters/booleanTypeConverter.js +28 -28
- package/esm2015/lib/view-content/type-converters/dateTypeConverter.js +29 -29
- package/esm2015/lib/view-content/type-converters/enumTypeConverter.js +23 -23
- package/esm2015/lib/view-content/type-converters/relatedFilesTypeConverter.js +23 -23
- package/esm2015/lib/view-content/type-converters/stringReplaceUnderscoreTypeConverter.js +26 -26
- package/esm2015/lib/view-content/type-converters/stringTypeConverter.js +23 -23
- package/esm2015/lib/view-content/type-converters/type-converters.model.js +36 -36
- package/esm2015/lib/view-content/view-content.service.js +50 -50
- package/esm2015/lib/webcam/webcam.component.js +102 -102
- package/esm2015/lib/webcam/webcam.module.js +31 -31
- package/esm2015/lib/widget/widget.component.js +79 -79
- package/esm2015/lib/widget/widget.module.js +29 -29
- package/esm2015/public_api.js +83 -83
- package/esm2015/valtimo-components.js +26 -26
- package/fesm2015/valtimo-components.js +4303 -4301
- package/fesm2015/valtimo-components.js.map +1 -1
- package/lib/alert/alert.component.d.ts +21 -21
- package/lib/alert/alert.module.d.ts +2 -2
- package/lib/alert/alert.service.d.ts +21 -21
- package/lib/bpmn-js-diagram/bpmn-js-diagram.component.d.ts +27 -27
- package/lib/bpmn-js-diagram/bpmn-js-diagram.module.d.ts +2 -2
- package/lib/breadcrumb-navigation/breadcrumb-navigation.component.d.ts +14 -14
- package/lib/breadcrumb-navigation/breadcrumb-navigation.module.d.ts +2 -2
- package/lib/camunda/form/camunda-form.components.d.ts +9 -9
- package/lib/camunda/form/camunda-form.module.d.ts +2 -2
- package/lib/camunda/form/custom/camunda-custom-form.component.d.ts +8 -8
- package/lib/camunda/form/custom/camunda-custom-form.module.d.ts +2 -2
- package/lib/camunda/form/generated/camunda-generated-form.component.d.ts +19 -19
- package/lib/camunda/form/generated/camunda-generated-form.module.d.ts +2 -2
- package/lib/camunda/form/generated/formfield/boolean/camunda-boolean-formfield.component.d.ts +7 -7
- package/lib/camunda/form/generated/formfield/camunda-formfield-generator.directive.d.ts +13 -13
- package/lib/camunda/form/generated/formfield/camunda-formfield.service.d.ts +7 -7
- package/lib/camunda/form/generated/formfield/choicefield/camunda-choicefield-formfield.component.d.ts +12 -12
- package/lib/camunda/form/generated/formfield/date/camunda-date-formfield.component.d.ts +14 -14
- package/lib/camunda/form/generated/formfield/enum/camunda-enum-formfield.component.d.ts +10 -10
- package/lib/camunda/form/generated/formfield/formfield.model.d.ts +20 -20
- package/lib/camunda/form/generated/formfield/long/camunda-long-formfield.component.d.ts +7 -7
- package/lib/camunda/form/generated/formfield/string/camunda-string-formfield.component.d.ts +7 -7
- package/lib/camunda/form/generated/formfield/textarea/camunda-textarea-formfield.component.d.ts +7 -7
- package/lib/camunda/form/generated/formfield/validation/camunda-formfield-validation.component.d.ts +10 -10
- package/lib/camunda/form/generated/formfield/validation/date.validators.d.ts +3 -3
- package/lib/card/card.component.d.ts +16 -16
- package/lib/card/card.module.d.ts +2 -2
- package/lib/components.module.d.ts +2 -2
- package/lib/data-list/data-list.component.d.ts +7 -7
- package/lib/data-list/data-list.module.d.ts +2 -2
- package/lib/dropzone/dropzone.component.d.ts +38 -38
- package/lib/dropzone/dropzone.module.d.ts +2 -2
- package/lib/field-auto-focus/field-auto-focus.directive.d.ts +6 -6
- package/lib/field-auto-focus/field-auto-focus.module.d.ts +2 -2
- package/lib/file-size/file-size.module.d.ts +2 -2
- package/lib/file-size/file-size.pipe.d.ts +5 -5
- package/lib/filter-sidebar/filter-sidebar.component.d.ts +8 -8
- package/lib/filter-sidebar/filter-sidebar.module.d.ts +2 -2
- package/lib/form-io/form-io-builder.component.d.ts +8 -8
- package/lib/form-io/form-io-uploader/form-io-uploader-edit-form.d.ts +61 -61
- package/lib/form-io/form-io-uploader/form-io-uploader.component.d.ts +29 -29
- package/lib/form-io/form-io-uploader/form-io-uploader.formio.d.ts +3 -3
- package/lib/form-io/form-io.component.d.ts +44 -44
- package/lib/form-io/form-io.module.d.ts +2 -2
- package/lib/form-io/formio-config.d.ts +6 -6
- package/lib/form-io/services/form-io-dom.service.d.ts +6 -6
- package/lib/form-io/services/form-io-state.service.d.ts +10 -10
- package/lib/left-sidebar/left-sidebar.component.d.ts +34 -34
- package/lib/left-sidebar/left-sidebar.module.d.ts +2 -2
- package/lib/list/ListFilterPipe.directive.d.ts +4 -4
- package/lib/list/list.component.d.ts +43 -43
- package/lib/list/list.module.d.ts +2 -2
- package/lib/menu/menu-item-text.component.d.ts +4 -4
- package/lib/menu/menu-routing.module.d.ts +2 -2
- package/lib/menu/menu.component.d.ts +18 -18
- package/lib/menu/menu.init.d.ts +3 -3
- package/lib/menu/menu.module.d.ts +2 -2
- package/lib/menu/menu.service.d.ts +23 -23
- package/lib/menu/submenu-item-text.component.d.ts +4 -4
- package/lib/modal/modal.component.d.ts +12 -12
- package/lib/modal/modal.module.d.ts +2 -2
- package/lib/page-header/page-header.component.d.ts +5 -5
- package/lib/page-header/page-header.module.d.ts +2 -2
- package/lib/page-title/page-title.component.d.ts +19 -19
- package/lib/page-title/page-title.module.d.ts +2 -2
- package/lib/progress-bar/progress-bar.component.d.ts +2 -2
- package/lib/progress-bar/progress-bar.module.d.ts +2 -2
- package/lib/right-sidebar/right-sidebar.component.d.ts +34 -34
- package/lib/right-sidebar/right-sidebar.module.d.ts +2 -2
- package/lib/searchable-dropdown/searchable-dropdown.component.d.ts +39 -39
- package/lib/searchable-dropdown/searchable-dropdown.module.d.ts +2 -2
- package/lib/searchable-dropdown-select/searchable-dropdown-select.component.d.ts +19 -19
- package/lib/searchable-dropdown-select/searchable-dropdown-select.module.d.ts +2 -2
- package/lib/spinner/spinner.component.d.ts +10 -9
- package/lib/spinner/spinner.module.d.ts +2 -2
- package/lib/timeline/timeline.component.d.ts +4 -4
- package/lib/timeline/timeline.module.d.ts +2 -2
- package/lib/topbar/topbar.component.d.ts +3 -3
- package/lib/topbar/topbar.module.d.ts +2 -2
- package/lib/uploader/uploader-drag-drop.directive.d.ts +7 -7
- package/lib/uploader/uploader.component.d.ts +15 -15
- package/lib/uploader/uploader.module.d.ts +2 -2
- package/lib/version/version.service.d.ts +8 -8
- package/lib/view-content/type-converters/booleanTypeConverter.d.ts +5 -5
- package/lib/view-content/type-converters/dateTypeConverter.d.ts +5 -5
- package/lib/view-content/type-converters/enumTypeConverter.d.ts +5 -5
- package/lib/view-content/type-converters/relatedFilesTypeConverter.d.ts +5 -5
- package/lib/view-content/type-converters/stringReplaceUnderscoreTypeConverter.d.ts +6 -6
- package/lib/view-content/type-converters/stringTypeConverter.d.ts +5 -5
- package/lib/view-content/type-converters/type-converters.model.d.ts +5 -5
- package/lib/view-content/view-content.service.d.ts +8 -8
- package/lib/webcam/webcam.component.d.ts +20 -20
- package/lib/webcam/webcam.module.d.ts +2 -2
- package/lib/widget/widget.component.d.ts +28 -28
- package/lib/widget/widget.module.d.ts +2 -2
- package/package.json +1 -1
- package/public_api.d.ts +65 -65
- package/valtimo-components.d.ts +26 -26
- package/valtimo-components.metadata.json +1 -1
|
@@ -1,160 +1,160 @@
|
|
|
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, Input, Output, ViewChild, EventEmitter } from '@angular/core';
|
|
17
|
-
import * as BpmnJS from 'bpmn-js/dist/bpmn-navigated-viewer.production.min.js';
|
|
18
|
-
import * as heatmap from 'heatmap.js-fixed/build/heatmap.js';
|
|
19
|
-
export class BpmnJsDiagramComponent {
|
|
20
|
-
constructor() {
|
|
21
|
-
this.importDone = new EventEmitter();
|
|
22
|
-
this.heatPoints = { data: [] };
|
|
23
|
-
}
|
|
24
|
-
ngOnInit() {
|
|
25
|
-
this.bpmnJS = new BpmnJS();
|
|
26
|
-
this.bpmnJS.on('import.done', ({ error }) => {
|
|
27
|
-
if (!error) {
|
|
28
|
-
const canvas = this.bpmnJS.get('canvas'), eventBus = this.bpmnJS.get('eventBus');
|
|
29
|
-
if (this.historicActivityInstances) {
|
|
30
|
-
this.historicActivityInstances.forEach(instance => {
|
|
31
|
-
canvas.addMarker(instance.activityId, instance.endTime ? 'highlight-overlay-past' : 'highlight-overlay-current');
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
canvas.zoom('fit-viewport', 'auto');
|
|
35
|
-
if (this.heatmapDuration || this.heatmapCount) {
|
|
36
|
-
eventBus.on('canvas.init', () => {
|
|
37
|
-
if (this.heatmapMode) {
|
|
38
|
-
this.clearHeatmap();
|
|
39
|
-
}
|
|
40
|
-
this.getHeatmapData();
|
|
41
|
-
});
|
|
42
|
-
eventBus.on('canvas.viewbox.changing', () => {
|
|
43
|
-
if (this.heatmapMode) {
|
|
44
|
-
this.clearHeatmap();
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
eventBus.on('canvas.viewbox.changed', () => {
|
|
48
|
-
this.getHeatmapData();
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
ngAfterContentInit() {
|
|
55
|
-
this.bpmnJS.importXML(this.bpmn20Xml);
|
|
56
|
-
this.bpmnJS.attachTo(this.el.nativeElement);
|
|
57
|
-
}
|
|
58
|
-
getHeatmapData() {
|
|
59
|
-
let inputData, valueKey;
|
|
60
|
-
this.heatPoints = { data: [] };
|
|
61
|
-
this.min = 0;
|
|
62
|
-
this.max = 0;
|
|
63
|
-
if (this.heatmapDuration) {
|
|
64
|
-
inputData = this.heatmapDuration;
|
|
65
|
-
valueKey = 'averageDurationInMilliseconds';
|
|
66
|
-
}
|
|
67
|
-
else if (this.heatmapCount) {
|
|
68
|
-
inputData = this.heatmapCount;
|
|
69
|
-
valueKey = 'totalCount';
|
|
70
|
-
}
|
|
71
|
-
if (inputData) {
|
|
72
|
-
Object.keys(inputData).forEach(key => {
|
|
73
|
-
const diagramContainer = this.el.nativeElement.querySelector('svg')
|
|
74
|
-
.getBoundingClientRect(), diagramElm = this.el.nativeElement.querySelector(`g[data-element-id=${key}]`)
|
|
75
|
-
.getBoundingClientRect();
|
|
76
|
-
this.setMax(key);
|
|
77
|
-
this.heatPoints.data.push({
|
|
78
|
-
x: Math.round(diagramElm.x - diagramContainer.x + diagramElm.width / 2),
|
|
79
|
-
y: Math.round(diagramElm.y - diagramContainer.y + diagramElm.height / 2),
|
|
80
|
-
value: inputData[key][valueKey],
|
|
81
|
-
radius: diagramElm.width / 2
|
|
82
|
-
});
|
|
83
|
-
if (inputData[key].count > 0) {
|
|
84
|
-
this.addCounterActiveOverlays(key, inputData);
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
if (this.heatmapMode) {
|
|
88
|
-
this.showHeatmap();
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
setMax(key) {
|
|
93
|
-
if (this.heatmapDuration) {
|
|
94
|
-
this.max = Math.max(this.heatmapDuration[key].averageDurationInMilliseconds, this.max);
|
|
95
|
-
}
|
|
96
|
-
else if (this.heatmapCount) {
|
|
97
|
-
this.max = Math.max(this.heatmapCount[key].totalCount + this.heatmapCount[key].count, this.max);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
addCounterActiveOverlays(key, inputData) {
|
|
101
|
-
const overlays = this.bpmnJS.get('overlays');
|
|
102
|
-
overlays.add(key, {
|
|
103
|
-
position: {
|
|
104
|
-
bottom: -10,
|
|
105
|
-
left: 0
|
|
106
|
-
},
|
|
107
|
-
show: {
|
|
108
|
-
minZoom: 0,
|
|
109
|
-
maxZoom: 5.0
|
|
110
|
-
},
|
|
111
|
-
html: `<span class="badge badge-pill badge-primary">${inputData[key].count}</span>`
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
showHeatmap() {
|
|
115
|
-
this.heatMapInstance = heatmap.create({
|
|
116
|
-
radius: 54,
|
|
117
|
-
blur: .70,
|
|
118
|
-
maxOpacity: .4,
|
|
119
|
-
minOpacity: 0,
|
|
120
|
-
container: this.el.nativeElement
|
|
121
|
-
});
|
|
122
|
-
this.heatMapInstance.setData({
|
|
123
|
-
min: this.min,
|
|
124
|
-
max: this.max,
|
|
125
|
-
data: this.heatPoints.data
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
clearHeatmap() {
|
|
129
|
-
this.heatMapInstance.setData({ data: [] });
|
|
130
|
-
}
|
|
131
|
-
toggleHeatmap() {
|
|
132
|
-
this.heatmapMode = !this.heatmapMode;
|
|
133
|
-
if (this.heatmapMode) {
|
|
134
|
-
this.showHeatmap();
|
|
135
|
-
}
|
|
136
|
-
else {
|
|
137
|
-
this.clearHeatmap();
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
ngOnDestroy() {
|
|
141
|
-
this.bpmnJS.destroy();
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
BpmnJsDiagramComponent.decorators = [
|
|
145
|
-
{ type: Component, args: [{
|
|
146
|
-
selector: 'valtimo-bpmn-js-diagram',
|
|
147
|
-
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\n<div class=\"p-4\" *ngIf=\"heatmapDuration || heatmapCount\">\n <div class=\"switch-button switch-button-sm switch-button-success\">\n <input type=\"checkbox\" id=\"toggleHeatmap\" [checked]=\"heatmapMode\" (click)=\"toggleHeatmap()\"><span>\n <label for=\"toggleHeatmap\"></label></span>\n </div>\n</div>\n\n<div #ref class=\"diagram-container\"></div>\n\n<div *ngIf=\"historicActivityInstances\" class=\"p-4 text-center legenda-holder\">\n <span><div class=\"legenda highlight-overlay-past\"></div> Executed tasks</span>\n <span class=\"ml-3\"><div class=\"legenda highlight-overlay-current\"></div> Current tasks</span>\n</div>\n\n<div *ngIf=\"heatmapDuration || heatmapCount\" class=\"p-4 text-center legenda-holder\">\n <span><span class=\"badge badge-pill badge-primary\">N</span> Amount of currently active instances of this task.</span>\n <span> | Red/yellow/green orbs: The amount of times the task is executed in comparison to the other tasks.</span>\n</div>\n",
|
|
148
|
-
styles: [""]
|
|
149
|
-
},] }
|
|
150
|
-
];
|
|
151
|
-
BpmnJsDiagramComponent.ctorParameters = () => [];
|
|
152
|
-
BpmnJsDiagramComponent.propDecorators = {
|
|
153
|
-
el: [{ type: ViewChild, args: ['ref', { static: true },] }],
|
|
154
|
-
importDone: [{ type: Output }],
|
|
155
|
-
bpmn20Xml: [{ type: Input }],
|
|
156
|
-
heatmapDuration: [{ type: Input }],
|
|
157
|
-
heatmapCount: [{ type: Input }],
|
|
158
|
-
historicActivityInstances: [{ type: Input }]
|
|
159
|
-
};
|
|
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, Input, Output, ViewChild, EventEmitter } from '@angular/core';
|
|
17
|
+
import * as BpmnJS from 'bpmn-js/dist/bpmn-navigated-viewer.production.min.js';
|
|
18
|
+
import * as heatmap from 'heatmap.js-fixed/build/heatmap.js';
|
|
19
|
+
export class BpmnJsDiagramComponent {
|
|
20
|
+
constructor() {
|
|
21
|
+
this.importDone = new EventEmitter();
|
|
22
|
+
this.heatPoints = { data: [] };
|
|
23
|
+
}
|
|
24
|
+
ngOnInit() {
|
|
25
|
+
this.bpmnJS = new BpmnJS();
|
|
26
|
+
this.bpmnJS.on('import.done', ({ error }) => {
|
|
27
|
+
if (!error) {
|
|
28
|
+
const canvas = this.bpmnJS.get('canvas'), eventBus = this.bpmnJS.get('eventBus');
|
|
29
|
+
if (this.historicActivityInstances) {
|
|
30
|
+
this.historicActivityInstances.forEach(instance => {
|
|
31
|
+
canvas.addMarker(instance.activityId, instance.endTime ? 'highlight-overlay-past' : 'highlight-overlay-current');
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
canvas.zoom('fit-viewport', 'auto');
|
|
35
|
+
if (this.heatmapDuration || this.heatmapCount) {
|
|
36
|
+
eventBus.on('canvas.init', () => {
|
|
37
|
+
if (this.heatmapMode) {
|
|
38
|
+
this.clearHeatmap();
|
|
39
|
+
}
|
|
40
|
+
this.getHeatmapData();
|
|
41
|
+
});
|
|
42
|
+
eventBus.on('canvas.viewbox.changing', () => {
|
|
43
|
+
if (this.heatmapMode) {
|
|
44
|
+
this.clearHeatmap();
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
eventBus.on('canvas.viewbox.changed', () => {
|
|
48
|
+
this.getHeatmapData();
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
ngAfterContentInit() {
|
|
55
|
+
this.bpmnJS.importXML(this.bpmn20Xml);
|
|
56
|
+
this.bpmnJS.attachTo(this.el.nativeElement);
|
|
57
|
+
}
|
|
58
|
+
getHeatmapData() {
|
|
59
|
+
let inputData, valueKey;
|
|
60
|
+
this.heatPoints = { data: [] };
|
|
61
|
+
this.min = 0;
|
|
62
|
+
this.max = 0;
|
|
63
|
+
if (this.heatmapDuration) {
|
|
64
|
+
inputData = this.heatmapDuration;
|
|
65
|
+
valueKey = 'averageDurationInMilliseconds';
|
|
66
|
+
}
|
|
67
|
+
else if (this.heatmapCount) {
|
|
68
|
+
inputData = this.heatmapCount;
|
|
69
|
+
valueKey = 'totalCount';
|
|
70
|
+
}
|
|
71
|
+
if (inputData) {
|
|
72
|
+
Object.keys(inputData).forEach(key => {
|
|
73
|
+
const diagramContainer = this.el.nativeElement.querySelector('svg')
|
|
74
|
+
.getBoundingClientRect(), diagramElm = this.el.nativeElement.querySelector(`g[data-element-id=${key}]`)
|
|
75
|
+
.getBoundingClientRect();
|
|
76
|
+
this.setMax(key);
|
|
77
|
+
this.heatPoints.data.push({
|
|
78
|
+
x: Math.round(diagramElm.x - diagramContainer.x + diagramElm.width / 2),
|
|
79
|
+
y: Math.round(diagramElm.y - diagramContainer.y + diagramElm.height / 2),
|
|
80
|
+
value: inputData[key][valueKey],
|
|
81
|
+
radius: diagramElm.width / 2
|
|
82
|
+
});
|
|
83
|
+
if (inputData[key].count > 0) {
|
|
84
|
+
this.addCounterActiveOverlays(key, inputData);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
if (this.heatmapMode) {
|
|
88
|
+
this.showHeatmap();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
setMax(key) {
|
|
93
|
+
if (this.heatmapDuration) {
|
|
94
|
+
this.max = Math.max(this.heatmapDuration[key].averageDurationInMilliseconds, this.max);
|
|
95
|
+
}
|
|
96
|
+
else if (this.heatmapCount) {
|
|
97
|
+
this.max = Math.max(this.heatmapCount[key].totalCount + this.heatmapCount[key].count, this.max);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
addCounterActiveOverlays(key, inputData) {
|
|
101
|
+
const overlays = this.bpmnJS.get('overlays');
|
|
102
|
+
overlays.add(key, {
|
|
103
|
+
position: {
|
|
104
|
+
bottom: -10,
|
|
105
|
+
left: 0
|
|
106
|
+
},
|
|
107
|
+
show: {
|
|
108
|
+
minZoom: 0,
|
|
109
|
+
maxZoom: 5.0
|
|
110
|
+
},
|
|
111
|
+
html: `<span class="badge badge-pill badge-primary">${inputData[key].count}</span>`
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
showHeatmap() {
|
|
115
|
+
this.heatMapInstance = heatmap.create({
|
|
116
|
+
radius: 54,
|
|
117
|
+
blur: .70,
|
|
118
|
+
maxOpacity: .4,
|
|
119
|
+
minOpacity: 0,
|
|
120
|
+
container: this.el.nativeElement
|
|
121
|
+
});
|
|
122
|
+
this.heatMapInstance.setData({
|
|
123
|
+
min: this.min,
|
|
124
|
+
max: this.max,
|
|
125
|
+
data: this.heatPoints.data
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
clearHeatmap() {
|
|
129
|
+
this.heatMapInstance.setData({ data: [] });
|
|
130
|
+
}
|
|
131
|
+
toggleHeatmap() {
|
|
132
|
+
this.heatmapMode = !this.heatmapMode;
|
|
133
|
+
if (this.heatmapMode) {
|
|
134
|
+
this.showHeatmap();
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
this.clearHeatmap();
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
ngOnDestroy() {
|
|
141
|
+
this.bpmnJS.destroy();
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
BpmnJsDiagramComponent.decorators = [
|
|
145
|
+
{ type: Component, args: [{
|
|
146
|
+
selector: 'valtimo-bpmn-js-diagram',
|
|
147
|
+
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\n<div class=\"p-4\" *ngIf=\"heatmapDuration || heatmapCount\">\n <div class=\"switch-button switch-button-sm switch-button-success\">\n <input type=\"checkbox\" id=\"toggleHeatmap\" [checked]=\"heatmapMode\" (click)=\"toggleHeatmap()\"><span>\n <label for=\"toggleHeatmap\"></label></span>\n </div>\n</div>\n\n<div #ref class=\"diagram-container\"></div>\n\n<div *ngIf=\"historicActivityInstances\" class=\"p-4 text-center legenda-holder\">\n <span><div class=\"legenda highlight-overlay-past\"></div> Executed tasks</span>\n <span class=\"ml-3\"><div class=\"legenda highlight-overlay-current\"></div> Current tasks</span>\n</div>\n\n<div *ngIf=\"heatmapDuration || heatmapCount\" class=\"p-4 text-center legenda-holder\">\n <span><span class=\"badge badge-pill badge-primary\">N</span> Amount of currently active instances of this task.</span>\n <span> | Red/yellow/green orbs: The amount of times the task is executed in comparison to the other tasks.</span>\n</div>\n",
|
|
148
|
+
styles: [""]
|
|
149
|
+
},] }
|
|
150
|
+
];
|
|
151
|
+
BpmnJsDiagramComponent.ctorParameters = () => [];
|
|
152
|
+
BpmnJsDiagramComponent.propDecorators = {
|
|
153
|
+
el: [{ type: ViewChild, args: ['ref', { static: true },] }],
|
|
154
|
+
importDone: [{ type: Output }],
|
|
155
|
+
bpmn20Xml: [{ type: Input }],
|
|
156
|
+
heatmapDuration: [{ type: Input }],
|
|
157
|
+
heatmapCount: [{ type: Input }],
|
|
158
|
+
historicActivityInstances: [{ type: Input }]
|
|
159
|
+
};
|
|
160
160
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnBtbi1qcy1kaWFncmFtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vY29tcG9uZW50cy9zcmMvbGliL2JwbW4tanMtZGlhZ3JhbS9icG1uLWpzLWRpYWdyYW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUVMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsWUFBWSxFQUViLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxNQUFNLE1BQU0sc0RBQXNELENBQUM7QUFDL0UsT0FBTyxLQUFLLE9BQU8sTUFBTSxtQ0FBbUMsQ0FBQztBQVE3RCxNQUFNLE9BQU8sc0JBQXNCO0lBaUJqQztRQVhpQixlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFPN0QsZUFBVSxHQUFHLEVBQUMsSUFBSSxFQUFFLEVBQUUsRUFBQyxDQUFDO0lBSWYsQ0FBQztJQUVqQixRQUFRO1FBQ04sSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDLEVBQUMsS0FBSyxFQUFDLEVBQUUsRUFBRTtZQUN4QyxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNWLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUNwQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBRTNDLElBQUksSUFBSSxDQUFDLHlCQUF5QixFQUFFO29CQUNsQyxJQUFJLENBQUMseUJBQXlCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO3dCQUNoRCxNQUFNLENBQUMs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O2lCQU9FLFNBQVMsU0FBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO3lCQUNqQyxNQUFNO3dCQUNOLEtBQUs7OEJBQ0wsS0FBSzsyQkFDTCxLQUFLO3dDQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uSW5pdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIEJwbW5KUyBmcm9tICdicG1uLWpzL2Rpc3QvYnBtbi1uYXZpZ2F0ZWQtdmlld2VyLnByb2R1Y3Rpb24ubWluLmpzJztcbmltcG9ydCAqIGFzIGhlYXRtYXAgZnJvbSAnaGVhdG1hcC5qcy1maXhlZC9idWlsZC9oZWF0bWFwLmpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1icG1uLWpzLWRpYWdyYW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vYnBtbi1qcy1kaWFncmFtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYnBtbi1qcy1kaWFncmFtLmNvbXBvbmVudC5jc3MnXVxufSlcblxuZXhwb3J0IGNsYXNzIEJwbW5Kc0RpYWdyYW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSBicG1uSlM6IEJwbW5KUztcbiAgcHJpdmF0ZSBoZWF0TWFwSW5zdGFuY2U6IGFueTtcblxuICBAVmlld0NoaWxkKCdyZWYnLCB7IHN0YXRpYzogdHJ1ZSB9KSBwdWJsaWMgZWw6IEVsZW1lbnRSZWY7XG4gIEBPdXRwdXQoKSBwdWJsaWMgaW1wb3J0RG9uZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBJbnB1dCgpIHB1YmxpYyBicG1uMjBYbWw6IGFueTtcbiAgQElucHV0KCkgcHVibGljIGhlYXRtYXBEdXJhdGlvbj86IGFueTtcbiAgQElucHV0KCkgcHVibGljIGhlYXRtYXBDb3VudD86IGFueTtcbiAgQElucHV0KCkgcHVibGljIGhpc3RvcmljQWN0aXZpdHlJbnN0YW5jZXM/OiBhbnk7XG5cbiAgcHVibGljIGhlYXRtYXBNb2RlOiBib29sZWFuO1xuICBwdWJsaWMgaGVhdFBvaW50cyA9IHtkYXRhOiBbXX07XG4gIHB1YmxpYyBtaW46IG51bWJlcjtcbiAgcHVibGljIG1heDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5icG1uSlMgPSBuZXcgQnBtbkpTKCk7XG4gICAgdGhpcy5icG1uSlMub24oJ2ltcG9ydC5kb25lJywgKHtlcnJvcn0pID0+IHtcbiAgICAgIGlmICghZXJyb3IpIHtcbiAgICAgICAgY29uc3QgY2FudmFzID0gdGhpcy5icG1uSlMuZ2V0KCdjYW52YXMnKVxuICAgICAgICAgICwgZXZlbnRCdXMgPSB0aGlzLmJwbW5KUy5nZXQoJ2V2ZW50QnVzJyk7XG5cbiAgICAgICAgaWYgKHRoaXMuaGlzdG9yaWNBY3Rpdml0eUluc3RhbmNlcykge1xuICAgICAgICAgIHRoaXMuaGlzdG9yaWNBY3Rpdml0eUluc3RhbmNlcy5mb3JFYWNoKGluc3RhbmNlID0+IHtcbiAgICAgICAgICAgIGNhbnZhcy5hZGRNYXJrZXIoaW5zdGFuY2UuYWN0aXZpdHlJZCwgaW5zdGFuY2UuZW5kVGltZSA/ICdoaWdobGlnaHQtb3ZlcmxheS1wYXN0JyA6ICdoaWdobGlnaHQtb3ZlcmxheS1jdXJyZW50Jyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjYW52YXMuem9vbSgnZml0LXZpZXdwb3J0JywgJ2F1dG8nKTtcblxuICAgICAgICBpZiAodGhpcy5oZWF0bWFwRHVyYXRpb24gfHwgdGhpcy5oZWF0bWFwQ291bnQpIHtcbiAgICAgICAgICBldmVudEJ1cy5vbignY2FudmFzLmluaXQnLCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5oZWF0bWFwTW9kZSkge1xuICAgICAgICAgICAgICB0aGlzLmNsZWFySGVhdG1hcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5nZXRIZWF0bWFwRGF0YSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGV2ZW50QnVzLm9uKCdjYW52YXMudmlld2JveC5jaGFuZ2luZycsICgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmhlYXRtYXBNb2RlKSB7XG4gICAgICAgICAgICAgIHRoaXMuY2xlYXJIZWF0bWFwKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZXZlbnRCdXMub24oJ2NhbnZhcy52aWV3Ym94LmNoYW5nZWQnLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmdldEhlYXRtYXBEYXRhKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmJwbW5KUy5pbXBvcnRYTUwodGhpcy5icG1uMjBYbWwpO1xuICAgIHRoaXMuYnBtbkpTLmF0dGFjaFRvKHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBnZXRIZWF0bWFwRGF0YSgpIHtcbiAgICBsZXQgaW5wdXREYXRhOiBhbnlcbiAgICAgICwgdmFsdWVLZXk6IGFueTtcblxuICAgIHRoaXMuaGVhdFBvaW50cyA9IHtkYXRhOiBbXX07XG4gICAgdGhpcy5taW4gPSAwO1xuICAgIHRoaXMubWF4ID0gMDtcblxuICAgIGlmICh0aGlzLmhlYXRtYXBEdXJhdGlvbikge1xuICAgICAgaW5wdXREYXRhID0gdGhpcy5oZWF0bWFwRHVyYXRpb247XG4gICAgICB2YWx1ZUtleSA9ICdhdmVyYWdlRHVyYXRpb25Jbk1pbGxpc2Vjb25kcyc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmhlYXRtYXBDb3VudCkge1xuICAgICAgaW5wdXREYXRhID0gdGhpcy5oZWF0bWFwQ291bnQ7XG4gICAgICB2YWx1ZUtleSA9ICd0b3RhbENvdW50JztcbiAgICB9XG5cbiAgICBpZiAoaW5wdXREYXRhKSB7XG4gICAgICBPYmplY3Qua2V5cyhpbnB1dERhdGEpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgY29uc3QgZGlhZ3JhbUNvbnRhaW5lciA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdzdmcnKVxuICAgICAgICAgICAgLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgICAgICAgIGRpYWdyYW1FbG0gPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihgZ1tkYXRhLWVsZW1lbnQtaWQ9JHtrZXl9XWApXG4gICAgICAgICAgICAuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHRoaXMuc2V0TWF4KGtleSk7XG4gICAgICAgIHRoaXMuaGVhdFBvaW50cy5kYXRhLnB1c2goe1xuICAgICAgICAgIHg6IE1hdGgucm91bmQoZGlhZ3JhbUVsbS54IC0gZGlhZ3JhbUNvbnRhaW5lci54ICsgZGlhZ3JhbUVsbS53aWR0aCAvIDIpLFxuICAgICAgICAgIHk6IE1hdGgucm91bmQoZGlhZ3JhbUVsbS55IC0gZGlhZ3JhbUNvbnRhaW5lci55ICsgZGlhZ3JhbUVsbS5oZWlnaHQgLyAyKSxcbiAgICAgICAgICB2YWx1ZTogaW5wdXREYXRhW2tleV1bdmFsdWVLZXldLFxuICAgICAgICAgIHJhZGl1czogZGlhZ3JhbUVsbS53aWR0aCAvIDJcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChpbnB1dERhdGFba2V5XS5jb3VudCA+IDApIHtcbiAgICAgICAgICB0aGlzLmFkZENvdW50ZXJBY3RpdmVPdmVybGF5cyhrZXksIGlucHV0RGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy5oZWF0bWFwTW9kZSkge1xuICAgICAgICB0aGlzLnNob3dIZWF0bWFwKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0TWF4KGtleTogYW55KSB7XG4gICAgaWYgKHRoaXMuaGVhdG1hcER1cmF0aW9uKSB7XG4gICAgICB0aGlzLm1heCA9IE1hdGgubWF4KHRoaXMuaGVhdG1hcER1cmF0aW9uW2tleV0uYXZlcmFnZUR1cmF0aW9uSW5NaWxsaXNlY29uZHMsIHRoaXMubWF4KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaGVhdG1hcENvdW50KSB7XG4gICAgICB0aGlzLm1heCA9IE1hdGgubWF4KHRoaXMuaGVhdG1hcENvdW50W2tleV0udG90YWxDb3VudCArIHRoaXMuaGVhdG1hcENvdW50W2tleV0uY291bnQsIHRoaXMubWF4KTtcbiAgICB9XG4gIH1cblxuICBhZGRDb3VudGVyQWN0aXZlT3ZlcmxheXMoa2V5OiBhbnksIGlucHV0RGF0YTogYW55KSB7XG4gICAgY29uc3Qgb3ZlcmxheXMgPSB0aGlzLmJwbW5KUy5nZXQoJ292ZXJsYXlzJyk7XG4gICAgb3ZlcmxheXMuYWRkKGtleSwge1xuICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgYm90dG9tOiAtMTAsXG4gICAgICAgIGxlZnQ6IDBcbiAgICAgIH0sXG4gICAgICBzaG93OiB7XG4gICAgICAgIG1pblpvb206IDAsXG4gICAgICAgIG1heFpvb206IDUuMFxuICAgICAgfSxcbiAgICAgIGh0bWw6IGA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLXBpbGwgYmFkZ2UtcHJpbWFyeVwiPiR7aW5wdXREYXRhW2tleV0uY291bnR9PC9zcGFuPmBcbiAgICB9KTtcbiAgfVxuXG4gIHNob3dIZWF0bWFwKCkge1xuICAgIHRoaXMuaGVhdE1hcEluc3RhbmNlID0gaGVhdG1hcC5jcmVhdGUoe1xuICAgICAgcmFkaXVzOiA1NCxcbiAgICAgIGJsdXI6IC43MCxcbiAgICAgIG1heE9wYWNpdHk6IC40LFxuICAgICAgbWluT3BhY2l0eTogMCxcbiAgICAgIGNvbnRhaW5lcjogdGhpcy5lbC5uYXRpdmVFbGVtZW50XG4gICAgfSk7XG4gICAgdGhpcy5oZWF0TWFwSW5zdGFuY2Uuc2V0RGF0YSh7XG4gICAgICBtaW46IHRoaXMubWluLFxuICAgICAgbWF4OiB0aGlzLm1heCxcbiAgICAgIGRhdGE6IHRoaXMuaGVhdFBvaW50cy5kYXRhXG4gICAgfSk7XG4gIH1cblxuICBjbGVhckhlYXRtYXAoKSB7XG4gICAgdGhpcy5oZWF0TWFwSW5zdGFuY2Uuc2V0RGF0YSh7ZGF0YTogW119KTtcbiAgfVxuXG4gIHRvZ2dsZUhlYXRtYXAoKSB7XG4gICAgdGhpcy5oZWF0bWFwTW9kZSA9ICF0aGlzLmhlYXRtYXBNb2RlO1xuICAgIGlmICh0aGlzLmhlYXRtYXBNb2RlKSB7XG4gICAgICB0aGlzLnNob3dIZWF0bWFwKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xlYXJIZWF0bWFwKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5icG1uSlMuZGVzdHJveSgpO1xuICB9XG5cbn1cbiJdfQ==
|
|
@@ -1,30 +1,30 @@
|
|
|
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 { BpmnJsDiagramComponent } from './bpmn-js-diagram.component';
|
|
19
|
-
export class BpmnJsDiagramModule {
|
|
20
|
-
}
|
|
21
|
-
BpmnJsDiagramModule.decorators = [
|
|
22
|
-
{ type: NgModule, args: [{
|
|
23
|
-
declarations: [BpmnJsDiagramComponent],
|
|
24
|
-
imports: [
|
|
25
|
-
CommonModule
|
|
26
|
-
],
|
|
27
|
-
exports: [BpmnJsDiagramComponent]
|
|
28
|
-
},] }
|
|
29
|
-
];
|
|
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 { BpmnJsDiagramComponent } from './bpmn-js-diagram.component';
|
|
19
|
+
export class BpmnJsDiagramModule {
|
|
20
|
+
}
|
|
21
|
+
BpmnJsDiagramModule.decorators = [
|
|
22
|
+
{ type: NgModule, args: [{
|
|
23
|
+
declarations: [BpmnJsDiagramComponent],
|
|
24
|
+
imports: [
|
|
25
|
+
CommonModule
|
|
26
|
+
],
|
|
27
|
+
exports: [BpmnJsDiagramComponent]
|
|
28
|
+
},] }
|
|
29
|
+
];
|
|
30
30
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnBtbi1qcy1kaWFncmFtLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vY29tcG9uZW50cy9zcmMvbGliL2JwbW4tanMtZGlhZ3JhbS9icG1uLWpzLWRpYWdyYW0ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFVckUsTUFBTSxPQUFPLG1CQUFtQjs7O1lBUi9CLFFBQVEsU0FBQztnQkFDUixZQUFZLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztnQkFDdEMsT0FBTyxFQUFFO29CQUNQLFlBQVk7aUJBQ2I7Z0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7YUFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEJwbW5Kc0RpYWdyYW1Db21wb25lbnQgfSBmcm9tICcuL2JwbW4tanMtZGlhZ3JhbS5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtCcG1uSnNEaWFncmFtQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbQnBtbkpzRGlhZ3JhbUNvbXBvbmVudF1cbn0pXG5cbmV4cG9ydCBjbGFzcyBCcG1uSnNEaWFncmFtTW9kdWxlIHsgfVxuIl19
|
|
@@ -1,93 +1,93 @@
|
|
|
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 } from '@angular/core';
|
|
17
|
-
import { ActivatedRoute, NavigationEnd, PRIMARY_OUTLET, Router } from '@angular/router';
|
|
18
|
-
import { filter, map } from 'rxjs/operators';
|
|
19
|
-
import { Subscription } from 'rxjs';
|
|
20
|
-
export class BreadcrumbNavigationComponent {
|
|
21
|
-
constructor(router, route) {
|
|
22
|
-
this.router = router;
|
|
23
|
-
this.route = route;
|
|
24
|
-
this.breadcrumbs = [];
|
|
25
|
-
this.appTitle = 'Valtimo';
|
|
26
|
-
this.routerSub = Subscription.EMPTY;
|
|
27
|
-
}
|
|
28
|
-
ngOnInit() {
|
|
29
|
-
this.setBreadcrumbs(this.route);
|
|
30
|
-
this.routerSub = this.router.events
|
|
31
|
-
.pipe(filter(event => event instanceof NavigationEnd))
|
|
32
|
-
.pipe(map(() => this.route))
|
|
33
|
-
.pipe(map((route) => {
|
|
34
|
-
while (route.firstChild) {
|
|
35
|
-
route = route.firstChild;
|
|
36
|
-
}
|
|
37
|
-
return route;
|
|
38
|
-
}))
|
|
39
|
-
.pipe(filter(route => route.outlet === PRIMARY_OUTLET))
|
|
40
|
-
.subscribe(route => {
|
|
41
|
-
this.setBreadcrumbs(route);
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
setBreadcrumbs(route) {
|
|
45
|
-
while (route.firstChild) {
|
|
46
|
-
route = route.firstChild;
|
|
47
|
-
}
|
|
48
|
-
if (route.outlet === PRIMARY_OUTLET) {
|
|
49
|
-
const snapshot = route.snapshot;
|
|
50
|
-
const activeRoute = {
|
|
51
|
-
url: snapshot.url.join('/'),
|
|
52
|
-
path: snapshot.routeConfig.path,
|
|
53
|
-
label: snapshot.data['title'],
|
|
54
|
-
params: snapshot.params
|
|
55
|
-
};
|
|
56
|
-
this.generateBreadcrumbs(activeRoute);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
generateBreadcrumbs(activeBreadcrumb) {
|
|
60
|
-
this.breadcrumbs = [];
|
|
61
|
-
this.router.config.map(routerConfig => {
|
|
62
|
-
if (activeBreadcrumb.path.indexOf(routerConfig.path + '/') === 0
|
|
63
|
-
&& activeBreadcrumb.path !== routerConfig.path
|
|
64
|
-
&& routerConfig.path !== '') {
|
|
65
|
-
const parentRoute = {
|
|
66
|
-
url: routerConfig.path.replace(/:(.+?)\b/g, (_, p1) => activeBreadcrumb.params[p1]),
|
|
67
|
-
path: routerConfig.path,
|
|
68
|
-
label: routerConfig.data['title'],
|
|
69
|
-
params: activeBreadcrumb.params
|
|
70
|
-
};
|
|
71
|
-
const exist = this.breadcrumbs.findIndex(item => item.url === parentRoute.url);
|
|
72
|
-
if (exist === -1) {
|
|
73
|
-
this.breadcrumbs.push(parentRoute);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
ngOnDestroy() {
|
|
79
|
-
this.routerSub.unsubscribe();
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
BreadcrumbNavigationComponent.decorators = [
|
|
83
|
-
{ type: Component, args: [{
|
|
84
|
-
selector: 'valtimo-breadcrumb-navigation',
|
|
85
|
-
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\n<nav aria-label=\"breadcrumb\" role=\"navigation\">\n <ol class=\"breadcrumb page-head-nav\">\n <li class=\"breadcrumb-item\">\n <a [routerLink]=\"['/']\">{{ appTitle }}</a>\n </li>\n <li class=\"breadcrumb-item\" *ngFor=\"let item of breadcrumbs\">\n <a [routerLink]=\"[item.url]\">{{ item.label | translate }}</a>\n </li>\n </ol>\n</nav>\n",
|
|
86
|
-
styles: [""]
|
|
87
|
-
},] }
|
|
88
|
-
];
|
|
89
|
-
BreadcrumbNavigationComponent.ctorParameters = () => [
|
|
90
|
-
{ type: Router },
|
|
91
|
-
{ type: ActivatedRoute }
|
|
92
|
-
];
|
|
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 } from '@angular/core';
|
|
17
|
+
import { ActivatedRoute, NavigationEnd, PRIMARY_OUTLET, Router } from '@angular/router';
|
|
18
|
+
import { filter, map } from 'rxjs/operators';
|
|
19
|
+
import { Subscription } from 'rxjs';
|
|
20
|
+
export class BreadcrumbNavigationComponent {
|
|
21
|
+
constructor(router, route) {
|
|
22
|
+
this.router = router;
|
|
23
|
+
this.route = route;
|
|
24
|
+
this.breadcrumbs = [];
|
|
25
|
+
this.appTitle = 'Valtimo';
|
|
26
|
+
this.routerSub = Subscription.EMPTY;
|
|
27
|
+
}
|
|
28
|
+
ngOnInit() {
|
|
29
|
+
this.setBreadcrumbs(this.route);
|
|
30
|
+
this.routerSub = this.router.events
|
|
31
|
+
.pipe(filter(event => event instanceof NavigationEnd))
|
|
32
|
+
.pipe(map(() => this.route))
|
|
33
|
+
.pipe(map((route) => {
|
|
34
|
+
while (route.firstChild) {
|
|
35
|
+
route = route.firstChild;
|
|
36
|
+
}
|
|
37
|
+
return route;
|
|
38
|
+
}))
|
|
39
|
+
.pipe(filter(route => route.outlet === PRIMARY_OUTLET))
|
|
40
|
+
.subscribe(route => {
|
|
41
|
+
this.setBreadcrumbs(route);
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
setBreadcrumbs(route) {
|
|
45
|
+
while (route.firstChild) {
|
|
46
|
+
route = route.firstChild;
|
|
47
|
+
}
|
|
48
|
+
if (route.outlet === PRIMARY_OUTLET) {
|
|
49
|
+
const snapshot = route.snapshot;
|
|
50
|
+
const activeRoute = {
|
|
51
|
+
url: snapshot.url.join('/'),
|
|
52
|
+
path: snapshot.routeConfig.path,
|
|
53
|
+
label: snapshot.data['title'],
|
|
54
|
+
params: snapshot.params
|
|
55
|
+
};
|
|
56
|
+
this.generateBreadcrumbs(activeRoute);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
generateBreadcrumbs(activeBreadcrumb) {
|
|
60
|
+
this.breadcrumbs = [];
|
|
61
|
+
this.router.config.map(routerConfig => {
|
|
62
|
+
if (activeBreadcrumb.path.indexOf(routerConfig.path + '/') === 0
|
|
63
|
+
&& activeBreadcrumb.path !== routerConfig.path
|
|
64
|
+
&& routerConfig.path !== '') {
|
|
65
|
+
const parentRoute = {
|
|
66
|
+
url: routerConfig.path.replace(/:(.+?)\b/g, (_, p1) => activeBreadcrumb.params[p1]),
|
|
67
|
+
path: routerConfig.path,
|
|
68
|
+
label: routerConfig.data['title'],
|
|
69
|
+
params: activeBreadcrumb.params
|
|
70
|
+
};
|
|
71
|
+
const exist = this.breadcrumbs.findIndex(item => item.url === parentRoute.url);
|
|
72
|
+
if (exist === -1) {
|
|
73
|
+
this.breadcrumbs.push(parentRoute);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
ngOnDestroy() {
|
|
79
|
+
this.routerSub.unsubscribe();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
BreadcrumbNavigationComponent.decorators = [
|
|
83
|
+
{ type: Component, args: [{
|
|
84
|
+
selector: 'valtimo-breadcrumb-navigation',
|
|
85
|
+
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\n<nav aria-label=\"breadcrumb\" role=\"navigation\">\n <ol class=\"breadcrumb page-head-nav\">\n <li class=\"breadcrumb-item\">\n <a [routerLink]=\"['/']\">{{ appTitle }}</a>\n </li>\n <li class=\"breadcrumb-item\" *ngFor=\"let item of breadcrumbs\">\n <a [routerLink]=\"[item.url]\">{{ item.label | translate }}</a>\n </li>\n </ol>\n</nav>\n",
|
|
86
|
+
styles: [""]
|
|
87
|
+
},] }
|
|
88
|
+
];
|
|
89
|
+
BreadcrumbNavigationComponent.ctorParameters = () => [
|
|
90
|
+
{ type: Router },
|
|
91
|
+
{ type: ActivatedRoute }
|
|
92
|
+
];
|
|
93
93
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi1uYXZpZ2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vY29tcG9uZW50cy9zcmMvbGliL2JyZWFkY3J1bWItbmF2aWdhdGlvbi9icmVhZGNydW1iLW5hdmlnYXRpb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFDLGNBQWMsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3RGLE9BQU8sRUFBQyxNQUFNLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQU9sQyxNQUFNLE9BQU8sNkJBQTZCO0lBTXhDLFlBQ1UsTUFBYyxFQUNkLEtBQXFCO1FBRHJCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQU54QixnQkFBVyxHQUFlLEVBQUUsQ0FBQztRQUM3QixhQUFRLEdBQUcsU0FBUyxDQUFDO1FBQ3BCLGNBQVMsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDO0lBTXZDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07YUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssWUFBWSxhQUFhLENBQUMsQ0FBQzthQUNyRCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FB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ViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FbmQsIFBSSU1BUllfT1VUTEVULCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge2ZpbHRlciwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tYnJlYWRjcnVtYi1uYXZpZ2F0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2JyZWFkY3J1bWItbmF2aWdhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2JyZWFkY3J1bWItbmF2aWdhdGlvbi5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQnJlYWRjcnVtYk5hdmlnYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgcHVibGljIGJyZWFkY3J1bWJzOiBBcnJheTxhbnk+ID0gW107XG4gIHB1YmxpYyBhcHBUaXRsZSA9ICdWYWx0aW1vJztcbiAgcHJpdmF0ZSByb3V0ZXJTdWIgPSBTdWJzY3JpcHRpb24uRU1QVFk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxuICApIHtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc2V0QnJlYWRjcnVtYnModGhpcy5yb3V0ZSk7XG4gICAgdGhpcy5yb3V0ZXJTdWIgPSB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgIC5waXBlKGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKVxuICAgICAgLnBpcGUobWFwKCgpID0+IHRoaXMucm91dGUpKVxuICAgICAgLnBpcGUobWFwKChyb3V0ZSkgPT4ge1xuICAgICAgICB3aGlsZSAocm91dGUuZmlyc3RDaGlsZCkge1xuICAgICAgICAgIHJvdXRlID0gcm91dGUuZmlyc3RDaGlsZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcm91dGU7XG4gICAgICB9KSlcbiAgICAgIC5waXBlKGZpbHRlcihyb3V0ZSA9PiByb3V0ZS5vdXRsZXQgPT09IFBSSU1BUllfT1VUTEVUKSlcbiAgICAgIC5zdWJzY3JpYmUocm91dGUgPT4ge1xuICAgICAgICB0aGlzLnNldEJyZWFkY3J1bWJzKHJvdXRlKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRCcmVhZGNydW1icyhyb3V0ZTogQWN0aXZhdGVkUm91dGUpIHtcbiAgICB3aGlsZSAocm91dGUuZmlyc3RDaGlsZCkge1xuICAgICAgcm91dGUgPSByb3V0ZS5maXJzdENoaWxkO1xuICAgIH1cbiAgICBpZiAocm91dGUub3V0bGV0ID09PSBQUklNQVJZX09VVExFVCkge1xuICAgICAgY29uc3Qgc25hcHNob3QgPSByb3V0ZS5zbmFwc2hvdDtcbiAgICAgIGNvbnN0IGFjdGl2ZVJvdXRlID0ge1xuICAgICAgICB1cmw6IHNuYXBzaG90LnVybC5qb2luKCcvJyksXG4gICAgICAgIHBhdGg6IHNuYXBzaG90LnJvdXRlQ29uZmlnLnBhdGgsXG4gICAgICAgIGxhYmVsOiBzbmFwc2hvdC5kYXRhWyd0aXRsZSddLFxuICAgICAgICBwYXJhbXM6IHNuYXBzaG90LnBhcmFtc1xuICAgICAgfTtcbiAgICAgIHRoaXMuZ2VuZXJhdGVCcmVhZGNydW1icyhhY3RpdmVSb3V0ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUJyZWFkY3J1bWJzKGFjdGl2ZUJyZWFkY3J1bWI6IGFueSkge1xuICAgIHRoaXMuYnJlYWRjcnVtYnMgPSBbXTtcbiAgICB0aGlzLnJvdXRlci5jb25maWcubWFwKHJvdXRlckNvbmZpZyA9PiB7XG4gICAgICBpZiAoYWN0aXZlQnJlYWRjcnVtYi5wYXRoLmluZGV4T2Yocm91dGVyQ29uZmlnLnBhdGggKyAnLycpID09PSAwXG4gICAgICAgICYmIGFjdGl2ZUJyZWFkY3J1bWIucGF0aCAhPT0gcm91dGVyQ29uZmlnLnBhdGhcbiAgICAgICAgJiYgcm91dGVyQ29uZmlnLnBhdGggIT09ICcnXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgcGFyZW50Um91dGUgPSB7XG4gICAgICAgICAgdXJsOiByb3V0ZXJDb25maWcucGF0aC5yZXBsYWNlKC86KC4rPylcXGIvZywgKF8sIHAxKSA9PiBhY3RpdmVCcmVhZGNydW1iLnBhcmFtc1twMV0pLFxuICAgICAgICAgIHBhdGg6IHJvdXRlckNvbmZpZy5wYXRoLFxuICAgICAgICAgIGxhYmVsOiByb3V0ZXJDb25maWcuZGF0YVsndGl0bGUnXSxcbiAgICAgICAgICBwYXJhbXM6IGFjdGl2ZUJyZWFkY3J1bWIucGFyYW1zXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGV4aXN0ID0gdGhpcy5icmVhZGNydW1icy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLnVybCA9PT0gcGFyZW50Um91dGUudXJsKTtcbiAgICAgICAgaWYgKGV4aXN0ID09PSAtMSkge1xuICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYnMucHVzaChwYXJlbnRSb3V0ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMucm91dGVyU3ViLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxufVxuIl19
|