@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/fesm2020/bizdoc-core.mjs
CHANGED
@@ -5,7 +5,7 @@ import { OverlayRef, OverlayConfig, OverlayModule, CdkScrollable } from '@angula
|
|
5
5
|
import { ComponentPortal, PortalModule, TemplatePortal } from '@angular/cdk/portal';
|
6
6
|
import { trigger, state, style, transition, animate, query, stagger, animateChild, keyframes } from '@angular/animations';
|
7
7
|
import { ESCAPE, RIGHT_ARROW, LEFT_ARROW, ENTER, COMMA, UP_ARROW, DOWN_ARROW, SEMICOLON } from '@angular/cdk/keycodes';
|
8
|
-
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,
|
8
|
+
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';
|
9
9
|
import { map, tap, filter, switchMap, takeUntil, shareReplay, debounceTime, take, first, catchError, startWith, finalize } from 'rxjs/operators';
|
10
10
|
import { HubConnectionBuilder, HubConnectionState } from '@microsoft/signalr';
|
11
11
|
import dayjs from 'dayjs';
|
@@ -131,8 +131,7 @@ import * as i9$5 from '@syncfusion/ej2-angular-spreadsheet';
|
|
131
131
|
import { Spreadsheet, isNumber, SpreadsheetModule, SelectionService as SelectionService$2, BasicModuleService, ClipboardService, CellFormatService, KeyboardNavigationService, KeyboardShortcutService, NumberFormatService } from '@syncfusion/ej2-angular-spreadsheet';
|
132
132
|
import * as i4 from '@ctrl/ngx-emoji-mart';
|
133
133
|
import { PickerModule } from '@ctrl/ngx-emoji-mart';
|
134
|
-
import { Diagram, UndoRedo, ConnectorBridging, ConnectorEditing, Snapping, SymbolPalette, BpmnDiagrams,
|
135
|
-
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';
|
134
|
+
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';
|
136
135
|
import * as i9$3 from '@syncfusion/ej2-angular-schedule';
|
137
136
|
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';
|
138
137
|
import * as i10$1 from '@syncfusion/ej2-angular-kanban';
|
@@ -1307,7 +1306,7 @@ const STRINGS = {
|
|
1307
1306
|
Reassign: 'Reassign',
|
1308
1307
|
ReassignAll: 'Reassign all',
|
1309
1308
|
ShowAll: 'Show All',
|
1310
|
-
OutOfOfficeOn: 'You are set as <i>out of office</i>. Your messages are
|
1309
|
+
OutOfOfficeOn: 'You are set as <i>out of office</i>. Your messages are forwarded to <em>{0}</em>',
|
1311
1310
|
Dismiss: 'Dismiss',
|
1312
1311
|
ChangeOptions: 'Options',
|
1313
1312
|
Impersonating: 'You logged in on behalf of {0}',
|
@@ -13313,9 +13312,9 @@ class WorkflowNodeComponent {
|
|
13313
13312
|
this._fb = _fb;
|
13314
13313
|
this._pane = _pane;
|
13315
13314
|
this.change = new EventEmitter();
|
13316
|
-
this.
|
13317
|
-
action:
|
13318
|
-
case:
|
13315
|
+
this.connector = this._fb.group({
|
13316
|
+
action: null,
|
13317
|
+
case: null
|
13319
13318
|
});
|
13320
13319
|
this._elementDestroy = new Subject();
|
13321
13320
|
this.actions = _session.profile.actions;
|
@@ -13323,29 +13322,47 @@ class WorkflowNodeComponent {
|
|
13323
13322
|
ngOnInit() {
|
13324
13323
|
this._pane.dataChange.subscribe(d => {
|
13325
13324
|
this.nodes = d['nodes'];
|
13325
|
+
this.diagram = d['diagram'];
|
13326
13326
|
this.connectors = d['connectors'];
|
13327
13327
|
this.tool = null;
|
13328
13328
|
this._elementDestroy.next();
|
13329
|
+
this.argumentstemplate.clear();
|
13329
13330
|
if (this.connectors.length) {
|
13330
|
-
this.connectorInfo.valueChanges.pipe(takeUntil$1(this._elementDestroy)).subscribe(() => {
|
13331
|
-
this.connectors.forEach(c => {
|
13332
|
-
Object.assign(c.addInfo, this.connectorInfo.getRawValue());
|
13333
|
-
this.change.emit();
|
13334
|
-
});
|
13335
|
-
});
|
13336
13331
|
const connector = this.connectors[0];
|
13337
|
-
|
13338
|
-
|
13339
|
-
|
13340
|
-
|
13341
|
-
|
13342
|
-
|
13343
|
-
}
|
13332
|
+
if (connector.addInfo) {
|
13333
|
+
const action = connector.addInfo['action'], acase = connector.addInfo['case'];
|
13334
|
+
this.connector.patchValue({
|
13335
|
+
action: this.connectors.length === 1 || this.connectors.every(c => c.addInfo && c.addInfo['action'] === action) ? action : null,
|
13336
|
+
case: this.connectors.length === 1 || this.connectors.every(c => c.addInfo && c.addInfo['case'] === acase) ? acase : null
|
13337
|
+
});
|
13338
|
+
}
|
13344
13339
|
this._pane.title = this._translate.get(this.connectors.length === 1 ? 'Connector' : 'Connectors', this.connectors.length);
|
13345
13340
|
this._pane.icon = 'link';
|
13341
|
+
this.connector.valueChanges.pipe(takeUntil$1(this._elementDestroy)).subscribe(v => {
|
13342
|
+
const content = v['case'] || v['action'];
|
13343
|
+
if (!connector.addInfo)
|
13344
|
+
connector.addInfo = this.connector.getRawValue();
|
13345
|
+
else
|
13346
|
+
Object.assign(connector.addInfo, this.connector.getRawValue());
|
13347
|
+
cleanup(connector.addInfo);
|
13348
|
+
if (connector.annotations.length) {
|
13349
|
+
connector.annotations[0].content = content;
|
13350
|
+
this.diagram.dataBind();
|
13351
|
+
}
|
13352
|
+
else
|
13353
|
+
this.diagram.addConnectorLabels(connector, [{
|
13354
|
+
style: {
|
13355
|
+
color: this._session.theme.dark ? 'white' : 'black',
|
13356
|
+
fill: 'transparent',
|
13357
|
+
opacity: .8,
|
13358
|
+
},
|
13359
|
+
content
|
13360
|
+
}]);
|
13361
|
+
this.change.emit();
|
13362
|
+
});
|
13363
|
+
this.argumentstemplate.createEmbeddedView(this.connectorargs);
|
13346
13364
|
}
|
13347
|
-
|
13348
|
-
if (this.nodes.length) {
|
13365
|
+
else {
|
13349
13366
|
const node = this.node = this.nodes[0], addInfo = node.addInfo;
|
13350
13367
|
if (addInfo && addInfo.nodeType) {
|
13351
13368
|
const nodeType = addInfo.nodeType;
|
@@ -13353,10 +13370,23 @@ class WorkflowNodeComponent {
|
|
13353
13370
|
this._pane.title = tool.title;
|
13354
13371
|
const annotationArg = tool.arguments.find(a => a.diagram);
|
13355
13372
|
function change(m) {
|
13356
|
-
if (annotationArg && m[annotationArg.name] !== null
|
13357
|
-
node.annotations
|
13373
|
+
if (annotationArg && m[annotationArg.name] !== null) {
|
13374
|
+
if (node.annotations.length) {
|
13375
|
+
node.annotations[0].content = m[annotationArg.name] || null;
|
13376
|
+
this.diagram.dataBind();
|
13377
|
+
}
|
13378
|
+
else
|
13379
|
+
this.diagram.addNodeLabels(node, [{
|
13380
|
+
style: {
|
13381
|
+
color: this._session.theme.dark ? 'white' : 'black',
|
13382
|
+
fill: 'transparent',
|
13383
|
+
opacity: .8,
|
13384
|
+
},
|
13385
|
+
content: m[annotationArg.name] || null
|
13386
|
+
}]);
|
13358
13387
|
}
|
13359
|
-
Object.assign(addInfo,
|
13388
|
+
Object.assign(addInfo, m);
|
13389
|
+
cleanup(addInfo);
|
13360
13390
|
this.change.emit();
|
13361
13391
|
}
|
13362
13392
|
if (tool.template) {
|
@@ -13389,8 +13419,8 @@ class WorkflowNodeComponent {
|
|
13389
13419
|
instance.form.patchValue(node.addInfo, { emitEvent: false });
|
13390
13420
|
return instance;
|
13391
13421
|
}
|
13392
|
-
connectorCaseChange(
|
13393
|
-
this.
|
13422
|
+
connectorCaseChange(evt) {
|
13423
|
+
this.connector.controls['case'].setValue(evt.value);
|
13394
13424
|
this.change.emit();
|
13395
13425
|
}
|
13396
13426
|
ngOnDestroy() {
|
@@ -13399,15 +13429,18 @@ class WorkflowNodeComponent {
|
|
13399
13429
|
}
|
13400
13430
|
}
|
13401
13431
|
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 });
|
13402
|
-
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<
|
13432
|
+
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 } });
|
13403
13433
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: WorkflowNodeComponent, decorators: [{
|
13404
13434
|
type: Component,
|
13405
|
-
args: [{ template: "<ng-container #arguments>\r\n</ng-container>\r\n<
|
13435
|
+
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"] }]
|
13406
13436
|
}], ctorParameters: function () { return [{ type: SessionService }, { type: BizDocComponentFactoryResolver }, { type: i0.ComponentFactoryResolver }, { type: i0.Injector }, { type: TranslateService }, { type: i1$5.FormBuilder }, { type: PaneRef }]; }, propDecorators: { change: [{
|
13407
13437
|
type: Output
|
13408
13438
|
}], argumentstemplate: [{
|
13409
13439
|
type: ViewChild,
|
13410
13440
|
args: ['arguments', { static: true, read: ViewContainerRef }]
|
13441
|
+
}], connectorargs: [{
|
13442
|
+
type: ViewChild,
|
13443
|
+
args: ['connectorargs', { static: true }]
|
13411
13444
|
}] } });
|
13412
13445
|
|
13413
13446
|
class FormService {
|
@@ -13451,15 +13484,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
|
|
13451
13484
|
|
13452
13485
|
Diagram.Inject(UndoRedo, ConnectorBridging, ConnectorEditing, Snapping);
|
13453
13486
|
SymbolPalette.Inject(BpmnDiagrams);
|
13454
|
-
|
13455
|
-
|
13456
|
-
|
13457
|
-
|
13458
|
-
|
13459
|
-
|
13460
|
-
];
|
13461
|
-
return ports;
|
13462
|
-
}
|
13487
|
+
const ports = [
|
13488
|
+
{ id: 'port1', shape: 'Circle', offset: { x: 0, y: 0.5 }, visibility: PortVisibility.Connect | PortVisibility.Hover, constraints: PortConstraints.Default | PortConstraints.Draw },
|
13489
|
+
{ id: 'port2', shape: 'Circle', offset: { x: 0.5, y: 1 }, visibility: PortVisibility.Connect | PortVisibility.Hover, constraints: PortConstraints.Default | PortConstraints.Draw },
|
13490
|
+
{ id: 'port3', shape: 'Circle', offset: { x: 1, y: 0.5 }, visibility: PortVisibility.Connect | PortVisibility.Hover, constraints: PortConstraints.Default | PortConstraints.Draw },
|
13491
|
+
{ id: 'port4', shape: 'Circle', offset: { x: 0.5, y: 0 }, visibility: PortVisibility.Connect | PortVisibility.Hover, constraints: PortConstraints.Default | PortConstraints.Draw }
|
13492
|
+
];
|
13463
13493
|
function showPaletteIcon() {
|
13464
13494
|
const paletteSpace = document.getElementById('palette-space');
|
13465
13495
|
const isMobile = window.matchMedia('(max-width:550px)').matches;
|
@@ -13481,26 +13511,6 @@ function paletteIconClick() {
|
|
13481
13511
|
}
|
13482
13512
|
}
|
13483
13513
|
}
|
13484
|
-
//Defines the tool
|
13485
|
-
class DrawTool extends ConnectorDrawingTool {
|
13486
|
-
constructor(diagram, segments) {
|
13487
|
-
super(diagram.commandHandler, 'ConnectorSourceEnd', null);
|
13488
|
-
this.diagram = diagram;
|
13489
|
-
this.segments = segments;
|
13490
|
-
}
|
13491
|
-
mouseMove(args) {
|
13492
|
-
if (this.diagram.selectedItems.nodes.length) {
|
13493
|
-
this.diagram.drawingObject = {
|
13494
|
-
type: this.segments || 'Bezier',
|
13495
|
-
sourceID: this.diagram.selectedItems.nodes[0].id
|
13496
|
-
};
|
13497
|
-
this.inAction = true;
|
13498
|
-
}
|
13499
|
-
const ok = super.mouseMove(args);
|
13500
|
-
return ok;
|
13501
|
-
}
|
13502
|
-
}
|
13503
|
-
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';
|
13504
13514
|
/** workflow component*/
|
13505
13515
|
class WorkflowComponent {
|
13506
13516
|
/** workflow ctor */
|
@@ -13511,7 +13521,7 @@ class WorkflowComponent {
|
|
13511
13521
|
this._router = _router;
|
13512
13522
|
this._session = _session;
|
13513
13523
|
this._translate = _translate;
|
13514
|
-
this.
|
13524
|
+
this.fontSizes = [9, 11, 12, 13, 15, 21, 31, 41];
|
13515
13525
|
this.connectorType = 'Bezier';
|
13516
13526
|
this.alignment = 'Center';
|
13517
13527
|
this.fontSize = 12;
|
@@ -13519,71 +13529,53 @@ class WorkflowComponent {
|
|
13519
13529
|
this.dirty = false;
|
13520
13530
|
this.palettes = [];
|
13521
13531
|
this.diagramConstraints = DiagramConstraints.Default | DiagramConstraints.Bridging | DiagramConstraints.UserInteraction | DiagramConstraints.Zoom;
|
13522
|
-
this.diagramTool = DiagramTools.Default;
|
13523
|
-
//Defines the user handle collection for nodes in diagram
|
13524
|
-
this._userHandles = [
|
13525
|
-
{
|
13526
|
-
name: 'connect',
|
13527
|
-
pathData: LINK_PATH,
|
13528
|
-
visible: true,
|
13529
|
-
offset: 0,
|
13530
|
-
side: 'Right',
|
13531
|
-
displacement: 20,
|
13532
|
-
margin: { top: 0, bottom: 0, left: 0, right: 0 }
|
13533
|
-
}
|
13534
|
-
];
|
13535
13532
|
//SymbolPalette Properties
|
13536
13533
|
this.symbolMargin = { left: 10, right: 10, top: 10, bottom: 10 };
|
13537
|
-
this.snapSettings = {
|
13538
|
-
|
13534
|
+
this.snapSettings = {
|
13535
|
+
snapLineColor: this._session.getAccent(100)
|
13536
|
+
};
|
13537
|
+
this.selectedItems = {
|
13538
|
+
constraints: SelectorConstraints.All & ~SelectorConstraints.Rotate,
|
13539
|
+
};
|
13539
13540
|
this.scrollSettings = {
|
13540
13541
|
minZoom: .5,
|
13541
|
-
maxZoom: 2.5
|
13542
|
-
};
|
13543
|
-
this._rulerColor = this._session.getAccent(100);
|
13544
|
-
this.rulerSettings = {
|
13545
|
-
horizontalRuler: { markerColor: this._rulerColor },
|
13546
|
-
verticalRuler: { markerColor: this._rulerColor }
|
13542
|
+
maxZoom: 2.5,
|
13547
13543
|
};
|
13544
|
+
this.rulerSettings = {};
|
13548
13545
|
this._destroy = new Subject();
|
13549
|
-
this.
|
13550
|
-
|
13551
|
-
|
13552
|
-
|
13553
|
-
|
13554
|
-
|
13555
|
-
|
13556
|
-
|
13557
|
-
|
13558
|
-
|
13559
|
-
|
13560
|
-
|
13561
|
-
|
13562
|
-
|
13563
|
-
|
13564
|
-
|
13565
|
-
obj.width = 145;
|
13566
|
-
}
|
13567
|
-
else {
|
13568
|
-
const ratio = 100 / obj.width;
|
13569
|
-
obj.width = 100;
|
13570
|
-
obj.height *= ratio;
|
13546
|
+
this._nodedestroy = new Subject();
|
13547
|
+
this.nodeDefaults = (obj) => {
|
13548
|
+
switch (obj.shape.type) {
|
13549
|
+
case 'SwimLane':
|
13550
|
+
break;
|
13551
|
+
case 'Text':
|
13552
|
+
if (obj.id !== 'version')
|
13553
|
+
obj.constraints = NodeConstraints.Default & ~NodeConstraints.InConnect & ~NodeConstraints.OutConnect;
|
13554
|
+
break;
|
13555
|
+
default:
|
13556
|
+
if (obj.addInfo && obj.addInfo['nodeType']) {
|
13557
|
+
obj.constraints = NodeConstraints.Default | NodeConstraints.AspectRatio;
|
13558
|
+
obj.style.strokeColor = this._session.theme.dark ? 'white' : 'black';
|
13559
|
+
obj.ports = ports;
|
13560
|
+
}
|
13561
|
+
break;
|
13571
13562
|
}
|
13572
|
-
obj.constraints = NodeConstraints.Default | NodeConstraints.AspectRatio;
|
13573
|
-
obj.ports = getPorts$1();
|
13574
13563
|
return obj;
|
13575
13564
|
};
|
13576
13565
|
this.connDefaults = (obj) => {
|
13577
|
-
obj.constraints = ConnectorConstraints.Default | ConnectorConstraints.Bridging
|
13566
|
+
obj.constraints = ConnectorConstraints.Default | ConnectorConstraints.Bridging;
|
13578
13567
|
obj.style.strokeColor = this._session.theme.dark ? 'white' : 'black';
|
13568
|
+
if (!obj.type)
|
13569
|
+
obj.type = this.connectorType;
|
13570
|
+
return obj;
|
13579
13571
|
};
|
13572
|
+
this._tools = localStorage.getItem('diagram_tools') === '1';
|
13580
13573
|
this._palettes();
|
13581
13574
|
}
|
13582
|
-
|
13583
|
-
|
13584
|
-
|
13585
|
-
|
13586
|
-
return tool;
|
13575
|
+
get tools() { return this._tools; }
|
13576
|
+
set tools(val) {
|
13577
|
+
localStorage.setItem('diagram_tools', val ? '1' : '0');
|
13578
|
+
this._tools = val;
|
13587
13579
|
}
|
13588
13580
|
ngAfterViewInit() {
|
13589
13581
|
}
|
@@ -13591,11 +13583,15 @@ class WorkflowComponent {
|
|
13591
13583
|
this.symbolPalette = new SymbolPalette({
|
13592
13584
|
expandMode: 'Multiple',
|
13593
13585
|
palettes: this.palettes,
|
13594
|
-
width: "100%",
|
13595
|
-
|
13586
|
+
width: "100%",
|
13587
|
+
height: "100%",
|
13588
|
+
enableRtl: false,
|
13589
|
+
enableAnimation: false,
|
13590
|
+
symbolHeight: 80,
|
13591
|
+
symbolWidth: 80,
|
13596
13592
|
symbolMargin: this.symbolMargin,
|
13597
13593
|
getSymbolInfo: this.getSymbolInfo.bind(this),
|
13598
|
-
getNodeDefaults: this.getSymbolDefaults.bind(this)
|
13594
|
+
getNodeDefaults: this.getSymbolDefaults.bind(this),
|
13599
13595
|
});
|
13600
13596
|
this.symbolPalette.appendTo(this.symbolPaletteEl.nativeElement);
|
13601
13597
|
this.diagram = new Diagram({
|
@@ -13603,15 +13599,13 @@ class WorkflowComponent {
|
|
13603
13599
|
snapSettings: this.snapSettings,
|
13604
13600
|
getConnectorDefaults: this.connDefaults.bind(this),
|
13605
13601
|
constraints: this.diagramConstraints,
|
13606
|
-
tool: this.diagramTool,
|
13607
13602
|
getNodeDefaults: this.nodeDefaults.bind(this),
|
13608
|
-
getCustomTool: this.getTool.bind(this),
|
13609
13603
|
scrollSettings: this.scrollSettings,
|
13610
13604
|
selectedItems: this.selectedItems,
|
13611
13605
|
rulerSettings: this.rulerSettings,
|
13612
13606
|
dragEnter: this.dragEnter.bind(this),
|
13613
13607
|
connectionChange: this.change.bind(this),
|
13614
|
-
collectionChange: this.
|
13608
|
+
collectionChange: this.collectionChange.bind(this),
|
13615
13609
|
propertyChange: this.propertyChange.bind(this),
|
13616
13610
|
selectionChange: this.selectionChange.bind(this),
|
13617
13611
|
}, this.diagramEl.nativeElement);
|
@@ -13632,7 +13626,6 @@ class WorkflowComponent {
|
|
13632
13626
|
this.diagram.fitToPage();
|
13633
13627
|
this.dirty = false;
|
13634
13628
|
});
|
13635
|
-
this._pane.resized.pipe(takeUntil(this._destroy)).subscribe(() => this.diagram.refresh());
|
13636
13629
|
}
|
13637
13630
|
_palettes() {
|
13638
13631
|
this._session.profile.nodes.forEach(n => {
|
@@ -13643,6 +13636,8 @@ class WorkflowComponent {
|
|
13643
13636
|
nodeType: n.name,
|
13644
13637
|
title: n.title
|
13645
13638
|
},
|
13639
|
+
width: 145,
|
13640
|
+
height: 145,
|
13646
13641
|
};
|
13647
13642
|
node.node = n.name;
|
13648
13643
|
let palette = this.palettes.find(p => p.title === (n.palette || ''));
|
@@ -13652,8 +13647,131 @@ class WorkflowComponent {
|
|
13652
13647
|
}
|
13653
13648
|
palette.symbols.push(node);
|
13654
13649
|
});
|
13655
|
-
|
13656
|
-
|
13650
|
+
this.palettes.push({
|
13651
|
+
id: 'design',
|
13652
|
+
title: this._translate.get('Design'),
|
13653
|
+
symbols: [{
|
13654
|
+
id: 'Link22',
|
13655
|
+
type: 'Straight',
|
13656
|
+
sourcePoint: { x: 0, y: 0 },
|
13657
|
+
targetPoint: { x: 60, y: 60 },
|
13658
|
+
targetDecorator: {
|
13659
|
+
shape: 'Arrow',
|
13660
|
+
style: { strokeColor: '#757575', fill: '#757575' },
|
13661
|
+
},
|
13662
|
+
style: {
|
13663
|
+
strokeWidth: 1,
|
13664
|
+
strokeDashArray: '4 4',
|
13665
|
+
strokeColor: '#757575',
|
13666
|
+
}
|
13667
|
+
},
|
13668
|
+
{
|
13669
|
+
id: 'text', shape: { type: 'Text', content: 'T' },
|
13670
|
+
style: {
|
13671
|
+
fill: 'transparent'
|
13672
|
+
},
|
13673
|
+
constraints: NodeConstraints.Default & ~NodeConstraints.InConnect & ~NodeConstraints.OutConnect,
|
13674
|
+
addInfo: { title: this._translate.get('Text') }
|
13675
|
+
}]
|
13676
|
+
});
|
13677
|
+
const color = MATERIAL_PALETTES['grey'][200];
|
13678
|
+
this.palettes.push({
|
13679
|
+
id: 'swimlaneShapes',
|
13680
|
+
expanded: true,
|
13681
|
+
title: this._translate.get('Swimlane Shapes'),
|
13682
|
+
symbols: [
|
13683
|
+
{
|
13684
|
+
id: 'swimlane',
|
13685
|
+
addInfo: {
|
13686
|
+
title: this._translate.get('Horizontal')
|
13687
|
+
},
|
13688
|
+
shape: {
|
13689
|
+
header: {
|
13690
|
+
annotation: { content: 'Plan' }
|
13691
|
+
},
|
13692
|
+
type: 'SwimLane',
|
13693
|
+
lanes: [
|
13694
|
+
{
|
13695
|
+
id: 'lane1',
|
13696
|
+
header: {
|
13697
|
+
annotation: { content: 'Lane' },
|
13698
|
+
style: { fill: color }
|
13699
|
+
}
|
13700
|
+
}
|
13701
|
+
],
|
13702
|
+
orientation: 'Horizontal',
|
13703
|
+
isLane: true
|
13704
|
+
},
|
13705
|
+
height: 60,
|
13706
|
+
width: 140,
|
13707
|
+
offsetX: 70,
|
13708
|
+
offsetY: 30,
|
13709
|
+
}, {
|
13710
|
+
id: 'vswimlane',
|
13711
|
+
addInfo: {
|
13712
|
+
title: this._translate.get('Vertical')
|
13713
|
+
},
|
13714
|
+
shape: {
|
13715
|
+
type: 'SwimLane',
|
13716
|
+
header: {
|
13717
|
+
annotation: { content: 'Plan' }
|
13718
|
+
},
|
13719
|
+
lanes: [
|
13720
|
+
{
|
13721
|
+
id: 'lane1',
|
13722
|
+
header: {
|
13723
|
+
annotation: { content: 'Lane' },
|
13724
|
+
style: { fill: color }
|
13725
|
+
}
|
13726
|
+
}
|
13727
|
+
],
|
13728
|
+
orientation: 'Vertical', isLane: true
|
13729
|
+
},
|
13730
|
+
height: 140,
|
13731
|
+
width: 60,
|
13732
|
+
offsetX: 70,
|
13733
|
+
offsetY: 30,
|
13734
|
+
}, {
|
13735
|
+
id: 'vphase',
|
13736
|
+
addInfo: {
|
13737
|
+
title: this._translate.get('Phase')
|
13738
|
+
},
|
13739
|
+
shape: {
|
13740
|
+
type: 'SwimLane',
|
13741
|
+
phases: [
|
13742
|
+
{
|
13743
|
+
style: { strokeWidth: 1, strokeDashArray: '3,3', strokeColor: color },
|
13744
|
+
header: {
|
13745
|
+
annotation: { text: 'Phase' }
|
13746
|
+
}
|
13747
|
+
}
|
13748
|
+
],
|
13749
|
+
orientation: 'Vertical', isPhase: true
|
13750
|
+
},
|
13751
|
+
height: 60,
|
13752
|
+
width: 140,
|
13753
|
+
style: { strokeColor: color }
|
13754
|
+
}, {
|
13755
|
+
id: 'hphase',
|
13756
|
+
addInfo: {
|
13757
|
+
title: this._translate.get('Phase')
|
13758
|
+
},
|
13759
|
+
shape: {
|
13760
|
+
type: 'SwimLane',
|
13761
|
+
phases: [{
|
13762
|
+
style: { strokeWidth: 1, strokeDashArray: '3,3', strokeColor: color },
|
13763
|
+
header: {
|
13764
|
+
annotation: { text: 'Phase' }
|
13765
|
+
}
|
13766
|
+
}],
|
13767
|
+
orientation: 'Horizontal', isPhase: true
|
13768
|
+
},
|
13769
|
+
height: 60,
|
13770
|
+
width: 140,
|
13771
|
+
style: { strokeColor: color }
|
13772
|
+
}
|
13773
|
+
]
|
13774
|
+
});
|
13657
13775
|
}
|
13658
13776
|
_versionNode(version) {
|
13659
13777
|
return {
|
@@ -13674,15 +13792,14 @@ class WorkflowComponent {
|
|
13674
13792
|
};
|
13675
13793
|
}
|
13676
13794
|
getSymbolInfo(symbol) {
|
13677
|
-
return {
|
13795
|
+
return symbol.addInfo ? {
|
13678
13796
|
fit: true,
|
13679
13797
|
tooltip: symbol.addInfo.title,
|
13680
13798
|
description: { text: symbol.addInfo.title, overflow: 'Wrap', wrap: 'WrapWithOverflow' }
|
13681
|
-
};
|
13799
|
+
} : null;
|
13682
13800
|
}
|
13683
13801
|
getSymbolDefaults(symbol) {
|
13684
13802
|
symbol.width = symbol.height = 40;
|
13685
|
-
symbol.constraints = NodeConstraints.Default | NodeConstraints.AspectRatio;
|
13686
13803
|
}
|
13687
13804
|
pan() {
|
13688
13805
|
this.diagram.constraints = this.diagram.constraints | DiagramConstraints.Pan;
|
@@ -13693,51 +13810,45 @@ class WorkflowComponent {
|
|
13693
13810
|
this.diagram.tool = DiagramTools.Default;
|
13694
13811
|
}
|
13695
13812
|
selectionChange(evt) {
|
13696
|
-
const {
|
13697
|
-
if (
|
13698
|
-
|
13699
|
-
|
13700
|
-
this.diagram.selectedItems.userHandles = this._userHandles;
|
13701
|
-
}
|
13702
|
-
else
|
13703
|
-
this.diagram.selectedItems.constraints = SelectorConstraints.All ^ SelectorConstraints.UserHandle;
|
13704
|
-
if (connectors.length) {
|
13705
|
-
const connector = connectors[0];
|
13706
|
-
connectors.forEach(c => { if (!c.addInfo)
|
13707
|
-
c.addInfo = {}; });
|
13708
|
-
const type = connector.type;
|
13709
|
-
this.connectorType = connectors.length === 1 || connectors.every(c => c.type === type) ? type : null;
|
13710
|
-
if (connector.annotations.length)
|
13711
|
-
this.fontSize = connector.annotations[0].style.fontSize;
|
13712
|
-
this.connectorType = connectors.length === 1 || connectors.every(c => c.type === type) ? type : null;
|
13713
|
-
}
|
13714
|
-
if (nodes.length) {
|
13715
|
-
const node = nodes[0], addInfo = node.addInfo;
|
13716
|
-
if (addInfo && addInfo.nodeType) {
|
13717
|
-
if (node.annotations.length)
|
13718
|
-
this.fontSize = node.annotations[0].style.fontSize;
|
13719
|
-
}
|
13720
|
-
}
|
13721
|
-
this._router.navigate(WorkflowNodeComponent, {
|
13722
|
-
state: {
|
13723
|
-
nodes, connectors
|
13724
|
-
},
|
13725
|
-
policy: OpenPolicy.Tab,
|
13726
|
-
expandable: false,
|
13727
|
-
group: ''
|
13728
|
-
}).then(p => {
|
13729
|
-
p.instance.change.
|
13730
|
-
pipe(takeUntil(this._destroy)).subscribe(() => {
|
13731
|
-
this.dirty = true;
|
13732
|
-
this.diagram.dataBind();
|
13733
|
-
});
|
13734
|
-
});
|
13813
|
+
const { newValue, state } = evt;
|
13814
|
+
if (state !== 'Changing' || !newValue.length) {
|
13815
|
+
this._nodedestroy.next();
|
13816
|
+
return;
|
13735
13817
|
}
|
13736
|
-
|
13737
|
-
|
13818
|
+
const connectors = newValue.filter(n => n instanceof Connector).map(n => n);
|
13819
|
+
if (connectors.length) {
|
13820
|
+
const connector = connectors[0], type = connector.type;
|
13821
|
+
this.connectorType = connectors.length === 1 ||
|
13822
|
+
connectors.every(c => c.type === type) ? type : null;
|
13823
|
+
if (connector.annotations.length && connector.annotations[0].style)
|
13824
|
+
this.fontSize = connector.annotations[0].style.fontSize;
|
13825
|
+
this.connectorType = connectors.length === 1 ||
|
13826
|
+
connectors.every(c => c.type === type) ? type : null;
|
13827
|
+
}
|
13828
|
+
const nodes = newValue.filter(n => n instanceof Node);
|
13829
|
+
if (nodes.length) {
|
13830
|
+
const node = nodes[0], addInfo = node.addInfo;
|
13831
|
+
if (!addInfo || !addInfo['nodeType'])
|
13832
|
+
return;
|
13833
|
+
if (node.annotations.length && node.annotations[0].style)
|
13834
|
+
this.fontSize = node.annotations[0].style.fontSize;
|
13835
|
+
}
|
13836
|
+
this._router.navigate(WorkflowNodeComponent, {
|
13837
|
+
state: {
|
13838
|
+
diagram: this.diagram,
|
13839
|
+
nodes,
|
13840
|
+
connectors
|
13841
|
+
},
|
13842
|
+
policy: OpenPolicy.Tab,
|
13843
|
+
expandable: false,
|
13844
|
+
group: ''
|
13845
|
+
}).then(p => {
|
13846
|
+
p.instance.change.pipe(takeUntil(this._nodedestroy)).subscribe(() => this.change());
|
13847
|
+
this._nodedestroy.pipe(first$1()).subscribe(() => p.close());
|
13848
|
+
});
|
13738
13849
|
}
|
13739
13850
|
align(value) {
|
13740
|
-
|
13851
|
+
this.diagram.selectedItems.nodes.forEach(n => {
|
13741
13852
|
n.annotations.length && Object.assign(n.annotations[0], {
|
13742
13853
|
offset: {
|
13743
13854
|
x: value === 'Right' ? 1 : value === 'Left' ? 0 : .5,
|
@@ -13746,21 +13857,51 @@ class WorkflowComponent {
|
|
13746
13857
|
verticalAlignment: value === 'Top' ? 'Bottom' : value === 'Bottom' ? 'Top' : 'Center',
|
13747
13858
|
horizontalAlignment: value === 'Right' ? 'Left' : value === 'Left' ? 'Right' : 'Center'
|
13748
13859
|
});
|
13749
|
-
}
|
13750
|
-
this.diagram.selectedItems.
|
13751
|
-
|
13860
|
+
});
|
13861
|
+
this.diagram.selectedItems.connectors.forEach(c => c.annotations.forEach(a => Object.assign(a, {
|
13862
|
+
verticalAlignment: value === 'Top' ? 'Bottom' : value === 'Bottom' ? 'Top' : 'Center',
|
13863
|
+
horizontalAlignment: value === 'Left' ? 'Left' : value === 'Right' ? 'Right' : 'Center',
|
13864
|
+
// displacement: {
|
13865
|
+
// x: value === 'Right' ? 10 : value === 'Left' ? -10 : 0,
|
13866
|
+
// y: value === 'Top' ? -10 : value === 'Bottom' ? 10 : 0
|
13867
|
+
// }
|
13868
|
+
})));
|
13752
13869
|
this.alignment = value;
|
13753
13870
|
this.dirty = true;
|
13754
13871
|
}
|
13755
13872
|
dragEnter(args) {
|
13756
|
-
|
13757
|
-
|
13758
|
-
|
13759
|
-
|
13760
|
-
|
13761
|
-
|
13762
|
-
|
13763
|
-
|
13873
|
+
if (args.element instanceof Node) {
|
13874
|
+
switch (args.element.shape.type) {
|
13875
|
+
case 'SwimLane':
|
13876
|
+
{
|
13877
|
+
const shape = args.element.shape;
|
13878
|
+
switch (shape.orientation) {
|
13879
|
+
case 'Horizontal':
|
13880
|
+
shape.lanes[0].width = 400;
|
13881
|
+
break;
|
13882
|
+
case 'Vertical':
|
13883
|
+
shape.lanes[0].height = 400;
|
13884
|
+
break;
|
13885
|
+
}
|
13886
|
+
break;
|
13887
|
+
}
|
13888
|
+
case 'Text':
|
13889
|
+
//(args.element.style as TextStyleModel).fontSize = 20;
|
13890
|
+
break;
|
13891
|
+
default:
|
13892
|
+
{
|
13893
|
+
const { width, height } = args.element;
|
13894
|
+
args.element.width = 100;
|
13895
|
+
args.element.height *= 100 / width;
|
13896
|
+
args.element.offsetX += (args.element.width - width) / 2;
|
13897
|
+
args.element.offsetY += (args.element.height - height) / 2;
|
13898
|
+
args.element.style = {
|
13899
|
+
fill: 'transparent',
|
13900
|
+
strokeColor: this._session.theme.dark ? 'white' : 'black',
|
13901
|
+
strokeWidth: 1
|
13902
|
+
};
|
13903
|
+
}
|
13904
|
+
}
|
13764
13905
|
}
|
13765
13906
|
}
|
13766
13907
|
propertyChange(e) {
|
@@ -13770,14 +13911,9 @@ class WorkflowComponent {
|
|
13770
13911
|
change() {
|
13771
13912
|
this.dirty = true;
|
13772
13913
|
}
|
13773
|
-
|
13774
|
-
this.
|
13775
|
-
|
13776
|
-
type: 'Text',
|
13777
|
-
},
|
13778
|
-
constraints: NodeConstraints.Default & ~NodeConstraints.InConnect & ~NodeConstraints.OutConnect
|
13779
|
-
};
|
13780
|
-
this.diagram.tool = DiagramTools.DrawOnce;
|
13914
|
+
collectionChange() {
|
13915
|
+
this._router.collapse();
|
13916
|
+
this.dirty = true;
|
13781
13917
|
}
|
13782
13918
|
/**
|
13783
13919
|
* Ctrl-s save
|
@@ -13803,8 +13939,54 @@ class WorkflowComponent {
|
|
13803
13939
|
this.connectorType = type;
|
13804
13940
|
this.dirty = true;
|
13805
13941
|
}
|
13806
|
-
|
13807
|
-
this.diagram.selectedItems.nodes.
|
13942
|
+
boldChange() {
|
13943
|
+
const val = !this.diagram.selectedItems.nodes[0].annotations[0]?.style?.bold;
|
13944
|
+
function change(node) {
|
13945
|
+
if (node.shape.type === 'Text')
|
13946
|
+
node.style.bold = val;
|
13947
|
+
else
|
13948
|
+
node.annotations.forEach(a => {
|
13949
|
+
if (!a.style)
|
13950
|
+
a.style = { bold: val };
|
13951
|
+
else
|
13952
|
+
a.style.bold = val;
|
13953
|
+
});
|
13954
|
+
}
|
13955
|
+
this.diagram.selectedItems.nodes.forEach(change);
|
13956
|
+
this.diagram.selectedItems.connectors.forEach(change);
|
13957
|
+
this.diagram.dataBind();
|
13958
|
+
}
|
13959
|
+
italicChange() {
|
13960
|
+
const val = !this.diagram.selectedItems.nodes[0].annotations[0]?.style?.italic;
|
13961
|
+
function change(node) {
|
13962
|
+
if (node.shape.type === 'Text')
|
13963
|
+
node.style.italic = val;
|
13964
|
+
else
|
13965
|
+
node.annotations.forEach(a => {
|
13966
|
+
if (!a.style)
|
13967
|
+
a.style = { italic: val };
|
13968
|
+
else
|
13969
|
+
a.style.italic = val;
|
13970
|
+
});
|
13971
|
+
}
|
13972
|
+
this.diagram.selectedItems.nodes.forEach(change);
|
13973
|
+
this.diagram.selectedItems.connectors.forEach(change);
|
13974
|
+
this.diagram.dataBind();
|
13975
|
+
}
|
13976
|
+
fontSizeChange(val) {
|
13977
|
+
function change(node) {
|
13978
|
+
if (node.shape.type === 'Text')
|
13979
|
+
node.style.fontSize = val;
|
13980
|
+
else
|
13981
|
+
node.annotations?.forEach(a => {
|
13982
|
+
if (!a.style)
|
13983
|
+
a.style = { fontSize: val };
|
13984
|
+
else
|
13985
|
+
a.style.fontSize = val;
|
13986
|
+
});
|
13987
|
+
}
|
13988
|
+
this.diagram.selectedItems.nodes.forEach(change);
|
13989
|
+
this.diagram.selectedItems.connectors.forEach(change);
|
13808
13990
|
this.diagram.dataBind();
|
13809
13991
|
}
|
13810
13992
|
strokeChange(val) {
|
@@ -13820,11 +14002,7 @@ class WorkflowComponent {
|
|
13820
14002
|
this.diagram.serializationSettings = { preventDefaults: true };
|
13821
14003
|
const obj = JSON.parse(this.diagram.saveDiagram());
|
13822
14004
|
this._form.workflow.connectors = obj.connectors;
|
13823
|
-
this._form.workflow.nodes = obj.nodes.filter(n => n.id !== 'version')
|
13824
|
-
n.offsetX = Math.round(n.offsetX);
|
13825
|
-
n.offsetY = Math.round(n.offsetY);
|
13826
|
-
return n;
|
13827
|
-
});
|
14005
|
+
this._form.workflow.nodes = obj.nodes.filter(n => n.id !== 'version');
|
13828
14006
|
this.saving = true;
|
13829
14007
|
return this._service.save(this._form).toPromise().then(v => {
|
13830
14008
|
this.ps.toast('ChangesSaved');
|
@@ -13847,15 +14025,17 @@ class WorkflowComponent {
|
|
13847
14025
|
this.diagram?.destroy();
|
13848
14026
|
this._destroy.next();
|
13849
14027
|
this._destroy.complete();
|
14028
|
+
this._nodedestroy.next();
|
14029
|
+
this._nodedestroy.complete();
|
13850
14030
|
}
|
13851
14031
|
}
|
13852
14032
|
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 });
|
13853
|
-
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)=\"
|
14033
|
+
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 } });
|
13854
14034
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: WorkflowComponent, decorators: [{
|
13855
14035
|
type: Component,
|
13856
14036
|
args: [{ selector: 'bizdoc-workflow', host: {
|
13857
14037
|
class: 'pane'
|
13858
|
-
}, 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)=\"
|
14038
|
+
}, 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"] }]
|
13859
14039
|
}], ctorParameters: function () { return [{ type: PromptService }, { type: FormService }, { type: PaneRef }, { type: PanesRouter }, { type: SessionService }, { type: TranslateService }]; }, propDecorators: { symbolPaletteEl: [{
|
13860
14040
|
type: ViewChild,
|
13861
14041
|
args: ['symbolPaletteEl', { static: true }]
|
@@ -14066,11 +14246,11 @@ class FlowViewComponent extends TraceBase {
|
|
14066
14246
|
this._duration = _duration;
|
14067
14247
|
this._elementRef = _elementRef;
|
14068
14248
|
this.connectorType = 'Orthogonal';
|
14069
|
-
this.tool = DiagramTools
|
14070
|
-
this.diagramConstraints = DiagramConstraints
|
14071
|
-
DiagramConstraints
|
14072
|
-
DiagramConstraints
|
14073
|
-
DiagramConstraints
|
14249
|
+
this.tool = DiagramTools.ZoomPan;
|
14250
|
+
this.diagramConstraints = DiagramConstraints.Default |
|
14251
|
+
DiagramConstraints.Pan |
|
14252
|
+
DiagramConstraints.LineRouting |
|
14253
|
+
DiagramConstraints.Zoom;
|
14074
14254
|
this.layout = {
|
14075
14255
|
type: 'ComplexHierarchicalTree',
|
14076
14256
|
connectionPointOrigin: ConnectionPointOrigin.DifferentPoint,
|
@@ -14108,7 +14288,7 @@ class FlowViewComponent extends TraceBase {
|
|
14108
14288
|
async _initialize() {
|
14109
14289
|
const { connectors, nodes, indicators } = await this._prepare();
|
14110
14290
|
this.diagram && this.diagram.destroy();
|
14111
|
-
this.diagram = new Diagram
|
14291
|
+
this.diagram = new Diagram({
|
14112
14292
|
width: '100%',
|
14113
14293
|
height: 380,
|
14114
14294
|
nodes,
|
@@ -14250,8 +14430,8 @@ class FlowViewComponent extends TraceBase {
|
|
14250
14430
|
position: 'TopCenter'
|
14251
14431
|
},
|
14252
14432
|
constraints: content ?
|
14253
|
-
NodeConstraints
|
14254
|
-
NodeConstraints
|
14433
|
+
NodeConstraints.Default | NodeConstraints.Tooltip :
|
14434
|
+
NodeConstraints.Default,
|
14255
14435
|
addInfo: {
|
14256
14436
|
tooltip,
|
14257
14437
|
recipient,
|
@@ -14341,8 +14521,8 @@ class FlowViewComponent extends TraceBase {
|
|
14341
14521
|
position: 'TopCenter'
|
14342
14522
|
},
|
14343
14523
|
constraints: content ?
|
14344
|
-
NodeConstraints
|
14345
|
-
NodeConstraints
|
14524
|
+
NodeConstraints.Default | NodeConstraints.Tooltip :
|
14525
|
+
NodeConstraints.Default,
|
14346
14526
|
addInfo: {
|
14347
14527
|
tooltip,
|
14348
14528
|
node
|
@@ -15254,24 +15434,41 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
|
|
15254
15434
|
type: Injectable
|
15255
15435
|
}], ctorParameters: function () { return [{ type: MailboxService }]; } });
|
15256
15436
|
|
15437
|
+
class SaveChangesDialog {
|
15438
|
+
ngOnInit() {
|
15439
|
+
playAudio('alert_error-03');
|
15440
|
+
}
|
15441
|
+
}
|
15442
|
+
SaveChangesDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: SaveChangesDialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
15443
|
+
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 } });
|
15444
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: SaveChangesDialog, decorators: [{
|
15445
|
+
type: Component,
|
15446
|
+
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" }]
|
15447
|
+
}] });
|
15448
|
+
|
15257
15449
|
class AdminDismiss {
|
15258
|
-
constructor(
|
15259
|
-
this.
|
15450
|
+
constructor(_dialog) {
|
15451
|
+
this._dialog = _dialog;
|
15260
15452
|
}
|
15261
15453
|
onDismiss(component) {
|
15262
15454
|
if (component.dirty)
|
15263
|
-
return
|
15264
|
-
|
15265
|
-
|
15455
|
+
return new Promise((resolve, reject) => this._dialog.open(SaveChangesDialog).
|
15456
|
+
afterClosed().
|
15457
|
+
subscribe(ok => {
|
15458
|
+
if (ok)
|
15459
|
+
component.save().then(() => resolve(true), reject);
|
15460
|
+
else
|
15461
|
+
resolve(ok !== false);
|
15462
|
+
}));
|
15266
15463
|
else
|
15267
15464
|
return true;
|
15268
15465
|
}
|
15269
15466
|
}
|
15270
|
-
AdminDismiss.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AdminDismiss, deps: [{ token:
|
15467
|
+
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 });
|
15271
15468
|
AdminDismiss.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AdminDismiss });
|
15272
15469
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AdminDismiss, decorators: [{
|
15273
15470
|
type: Injectable
|
15274
|
-
}], ctorParameters: function () { return [{ type:
|
15471
|
+
}], ctorParameters: function () { return [{ type: i3$1.MatDialog }]; } });
|
15275
15472
|
|
15276
15473
|
class AgoPipe {
|
15277
15474
|
constructor(_translate) {
|
@@ -15525,18 +15722,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
|
|
15525
15722
|
}]
|
15526
15723
|
}], ctorParameters: function () { return [{ type: PanesRouter }, { type: i0.ElementRef }, { type: TranslateService }, { type: PaneRef }]; } });
|
15527
15724
|
|
15528
|
-
class SaveChangesDialog {
|
15529
|
-
ngOnInit() {
|
15530
|
-
playAudio('alert_error-03');
|
15531
|
-
}
|
15532
|
-
}
|
15533
|
-
SaveChangesDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: SaveChangesDialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
15534
|
-
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 } });
|
15535
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: SaveChangesDialog, decorators: [{
|
15536
|
-
type: Component,
|
15537
|
-
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" }]
|
15538
|
-
}] });
|
15539
|
-
|
15540
15725
|
class ComposeDismiss {
|
15541
15726
|
constructor(_dialog) {
|
15542
15727
|
this._dialog = _dialog;
|
@@ -21170,7 +21355,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
|
|
21170
21355
|
providers: [ConnectorBridgingService, LineRoutingService, ComplexHierarchicalTreeService, BpmnDiagramsService, LayoutAnimationService, UndoRedoService, SnappingService, ConnectorEditingService, LineDistributionService]
|
21171
21356
|
}]
|
21172
21357
|
}] });
|
21173
|
-
Diagram
|
21358
|
+
Diagram.Inject(ComplexHierarchicalTree, BpmnDiagrams, DataBinding, LineDistribution /*, LayoutAnimation, LineRouting, ConnectorBridging*/);
|
21174
21359
|
|
21175
21360
|
class SyncfusionGridModule {
|
21176
21361
|
}
|
@@ -24657,7 +24842,7 @@ class ColorPicker {
|
|
24657
24842
|
}
|
24658
24843
|
ColorPicker.nextId = 0;
|
24659
24844
|
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 });
|
24660
|
-
ColorPicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: ColorPicker, selector: "
|
24845
|
+
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()'>
|
24661
24846
|
<span>{{label}}</span>
|
24662
24847
|
<mat-icon>arrow_drop_down</mat-icon>
|
24663
24848
|
</button>
|
@@ -24670,7 +24855,7 @@ ColorPicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "
|
|
24670
24855
|
</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"] }] });
|
24671
24856
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ColorPicker, decorators: [{
|
24672
24857
|
type: Component,
|
24673
|
-
args: [{ selector: '
|
24858
|
+
args: [{ selector: 'bizdoc-color-picker', providers: [{ provide: MatFormFieldControl, useExisting: ColorPicker }], template: `<button mat-button (click)='open()'>
|
24674
24859
|
<span>{{label}}</span>
|
24675
24860
|
<mat-icon>arrow_drop_down</mat-icon>
|
24676
24861
|
</button>
|
@@ -28883,11 +29068,11 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
28883
29068
|
this.theme = this._session.theme.dark ? 'MaterialDark' : 'Material';
|
28884
29069
|
this.accent = this._session.getAccent();
|
28885
29070
|
this.form = this._fb.group({ search: null, formId: null });
|
28886
|
-
this.diagramConstraints = DiagramConstraints
|
28887
|
-
DiagramConstraints
|
28888
|
-
DiagramConstraints
|
28889
|
-
DiagramConstraints
|
28890
|
-
this.diagramTool = DiagramTools
|
29071
|
+
this.diagramConstraints = DiagramConstraints.Default | DiagramConstraints.Bridging |
|
29072
|
+
DiagramConstraints.LineRouting |
|
29073
|
+
DiagramConstraints.Pan |
|
29074
|
+
DiagramConstraints.Zoom;
|
29075
|
+
this.diagramTool = DiagramTools.SingleSelect;
|
28891
29076
|
this.layout = {
|
28892
29077
|
type: 'ComplexHierarchicalTree',
|
28893
29078
|
connectionPointOrigin: ConnectionPointOrigin.DifferentPoint,
|
@@ -28906,7 +29091,7 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
28906
29091
|
this._accentColor = this._session.getAccent(800);
|
28907
29092
|
this._primeryColor = this._session.getPrimery();
|
28908
29093
|
this.selectedItems = {
|
28909
|
-
constraints: SelectorConstraints
|
29094
|
+
constraints: SelectorConstraints.UserHandle,
|
28910
29095
|
userHandles: [
|
28911
29096
|
{
|
28912
29097
|
name: 'info',
|
@@ -28933,13 +29118,13 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
28933
29118
|
this.nodeDefaults = (node) => {
|
28934
29119
|
const { indicator, virtual } = node.addInfo || {};
|
28935
29120
|
if (indicator) {
|
28936
|
-
node.constraints = NodeConstraints
|
29121
|
+
node.constraints = NodeConstraints.PointerEvents | NodeConstraints.Tooltip,
|
28937
29122
|
node.style.strokeWidth = 0,
|
28938
29123
|
node.width = node.height = 15;
|
28939
29124
|
}
|
28940
29125
|
else if (node.id !== 'version') {
|
28941
|
-
node.constraints = NodeConstraints
|
28942
|
-
NodeConstraints
|
29126
|
+
node.constraints = NodeConstraints.InConnect | NodeConstraints.OutConnect |
|
29127
|
+
NodeConstraints.PointerEvents | NodeConstraints.Select;
|
28943
29128
|
this._decorateNode(node);
|
28944
29129
|
node.ports = getPorts();
|
28945
29130
|
}
|
@@ -28947,7 +29132,7 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
28947
29132
|
};
|
28948
29133
|
this.connDefaults = (connector) => {
|
28949
29134
|
const { virtual } = connector.addInfo || {};
|
28950
|
-
connector.constraints = ConnectorConstraints
|
29135
|
+
connector.constraints = ConnectorConstraints.ReadOnly & ~ConnectorConstraints.Select;
|
28951
29136
|
this._decorateConnector(connector);
|
28952
29137
|
};
|
28953
29138
|
}
|
@@ -29038,7 +29223,7 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
29038
29223
|
this.mode = 'diagram';
|
29039
29224
|
this.loading = null;
|
29040
29225
|
this._cd.detectChanges();
|
29041
|
-
this.diagram = new Diagram
|
29226
|
+
this.diagram = new Diagram({
|
29042
29227
|
width: '100%', height: '100%',
|
29043
29228
|
snapSettings: this.snapSettings,
|
29044
29229
|
layout: this.layout,
|
@@ -29193,7 +29378,7 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
29193
29378
|
fontSize: 50,
|
29194
29379
|
opacity: .1
|
29195
29380
|
},
|
29196
|
-
constraints: NodeConstraints
|
29381
|
+
constraints: NodeConstraints.ReadOnly
|
29197
29382
|
};
|
29198
29383
|
this.diagram.addLayer({
|
29199
29384
|
id: 'version',
|
@@ -29259,12 +29444,12 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
29259
29444
|
this.diagram.dataBind();
|
29260
29445
|
}
|
29261
29446
|
pan() {
|
29262
|
-
this.diagram.constraints = this.diagram.constraints | DiagramConstraints
|
29263
|
-
this.diagram.tool = DiagramTools
|
29447
|
+
this.diagram.constraints = this.diagram.constraints | DiagramConstraints.Pan;
|
29448
|
+
this.diagram.tool = DiagramTools.ZoomPan;
|
29264
29449
|
}
|
29265
29450
|
cursor() {
|
29266
|
-
this.diagram.constraints = this.diagram.constraints & ~DiagramConstraints
|
29267
|
-
this.diagram.tool = DiagramTools
|
29451
|
+
this.diagram.constraints = this.diagram.constraints & ~DiagramConstraints.Pan;
|
29452
|
+
this.diagram.tool = DiagramTools.SingleSelect;
|
29268
29453
|
}
|
29269
29454
|
_highlight(ids) {
|
29270
29455
|
for (let i = 0; i < ids.length; i++) {
|
@@ -29544,6 +29729,7 @@ let PositionsComponent = class PositionsComponent {
|
|
29544
29729
|
this._translate = _translate;
|
29545
29730
|
this._popup = _popup;
|
29546
29731
|
this._dialog = _dialog;
|
29732
|
+
this.tools = true;
|
29547
29733
|
this.dirty = false;
|
29548
29734
|
this.saving = false;
|
29549
29735
|
this.form = new FormGroup({});
|
@@ -29916,14 +30102,14 @@ let PositionsComponent = class PositionsComponent {
|
|
29916
30102
|
}
|
29917
30103
|
};
|
29918
30104
|
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 });
|
29919
|
-
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 } });
|
30105
|
+
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 } });
|
29920
30106
|
PositionsComponent = __decorate([
|
29921
30107
|
BizDoc({ selector: 'bizdoc-positions' })
|
29922
30108
|
/** positions component*/
|
29923
30109
|
], PositionsComponent);
|
29924
30110
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PositionsComponent, decorators: [{
|
29925
30111
|
type: Component,
|
29926
|
-
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-
|
30112
|
+
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"] }]
|
29927
30113
|
}], ctorParameters: function () { return [{ type: SessionService }, { type: UtilityRef, decorators: [{
|
29928
30114
|
type: Inject,
|
29929
30115
|
args: [UtilityRef]
|
@@ -30270,7 +30456,7 @@ let ProfilerComponent = class ProfilerComponent {
|
|
30270
30456
|
grantAccess: v.grantAccess,
|
30271
30457
|
userId: this._userId
|
30272
30458
|
}).subscribe(() => {
|
30273
|
-
Object.assign(this.data);
|
30459
|
+
Object.assign(this.data, v);
|
30274
30460
|
this._sb.toast('ChangesSaved');
|
30275
30461
|
}, () => this._sb.error()));
|
30276
30462
|
}
|