@bizdoc/core 1.14.13 → 1.14.16
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/assets/bizdoc-schema.json +146 -125
- package/esm2020/lib/admin/admin-dismiss.service.mjs +15 -9
- package/esm2020/lib/admin/core/color-picker.input.mjs +3 -3
- package/esm2020/lib/admin/form/workflow/node.component.mjs +63 -31
- package/esm2020/lib/admin/form/workflow/workflow.component.mjs +314 -166
- package/esm2020/lib/admin/positions/positions.component.mjs +6 -5
- package/esm2020/lib/admin/profiler/profiler.component.mjs +2 -2
- package/esm2020/lib/compose/dismiss.service.mjs +2 -2
- package/esm2020/lib/core/save-changes.dialog.mjs +18 -0
- package/esm2020/lib/core/slots/router.service.mjs +1 -1
- package/esm2020/lib/core/translations.mjs +2 -2
- package/esm2020/lib/shared.module.mjs +2 -2
- package/esm2020/public-api.mjs +2 -2
- package/fesm2015/bizdoc-core.mjs +432 -247
- package/fesm2015/bizdoc-core.mjs.map +1 -1
- package/fesm2020/bizdoc-core.mjs +429 -243
- package/fesm2020/bizdoc-core.mjs.map +1 -1
- package/lib/admin/admin-dismiss.service.d.ts +3 -3
- package/lib/admin/core/color-picker.input.d.ts +1 -1
- package/lib/admin/form/workflow/node.component.d.ts +8 -7
- package/lib/admin/form/workflow/workflow.component.d.ts +13 -12
- package/lib/admin/positions/positions.component.d.ts +1 -0
- package/lib/{compose → core}/save-changes.dialog.d.ts +0 -0
- package/lib/core/slots/router.service.d.ts +1 -1
- package/lib/shared.module.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -1
- package/esm2020/lib/compose/save-changes.dialog.mjs +0 -18
package/fesm2015/bizdoc-core.mjs
CHANGED
@@ -6,7 +6,7 @@ import { ComponentPortal, PortalModule, TemplatePortal } from '@angular/cdk/port
|
|
6
6
|
import { __awaiter, __decorate } from 'tslib';
|
7
7
|
import { trigger, state, style, transition, animate, query, stagger, animateChild, keyframes } from '@angular/animations';
|
8
8
|
import { ESCAPE, RIGHT_ARROW, LEFT_ARROW, ENTER, COMMA, UP_ARROW, DOWN_ARROW, SEMICOLON } from '@angular/cdk/keycodes';
|
9
|
-
import { Subject, Observable, of, fromEvent, forkJoin, interval, takeWhile, tap as tap$1, BehaviorSubject, filter as filter$1, debounceTime as debounceTime$1, takeUntil as takeUntil$1, from, merge, map as map$1,
|
9
|
+
import { Subject, Observable, of, fromEvent, forkJoin, interval, takeWhile, tap as tap$1, BehaviorSubject, filter as filter$1, debounceTime as debounceTime$1, takeUntil as takeUntil$1, from, merge, map as map$1, first as first$1, throwError, switchMap as switchMap$1, isObservable, EMPTY } from 'rxjs';
|
10
10
|
import { map, tap, filter, switchMap, takeUntil, shareReplay, debounceTime, take, first, catchError, startWith, finalize } from 'rxjs/operators';
|
11
11
|
import { HubConnectionBuilder, HubConnectionState } from '@microsoft/signalr';
|
12
12
|
import dayjs from 'dayjs';
|
@@ -132,8 +132,7 @@ import * as i9$5 from '@syncfusion/ej2-angular-spreadsheet';
|
|
132
132
|
import { Spreadsheet, isNumber, SpreadsheetModule, SelectionService as SelectionService$2, BasicModuleService, ClipboardService, CellFormatService, KeyboardNavigationService, KeyboardShortcutService, NumberFormatService } from '@syncfusion/ej2-angular-spreadsheet';
|
133
133
|
import * as i4 from '@ctrl/ngx-emoji-mart';
|
134
134
|
import { PickerModule } from '@ctrl/ngx-emoji-mart';
|
135
|
-
import { Diagram, UndoRedo, ConnectorBridging, ConnectorEditing, Snapping, SymbolPalette, BpmnDiagrams,
|
136
|
-
import { DiagramTools as DiagramTools$1, DiagramConstraints as DiagramConstraints$1, ConnectionPointOrigin, SnapConstraints, Diagram as Diagram$1, NodeConstraints as NodeConstraints$1, ComplexHierarchicalTreeService, DiagramModule, SymbolPaletteModule, ConnectorBridgingService, LineRoutingService, BpmnDiagramsService, LayoutAnimationService, UndoRedoService, SnappingService, ConnectorEditingService, LineDistributionService, ComplexHierarchicalTree, BpmnDiagrams as BpmnDiagrams$1, DataBinding, LineDistribution, ToolBase, SelectorConstraints as SelectorConstraints$1, ConnectorConstraints as ConnectorConstraints$1 } from '@syncfusion/ej2-angular-diagrams';
|
135
|
+
import { Diagram, UndoRedo, ConnectorBridging, ConnectorEditing, Snapping, SymbolPalette, BpmnDiagrams, PortVisibility, PortConstraints, DiagramConstraints, SelectorConstraints, NodeConstraints, ConnectorConstraints, DiagramTools, Connector, Node, ConnectionPointOrigin, SnapConstraints, ComplexHierarchicalTreeService, DiagramModule, SymbolPaletteModule, ConnectorBridgingService, LineRoutingService, BpmnDiagramsService, LayoutAnimationService, UndoRedoService, SnappingService, ConnectorEditingService, LineDistributionService, ComplexHierarchicalTree, DataBinding, LineDistribution, ToolBase } from '@syncfusion/ej2-angular-diagrams';
|
137
136
|
import * as i9$3 from '@syncfusion/ej2-angular-schedule';
|
138
137
|
import { Schedule, Day, WorkWeek, Month, MonthAgenda, Agenda, Year, ScheduleModule, ExcelExportService as ExcelExportService$2, DayService, WorkWeekService, MonthService, MonthAgendaService, ICalendarExportService, AgendaService, YearService } from '@syncfusion/ej2-angular-schedule';
|
139
138
|
import * as i10$1 from '@syncfusion/ej2-angular-kanban';
|
@@ -1315,7 +1314,7 @@ const STRINGS = {
|
|
1315
1314
|
Reassign: 'Reassign',
|
1316
1315
|
ReassignAll: 'Reassign all',
|
1317
1316
|
ShowAll: 'Show All',
|
1318
|
-
OutOfOfficeOn: 'You are set as <i>out of office</i>. Your messages are
|
1317
|
+
OutOfOfficeOn: 'You are set as <i>out of office</i>. Your messages are forwarded to <em>{0}</em>',
|
1319
1318
|
Dismiss: 'Dismiss',
|
1320
1319
|
ChangeOptions: 'Options',
|
1321
1320
|
Impersonating: 'You logged in on behalf of {0}',
|
@@ -13376,9 +13375,9 @@ class WorkflowNodeComponent {
|
|
13376
13375
|
this._fb = _fb;
|
13377
13376
|
this._pane = _pane;
|
13378
13377
|
this.change = new EventEmitter();
|
13379
|
-
this.
|
13380
|
-
action:
|
13381
|
-
case:
|
13378
|
+
this.connector = this._fb.group({
|
13379
|
+
action: null,
|
13380
|
+
case: null
|
13382
13381
|
});
|
13383
13382
|
this._elementDestroy = new Subject();
|
13384
13383
|
this.actions = _session.profile.actions;
|
@@ -13386,31 +13385,47 @@ class WorkflowNodeComponent {
|
|
13386
13385
|
ngOnInit() {
|
13387
13386
|
this._pane.dataChange.subscribe(d => {
|
13388
13387
|
this.nodes = d['nodes'];
|
13388
|
+
this.diagram = d['diagram'];
|
13389
13389
|
this.connectors = d['connectors'];
|
13390
13390
|
this.tool = null;
|
13391
13391
|
this._elementDestroy.next();
|
13392
|
+
this.argumentstemplate.clear();
|
13392
13393
|
if (this.connectors.length) {
|
13393
|
-
this.connectorInfo.valueChanges.pipe(takeUntil$1(this._elementDestroy)).subscribe(() => {
|
13394
|
-
this.connectors.forEach(c => {
|
13395
|
-
Object.assign(c.addInfo, this.connectorInfo.getRawValue());
|
13396
|
-
this.change.emit();
|
13397
|
-
});
|
13398
|
-
});
|
13399
13394
|
const connector = this.connectors[0];
|
13400
|
-
|
13401
|
-
|
13402
|
-
|
13403
|
-
|
13404
|
-
|
13405
|
-
|
13406
|
-
|
13407
|
-
case: this.connectors.length === 1 || this.connectors.every(c => c.addInfo.case === acase) ? acase : null
|
13408
|
-
});
|
13395
|
+
if (connector.addInfo) {
|
13396
|
+
const action = connector.addInfo['action'], acase = connector.addInfo['case'];
|
13397
|
+
this.connector.patchValue({
|
13398
|
+
action: this.connectors.length === 1 || this.connectors.every(c => c.addInfo && c.addInfo['action'] === action) ? action : null,
|
13399
|
+
case: this.connectors.length === 1 || this.connectors.every(c => c.addInfo && c.addInfo['case'] === acase) ? acase : null
|
13400
|
+
});
|
13401
|
+
}
|
13409
13402
|
this._pane.title = this._translate.get(this.connectors.length === 1 ? 'Connector' : 'Connectors', this.connectors.length);
|
13410
13403
|
this._pane.icon = 'link';
|
13404
|
+
this.connector.valueChanges.pipe(takeUntil$1(this._elementDestroy)).subscribe(v => {
|
13405
|
+
const content = v['case'] || v['action'];
|
13406
|
+
if (!connector.addInfo)
|
13407
|
+
connector.addInfo = this.connector.getRawValue();
|
13408
|
+
else
|
13409
|
+
Object.assign(connector.addInfo, this.connector.getRawValue());
|
13410
|
+
cleanup(connector.addInfo);
|
13411
|
+
if (connector.annotations.length) {
|
13412
|
+
connector.annotations[0].content = content;
|
13413
|
+
this.diagram.dataBind();
|
13414
|
+
}
|
13415
|
+
else
|
13416
|
+
this.diagram.addConnectorLabels(connector, [{
|
13417
|
+
style: {
|
13418
|
+
color: this._session.theme.dark ? 'white' : 'black',
|
13419
|
+
fill: 'transparent',
|
13420
|
+
opacity: .8,
|
13421
|
+
},
|
13422
|
+
content
|
13423
|
+
}]);
|
13424
|
+
this.change.emit();
|
13425
|
+
});
|
13426
|
+
this.argumentstemplate.createEmbeddedView(this.connectorargs);
|
13411
13427
|
}
|
13412
|
-
|
13413
|
-
if (this.nodes.length) {
|
13428
|
+
else {
|
13414
13429
|
const node = this.node = this.nodes[0], addInfo = node.addInfo;
|
13415
13430
|
if (addInfo && addInfo.nodeType) {
|
13416
13431
|
const nodeType = addInfo.nodeType;
|
@@ -13418,10 +13433,23 @@ class WorkflowNodeComponent {
|
|
13418
13433
|
this._pane.title = tool.title;
|
13419
13434
|
const annotationArg = tool.arguments.find(a => a.diagram);
|
13420
13435
|
function change(m) {
|
13421
|
-
if (annotationArg && m[annotationArg.name] !== null
|
13422
|
-
node.annotations
|
13436
|
+
if (annotationArg && m[annotationArg.name] !== null) {
|
13437
|
+
if (node.annotations.length) {
|
13438
|
+
node.annotations[0].content = m[annotationArg.name] || null;
|
13439
|
+
this.diagram.dataBind();
|
13440
|
+
}
|
13441
|
+
else
|
13442
|
+
this.diagram.addNodeLabels(node, [{
|
13443
|
+
style: {
|
13444
|
+
color: this._session.theme.dark ? 'white' : 'black',
|
13445
|
+
fill: 'transparent',
|
13446
|
+
opacity: .8,
|
13447
|
+
},
|
13448
|
+
content: m[annotationArg.name] || null
|
13449
|
+
}]);
|
13423
13450
|
}
|
13424
|
-
Object.assign(addInfo,
|
13451
|
+
Object.assign(addInfo, m);
|
13452
|
+
cleanup(addInfo);
|
13425
13453
|
this.change.emit();
|
13426
13454
|
}
|
13427
13455
|
if (tool.template) {
|
@@ -13454,8 +13482,8 @@ class WorkflowNodeComponent {
|
|
13454
13482
|
instance.form.patchValue(node.addInfo, { emitEvent: false });
|
13455
13483
|
return instance;
|
13456
13484
|
}
|
13457
|
-
connectorCaseChange(
|
13458
|
-
this.
|
13485
|
+
connectorCaseChange(evt) {
|
13486
|
+
this.connector.controls['case'].setValue(evt.value);
|
13459
13487
|
this.change.emit();
|
13460
13488
|
}
|
13461
13489
|
ngOnDestroy() {
|
@@ -13464,15 +13492,18 @@ class WorkflowNodeComponent {
|
|
13464
13492
|
}
|
13465
13493
|
}
|
13466
13494
|
WorkflowNodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: WorkflowNodeComponent, deps: [{ token: SessionService }, { token: BizDocComponentFactoryResolver }, { token: i0.ComponentFactoryResolver }, { token: i0.Injector }, { token: TranslateService }, { token: i1$5.FormBuilder }, { token: PaneRef }], target: i0.ɵɵFactoryTarget.Component });
|
13467
|
-
WorkflowNodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: WorkflowNodeComponent, selector: "ng-component", outputs: { change: "change" }, viewQueries: [{ propertyName: "argumentstemplate", first: true, predicate: ["arguments"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<ng-container #arguments>\r\n</ng-container>\r\n<
|
13495
|
+
WorkflowNodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: WorkflowNodeComponent, selector: "ng-component", outputs: { change: "change" }, viewQueries: [{ propertyName: "argumentstemplate", first: true, predicate: ["arguments"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "connectorargs", first: true, predicate: ["connectorargs"], descendants: true, static: true }], ngImport: i0, template: "<ng-container #arguments>\r\n</ng-container>\r\n<ng-template #connectorargs>\r\n <form [formGroup]=\"connector\" fxLayout=\"column\" autocomplete=\"off\">\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Action' | translate\" formControlName=\"action\">\r\n <mat-option *ngFor=\"let action of actions\" [value]=\"action.name\">{{action.title}}</mat-option>\r\n <mat-option>{{'None' | translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-button-toggle-group [value]=\"connector.controls['case'].value\" #acase=\"matButtonToggleGroup\" (change)=\"connectorCaseChange($event)\">\r\n <mat-button-toggle value=\"true\">{{'True' | translate}}</mat-button-toggle>\r\n <mat-button-toggle value=\"false\">{{'False' | translate}}</mat-button-toggle>\r\n <mat-button-toggle>{{'Case' | translate}}</mat-button-toggle>\r\n </mat-button-toggle-group>\r\n <mat-form-field [style.display]=\"connector.controls['case'].value==='true'||connector.controls['case'].value==='false'?'none':''\">\r\n <input matInput [placeholder]=\"'Case' | translate\" formControlName=\"case\" />\r\n </mat-form-field>\r\n </form>\r\n</ng-template>\r\n", styles: [":host{width:100%;padding:4px;display:block}\n"], components: [{ type: i1$4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i9$2.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }], directives: [{ type: i1$5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i23.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i1$5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9$2.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1$5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }], pipes: { "translate": TranslatePipe } });
|
13468
13496
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: WorkflowNodeComponent, decorators: [{
|
13469
13497
|
type: Component,
|
13470
|
-
args: [{ template: "<ng-container #arguments>\r\n</ng-container>\r\n<
|
13498
|
+
args: [{ template: "<ng-container #arguments>\r\n</ng-container>\r\n<ng-template #connectorargs>\r\n <form [formGroup]=\"connector\" fxLayout=\"column\" autocomplete=\"off\">\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Action' | translate\" formControlName=\"action\">\r\n <mat-option *ngFor=\"let action of actions\" [value]=\"action.name\">{{action.title}}</mat-option>\r\n <mat-option>{{'None' | translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-button-toggle-group [value]=\"connector.controls['case'].value\" #acase=\"matButtonToggleGroup\" (change)=\"connectorCaseChange($event)\">\r\n <mat-button-toggle value=\"true\">{{'True' | translate}}</mat-button-toggle>\r\n <mat-button-toggle value=\"false\">{{'False' | translate}}</mat-button-toggle>\r\n <mat-button-toggle>{{'Case' | translate}}</mat-button-toggle>\r\n </mat-button-toggle-group>\r\n <mat-form-field [style.display]=\"connector.controls['case'].value==='true'||connector.controls['case'].value==='false'?'none':''\">\r\n <input matInput [placeholder]=\"'Case' | translate\" formControlName=\"case\" />\r\n </mat-form-field>\r\n </form>\r\n</ng-template>\r\n", styles: [":host{width:100%;padding:4px;display:block}\n"] }]
|
13471
13499
|
}], ctorParameters: function () { return [{ type: SessionService }, { type: BizDocComponentFactoryResolver }, { type: i0.ComponentFactoryResolver }, { type: i0.Injector }, { type: TranslateService }, { type: i1$5.FormBuilder }, { type: PaneRef }]; }, propDecorators: { change: [{
|
13472
13500
|
type: Output
|
13473
13501
|
}], argumentstemplate: [{
|
13474
13502
|
type: ViewChild,
|
13475
13503
|
args: ['arguments', { static: true, read: ViewContainerRef }]
|
13504
|
+
}], connectorargs: [{
|
13505
|
+
type: ViewChild,
|
13506
|
+
args: ['connectorargs', { static: true }]
|
13476
13507
|
}] } });
|
13477
13508
|
|
13478
13509
|
class FormService {
|
@@ -13516,15 +13547,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
|
|
13516
13547
|
|
13517
13548
|
Diagram.Inject(UndoRedo, ConnectorBridging, ConnectorEditing, Snapping);
|
13518
13549
|
SymbolPalette.Inject(BpmnDiagrams);
|
13519
|
-
|
13520
|
-
|
13521
|
-
|
13522
|
-
|
13523
|
-
|
13524
|
-
|
13525
|
-
];
|
13526
|
-
return ports;
|
13527
|
-
}
|
13550
|
+
const ports = [
|
13551
|
+
{ id: 'port1', shape: 'Circle', offset: { x: 0, y: 0.5 }, visibility: PortVisibility.Connect | PortVisibility.Hover, constraints: PortConstraints.Default | PortConstraints.Draw },
|
13552
|
+
{ id: 'port2', shape: 'Circle', offset: { x: 0.5, y: 1 }, visibility: PortVisibility.Connect | PortVisibility.Hover, constraints: PortConstraints.Default | PortConstraints.Draw },
|
13553
|
+
{ id: 'port3', shape: 'Circle', offset: { x: 1, y: 0.5 }, visibility: PortVisibility.Connect | PortVisibility.Hover, constraints: PortConstraints.Default | PortConstraints.Draw },
|
13554
|
+
{ id: 'port4', shape: 'Circle', offset: { x: 0.5, y: 0 }, visibility: PortVisibility.Connect | PortVisibility.Hover, constraints: PortConstraints.Default | PortConstraints.Draw }
|
13555
|
+
];
|
13528
13556
|
function showPaletteIcon() {
|
13529
13557
|
const paletteSpace = document.getElementById('palette-space');
|
13530
13558
|
const isMobile = window.matchMedia('(max-width:550px)').matches;
|
@@ -13546,26 +13574,6 @@ function paletteIconClick() {
|
|
13546
13574
|
}
|
13547
13575
|
}
|
13548
13576
|
}
|
13549
|
-
//Defines the tool
|
13550
|
-
class DrawTool extends ConnectorDrawingTool {
|
13551
|
-
constructor(diagram, segments) {
|
13552
|
-
super(diagram.commandHandler, 'ConnectorSourceEnd', null);
|
13553
|
-
this.diagram = diagram;
|
13554
|
-
this.segments = segments;
|
13555
|
-
}
|
13556
|
-
mouseMove(args) {
|
13557
|
-
if (this.diagram.selectedItems.nodes.length) {
|
13558
|
-
this.diagram.drawingObject = {
|
13559
|
-
type: this.segments || 'Bezier',
|
13560
|
-
sourceID: this.diagram.selectedItems.nodes[0].id
|
13561
|
-
};
|
13562
|
-
this.inAction = true;
|
13563
|
-
}
|
13564
|
-
const ok = super.mouseMove(args);
|
13565
|
-
return ok;
|
13566
|
-
}
|
13567
|
-
}
|
13568
|
-
const LINK_PATH = 'M346.7,714.6l368.1-368.1c17.9-17.9,17.9-47.1,0-64.9c-17.9-17.9-47.1-17.9-64.9,0l-368,368c-17.9,17.9-17.9,47.1,0,64.9C299.6,732.5,328.9,732.5,346.7,714.6z M468.2,651c6.4,9,7.6,18.5,7.6,23.8c0,6.3-1.5,18.6-11.8,28.9L271,896.5c-10.3,10.3-22.5,11.8-28.9,11.8c-6.3,0-18.6-1.5-28.9-11.8L103.5,786.8c-10.3-10.3-11.8-22.5-11.8-28.9c0-6.4,1.5-18.6,11.8-28.9l192.9-192.9c10.3-10.3,22.5-11.8,28.9-11.8c4.5,0,11.8,0.8,19.3,4.8l58.6-58.6c-48-39.6-119.6-36.9-164.5,7.9L45.7,671.3c-47.7,47.7-47.7,125.5,0,173.2l109.7,109.7c47.7,47.7,125.5,47.7,173.2,0l192.9-192.9c46-46,47.6-120.4,4.6-168.4L468.2,651z M954.2,155.5L844.5,45.8C796.9-1.9,719-1.9,671.3,45.8L478.4,238.7c-44.8,44.8-47.5,116.5-7.9,164.5l58.6-58.6c-4-7.6-4.8-14.9-4.8-19.3c0-6.3,1.5-18.6,11.8-28.9l192.9-192.9c10.3-10.3,22.5-11.8,28.9-11.8c6.3,0,18.6,1.5,28.9,11.8l109.7,109.7c10.3,10.3,11.8,22.5,11.8,28.9c0,6.3-1.5,18.6-11.8,28.9L703.7,464c-10.3,10.3-22.5,11.8-28.9,11.8c-5.3,0-14.8-1.1-23.8-7.6l-58,58c48,43,122.3,41.5,168.4-4.6l192.9-192.9C1001.9,281.1,1001.9,203.1,954.2,155.5z';
|
13569
13577
|
/** workflow component*/
|
13570
13578
|
class WorkflowComponent {
|
13571
13579
|
/** workflow ctor */
|
@@ -13576,7 +13584,7 @@ class WorkflowComponent {
|
|
13576
13584
|
this._router = _router;
|
13577
13585
|
this._session = _session;
|
13578
13586
|
this._translate = _translate;
|
13579
|
-
this.
|
13587
|
+
this.fontSizes = [9, 11, 12, 13, 15, 21, 31, 41];
|
13580
13588
|
this.connectorType = 'Bezier';
|
13581
13589
|
this.alignment = 'Center';
|
13582
13590
|
this.fontSize = 12;
|
@@ -13584,71 +13592,53 @@ class WorkflowComponent {
|
|
13584
13592
|
this.dirty = false;
|
13585
13593
|
this.palettes = [];
|
13586
13594
|
this.diagramConstraints = DiagramConstraints.Default | DiagramConstraints.Bridging | DiagramConstraints.UserInteraction | DiagramConstraints.Zoom;
|
13587
|
-
this.diagramTool = DiagramTools.Default;
|
13588
|
-
//Defines the user handle collection for nodes in diagram
|
13589
|
-
this._userHandles = [
|
13590
|
-
{
|
13591
|
-
name: 'connect',
|
13592
|
-
pathData: LINK_PATH,
|
13593
|
-
visible: true,
|
13594
|
-
offset: 0,
|
13595
|
-
side: 'Right',
|
13596
|
-
displacement: 20,
|
13597
|
-
margin: { top: 0, bottom: 0, left: 0, right: 0 }
|
13598
|
-
}
|
13599
|
-
];
|
13600
13595
|
//SymbolPalette Properties
|
13601
13596
|
this.symbolMargin = { left: 10, right: 10, top: 10, bottom: 10 };
|
13602
|
-
this.snapSettings = {
|
13603
|
-
|
13597
|
+
this.snapSettings = {
|
13598
|
+
snapLineColor: this._session.getAccent(100)
|
13599
|
+
};
|
13600
|
+
this.selectedItems = {
|
13601
|
+
constraints: SelectorConstraints.All & ~SelectorConstraints.Rotate,
|
13602
|
+
};
|
13604
13603
|
this.scrollSettings = {
|
13605
13604
|
minZoom: .5,
|
13606
|
-
maxZoom: 2.5
|
13607
|
-
};
|
13608
|
-
this._rulerColor = this._session.getAccent(100);
|
13609
|
-
this.rulerSettings = {
|
13610
|
-
horizontalRuler: { markerColor: this._rulerColor },
|
13611
|
-
verticalRuler: { markerColor: this._rulerColor }
|
13605
|
+
maxZoom: 2.5,
|
13612
13606
|
};
|
13607
|
+
this.rulerSettings = {};
|
13613
13608
|
this._destroy = new Subject();
|
13614
|
-
this.
|
13615
|
-
|
13616
|
-
|
13617
|
-
|
13618
|
-
|
13619
|
-
|
13620
|
-
|
13621
|
-
|
13622
|
-
|
13623
|
-
|
13624
|
-
|
13625
|
-
|
13626
|
-
|
13627
|
-
|
13628
|
-
|
13629
|
-
|
13630
|
-
obj.width = 145;
|
13631
|
-
}
|
13632
|
-
else {
|
13633
|
-
const ratio = 100 / obj.width;
|
13634
|
-
obj.width = 100;
|
13635
|
-
obj.height *= ratio;
|
13609
|
+
this._nodedestroy = new Subject();
|
13610
|
+
this.nodeDefaults = (obj) => {
|
13611
|
+
switch (obj.shape.type) {
|
13612
|
+
case 'SwimLane':
|
13613
|
+
break;
|
13614
|
+
case 'Text':
|
13615
|
+
if (obj.id !== 'version')
|
13616
|
+
obj.constraints = NodeConstraints.Default & ~NodeConstraints.InConnect & ~NodeConstraints.OutConnect;
|
13617
|
+
break;
|
13618
|
+
default:
|
13619
|
+
if (obj.addInfo && obj.addInfo['nodeType']) {
|
13620
|
+
obj.constraints = NodeConstraints.Default | NodeConstraints.AspectRatio;
|
13621
|
+
obj.style.strokeColor = this._session.theme.dark ? 'white' : 'black';
|
13622
|
+
obj.ports = ports;
|
13623
|
+
}
|
13624
|
+
break;
|
13636
13625
|
}
|
13637
|
-
obj.constraints = NodeConstraints.Default | NodeConstraints.AspectRatio;
|
13638
|
-
obj.ports = getPorts$1();
|
13639
13626
|
return obj;
|
13640
13627
|
};
|
13641
13628
|
this.connDefaults = (obj) => {
|
13642
|
-
obj.constraints = ConnectorConstraints.Default | ConnectorConstraints.Bridging
|
13629
|
+
obj.constraints = ConnectorConstraints.Default | ConnectorConstraints.Bridging;
|
13643
13630
|
obj.style.strokeColor = this._session.theme.dark ? 'white' : 'black';
|
13631
|
+
if (!obj.type)
|
13632
|
+
obj.type = this.connectorType;
|
13633
|
+
return obj;
|
13644
13634
|
};
|
13635
|
+
this._tools = localStorage.getItem('diagram_tools') === '1';
|
13645
13636
|
this._palettes();
|
13646
13637
|
}
|
13647
|
-
|
13648
|
-
|
13649
|
-
|
13650
|
-
|
13651
|
-
return tool;
|
13638
|
+
get tools() { return this._tools; }
|
13639
|
+
set tools(val) {
|
13640
|
+
localStorage.setItem('diagram_tools', val ? '1' : '0');
|
13641
|
+
this._tools = val;
|
13652
13642
|
}
|
13653
13643
|
ngAfterViewInit() {
|
13654
13644
|
}
|
@@ -13656,11 +13646,15 @@ class WorkflowComponent {
|
|
13656
13646
|
this.symbolPalette = new SymbolPalette({
|
13657
13647
|
expandMode: 'Multiple',
|
13658
13648
|
palettes: this.palettes,
|
13659
|
-
width: "100%",
|
13660
|
-
|
13649
|
+
width: "100%",
|
13650
|
+
height: "100%",
|
13651
|
+
enableRtl: false,
|
13652
|
+
enableAnimation: false,
|
13653
|
+
symbolHeight: 80,
|
13654
|
+
symbolWidth: 80,
|
13661
13655
|
symbolMargin: this.symbolMargin,
|
13662
13656
|
getSymbolInfo: this.getSymbolInfo.bind(this),
|
13663
|
-
getNodeDefaults: this.getSymbolDefaults.bind(this)
|
13657
|
+
getNodeDefaults: this.getSymbolDefaults.bind(this),
|
13664
13658
|
});
|
13665
13659
|
this.symbolPalette.appendTo(this.symbolPaletteEl.nativeElement);
|
13666
13660
|
this.diagram = new Diagram({
|
@@ -13668,15 +13662,13 @@ class WorkflowComponent {
|
|
13668
13662
|
snapSettings: this.snapSettings,
|
13669
13663
|
getConnectorDefaults: this.connDefaults.bind(this),
|
13670
13664
|
constraints: this.diagramConstraints,
|
13671
|
-
tool: this.diagramTool,
|
13672
13665
|
getNodeDefaults: this.nodeDefaults.bind(this),
|
13673
|
-
getCustomTool: this.getTool.bind(this),
|
13674
13666
|
scrollSettings: this.scrollSettings,
|
13675
13667
|
selectedItems: this.selectedItems,
|
13676
13668
|
rulerSettings: this.rulerSettings,
|
13677
13669
|
dragEnter: this.dragEnter.bind(this),
|
13678
13670
|
connectionChange: this.change.bind(this),
|
13679
|
-
collectionChange: this.
|
13671
|
+
collectionChange: this.collectionChange.bind(this),
|
13680
13672
|
propertyChange: this.propertyChange.bind(this),
|
13681
13673
|
selectionChange: this.selectionChange.bind(this),
|
13682
13674
|
}, this.diagramEl.nativeElement);
|
@@ -13697,7 +13689,6 @@ class WorkflowComponent {
|
|
13697
13689
|
this.diagram.fitToPage();
|
13698
13690
|
this.dirty = false;
|
13699
13691
|
});
|
13700
|
-
this._pane.resized.pipe(takeUntil(this._destroy)).subscribe(() => this.diagram.refresh());
|
13701
13692
|
}
|
13702
13693
|
_palettes() {
|
13703
13694
|
this._session.profile.nodes.forEach(n => {
|
@@ -13708,6 +13699,8 @@ class WorkflowComponent {
|
|
13708
13699
|
nodeType: n.name,
|
13709
13700
|
title: n.title
|
13710
13701
|
},
|
13702
|
+
width: 145,
|
13703
|
+
height: 145,
|
13711
13704
|
};
|
13712
13705
|
node.node = n.name;
|
13713
13706
|
let palette = this.palettes.find(p => p.title === (n.palette || ''));
|
@@ -13717,8 +13710,131 @@ class WorkflowComponent {
|
|
13717
13710
|
}
|
13718
13711
|
palette.symbols.push(node);
|
13719
13712
|
});
|
13720
|
-
|
13721
|
-
|
13713
|
+
this.palettes.push({
|
13714
|
+
id: 'design',
|
13715
|
+
title: this._translate.get('Design'),
|
13716
|
+
symbols: [{
|
13717
|
+
id: 'Link22',
|
13718
|
+
type: 'Straight',
|
13719
|
+
sourcePoint: { x: 0, y: 0 },
|
13720
|
+
targetPoint: { x: 60, y: 60 },
|
13721
|
+
targetDecorator: {
|
13722
|
+
shape: 'Arrow',
|
13723
|
+
style: { strokeColor: '#757575', fill: '#757575' },
|
13724
|
+
},
|
13725
|
+
style: {
|
13726
|
+
strokeWidth: 1,
|
13727
|
+
strokeDashArray: '4 4',
|
13728
|
+
strokeColor: '#757575',
|
13729
|
+
}
|
13730
|
+
},
|
13731
|
+
{
|
13732
|
+
id: 'text', shape: { type: 'Text', content: 'T' },
|
13733
|
+
style: {
|
13734
|
+
fill: 'transparent'
|
13735
|
+
},
|
13736
|
+
constraints: NodeConstraints.Default & ~NodeConstraints.InConnect & ~NodeConstraints.OutConnect,
|
13737
|
+
addInfo: { title: this._translate.get('Text') }
|
13738
|
+
}]
|
13739
|
+
});
|
13740
|
+
const color = MATERIAL_PALETTES['grey'][200];
|
13741
|
+
this.palettes.push({
|
13742
|
+
id: 'swimlaneShapes',
|
13743
|
+
expanded: true,
|
13744
|
+
title: this._translate.get('Swimlane Shapes'),
|
13745
|
+
symbols: [
|
13746
|
+
{
|
13747
|
+
id: 'swimlane',
|
13748
|
+
addInfo: {
|
13749
|
+
title: this._translate.get('Horizontal')
|
13750
|
+
},
|
13751
|
+
shape: {
|
13752
|
+
header: {
|
13753
|
+
annotation: { content: 'Plan' }
|
13754
|
+
},
|
13755
|
+
type: 'SwimLane',
|
13756
|
+
lanes: [
|
13757
|
+
{
|
13758
|
+
id: 'lane1',
|
13759
|
+
header: {
|
13760
|
+
annotation: { content: 'Lane' },
|
13761
|
+
style: { fill: color }
|
13762
|
+
}
|
13763
|
+
}
|
13764
|
+
],
|
13765
|
+
orientation: 'Horizontal',
|
13766
|
+
isLane: true
|
13767
|
+
},
|
13768
|
+
height: 60,
|
13769
|
+
width: 140,
|
13770
|
+
offsetX: 70,
|
13771
|
+
offsetY: 30,
|
13772
|
+
}, {
|
13773
|
+
id: 'vswimlane',
|
13774
|
+
addInfo: {
|
13775
|
+
title: this._translate.get('Vertical')
|
13776
|
+
},
|
13777
|
+
shape: {
|
13778
|
+
type: 'SwimLane',
|
13779
|
+
header: {
|
13780
|
+
annotation: { content: 'Plan' }
|
13781
|
+
},
|
13782
|
+
lanes: [
|
13783
|
+
{
|
13784
|
+
id: 'lane1',
|
13785
|
+
header: {
|
13786
|
+
annotation: { content: 'Lane' },
|
13787
|
+
style: { fill: color }
|
13788
|
+
}
|
13789
|
+
}
|
13790
|
+
],
|
13791
|
+
orientation: 'Vertical', isLane: true
|
13792
|
+
},
|
13793
|
+
height: 140,
|
13794
|
+
width: 60,
|
13795
|
+
offsetX: 70,
|
13796
|
+
offsetY: 30,
|
13797
|
+
}, {
|
13798
|
+
id: 'vphase',
|
13799
|
+
addInfo: {
|
13800
|
+
title: this._translate.get('Phase')
|
13801
|
+
},
|
13802
|
+
shape: {
|
13803
|
+
type: 'SwimLane',
|
13804
|
+
phases: [
|
13805
|
+
{
|
13806
|
+
style: { strokeWidth: 1, strokeDashArray: '3,3', strokeColor: color },
|
13807
|
+
header: {
|
13808
|
+
annotation: { text: 'Phase' }
|
13809
|
+
}
|
13810
|
+
}
|
13811
|
+
],
|
13812
|
+
orientation: 'Vertical', isPhase: true
|
13813
|
+
},
|
13814
|
+
height: 60,
|
13815
|
+
width: 140,
|
13816
|
+
style: { strokeColor: color }
|
13817
|
+
}, {
|
13818
|
+
id: 'hphase',
|
13819
|
+
addInfo: {
|
13820
|
+
title: this._translate.get('Phase')
|
13821
|
+
},
|
13822
|
+
shape: {
|
13823
|
+
type: 'SwimLane',
|
13824
|
+
phases: [{
|
13825
|
+
style: { strokeWidth: 1, strokeDashArray: '3,3', strokeColor: color },
|
13826
|
+
header: {
|
13827
|
+
annotation: { text: 'Phase' }
|
13828
|
+
}
|
13829
|
+
}],
|
13830
|
+
orientation: 'Horizontal', isPhase: true
|
13831
|
+
},
|
13832
|
+
height: 60,
|
13833
|
+
width: 140,
|
13834
|
+
style: { strokeColor: color }
|
13835
|
+
}
|
13836
|
+
]
|
13837
|
+
});
|
13722
13838
|
}
|
13723
13839
|
_versionNode(version) {
|
13724
13840
|
return {
|
@@ -13739,15 +13855,14 @@ class WorkflowComponent {
|
|
13739
13855
|
};
|
13740
13856
|
}
|
13741
13857
|
getSymbolInfo(symbol) {
|
13742
|
-
return {
|
13858
|
+
return symbol.addInfo ? {
|
13743
13859
|
fit: true,
|
13744
13860
|
tooltip: symbol.addInfo.title,
|
13745
13861
|
description: { text: symbol.addInfo.title, overflow: 'Wrap', wrap: 'WrapWithOverflow' }
|
13746
|
-
};
|
13862
|
+
} : null;
|
13747
13863
|
}
|
13748
13864
|
getSymbolDefaults(symbol) {
|
13749
13865
|
symbol.width = symbol.height = 40;
|
13750
|
-
symbol.constraints = NodeConstraints.Default | NodeConstraints.AspectRatio;
|
13751
13866
|
}
|
13752
13867
|
pan() {
|
13753
13868
|
this.diagram.constraints = this.diagram.constraints | DiagramConstraints.Pan;
|
@@ -13758,53 +13873,45 @@ class WorkflowComponent {
|
|
13758
13873
|
this.diagram.tool = DiagramTools.Default;
|
13759
13874
|
}
|
13760
13875
|
selectionChange(evt) {
|
13761
|
-
const {
|
13762
|
-
if (
|
13763
|
-
|
13764
|
-
|
13765
|
-
this.diagram.selectedItems.userHandles = this._userHandles;
|
13766
|
-
}
|
13767
|
-
else
|
13768
|
-
this.diagram.selectedItems.constraints = SelectorConstraints.All ^ SelectorConstraints.UserHandle;
|
13769
|
-
if (connectors.length) {
|
13770
|
-
const connector = connectors[0];
|
13771
|
-
connectors.forEach(c => {
|
13772
|
-
if (!c.addInfo)
|
13773
|
-
c.addInfo = {};
|
13774
|
-
});
|
13775
|
-
const type = connector.type;
|
13776
|
-
this.connectorType = connectors.length === 1 || connectors.every(c => c.type === type) ? type : null;
|
13777
|
-
if (connector.annotations.length)
|
13778
|
-
this.fontSize = connector.annotations[0].style.fontSize;
|
13779
|
-
this.connectorType = connectors.length === 1 || connectors.every(c => c.type === type) ? type : null;
|
13780
|
-
}
|
13781
|
-
if (nodes.length) {
|
13782
|
-
const node = nodes[0], addInfo = node.addInfo;
|
13783
|
-
if (addInfo && addInfo.nodeType) {
|
13784
|
-
if (node.annotations.length)
|
13785
|
-
this.fontSize = node.annotations[0].style.fontSize;
|
13786
|
-
}
|
13787
|
-
}
|
13788
|
-
this._router.navigate(WorkflowNodeComponent, {
|
13789
|
-
state: {
|
13790
|
-
nodes, connectors
|
13791
|
-
},
|
13792
|
-
policy: OpenPolicy.Tab,
|
13793
|
-
expandable: false,
|
13794
|
-
group: ''
|
13795
|
-
}).then(p => {
|
13796
|
-
p.instance.change.
|
13797
|
-
pipe(takeUntil(this._destroy)).subscribe(() => {
|
13798
|
-
this.dirty = true;
|
13799
|
-
this.diagram.dataBind();
|
13800
|
-
});
|
13801
|
-
});
|
13876
|
+
const { newValue, state } = evt;
|
13877
|
+
if (state !== 'Changing' || !newValue.length) {
|
13878
|
+
this._nodedestroy.next();
|
13879
|
+
return;
|
13802
13880
|
}
|
13803
|
-
|
13804
|
-
|
13881
|
+
const connectors = newValue.filter(n => n instanceof Connector).map(n => n);
|
13882
|
+
if (connectors.length) {
|
13883
|
+
const connector = connectors[0], type = connector.type;
|
13884
|
+
this.connectorType = connectors.length === 1 ||
|
13885
|
+
connectors.every(c => c.type === type) ? type : null;
|
13886
|
+
if (connector.annotations.length && connector.annotations[0].style)
|
13887
|
+
this.fontSize = connector.annotations[0].style.fontSize;
|
13888
|
+
this.connectorType = connectors.length === 1 ||
|
13889
|
+
connectors.every(c => c.type === type) ? type : null;
|
13890
|
+
}
|
13891
|
+
const nodes = newValue.filter(n => n instanceof Node);
|
13892
|
+
if (nodes.length) {
|
13893
|
+
const node = nodes[0], addInfo = node.addInfo;
|
13894
|
+
if (!addInfo || !addInfo['nodeType'])
|
13895
|
+
return;
|
13896
|
+
if (node.annotations.length && node.annotations[0].style)
|
13897
|
+
this.fontSize = node.annotations[0].style.fontSize;
|
13898
|
+
}
|
13899
|
+
this._router.navigate(WorkflowNodeComponent, {
|
13900
|
+
state: {
|
13901
|
+
diagram: this.diagram,
|
13902
|
+
nodes,
|
13903
|
+
connectors
|
13904
|
+
},
|
13905
|
+
policy: OpenPolicy.Tab,
|
13906
|
+
expandable: false,
|
13907
|
+
group: ''
|
13908
|
+
}).then(p => {
|
13909
|
+
p.instance.change.pipe(takeUntil(this._nodedestroy)).subscribe(() => this.change());
|
13910
|
+
this._nodedestroy.pipe(first$1()).subscribe(() => p.close());
|
13911
|
+
});
|
13805
13912
|
}
|
13806
13913
|
align(value) {
|
13807
|
-
|
13914
|
+
this.diagram.selectedItems.nodes.forEach(n => {
|
13808
13915
|
n.annotations.length && Object.assign(n.annotations[0], {
|
13809
13916
|
offset: {
|
13810
13917
|
x: value === 'Right' ? 1 : value === 'Left' ? 0 : .5,
|
@@ -13813,21 +13920,51 @@ class WorkflowComponent {
|
|
13813
13920
|
verticalAlignment: value === 'Top' ? 'Bottom' : value === 'Bottom' ? 'Top' : 'Center',
|
13814
13921
|
horizontalAlignment: value === 'Right' ? 'Left' : value === 'Left' ? 'Right' : 'Center'
|
13815
13922
|
});
|
13816
|
-
}
|
13817
|
-
this.diagram.selectedItems.
|
13818
|
-
|
13923
|
+
});
|
13924
|
+
this.diagram.selectedItems.connectors.forEach(c => c.annotations.forEach(a => Object.assign(a, {
|
13925
|
+
verticalAlignment: value === 'Top' ? 'Bottom' : value === 'Bottom' ? 'Top' : 'Center',
|
13926
|
+
horizontalAlignment: value === 'Left' ? 'Left' : value === 'Right' ? 'Right' : 'Center',
|
13927
|
+
// displacement: {
|
13928
|
+
// x: value === 'Right' ? 10 : value === 'Left' ? -10 : 0,
|
13929
|
+
// y: value === 'Top' ? -10 : value === 'Bottom' ? 10 : 0
|
13930
|
+
// }
|
13931
|
+
})));
|
13819
13932
|
this.alignment = value;
|
13820
13933
|
this.dirty = true;
|
13821
13934
|
}
|
13822
13935
|
dragEnter(args) {
|
13823
|
-
|
13824
|
-
|
13825
|
-
|
13826
|
-
|
13827
|
-
|
13828
|
-
|
13829
|
-
|
13830
|
-
|
13936
|
+
if (args.element instanceof Node) {
|
13937
|
+
switch (args.element.shape.type) {
|
13938
|
+
case 'SwimLane':
|
13939
|
+
{
|
13940
|
+
const shape = args.element.shape;
|
13941
|
+
switch (shape.orientation) {
|
13942
|
+
case 'Horizontal':
|
13943
|
+
shape.lanes[0].width = 400;
|
13944
|
+
break;
|
13945
|
+
case 'Vertical':
|
13946
|
+
shape.lanes[0].height = 400;
|
13947
|
+
break;
|
13948
|
+
}
|
13949
|
+
break;
|
13950
|
+
}
|
13951
|
+
case 'Text':
|
13952
|
+
//(args.element.style as TextStyleModel).fontSize = 20;
|
13953
|
+
break;
|
13954
|
+
default:
|
13955
|
+
{
|
13956
|
+
const { width, height } = args.element;
|
13957
|
+
args.element.width = 100;
|
13958
|
+
args.element.height *= 100 / width;
|
13959
|
+
args.element.offsetX += (args.element.width - width) / 2;
|
13960
|
+
args.element.offsetY += (args.element.height - height) / 2;
|
13961
|
+
args.element.style = {
|
13962
|
+
fill: 'transparent',
|
13963
|
+
strokeColor: this._session.theme.dark ? 'white' : 'black',
|
13964
|
+
strokeWidth: 1
|
13965
|
+
};
|
13966
|
+
}
|
13967
|
+
}
|
13831
13968
|
}
|
13832
13969
|
}
|
13833
13970
|
propertyChange(e) {
|
@@ -13837,14 +13974,9 @@ class WorkflowComponent {
|
|
13837
13974
|
change() {
|
13838
13975
|
this.dirty = true;
|
13839
13976
|
}
|
13840
|
-
|
13841
|
-
this.
|
13842
|
-
|
13843
|
-
type: 'Text',
|
13844
|
-
},
|
13845
|
-
constraints: NodeConstraints.Default & ~NodeConstraints.InConnect & ~NodeConstraints.OutConnect
|
13846
|
-
};
|
13847
|
-
this.diagram.tool = DiagramTools.DrawOnce;
|
13977
|
+
collectionChange() {
|
13978
|
+
this._router.collapse();
|
13979
|
+
this.dirty = true;
|
13848
13980
|
}
|
13849
13981
|
/**
|
13850
13982
|
* Ctrl-s save
|
@@ -13870,8 +14002,57 @@ class WorkflowComponent {
|
|
13870
14002
|
this.connectorType = type;
|
13871
14003
|
this.dirty = true;
|
13872
14004
|
}
|
13873
|
-
|
13874
|
-
|
14005
|
+
boldChange() {
|
14006
|
+
var _a, _b;
|
14007
|
+
const val = !((_b = (_a = this.diagram.selectedItems.nodes[0].annotations[0]) === null || _a === void 0 ? void 0 : _a.style) === null || _b === void 0 ? void 0 : _b.bold);
|
14008
|
+
function change(node) {
|
14009
|
+
if (node.shape.type === 'Text')
|
14010
|
+
node.style.bold = val;
|
14011
|
+
else
|
14012
|
+
node.annotations.forEach(a => {
|
14013
|
+
if (!a.style)
|
14014
|
+
a.style = { bold: val };
|
14015
|
+
else
|
14016
|
+
a.style.bold = val;
|
14017
|
+
});
|
14018
|
+
}
|
14019
|
+
this.diagram.selectedItems.nodes.forEach(change);
|
14020
|
+
this.diagram.selectedItems.connectors.forEach(change);
|
14021
|
+
this.diagram.dataBind();
|
14022
|
+
}
|
14023
|
+
italicChange() {
|
14024
|
+
var _a, _b;
|
14025
|
+
const val = !((_b = (_a = this.diagram.selectedItems.nodes[0].annotations[0]) === null || _a === void 0 ? void 0 : _a.style) === null || _b === void 0 ? void 0 : _b.italic);
|
14026
|
+
function change(node) {
|
14027
|
+
if (node.shape.type === 'Text')
|
14028
|
+
node.style.italic = val;
|
14029
|
+
else
|
14030
|
+
node.annotations.forEach(a => {
|
14031
|
+
if (!a.style)
|
14032
|
+
a.style = { italic: val };
|
14033
|
+
else
|
14034
|
+
a.style.italic = val;
|
14035
|
+
});
|
14036
|
+
}
|
14037
|
+
this.diagram.selectedItems.nodes.forEach(change);
|
14038
|
+
this.diagram.selectedItems.connectors.forEach(change);
|
14039
|
+
this.diagram.dataBind();
|
14040
|
+
}
|
14041
|
+
fontSizeChange(val) {
|
14042
|
+
function change(node) {
|
14043
|
+
var _a;
|
14044
|
+
if (node.shape.type === 'Text')
|
14045
|
+
node.style.fontSize = val;
|
14046
|
+
else
|
14047
|
+
(_a = node.annotations) === null || _a === void 0 ? void 0 : _a.forEach(a => {
|
14048
|
+
if (!a.style)
|
14049
|
+
a.style = { fontSize: val };
|
14050
|
+
else
|
14051
|
+
a.style.fontSize = val;
|
14052
|
+
});
|
14053
|
+
}
|
14054
|
+
this.diagram.selectedItems.nodes.forEach(change);
|
14055
|
+
this.diagram.selectedItems.connectors.forEach(change);
|
13875
14056
|
this.diagram.dataBind();
|
13876
14057
|
}
|
13877
14058
|
strokeChange(val) {
|
@@ -13887,11 +14068,7 @@ class WorkflowComponent {
|
|
13887
14068
|
this.diagram.serializationSettings = { preventDefaults: true };
|
13888
14069
|
const obj = JSON.parse(this.diagram.saveDiagram());
|
13889
14070
|
this._form.workflow.connectors = obj.connectors;
|
13890
|
-
this._form.workflow.nodes = obj.nodes.filter(n => n.id !== 'version')
|
13891
|
-
n.offsetX = Math.round(n.offsetX);
|
13892
|
-
n.offsetY = Math.round(n.offsetY);
|
13893
|
-
return n;
|
13894
|
-
});
|
14071
|
+
this._form.workflow.nodes = obj.nodes.filter(n => n.id !== 'version');
|
13895
14072
|
this.saving = true;
|
13896
14073
|
return this._service.save(this._form).toPromise().then(v => {
|
13897
14074
|
this.ps.toast('ChangesSaved');
|
@@ -13915,15 +14092,17 @@ class WorkflowComponent {
|
|
13915
14092
|
(_b = this.diagram) === null || _b === void 0 ? void 0 : _b.destroy();
|
13916
14093
|
this._destroy.next();
|
13917
14094
|
this._destroy.complete();
|
14095
|
+
this._nodedestroy.next();
|
14096
|
+
this._nodedestroy.complete();
|
13918
14097
|
}
|
13919
14098
|
}
|
13920
14099
|
WorkflowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: WorkflowComponent, deps: [{ token: PromptService }, { token: FormService }, { token: PaneRef }, { token: PanesRouter }, { token: SessionService }, { token: TranslateService }], target: i0.ɵɵFactoryTarget.Component });
|
13921
|
-
WorkflowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: WorkflowComponent, selector: "bizdoc-workflow", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "symbolPaletteEl", first: true, predicate: ["symbolPaletteEl"], descendants: true, static: true }, { propertyName: "diagramEl", first: true, predicate: ["diagramEl"], descendants: true, static: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"tools = !tools\" [bizdocTooltip]=\"'Collapse' | translate\"><mat-icon>view_sidebar</mat-icon></button>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty || saving\">{{'SaveChanges' | translate}}</button>\r\n <button mat-icon-button (click)=\"diagram.fitToPage()\" [bizdocTooltip]=\"'FitToPage' | translate\"><mat-icon>fullscreen_exit</mat-icon></button>\r\n <button mat-icon-button (click)=\"
|
14100
|
+
WorkflowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: WorkflowComponent, selector: "bizdoc-workflow", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "symbolPaletteEl", first: true, predicate: ["symbolPaletteEl"], descendants: true, static: true }, { propertyName: "diagramEl", first: true, predicate: ["diagramEl"], descendants: true, static: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"tools = !tools\" [bizdocTooltip]=\"'Collapse' | translate\"><mat-icon>view_sidebar</mat-icon></button>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty || saving\">{{'SaveChanges' | translate}}</button>\r\n <button mat-icon-button (click)=\"diagram.fitToPage()\" [bizdocTooltip]=\"'FitToPage' | translate\"><mat-icon>fullscreen_exit</mat-icon></button>\r\n <button mat-icon-button (click)=\"pan()\" [bizdocTooltip]=\"'Pan' | translate\"><span class=\"e-icons sf-icon-pan\"></span></button>\r\n <button mat-icon-button (click)=\"cursor()\" [bizdocTooltip]=\"'Cursor' | translate\"><span class=\"e-icons sf-icon-cursor\"></span></button>\r\n <span class=\"tools-divider\"></span>\r\n <button mat-icon-button (click)=\"diagram.undo()\" [bizdocTooltip]=\"'Undo' | translate\" [disabled]=\"!diagram.historyManager?.canUndo\"><mat-icon>undo</mat-icon></button>\r\n <button mat-icon-button (click)=\"diagram.redo()\" [bizdocTooltip]=\"'Redo' | translate\" [disabled]=\"!diagram.historyManager?.canRedo\"><mat-icon>redo</mat-icon></button>\r\n <span class=\"tools-divider\"></span>\r\n <button mat-icon-button (click)=\"diagram.copy()\" [bizdocTooltip]=\"'Copy' | translate\" [disabled]=\"diagram.selectedItems?.connectors.length === 0 && diagram.selectedItems?.nodes.length === 0\"><mat-icon>copy</mat-icon></button>\r\n <button mat-icon-button (click)=\"diagram.paste()\" [bizdocTooltip]=\"'Paste' | translate\"><mat-icon>paste</mat-icon></button>\r\n <button mat-icon-button (click)=\"diagram.remove()\" [bizdocTooltip]=\"'Remove' | translate\" [disabled]=\"diagram.selectedItems?.connectors.length === 0 && diagram.selectedItems?.nodes.length === 0\"><mat-icon>delete</mat-icon></button>\r\n <span class=\"tools-divider\"></span>\r\n <button mat-button [matMenuTriggerFor]=\"lineMenu\" [disabled]=\"diagram.selectedItems?.connectors.length === 0\" [bizdocTooltip]=\"'ConnectorMode'|translate\">\r\n <span class=\"e-menu-icon\" [ngClass]=\"{'sf-icon-straight-line': connectorType === 'Straight',\r\n 'sf-icon-orthogonal-line': connectorType === 'Orthogonal',\r\n 'sf-icon-beizer-line': connectorType === 'Bezier'}\"></span>\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-menu #lineMenu overlayPanelClass=\"icon-menu-panel\">\r\n <button mat-menu-item (click)=\"connectorTypeChange('Straight')\">\r\n <span class=\"e-menu-icon sf-icon-straight-line\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"connectorTypeChange('Orthogonal')\">\r\n <span class=\"e-menu-icon sf-icon-orthogonal-line\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"connectorTypeChange('Bezier')\">\r\n <span class=\"e-menu-icon sf-icon-beizer-line\"></span>\r\n </button>\r\n <!--<ng-container *ngIf=\"connectors.length\">\r\n < bizdoc-color-picker (valueChanges)='strokeChange($event)' [label]=\"'Stroke'|translate\"></ bizdoc-color-picker>\r\n <ng-container *ngIf=\"nodes[0].annotations.length\">\r\n < bizdoc-color-picker (valueChanges)='colorChange($event)' [label]=\"'Color'|translate\"></ bizdoc-color-picker>\r\n </ng-container>\r\n < bizdoc-color-picker (valueChanges)='bgChange($event)' [label]=\"'Background'|translate\"></ bizdoc-color-picker>\r\n < bizdoc-color-picker (valueChanges)='strokeChange($event)' [label]=\"'Stroke'|translate\"></ bizdoc-color-picker>\r\n </ng-container>-->\r\n </mat-menu>\r\n \r\n <button mat-button [matMenuTriggerFor]=\"alignMenu\" [disabled]=\"diagram.selectedItems?.nodes.length === 0 && diagram.selectedItems?.connectors.length === 0\" [bizdocTooltip]=\"'Align'|translate\">\r\n <span class=\"e-icons\" [ngClass]=\"{'sf-icon-top': alignment === 'Top',\r\n 'sf-icon-left': alignment === 'Left',\r\n 'sf-icon-center': alignment === 'Center',\r\n 'sf-icon-bottom': alignment === 'Bottom',\r\n 'sf-icon-right': alignment === 'Right'}\"></span>\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-menu #alignMenu overlayPanelClass=\"icon-menu-panel\">\r\n <button mat-menu-item (click)=\"align('Top')\">\r\n <span class=\"e-icons sf-icon-top\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Left')\">\r\n <span class=\"e-icons sf-icon-left\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Center')\">\r\n <span class=\"e-icons sf-icon-center\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Right')\">\r\n <span class=\"e-icons sf-icon-right\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Bottom')\">\r\n <span class=\"e-icons sf-icon-bottom\"></span>\r\n </button>\r\n </mat-menu>\r\n <button mat-icon-button (click)=\"boldChange()\" [bizdocTooltip]=\"'Bold' | translate\" [disabled]=\"diagram.selectedItems?.connectors.length === 0 && diagram.selectedItems?.nodes.length === 0\"><mat-icon>format_bold</mat-icon></button>\r\n <button mat-icon-button (click)=\"italicChange()\" [bizdocTooltip]=\"'Italic' | translate\" [disabled]=\"diagram.selectedItems?.connectors.length === 0 && diagram.selectedItems?.nodes.length === 0\"><mat-icon>format_italic</mat-icon></button>\r\n <button mat-icon-button [matMenuTriggerFor]=\"sizeMenu\"\r\n [disabled]=\"diagram.selectedItems?.nodes.length === 0 && diagram.selectedItems?.connectors.length === 0\"\r\n [bizdocTooltip]=\"'FontSize'|translate\">\r\n <mat-icon>format_size</mat-icon>\r\n </button>\r\n <mat-menu #sizeMenu overlayPanelClass=\"icon-menu-panel\">\r\n <button mat-menu-item *ngFor=\"let size of fontSizes\" (click)=\"fontSizeChange(size)\">\r\n {{size}}\r\n </button>\r\n </mat-menu>\r\n <span class=\"divider\"></span>\r\n</mat-toolbar>\r\n<div class=\"row container\">\r\n <div id=\"symbolpalette\" [style.display]=\"tools?'':'none'\">\r\n <div dir=\"ltr\" #symbolPaletteEl>\r\n </div>\r\n </div>\r\n <div #diagramEl id=\"diagram\" fxFlex dir=\"ltr\">\r\n </div>\r\n</div>\r\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;height:100%}.container{flex-grow:1;overflow-y:auto}#diagram{flex-grow:1}#symbolpalette{width:210px}::ng-deep .e-rtl{direction:ltr}::ng-deep .mat-toolbar .mat-button-toggle{background:transparent!important}.e-menu-icon{font-family:diagram-icons!important;speak:none;font-size:18px;font-style:normal;font-weight:400;font-feature-settings:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::ng-deep .mat-menu-panel{min-width:0!important}.tools-divider:after{content:\"|\";opacity:.6;margin:0 2px}\n"], components: [{ type: i7$3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i9$1.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i9$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }], directives: [{ type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i9$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i25.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7$2.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i23.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }], pipes: { "translate": TranslatePipe } });
|
13922
14101
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: WorkflowComponent, decorators: [{
|
13923
14102
|
type: Component,
|
13924
14103
|
args: [{ selector: 'bizdoc-workflow', host: {
|
13925
14104
|
class: 'pane'
|
13926
|
-
}, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"tools = !tools\" [bizdocTooltip]=\"'Collapse' | translate\"><mat-icon>view_sidebar</mat-icon></button>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty || saving\">{{'SaveChanges' | translate}}</button>\r\n <button mat-icon-button (click)=\"diagram.fitToPage()\" [bizdocTooltip]=\"'FitToPage' | translate\"><mat-icon>fullscreen_exit</mat-icon></button>\r\n <button mat-icon-button (click)=\"
|
14105
|
+
}, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"tools = !tools\" [bizdocTooltip]=\"'Collapse' | translate\"><mat-icon>view_sidebar</mat-icon></button>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty || saving\">{{'SaveChanges' | translate}}</button>\r\n <button mat-icon-button (click)=\"diagram.fitToPage()\" [bizdocTooltip]=\"'FitToPage' | translate\"><mat-icon>fullscreen_exit</mat-icon></button>\r\n <button mat-icon-button (click)=\"pan()\" [bizdocTooltip]=\"'Pan' | translate\"><span class=\"e-icons sf-icon-pan\"></span></button>\r\n <button mat-icon-button (click)=\"cursor()\" [bizdocTooltip]=\"'Cursor' | translate\"><span class=\"e-icons sf-icon-cursor\"></span></button>\r\n <span class=\"tools-divider\"></span>\r\n <button mat-icon-button (click)=\"diagram.undo()\" [bizdocTooltip]=\"'Undo' | translate\" [disabled]=\"!diagram.historyManager?.canUndo\"><mat-icon>undo</mat-icon></button>\r\n <button mat-icon-button (click)=\"diagram.redo()\" [bizdocTooltip]=\"'Redo' | translate\" [disabled]=\"!diagram.historyManager?.canRedo\"><mat-icon>redo</mat-icon></button>\r\n <span class=\"tools-divider\"></span>\r\n <button mat-icon-button (click)=\"diagram.copy()\" [bizdocTooltip]=\"'Copy' | translate\" [disabled]=\"diagram.selectedItems?.connectors.length === 0 && diagram.selectedItems?.nodes.length === 0\"><mat-icon>copy</mat-icon></button>\r\n <button mat-icon-button (click)=\"diagram.paste()\" [bizdocTooltip]=\"'Paste' | translate\"><mat-icon>paste</mat-icon></button>\r\n <button mat-icon-button (click)=\"diagram.remove()\" [bizdocTooltip]=\"'Remove' | translate\" [disabled]=\"diagram.selectedItems?.connectors.length === 0 && diagram.selectedItems?.nodes.length === 0\"><mat-icon>delete</mat-icon></button>\r\n <span class=\"tools-divider\"></span>\r\n <button mat-button [matMenuTriggerFor]=\"lineMenu\" [disabled]=\"diagram.selectedItems?.connectors.length === 0\" [bizdocTooltip]=\"'ConnectorMode'|translate\">\r\n <span class=\"e-menu-icon\" [ngClass]=\"{'sf-icon-straight-line': connectorType === 'Straight',\r\n 'sf-icon-orthogonal-line': connectorType === 'Orthogonal',\r\n 'sf-icon-beizer-line': connectorType === 'Bezier'}\"></span>\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-menu #lineMenu overlayPanelClass=\"icon-menu-panel\">\r\n <button mat-menu-item (click)=\"connectorTypeChange('Straight')\">\r\n <span class=\"e-menu-icon sf-icon-straight-line\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"connectorTypeChange('Orthogonal')\">\r\n <span class=\"e-menu-icon sf-icon-orthogonal-line\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"connectorTypeChange('Bezier')\">\r\n <span class=\"e-menu-icon sf-icon-beizer-line\"></span>\r\n </button>\r\n <!--<ng-container *ngIf=\"connectors.length\">\r\n < bizdoc-color-picker (valueChanges)='strokeChange($event)' [label]=\"'Stroke'|translate\"></ bizdoc-color-picker>\r\n <ng-container *ngIf=\"nodes[0].annotations.length\">\r\n < bizdoc-color-picker (valueChanges)='colorChange($event)' [label]=\"'Color'|translate\"></ bizdoc-color-picker>\r\n </ng-container>\r\n < bizdoc-color-picker (valueChanges)='bgChange($event)' [label]=\"'Background'|translate\"></ bizdoc-color-picker>\r\n < bizdoc-color-picker (valueChanges)='strokeChange($event)' [label]=\"'Stroke'|translate\"></ bizdoc-color-picker>\r\n </ng-container>-->\r\n </mat-menu>\r\n \r\n <button mat-button [matMenuTriggerFor]=\"alignMenu\" [disabled]=\"diagram.selectedItems?.nodes.length === 0 && diagram.selectedItems?.connectors.length === 0\" [bizdocTooltip]=\"'Align'|translate\">\r\n <span class=\"e-icons\" [ngClass]=\"{'sf-icon-top': alignment === 'Top',\r\n 'sf-icon-left': alignment === 'Left',\r\n 'sf-icon-center': alignment === 'Center',\r\n 'sf-icon-bottom': alignment === 'Bottom',\r\n 'sf-icon-right': alignment === 'Right'}\"></span>\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-menu #alignMenu overlayPanelClass=\"icon-menu-panel\">\r\n <button mat-menu-item (click)=\"align('Top')\">\r\n <span class=\"e-icons sf-icon-top\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Left')\">\r\n <span class=\"e-icons sf-icon-left\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Center')\">\r\n <span class=\"e-icons sf-icon-center\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Right')\">\r\n <span class=\"e-icons sf-icon-right\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Bottom')\">\r\n <span class=\"e-icons sf-icon-bottom\"></span>\r\n </button>\r\n </mat-menu>\r\n <button mat-icon-button (click)=\"boldChange()\" [bizdocTooltip]=\"'Bold' | translate\" [disabled]=\"diagram.selectedItems?.connectors.length === 0 && diagram.selectedItems?.nodes.length === 0\"><mat-icon>format_bold</mat-icon></button>\r\n <button mat-icon-button (click)=\"italicChange()\" [bizdocTooltip]=\"'Italic' | translate\" [disabled]=\"diagram.selectedItems?.connectors.length === 0 && diagram.selectedItems?.nodes.length === 0\"><mat-icon>format_italic</mat-icon></button>\r\n <button mat-icon-button [matMenuTriggerFor]=\"sizeMenu\"\r\n [disabled]=\"diagram.selectedItems?.nodes.length === 0 && diagram.selectedItems?.connectors.length === 0\"\r\n [bizdocTooltip]=\"'FontSize'|translate\">\r\n <mat-icon>format_size</mat-icon>\r\n </button>\r\n <mat-menu #sizeMenu overlayPanelClass=\"icon-menu-panel\">\r\n <button mat-menu-item *ngFor=\"let size of fontSizes\" (click)=\"fontSizeChange(size)\">\r\n {{size}}\r\n </button>\r\n </mat-menu>\r\n <span class=\"divider\"></span>\r\n</mat-toolbar>\r\n<div class=\"row container\">\r\n <div id=\"symbolpalette\" [style.display]=\"tools?'':'none'\">\r\n <div dir=\"ltr\" #symbolPaletteEl>\r\n </div>\r\n </div>\r\n <div #diagramEl id=\"diagram\" fxFlex dir=\"ltr\">\r\n </div>\r\n</div>\r\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;height:100%}.container{flex-grow:1;overflow-y:auto}#diagram{flex-grow:1}#symbolpalette{width:210px}::ng-deep .e-rtl{direction:ltr}::ng-deep .mat-toolbar .mat-button-toggle{background:transparent!important}.e-menu-icon{font-family:diagram-icons!important;speak:none;font-size:18px;font-style:normal;font-weight:400;font-feature-settings:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::ng-deep .mat-menu-panel{min-width:0!important}.tools-divider:after{content:\"|\";opacity:.6;margin:0 2px}\n"] }]
|
13927
14106
|
}], ctorParameters: function () { return [{ type: PromptService }, { type: FormService }, { type: PaneRef }, { type: PanesRouter }, { type: SessionService }, { type: TranslateService }]; }, propDecorators: { symbolPaletteEl: [{
|
13928
14107
|
type: ViewChild,
|
13929
14108
|
args: ['symbolPaletteEl', { static: true }]
|
@@ -14134,11 +14313,11 @@ class FlowViewComponent extends TraceBase {
|
|
14134
14313
|
this._duration = _duration;
|
14135
14314
|
this._elementRef = _elementRef;
|
14136
14315
|
this.connectorType = 'Orthogonal';
|
14137
|
-
this.tool = DiagramTools
|
14138
|
-
this.diagramConstraints = DiagramConstraints
|
14139
|
-
DiagramConstraints
|
14140
|
-
DiagramConstraints
|
14141
|
-
DiagramConstraints
|
14316
|
+
this.tool = DiagramTools.ZoomPan;
|
14317
|
+
this.diagramConstraints = DiagramConstraints.Default |
|
14318
|
+
DiagramConstraints.Pan |
|
14319
|
+
DiagramConstraints.LineRouting |
|
14320
|
+
DiagramConstraints.Zoom;
|
14142
14321
|
this.layout = {
|
14143
14322
|
type: 'ComplexHierarchicalTree',
|
14144
14323
|
connectionPointOrigin: ConnectionPointOrigin.DifferentPoint,
|
@@ -14177,7 +14356,7 @@ class FlowViewComponent extends TraceBase {
|
|
14177
14356
|
return __awaiter(this, void 0, void 0, function* () {
|
14178
14357
|
const { connectors, nodes, indicators } = yield this._prepare();
|
14179
14358
|
this.diagram && this.diagram.destroy();
|
14180
|
-
this.diagram = new Diagram
|
14359
|
+
this.diagram = new Diagram({
|
14181
14360
|
width: '100%',
|
14182
14361
|
height: 380,
|
14183
14362
|
nodes,
|
@@ -14321,8 +14500,8 @@ class FlowViewComponent extends TraceBase {
|
|
14321
14500
|
position: 'TopCenter'
|
14322
14501
|
},
|
14323
14502
|
constraints: content ?
|
14324
|
-
NodeConstraints
|
14325
|
-
NodeConstraints
|
14503
|
+
NodeConstraints.Default | NodeConstraints.Tooltip :
|
14504
|
+
NodeConstraints.Default,
|
14326
14505
|
addInfo: {
|
14327
14506
|
tooltip,
|
14328
14507
|
recipient,
|
@@ -14412,8 +14591,8 @@ class FlowViewComponent extends TraceBase {
|
|
14412
14591
|
position: 'TopCenter'
|
14413
14592
|
},
|
14414
14593
|
constraints: content ?
|
14415
|
-
NodeConstraints
|
14416
|
-
NodeConstraints
|
14594
|
+
NodeConstraints.Default | NodeConstraints.Tooltip :
|
14595
|
+
NodeConstraints.Default,
|
14417
14596
|
addInfo: {
|
14418
14597
|
tooltip,
|
14419
14598
|
node
|
@@ -15339,24 +15518,41 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
|
|
15339
15518
|
type: Injectable
|
15340
15519
|
}], ctorParameters: function () { return [{ type: MailboxService }]; } });
|
15341
15520
|
|
15521
|
+
class SaveChangesDialog {
|
15522
|
+
ngOnInit() {
|
15523
|
+
playAudio('alert_error-03');
|
15524
|
+
}
|
15525
|
+
}
|
15526
|
+
SaveChangesDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: SaveChangesDialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
15527
|
+
SaveChangesDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: SaveChangesDialog, selector: "ng-component", ngImport: i0, template: " <h2 mat-dialog-title>\r\n {{'SaveChanges' | translate}}\r\n </h2>\r\n <mat-dialog-content>\r\n <p class=\"mat-body\">\r\n {{'SaveChangesAsk' | translate}}\r\n </p>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=true color=\"primary\" cdkFocusInitial>{{'Save'|translate}}</button>\r\n <button mat-button mat-dialog-close color=\"warn\">{{'DiscardChanges'|translate}}</button>\r\n <button mat-button [mat-dialog-close]=\"false\">{{'ContinueEditing'|translate}}</button>\r\n </mat-dialog-actions>\r\n", components: [{ type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i3$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i3$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i3$1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "translate": TranslatePipe } });
|
15528
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: SaveChangesDialog, decorators: [{
|
15529
|
+
type: Component,
|
15530
|
+
args: [{ template: " <h2 mat-dialog-title>\r\n {{'SaveChanges' | translate}}\r\n </h2>\r\n <mat-dialog-content>\r\n <p class=\"mat-body\">\r\n {{'SaveChangesAsk' | translate}}\r\n </p>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=true color=\"primary\" cdkFocusInitial>{{'Save'|translate}}</button>\r\n <button mat-button mat-dialog-close color=\"warn\">{{'DiscardChanges'|translate}}</button>\r\n <button mat-button [mat-dialog-close]=\"false\">{{'ContinueEditing'|translate}}</button>\r\n </mat-dialog-actions>\r\n" }]
|
15531
|
+
}] });
|
15532
|
+
|
15342
15533
|
class AdminDismiss {
|
15343
|
-
constructor(
|
15344
|
-
this.
|
15534
|
+
constructor(_dialog) {
|
15535
|
+
this._dialog = _dialog;
|
15345
15536
|
}
|
15346
15537
|
onDismiss(component) {
|
15347
15538
|
if (component.dirty)
|
15348
|
-
return
|
15349
|
-
|
15350
|
-
|
15539
|
+
return new Promise((resolve, reject) => this._dialog.open(SaveChangesDialog).
|
15540
|
+
afterClosed().
|
15541
|
+
subscribe(ok => {
|
15542
|
+
if (ok)
|
15543
|
+
component.save().then(() => resolve(true), reject);
|
15544
|
+
else
|
15545
|
+
resolve(ok !== false);
|
15546
|
+
}));
|
15351
15547
|
else
|
15352
15548
|
return true;
|
15353
15549
|
}
|
15354
15550
|
}
|
15355
|
-
AdminDismiss.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AdminDismiss, deps: [{ token:
|
15551
|
+
AdminDismiss.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AdminDismiss, deps: [{ token: i3$1.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable });
|
15356
15552
|
AdminDismiss.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AdminDismiss });
|
15357
15553
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AdminDismiss, decorators: [{
|
15358
15554
|
type: Injectable
|
15359
|
-
}], ctorParameters: function () { return [{ type:
|
15555
|
+
}], ctorParameters: function () { return [{ type: i3$1.MatDialog }]; } });
|
15360
15556
|
|
15361
15557
|
class AgoPipe {
|
15362
15558
|
constructor(_translate) {
|
@@ -15610,18 +15806,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
|
|
15610
15806
|
}]
|
15611
15807
|
}], ctorParameters: function () { return [{ type: PanesRouter }, { type: i0.ElementRef }, { type: TranslateService }, { type: PaneRef }]; } });
|
15612
15808
|
|
15613
|
-
class SaveChangesDialog {
|
15614
|
-
ngOnInit() {
|
15615
|
-
playAudio('alert_error-03');
|
15616
|
-
}
|
15617
|
-
}
|
15618
|
-
SaveChangesDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: SaveChangesDialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
15619
|
-
SaveChangesDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: SaveChangesDialog, selector: "ng-component", ngImport: i0, template: " <h2 mat-dialog-title>\r\n {{'SaveChanges' | translate}}\r\n </h2>\r\n <mat-dialog-content>\r\n <p class=\"mat-body\">\r\n {{'SaveChangesAsk' | translate}}\r\n </p>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=true color=\"primary\" cdkFocusInitial>{{'Save'|translate}}</button>\r\n <button mat-button [mat-dialog-close]=\"false\">{{'ContinueEditing'|translate}}</button>\r\n <button mat-button mat-dialog-close>{{'DiscardChanges'|translate}}</button>\r\n </mat-dialog-actions>\r\n", components: [{ type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i3$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i3$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i3$1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "translate": TranslatePipe } });
|
15620
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: SaveChangesDialog, decorators: [{
|
15621
|
-
type: Component,
|
15622
|
-
args: [{ template: " <h2 mat-dialog-title>\r\n {{'SaveChanges' | translate}}\r\n </h2>\r\n <mat-dialog-content>\r\n <p class=\"mat-body\">\r\n {{'SaveChangesAsk' | translate}}\r\n </p>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=true color=\"primary\" cdkFocusInitial>{{'Save'|translate}}</button>\r\n <button mat-button [mat-dialog-close]=\"false\">{{'ContinueEditing'|translate}}</button>\r\n <button mat-button mat-dialog-close>{{'DiscardChanges'|translate}}</button>\r\n </mat-dialog-actions>\r\n" }]
|
15623
|
-
}] });
|
15624
|
-
|
15625
15809
|
class ComposeDismiss {
|
15626
15810
|
constructor(_dialog) {
|
15627
15811
|
this._dialog = _dialog;
|
@@ -21314,7 +21498,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
|
|
21314
21498
|
providers: [ConnectorBridgingService, LineRoutingService, ComplexHierarchicalTreeService, BpmnDiagramsService, LayoutAnimationService, UndoRedoService, SnappingService, ConnectorEditingService, LineDistributionService]
|
21315
21499
|
}]
|
21316
21500
|
}] });
|
21317
|
-
Diagram
|
21501
|
+
Diagram.Inject(ComplexHierarchicalTree, BpmnDiagrams, DataBinding, LineDistribution /*, LayoutAnimation, LineRouting, ConnectorBridging*/);
|
21318
21502
|
|
21319
21503
|
class SyncfusionGridModule {
|
21320
21504
|
}
|
@@ -24815,7 +24999,7 @@ class ColorPicker {
|
|
24815
24999
|
}
|
24816
25000
|
ColorPicker.nextId = 0;
|
24817
25001
|
ColorPicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ColorPicker, deps: [{ token: i1$5.NgControl, optional: true, self: true }, { token: i1$2.Overlay }, { token: i0.ViewContainerRef }, { token: i0.ElementRef }, { token: i7$2.Directionality }], target: i0.ɵɵFactoryTarget.Component });
|
24818
|
-
ColorPicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: ColorPicker, selector: "
|
25002
|
+
ColorPicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: ColorPicker, selector: "bizdoc-color-picker", inputs: { label: "label", required: "required", disabled: "disabled" }, outputs: { valueChanges: "valueChanges" }, host: { properties: { "class.floating": "this.shouldLabelFloat", "id": "this.id", "attr.aria-describedby": "this.describedBy" } }, providers: [{ provide: MatFormFieldControl, useExisting: ColorPicker }], viewQueries: [{ propertyName: "_trigger", first: true, predicate: MatButton, descendants: true, static: true }, { propertyName: "_colorPalette", first: true, predicate: TemplateRef, descendants: true, static: true }], ngImport: i0, template: `<button mat-button (click)='open()'>
|
24819
25003
|
<span>{{label}}</span>
|
24820
25004
|
<mat-icon>arrow_drop_down</mat-icon>
|
24821
25005
|
</button>
|
@@ -24828,7 +25012,7 @@ ColorPicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "
|
|
24828
25012
|
</ng-template>`, isInline: true, styles: [".color-palette{display:flex;flex-direction:column}.color-palette .color-container{display:flex}button{width:100%}.color-item{width:20px;height:20px}\n"], components: [{ type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
24829
25013
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ColorPicker, decorators: [{
|
24830
25014
|
type: Component,
|
24831
|
-
args: [{ selector: '
|
25015
|
+
args: [{ selector: 'bizdoc-color-picker', providers: [{ provide: MatFormFieldControl, useExisting: ColorPicker }], template: `<button mat-button (click)='open()'>
|
24832
25016
|
<span>{{label}}</span>
|
24833
25017
|
<mat-icon>arrow_drop_down</mat-icon>
|
24834
25018
|
</button>
|
@@ -29091,11 +29275,11 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
29091
29275
|
this.theme = this._session.theme.dark ? 'MaterialDark' : 'Material';
|
29092
29276
|
this.accent = this._session.getAccent();
|
29093
29277
|
this.form = this._fb.group({ search: null, formId: null });
|
29094
|
-
this.diagramConstraints = DiagramConstraints
|
29095
|
-
DiagramConstraints
|
29096
|
-
DiagramConstraints
|
29097
|
-
DiagramConstraints
|
29098
|
-
this.diagramTool = DiagramTools
|
29278
|
+
this.diagramConstraints = DiagramConstraints.Default | DiagramConstraints.Bridging |
|
29279
|
+
DiagramConstraints.LineRouting |
|
29280
|
+
DiagramConstraints.Pan |
|
29281
|
+
DiagramConstraints.Zoom;
|
29282
|
+
this.diagramTool = DiagramTools.SingleSelect;
|
29099
29283
|
this.layout = {
|
29100
29284
|
type: 'ComplexHierarchicalTree',
|
29101
29285
|
connectionPointOrigin: ConnectionPointOrigin.DifferentPoint,
|
@@ -29114,7 +29298,7 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
29114
29298
|
this._accentColor = this._session.getAccent(800);
|
29115
29299
|
this._primeryColor = this._session.getPrimery();
|
29116
29300
|
this.selectedItems = {
|
29117
|
-
constraints: SelectorConstraints
|
29301
|
+
constraints: SelectorConstraints.UserHandle,
|
29118
29302
|
userHandles: [
|
29119
29303
|
{
|
29120
29304
|
name: 'info',
|
@@ -29141,13 +29325,13 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
29141
29325
|
this.nodeDefaults = (node) => {
|
29142
29326
|
const { indicator, virtual } = node.addInfo || {};
|
29143
29327
|
if (indicator) {
|
29144
|
-
node.constraints = NodeConstraints
|
29328
|
+
node.constraints = NodeConstraints.PointerEvents | NodeConstraints.Tooltip,
|
29145
29329
|
node.style.strokeWidth = 0,
|
29146
29330
|
node.width = node.height = 15;
|
29147
29331
|
}
|
29148
29332
|
else if (node.id !== 'version') {
|
29149
|
-
node.constraints = NodeConstraints
|
29150
|
-
NodeConstraints
|
29333
|
+
node.constraints = NodeConstraints.InConnect | NodeConstraints.OutConnect |
|
29334
|
+
NodeConstraints.PointerEvents | NodeConstraints.Select;
|
29151
29335
|
this._decorateNode(node);
|
29152
29336
|
node.ports = getPorts();
|
29153
29337
|
}
|
@@ -29155,7 +29339,7 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
29155
29339
|
};
|
29156
29340
|
this.connDefaults = (connector) => {
|
29157
29341
|
const { virtual } = connector.addInfo || {};
|
29158
|
-
connector.constraints = ConnectorConstraints
|
29342
|
+
connector.constraints = ConnectorConstraints.ReadOnly & ~ConnectorConstraints.Select;
|
29159
29343
|
this._decorateConnector(connector);
|
29160
29344
|
};
|
29161
29345
|
}
|
@@ -29247,7 +29431,7 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
29247
29431
|
this.mode = 'diagram';
|
29248
29432
|
this.loading = null;
|
29249
29433
|
this._cd.detectChanges();
|
29250
|
-
this.diagram = new Diagram
|
29434
|
+
this.diagram = new Diagram({
|
29251
29435
|
width: '100%', height: '100%',
|
29252
29436
|
snapSettings: this.snapSettings,
|
29253
29437
|
layout: this.layout,
|
@@ -29402,7 +29586,7 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
29402
29586
|
fontSize: 50,
|
29403
29587
|
opacity: .1
|
29404
29588
|
},
|
29405
|
-
constraints: NodeConstraints
|
29589
|
+
constraints: NodeConstraints.ReadOnly
|
29406
29590
|
};
|
29407
29591
|
this.diagram.addLayer({
|
29408
29592
|
id: 'version',
|
@@ -29468,12 +29652,12 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
29468
29652
|
this.diagram.dataBind();
|
29469
29653
|
}
|
29470
29654
|
pan() {
|
29471
|
-
this.diagram.constraints = this.diagram.constraints | DiagramConstraints
|
29472
|
-
this.diagram.tool = DiagramTools
|
29655
|
+
this.diagram.constraints = this.diagram.constraints | DiagramConstraints.Pan;
|
29656
|
+
this.diagram.tool = DiagramTools.ZoomPan;
|
29473
29657
|
}
|
29474
29658
|
cursor() {
|
29475
|
-
this.diagram.constraints = this.diagram.constraints & ~DiagramConstraints
|
29476
|
-
this.diagram.tool = DiagramTools
|
29659
|
+
this.diagram.constraints = this.diagram.constraints & ~DiagramConstraints.Pan;
|
29660
|
+
this.diagram.tool = DiagramTools.SingleSelect;
|
29477
29661
|
}
|
29478
29662
|
_highlight(ids) {
|
29479
29663
|
for (let i = 0; i < ids.length; i++) {
|
@@ -29759,6 +29943,7 @@ let PositionsComponent = class PositionsComponent {
|
|
29759
29943
|
this._translate = _translate;
|
29760
29944
|
this._popup = _popup;
|
29761
29945
|
this._dialog = _dialog;
|
29946
|
+
this.tools = true;
|
29762
29947
|
this.dirty = false;
|
29763
29948
|
this.saving = false;
|
29764
29949
|
this.form = new FormGroup({});
|
@@ -30133,14 +30318,14 @@ let PositionsComponent = class PositionsComponent {
|
|
30133
30318
|
}
|
30134
30319
|
};
|
30135
30320
|
PositionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PositionsComponent, deps: [{ token: SessionService }, { token: UtilityRef }, { token: DatasourceService }, { token: PromptService }, { token: AccountService }, { token: WindowTitleService }, { token: TranslateService }, { token: Popup }, { token: i3$1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
30136
|
-
PositionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: PositionsComponent, selector: "ng-component", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" } }, viewQueries: [{ propertyName: "_fileElement", first: true, predicate: ["file"], descendants: true, static: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "noRoleTpl", first: true, predicate: ["noRoleTpl"], descendants: true, static: true }, { propertyName: "roleTpl", first: true, predicate: ["roleTpl"], descendants: true, static: true }, { propertyName: "patternTpl", first: true, predicate: ["patternTpl"], descendants: true, static: true }, { propertyName: "newGroupTpl", first: true, predicate: ["groupTpl"], descendants: true, static: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty\">{{'SaveChanges'|translate}}</button>\r\n <span class=\"divider\"></span>\r\n <bizdoc-search-input (valueChange)=\"search($event)\"></bizdoc-search-input>\r\n <button mat-icon-button [matMenuTriggerFor]=\"newMenu\" [bizdocTooltip]=\"'Add'|translate\"><mat-icon>add</mat-icon></button>\r\n <mat-menu #newMenu>\r\n <button mat-menu-item (click)=\"newRole()\">{{'Role'|translate}}</button>\r\n <button mat-menu-item (click)=\"newPattern()\">{{'Pattern'|translate}}</button>\r\n <button mat-menu-item (click)=\"newGroup()\">{{'Group'|translate}} </button>\r\n </mat-menu>\r\n <button mat-icon-button [bizdocTooltip]=\"'Download' | translate\" (click)=\"download()\" [disabled]=\"dirty\"><mat-icon>save_alt</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<div fxLayout=\"row\" fxFlex>\r\n <mat-nav-list class=\"timeline\">\r\n <mat-list-item *ngFor=\"let t of types\" (click)=\"change(t.name)\" [class.active]=\"t === type\">{{t.title}}</mat-list-item>\r\n </mat-nav-list>\r\n\r\n <table mat-table matSort [dataSource]=\"dataSource\" [style.display]=\"dataSource ? '': 'none'\" fxFlex>\r\n <ng-container *ngFor=\"let column of (type?.columns ||[])\" [matColumnDef]=\"column.name\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{column.label}}</th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element[column.name]}} </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"key\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{''}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <span [ngSwitch]=\"element.type\">\r\n <ng-container *ngSwitchCase=\"'group'\">({{'Group'|translate}})</ng-container>\r\n <ng-container *ngSwitchCase=\"'pattern'\">({{'Pattern'|translate}})</ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{element.key}}\r\n </ng-container>\r\n </span>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"value\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{''}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n {{element.value}}\r\n </td>\r\n </ng-container>\r\n <ng-container *ngFor=\"let role of roles\" [matColumnDef]=\"role.name\">\r\n <th mat-header-cell *matHeaderCellDef>{{role.title}}</th>\r\n <td mat-cell *matCellDef=\"let element\" [attr.data-role]=\"role.name\">\r\n <ng-container *ngIf=\"positions[role.name][element.key]\">\r\n <ng-container *ngFor=\"let u of positions[role.name][element.key]; let first = first\">\r\n <ng-container *ngIf=\"!first\">, </ng-container>\r\n {{profiles[u]?.name}}\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"options\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button [matMenuTriggerFor]=\"options\" *ngIf=\"element.type === 'pattern' || element.type === 'group'\"><mat-icon>more_vert</mat-icon></button>\r\n <mat-menu #options>\r\n <ng-container *ngIf=\"element.type === 'pattern'\">\r\n <button mat-menu-item (click)=\"editPattern(element.key)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"deletePattern(element.key)\">{{'Remove'|translate}} </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"element.type === 'group'\">\r\n <button mat-menu-item (click)=\"editGroup(element.key)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"deleteGroup(element.key)\">{{'Remove'|translate}} </button>\r\n </ng-container>\r\n </mat-menu>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let element; columns: displayedColumns\" (click)=\"edit(element.key, $event)\"></tr>\r\n </table>\r\n</div>\r\n<!-- role template -->\r\n<ng-template #roleTpl>\r\n <h2 mat-dialog-title>{{'Role' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"role\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"role.value\" color=\"primary\" [disabled]=\"!role.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!-- pattern template -->\r\n<ng-template #patternTpl>\r\n <h2 mat-dialog-title>{{'Pattern' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"pattern\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput formControlName=\"expression\" [placeholder]=\"'Regex'| translate\" required autocomplete=\"off\" />\r\n <mat-hint><span [innerHTML]=\"'RegexHint' | translate : 'https://regex101.com/'| sanitizeHtml\"></span></mat-hint>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"pattern.value\" color=\"primary\" [disabled]=\"!pattern.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!-- group -->\r\n<ng-template #groupTpl>\r\n <h2 mat-dialog-title>{{'Group' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"group\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Items'|translate\" multiple formControlName=\"items\" required>\r\n <mat-select-trigger>\r\n {{group.value.items ? group.value.items[0] : ''}}\r\n <span *ngIf=\"group.value.items?.length > 1\" class=\"additional-selection\">\r\n (+{{group.value.items.length - 1}} {{(group.value.items?.length === 2 ? 'Other' : 'Others')|translate}})\r\n </span>\r\n </mat-select-trigger>\r\n <mat-option *ngFor=\"let v of source\" [value]=\"v.key\">\r\n <span *ngIf=\"!type.columns\">{{v.value}}</span>\r\n <span *ngIf=\"type.columns\"><span *ngFor=\"let c of type.columns\">{{v.value[c.name]}}</span></span>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"group.value\" color=\"primary\" [disabled]=\"!group.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<ng-template #noRoleTpl>\r\n <mat-dialog-content>\r\n {{'NoRoles'|translate : type?.title}}\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">{{'CreateRole' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!--<form style=\"display:none\">\r\n <input type=\"file\" name=\"file\" (onchange)=\"upload($event)\" #file/>\r\n</form>-->\r\n", styles: [":host{flex-direction:column}table{width:100%}.form{padding:8px}table :ng-deep .mat-cell{cursor:pointer;border-left-width:1px;border-left-style:outset;padding:0 4px!important}\n"], components: [{ type: i7$3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: SearchInput, selector: "bizdoc-search-input", outputs: ["valueChange"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i9$1.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i9$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i11.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i2$3.MatNavList, selector: "mat-nav-list", inputs: ["disableRipple", "disabled"], exportAs: ["matNavList"] }, { type: i2$3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }, { type: i5$2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i6$1.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { type: i12$1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { type: i5$2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i5$2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i1$4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i9$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i23.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i23.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6$1.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i5$2.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i5$2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i5$2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i5$2.MatCellDef, selector: "[matCellDef]" }, { type: i5$2.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i10.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5$2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i5$2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i3$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i1$5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1$5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1$5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i3$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i3$1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i1$4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i5.MatSelectTrigger, selector: "mat-select-trigger" }], pipes: { "translate": TranslatePipe, "sanitizeHtml": SanitizeHtmlPipe } });
|
30321
|
+
PositionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: PositionsComponent, selector: "ng-component", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" } }, viewQueries: [{ propertyName: "_fileElement", first: true, predicate: ["file"], descendants: true, static: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "noRoleTpl", first: true, predicate: ["noRoleTpl"], descendants: true, static: true }, { propertyName: "roleTpl", first: true, predicate: ["roleTpl"], descendants: true, static: true }, { propertyName: "patternTpl", first: true, predicate: ["patternTpl"], descendants: true, static: true }, { propertyName: "newGroupTpl", first: true, predicate: ["groupTpl"], descendants: true, static: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"tools = !tools\" [bizdocTooltip]=\"'Collapse' | translate\"><mat-icon>view_sidebar</mat-icon></button>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty\">{{'SaveChanges'|translate}}</button>\r\n <span class=\"divider\"></span>\r\n <bizdoc-search-input (valueChange)=\"search($event)\"></bizdoc-search-input>\r\n <button mat-icon-button [matMenuTriggerFor]=\"newMenu\" [bizdocTooltip]=\"'Add'|translate\"><mat-icon>add</mat-icon></button>\r\n <mat-menu #newMenu>\r\n <button mat-menu-item (click)=\"newRole()\">{{'Role'|translate}}</button>\r\n <button mat-menu-item (click)=\"newPattern()\">{{'Pattern'|translate}}</button>\r\n <button mat-menu-item (click)=\"newGroup()\">{{'Group'|translate}} </button>\r\n </mat-menu>\r\n <button mat-icon-button [bizdocTooltip]=\"'Download' | translate\" (click)=\"download()\" [disabled]=\"dirty\"><mat-icon>save_alt</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<div fxLayout=\"row\" fxFlex>\r\n <mat-list class=\"timeline\" [style.display]=\"tools?'':'none'\">\r\n <mat-list-item *ngFor=\"let t of types\" (click)=\"change(t.name)\" [class.active]=\"t === type\">{{t.title}}</mat-list-item>\r\n </mat-list>\r\n <table mat-table matSort [dataSource]=\"dataSource\" [style.display]=\"dataSource ? '': 'none'\" fxFlex>\r\n <ng-container *ngFor=\"let column of (type?.columns ||[])\" [matColumnDef]=\"column.name\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{column.label}}</th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element[column.name]}} </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"key\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{''}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <span [ngSwitch]=\"element.type\">\r\n <ng-container *ngSwitchCase=\"'group'\">({{'Group'|translate}})</ng-container>\r\n <ng-container *ngSwitchCase=\"'pattern'\">({{'Pattern'|translate}})</ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{element.key}}\r\n </ng-container>\r\n </span>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"value\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{''}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n {{element.value}}\r\n </td>\r\n </ng-container>\r\n <ng-container *ngFor=\"let role of roles\" [matColumnDef]=\"role.name\">\r\n <th mat-header-cell *matHeaderCellDef>{{role.title}}</th>\r\n <td mat-cell *matCellDef=\"let element\" [attr.data-role]=\"role.name\" class=\"role-column\">\r\n <ng-container *ngIf=\"positions[role.name][element.key]\">\r\n <ng-container *ngFor=\"let u of positions[role.name][element.key]; let first = first\">\r\n <ng-container *ngIf=\"!first\">, </ng-container>\r\n {{profiles[u]?.name}}\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"options\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button [matMenuTriggerFor]=\"options\" *ngIf=\"element.type === 'pattern' || element.type === 'group'\"><mat-icon>more_vert</mat-icon></button>\r\n <mat-menu #options>\r\n <ng-container *ngIf=\"element.type === 'pattern'\">\r\n <button mat-menu-item (click)=\"editPattern(element.key)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"deletePattern(element.key)\">{{'Remove'|translate}} </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"element.type === 'group'\">\r\n <button mat-menu-item (click)=\"editGroup(element.key)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"deleteGroup(element.key)\">{{'Remove'|translate}} </button>\r\n </ng-container>\r\n </mat-menu>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let element; columns: displayedColumns\" (click)=\"edit(element.key, $event)\"></tr>\r\n </table>\r\n</div>\r\n<!-- role template -->\r\n<ng-template #roleTpl>\r\n <h2 mat-dialog-title>{{'Role' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"role\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"role.value\" color=\"primary\" [disabled]=\"!role.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!-- pattern template -->\r\n<ng-template #patternTpl>\r\n <h2 mat-dialog-title>{{'Pattern' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"pattern\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput formControlName=\"expression\" [placeholder]=\"'Regex'| translate\" required autocomplete=\"off\" />\r\n <mat-hint><span [innerHTML]=\"'RegexHint' | translate : 'https://regex101.com/'| sanitizeHtml\"></span></mat-hint>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"pattern.value\" color=\"primary\" [disabled]=\"!pattern.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!-- group -->\r\n<ng-template #groupTpl>\r\n <h2 mat-dialog-title>{{'Group' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"group\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Items'|translate\" multiple formControlName=\"items\" required>\r\n <mat-select-trigger>\r\n {{group.value.items ? group.value.items[0] : ''}}\r\n <span *ngIf=\"group.value.items?.length > 1\" class=\"additional-selection\">\r\n (+{{group.value.items.length - 1}} {{(group.value.items?.length === 2 ? 'Other' : 'Others')|translate}})\r\n </span>\r\n </mat-select-trigger>\r\n <mat-option *ngFor=\"let v of source\" [value]=\"v.key\">\r\n <span *ngIf=\"!type.columns\">{{v.value}}</span>\r\n <span *ngIf=\"type.columns\"><span *ngFor=\"let c of type.columns\">{{v.value[c.name]}}</span></span>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"group.value\" color=\"primary\" [disabled]=\"!group.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<ng-template #noRoleTpl>\r\n <mat-dialog-content>\r\n {{'NoRoles'|translate : type?.title}}\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">{{'CreateRole' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!--<form style=\"display:none\">\r\n <input type=\"file\" name=\"file\" (onchange)=\"upload($event)\" #file/>\r\n</form>-->\r\n", styles: [":host{flex-direction:column}table{width:100%}.form{padding:8px}:host ::ng-deep .mat-list-item{cursor:pointer}table ::ng-deep .role-column{cursor:pointer}\n"], components: [{ type: i7$3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: SearchInput, selector: "bizdoc-search-input", outputs: ["valueChange"] }, { type: i9$1.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i9$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i11.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i2$3.MatList, selector: "mat-list, mat-action-list", inputs: ["disableRipple", "disabled"], exportAs: ["matList"] }, { type: i2$3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }, { type: i5$2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i6$1.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { type: i12$1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { type: i5$2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i5$2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i1$4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i9$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i23.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i23.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6$1.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i5$2.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i5$2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i5$2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i5$2.MatCellDef, selector: "[matCellDef]" }, { type: i5$2.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i10.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5$2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i5$2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i3$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i1$5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1$5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1$5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i3$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i3$1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i1$4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i5.MatSelectTrigger, selector: "mat-select-trigger" }], pipes: { "translate": TranslatePipe, "sanitizeHtml": SanitizeHtmlPipe } });
|
30137
30322
|
PositionsComponent = __decorate([
|
30138
30323
|
BizDoc({ selector: 'bizdoc-positions' })
|
30139
30324
|
/** positions component*/
|
30140
30325
|
], PositionsComponent);
|
30141
30326
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PositionsComponent, decorators: [{
|
30142
30327
|
type: Component,
|
30143
|
-
args: [{ template: "<mat-toolbar>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty\">{{'SaveChanges'|translate}}</button>\r\n <span class=\"divider\"></span>\r\n <bizdoc-search-input (valueChange)=\"search($event)\"></bizdoc-search-input>\r\n <button mat-icon-button [matMenuTriggerFor]=\"newMenu\" [bizdocTooltip]=\"'Add'|translate\"><mat-icon>add</mat-icon></button>\r\n <mat-menu #newMenu>\r\n <button mat-menu-item (click)=\"newRole()\">{{'Role'|translate}}</button>\r\n <button mat-menu-item (click)=\"newPattern()\">{{'Pattern'|translate}}</button>\r\n <button mat-menu-item (click)=\"newGroup()\">{{'Group'|translate}} </button>\r\n </mat-menu>\r\n <button mat-icon-button [bizdocTooltip]=\"'Download' | translate\" (click)=\"download()\" [disabled]=\"dirty\"><mat-icon>save_alt</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<div fxLayout=\"row\" fxFlex>\r\n <mat-
|
30328
|
+
args: [{ template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"tools = !tools\" [bizdocTooltip]=\"'Collapse' | translate\"><mat-icon>view_sidebar</mat-icon></button>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty\">{{'SaveChanges'|translate}}</button>\r\n <span class=\"divider\"></span>\r\n <bizdoc-search-input (valueChange)=\"search($event)\"></bizdoc-search-input>\r\n <button mat-icon-button [matMenuTriggerFor]=\"newMenu\" [bizdocTooltip]=\"'Add'|translate\"><mat-icon>add</mat-icon></button>\r\n <mat-menu #newMenu>\r\n <button mat-menu-item (click)=\"newRole()\">{{'Role'|translate}}</button>\r\n <button mat-menu-item (click)=\"newPattern()\">{{'Pattern'|translate}}</button>\r\n <button mat-menu-item (click)=\"newGroup()\">{{'Group'|translate}} </button>\r\n </mat-menu>\r\n <button mat-icon-button [bizdocTooltip]=\"'Download' | translate\" (click)=\"download()\" [disabled]=\"dirty\"><mat-icon>save_alt</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<div fxLayout=\"row\" fxFlex>\r\n <mat-list class=\"timeline\" [style.display]=\"tools?'':'none'\">\r\n <mat-list-item *ngFor=\"let t of types\" (click)=\"change(t.name)\" [class.active]=\"t === type\">{{t.title}}</mat-list-item>\r\n </mat-list>\r\n <table mat-table matSort [dataSource]=\"dataSource\" [style.display]=\"dataSource ? '': 'none'\" fxFlex>\r\n <ng-container *ngFor=\"let column of (type?.columns ||[])\" [matColumnDef]=\"column.name\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{column.label}}</th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element[column.name]}} </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"key\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{''}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <span [ngSwitch]=\"element.type\">\r\n <ng-container *ngSwitchCase=\"'group'\">({{'Group'|translate}})</ng-container>\r\n <ng-container *ngSwitchCase=\"'pattern'\">({{'Pattern'|translate}})</ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{element.key}}\r\n </ng-container>\r\n </span>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"value\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{''}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n {{element.value}}\r\n </td>\r\n </ng-container>\r\n <ng-container *ngFor=\"let role of roles\" [matColumnDef]=\"role.name\">\r\n <th mat-header-cell *matHeaderCellDef>{{role.title}}</th>\r\n <td mat-cell *matCellDef=\"let element\" [attr.data-role]=\"role.name\" class=\"role-column\">\r\n <ng-container *ngIf=\"positions[role.name][element.key]\">\r\n <ng-container *ngFor=\"let u of positions[role.name][element.key]; let first = first\">\r\n <ng-container *ngIf=\"!first\">, </ng-container>\r\n {{profiles[u]?.name}}\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"options\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button [matMenuTriggerFor]=\"options\" *ngIf=\"element.type === 'pattern' || element.type === 'group'\"><mat-icon>more_vert</mat-icon></button>\r\n <mat-menu #options>\r\n <ng-container *ngIf=\"element.type === 'pattern'\">\r\n <button mat-menu-item (click)=\"editPattern(element.key)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"deletePattern(element.key)\">{{'Remove'|translate}} </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"element.type === 'group'\">\r\n <button mat-menu-item (click)=\"editGroup(element.key)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"deleteGroup(element.key)\">{{'Remove'|translate}} </button>\r\n </ng-container>\r\n </mat-menu>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let element; columns: displayedColumns\" (click)=\"edit(element.key, $event)\"></tr>\r\n </table>\r\n</div>\r\n<!-- role template -->\r\n<ng-template #roleTpl>\r\n <h2 mat-dialog-title>{{'Role' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"role\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"role.value\" color=\"primary\" [disabled]=\"!role.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!-- pattern template -->\r\n<ng-template #patternTpl>\r\n <h2 mat-dialog-title>{{'Pattern' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"pattern\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput formControlName=\"expression\" [placeholder]=\"'Regex'| translate\" required autocomplete=\"off\" />\r\n <mat-hint><span [innerHTML]=\"'RegexHint' | translate : 'https://regex101.com/'| sanitizeHtml\"></span></mat-hint>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"pattern.value\" color=\"primary\" [disabled]=\"!pattern.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!-- group -->\r\n<ng-template #groupTpl>\r\n <h2 mat-dialog-title>{{'Group' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"group\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Items'|translate\" multiple formControlName=\"items\" required>\r\n <mat-select-trigger>\r\n {{group.value.items ? group.value.items[0] : ''}}\r\n <span *ngIf=\"group.value.items?.length > 1\" class=\"additional-selection\">\r\n (+{{group.value.items.length - 1}} {{(group.value.items?.length === 2 ? 'Other' : 'Others')|translate}})\r\n </span>\r\n </mat-select-trigger>\r\n <mat-option *ngFor=\"let v of source\" [value]=\"v.key\">\r\n <span *ngIf=\"!type.columns\">{{v.value}}</span>\r\n <span *ngIf=\"type.columns\"><span *ngFor=\"let c of type.columns\">{{v.value[c.name]}}</span></span>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"group.value\" color=\"primary\" [disabled]=\"!group.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<ng-template #noRoleTpl>\r\n <mat-dialog-content>\r\n {{'NoRoles'|translate : type?.title}}\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">{{'CreateRole' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!--<form style=\"display:none\">\r\n <input type=\"file\" name=\"file\" (onchange)=\"upload($event)\" #file/>\r\n</form>-->\r\n", styles: [":host{flex-direction:column}table{width:100%}.form{padding:8px}:host ::ng-deep .mat-list-item{cursor:pointer}table ::ng-deep .role-column{cursor:pointer}\n"] }]
|
30144
30329
|
}], ctorParameters: function () {
|
30145
30330
|
return [{ type: SessionService }, { type: UtilityRef, decorators: [{
|
30146
30331
|
type: Inject,
|
@@ -30492,7 +30677,7 @@ let ProfilerComponent = class ProfilerComponent {
|
|
30492
30677
|
grantAccess: v.grantAccess,
|
30493
30678
|
userId: this._userId
|
30494
30679
|
}).subscribe(() => {
|
30495
|
-
Object.assign(this.data);
|
30680
|
+
Object.assign(this.data, v);
|
30496
30681
|
this._sb.toast('ChangesSaved');
|
30497
30682
|
}, () => this._sb.error()));
|
30498
30683
|
}
|