@bizdoc/core 1.14.13 → 1.14.14
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/core/color-picker.input.mjs +3 -3
- package/esm2020/lib/admin/form/workflow/node.component.mjs +61 -29
- package/esm2020/lib/admin/form/workflow/workflow.component.mjs +244 -139
- package/esm2020/lib/admin/positions/positions.component.mjs +6 -5
- package/esm2020/lib/core/translations.mjs +2 -2
- package/fesm2015/bizdoc-core.mjs +332 -197
- package/fesm2015/bizdoc-core.mjs.map +1 -1
- package/fesm2020/bizdoc-core.mjs +331 -193
- package/fesm2020/bizdoc-core.mjs.map +1 -1
- 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 +9 -9
- package/lib/admin/positions/positions.component.d.ts +1 -0
- package/package.json +1 -1
package/fesm2015/bizdoc-core.mjs
CHANGED
@@ -132,8 +132,7 @@ import * as i9$5 from '@syncfusion/ej2-angular-spreadsheet';
|
|
132
132
|
import { Spreadsheet, isNumber, SpreadsheetModule, SelectionService as SelectionService$2, BasicModuleService, ClipboardService, CellFormatService, KeyboardNavigationService, KeyboardShortcutService, NumberFormatService } from '@syncfusion/ej2-angular-spreadsheet';
|
133
133
|
import * as i4 from '@ctrl/ngx-emoji-mart';
|
134
134
|
import { PickerModule } from '@ctrl/ngx-emoji-mart';
|
135
|
-
import { Diagram, UndoRedo, ConnectorBridging, ConnectorEditing, Snapping, SymbolPalette, BpmnDiagrams,
|
136
|
-
import { DiagramTools as DiagramTools$1, DiagramConstraints as DiagramConstraints$1, ConnectionPointOrigin, SnapConstraints, Diagram as Diagram$1, NodeConstraints as NodeConstraints$1, ComplexHierarchicalTreeService, DiagramModule, SymbolPaletteModule, ConnectorBridgingService, LineRoutingService, BpmnDiagramsService, LayoutAnimationService, UndoRedoService, SnappingService, ConnectorEditingService, LineDistributionService, ComplexHierarchicalTree, BpmnDiagrams as BpmnDiagrams$1, DataBinding, LineDistribution, ToolBase, SelectorConstraints as SelectorConstraints$1, ConnectorConstraints as ConnectorConstraints$1 } from '@syncfusion/ej2-angular-diagrams';
|
135
|
+
import { Diagram, UndoRedo, ConnectorBridging, ConnectorEditing, Snapping, SymbolPalette, BpmnDiagrams, PortVisibility, PortConstraints, DiagramConstraints, DiagramTools, SelectorConstraints, NodeConstraints, ConnectorConstraints, Connector, Node, ConnectionPointOrigin, SnapConstraints, ComplexHierarchicalTreeService, DiagramModule, SymbolPaletteModule, ConnectorBridgingService, LineRoutingService, BpmnDiagramsService, LayoutAnimationService, UndoRedoService, SnappingService, ConnectorEditingService, LineDistributionService, ComplexHierarchicalTree, DataBinding, LineDistribution, ToolBase } from '@syncfusion/ej2-angular-diagrams';
|
137
136
|
import * as i9$3 from '@syncfusion/ej2-angular-schedule';
|
138
137
|
import { Schedule, Day, WorkWeek, Month, MonthAgenda, Agenda, Year, ScheduleModule, ExcelExportService as ExcelExportService$2, DayService, WorkWeekService, MonthService, MonthAgendaService, ICalendarExportService, AgendaService, YearService } from '@syncfusion/ej2-angular-schedule';
|
139
138
|
import * as i10$1 from '@syncfusion/ej2-angular-kanban';
|
@@ -1315,7 +1314,7 @@ const STRINGS = {
|
|
1315
1314
|
Reassign: 'Reassign',
|
1316
1315
|
ReassignAll: 'Reassign all',
|
1317
1316
|
ShowAll: 'Show All',
|
1318
|
-
OutOfOfficeOn: 'You are set as <i>out of office</i>. Your messages are
|
1317
|
+
OutOfOfficeOn: 'You are set as <i>out of office</i>. Your messages are forwarded to <em>{0}</em>',
|
1319
1318
|
Dismiss: 'Dismiss',
|
1320
1319
|
ChangeOptions: 'Options',
|
1321
1320
|
Impersonating: 'You logged in on behalf of {0}',
|
@@ -13376,7 +13375,7 @@ class WorkflowNodeComponent {
|
|
13376
13375
|
this._fb = _fb;
|
13377
13376
|
this._pane = _pane;
|
13378
13377
|
this.change = new EventEmitter();
|
13379
|
-
this.
|
13378
|
+
this.connector = this._fb.group({
|
13380
13379
|
action: '',
|
13381
13380
|
case: ''
|
13382
13381
|
});
|
@@ -13386,31 +13385,48 @@ class WorkflowNodeComponent {
|
|
13386
13385
|
ngOnInit() {
|
13387
13386
|
this._pane.dataChange.subscribe(d => {
|
13388
13387
|
this.nodes = d['nodes'];
|
13388
|
+
this.diagram = d['diagram'];
|
13389
13389
|
this.connectors = d['connectors'];
|
13390
13390
|
this.tool = null;
|
13391
13391
|
this._elementDestroy.next();
|
13392
|
+
this.argumentstemplate.clear();
|
13392
13393
|
if (this.connectors.length) {
|
13393
|
-
this.connectorInfo.valueChanges.pipe(takeUntil$1(this._elementDestroy)).subscribe(() => {
|
13394
|
-
this.connectors.forEach(c => {
|
13395
|
-
Object.assign(c.addInfo, this.connectorInfo.getRawValue());
|
13396
|
-
this.change.emit();
|
13397
|
-
});
|
13398
|
-
});
|
13399
13394
|
const connector = this.connectors[0];
|
13400
|
-
|
13401
|
-
|
13402
|
-
|
13403
|
-
|
13404
|
-
|
13405
|
-
|
13406
|
-
|
13407
|
-
case: this.connectors.length === 1 || this.connectors.every(c => c.addInfo.case === acase) ? acase : null
|
13408
|
-
});
|
13395
|
+
if (connector.addInfo) {
|
13396
|
+
const action = connector.addInfo['action'], acase = connector.addInfo['case'];
|
13397
|
+
this.connector.patchValue({
|
13398
|
+
action: this.connectors.length === 1 || this.connectors.every(c => c.addInfo && c.addInfo['action'] === action) ? action : null,
|
13399
|
+
case: this.connectors.length === 1 || this.connectors.every(c => c.addInfo && c.addInfo['case'] === acase) ? acase : null
|
13400
|
+
});
|
13401
|
+
}
|
13409
13402
|
this._pane.title = this._translate.get(this.connectors.length === 1 ? 'Connector' : 'Connectors', this.connectors.length);
|
13410
13403
|
this._pane.icon = 'link';
|
13404
|
+
this.connector.valueChanges.pipe(takeUntil$1(this._elementDestroy)).subscribe(v => {
|
13405
|
+
const content = v['case'] || v['action'];
|
13406
|
+
this.connectors.forEach(c => {
|
13407
|
+
if (!c.addInfo)
|
13408
|
+
c.addInfo = this.connector.getRawValue();
|
13409
|
+
else
|
13410
|
+
Object.assign(c.addInfo, this.connector.getRawValue());
|
13411
|
+
cleanup(c.addInfo);
|
13412
|
+
if (!c.annotations.length)
|
13413
|
+
c.annotations.push({
|
13414
|
+
style: {
|
13415
|
+
color: this._session.theme.dark ? 'white' : 'black',
|
13416
|
+
fill: 'transparent',
|
13417
|
+
opacity: .8,
|
13418
|
+
},
|
13419
|
+
content
|
13420
|
+
});
|
13421
|
+
else
|
13422
|
+
c.annotations[0].content = content;
|
13423
|
+
});
|
13424
|
+
this.diagram.dataBind();
|
13425
|
+
this.change.emit();
|
13426
|
+
});
|
13427
|
+
this.argumentstemplate.createEmbeddedView(this.connectorargs);
|
13411
13428
|
}
|
13412
|
-
|
13413
|
-
if (this.nodes.length) {
|
13429
|
+
else {
|
13414
13430
|
const node = this.node = this.nodes[0], addInfo = node.addInfo;
|
13415
13431
|
if (addInfo && addInfo.nodeType) {
|
13416
13432
|
const nodeType = addInfo.nodeType;
|
@@ -13418,10 +13434,22 @@ class WorkflowNodeComponent {
|
|
13418
13434
|
this._pane.title = tool.title;
|
13419
13435
|
const annotationArg = tool.arguments.find(a => a.diagram);
|
13420
13436
|
function change(m) {
|
13421
|
-
if (annotationArg && m[annotationArg.name] !== null
|
13422
|
-
node.annotations
|
13437
|
+
if (annotationArg && m[annotationArg.name] !== null) {
|
13438
|
+
if (node.annotations.length)
|
13439
|
+
node.annotations[0].content = m[annotationArg.name] || null;
|
13440
|
+
else
|
13441
|
+
node.annotations.push({
|
13442
|
+
style: {
|
13443
|
+
color: this._session.theme.dark ? 'white' : 'black',
|
13444
|
+
fill: 'transparent',
|
13445
|
+
opacity: .8,
|
13446
|
+
},
|
13447
|
+
content: m[annotationArg.name] || null
|
13448
|
+
});
|
13423
13449
|
}
|
13424
|
-
Object.assign(addInfo,
|
13450
|
+
Object.assign(addInfo, m);
|
13451
|
+
cleanup(addInfo);
|
13452
|
+
this.diagram.dataBind();
|
13425
13453
|
this.change.emit();
|
13426
13454
|
}
|
13427
13455
|
if (tool.template) {
|
@@ -13454,8 +13482,8 @@ class WorkflowNodeComponent {
|
|
13454
13482
|
instance.form.patchValue(node.addInfo, { emitEvent: false });
|
13455
13483
|
return instance;
|
13456
13484
|
}
|
13457
|
-
connectorCaseChange(
|
13458
|
-
this.
|
13485
|
+
connectorCaseChange(evt) {
|
13486
|
+
this.connector.controls['case'].setValue(evt.value);
|
13459
13487
|
this.change.emit();
|
13460
13488
|
}
|
13461
13489
|
ngOnDestroy() {
|
@@ -13464,15 +13492,18 @@ class WorkflowNodeComponent {
|
|
13464
13492
|
}
|
13465
13493
|
}
|
13466
13494
|
WorkflowNodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: WorkflowNodeComponent, deps: [{ token: SessionService }, { token: BizDocComponentFactoryResolver }, { token: i0.ComponentFactoryResolver }, { token: i0.Injector }, { token: TranslateService }, { token: i1$5.FormBuilder }, { token: PaneRef }], target: i0.ɵɵFactoryTarget.Component });
|
13467
|
-
WorkflowNodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: WorkflowNodeComponent, selector: "ng-component", outputs: { change: "change" }, viewQueries: [{ propertyName: "argumentstemplate", first: true, predicate: ["arguments"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<ng-container #arguments>\r\n</ng-container>\r\n<
|
13495
|
+
WorkflowNodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: WorkflowNodeComponent, selector: "ng-component", outputs: { change: "change" }, viewQueries: [{ propertyName: "argumentstemplate", first: true, predicate: ["arguments"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "connectorargs", first: true, predicate: ["connectorargs"], descendants: true, static: true }], ngImport: i0, template: "<ng-container #arguments>\r\n</ng-container>\r\n<ng-template #connectorargs>\r\n <form [formGroup]=\"connector\" fxLayout=\"column\" autocomplete=\"off\">\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Action' | translate\" formControlName=\"action\">\r\n <mat-option *ngFor=\"let action of actions\" [value]=\"action.name\">{{action.title}}</mat-option>\r\n <mat-option>{{'None' | translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-button-toggle-group [value]=\"connector.controls['case'].value\" #acase=\"matButtonToggleGroup\" (change)=\"connectorCaseChange($event)\">\r\n <mat-button-toggle value=\"true\">{{'True' | translate}}</mat-button-toggle>\r\n <mat-button-toggle value=\"false\">{{'False' | translate}}</mat-button-toggle>\r\n <mat-button-toggle>{{'Case' | translate}}</mat-button-toggle>\r\n </mat-button-toggle-group>\r\n <mat-form-field [style.display]=\"connector.controls['case'].value==='true'||connector.controls['case'].value==='false'?'none':''\">\r\n <input matInput [placeholder]=\"'Case' | translate\" formControlName=\"case\" />\r\n </mat-form-field>\r\n </form>\r\n</ng-template>\r\n", styles: [":host{width:100%;padding:4px;display:block}\n"], components: [{ type: i1$4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i9$2.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }], directives: [{ type: i1$5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i23.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i1$5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9$2.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1$5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }], pipes: { "translate": TranslatePipe } });
|
13468
13496
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: WorkflowNodeComponent, decorators: [{
|
13469
13497
|
type: Component,
|
13470
|
-
args: [{ template: "<ng-container #arguments>\r\n</ng-container>\r\n<
|
13498
|
+
args: [{ template: "<ng-container #arguments>\r\n</ng-container>\r\n<ng-template #connectorargs>\r\n <form [formGroup]=\"connector\" fxLayout=\"column\" autocomplete=\"off\">\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Action' | translate\" formControlName=\"action\">\r\n <mat-option *ngFor=\"let action of actions\" [value]=\"action.name\">{{action.title}}</mat-option>\r\n <mat-option>{{'None' | translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-button-toggle-group [value]=\"connector.controls['case'].value\" #acase=\"matButtonToggleGroup\" (change)=\"connectorCaseChange($event)\">\r\n <mat-button-toggle value=\"true\">{{'True' | translate}}</mat-button-toggle>\r\n <mat-button-toggle value=\"false\">{{'False' | translate}}</mat-button-toggle>\r\n <mat-button-toggle>{{'Case' | translate}}</mat-button-toggle>\r\n </mat-button-toggle-group>\r\n <mat-form-field [style.display]=\"connector.controls['case'].value==='true'||connector.controls['case'].value==='false'?'none':''\">\r\n <input matInput [placeholder]=\"'Case' | translate\" formControlName=\"case\" />\r\n </mat-form-field>\r\n </form>\r\n</ng-template>\r\n", styles: [":host{width:100%;padding:4px;display:block}\n"] }]
|
13471
13499
|
}], ctorParameters: function () { return [{ type: SessionService }, { type: BizDocComponentFactoryResolver }, { type: i0.ComponentFactoryResolver }, { type: i0.Injector }, { type: TranslateService }, { type: i1$5.FormBuilder }, { type: PaneRef }]; }, propDecorators: { change: [{
|
13472
13500
|
type: Output
|
13473
13501
|
}], argumentstemplate: [{
|
13474
13502
|
type: ViewChild,
|
13475
13503
|
args: ['arguments', { static: true, read: ViewContainerRef }]
|
13504
|
+
}], connectorargs: [{
|
13505
|
+
type: ViewChild,
|
13506
|
+
args: ['connectorargs', { static: true }]
|
13476
13507
|
}] } });
|
13477
13508
|
|
13478
13509
|
class FormService {
|
@@ -13518,10 +13549,10 @@ Diagram.Inject(UndoRedo, ConnectorBridging, ConnectorEditing, Snapping);
|
|
13518
13549
|
SymbolPalette.Inject(BpmnDiagrams);
|
13519
13550
|
function getPorts$1() {
|
13520
13551
|
const ports = [
|
13521
|
-
{ id: 'port1', shape: 'Circle', offset: { x: 0, y: 0.5 } },
|
13522
|
-
{ id: 'port2', shape: 'Circle', offset: { x: 0.5, y: 1 } },
|
13523
|
-
{ id: 'port3', shape: 'Circle', offset: { x: 1, y: 0.5 } },
|
13524
|
-
{ id: 'port4', shape: 'Circle', offset: { x: 0.5, y: 0 } }
|
13552
|
+
{ id: 'port1', shape: 'Circle', offset: { x: 0, y: 0.5 }, visibility: PortVisibility.Connect | PortVisibility.Hover, constraints: PortConstraints.Default | PortConstraints.Draw },
|
13553
|
+
{ id: 'port2', shape: 'Circle', offset: { x: 0.5, y: 1 }, visibility: PortVisibility.Connect | PortVisibility.Hover, constraints: PortConstraints.Default | PortConstraints.Draw },
|
13554
|
+
{ id: 'port3', shape: 'Circle', offset: { x: 1, y: 0.5 }, visibility: PortVisibility.Connect | PortVisibility.Hover, constraints: PortConstraints.Default | PortConstraints.Draw },
|
13555
|
+
{ id: 'port4', shape: 'Circle', offset: { x: 0.5, y: 0 }, visibility: PortVisibility.Connect | PortVisibility.Hover, constraints: PortConstraints.Default | PortConstraints.Draw }
|
13525
13556
|
];
|
13526
13557
|
return ports;
|
13527
13558
|
}
|
@@ -13546,26 +13577,6 @@ function paletteIconClick() {
|
|
13546
13577
|
}
|
13547
13578
|
}
|
13548
13579
|
}
|
13549
|
-
//Defines the tool
|
13550
|
-
class DrawTool extends ConnectorDrawingTool {
|
13551
|
-
constructor(diagram, segments) {
|
13552
|
-
super(diagram.commandHandler, 'ConnectorSourceEnd', null);
|
13553
|
-
this.diagram = diagram;
|
13554
|
-
this.segments = segments;
|
13555
|
-
}
|
13556
|
-
mouseMove(args) {
|
13557
|
-
if (this.diagram.selectedItems.nodes.length) {
|
13558
|
-
this.diagram.drawingObject = {
|
13559
|
-
type: this.segments || 'Bezier',
|
13560
|
-
sourceID: this.diagram.selectedItems.nodes[0].id
|
13561
|
-
};
|
13562
|
-
this.inAction = true;
|
13563
|
-
}
|
13564
|
-
const ok = super.mouseMove(args);
|
13565
|
-
return ok;
|
13566
|
-
}
|
13567
|
-
}
|
13568
|
-
const LINK_PATH = 'M346.7,714.6l368.1-368.1c17.9-17.9,17.9-47.1,0-64.9c-17.9-17.9-47.1-17.9-64.9,0l-368,368c-17.9,17.9-17.9,47.1,0,64.9C299.6,732.5,328.9,732.5,346.7,714.6z M468.2,651c6.4,9,7.6,18.5,7.6,23.8c0,6.3-1.5,18.6-11.8,28.9L271,896.5c-10.3,10.3-22.5,11.8-28.9,11.8c-6.3,0-18.6-1.5-28.9-11.8L103.5,786.8c-10.3-10.3-11.8-22.5-11.8-28.9c0-6.4,1.5-18.6,11.8-28.9l192.9-192.9c10.3-10.3,22.5-11.8,28.9-11.8c4.5,0,11.8,0.8,19.3,4.8l58.6-58.6c-48-39.6-119.6-36.9-164.5,7.9L45.7,671.3c-47.7,47.7-47.7,125.5,0,173.2l109.7,109.7c47.7,47.7,125.5,47.7,173.2,0l192.9-192.9c46-46,47.6-120.4,4.6-168.4L468.2,651z M954.2,155.5L844.5,45.8C796.9-1.9,719-1.9,671.3,45.8L478.4,238.7c-44.8,44.8-47.5,116.5-7.9,164.5l58.6-58.6c-4-7.6-4.8-14.9-4.8-19.3c0-6.3,1.5-18.6,11.8-28.9l192.9-192.9c10.3-10.3,22.5-11.8,28.9-11.8c6.3,0,18.6,1.5,28.9,11.8l109.7,109.7c10.3,10.3,11.8,22.5,11.8,28.9c0,6.3-1.5,18.6-11.8,28.9L703.7,464c-10.3,10.3-22.5,11.8-28.9,11.8c-5.3,0-14.8-1.1-23.8-7.6l-58,58c48,43,122.3,41.5,168.4-4.6l192.9-192.9C1001.9,281.1,1001.9,203.1,954.2,155.5z';
|
13569
13580
|
/** workflow component*/
|
13570
13581
|
class WorkflowComponent {
|
13571
13582
|
/** workflow ctor */
|
@@ -13576,7 +13587,7 @@ class WorkflowComponent {
|
|
13576
13587
|
this._router = _router;
|
13577
13588
|
this._session = _session;
|
13578
13589
|
this._translate = _translate;
|
13579
|
-
this.
|
13590
|
+
this.fontSizes = [9, 11, 12, 13, 15, 21, 31, 41];
|
13580
13591
|
this.connectorType = 'Bezier';
|
13581
13592
|
this.alignment = 'Center';
|
13582
13593
|
this.fontSize = 12;
|
@@ -13585,22 +13596,16 @@ class WorkflowComponent {
|
|
13585
13596
|
this.palettes = [];
|
13586
13597
|
this.diagramConstraints = DiagramConstraints.Default | DiagramConstraints.Bridging | DiagramConstraints.UserInteraction | DiagramConstraints.Zoom;
|
13587
13598
|
this.diagramTool = DiagramTools.Default;
|
13588
|
-
//Defines the user handle collection for nodes in diagram
|
13589
|
-
this._userHandles = [
|
13590
|
-
{
|
13591
|
-
name: 'connect',
|
13592
|
-
pathData: LINK_PATH,
|
13593
|
-
visible: true,
|
13594
|
-
offset: 0,
|
13595
|
-
side: 'Right',
|
13596
|
-
displacement: 20,
|
13597
|
-
margin: { top: 0, bottom: 0, left: 0, right: 0 }
|
13598
|
-
}
|
13599
|
-
];
|
13600
13599
|
//SymbolPalette Properties
|
13601
13600
|
this.symbolMargin = { left: 10, right: 10, top: 10, bottom: 10 };
|
13602
|
-
this.snapSettings = {
|
13603
|
-
|
13601
|
+
this.snapSettings = {
|
13602
|
+
// horizontalGridlines: gridlines,
|
13603
|
+
// verticalGridlines: gridlines,
|
13604
|
+
// constraints: SnapConstraints.All & ~SnapConstraints.ShowLines
|
13605
|
+
};
|
13606
|
+
this.selectedItems = {
|
13607
|
+
constraints: SelectorConstraints.All & ~SelectorConstraints.Rotate
|
13608
|
+
};
|
13604
13609
|
this.scrollSettings = {
|
13605
13610
|
minZoom: .5,
|
13606
13611
|
maxZoom: 2.5
|
@@ -13611,44 +13616,47 @@ class WorkflowComponent {
|
|
13611
13616
|
verticalRuler: { markerColor: this._rulerColor }
|
13612
13617
|
};
|
13613
13618
|
this._destroy = new Subject();
|
13614
|
-
this.
|
13615
|
-
|
13616
|
-
|
13619
|
+
this._nodedestroy = new Subject();
|
13620
|
+
this.nodeDefaults = (obj) => {
|
13621
|
+
if (obj.addInfo && obj.addInfo['nodeType']) {
|
13622
|
+
obj.style = {
|
13617
13623
|
fill: 'transparent',
|
13618
13624
|
strokeColor: this._session.theme.dark ? 'white' : 'black',
|
13619
13625
|
strokeWidth: 1
|
13620
13626
|
},
|
13621
|
-
|
13622
|
-
|
13623
|
-
|
13624
|
-
|
13625
|
-
|
13626
|
-
|
13627
|
-
|
13628
|
-
|
13629
|
-
|
13630
|
-
|
13631
|
-
}
|
13632
|
-
else {
|
13633
|
-
const ratio = 100 / obj.width;
|
13634
|
-
obj.width = 100;
|
13635
|
-
obj.height *= ratio;
|
13627
|
+
obj.constraints = NodeConstraints.Default | NodeConstraints.AspectRatio,
|
13628
|
+
obj.ports = getPorts$1();
|
13629
|
+
if (obj.width === undefined) {
|
13630
|
+
obj.width = 145;
|
13631
|
+
}
|
13632
|
+
else {
|
13633
|
+
const ratio = 100 / obj.width;
|
13634
|
+
obj.width = 100;
|
13635
|
+
obj.height *= ratio;
|
13636
|
+
}
|
13636
13637
|
}
|
13637
|
-
obj.constraints = NodeConstraints.Default | NodeConstraints.AspectRatio;
|
13638
|
-
obj.ports = getPorts$1();
|
13639
13638
|
return obj;
|
13640
13639
|
};
|
13641
13640
|
this.connDefaults = (obj) => {
|
13642
|
-
obj.constraints = ConnectorConstraints.Default | ConnectorConstraints.Bridging |
|
13641
|
+
obj.constraints = ConnectorConstraints.Default | ConnectorConstraints.Bridging |
|
13642
|
+
ConnectorConstraints.Bridging;
|
13643
13643
|
obj.style.strokeColor = this._session.theme.dark ? 'white' : 'black';
|
13644
|
+
obj.type = this.connectorType;
|
13645
|
+
// if (!obj.annotations) obj.annotations = [{
|
13646
|
+
// style: {
|
13647
|
+
// color: this._session.theme.dark ? 'white' : 'black',
|
13648
|
+
// fill: 'transparent',
|
13649
|
+
// opacity: .8,
|
13650
|
+
// },
|
13651
|
+
// }];
|
13644
13652
|
};
|
13653
|
+
this._tools = localStorage.getItem('diagram_tools') === '1';
|
13645
13654
|
this._palettes();
|
13646
13655
|
}
|
13647
|
-
|
13648
|
-
|
13649
|
-
|
13650
|
-
|
13651
|
-
return tool;
|
13656
|
+
get tools() { return this._tools; }
|
13657
|
+
set tools(val) {
|
13658
|
+
localStorage.setItem('diagram_tools', val ? '1' : '0');
|
13659
|
+
this._tools = val;
|
13652
13660
|
}
|
13653
13661
|
ngAfterViewInit() {
|
13654
13662
|
}
|
@@ -13656,11 +13664,15 @@ class WorkflowComponent {
|
|
13656
13664
|
this.symbolPalette = new SymbolPalette({
|
13657
13665
|
expandMode: 'Multiple',
|
13658
13666
|
palettes: this.palettes,
|
13659
|
-
width: "100%",
|
13660
|
-
|
13667
|
+
width: "100%",
|
13668
|
+
height: "100%",
|
13669
|
+
enableRtl: false,
|
13670
|
+
enableAnimation: false,
|
13671
|
+
symbolHeight: 80,
|
13672
|
+
symbolWidth: 80,
|
13661
13673
|
symbolMargin: this.symbolMargin,
|
13662
13674
|
getSymbolInfo: this.getSymbolInfo.bind(this),
|
13663
|
-
getNodeDefaults: this.getSymbolDefaults.bind(this)
|
13675
|
+
getNodeDefaults: this.getSymbolDefaults.bind(this),
|
13664
13676
|
});
|
13665
13677
|
this.symbolPalette.appendTo(this.symbolPaletteEl.nativeElement);
|
13666
13678
|
this.diagram = new Diagram({
|
@@ -13670,7 +13682,6 @@ class WorkflowComponent {
|
|
13670
13682
|
constraints: this.diagramConstraints,
|
13671
13683
|
tool: this.diagramTool,
|
13672
13684
|
getNodeDefaults: this.nodeDefaults.bind(this),
|
13673
|
-
getCustomTool: this.getTool.bind(this),
|
13674
13685
|
scrollSettings: this.scrollSettings,
|
13675
13686
|
selectedItems: this.selectedItems,
|
13676
13687
|
rulerSettings: this.rulerSettings,
|
@@ -13697,7 +13708,6 @@ class WorkflowComponent {
|
|
13697
13708
|
this.diagram.fitToPage();
|
13698
13709
|
this.dirty = false;
|
13699
13710
|
});
|
13700
|
-
this._pane.resized.pipe(takeUntil(this._destroy)).subscribe(() => this.diagram.refresh());
|
13701
13711
|
}
|
13702
13712
|
_palettes() {
|
13703
13713
|
this._session.profile.nodes.forEach(n => {
|
@@ -13717,8 +13727,110 @@ class WorkflowComponent {
|
|
13717
13727
|
}
|
13718
13728
|
palette.symbols.push(node);
|
13719
13729
|
});
|
13720
|
-
|
13721
|
-
|
13730
|
+
this.palettes.push({
|
13731
|
+
id: 'design',
|
13732
|
+
title: this._translate.get('Design'),
|
13733
|
+
symbols: [{
|
13734
|
+
id: 'Link22',
|
13735
|
+
type: 'Straight',
|
13736
|
+
sourcePoint: { x: 0, y: 0 },
|
13737
|
+
targetPoint: { x: 60, y: 60 },
|
13738
|
+
targetDecorator: {
|
13739
|
+
shape: 'Arrow',
|
13740
|
+
style: { strokeColor: '#757575', fill: '#757575' },
|
13741
|
+
},
|
13742
|
+
style: {
|
13743
|
+
strokeWidth: 1,
|
13744
|
+
strokeDashArray: '4 4',
|
13745
|
+
strokeColor: '#757575',
|
13746
|
+
}
|
13747
|
+
},
|
13748
|
+
{
|
13749
|
+
id: 'text', shape: { type: 'Text', content: 'T' },
|
13750
|
+
constraints: NodeConstraints.Default & ~NodeConstraints.InConnect & ~NodeConstraints.OutConnect,
|
13751
|
+
addInfo: { title: this._translate.get('Text') }
|
13752
|
+
}]
|
13753
|
+
});
|
13754
|
+
const color = MATERIAL_PALETTES['grey'][200]; // this._session.getPrimery(100);
|
13755
|
+
this.palettes.push({
|
13756
|
+
id: 'swimlaneShapes',
|
13757
|
+
expanded: true,
|
13758
|
+
title: this._translate.get('Swimlane Shapes'),
|
13759
|
+
symbols: [
|
13760
|
+
{
|
13761
|
+
id: 'swimlane',
|
13762
|
+
addInfo: {
|
13763
|
+
title: this._translate.get('Horizontal')
|
13764
|
+
},
|
13765
|
+
shape: {
|
13766
|
+
type: 'SwimLane',
|
13767
|
+
lanes: [
|
13768
|
+
{
|
13769
|
+
id: 'lane1',
|
13770
|
+
header: {
|
13771
|
+
style: { fill: color }
|
13772
|
+
}
|
13773
|
+
}
|
13774
|
+
],
|
13775
|
+
orientation: 'Horizontal',
|
13776
|
+
isLane: true
|
13777
|
+
},
|
13778
|
+
height: 60,
|
13779
|
+
width: 140,
|
13780
|
+
offsetX: 70,
|
13781
|
+
offsetY: 30,
|
13782
|
+
}, {
|
13783
|
+
id: 'vswimlane',
|
13784
|
+
addInfo: {
|
13785
|
+
title: this._translate.get('Vertical')
|
13786
|
+
},
|
13787
|
+
shape: {
|
13788
|
+
type: 'SwimLane',
|
13789
|
+
lanes: [
|
13790
|
+
{
|
13791
|
+
id: 'lane1',
|
13792
|
+
header: {
|
13793
|
+
style: { fill: color }
|
13794
|
+
}
|
13795
|
+
}
|
13796
|
+
],
|
13797
|
+
orientation: 'Vertical', isLane: true
|
13798
|
+
},
|
13799
|
+
height: 140,
|
13800
|
+
width: 60,
|
13801
|
+
offsetX: 70,
|
13802
|
+
offsetY: 30,
|
13803
|
+
}, {
|
13804
|
+
id: 'vphase',
|
13805
|
+
addInfo: {
|
13806
|
+
title: this._translate.get('Phase')
|
13807
|
+
},
|
13808
|
+
shape: {
|
13809
|
+
type: 'SwimLane',
|
13810
|
+
phases: [{ style: { strokeWidth: 1, strokeDashArray: '3,3', strokeColor: color }, }],
|
13811
|
+
annotations: [{ text: '' }],
|
13812
|
+
orientation: 'Vertical', isPhase: true
|
13813
|
+
},
|
13814
|
+
height: 60,
|
13815
|
+
width: 140,
|
13816
|
+
style: { strokeColor: color }
|
13817
|
+
}, {
|
13818
|
+
id: 'hphase',
|
13819
|
+
addInfo: {
|
13820
|
+
title: this._translate.get('Phase')
|
13821
|
+
},
|
13822
|
+
shape: {
|
13823
|
+
type: 'SwimLane',
|
13824
|
+
phases: [{ style: { strokeWidth: 1, strokeDashArray: '3,3', strokeColor: color }, }],
|
13825
|
+
annotations: [{ text: '' }],
|
13826
|
+
orientation: 'Horizontal', isPhase: true
|
13827
|
+
},
|
13828
|
+
height: 60,
|
13829
|
+
width: 80,
|
13830
|
+
style: { strokeColor: color }
|
13831
|
+
}
|
13832
|
+
]
|
13833
|
+
});
|
13722
13834
|
}
|
13723
13835
|
_versionNode(version) {
|
13724
13836
|
return {
|
@@ -13739,11 +13851,11 @@ class WorkflowComponent {
|
|
13739
13851
|
};
|
13740
13852
|
}
|
13741
13853
|
getSymbolInfo(symbol) {
|
13742
|
-
return {
|
13854
|
+
return symbol.addInfo ? {
|
13743
13855
|
fit: true,
|
13744
13856
|
tooltip: symbol.addInfo.title,
|
13745
13857
|
description: { text: symbol.addInfo.title, overflow: 'Wrap', wrap: 'WrapWithOverflow' }
|
13746
|
-
};
|
13858
|
+
} : null;
|
13747
13859
|
}
|
13748
13860
|
getSymbolDefaults(symbol) {
|
13749
13861
|
symbol.width = symbol.height = 40;
|
@@ -13758,50 +13870,42 @@ class WorkflowComponent {
|
|
13758
13870
|
this.diagram.tool = DiagramTools.Default;
|
13759
13871
|
}
|
13760
13872
|
selectionChange(evt) {
|
13761
|
-
const {
|
13762
|
-
if (
|
13763
|
-
|
13764
|
-
|
13765
|
-
|
13766
|
-
|
13873
|
+
const { newValue, state } = evt;
|
13874
|
+
if (state !== 'Changed' || !newValue.length) {
|
13875
|
+
this._nodedestroy.next();
|
13876
|
+
return;
|
13877
|
+
}
|
13878
|
+
const connectors = newValue.filter(n => n instanceof Connector).map(n => n);
|
13879
|
+
if (connectors.length) {
|
13880
|
+
const connector = connectors[0], type = connector.type;
|
13881
|
+
this.connectorType = connectors.length === 1 ||
|
13882
|
+
connectors.every(c => c.type === type) ? type : null;
|
13883
|
+
if (connector.annotations.length && connector.annotations[0].style)
|
13884
|
+
this.fontSize = connector.annotations[0].style.fontSize;
|
13885
|
+
this.connectorType = connectors.length === 1 ||
|
13886
|
+
connectors.every(c => c.type === type) ? type : null;
|
13887
|
+
}
|
13888
|
+
const nodes = newValue.filter(n => n instanceof Node);
|
13889
|
+
if (nodes.length) {
|
13890
|
+
const node = nodes[0], addInfo = node.addInfo;
|
13891
|
+
if (addInfo && addInfo.nodeType && node.annotations.length && node.annotations[0].style)
|
13892
|
+
this.fontSize = node.annotations[0].style.fontSize;
|
13767
13893
|
else
|
13768
|
-
|
13769
|
-
if (connectors.length) {
|
13770
|
-
const connector = connectors[0];
|
13771
|
-
connectors.forEach(c => {
|
13772
|
-
if (!c.addInfo)
|
13773
|
-
c.addInfo = {};
|
13774
|
-
});
|
13775
|
-
const type = connector.type;
|
13776
|
-
this.connectorType = connectors.length === 1 || connectors.every(c => c.type === type) ? type : null;
|
13777
|
-
if (connector.annotations.length)
|
13778
|
-
this.fontSize = connector.annotations[0].style.fontSize;
|
13779
|
-
this.connectorType = connectors.length === 1 || connectors.every(c => c.type === type) ? type : null;
|
13780
|
-
}
|
13781
|
-
if (nodes.length) {
|
13782
|
-
const node = nodes[0], addInfo = node.addInfo;
|
13783
|
-
if (addInfo && addInfo.nodeType) {
|
13784
|
-
if (node.annotations.length)
|
13785
|
-
this.fontSize = node.annotations[0].style.fontSize;
|
13786
|
-
}
|
13787
|
-
}
|
13788
|
-
this._router.navigate(WorkflowNodeComponent, {
|
13789
|
-
state: {
|
13790
|
-
nodes, connectors
|
13791
|
-
},
|
13792
|
-
policy: OpenPolicy.Tab,
|
13793
|
-
expandable: false,
|
13794
|
-
group: ''
|
13795
|
-
}).then(p => {
|
13796
|
-
p.instance.change.
|
13797
|
-
pipe(takeUntil(this._destroy)).subscribe(() => {
|
13798
|
-
this.dirty = true;
|
13799
|
-
this.diagram.dataBind();
|
13800
|
-
});
|
13801
|
-
});
|
13894
|
+
return;
|
13802
13895
|
}
|
13803
|
-
|
13804
|
-
|
13896
|
+
this._router.navigate(WorkflowNodeComponent, {
|
13897
|
+
state: {
|
13898
|
+
diagram: this.diagram,
|
13899
|
+
nodes,
|
13900
|
+
connectors
|
13901
|
+
},
|
13902
|
+
policy: OpenPolicy.Tab,
|
13903
|
+
expandable: false,
|
13904
|
+
group: ''
|
13905
|
+
}).then(p => {
|
13906
|
+
p.instance.change.
|
13907
|
+
pipe(takeUntil(this._nodedestroy.pipe(tap$1(() => p.close())))).subscribe(() => this.dirty = true);
|
13908
|
+
});
|
13805
13909
|
}
|
13806
13910
|
align(value) {
|
13807
13911
|
function align(n) {
|
@@ -13815,19 +13919,43 @@ class WorkflowComponent {
|
|
13815
13919
|
});
|
13816
13920
|
}
|
13817
13921
|
this.diagram.selectedItems.nodes.forEach(align);
|
13818
|
-
this.diagram.selectedItems.connectors.forEach(
|
13922
|
+
this.diagram.selectedItems.connectors.forEach(c => {
|
13923
|
+
c.annotations.forEach(a => {
|
13924
|
+
a.alignment = value === 'Left' ? 'Before' :
|
13925
|
+
value === 'Right' ? 'After' : 'Center';
|
13926
|
+
a.offset = 5;
|
13927
|
+
a.displacement = {
|
13928
|
+
x: value === 'Right' ? 1 : value === 'Left' ? 0 : .5,
|
13929
|
+
y: value === 'Top' ? 0 : value === 'Bottom' ? 1 : .5
|
13930
|
+
};
|
13931
|
+
});
|
13932
|
+
});
|
13819
13933
|
this.alignment = value;
|
13820
13934
|
this.dirty = true;
|
13821
13935
|
}
|
13822
13936
|
dragEnter(args) {
|
13823
|
-
|
13824
|
-
|
13825
|
-
|
13826
|
-
|
13827
|
-
|
13828
|
-
|
13829
|
-
|
13830
|
-
|
13937
|
+
if (args.element instanceof Node) {
|
13938
|
+
const shape = args.element.shape;
|
13939
|
+
if (shape.isLane) {
|
13940
|
+
switch (shape.orientation) {
|
13941
|
+
case 'Horizontal':
|
13942
|
+
shape.lanes[0].height = 100;
|
13943
|
+
shape.lanes[0].width = 400;
|
13944
|
+
break;
|
13945
|
+
case 'Vertical':
|
13946
|
+
shape.lanes[0].height = 400;
|
13947
|
+
shape.lanes[0].width = 100;
|
13948
|
+
break;
|
13949
|
+
}
|
13950
|
+
}
|
13951
|
+
else {
|
13952
|
+
const { width, height } = args.element;
|
13953
|
+
args.element.width = 100;
|
13954
|
+
args.element.height *= 100 / width;
|
13955
|
+
args.element.offsetX += (args.element.width - width) / 2;
|
13956
|
+
args.element.offsetY += (args.element.height - height) / 2;
|
13957
|
+
args.element.style = { fill: 'white', strokeColor: 'black' };
|
13958
|
+
}
|
13831
13959
|
}
|
13832
13960
|
}
|
13833
13961
|
propertyChange(e) {
|
@@ -13837,15 +13965,6 @@ class WorkflowComponent {
|
|
13837
13965
|
change() {
|
13838
13966
|
this.dirty = true;
|
13839
13967
|
}
|
13840
|
-
addText() {
|
13841
|
-
this.diagram.drawingObject = {
|
13842
|
-
shape: {
|
13843
|
-
type: 'Text',
|
13844
|
-
},
|
13845
|
-
constraints: NodeConstraints.Default & ~NodeConstraints.InConnect & ~NodeConstraints.OutConnect
|
13846
|
-
};
|
13847
|
-
this.diagram.tool = DiagramTools.DrawOnce;
|
13848
|
-
}
|
13849
13968
|
/**
|
13850
13969
|
* Ctrl-s save
|
13851
13970
|
* @param event
|
@@ -13870,9 +13989,22 @@ class WorkflowComponent {
|
|
13870
13989
|
this.connectorType = type;
|
13871
13990
|
this.dirty = true;
|
13872
13991
|
}
|
13873
|
-
|
13874
|
-
|
13992
|
+
fontSizeChange(val) {
|
13993
|
+
function change(node) {
|
13994
|
+
var _a;
|
13995
|
+
(_a = node.annotations) === null || _a === void 0 ? void 0 : _a.forEach(a => {
|
13996
|
+
if (!a.style)
|
13997
|
+
a.style = { fontSize: val };
|
13998
|
+
else
|
13999
|
+
a.style.fontSize = val;
|
14000
|
+
});
|
14001
|
+
if (node.shape.type === 'Text')
|
14002
|
+
node.style.fontSize = val;
|
14003
|
+
}
|
14004
|
+
this.diagram.selectedItems.nodes.forEach(change);
|
14005
|
+
this.diagram.selectedItems.connectors.forEach(change);
|
13875
14006
|
this.diagram.dataBind();
|
14007
|
+
this.dirty = true;
|
13876
14008
|
}
|
13877
14009
|
strokeChange(val) {
|
13878
14010
|
this.diagram.selectedItems.connectors.forEach(c => {
|
@@ -13915,15 +14047,17 @@ class WorkflowComponent {
|
|
13915
14047
|
(_b = this.diagram) === null || _b === void 0 ? void 0 : _b.destroy();
|
13916
14048
|
this._destroy.next();
|
13917
14049
|
this._destroy.complete();
|
14050
|
+
this._nodedestroy.next();
|
14051
|
+
this._nodedestroy.complete();
|
13918
14052
|
}
|
13919
14053
|
}
|
13920
14054
|
WorkflowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: WorkflowComponent, deps: [{ token: PromptService }, { token: FormService }, { token: PaneRef }, { token: PanesRouter }, { token: SessionService }, { token: TranslateService }], target: i0.ɵɵFactoryTarget.Component });
|
13921
|
-
WorkflowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: WorkflowComponent, selector: "bizdoc-workflow", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "symbolPaletteEl", first: true, predicate: ["symbolPaletteEl"], descendants: true, static: true }, { propertyName: "diagramEl", first: true, predicate: ["diagramEl"], descendants: true, static: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"tools = !tools\" [bizdocTooltip]=\"'Collapse' | translate\"><mat-icon>view_sidebar</mat-icon></button>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty || saving\">{{'SaveChanges' | translate}}</button>\r\n <button mat-icon-button (click)=\"diagram.fitToPage()\" [bizdocTooltip]=\"'FitToPage' | translate\"><mat-icon>fullscreen_exit</mat-icon></button>\r\n <button mat-icon-button (click)=\"
|
14055
|
+
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('Bottom')\">\r\n <span class=\"e-icons sf-icon-bottom\"></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 </mat-menu>\r\n <button mat-icon-button [matMenuTriggerFor]=\"sizeMenu\"\r\n [disabled]=\"diagram.selectedItems?.nodes.length === 0 && diagram.selectedItems?.connectors.length === 0\"\r\n [bizdocTooltip]=\"'FontSize'|translate\">\r\n <mat-icon>format_size</mat-icon>\r\n </button>\r\n <mat-menu #sizeMenu overlayPanelClass=\"icon-menu-panel\">\r\n <button mat-menu-item *ngFor=\"let size of fontSizes\" (click)=\"fontSizeChange(size)\">\r\n {{size}}\r\n </button>\r\n </mat-menu>\r\n <span class=\"divider\"></span>\r\n</mat-toolbar>\r\n<div class=\"row container\">\r\n <div id=\"symbolpalette\" [style.display]=\"tools?'':'none'\">\r\n <div dir=\"ltr\" #symbolPaletteEl>\r\n </div>\r\n </div>\r\n <div #diagramEl id=\"diagram\" fxFlex dir=\"ltr\">\r\n </div>\r\n</div>\r\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;height:100%}.container{flex-grow:1;overflow-y:auto}#diagram{flex-grow:1}#symbolpalette{width:210px}::ng-deep .e-rtl{direction:ltr}::ng-deep .mat-toolbar .mat-button-toggle{background:transparent!important}.e-menu-icon{font-family:diagram-icons!important;speak:none;font-size:18px;font-style:normal;font-weight:400;font-feature-settings:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::ng-deep .mat-menu-panel{min-width:0!important}.tools-divider:after{content:\"|\";opacity:.6;margin:0 2px}\n"], components: [{ type: i7$3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i9$1.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i9$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }], directives: [{ type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i9$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i25.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7$2.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i23.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }], pipes: { "translate": TranslatePipe } });
|
13922
14056
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: WorkflowComponent, decorators: [{
|
13923
14057
|
type: Component,
|
13924
14058
|
args: [{ selector: 'bizdoc-workflow', host: {
|
13925
14059
|
class: 'pane'
|
13926
|
-
}, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"tools = !tools\" [bizdocTooltip]=\"'Collapse' | translate\"><mat-icon>view_sidebar</mat-icon></button>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty || saving\">{{'SaveChanges' | translate}}</button>\r\n <button mat-icon-button (click)=\"diagram.fitToPage()\" [bizdocTooltip]=\"'FitToPage' | translate\"><mat-icon>fullscreen_exit</mat-icon></button>\r\n <button mat-icon-button (click)=\"
|
14060
|
+
}, 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('Bottom')\">\r\n <span class=\"e-icons sf-icon-bottom\"></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 </mat-menu>\r\n <button mat-icon-button [matMenuTriggerFor]=\"sizeMenu\"\r\n [disabled]=\"diagram.selectedItems?.nodes.length === 0 && diagram.selectedItems?.connectors.length === 0\"\r\n [bizdocTooltip]=\"'FontSize'|translate\">\r\n <mat-icon>format_size</mat-icon>\r\n </button>\r\n <mat-menu #sizeMenu overlayPanelClass=\"icon-menu-panel\">\r\n <button mat-menu-item *ngFor=\"let size of fontSizes\" (click)=\"fontSizeChange(size)\">\r\n {{size}}\r\n </button>\r\n </mat-menu>\r\n <span class=\"divider\"></span>\r\n</mat-toolbar>\r\n<div class=\"row container\">\r\n <div id=\"symbolpalette\" [style.display]=\"tools?'':'none'\">\r\n <div dir=\"ltr\" #symbolPaletteEl>\r\n </div>\r\n </div>\r\n <div #diagramEl id=\"diagram\" fxFlex dir=\"ltr\">\r\n </div>\r\n</div>\r\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;height:100%}.container{flex-grow:1;overflow-y:auto}#diagram{flex-grow:1}#symbolpalette{width:210px}::ng-deep .e-rtl{direction:ltr}::ng-deep .mat-toolbar .mat-button-toggle{background:transparent!important}.e-menu-icon{font-family:diagram-icons!important;speak:none;font-size:18px;font-style:normal;font-weight:400;font-feature-settings:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::ng-deep .mat-menu-panel{min-width:0!important}.tools-divider:after{content:\"|\";opacity:.6;margin:0 2px}\n"] }]
|
13927
14061
|
}], ctorParameters: function () { return [{ type: PromptService }, { type: FormService }, { type: PaneRef }, { type: PanesRouter }, { type: SessionService }, { type: TranslateService }]; }, propDecorators: { symbolPaletteEl: [{
|
13928
14062
|
type: ViewChild,
|
13929
14063
|
args: ['symbolPaletteEl', { static: true }]
|
@@ -14134,11 +14268,11 @@ class FlowViewComponent extends TraceBase {
|
|
14134
14268
|
this._duration = _duration;
|
14135
14269
|
this._elementRef = _elementRef;
|
14136
14270
|
this.connectorType = 'Orthogonal';
|
14137
|
-
this.tool = DiagramTools
|
14138
|
-
this.diagramConstraints = DiagramConstraints
|
14139
|
-
DiagramConstraints
|
14140
|
-
DiagramConstraints
|
14141
|
-
DiagramConstraints
|
14271
|
+
this.tool = DiagramTools.ZoomPan;
|
14272
|
+
this.diagramConstraints = DiagramConstraints.Default |
|
14273
|
+
DiagramConstraints.Pan |
|
14274
|
+
DiagramConstraints.LineRouting |
|
14275
|
+
DiagramConstraints.Zoom;
|
14142
14276
|
this.layout = {
|
14143
14277
|
type: 'ComplexHierarchicalTree',
|
14144
14278
|
connectionPointOrigin: ConnectionPointOrigin.DifferentPoint,
|
@@ -14177,7 +14311,7 @@ class FlowViewComponent extends TraceBase {
|
|
14177
14311
|
return __awaiter(this, void 0, void 0, function* () {
|
14178
14312
|
const { connectors, nodes, indicators } = yield this._prepare();
|
14179
14313
|
this.diagram && this.diagram.destroy();
|
14180
|
-
this.diagram = new Diagram
|
14314
|
+
this.diagram = new Diagram({
|
14181
14315
|
width: '100%',
|
14182
14316
|
height: 380,
|
14183
14317
|
nodes,
|
@@ -14321,8 +14455,8 @@ class FlowViewComponent extends TraceBase {
|
|
14321
14455
|
position: 'TopCenter'
|
14322
14456
|
},
|
14323
14457
|
constraints: content ?
|
14324
|
-
NodeConstraints
|
14325
|
-
NodeConstraints
|
14458
|
+
NodeConstraints.Default | NodeConstraints.Tooltip :
|
14459
|
+
NodeConstraints.Default,
|
14326
14460
|
addInfo: {
|
14327
14461
|
tooltip,
|
14328
14462
|
recipient,
|
@@ -14412,8 +14546,8 @@ class FlowViewComponent extends TraceBase {
|
|
14412
14546
|
position: 'TopCenter'
|
14413
14547
|
},
|
14414
14548
|
constraints: content ?
|
14415
|
-
NodeConstraints
|
14416
|
-
NodeConstraints
|
14549
|
+
NodeConstraints.Default | NodeConstraints.Tooltip :
|
14550
|
+
NodeConstraints.Default,
|
14417
14551
|
addInfo: {
|
14418
14552
|
tooltip,
|
14419
14553
|
node
|
@@ -21314,7 +21448,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
|
|
21314
21448
|
providers: [ConnectorBridgingService, LineRoutingService, ComplexHierarchicalTreeService, BpmnDiagramsService, LayoutAnimationService, UndoRedoService, SnappingService, ConnectorEditingService, LineDistributionService]
|
21315
21449
|
}]
|
21316
21450
|
}] });
|
21317
|
-
Diagram
|
21451
|
+
Diagram.Inject(ComplexHierarchicalTree, BpmnDiagrams, DataBinding, LineDistribution /*, LayoutAnimation, LineRouting, ConnectorBridging*/);
|
21318
21452
|
|
21319
21453
|
class SyncfusionGridModule {
|
21320
21454
|
}
|
@@ -24815,7 +24949,7 @@ class ColorPicker {
|
|
24815
24949
|
}
|
24816
24950
|
ColorPicker.nextId = 0;
|
24817
24951
|
ColorPicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ColorPicker, deps: [{ token: i1$5.NgControl, optional: true, self: true }, { token: i1$2.Overlay }, { token: i0.ViewContainerRef }, { token: i0.ElementRef }, { token: i7$2.Directionality }], target: i0.ɵɵFactoryTarget.Component });
|
24818
|
-
ColorPicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: ColorPicker, selector: "
|
24952
|
+
ColorPicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: ColorPicker, selector: "bizdoc-color-picker", inputs: { label: "label", required: "required", disabled: "disabled" }, outputs: { valueChanges: "valueChanges" }, host: { properties: { "class.floating": "this.shouldLabelFloat", "id": "this.id", "attr.aria-describedby": "this.describedBy" } }, providers: [{ provide: MatFormFieldControl, useExisting: ColorPicker }], viewQueries: [{ propertyName: "_trigger", first: true, predicate: MatButton, descendants: true, static: true }, { propertyName: "_colorPalette", first: true, predicate: TemplateRef, descendants: true, static: true }], ngImport: i0, template: `<button mat-button (click)='open()'>
|
24819
24953
|
<span>{{label}}</span>
|
24820
24954
|
<mat-icon>arrow_drop_down</mat-icon>
|
24821
24955
|
</button>
|
@@ -24828,7 +24962,7 @@ ColorPicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "
|
|
24828
24962
|
</ng-template>`, isInline: true, styles: [".color-palette{display:flex;flex-direction:column}.color-palette .color-container{display:flex}button{width:100%}.color-item{width:20px;height:20px}\n"], components: [{ type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
24829
24963
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ColorPicker, decorators: [{
|
24830
24964
|
type: Component,
|
24831
|
-
args: [{ selector: '
|
24965
|
+
args: [{ selector: 'bizdoc-color-picker', providers: [{ provide: MatFormFieldControl, useExisting: ColorPicker }], template: `<button mat-button (click)='open()'>
|
24832
24966
|
<span>{{label}}</span>
|
24833
24967
|
<mat-icon>arrow_drop_down</mat-icon>
|
24834
24968
|
</button>
|
@@ -29091,11 +29225,11 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
29091
29225
|
this.theme = this._session.theme.dark ? 'MaterialDark' : 'Material';
|
29092
29226
|
this.accent = this._session.getAccent();
|
29093
29227
|
this.form = this._fb.group({ search: null, formId: null });
|
29094
|
-
this.diagramConstraints = DiagramConstraints
|
29095
|
-
DiagramConstraints
|
29096
|
-
DiagramConstraints
|
29097
|
-
DiagramConstraints
|
29098
|
-
this.diagramTool = DiagramTools
|
29228
|
+
this.diagramConstraints = DiagramConstraints.Default | DiagramConstraints.Bridging |
|
29229
|
+
DiagramConstraints.LineRouting |
|
29230
|
+
DiagramConstraints.Pan |
|
29231
|
+
DiagramConstraints.Zoom;
|
29232
|
+
this.diagramTool = DiagramTools.SingleSelect;
|
29099
29233
|
this.layout = {
|
29100
29234
|
type: 'ComplexHierarchicalTree',
|
29101
29235
|
connectionPointOrigin: ConnectionPointOrigin.DifferentPoint,
|
@@ -29114,7 +29248,7 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
29114
29248
|
this._accentColor = this._session.getAccent(800);
|
29115
29249
|
this._primeryColor = this._session.getPrimery();
|
29116
29250
|
this.selectedItems = {
|
29117
|
-
constraints: SelectorConstraints
|
29251
|
+
constraints: SelectorConstraints.UserHandle,
|
29118
29252
|
userHandles: [
|
29119
29253
|
{
|
29120
29254
|
name: 'info',
|
@@ -29141,13 +29275,13 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
29141
29275
|
this.nodeDefaults = (node) => {
|
29142
29276
|
const { indicator, virtual } = node.addInfo || {};
|
29143
29277
|
if (indicator) {
|
29144
|
-
node.constraints = NodeConstraints
|
29278
|
+
node.constraints = NodeConstraints.PointerEvents | NodeConstraints.Tooltip,
|
29145
29279
|
node.style.strokeWidth = 0,
|
29146
29280
|
node.width = node.height = 15;
|
29147
29281
|
}
|
29148
29282
|
else if (node.id !== 'version') {
|
29149
|
-
node.constraints = NodeConstraints
|
29150
|
-
NodeConstraints
|
29283
|
+
node.constraints = NodeConstraints.InConnect | NodeConstraints.OutConnect |
|
29284
|
+
NodeConstraints.PointerEvents | NodeConstraints.Select;
|
29151
29285
|
this._decorateNode(node);
|
29152
29286
|
node.ports = getPorts();
|
29153
29287
|
}
|
@@ -29155,7 +29289,7 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
29155
29289
|
};
|
29156
29290
|
this.connDefaults = (connector) => {
|
29157
29291
|
const { virtual } = connector.addInfo || {};
|
29158
|
-
connector.constraints = ConnectorConstraints
|
29292
|
+
connector.constraints = ConnectorConstraints.ReadOnly & ~ConnectorConstraints.Select;
|
29159
29293
|
this._decorateConnector(connector);
|
29160
29294
|
};
|
29161
29295
|
}
|
@@ -29247,7 +29381,7 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
29247
29381
|
this.mode = 'diagram';
|
29248
29382
|
this.loading = null;
|
29249
29383
|
this._cd.detectChanges();
|
29250
|
-
this.diagram = new Diagram
|
29384
|
+
this.diagram = new Diagram({
|
29251
29385
|
width: '100%', height: '100%',
|
29252
29386
|
snapSettings: this.snapSettings,
|
29253
29387
|
layout: this.layout,
|
@@ -29402,7 +29536,7 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
29402
29536
|
fontSize: 50,
|
29403
29537
|
opacity: .1
|
29404
29538
|
},
|
29405
|
-
constraints: NodeConstraints
|
29539
|
+
constraints: NodeConstraints.ReadOnly
|
29406
29540
|
};
|
29407
29541
|
this.diagram.addLayer({
|
29408
29542
|
id: 'version',
|
@@ -29468,12 +29602,12 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
29468
29602
|
this.diagram.dataBind();
|
29469
29603
|
}
|
29470
29604
|
pan() {
|
29471
|
-
this.diagram.constraints = this.diagram.constraints | DiagramConstraints
|
29472
|
-
this.diagram.tool = DiagramTools
|
29605
|
+
this.diagram.constraints = this.diagram.constraints | DiagramConstraints.Pan;
|
29606
|
+
this.diagram.tool = DiagramTools.ZoomPan;
|
29473
29607
|
}
|
29474
29608
|
cursor() {
|
29475
|
-
this.diagram.constraints = this.diagram.constraints & ~DiagramConstraints
|
29476
|
-
this.diagram.tool = DiagramTools
|
29609
|
+
this.diagram.constraints = this.diagram.constraints & ~DiagramConstraints.Pan;
|
29610
|
+
this.diagram.tool = DiagramTools.SingleSelect;
|
29477
29611
|
}
|
29478
29612
|
_highlight(ids) {
|
29479
29613
|
for (let i = 0; i < ids.length; i++) {
|
@@ -29759,6 +29893,7 @@ let PositionsComponent = class PositionsComponent {
|
|
29759
29893
|
this._translate = _translate;
|
29760
29894
|
this._popup = _popup;
|
29761
29895
|
this._dialog = _dialog;
|
29896
|
+
this.tools = true;
|
29762
29897
|
this.dirty = false;
|
29763
29898
|
this.saving = false;
|
29764
29899
|
this.form = new FormGroup({});
|
@@ -30133,14 +30268,14 @@ let PositionsComponent = class PositionsComponent {
|
|
30133
30268
|
}
|
30134
30269
|
};
|
30135
30270
|
PositionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PositionsComponent, deps: [{ token: SessionService }, { token: UtilityRef }, { token: DatasourceService }, { token: PromptService }, { token: AccountService }, { token: WindowTitleService }, { token: TranslateService }, { token: Popup }, { token: i3$1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
30136
|
-
PositionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: PositionsComponent, selector: "ng-component", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" } }, viewQueries: [{ propertyName: "_fileElement", first: true, predicate: ["file"], descendants: true, static: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "noRoleTpl", first: true, predicate: ["noRoleTpl"], descendants: true, static: true }, { propertyName: "roleTpl", first: true, predicate: ["roleTpl"], descendants: true, static: true }, { propertyName: "patternTpl", first: true, predicate: ["patternTpl"], descendants: true, static: true }, { propertyName: "newGroupTpl", first: true, predicate: ["groupTpl"], descendants: true, static: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty\">{{'SaveChanges'|translate}}</button>\r\n <span class=\"divider\"></span>\r\n <bizdoc-search-input (valueChange)=\"search($event)\"></bizdoc-search-input>\r\n <button mat-icon-button [matMenuTriggerFor]=\"newMenu\" [bizdocTooltip]=\"'Add'|translate\"><mat-icon>add</mat-icon></button>\r\n <mat-menu #newMenu>\r\n <button mat-menu-item (click)=\"newRole()\">{{'Role'|translate}}</button>\r\n <button mat-menu-item (click)=\"newPattern()\">{{'Pattern'|translate}}</button>\r\n <button mat-menu-item (click)=\"newGroup()\">{{'Group'|translate}} </button>\r\n </mat-menu>\r\n <button mat-icon-button [bizdocTooltip]=\"'Download' | translate\" (click)=\"download()\" [disabled]=\"dirty\"><mat-icon>save_alt</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<div fxLayout=\"row\" fxFlex>\r\n <mat-nav-list class=\"timeline\">\r\n <mat-list-item *ngFor=\"let t of types\" (click)=\"change(t.name)\" [class.active]=\"t === type\">{{t.title}}</mat-list-item>\r\n </mat-nav-list>\r\n\r\n <table mat-table matSort [dataSource]=\"dataSource\" [style.display]=\"dataSource ? '': 'none'\" fxFlex>\r\n <ng-container *ngFor=\"let column of (type?.columns ||[])\" [matColumnDef]=\"column.name\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{column.label}}</th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element[column.name]}} </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"key\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{''}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <span [ngSwitch]=\"element.type\">\r\n <ng-container *ngSwitchCase=\"'group'\">({{'Group'|translate}})</ng-container>\r\n <ng-container *ngSwitchCase=\"'pattern'\">({{'Pattern'|translate}})</ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{element.key}}\r\n </ng-container>\r\n </span>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"value\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{''}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n {{element.value}}\r\n </td>\r\n </ng-container>\r\n <ng-container *ngFor=\"let role of roles\" [matColumnDef]=\"role.name\">\r\n <th mat-header-cell *matHeaderCellDef>{{role.title}}</th>\r\n <td mat-cell *matCellDef=\"let element\" [attr.data-role]=\"role.name\">\r\n <ng-container *ngIf=\"positions[role.name][element.key]\">\r\n <ng-container *ngFor=\"let u of positions[role.name][element.key]; let first = first\">\r\n <ng-container *ngIf=\"!first\">, </ng-container>\r\n {{profiles[u]?.name}}\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"options\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button [matMenuTriggerFor]=\"options\" *ngIf=\"element.type === 'pattern' || element.type === 'group'\"><mat-icon>more_vert</mat-icon></button>\r\n <mat-menu #options>\r\n <ng-container *ngIf=\"element.type === 'pattern'\">\r\n <button mat-menu-item (click)=\"editPattern(element.key)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"deletePattern(element.key)\">{{'Remove'|translate}} </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"element.type === 'group'\">\r\n <button mat-menu-item (click)=\"editGroup(element.key)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"deleteGroup(element.key)\">{{'Remove'|translate}} </button>\r\n </ng-container>\r\n </mat-menu>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let element; columns: displayedColumns\" (click)=\"edit(element.key, $event)\"></tr>\r\n </table>\r\n</div>\r\n<!-- role template -->\r\n<ng-template #roleTpl>\r\n <h2 mat-dialog-title>{{'Role' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"role\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"role.value\" color=\"primary\" [disabled]=\"!role.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!-- pattern template -->\r\n<ng-template #patternTpl>\r\n <h2 mat-dialog-title>{{'Pattern' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"pattern\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput formControlName=\"expression\" [placeholder]=\"'Regex'| translate\" required autocomplete=\"off\" />\r\n <mat-hint><span [innerHTML]=\"'RegexHint' | translate : 'https://regex101.com/'| sanitizeHtml\"></span></mat-hint>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"pattern.value\" color=\"primary\" [disabled]=\"!pattern.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!-- group -->\r\n<ng-template #groupTpl>\r\n <h2 mat-dialog-title>{{'Group' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"group\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Items'|translate\" multiple formControlName=\"items\" required>\r\n <mat-select-trigger>\r\n {{group.value.items ? group.value.items[0] : ''}}\r\n <span *ngIf=\"group.value.items?.length > 1\" class=\"additional-selection\">\r\n (+{{group.value.items.length - 1}} {{(group.value.items?.length === 2 ? 'Other' : 'Others')|translate}})\r\n </span>\r\n </mat-select-trigger>\r\n <mat-option *ngFor=\"let v of source\" [value]=\"v.key\">\r\n <span *ngIf=\"!type.columns\">{{v.value}}</span>\r\n <span *ngIf=\"type.columns\"><span *ngFor=\"let c of type.columns\">{{v.value[c.name]}}</span></span>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"group.value\" color=\"primary\" [disabled]=\"!group.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<ng-template #noRoleTpl>\r\n <mat-dialog-content>\r\n {{'NoRoles'|translate : type?.title}}\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">{{'CreateRole' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!--<form style=\"display:none\">\r\n <input type=\"file\" name=\"file\" (onchange)=\"upload($event)\" #file/>\r\n</form>-->\r\n", styles: [":host{flex-direction:column}table{width:100%}.form{padding:8px}table :ng-deep .mat-cell{cursor:pointer;border-left-width:1px;border-left-style:outset;padding:0 4px!important}\n"], components: [{ type: i7$3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: SearchInput, selector: "bizdoc-search-input", outputs: ["valueChange"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i9$1.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i9$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i11.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i2$3.MatNavList, selector: "mat-nav-list", inputs: ["disableRipple", "disabled"], exportAs: ["matNavList"] }, { type: i2$3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }, { type: i5$2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i6$1.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { type: i12$1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { type: i5$2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i5$2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i1$4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i9$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i23.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i23.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6$1.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i5$2.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i5$2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i5$2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i5$2.MatCellDef, selector: "[matCellDef]" }, { type: i5$2.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i10.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5$2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i5$2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i3$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i1$5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1$5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1$5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i3$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i3$1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i1$4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i5.MatSelectTrigger, selector: "mat-select-trigger" }], pipes: { "translate": TranslatePipe, "sanitizeHtml": SanitizeHtmlPipe } });
|
30271
|
+
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-nav-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-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: 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.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: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i9$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i23.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i23.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6$1.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i5$2.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i5$2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i5$2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i5$2.MatCellDef, selector: "[matCellDef]" }, { type: i5$2.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i10.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5$2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i5$2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i3$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i1$5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1$5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1$5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i3$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i3$1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i1$4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i5.MatSelectTrigger, selector: "mat-select-trigger" }], pipes: { "translate": TranslatePipe, "sanitizeHtml": SanitizeHtmlPipe } });
|
30137
30272
|
PositionsComponent = __decorate([
|
30138
30273
|
BizDoc({ selector: 'bizdoc-positions' })
|
30139
30274
|
/** positions component*/
|
30140
30275
|
], PositionsComponent);
|
30141
30276
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PositionsComponent, decorators: [{
|
30142
30277
|
type: Component,
|
30143
|
-
args: [{ template: "<mat-toolbar>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty\">{{'SaveChanges'|translate}}</button>\r\n <span class=\"divider\"></span>\r\n <bizdoc-search-input (valueChange)=\"search($event)\"></bizdoc-search-input>\r\n <button mat-icon-button [matMenuTriggerFor]=\"newMenu\" [bizdocTooltip]=\"'Add'|translate\"><mat-icon>add</mat-icon></button>\r\n <mat-menu #newMenu>\r\n <button mat-menu-item (click)=\"newRole()\">{{'Role'|translate}}</button>\r\n <button mat-menu-item (click)=\"newPattern()\">{{'Pattern'|translate}}</button>\r\n <button mat-menu-item (click)=\"newGroup()\">{{'Group'|translate}} </button>\r\n </mat-menu>\r\n <button mat-icon-button [bizdocTooltip]=\"'Download' | translate\" (click)=\"download()\" [disabled]=\"dirty\"><mat-icon>save_alt</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<div fxLayout=\"row\" fxFlex>\r\n <mat-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"] }]
|
30278
|
+
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-nav-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-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"] }]
|
30144
30279
|
}], ctorParameters: function () {
|
30145
30280
|
return [{ type: SessionService }, { type: UtilityRef, decorators: [{
|
30146
30281
|
type: Inject,
|