@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/fesm2020/bizdoc-core.mjs
CHANGED
@@ -131,8 +131,7 @@ import * as i9$5 from '@syncfusion/ej2-angular-spreadsheet';
|
|
131
131
|
import { Spreadsheet, isNumber, SpreadsheetModule, SelectionService as SelectionService$2, BasicModuleService, ClipboardService, CellFormatService, KeyboardNavigationService, KeyboardShortcutService, NumberFormatService } from '@syncfusion/ej2-angular-spreadsheet';
|
132
132
|
import * as i4 from '@ctrl/ngx-emoji-mart';
|
133
133
|
import { PickerModule } from '@ctrl/ngx-emoji-mart';
|
134
|
-
import { Diagram, UndoRedo, ConnectorBridging, ConnectorEditing, Snapping, SymbolPalette, BpmnDiagrams,
|
135
|
-
import { DiagramTools as DiagramTools$1, DiagramConstraints as DiagramConstraints$1, ConnectionPointOrigin, SnapConstraints, Diagram as Diagram$1, NodeConstraints as NodeConstraints$1, ComplexHierarchicalTreeService, DiagramModule, SymbolPaletteModule, ConnectorBridgingService, LineRoutingService, BpmnDiagramsService, LayoutAnimationService, UndoRedoService, SnappingService, ConnectorEditingService, LineDistributionService, ComplexHierarchicalTree, BpmnDiagrams as BpmnDiagrams$1, DataBinding, LineDistribution, ToolBase, SelectorConstraints as SelectorConstraints$1, ConnectorConstraints as ConnectorConstraints$1 } from '@syncfusion/ej2-angular-diagrams';
|
134
|
+
import { Diagram, UndoRedo, ConnectorBridging, ConnectorEditing, Snapping, SymbolPalette, BpmnDiagrams, PortVisibility, PortConstraints, DiagramConstraints, 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';
|
136
135
|
import * as i9$3 from '@syncfusion/ej2-angular-schedule';
|
137
136
|
import { Schedule, Day, WorkWeek, Month, MonthAgenda, Agenda, Year, ScheduleModule, ExcelExportService as ExcelExportService$2, DayService, WorkWeekService, MonthService, MonthAgendaService, ICalendarExportService, AgendaService, YearService } from '@syncfusion/ej2-angular-schedule';
|
138
137
|
import * as i10$1 from '@syncfusion/ej2-angular-kanban';
|
@@ -1307,7 +1306,7 @@ const STRINGS = {
|
|
1307
1306
|
Reassign: 'Reassign',
|
1308
1307
|
ReassignAll: 'Reassign all',
|
1309
1308
|
ShowAll: 'Show All',
|
1310
|
-
OutOfOfficeOn: 'You are set as <i>out of office</i>. Your messages are
|
1309
|
+
OutOfOfficeOn: 'You are set as <i>out of office</i>. Your messages are forwarded to <em>{0}</em>',
|
1311
1310
|
Dismiss: 'Dismiss',
|
1312
1311
|
ChangeOptions: 'Options',
|
1313
1312
|
Impersonating: 'You logged in on behalf of {0}',
|
@@ -13313,7 +13312,7 @@ class WorkflowNodeComponent {
|
|
13313
13312
|
this._fb = _fb;
|
13314
13313
|
this._pane = _pane;
|
13315
13314
|
this.change = new EventEmitter();
|
13316
|
-
this.
|
13315
|
+
this.connector = this._fb.group({
|
13317
13316
|
action: '',
|
13318
13317
|
case: ''
|
13319
13318
|
});
|
@@ -13323,29 +13322,48 @@ class WorkflowNodeComponent {
|
|
13323
13322
|
ngOnInit() {
|
13324
13323
|
this._pane.dataChange.subscribe(d => {
|
13325
13324
|
this.nodes = d['nodes'];
|
13325
|
+
this.diagram = d['diagram'];
|
13326
13326
|
this.connectors = d['connectors'];
|
13327
13327
|
this.tool = null;
|
13328
13328
|
this._elementDestroy.next();
|
13329
|
+
this.argumentstemplate.clear();
|
13329
13330
|
if (this.connectors.length) {
|
13330
|
-
this.connectorInfo.valueChanges.pipe(takeUntil$1(this._elementDestroy)).subscribe(() => {
|
13331
|
-
this.connectors.forEach(c => {
|
13332
|
-
Object.assign(c.addInfo, this.connectorInfo.getRawValue());
|
13333
|
-
this.change.emit();
|
13334
|
-
});
|
13335
|
-
});
|
13336
13331
|
const connector = this.connectors[0];
|
13337
|
-
|
13338
|
-
|
13339
|
-
|
13340
|
-
|
13341
|
-
|
13342
|
-
|
13343
|
-
}
|
13332
|
+
if (connector.addInfo) {
|
13333
|
+
const action = connector.addInfo['action'], acase = connector.addInfo['case'];
|
13334
|
+
this.connector.patchValue({
|
13335
|
+
action: this.connectors.length === 1 || this.connectors.every(c => c.addInfo && c.addInfo['action'] === action) ? action : null,
|
13336
|
+
case: this.connectors.length === 1 || this.connectors.every(c => c.addInfo && c.addInfo['case'] === acase) ? acase : null
|
13337
|
+
});
|
13338
|
+
}
|
13344
13339
|
this._pane.title = this._translate.get(this.connectors.length === 1 ? 'Connector' : 'Connectors', this.connectors.length);
|
13345
13340
|
this._pane.icon = 'link';
|
13341
|
+
this.connector.valueChanges.pipe(takeUntil$1(this._elementDestroy)).subscribe(v => {
|
13342
|
+
const content = v['case'] || v['action'];
|
13343
|
+
this.connectors.forEach(c => {
|
13344
|
+
if (!c.addInfo)
|
13345
|
+
c.addInfo = this.connector.getRawValue();
|
13346
|
+
else
|
13347
|
+
Object.assign(c.addInfo, this.connector.getRawValue());
|
13348
|
+
cleanup(c.addInfo);
|
13349
|
+
if (!c.annotations.length)
|
13350
|
+
c.annotations.push({
|
13351
|
+
style: {
|
13352
|
+
color: this._session.theme.dark ? 'white' : 'black',
|
13353
|
+
fill: 'transparent',
|
13354
|
+
opacity: .8,
|
13355
|
+
},
|
13356
|
+
content
|
13357
|
+
});
|
13358
|
+
else
|
13359
|
+
c.annotations[0].content = content;
|
13360
|
+
});
|
13361
|
+
this.diagram.dataBind();
|
13362
|
+
this.change.emit();
|
13363
|
+
});
|
13364
|
+
this.argumentstemplate.createEmbeddedView(this.connectorargs);
|
13346
13365
|
}
|
13347
|
-
|
13348
|
-
if (this.nodes.length) {
|
13366
|
+
else {
|
13349
13367
|
const node = this.node = this.nodes[0], addInfo = node.addInfo;
|
13350
13368
|
if (addInfo && addInfo.nodeType) {
|
13351
13369
|
const nodeType = addInfo.nodeType;
|
@@ -13353,10 +13371,22 @@ class WorkflowNodeComponent {
|
|
13353
13371
|
this._pane.title = tool.title;
|
13354
13372
|
const annotationArg = tool.arguments.find(a => a.diagram);
|
13355
13373
|
function change(m) {
|
13356
|
-
if (annotationArg && m[annotationArg.name] !== null
|
13357
|
-
node.annotations
|
13374
|
+
if (annotationArg && m[annotationArg.name] !== null) {
|
13375
|
+
if (node.annotations.length)
|
13376
|
+
node.annotations[0].content = m[annotationArg.name] || null;
|
13377
|
+
else
|
13378
|
+
node.annotations.push({
|
13379
|
+
style: {
|
13380
|
+
color: this._session.theme.dark ? 'white' : 'black',
|
13381
|
+
fill: 'transparent',
|
13382
|
+
opacity: .8,
|
13383
|
+
},
|
13384
|
+
content: m[annotationArg.name] || null
|
13385
|
+
});
|
13358
13386
|
}
|
13359
|
-
Object.assign(addInfo,
|
13387
|
+
Object.assign(addInfo, m);
|
13388
|
+
cleanup(addInfo);
|
13389
|
+
this.diagram.dataBind();
|
13360
13390
|
this.change.emit();
|
13361
13391
|
}
|
13362
13392
|
if (tool.template) {
|
@@ -13389,8 +13419,8 @@ class WorkflowNodeComponent {
|
|
13389
13419
|
instance.form.patchValue(node.addInfo, { emitEvent: false });
|
13390
13420
|
return instance;
|
13391
13421
|
}
|
13392
|
-
connectorCaseChange(
|
13393
|
-
this.
|
13422
|
+
connectorCaseChange(evt) {
|
13423
|
+
this.connector.controls['case'].setValue(evt.value);
|
13394
13424
|
this.change.emit();
|
13395
13425
|
}
|
13396
13426
|
ngOnDestroy() {
|
@@ -13399,15 +13429,18 @@ class WorkflowNodeComponent {
|
|
13399
13429
|
}
|
13400
13430
|
}
|
13401
13431
|
WorkflowNodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: WorkflowNodeComponent, deps: [{ token: SessionService }, { token: BizDocComponentFactoryResolver }, { token: i0.ComponentFactoryResolver }, { token: i0.Injector }, { token: TranslateService }, { token: i1$5.FormBuilder }, { token: PaneRef }], target: i0.ɵɵFactoryTarget.Component });
|
13402
|
-
WorkflowNodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: WorkflowNodeComponent, selector: "ng-component", outputs: { change: "change" }, viewQueries: [{ propertyName: "argumentstemplate", first: true, predicate: ["arguments"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<ng-container #arguments>\r\n</ng-container>\r\n<
|
13432
|
+
WorkflowNodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: WorkflowNodeComponent, selector: "ng-component", outputs: { change: "change" }, viewQueries: [{ propertyName: "argumentstemplate", first: true, predicate: ["arguments"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "connectorargs", first: true, predicate: ["connectorargs"], descendants: true, static: true }], ngImport: i0, template: "<ng-container #arguments>\r\n</ng-container>\r\n<ng-template #connectorargs>\r\n <form [formGroup]=\"connector\" fxLayout=\"column\" autocomplete=\"off\">\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Action' | translate\" formControlName=\"action\">\r\n <mat-option *ngFor=\"let action of actions\" [value]=\"action.name\">{{action.title}}</mat-option>\r\n <mat-option>{{'None' | translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-button-toggle-group [value]=\"connector.controls['case'].value\" #acase=\"matButtonToggleGroup\" (change)=\"connectorCaseChange($event)\">\r\n <mat-button-toggle value=\"true\">{{'True' | translate}}</mat-button-toggle>\r\n <mat-button-toggle value=\"false\">{{'False' | translate}}</mat-button-toggle>\r\n <mat-button-toggle>{{'Case' | translate}}</mat-button-toggle>\r\n </mat-button-toggle-group>\r\n <mat-form-field [style.display]=\"connector.controls['case'].value==='true'||connector.controls['case'].value==='false'?'none':''\">\r\n <input matInput [placeholder]=\"'Case' | translate\" formControlName=\"case\" />\r\n </mat-form-field>\r\n </form>\r\n</ng-template>\r\n", styles: [":host{width:100%;padding:4px;display:block}\n"], components: [{ type: i1$4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i9$2.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }], directives: [{ type: i1$5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i23.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i1$5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9$2.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1$5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }], pipes: { "translate": TranslatePipe } });
|
13403
13433
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: WorkflowNodeComponent, decorators: [{
|
13404
13434
|
type: Component,
|
13405
|
-
args: [{ template: "<ng-container #arguments>\r\n</ng-container>\r\n<
|
13435
|
+
args: [{ template: "<ng-container #arguments>\r\n</ng-container>\r\n<ng-template #connectorargs>\r\n <form [formGroup]=\"connector\" fxLayout=\"column\" autocomplete=\"off\">\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Action' | translate\" formControlName=\"action\">\r\n <mat-option *ngFor=\"let action of actions\" [value]=\"action.name\">{{action.title}}</mat-option>\r\n <mat-option>{{'None' | translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-button-toggle-group [value]=\"connector.controls['case'].value\" #acase=\"matButtonToggleGroup\" (change)=\"connectorCaseChange($event)\">\r\n <mat-button-toggle value=\"true\">{{'True' | translate}}</mat-button-toggle>\r\n <mat-button-toggle value=\"false\">{{'False' | translate}}</mat-button-toggle>\r\n <mat-button-toggle>{{'Case' | translate}}</mat-button-toggle>\r\n </mat-button-toggle-group>\r\n <mat-form-field [style.display]=\"connector.controls['case'].value==='true'||connector.controls['case'].value==='false'?'none':''\">\r\n <input matInput [placeholder]=\"'Case' | translate\" formControlName=\"case\" />\r\n </mat-form-field>\r\n </form>\r\n</ng-template>\r\n", styles: [":host{width:100%;padding:4px;display:block}\n"] }]
|
13406
13436
|
}], ctorParameters: function () { return [{ type: SessionService }, { type: BizDocComponentFactoryResolver }, { type: i0.ComponentFactoryResolver }, { type: i0.Injector }, { type: TranslateService }, { type: i1$5.FormBuilder }, { type: PaneRef }]; }, propDecorators: { change: [{
|
13407
13437
|
type: Output
|
13408
13438
|
}], argumentstemplate: [{
|
13409
13439
|
type: ViewChild,
|
13410
13440
|
args: ['arguments', { static: true, read: ViewContainerRef }]
|
13441
|
+
}], connectorargs: [{
|
13442
|
+
type: ViewChild,
|
13443
|
+
args: ['connectorargs', { static: true }]
|
13411
13444
|
}] } });
|
13412
13445
|
|
13413
13446
|
class FormService {
|
@@ -13453,10 +13486,10 @@ Diagram.Inject(UndoRedo, ConnectorBridging, ConnectorEditing, Snapping);
|
|
13453
13486
|
SymbolPalette.Inject(BpmnDiagrams);
|
13454
13487
|
function getPorts$1() {
|
13455
13488
|
const ports = [
|
13456
|
-
{ id: 'port1', shape: 'Circle', offset: { x: 0, y: 0.5 } },
|
13457
|
-
{ id: 'port2', shape: 'Circle', offset: { x: 0.5, y: 1 } },
|
13458
|
-
{ id: 'port3', shape: 'Circle', offset: { x: 1, y: 0.5 } },
|
13459
|
-
{ id: 'port4', shape: 'Circle', offset: { x: 0.5, y: 0 } }
|
13489
|
+
{ id: 'port1', shape: 'Circle', offset: { x: 0, y: 0.5 }, visibility: PortVisibility.Connect | PortVisibility.Hover, constraints: PortConstraints.Default | PortConstraints.Draw },
|
13490
|
+
{ id: 'port2', shape: 'Circle', offset: { x: 0.5, y: 1 }, visibility: PortVisibility.Connect | PortVisibility.Hover, constraints: PortConstraints.Default | PortConstraints.Draw },
|
13491
|
+
{ id: 'port3', shape: 'Circle', offset: { x: 1, y: 0.5 }, visibility: PortVisibility.Connect | PortVisibility.Hover, constraints: PortConstraints.Default | PortConstraints.Draw },
|
13492
|
+
{ id: 'port4', shape: 'Circle', offset: { x: 0.5, y: 0 }, visibility: PortVisibility.Connect | PortVisibility.Hover, constraints: PortConstraints.Default | PortConstraints.Draw }
|
13460
13493
|
];
|
13461
13494
|
return ports;
|
13462
13495
|
}
|
@@ -13481,26 +13514,6 @@ function paletteIconClick() {
|
|
13481
13514
|
}
|
13482
13515
|
}
|
13483
13516
|
}
|
13484
|
-
//Defines the tool
|
13485
|
-
class DrawTool extends ConnectorDrawingTool {
|
13486
|
-
constructor(diagram, segments) {
|
13487
|
-
super(diagram.commandHandler, 'ConnectorSourceEnd', null);
|
13488
|
-
this.diagram = diagram;
|
13489
|
-
this.segments = segments;
|
13490
|
-
}
|
13491
|
-
mouseMove(args) {
|
13492
|
-
if (this.diagram.selectedItems.nodes.length) {
|
13493
|
-
this.diagram.drawingObject = {
|
13494
|
-
type: this.segments || 'Bezier',
|
13495
|
-
sourceID: this.diagram.selectedItems.nodes[0].id
|
13496
|
-
};
|
13497
|
-
this.inAction = true;
|
13498
|
-
}
|
13499
|
-
const ok = super.mouseMove(args);
|
13500
|
-
return ok;
|
13501
|
-
}
|
13502
|
-
}
|
13503
|
-
const LINK_PATH = 'M346.7,714.6l368.1-368.1c17.9-17.9,17.9-47.1,0-64.9c-17.9-17.9-47.1-17.9-64.9,0l-368,368c-17.9,17.9-17.9,47.1,0,64.9C299.6,732.5,328.9,732.5,346.7,714.6z M468.2,651c6.4,9,7.6,18.5,7.6,23.8c0,6.3-1.5,18.6-11.8,28.9L271,896.5c-10.3,10.3-22.5,11.8-28.9,11.8c-6.3,0-18.6-1.5-28.9-11.8L103.5,786.8c-10.3-10.3-11.8-22.5-11.8-28.9c0-6.4,1.5-18.6,11.8-28.9l192.9-192.9c10.3-10.3,22.5-11.8,28.9-11.8c4.5,0,11.8,0.8,19.3,4.8l58.6-58.6c-48-39.6-119.6-36.9-164.5,7.9L45.7,671.3c-47.7,47.7-47.7,125.5,0,173.2l109.7,109.7c47.7,47.7,125.5,47.7,173.2,0l192.9-192.9c46-46,47.6-120.4,4.6-168.4L468.2,651z M954.2,155.5L844.5,45.8C796.9-1.9,719-1.9,671.3,45.8L478.4,238.7c-44.8,44.8-47.5,116.5-7.9,164.5l58.6-58.6c-4-7.6-4.8-14.9-4.8-19.3c0-6.3,1.5-18.6,11.8-28.9l192.9-192.9c10.3-10.3,22.5-11.8,28.9-11.8c6.3,0,18.6,1.5,28.9,11.8l109.7,109.7c10.3,10.3,11.8,22.5,11.8,28.9c0,6.3-1.5,18.6-11.8,28.9L703.7,464c-10.3,10.3-22.5,11.8-28.9,11.8c-5.3,0-14.8-1.1-23.8-7.6l-58,58c48,43,122.3,41.5,168.4-4.6l192.9-192.9C1001.9,281.1,1001.9,203.1,954.2,155.5z';
|
13504
13517
|
/** workflow component*/
|
13505
13518
|
class WorkflowComponent {
|
13506
13519
|
/** workflow ctor */
|
@@ -13511,7 +13524,7 @@ class WorkflowComponent {
|
|
13511
13524
|
this._router = _router;
|
13512
13525
|
this._session = _session;
|
13513
13526
|
this._translate = _translate;
|
13514
|
-
this.
|
13527
|
+
this.fontSizes = [9, 11, 12, 13, 15, 21, 31, 41];
|
13515
13528
|
this.connectorType = 'Bezier';
|
13516
13529
|
this.alignment = 'Center';
|
13517
13530
|
this.fontSize = 12;
|
@@ -13520,22 +13533,16 @@ class WorkflowComponent {
|
|
13520
13533
|
this.palettes = [];
|
13521
13534
|
this.diagramConstraints = DiagramConstraints.Default | DiagramConstraints.Bridging | DiagramConstraints.UserInteraction | DiagramConstraints.Zoom;
|
13522
13535
|
this.diagramTool = DiagramTools.Default;
|
13523
|
-
//Defines the user handle collection for nodes in diagram
|
13524
|
-
this._userHandles = [
|
13525
|
-
{
|
13526
|
-
name: 'connect',
|
13527
|
-
pathData: LINK_PATH,
|
13528
|
-
visible: true,
|
13529
|
-
offset: 0,
|
13530
|
-
side: 'Right',
|
13531
|
-
displacement: 20,
|
13532
|
-
margin: { top: 0, bottom: 0, left: 0, right: 0 }
|
13533
|
-
}
|
13534
|
-
];
|
13535
13536
|
//SymbolPalette Properties
|
13536
13537
|
this.symbolMargin = { left: 10, right: 10, top: 10, bottom: 10 };
|
13537
|
-
this.snapSettings = {
|
13538
|
-
|
13538
|
+
this.snapSettings = {
|
13539
|
+
// horizontalGridlines: gridlines,
|
13540
|
+
// verticalGridlines: gridlines,
|
13541
|
+
// constraints: SnapConstraints.All & ~SnapConstraints.ShowLines
|
13542
|
+
};
|
13543
|
+
this.selectedItems = {
|
13544
|
+
constraints: SelectorConstraints.All & ~SelectorConstraints.Rotate
|
13545
|
+
};
|
13539
13546
|
this.scrollSettings = {
|
13540
13547
|
minZoom: .5,
|
13541
13548
|
maxZoom: 2.5
|
@@ -13546,44 +13553,47 @@ class WorkflowComponent {
|
|
13546
13553
|
verticalRuler: { markerColor: this._rulerColor }
|
13547
13554
|
};
|
13548
13555
|
this._destroy = new Subject();
|
13549
|
-
this.
|
13550
|
-
|
13551
|
-
|
13556
|
+
this._nodedestroy = new Subject();
|
13557
|
+
this.nodeDefaults = (obj) => {
|
13558
|
+
if (obj.addInfo && obj.addInfo['nodeType']) {
|
13559
|
+
obj.style = {
|
13552
13560
|
fill: 'transparent',
|
13553
13561
|
strokeColor: this._session.theme.dark ? 'white' : 'black',
|
13554
13562
|
strokeWidth: 1
|
13555
13563
|
},
|
13556
|
-
|
13557
|
-
|
13558
|
-
|
13559
|
-
|
13560
|
-
|
13561
|
-
|
13562
|
-
|
13563
|
-
|
13564
|
-
|
13565
|
-
|
13566
|
-
}
|
13567
|
-
else {
|
13568
|
-
const ratio = 100 / obj.width;
|
13569
|
-
obj.width = 100;
|
13570
|
-
obj.height *= ratio;
|
13564
|
+
obj.constraints = NodeConstraints.Default | NodeConstraints.AspectRatio,
|
13565
|
+
obj.ports = getPorts$1();
|
13566
|
+
if (obj.width === undefined) {
|
13567
|
+
obj.width = 145;
|
13568
|
+
}
|
13569
|
+
else {
|
13570
|
+
const ratio = 100 / obj.width;
|
13571
|
+
obj.width = 100;
|
13572
|
+
obj.height *= ratio;
|
13573
|
+
}
|
13571
13574
|
}
|
13572
|
-
obj.constraints = NodeConstraints.Default | NodeConstraints.AspectRatio;
|
13573
|
-
obj.ports = getPorts$1();
|
13574
13575
|
return obj;
|
13575
13576
|
};
|
13576
13577
|
this.connDefaults = (obj) => {
|
13577
|
-
obj.constraints = ConnectorConstraints.Default | ConnectorConstraints.Bridging |
|
13578
|
+
obj.constraints = ConnectorConstraints.Default | ConnectorConstraints.Bridging |
|
13579
|
+
ConnectorConstraints.Bridging;
|
13578
13580
|
obj.style.strokeColor = this._session.theme.dark ? 'white' : 'black';
|
13581
|
+
obj.type = this.connectorType;
|
13582
|
+
// if (!obj.annotations) obj.annotations = [{
|
13583
|
+
// style: {
|
13584
|
+
// color: this._session.theme.dark ? 'white' : 'black',
|
13585
|
+
// fill: 'transparent',
|
13586
|
+
// opacity: .8,
|
13587
|
+
// },
|
13588
|
+
// }];
|
13579
13589
|
};
|
13590
|
+
this._tools = localStorage.getItem('diagram_tools') === '1';
|
13580
13591
|
this._palettes();
|
13581
13592
|
}
|
13582
|
-
|
13583
|
-
|
13584
|
-
|
13585
|
-
|
13586
|
-
return tool;
|
13593
|
+
get tools() { return this._tools; }
|
13594
|
+
set tools(val) {
|
13595
|
+
localStorage.setItem('diagram_tools', val ? '1' : '0');
|
13596
|
+
this._tools = val;
|
13587
13597
|
}
|
13588
13598
|
ngAfterViewInit() {
|
13589
13599
|
}
|
@@ -13591,11 +13601,15 @@ class WorkflowComponent {
|
|
13591
13601
|
this.symbolPalette = new SymbolPalette({
|
13592
13602
|
expandMode: 'Multiple',
|
13593
13603
|
palettes: this.palettes,
|
13594
|
-
width: "100%",
|
13595
|
-
|
13604
|
+
width: "100%",
|
13605
|
+
height: "100%",
|
13606
|
+
enableRtl: false,
|
13607
|
+
enableAnimation: false,
|
13608
|
+
symbolHeight: 80,
|
13609
|
+
symbolWidth: 80,
|
13596
13610
|
symbolMargin: this.symbolMargin,
|
13597
13611
|
getSymbolInfo: this.getSymbolInfo.bind(this),
|
13598
|
-
getNodeDefaults: this.getSymbolDefaults.bind(this)
|
13612
|
+
getNodeDefaults: this.getSymbolDefaults.bind(this),
|
13599
13613
|
});
|
13600
13614
|
this.symbolPalette.appendTo(this.symbolPaletteEl.nativeElement);
|
13601
13615
|
this.diagram = new Diagram({
|
@@ -13605,7 +13619,6 @@ class WorkflowComponent {
|
|
13605
13619
|
constraints: this.diagramConstraints,
|
13606
13620
|
tool: this.diagramTool,
|
13607
13621
|
getNodeDefaults: this.nodeDefaults.bind(this),
|
13608
|
-
getCustomTool: this.getTool.bind(this),
|
13609
13622
|
scrollSettings: this.scrollSettings,
|
13610
13623
|
selectedItems: this.selectedItems,
|
13611
13624
|
rulerSettings: this.rulerSettings,
|
@@ -13632,7 +13645,6 @@ class WorkflowComponent {
|
|
13632
13645
|
this.diagram.fitToPage();
|
13633
13646
|
this.dirty = false;
|
13634
13647
|
});
|
13635
|
-
this._pane.resized.pipe(takeUntil(this._destroy)).subscribe(() => this.diagram.refresh());
|
13636
13648
|
}
|
13637
13649
|
_palettes() {
|
13638
13650
|
this._session.profile.nodes.forEach(n => {
|
@@ -13652,8 +13664,110 @@ class WorkflowComponent {
|
|
13652
13664
|
}
|
13653
13665
|
palette.symbols.push(node);
|
13654
13666
|
});
|
13655
|
-
|
13656
|
-
|
13667
|
+
this.palettes.push({
|
13668
|
+
id: 'design',
|
13669
|
+
title: this._translate.get('Design'),
|
13670
|
+
symbols: [{
|
13671
|
+
id: 'Link22',
|
13672
|
+
type: 'Straight',
|
13673
|
+
sourcePoint: { x: 0, y: 0 },
|
13674
|
+
targetPoint: { x: 60, y: 60 },
|
13675
|
+
targetDecorator: {
|
13676
|
+
shape: 'Arrow',
|
13677
|
+
style: { strokeColor: '#757575', fill: '#757575' },
|
13678
|
+
},
|
13679
|
+
style: {
|
13680
|
+
strokeWidth: 1,
|
13681
|
+
strokeDashArray: '4 4',
|
13682
|
+
strokeColor: '#757575',
|
13683
|
+
}
|
13684
|
+
},
|
13685
|
+
{
|
13686
|
+
id: 'text', shape: { type: 'Text', content: 'T' },
|
13687
|
+
constraints: NodeConstraints.Default & ~NodeConstraints.InConnect & ~NodeConstraints.OutConnect,
|
13688
|
+
addInfo: { title: this._translate.get('Text') }
|
13689
|
+
}]
|
13690
|
+
});
|
13691
|
+
const color = MATERIAL_PALETTES['grey'][200]; // this._session.getPrimery(100);
|
13692
|
+
this.palettes.push({
|
13693
|
+
id: 'swimlaneShapes',
|
13694
|
+
expanded: true,
|
13695
|
+
title: this._translate.get('Swimlane Shapes'),
|
13696
|
+
symbols: [
|
13697
|
+
{
|
13698
|
+
id: 'swimlane',
|
13699
|
+
addInfo: {
|
13700
|
+
title: this._translate.get('Horizontal')
|
13701
|
+
},
|
13702
|
+
shape: {
|
13703
|
+
type: 'SwimLane',
|
13704
|
+
lanes: [
|
13705
|
+
{
|
13706
|
+
id: 'lane1',
|
13707
|
+
header: {
|
13708
|
+
style: { fill: color }
|
13709
|
+
}
|
13710
|
+
}
|
13711
|
+
],
|
13712
|
+
orientation: 'Horizontal',
|
13713
|
+
isLane: true
|
13714
|
+
},
|
13715
|
+
height: 60,
|
13716
|
+
width: 140,
|
13717
|
+
offsetX: 70,
|
13718
|
+
offsetY: 30,
|
13719
|
+
}, {
|
13720
|
+
id: 'vswimlane',
|
13721
|
+
addInfo: {
|
13722
|
+
title: this._translate.get('Vertical')
|
13723
|
+
},
|
13724
|
+
shape: {
|
13725
|
+
type: 'SwimLane',
|
13726
|
+
lanes: [
|
13727
|
+
{
|
13728
|
+
id: 'lane1',
|
13729
|
+
header: {
|
13730
|
+
style: { fill: color }
|
13731
|
+
}
|
13732
|
+
}
|
13733
|
+
],
|
13734
|
+
orientation: 'Vertical', isLane: true
|
13735
|
+
},
|
13736
|
+
height: 140,
|
13737
|
+
width: 60,
|
13738
|
+
offsetX: 70,
|
13739
|
+
offsetY: 30,
|
13740
|
+
}, {
|
13741
|
+
id: 'vphase',
|
13742
|
+
addInfo: {
|
13743
|
+
title: this._translate.get('Phase')
|
13744
|
+
},
|
13745
|
+
shape: {
|
13746
|
+
type: 'SwimLane',
|
13747
|
+
phases: [{ style: { strokeWidth: 1, strokeDashArray: '3,3', strokeColor: color }, }],
|
13748
|
+
annotations: [{ text: '' }],
|
13749
|
+
orientation: 'Vertical', isPhase: true
|
13750
|
+
},
|
13751
|
+
height: 60,
|
13752
|
+
width: 140,
|
13753
|
+
style: { strokeColor: color }
|
13754
|
+
}, {
|
13755
|
+
id: 'hphase',
|
13756
|
+
addInfo: {
|
13757
|
+
title: this._translate.get('Phase')
|
13758
|
+
},
|
13759
|
+
shape: {
|
13760
|
+
type: 'SwimLane',
|
13761
|
+
phases: [{ style: { strokeWidth: 1, strokeDashArray: '3,3', strokeColor: color }, }],
|
13762
|
+
annotations: [{ text: '' }],
|
13763
|
+
orientation: 'Horizontal', isPhase: true
|
13764
|
+
},
|
13765
|
+
height: 60,
|
13766
|
+
width: 80,
|
13767
|
+
style: { strokeColor: color }
|
13768
|
+
}
|
13769
|
+
]
|
13770
|
+
});
|
13657
13771
|
}
|
13658
13772
|
_versionNode(version) {
|
13659
13773
|
return {
|
@@ -13674,11 +13788,11 @@ class WorkflowComponent {
|
|
13674
13788
|
};
|
13675
13789
|
}
|
13676
13790
|
getSymbolInfo(symbol) {
|
13677
|
-
return {
|
13791
|
+
return symbol.addInfo ? {
|
13678
13792
|
fit: true,
|
13679
13793
|
tooltip: symbol.addInfo.title,
|
13680
13794
|
description: { text: symbol.addInfo.title, overflow: 'Wrap', wrap: 'WrapWithOverflow' }
|
13681
|
-
};
|
13795
|
+
} : null;
|
13682
13796
|
}
|
13683
13797
|
getSymbolDefaults(symbol) {
|
13684
13798
|
symbol.width = symbol.height = 40;
|
@@ -13693,48 +13807,42 @@ class WorkflowComponent {
|
|
13693
13807
|
this.diagram.tool = DiagramTools.Default;
|
13694
13808
|
}
|
13695
13809
|
selectionChange(evt) {
|
13696
|
-
const {
|
13697
|
-
if (
|
13698
|
-
|
13699
|
-
|
13700
|
-
|
13701
|
-
|
13810
|
+
const { newValue, state } = evt;
|
13811
|
+
if (state !== 'Changed' || !newValue.length) {
|
13812
|
+
this._nodedestroy.next();
|
13813
|
+
return;
|
13814
|
+
}
|
13815
|
+
const connectors = newValue.filter(n => n instanceof Connector).map(n => n);
|
13816
|
+
if (connectors.length) {
|
13817
|
+
const connector = connectors[0], type = connector.type;
|
13818
|
+
this.connectorType = connectors.length === 1 ||
|
13819
|
+
connectors.every(c => c.type === type) ? type : null;
|
13820
|
+
if (connector.annotations.length && connector.annotations[0].style)
|
13821
|
+
this.fontSize = connector.annotations[0].style.fontSize;
|
13822
|
+
this.connectorType = connectors.length === 1 ||
|
13823
|
+
connectors.every(c => c.type === type) ? type : null;
|
13824
|
+
}
|
13825
|
+
const nodes = newValue.filter(n => n instanceof Node);
|
13826
|
+
if (nodes.length) {
|
13827
|
+
const node = nodes[0], addInfo = node.addInfo;
|
13828
|
+
if (addInfo && addInfo.nodeType && node.annotations.length && node.annotations[0].style)
|
13829
|
+
this.fontSize = node.annotations[0].style.fontSize;
|
13702
13830
|
else
|
13703
|
-
|
13704
|
-
if (connectors.length) {
|
13705
|
-
const connector = connectors[0];
|
13706
|
-
connectors.forEach(c => { if (!c.addInfo)
|
13707
|
-
c.addInfo = {}; });
|
13708
|
-
const type = connector.type;
|
13709
|
-
this.connectorType = connectors.length === 1 || connectors.every(c => c.type === type) ? type : null;
|
13710
|
-
if (connector.annotations.length)
|
13711
|
-
this.fontSize = connector.annotations[0].style.fontSize;
|
13712
|
-
this.connectorType = connectors.length === 1 || connectors.every(c => c.type === type) ? type : null;
|
13713
|
-
}
|
13714
|
-
if (nodes.length) {
|
13715
|
-
const node = nodes[0], addInfo = node.addInfo;
|
13716
|
-
if (addInfo && addInfo.nodeType) {
|
13717
|
-
if (node.annotations.length)
|
13718
|
-
this.fontSize = node.annotations[0].style.fontSize;
|
13719
|
-
}
|
13720
|
-
}
|
13721
|
-
this._router.navigate(WorkflowNodeComponent, {
|
13722
|
-
state: {
|
13723
|
-
nodes, connectors
|
13724
|
-
},
|
13725
|
-
policy: OpenPolicy.Tab,
|
13726
|
-
expandable: false,
|
13727
|
-
group: ''
|
13728
|
-
}).then(p => {
|
13729
|
-
p.instance.change.
|
13730
|
-
pipe(takeUntil(this._destroy)).subscribe(() => {
|
13731
|
-
this.dirty = true;
|
13732
|
-
this.diagram.dataBind();
|
13733
|
-
});
|
13734
|
-
});
|
13831
|
+
return;
|
13735
13832
|
}
|
13736
|
-
|
13737
|
-
|
13833
|
+
this._router.navigate(WorkflowNodeComponent, {
|
13834
|
+
state: {
|
13835
|
+
diagram: this.diagram,
|
13836
|
+
nodes,
|
13837
|
+
connectors
|
13838
|
+
},
|
13839
|
+
policy: OpenPolicy.Tab,
|
13840
|
+
expandable: false,
|
13841
|
+
group: ''
|
13842
|
+
}).then(p => {
|
13843
|
+
p.instance.change.
|
13844
|
+
pipe(takeUntil(this._nodedestroy.pipe(tap$1(() => p.close())))).subscribe(() => this.dirty = true);
|
13845
|
+
});
|
13738
13846
|
}
|
13739
13847
|
align(value) {
|
13740
13848
|
function align(n) {
|
@@ -13748,19 +13856,43 @@ class WorkflowComponent {
|
|
13748
13856
|
});
|
13749
13857
|
}
|
13750
13858
|
this.diagram.selectedItems.nodes.forEach(align);
|
13751
|
-
this.diagram.selectedItems.connectors.forEach(
|
13859
|
+
this.diagram.selectedItems.connectors.forEach(c => {
|
13860
|
+
c.annotations.forEach(a => {
|
13861
|
+
a.alignment = value === 'Left' ? 'Before' :
|
13862
|
+
value === 'Right' ? 'After' : 'Center';
|
13863
|
+
a.offset = 5;
|
13864
|
+
a.displacement = {
|
13865
|
+
x: value === 'Right' ? 1 : value === 'Left' ? 0 : .5,
|
13866
|
+
y: value === 'Top' ? 0 : value === 'Bottom' ? 1 : .5
|
13867
|
+
};
|
13868
|
+
});
|
13869
|
+
});
|
13752
13870
|
this.alignment = value;
|
13753
13871
|
this.dirty = true;
|
13754
13872
|
}
|
13755
13873
|
dragEnter(args) {
|
13756
|
-
|
13757
|
-
|
13758
|
-
|
13759
|
-
|
13760
|
-
|
13761
|
-
|
13762
|
-
|
13763
|
-
|
13874
|
+
if (args.element instanceof Node) {
|
13875
|
+
const shape = args.element.shape;
|
13876
|
+
if (shape.isLane) {
|
13877
|
+
switch (shape.orientation) {
|
13878
|
+
case 'Horizontal':
|
13879
|
+
shape.lanes[0].height = 100;
|
13880
|
+
shape.lanes[0].width = 400;
|
13881
|
+
break;
|
13882
|
+
case 'Vertical':
|
13883
|
+
shape.lanes[0].height = 400;
|
13884
|
+
shape.lanes[0].width = 100;
|
13885
|
+
break;
|
13886
|
+
}
|
13887
|
+
}
|
13888
|
+
else {
|
13889
|
+
const { width, height } = args.element;
|
13890
|
+
args.element.width = 100;
|
13891
|
+
args.element.height *= 100 / width;
|
13892
|
+
args.element.offsetX += (args.element.width - width) / 2;
|
13893
|
+
args.element.offsetY += (args.element.height - height) / 2;
|
13894
|
+
args.element.style = { fill: 'white', strokeColor: 'black' };
|
13895
|
+
}
|
13764
13896
|
}
|
13765
13897
|
}
|
13766
13898
|
propertyChange(e) {
|
@@ -13770,15 +13902,6 @@ class WorkflowComponent {
|
|
13770
13902
|
change() {
|
13771
13903
|
this.dirty = true;
|
13772
13904
|
}
|
13773
|
-
addText() {
|
13774
|
-
this.diagram.drawingObject = {
|
13775
|
-
shape: {
|
13776
|
-
type: 'Text',
|
13777
|
-
},
|
13778
|
-
constraints: NodeConstraints.Default & ~NodeConstraints.InConnect & ~NodeConstraints.OutConnect
|
13779
|
-
};
|
13780
|
-
this.diagram.tool = DiagramTools.DrawOnce;
|
13781
|
-
}
|
13782
13905
|
/**
|
13783
13906
|
* Ctrl-s save
|
13784
13907
|
* @param event
|
@@ -13803,9 +13926,21 @@ class WorkflowComponent {
|
|
13803
13926
|
this.connectorType = type;
|
13804
13927
|
this.dirty = true;
|
13805
13928
|
}
|
13806
|
-
|
13807
|
-
|
13929
|
+
fontSizeChange(val) {
|
13930
|
+
function change(node) {
|
13931
|
+
node.annotations?.forEach(a => {
|
13932
|
+
if (!a.style)
|
13933
|
+
a.style = { fontSize: val };
|
13934
|
+
else
|
13935
|
+
a.style.fontSize = val;
|
13936
|
+
});
|
13937
|
+
if (node.shape.type === 'Text')
|
13938
|
+
node.style.fontSize = val;
|
13939
|
+
}
|
13940
|
+
this.diagram.selectedItems.nodes.forEach(change);
|
13941
|
+
this.diagram.selectedItems.connectors.forEach(change);
|
13808
13942
|
this.diagram.dataBind();
|
13943
|
+
this.dirty = true;
|
13809
13944
|
}
|
13810
13945
|
strokeChange(val) {
|
13811
13946
|
this.diagram.selectedItems.connectors.forEach(c => {
|
@@ -13847,15 +13982,17 @@ class WorkflowComponent {
|
|
13847
13982
|
this.diagram?.destroy();
|
13848
13983
|
this._destroy.next();
|
13849
13984
|
this._destroy.complete();
|
13985
|
+
this._nodedestroy.next();
|
13986
|
+
this._nodedestroy.complete();
|
13850
13987
|
}
|
13851
13988
|
}
|
13852
13989
|
WorkflowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: WorkflowComponent, deps: [{ token: PromptService }, { token: FormService }, { token: PaneRef }, { token: PanesRouter }, { token: SessionService }, { token: TranslateService }], target: i0.ɵɵFactoryTarget.Component });
|
13853
|
-
WorkflowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: WorkflowComponent, selector: "bizdoc-workflow", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "symbolPaletteEl", first: true, predicate: ["symbolPaletteEl"], descendants: true, static: true }, { propertyName: "diagramEl", first: true, predicate: ["diagramEl"], descendants: true, static: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"tools = !tools\" [bizdocTooltip]=\"'Collapse' | translate\"><mat-icon>view_sidebar</mat-icon></button>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty || saving\">{{'SaveChanges' | translate}}</button>\r\n <button mat-icon-button (click)=\"diagram.fitToPage()\" [bizdocTooltip]=\"'FitToPage' | translate\"><mat-icon>fullscreen_exit</mat-icon></button>\r\n <button mat-icon-button (click)=\"
|
13990
|
+
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 } });
|
13854
13991
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: WorkflowComponent, decorators: [{
|
13855
13992
|
type: Component,
|
13856
13993
|
args: [{ selector: 'bizdoc-workflow', host: {
|
13857
13994
|
class: 'pane'
|
13858
|
-
}, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"tools = !tools\" [bizdocTooltip]=\"'Collapse' | translate\"><mat-icon>view_sidebar</mat-icon></button>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty || saving\">{{'SaveChanges' | translate}}</button>\r\n <button mat-icon-button (click)=\"diagram.fitToPage()\" [bizdocTooltip]=\"'FitToPage' | translate\"><mat-icon>fullscreen_exit</mat-icon></button>\r\n <button mat-icon-button (click)=\"
|
13995
|
+
}, 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"] }]
|
13859
13996
|
}], ctorParameters: function () { return [{ type: PromptService }, { type: FormService }, { type: PaneRef }, { type: PanesRouter }, { type: SessionService }, { type: TranslateService }]; }, propDecorators: { symbolPaletteEl: [{
|
13860
13997
|
type: ViewChild,
|
13861
13998
|
args: ['symbolPaletteEl', { static: true }]
|
@@ -14066,11 +14203,11 @@ class FlowViewComponent extends TraceBase {
|
|
14066
14203
|
this._duration = _duration;
|
14067
14204
|
this._elementRef = _elementRef;
|
14068
14205
|
this.connectorType = 'Orthogonal';
|
14069
|
-
this.tool = DiagramTools
|
14070
|
-
this.diagramConstraints = DiagramConstraints
|
14071
|
-
DiagramConstraints
|
14072
|
-
DiagramConstraints
|
14073
|
-
DiagramConstraints
|
14206
|
+
this.tool = DiagramTools.ZoomPan;
|
14207
|
+
this.diagramConstraints = DiagramConstraints.Default |
|
14208
|
+
DiagramConstraints.Pan |
|
14209
|
+
DiagramConstraints.LineRouting |
|
14210
|
+
DiagramConstraints.Zoom;
|
14074
14211
|
this.layout = {
|
14075
14212
|
type: 'ComplexHierarchicalTree',
|
14076
14213
|
connectionPointOrigin: ConnectionPointOrigin.DifferentPoint,
|
@@ -14108,7 +14245,7 @@ class FlowViewComponent extends TraceBase {
|
|
14108
14245
|
async _initialize() {
|
14109
14246
|
const { connectors, nodes, indicators } = await this._prepare();
|
14110
14247
|
this.diagram && this.diagram.destroy();
|
14111
|
-
this.diagram = new Diagram
|
14248
|
+
this.diagram = new Diagram({
|
14112
14249
|
width: '100%',
|
14113
14250
|
height: 380,
|
14114
14251
|
nodes,
|
@@ -14250,8 +14387,8 @@ class FlowViewComponent extends TraceBase {
|
|
14250
14387
|
position: 'TopCenter'
|
14251
14388
|
},
|
14252
14389
|
constraints: content ?
|
14253
|
-
NodeConstraints
|
14254
|
-
NodeConstraints
|
14390
|
+
NodeConstraints.Default | NodeConstraints.Tooltip :
|
14391
|
+
NodeConstraints.Default,
|
14255
14392
|
addInfo: {
|
14256
14393
|
tooltip,
|
14257
14394
|
recipient,
|
@@ -14341,8 +14478,8 @@ class FlowViewComponent extends TraceBase {
|
|
14341
14478
|
position: 'TopCenter'
|
14342
14479
|
},
|
14343
14480
|
constraints: content ?
|
14344
|
-
NodeConstraints
|
14345
|
-
NodeConstraints
|
14481
|
+
NodeConstraints.Default | NodeConstraints.Tooltip :
|
14482
|
+
NodeConstraints.Default,
|
14346
14483
|
addInfo: {
|
14347
14484
|
tooltip,
|
14348
14485
|
node
|
@@ -21170,7 +21307,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
|
|
21170
21307
|
providers: [ConnectorBridgingService, LineRoutingService, ComplexHierarchicalTreeService, BpmnDiagramsService, LayoutAnimationService, UndoRedoService, SnappingService, ConnectorEditingService, LineDistributionService]
|
21171
21308
|
}]
|
21172
21309
|
}] });
|
21173
|
-
Diagram
|
21310
|
+
Diagram.Inject(ComplexHierarchicalTree, BpmnDiagrams, DataBinding, LineDistribution /*, LayoutAnimation, LineRouting, ConnectorBridging*/);
|
21174
21311
|
|
21175
21312
|
class SyncfusionGridModule {
|
21176
21313
|
}
|
@@ -24657,7 +24794,7 @@ class ColorPicker {
|
|
24657
24794
|
}
|
24658
24795
|
ColorPicker.nextId = 0;
|
24659
24796
|
ColorPicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ColorPicker, deps: [{ token: i1$5.NgControl, optional: true, self: true }, { token: i1$2.Overlay }, { token: i0.ViewContainerRef }, { token: i0.ElementRef }, { token: i7$2.Directionality }], target: i0.ɵɵFactoryTarget.Component });
|
24660
|
-
ColorPicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: ColorPicker, selector: "
|
24797
|
+
ColorPicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: ColorPicker, selector: "bizdoc-color-picker", inputs: { label: "label", required: "required", disabled: "disabled" }, outputs: { valueChanges: "valueChanges" }, host: { properties: { "class.floating": "this.shouldLabelFloat", "id": "this.id", "attr.aria-describedby": "this.describedBy" } }, providers: [{ provide: MatFormFieldControl, useExisting: ColorPicker }], viewQueries: [{ propertyName: "_trigger", first: true, predicate: MatButton, descendants: true, static: true }, { propertyName: "_colorPalette", first: true, predicate: TemplateRef, descendants: true, static: true }], ngImport: i0, template: `<button mat-button (click)='open()'>
|
24661
24798
|
<span>{{label}}</span>
|
24662
24799
|
<mat-icon>arrow_drop_down</mat-icon>
|
24663
24800
|
</button>
|
@@ -24670,7 +24807,7 @@ ColorPicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "
|
|
24670
24807
|
</ng-template>`, isInline: true, styles: [".color-palette{display:flex;flex-direction:column}.color-palette .color-container{display:flex}button{width:100%}.color-item{width:20px;height:20px}\n"], components: [{ type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
24671
24808
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ColorPicker, decorators: [{
|
24672
24809
|
type: Component,
|
24673
|
-
args: [{ selector: '
|
24810
|
+
args: [{ selector: 'bizdoc-color-picker', providers: [{ provide: MatFormFieldControl, useExisting: ColorPicker }], template: `<button mat-button (click)='open()'>
|
24674
24811
|
<span>{{label}}</span>
|
24675
24812
|
<mat-icon>arrow_drop_down</mat-icon>
|
24676
24813
|
</button>
|
@@ -28883,11 +29020,11 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
28883
29020
|
this.theme = this._session.theme.dark ? 'MaterialDark' : 'Material';
|
28884
29021
|
this.accent = this._session.getAccent();
|
28885
29022
|
this.form = this._fb.group({ search: null, formId: null });
|
28886
|
-
this.diagramConstraints = DiagramConstraints
|
28887
|
-
DiagramConstraints
|
28888
|
-
DiagramConstraints
|
28889
|
-
DiagramConstraints
|
28890
|
-
this.diagramTool = DiagramTools
|
29023
|
+
this.diagramConstraints = DiagramConstraints.Default | DiagramConstraints.Bridging |
|
29024
|
+
DiagramConstraints.LineRouting |
|
29025
|
+
DiagramConstraints.Pan |
|
29026
|
+
DiagramConstraints.Zoom;
|
29027
|
+
this.diagramTool = DiagramTools.SingleSelect;
|
28891
29028
|
this.layout = {
|
28892
29029
|
type: 'ComplexHierarchicalTree',
|
28893
29030
|
connectionPointOrigin: ConnectionPointOrigin.DifferentPoint,
|
@@ -28906,7 +29043,7 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
28906
29043
|
this._accentColor = this._session.getAccent(800);
|
28907
29044
|
this._primeryColor = this._session.getPrimery();
|
28908
29045
|
this.selectedItems = {
|
28909
|
-
constraints: SelectorConstraints
|
29046
|
+
constraints: SelectorConstraints.UserHandle,
|
28910
29047
|
userHandles: [
|
28911
29048
|
{
|
28912
29049
|
name: 'info',
|
@@ -28933,13 +29070,13 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
28933
29070
|
this.nodeDefaults = (node) => {
|
28934
29071
|
const { indicator, virtual } = node.addInfo || {};
|
28935
29072
|
if (indicator) {
|
28936
|
-
node.constraints = NodeConstraints
|
29073
|
+
node.constraints = NodeConstraints.PointerEvents | NodeConstraints.Tooltip,
|
28937
29074
|
node.style.strokeWidth = 0,
|
28938
29075
|
node.width = node.height = 15;
|
28939
29076
|
}
|
28940
29077
|
else if (node.id !== 'version') {
|
28941
|
-
node.constraints = NodeConstraints
|
28942
|
-
NodeConstraints
|
29078
|
+
node.constraints = NodeConstraints.InConnect | NodeConstraints.OutConnect |
|
29079
|
+
NodeConstraints.PointerEvents | NodeConstraints.Select;
|
28943
29080
|
this._decorateNode(node);
|
28944
29081
|
node.ports = getPorts();
|
28945
29082
|
}
|
@@ -28947,7 +29084,7 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
28947
29084
|
};
|
28948
29085
|
this.connDefaults = (connector) => {
|
28949
29086
|
const { virtual } = connector.addInfo || {};
|
28950
|
-
connector.constraints = ConnectorConstraints
|
29087
|
+
connector.constraints = ConnectorConstraints.ReadOnly & ~ConnectorConstraints.Select;
|
28951
29088
|
this._decorateConnector(connector);
|
28952
29089
|
};
|
28953
29090
|
}
|
@@ -29038,7 +29175,7 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
29038
29175
|
this.mode = 'diagram';
|
29039
29176
|
this.loading = null;
|
29040
29177
|
this._cd.detectChanges();
|
29041
|
-
this.diagram = new Diagram
|
29178
|
+
this.diagram = new Diagram({
|
29042
29179
|
width: '100%', height: '100%',
|
29043
29180
|
snapSettings: this.snapSettings,
|
29044
29181
|
layout: this.layout,
|
@@ -29193,7 +29330,7 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
29193
29330
|
fontSize: 50,
|
29194
29331
|
opacity: .1
|
29195
29332
|
},
|
29196
|
-
constraints: NodeConstraints
|
29333
|
+
constraints: NodeConstraints.ReadOnly
|
29197
29334
|
};
|
29198
29335
|
this.diagram.addLayer({
|
29199
29336
|
id: 'version',
|
@@ -29259,12 +29396,12 @@ let DocumentTraceComponent = class DocumentTraceComponent {
|
|
29259
29396
|
this.diagram.dataBind();
|
29260
29397
|
}
|
29261
29398
|
pan() {
|
29262
|
-
this.diagram.constraints = this.diagram.constraints | DiagramConstraints
|
29263
|
-
this.diagram.tool = DiagramTools
|
29399
|
+
this.diagram.constraints = this.diagram.constraints | DiagramConstraints.Pan;
|
29400
|
+
this.diagram.tool = DiagramTools.ZoomPan;
|
29264
29401
|
}
|
29265
29402
|
cursor() {
|
29266
|
-
this.diagram.constraints = this.diagram.constraints & ~DiagramConstraints
|
29267
|
-
this.diagram.tool = DiagramTools
|
29403
|
+
this.diagram.constraints = this.diagram.constraints & ~DiagramConstraints.Pan;
|
29404
|
+
this.diagram.tool = DiagramTools.SingleSelect;
|
29268
29405
|
}
|
29269
29406
|
_highlight(ids) {
|
29270
29407
|
for (let i = 0; i < ids.length; i++) {
|
@@ -29544,6 +29681,7 @@ let PositionsComponent = class PositionsComponent {
|
|
29544
29681
|
this._translate = _translate;
|
29545
29682
|
this._popup = _popup;
|
29546
29683
|
this._dialog = _dialog;
|
29684
|
+
this.tools = true;
|
29547
29685
|
this.dirty = false;
|
29548
29686
|
this.saving = false;
|
29549
29687
|
this.form = new FormGroup({});
|
@@ -29916,14 +30054,14 @@ let PositionsComponent = class PositionsComponent {
|
|
29916
30054
|
}
|
29917
30055
|
};
|
29918
30056
|
PositionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PositionsComponent, deps: [{ token: SessionService }, { token: UtilityRef }, { token: DatasourceService }, { token: PromptService }, { token: AccountService }, { token: WindowTitleService }, { token: TranslateService }, { token: Popup }, { token: i3$1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
29919
|
-
PositionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: PositionsComponent, selector: "ng-component", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" } }, viewQueries: [{ propertyName: "_fileElement", first: true, predicate: ["file"], descendants: true, static: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "noRoleTpl", first: true, predicate: ["noRoleTpl"], descendants: true, static: true }, { propertyName: "roleTpl", first: true, predicate: ["roleTpl"], descendants: true, static: true }, { propertyName: "patternTpl", first: true, predicate: ["patternTpl"], descendants: true, static: true }, { propertyName: "newGroupTpl", first: true, predicate: ["groupTpl"], descendants: true, static: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty\">{{'SaveChanges'|translate}}</button>\r\n <span class=\"divider\"></span>\r\n <bizdoc-search-input (valueChange)=\"search($event)\"></bizdoc-search-input>\r\n <button mat-icon-button [matMenuTriggerFor]=\"newMenu\" [bizdocTooltip]=\"'Add'|translate\"><mat-icon>add</mat-icon></button>\r\n <mat-menu #newMenu>\r\n <button mat-menu-item (click)=\"newRole()\">{{'Role'|translate}}</button>\r\n <button mat-menu-item (click)=\"newPattern()\">{{'Pattern'|translate}}</button>\r\n <button mat-menu-item (click)=\"newGroup()\">{{'Group'|translate}} </button>\r\n </mat-menu>\r\n <button mat-icon-button [bizdocTooltip]=\"'Download' | translate\" (click)=\"download()\" [disabled]=\"dirty\"><mat-icon>save_alt</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<div fxLayout=\"row\" fxFlex>\r\n <mat-nav-list class=\"timeline\">\r\n <mat-list-item *ngFor=\"let t of types\" (click)=\"change(t.name)\" [class.active]=\"t === type\">{{t.title}}</mat-list-item>\r\n </mat-nav-list>\r\n\r\n <table mat-table matSort [dataSource]=\"dataSource\" [style.display]=\"dataSource ? '': 'none'\" fxFlex>\r\n <ng-container *ngFor=\"let column of (type?.columns ||[])\" [matColumnDef]=\"column.name\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{column.label}}</th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element[column.name]}} </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"key\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{''}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <span [ngSwitch]=\"element.type\">\r\n <ng-container *ngSwitchCase=\"'group'\">({{'Group'|translate}})</ng-container>\r\n <ng-container *ngSwitchCase=\"'pattern'\">({{'Pattern'|translate}})</ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{element.key}}\r\n </ng-container>\r\n </span>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"value\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{''}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n {{element.value}}\r\n </td>\r\n </ng-container>\r\n <ng-container *ngFor=\"let role of roles\" [matColumnDef]=\"role.name\">\r\n <th mat-header-cell *matHeaderCellDef>{{role.title}}</th>\r\n <td mat-cell *matCellDef=\"let element\" [attr.data-role]=\"role.name\">\r\n <ng-container *ngIf=\"positions[role.name][element.key]\">\r\n <ng-container *ngFor=\"let u of positions[role.name][element.key]; let first = first\">\r\n <ng-container *ngIf=\"!first\">, </ng-container>\r\n {{profiles[u]?.name}}\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"options\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button [matMenuTriggerFor]=\"options\" *ngIf=\"element.type === 'pattern' || element.type === 'group'\"><mat-icon>more_vert</mat-icon></button>\r\n <mat-menu #options>\r\n <ng-container *ngIf=\"element.type === 'pattern'\">\r\n <button mat-menu-item (click)=\"editPattern(element.key)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"deletePattern(element.key)\">{{'Remove'|translate}} </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"element.type === 'group'\">\r\n <button mat-menu-item (click)=\"editGroup(element.key)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"deleteGroup(element.key)\">{{'Remove'|translate}} </button>\r\n </ng-container>\r\n </mat-menu>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let element; columns: displayedColumns\" (click)=\"edit(element.key, $event)\"></tr>\r\n </table>\r\n</div>\r\n<!-- role template -->\r\n<ng-template #roleTpl>\r\n <h2 mat-dialog-title>{{'Role' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"role\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"role.value\" color=\"primary\" [disabled]=\"!role.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!-- pattern template -->\r\n<ng-template #patternTpl>\r\n <h2 mat-dialog-title>{{'Pattern' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"pattern\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput formControlName=\"expression\" [placeholder]=\"'Regex'| translate\" required autocomplete=\"off\" />\r\n <mat-hint><span [innerHTML]=\"'RegexHint' | translate : 'https://regex101.com/'| sanitizeHtml\"></span></mat-hint>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"pattern.value\" color=\"primary\" [disabled]=\"!pattern.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!-- group -->\r\n<ng-template #groupTpl>\r\n <h2 mat-dialog-title>{{'Group' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"group\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Items'|translate\" multiple formControlName=\"items\" required>\r\n <mat-select-trigger>\r\n {{group.value.items ? group.value.items[0] : ''}}\r\n <span *ngIf=\"group.value.items?.length > 1\" class=\"additional-selection\">\r\n (+{{group.value.items.length - 1}} {{(group.value.items?.length === 2 ? 'Other' : 'Others')|translate}})\r\n </span>\r\n </mat-select-trigger>\r\n <mat-option *ngFor=\"let v of source\" [value]=\"v.key\">\r\n <span *ngIf=\"!type.columns\">{{v.value}}</span>\r\n <span *ngIf=\"type.columns\"><span *ngFor=\"let c of type.columns\">{{v.value[c.name]}}</span></span>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"group.value\" color=\"primary\" [disabled]=\"!group.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<ng-template #noRoleTpl>\r\n <mat-dialog-content>\r\n {{'NoRoles'|translate : type?.title}}\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">{{'CreateRole' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!--<form style=\"display:none\">\r\n <input type=\"file\" name=\"file\" (onchange)=\"upload($event)\" #file/>\r\n</form>-->\r\n", styles: [":host{flex-direction:column}table{width:100%}.form{padding:8px}table :ng-deep .mat-cell{cursor:pointer;border-left-width:1px;border-left-style:outset;padding:0 4px!important}\n"], components: [{ type: i7$3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: SearchInput, selector: "bizdoc-search-input", outputs: ["valueChange"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i9$1.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i9$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i11.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i2$3.MatNavList, selector: "mat-nav-list", inputs: ["disableRipple", "disabled"], exportAs: ["matNavList"] }, { type: i2$3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }, { type: i5$2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i6$1.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { type: i12$1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { type: i5$2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i5$2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i1$4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i9$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i23.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i23.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6$1.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i5$2.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i5$2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i5$2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i5$2.MatCellDef, selector: "[matCellDef]" }, { type: i5$2.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i10.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5$2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i5$2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i3$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i1$5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1$5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1$5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i3$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i3$1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i1$4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i5.MatSelectTrigger, selector: "mat-select-trigger" }], pipes: { "translate": TranslatePipe, "sanitizeHtml": SanitizeHtmlPipe } });
|
30057
|
+
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 } });
|
29920
30058
|
PositionsComponent = __decorate([
|
29921
30059
|
BizDoc({ selector: 'bizdoc-positions' })
|
29922
30060
|
/** positions component*/
|
29923
30061
|
], PositionsComponent);
|
29924
30062
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PositionsComponent, decorators: [{
|
29925
30063
|
type: Component,
|
29926
|
-
args: [{ template: "<mat-toolbar>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty\">{{'SaveChanges'|translate}}</button>\r\n <span class=\"divider\"></span>\r\n <bizdoc-search-input (valueChange)=\"search($event)\"></bizdoc-search-input>\r\n <button mat-icon-button [matMenuTriggerFor]=\"newMenu\" [bizdocTooltip]=\"'Add'|translate\"><mat-icon>add</mat-icon></button>\r\n <mat-menu #newMenu>\r\n <button mat-menu-item (click)=\"newRole()\">{{'Role'|translate}}</button>\r\n <button mat-menu-item (click)=\"newPattern()\">{{'Pattern'|translate}}</button>\r\n <button mat-menu-item (click)=\"newGroup()\">{{'Group'|translate}} </button>\r\n </mat-menu>\r\n <button mat-icon-button [bizdocTooltip]=\"'Download' | translate\" (click)=\"download()\" [disabled]=\"dirty\"><mat-icon>save_alt</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<div fxLayout=\"row\" fxFlex>\r\n <mat-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"] }]
|
30064
|
+
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"] }]
|
29927
30065
|
}], ctorParameters: function () { return [{ type: SessionService }, { type: UtilityRef, decorators: [{
|
29928
30066
|
type: Inject,
|
29929
30067
|
args: [UtilityRef]
|