diff --git a/src/app/form-builder/form-builder.component.spec.ts b/src/app/form-builder/form-builder.component.spec.ts
index 3188c1d..c453676 100644
--- a/src/app/form-builder/form-builder.component.spec.ts
+++ b/src/app/form-builder/form-builder.component.spec.ts
@@ -1,19 +1,19 @@
-import {ComponentFixture, TestBed, waitForAsync} from '@angular/core/testing';
-
-import {FormBuilderComponent} from './form-builder.component';
-import {CommonModule} from '@angular/common';
import {DragDropModule} from '@angular/cdk/drag-drop';
-import {GridsterModule} from 'angular-gridster2';
-import {FormsModule} from '@angular/forms';
+import {CommonModule} from '@angular/common';
import {HttpClientModule} from '@angular/common/http';
-import {MaterialImportModule} from '../material-import/material-import.module';
-import {FlexLayoutModule} from '@angular/flex-layout';
-import {AngularResizedEventModule} from 'angular-resize-event';
-import {ResizableModule} from 'angular-resizable-element';
-import {FormBuilderModule} from './form-builder.module';
import {NO_ERRORS_SCHEMA} from '@angular/core';
+import {ComponentFixture, TestBed, waitForAsync} from '@angular/core/testing';
+import {FlexLayoutModule} from '@angular/flex-layout';
+import {FormsModule} from '@angular/forms';
import {NoopAnimationsModule} from '@angular/platform-browser/animations';
import {RouterTestingModule} from '@angular/router/testing';
+import {GridsterModule} from 'angular-gridster2';
+import {ResizableModule} from 'angular-resizable-element';
+import {AngularResizedEventModule} from 'angular-resize-event';
+import {MaterialImportModule} from '../material-import/material-import.module';
+
+import {FormBuilderComponent} from './form-builder.component';
+import {FormBuilderModule} from './form-builder.module';
describe('FormBuilderComponent', () => {
let component: FormBuilderComponent;
diff --git a/src/app/form-builder/form-builder.component.ts b/src/app/form-builder/form-builder.component.ts
index 16ec358..48fcc80 100644
--- a/src/app/form-builder/form-builder.component.ts
+++ b/src/app/form-builder/form-builder.component.ts
@@ -1,7 +1,10 @@
-import {AfterViewInit, Component, OnDestroy, OnInit} from '@angular/core';
+import {AfterViewInit, Component} from '@angular/core';
import {Router} from '@angular/router';
-import {ModelService} from '../modeler/services/model/model.service';
+import {DataGroup, LayoutType} from '@netgrif/petriflow';
+import {ModelerConfig} from '../modeler/modeler-config';
import {ModelerUtils} from '../modeler/modeler-utils';
+import {SelectedTransitionService} from '../modeler/selected-transition.service';
+import {ModelService} from '../modeler/services/model/model.service';
@Component({
selector: 'nab-form-builder',
@@ -12,10 +15,16 @@ export class FormBuilderComponent implements AfterViewInit {
title = 'form-builder';
width: number;
- constructor(private router: Router, private modelService: ModelService) {
+ constructor(private router: Router, private modelService: ModelService, private transitionService: SelectedTransitionService) {
if (!this.modelService.model) {
this.router.navigate(['/modeler']);
}
+ if (this.modelService.model.getTransition(this.transitionService.id)?.dataGroups?.length === 0) {
+ const dataGroup = new DataGroup(`${this.transitionService.id}_0`);
+ dataGroup.layout = LayoutType.GRID;
+ dataGroup.cols = ModelerConfig.LAYOUT_DEFAULT_COLS;
+ this.modelService.model.getTransition(this.transitionService.id).dataGroups.push(dataGroup);
+ }
}
ngAfterViewInit(): void {
diff --git a/src/app/form-builder/form-builder.module.ts b/src/app/form-builder/form-builder.module.ts
index 0454779..4214e46 100644
--- a/src/app/form-builder/form-builder.module.ts
+++ b/src/app/form-builder/form-builder.module.ts
@@ -1,20 +1,21 @@
-import {NgModule} from '@angular/core';
-import {CommonModule} from '@angular/common';
-import {FormBuilderComponent} from './form-builder.component';
-import {PaperComponent} from './paper/paper.component';
-import {FieldListComponent} from './field-list/field-list.component';
-import {GridsterComponent} from './gridster/gridster.component';
-import {EditPanelComponent} from './edit-panel/edit-panel.component';
import {DragDropModule} from '@angular/cdk/drag-drop';
-import {GridsterModule} from 'angular-gridster2';
-import {FormsModule, ReactiveFormsModule} from '@angular/forms';
+import {CommonModule} from '@angular/common';
import {HttpClientModule} from '@angular/common/http';
-import {MaterialImportModule} from '../material-import/material-import.module';
-import {GridsterDataFieldComponent} from './gridster/gridster-datafield/gridster-data-field.component';
-import {InfoLabelComponent} from './info-label/info-label.component';
+import {NgModule} from '@angular/core';
+import {FormsModule, ReactiveFormsModule} from '@angular/forms';
import {DataFieldsComponentModule} from '@netgrif/components';
import {FlexLayoutModule} from '@ngbracket/ngx-layout';
+import {GridsterModule} from 'angular-gridster2';
import {ResizableModule} from 'angular-resizable-element';
+import {MaterialImportModule} from '../material-import/material-import.module';
+import {ModelerModule} from '../modeler/modeler.module';
+import {EditPanelComponent} from './edit-panel/edit-panel.component';
+import {FieldListComponent} from './field-list/field-list.component';
+import {FormBuilderComponent} from './form-builder.component';
+import {GridsterDataFieldComponent} from './gridster/gridster-datafield/gridster-data-field.component';
+import {GridsterComponent} from './gridster/gridster.component';
+import {InfoLabelComponent} from './info-label/info-label.component';
+import {PaperComponent} from './paper/paper.component';
@NgModule({
declarations: [
@@ -39,7 +40,8 @@ import {ResizableModule} from 'angular-resizable-element';
HttpClientModule,
MaterialImportModule,
ReactiveFormsModule,
- ResizableModule
+ ResizableModule,
+ ModelerModule
]
})
export class FormBuilderModule {
diff --git a/src/app/form-builder/gridster/classes/gridster-data-field.ts b/src/app/form-builder/gridster/classes/gridster-data-field.ts
index 7790723..b51a9f8 100644
--- a/src/app/form-builder/gridster/classes/gridster-data-field.ts
+++ b/src/app/form-builder/gridster/classes/gridster-data-field.ts
@@ -1,5 +1,5 @@
+import {DataLayout, DataRef, DataVariable, I18nWithDynamic} from '@netgrif/petriflow';
import {GridsterItem, GridsterItemComponentInterface} from 'angular-gridster2';
-import {DataLayout, DataRef, DataVariable, Expression, I18nWithDynamic} from '@netgrif/petriflow';
export class GridsterDataField implements GridsterItem {
// properties needed because of GridsterUtils.merge implementation
diff --git a/src/app/form-builder/gridster/gridster-datafield/gridster-data-field.component.html b/src/app/form-builder/gridster/gridster-datafield/gridster-data-field.component.html
index e371860..bfa711b 100644
--- a/src/app/form-builder/gridster/gridster-datafield/gridster-data-field.component.html
+++ b/src/app/form-builder/gridster/gridster-datafield/gridster-data-field.component.html
@@ -1,11 +1,9 @@
- Placeholder for {{dataField.dataVariable.type}} with id '{{dataField.dataVariable?.id}}'
+ Placeholder for {{dataField.dataVariable.type}} with id '{{dataField.dataVariable?.id}}'
-
+
diff --git a/src/app/form-builder/gridster/gridster-datafield/gridster-data-field.component.ts b/src/app/form-builder/gridster/gridster-datafield/gridster-data-field.component.ts
index 5d5d497..3043846 100644
--- a/src/app/form-builder/gridster/gridster-datafield/gridster-data-field.component.ts
+++ b/src/app/form-builder/gridster/gridster-datafield/gridster-data-field.component.ts
@@ -1,11 +1,12 @@
import {Component, Input, OnDestroy, OnInit, QueryList, TemplateRef, ViewChildren} from '@angular/core';
-import {GridsterDataField} from '../classes/gridster-data-field';
+import {DataField, EnumerationField, MultichoiceField} from '@netgrif/components-core';
import {DataRefBehavior, DataType, I18nWithDynamic} from '@netgrif/petriflow';
-import {GridsterService} from '../gridster.service';
-import {GridsterFieldToEngineFieldService} from '../../../modeler/gridster-field-to-engine-field.service';
-import {Subscription} from 'rxjs';
import moment from 'moment';
-import {DataField, EnumerationField, MultichoiceField} from '@netgrif/components-core';
+import {Subscription} from 'rxjs';
+import {GridsterFieldToEngineFieldService} from '../../../modeler/gridster-field-to-engine-field.service';
+import {FieldListService} from '../../field-list/field-list.service';
+import {GridsterDataField} from '../classes/gridster-data-field';
+import {GridsterService} from '../gridster.service';
@Component({
selector: 'nab-gridster-datafield',
@@ -20,7 +21,9 @@ export class GridsterDataFieldComponent implements OnInit, OnDestroy {
engineField: DataField
;
private _gridsterSubscription: Subscription;
- constructor(private _gridsterService: GridsterService, private _transformService: GridsterFieldToEngineFieldService) {
+ constructor(private _gridsterService: GridsterService,
+ private _transformService: GridsterFieldToEngineFieldService,
+ public fieldListService: FieldListService) {
}
ngOnDestroy(): void {
diff --git a/src/app/form-builder/gridster/gridster.component.spec.ts b/src/app/form-builder/gridster/gridster.component.spec.ts
index dd04f02..ef7e19d 100644
--- a/src/app/form-builder/gridster/gridster.component.spec.ts
+++ b/src/app/form-builder/gridster/gridster.component.spec.ts
@@ -1,9 +1,9 @@
import {ComponentFixture, TestBed, waitForAsync} from '@angular/core/testing';
-
-import {GridsterComponent} from './gridster.component';
-import {FormBuilderModule} from '../form-builder.module';
import {RouterTestingModule} from '@angular/router/testing';
import {GridsterModule} from 'angular-gridster2';
+import {FormBuilderModule} from '../form-builder.module';
+
+import {GridsterComponent} from './gridster.component';
describe('GridsterComponent', () => {
let component: GridsterComponent;
diff --git a/src/app/form-builder/gridster/gridster.component.ts b/src/app/form-builder/gridster/gridster.component.ts
index 0492852..e196c8a 100644
--- a/src/app/form-builder/gridster/gridster.component.ts
+++ b/src/app/form-builder/gridster/gridster.component.ts
@@ -1,12 +1,12 @@
import {ChangeDetectionStrategy, Component, OnDestroy, OnInit, ViewEncapsulation} from '@angular/core';
-import {GridsterConfig} from 'angular-gridster2';
-import {GridsterService} from './gridster.service';
-import {FieldListService} from '../field-list/field-list.service';
-import {ModelService} from '../../modeler/services/model/model.service';
import {Router} from '@angular/router';
-import {GridsterDataField} from './classes/gridster-data-field';
+import {GridsterConfig} from 'angular-gridster2';
import {SelectedTransitionService} from '../../modeler/selected-transition.service';
import {HistoryService} from '../../modeler/services/history/history.service';
+import {ModelService} from '../../modeler/services/model/model.service';
+import {FieldListService} from '../field-list/field-list.service';
+import {GridsterDataField} from './classes/gridster-data-field';
+import {GridsterService} from './gridster.service';
@Component({
selector: 'nab-gridster-component',
diff --git a/src/app/form-builder/gridster/gridster.service.spec.ts b/src/app/form-builder/gridster/gridster.service.spec.ts
index a23f38c..fe3af2a 100644
--- a/src/app/form-builder/gridster/gridster.service.spec.ts
+++ b/src/app/form-builder/gridster/gridster.service.spec.ts
@@ -1,10 +1,10 @@
+import {HttpClientModule} from '@angular/common/http';
import {TestBed} from '@angular/core/testing';
+import {MatDialogModule} from '@angular/material/dialog';
+import {MatSnackBarModule} from '@angular/material/snack-bar';
+import {MaterialImportModule} from '../../material-import/material-import.module';
import {GridsterService} from './gridster.service';
-import {HttpClientModule} from '@angular/common/http';
-import {MaterialImportModule} from '../../material-import/material-import.module';
-import {MatSnackBarModule} from '@angular/material/snack-bar';
-import {MatDialogModule} from '@angular/material/dialog';
describe('GridsterService', () => {
let service: GridsterService;
diff --git a/src/app/form-builder/gridster/gridster.service.ts b/src/app/form-builder/gridster/gridster.service.ts
index c45ac97..3f62cc2 100644
--- a/src/app/form-builder/gridster/gridster.service.ts
+++ b/src/app/form-builder/gridster/gridster.service.ts
@@ -1,34 +1,35 @@
import {Injectable} from '@angular/core';
import {
- CompactType,
- DisplayGrid,
- GridsterConfig,
- GridsterItem,
- GridsterItemComponentInterface,
- GridType
-} from 'angular-gridster2';
-import {ModelService} from '../../modeler/services/model/model.service';
-import {GridsterDataField} from './classes/gridster-data-field';
-import {
- Appearance,
- Component,
- DataGroup,
- DataRef,
- DataRefBehavior,
- DataType,
- DataVariable,
- Expression, I18nWithDynamic,
- LayoutType,
- Template,
- Transition,
- TransitionLayout
+ Appearance,
+ Component,
+ DataGroup,
+ DataRef,
+ DataRefBehavior,
+ DataType,
+ DataVariable,
+ Expression,
+ I18nWithDynamic,
+ Property,
+ Template,
+ Transition,
+ TransitionLayout,
} from '@netgrif/petriflow';
+import {
+ CompactType,
+ DisplayGrid,
+ GridsterConfig,
+ GridsterItem,
+ GridsterItemComponentInterface,
+ GridType,
+} from 'angular-gridster2';
import {BehaviorSubject, ReplaySubject, Subject} from 'rxjs';
-import {DataFieldUtils} from '../data-field-utils';
-import {SelectedTransitionService} from '../../modeler/selected-transition.service';
-import {FieldListService} from '../field-list/field-list.service';
-import {ModelerConfig} from '../../modeler/modeler-config';
import {debounceTime} from 'rxjs/operators';
+import {ModelerConfig} from '../../modeler/modeler-config';
+import {SelectedTransitionService} from '../../modeler/selected-transition.service';
+import {ModelService} from '../../modeler/services/model/model.service';
+import {DataFieldUtils} from '../data-field-utils';
+import {FieldListService, PropertyDef} from '../field-list/field-list.service';
+import {GridsterDataField} from './classes/gridster-data-field';
@Injectable({
providedIn: 'root'
@@ -196,7 +197,7 @@ export class GridsterService {
return dataVariable;
}
- public addDataRef(dataVariable: DataVariable, componentRows: number, componentCols: number, componentName: string, item: GridsterItem) {
+ public addDataRef(dataVariable: DataVariable, componentRows: number, componentCols: number, componentName: string, item: GridsterItem): DataRef {
const dataRef = new DataRef(dataVariable.id);
dataRef.layout.x = item.x;
dataRef.layout.y = item.y;
@@ -221,12 +222,6 @@ export class GridsterService {
dataRef.component = new Component(componentName);
}
const transition = this.modelService.model.getTransition(this.transitionId);
- if (transition.dataGroups.length === 0) {
- const dataGroup = new DataGroup(`${transition.id}_0`);
- dataGroup.layout = LayoutType.GRID;
- dataGroup.cols = this.options.minCols;
- transition.dataGroups.push(dataGroup);
- }
transition.dataGroups[0].addDataRef(dataRef);
if (dataVariable.type === DataType.TASK_REF && dataVariable.init?.value === this.transitionId) {
dataVariable.init.value = undefined;
@@ -241,12 +236,20 @@ export class GridsterService {
}
private addNewDataRef(data: DataVariable, event: DragEvent, item: GridsterItem): DataRef {
- return this.addDataRef(
+ const newDataRef = this.addDataRef(
data,
+event.dataTransfer.getData('rows'),
+event.dataTransfer.getData('cols'),
event.dataTransfer.getData('ref_component'),
item);
+ const properties: Array = JSON.parse(event.dataTransfer.getData('properties'));
+ if (!!properties) {
+ for (const property of properties) {
+ newDataRef.component.properties.push(new Property(property.name, property.defaultValue));
+ }
+ }
+ this.options.api?.optionsChanged();
+ return newDataRef;
}
private createId(type: string) {
diff --git a/src/app/form-builder/info-label/info-label.component.spec.ts b/src/app/form-builder/info-label/info-label.component.spec.ts
index 1e2d8fc..eaa5056 100644
--- a/src/app/form-builder/info-label/info-label.component.spec.ts
+++ b/src/app/form-builder/info-label/info-label.component.spec.ts
@@ -1,8 +1,8 @@
import {ComponentFixture, TestBed, waitForAsync} from '@angular/core/testing';
+import {RouterTestingModule} from '@angular/router/testing';
+import {MaterialImportModule} from '../../material-import/material-import.module';
import {InfoLabelComponent} from './info-label.component';
-import {MaterialImportModule} from '../../material-import/material-import.module';
-import {RouterTestingModule} from '@angular/router/testing';
describe('InfoLabelComponent', () => {
let component: InfoLabelComponent;
diff --git a/src/app/form-builder/info-label/info-label.component.ts b/src/app/form-builder/info-label/info-label.component.ts
index b008ddf..7d7f6bb 100644
--- a/src/app/form-builder/info-label/info-label.component.ts
+++ b/src/app/form-builder/info-label/info-label.component.ts
@@ -1,8 +1,8 @@
import {Component} from '@angular/core';
-import {PetriNet, Transition} from '@netgrif/petriflow';
-import {ModelService} from '../../modeler/services/model/model.service';
import {Router} from '@angular/router';
+import {PetriNet, Transition} from '@netgrif/petriflow';
import {SelectedTransitionService} from '../../modeler/selected-transition.service';
+import {ModelService} from '../../modeler/services/model/model.service';
@Component({
selector: 'nab-info-label',
diff --git a/src/app/form-builder/paper/paper.component.spec.ts b/src/app/form-builder/paper/paper.component.spec.ts
index 267343e..5431299 100644
--- a/src/app/form-builder/paper/paper.component.spec.ts
+++ b/src/app/form-builder/paper/paper.component.spec.ts
@@ -1,10 +1,10 @@
-import {ComponentFixture, TestBed, waitForAsync} from '@angular/core/testing';
-
-import {PaperComponent} from './paper.component';
-import {FormBuilderModule} from '../form-builder.module';
import {CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA} from '@angular/core';
+import {ComponentFixture, TestBed, waitForAsync} from '@angular/core/testing';
import {RouterTestingModule} from '@angular/router/testing';
import {MaterialImportModule} from '../../material-import/material-import.module';
+import {FormBuilderModule} from '../form-builder.module';
+
+import {PaperComponent} from './paper.component';
describe('PaperComponent', () => {
let component: PaperComponent;
diff --git a/src/app/material-import/material-import.module.ts b/src/app/material-import/material-import.module.ts
index 7057e49..4eb978b 100644
--- a/src/app/material-import/material-import.module.ts
+++ b/src/app/material-import/material-import.module.ts
@@ -1,37 +1,37 @@
-import {NgModule} from '@angular/core';
import {NgxMatDatetimePickerModule} from '@angular-material-components/datetime-picker';
import {NgxMatMomentModule} from '@angular-material-components/moment-adapter';
import {DragDropModule} from '@angular/cdk/drag-drop';
-import {MatGridListModule} from '@angular/material/grid-list';
-import {MatSidenavModule} from '@angular/material/sidenav';
-import {MatListModule} from '@angular/material/list';
+import {NgModule} from '@angular/core';
+import {FormsModule, ReactiveFormsModule} from '@angular/forms';
+import {MatAutocompleteModule} from '@angular/material/autocomplete';
import {MatButtonModule} from '@angular/material/button';
-import {MatIconModule} from '@angular/material/icon';
-import {MatInputModule} from '@angular/material/input';
-import {MatNativeDateModule, MatOptionModule} from '@angular/material/core';
-import {MatSelectModule} from '@angular/material/select';
-import {MatSlideToggleModule} from '@angular/material/slide-toggle';
-import {MatFormFieldModule} from '@angular/material/form-field';
-import {MatToolbarModule} from '@angular/material/toolbar';
-import {MatExpansionModule} from '@angular/material/expansion';
-import {MatTooltipModule} from '@angular/material/tooltip';
import {MatCardModule} from '@angular/material/card';
-import {MatDividerModule} from '@angular/material/divider';
-import {MatDialogModule} from '@angular/material/dialog';
+import {MatCheckboxModule} from '@angular/material/checkbox';
import {MatChipsModule} from '@angular/material/chips';
-import {MatAutocompleteModule} from '@angular/material/autocomplete';
+import {MatNativeDateModule, MatOptionModule} from '@angular/material/core';
+import {MatDatepickerModule} from '@angular/material/datepicker';
+import {MatDialogModule} from '@angular/material/dialog';
+import {MatDividerModule} from '@angular/material/divider';
+import {MatExpansionModule} from '@angular/material/expansion';
+import {MatFormFieldModule} from '@angular/material/form-field';
+import {MatGridListModule} from '@angular/material/grid-list';
+import {MatIconModule} from '@angular/material/icon';
+import {MatInputModule} from '@angular/material/input';
+import {MatListModule} from '@angular/material/list';
import {MatMenuModule} from '@angular/material/menu';
+import {MatPaginatorModule} from '@angular/material/paginator';
+import {MatProgressBarModule} from '@angular/material/progress-bar';
import {MatRadioModule} from '@angular/material/radio';
+import {MatSelectModule} from '@angular/material/select';
+import {MatSidenavModule} from '@angular/material/sidenav';
+import {MatSlideToggleModule} from '@angular/material/slide-toggle';
import {MatSnackBarModule} from '@angular/material/snack-bar';
+import {MatSortModule} from '@angular/material/sort';
import {MatTableModule} from '@angular/material/table';
-import {MatPaginatorModule} from '@angular/material/paginator';
-import {MatDatepickerModule} from '@angular/material/datepicker';
-import {MatProgressBarModule} from '@angular/material/progress-bar';
-import {MatCheckboxModule} from '@angular/material/checkbox';
-import {MatTreeModule} from '@angular/material/tree';
import {MatTabsModule} from '@angular/material/tabs';
-import {MatSortModule} from '@angular/material/sort';
-import {FormsModule, ReactiveFormsModule} from '@angular/forms';
+import {MatToolbarModule} from '@angular/material/toolbar';
+import {MatTooltipModule} from '@angular/material/tooltip';
+import {MatTreeModule} from '@angular/material/tree';
import {FlexModule} from '@ngbracket/ngx-layout';
@NgModule({
diff --git a/src/app/modeler/actions-mode/action-detail/action-detail.component.ts b/src/app/modeler/actions-mode/action-detail/action-detail.component.ts
index 98ecf2b..193d949 100644
--- a/src/app/modeler/actions-mode/action-detail/action-detail.component.ts
+++ b/src/app/modeler/actions-mode/action-detail/action-detail.component.ts
@@ -1,19 +1,19 @@
-import {Component, OnDestroy, OnInit} from '@angular/core';
-import {ModelService} from '../../services/model/model.service';
-import {ActionsModeService} from '../actions-mode.service';
import {NestedTreeControl} from '@angular/cdk/tree';
-import {LeafNode, TreeNode} from '../action-editor/classes/leaf-node';
+import {Component, OnDestroy, OnInit} from '@angular/core';
import {MatTreeNestedDataSource} from '@angular/material/tree';
-import {ActionType, ChangeType} from '../action-editor/classes/editable-action';
+import {DataVariable, FunctionScope, PetriflowFunction, Role, Transition} from '@netgrif/petriflow';
+import {HistoryService} from '../../services/history/history.service';
+import {ModelService} from '../../services/model/model.service';
import {ActionChangedEvent} from '../action-editor/action-editor-list/action-editor-list.component';
+import {ActionEditorTreeService} from '../action-editor/action-editor-tree.service';
import {ActionEditorService} from '../action-editor/action-editor.service';
-import {DataVariable, FunctionScope, PetriflowFunction, Role, Transition} from '@netgrif/petriflow';
import {actions} from '../action-editor/classes/command-action';
+import {ActionType, ChangeType} from '../action-editor/classes/editable-action';
+import {LeafNode, TreeNode} from '../action-editor/classes/leaf-node';
+import {MasterItem} from '../action-editor/classes/master-item';
import {ActionsMasterDetailService} from '../actions-master-detail.setvice';
import {Scope} from '../actions-mode.component';
-import {MasterItem} from '../action-editor/classes/master-item';
-import {ActionEditorTreeService} from '../action-editor/action-editor-tree.service';
-import {HistoryService} from '../../services/history/history.service';
+import {ActionsModeService} from '../actions-mode.service';
@Component({
selector: 'nab-action-detail',
diff --git a/src/app/modeler/actions-mode/action-editor/action-editor-list/action-editor-list.component.spec.ts b/src/app/modeler/actions-mode/action-editor/action-editor-list/action-editor-list.component.spec.ts
index bf73e3a..5808e90 100644
--- a/src/app/modeler/actions-mode/action-editor/action-editor-list/action-editor-list.component.spec.ts
+++ b/src/app/modeler/actions-mode/action-editor/action-editor-list/action-editor-list.component.spec.ts
@@ -1,20 +1,20 @@
-import {ComponentFixture, TestBed, waitForAsync} from '@angular/core/testing';
-import {ActionEditorListComponent} from './action-editor-list.component';
import {CommonModule} from '@angular/common';
-import {MaterialImportModule} from '../../../../material-import/material-import.module';
-import {CdkImportModule} from '../../../../cdk-import/cdk-import.module';
+import {Component} from '@angular/core';
+import {ComponentFixture, TestBed, waitForAsync} from '@angular/core/testing';
import {FormsModule} from '@angular/forms';
-import {RouterModule} from '@angular/router';
-import {HotkeyModule} from 'angular2-hotkeys';
-import {ResizableModule} from 'angular-resizable-element';
import {MatCheckboxModule} from '@angular/material/checkbox';
-import {MatTabsModule} from '@angular/material/tabs';
import {MatSortModule} from '@angular/material/sort';
+import {MatTabsModule} from '@angular/material/tabs';
+import {RouterModule} from '@angular/router';
+import {ResizableModule} from 'angular-resizable-element';
+import {HotkeyModule} from 'angular2-hotkeys';
+import {CdkImportModule} from '../../../../cdk-import/cdk-import.module';
+import {MaterialImportModule} from '../../../../material-import/material-import.module';
import {ModelerModule} from '../../../modeler.module';
-import {Component} from '@angular/core';
-import {LeafNode} from '../classes/leaf-node';
import {ActionEditorService} from '../action-editor.service';
import {ActionType} from '../classes/editable-action';
+import {LeafNode} from '../classes/leaf-node';
+import {ActionEditorListComponent} from './action-editor-list.component';
describe('ActionEditorListComponent', () => {
let component: ActionEditorListComponent;
diff --git a/src/app/modeler/actions-mode/action-editor/action-editor-menu/action-editor-menu-description/action-editor-menu-description.component.ts b/src/app/modeler/actions-mode/action-editor/action-editor-menu/action-editor-menu-description/action-editor-menu-description.component.ts
index 3f96259..499eff8 100644
--- a/src/app/modeler/actions-mode/action-editor/action-editor-menu/action-editor-menu-description/action-editor-menu-description.component.ts
+++ b/src/app/modeler/actions-mode/action-editor/action-editor-menu/action-editor-menu-description/action-editor-menu-description.component.ts
@@ -1,4 +1,4 @@
-import {Component, ElementRef, OnInit, ViewChild} from '@angular/core';
+import {Component, ElementRef, ViewChild} from '@angular/core';
import {CommandAction} from '../../classes/command-action';
@Component({
diff --git a/src/app/modeler/actions-mode/action-editor/action-editor-menu/action-editor-menu-item/action-editor-menu-item.component.ts b/src/app/modeler/actions-mode/action-editor/action-editor-menu/action-editor-menu-item/action-editor-menu-item.component.ts
index 67eba75..fe8ee87 100644
--- a/src/app/modeler/actions-mode/action-editor/action-editor-menu/action-editor-menu-item/action-editor-menu-item.component.ts
+++ b/src/app/modeler/actions-mode/action-editor/action-editor-menu/action-editor-menu-item/action-editor-menu-item.component.ts
@@ -1,8 +1,8 @@
import {AfterViewChecked, Component, Input, ViewChild} from '@angular/core';
-import {MenuItemConfiguration} from './menu-item-configuration';
import {MatMenu, MatMenuTrigger} from '@angular/material/menu';
import {ActionItemProviderService} from '../../action-item-provider.service';
import {MenuItem} from './menu-item';
+import {MenuItemConfiguration} from './menu-item-configuration';
@Component({
selector: 'nab-action-editor-menu-item',
diff --git a/src/app/modeler/actions-mode/action-editor/action-editor-menu/action-editor-menu-item/menu-item-configuration.ts b/src/app/modeler/actions-mode/action-editor/action-editor-menu/action-editor-menu-item/menu-item-configuration.ts
index d39d894..97bc79b 100644
--- a/src/app/modeler/actions-mode/action-editor/action-editor-menu/action-editor-menu-item/menu-item-configuration.ts
+++ b/src/app/modeler/actions-mode/action-editor/action-editor-menu/action-editor-menu-item/menu-item-configuration.ts
@@ -1,6 +1,6 @@
-import {MenuItem} from './menu-item';
import {ActionEditorComponent} from '../../action-editor/action-editor.component';
import {FunctionEditorComponent} from '../../function-editor/function-editor.component';
+import {MenuItem} from './menu-item';
export class MenuItemConfiguration {
private _title: string;
diff --git a/src/app/modeler/actions-mode/action-editor/action-editor-menu/action-editor-menu.component.ts b/src/app/modeler/actions-mode/action-editor/action-editor-menu/action-editor-menu.component.ts
index 7314708..ffe7fac 100644
--- a/src/app/modeler/actions-mode/action-editor/action-editor-menu/action-editor-menu.component.ts
+++ b/src/app/modeler/actions-mode/action-editor/action-editor-menu/action-editor-menu.component.ts
@@ -1,10 +1,10 @@
import {Component, ElementRef, Input, OnInit, ViewChild} from '@angular/core';
-import {actions, CommandAction, CommandActions} from '../classes/command-action';
+import {ModelService} from '../../../services/model/model.service';
import {ActionItemProviderService} from '../action-item-provider.service';
+import {actions, CommandAction, CommandActions} from '../classes/command-action';
import {
- ActionEditorMenuDescriptionComponent
+ ActionEditorMenuDescriptionComponent,
} from './action-editor-menu-description/action-editor-menu-description.component';
-import {ModelService} from '../../../services/model/model.service';
@Component({
selector: 'nab-action-editor-menu',
@@ -37,7 +37,7 @@ export class ActionEditorMenuComponent implements OnInit {
}
addTextToEditor(text: string): void {
- this.actionItemProviderService.insertText(this.editor, `${text}\n`, 'command');
+ this.actionItemProviderService.insertText(this.editor, !!text ? `${text}\n` : text, 'command');
}
handleClick(item: CommandAction): void {
diff --git a/src/app/modeler/actions-mode/action-editor/action-editor.module.ts b/src/app/modeler/actions-mode/action-editor/action-editor.module.ts
index c2ddd16..3711922 100644
--- a/src/app/modeler/actions-mode/action-editor/action-editor.module.ts
+++ b/src/app/modeler/actions-mode/action-editor/action-editor.module.ts
@@ -1,24 +1,24 @@
-import {NgModule} from '@angular/core';
import {CommonModule} from '@angular/common';
-import {ActionEditorListComponent} from './action-editor-list/action-editor-list.component';
-import {BrowserModule} from '@angular/platform-browser';
+import {NgModule} from '@angular/core';
import {FormsModule} from '@angular/forms';
-import {tokenProvider} from './definitions/tokens';
-import {actionCompletionProvider} from './definitions/completion-provider';
-import {ActionEditorMenuComponent} from './action-editor-menu/action-editor-menu.component';
+import {BrowserModule} from '@angular/platform-browser';
+import {FlexModule} from '@ngbracket/ngx-layout';
+import {ResizableModule} from 'angular-resizable-element';
+import {MonacoEditorModule, NgxMonacoEditorConfig} from 'ngx-monaco-editor-v2';
+import {MaterialImportModule} from '../../../material-import/material-import.module';
+import {ActionEditorListComponent} from './action-editor-list/action-editor-list.component';
import {
- ActionEditorMenuDescriptionComponent
+ ActionEditorMenuDescriptionComponent,
} from './action-editor-menu/action-editor-menu-description/action-editor-menu-description.component';
-import {MaterialImportModule} from '../../../material-import/material-import.module';
-import {ActionEditorComponent} from './action-editor/action-editor.component';
import {
- ActionEditorMenuItemComponent
+ ActionEditorMenuItemComponent,
} from './action-editor-menu/action-editor-menu-item/action-editor-menu-item.component';
import {SafeHtmlPipe} from './action-editor-menu/action-editor-menu-item/safe-html.pipe';
+import {ActionEditorMenuComponent} from './action-editor-menu/action-editor-menu.component';
+import {ActionEditorComponent} from './action-editor/action-editor.component';
+import {actionCompletionProvider} from './definitions/completion-provider';
+import {tokenProvider} from './definitions/tokens';
import {FunctionEditorComponent} from './function-editor/function-editor.component';
-import {MonacoEditorModule, NgxMonacoEditorConfig} from 'ngx-monaco-editor-v2';
-import {FlexModule} from '@ngbracket/ngx-layout';
-import {ResizableModule} from 'angular-resizable-element';
declare var monaco: any;
diff --git a/src/app/modeler/actions-mode/action-editor/action-editor.service.ts b/src/app/modeler/actions-mode/action-editor/action-editor.service.ts
index 0ad975f..129dfc3 100644
--- a/src/app/modeler/actions-mode/action-editor/action-editor.service.ts
+++ b/src/app/modeler/actions-mode/action-editor/action-editor.service.ts
@@ -1,26 +1,27 @@
import {Injectable} from '@angular/core';
-import {ActionType, ChangeType, EditableAction} from './classes/editable-action';
-import {ActionGroup} from './classes/action-group';
import {
- Action,
- CaseEvent,
- CaseEventType,
- DataEvent,
- DataEventType,
- DataRef,
- DataVariable,
- Event,
- EventPhase,
- PetriNet,
- ProcessEvent,
- ProcessEventType,
- Role,
- RoleEvent,
- RoleEventType,
- Transition,
- TransitionEvent,
- TransitionEventType
+ Action,
+ CaseEvent,
+ CaseEventType,
+ DataEvent,
+ DataEventType,
+ DataRef,
+ DataVariable,
+ Event,
+ EventPhase,
+ PetriNet,
+ ProcessEvent,
+ ProcessEventType,
+ Role,
+ RoleEvent,
+ RoleEventType,
+ Transition,
+ TransitionEvent,
+ TransitionEventType,
} from '@netgrif/petriflow';
+import {ModelService} from '../../services/model/model.service';
+import {ActionGroup} from './classes/action-group';
+import {ActionType, ChangeType, EditableAction} from './classes/editable-action';
import {MasterItem} from './classes/master-item';
import {EventType} from './event-type';
@@ -32,18 +33,17 @@ export class ActionEditorService {
public editedActions: Array;
public historySave: boolean;
private _datarefMap: Map;
- private _lastUsedId: number;
private _currentlyEdited: Transition | DataVariable | PetriNet | Role;
- constructor() {
+ constructor(
+ private _modelService: ModelService,
+ ) {
this.editedActions = [];
- this._lastUsedId = 0;
this._datarefMap = new Map();
}
public nextId(): string {
- this._lastUsedId++;
- return String(this._lastUsedId);
+ return this._modelService.nextActionId();
}
public populateEditedActionsFromTransition(transition: Transition): void {
@@ -116,50 +116,10 @@ export class ActionEditorService {
private loadAction(action: Action, actionType: ActionType, eventType: EventType, phase: EventPhase, parentDataRefId?: string): EditableAction {
if (action.id === undefined || action.id === null) {
action.id = this.nextId();
- } else {
- this.updateLastId(action.id);
}
return new EditableAction(action.id, actionType, false, action.definition, eventType, phase, parentDataRefId);
}
- private updateLastId(id: string): void {
- const parsedId = parseInt(id, 10);
- this._lastUsedId = Math.max(this._lastUsedId, isNaN(parsedId) ? 0 : parsedId);
- }
-
- public updateIds(model: PetriNet): void {
- model.getProcessEvents().forEach(e => {
- e.preActions.forEach(a => this.updateLastId(a.id));
- e.postActions.forEach(a => this.updateLastId(a.id));
- });
- model.getCaseEvents().forEach(e => {
- e.preActions.forEach(a => this.updateLastId(a.id));
- e.postActions.forEach(a => this.updateLastId(a.id));
- });
- model.getRoles().forEach(r => {
- r.getEvents().forEach(e => {
- e.preActions.forEach(a => this.updateLastId(a.id));
- e.postActions.forEach(a => this.updateLastId(a.id));
- });
- });
- model.getTransitions().forEach(t => {
- t.eventSource.getEvents().forEach(e => {
- e.preActions.forEach(a => this.updateLastId(a.id));
- e.postActions.forEach(a => this.updateLastId(a.id));
- });
- t.dataGroups.forEach(g => g.getDataRefs().forEach(d => d.getEvents().forEach(e => {
- e.preActions.forEach(a => this.updateLastId(a.id));
- e.postActions.forEach(a => this.updateLastId(a.id));
- })));
- });
- model.getDataSet().forEach(d => {
- d.getEvents().forEach(e => {
- e.preActions.forEach(a => this.updateLastId(a.id));
- e.postActions.forEach(a => this.updateLastId(a.id));
- });
- });
- }
-
public saveActionChange(changedAction: EditableAction) {
this.saveAction(changedAction);
changedAction.commitChanges();
diff --git a/src/app/modeler/actions-mode/action-editor/action-editor/action-editor.component.spec.ts b/src/app/modeler/actions-mode/action-editor/action-editor/action-editor.component.spec.ts
index 4053573..9c7c5fc 100644
--- a/src/app/modeler/actions-mode/action-editor/action-editor/action-editor.component.spec.ts
+++ b/src/app/modeler/actions-mode/action-editor/action-editor/action-editor.component.spec.ts
@@ -1,19 +1,19 @@
-import {waitForAsync, ComponentFixture, TestBed} from '@angular/core/testing';
-import {ActionEditorComponent} from './action-editor.component';
import {CommonModule} from '@angular/common';
-import {MaterialImportModule} from '../../../../material-import/material-import.module';
-import {CdkImportModule} from '../../../../cdk-import/cdk-import.module';
+import {Component} from '@angular/core';
+import {ComponentFixture, TestBed, waitForAsync} from '@angular/core/testing';
// import {FlexLayoutModule} from '@angular/flex-layout';
import {FormsModule} from '@angular/forms';
-import {RouterModule} from '@angular/router';
-import {HotkeyModule} from 'angular2-hotkeys';
-import {ResizableModule} from 'angular-resizable-element';
import {MatCheckboxModule} from '@angular/material/checkbox';
-import {MatTabsModule} from '@angular/material/tabs';
import {MatSortModule} from '@angular/material/sort';
-import {Component} from '@angular/core';
-import {ActionType, EditableAction} from '../classes/editable-action';
+import {MatTabsModule} from '@angular/material/tabs';
+import {RouterModule} from '@angular/router';
+import {ResizableModule} from 'angular-resizable-element';
+import {HotkeyModule} from 'angular2-hotkeys';
import {MonacoEditorModule} from 'ngx-monaco-editor-v2';
+import {CdkImportModule} from '../../../../cdk-import/cdk-import.module';
+import {MaterialImportModule} from '../../../../material-import/material-import.module';
+import {ActionType, EditableAction} from '../classes/editable-action';
+import {ActionEditorComponent} from './action-editor.component';
describe('ActionEditorComponent', () => {
let component: ActionEditorComponent;
diff --git a/src/app/modeler/actions-mode/action-editor/action-editor/action-editor.component.ts b/src/app/modeler/actions-mode/action-editor/action-editor/action-editor.component.ts
index ede4630..a0a25a7 100644
--- a/src/app/modeler/actions-mode/action-editor/action-editor/action-editor.component.ts
+++ b/src/app/modeler/actions-mode/action-editor/action-editor/action-editor.component.ts
@@ -1,17 +1,17 @@
import {Component, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';
-import {ChangeType, EditableAction} from '../classes/editable-action';
-import {ActionEditorService} from '../action-editor.service';
import {FormControl} from '@angular/forms';
+import {MatButton} from '@angular/material/button';
import {MatDialog} from '@angular/material/dialog';
-import {ActionChangedEvent} from '../action-editor-list/action-editor-list.component';
-import {LeafNode} from '../classes/leaf-node';
+import {MatMenuTrigger} from '@angular/material/menu';
import {MatSidenav} from '@angular/material/sidenav';
-import {MatButton} from '@angular/material/button';
import {DialogDeleteComponent} from '../../../../dialogs/dialog-delete/dialog-delete.component';
-import {MenuItemConfiguration} from '../action-editor-menu/action-editor-menu-item/menu-item-configuration';
-import {MenuItem} from '../action-editor-menu/action-editor-menu-item/menu-item';
-import {MatMenuTrigger} from '@angular/material/menu';
import {ModelService} from '../../../services/model/model.service';
+import {ActionChangedEvent} from '../action-editor-list/action-editor-list.component';
+import {MenuItem} from '../action-editor-menu/action-editor-menu-item/menu-item';
+import {MenuItemConfiguration} from '../action-editor-menu/action-editor-menu-item/menu-item-configuration';
+import {ActionEditorService} from '../action-editor.service';
+import {ChangeType, EditableAction} from '../classes/editable-action';
+import {LeafNode} from '../classes/leaf-node';
@Component({
selector: 'nab-action-editor',
diff --git a/src/app/modeler/actions-mode/action-editor/definitions/tokens.ts b/src/app/modeler/actions-mode/action-editor/definitions/tokens.ts
index eaba640..33ec293 100644
--- a/src/app/modeler/actions-mode/action-editor/definitions/tokens.ts
+++ b/src/app/modeler/actions-mode/action-editor/definitions/tokens.ts
@@ -1,142 +1,272 @@
-export function tokenProvider() {
- return {
- defaultToken: '',
- tokenPostfix: '.java',
-
- keywords: [
- 'abstract', 'as', 'continue', 'for', 'new', 'switch', 'assert', 'default',
- 'goto', 'package', 'synchronized', 'do', 'if', 'private', 'def', 'in',
- 'this', 'break', 'implements', 'protected', 'throw', 'null',
- 'else', 'import', 'public', 'throws', 'case', 'enum', 'instanceof', 'return',
- 'transient', 'catch', 'extends', 'try', 'final', 'threadsafe',
- 'interface', 'static', 'void', 'class', 'finally', 'strictfp',
- 'volatile', 'const', 'native', 'super', 'while', 'true', 'false',
- 'DEFAULTLANG', 'MILLISECONDS', 'SECONDS', 'MINUTES', 'HOURS', 'DAYS',
- 'WEEKS', 'MONTHS', 'YEARS', 'DATEFORMAT_DEFAULT',
- ],
- typeKeywords: [
- 'boolean', 'double', 'byte', 'int', 'short', 'char', 'void', 'long', 'float', 'String', 'f.', 't.',
- ],
- actionsKeywords: [
- 'log', 'UNCHANGED_VALUE', 'ALWAYS_GENERATE', 'ONCE_GENERATE', 'fieldFactory', 'taskService',
- 'dataService', 'workflowService', 'userService', 'petriNetService', 'async', 'groupService',
- 'memberService', 'pdfGenerator', 'mailService', 'nextGroupService', 'registrationService',
- 'mailAttemptService', 'useCase', 'task', 'map', 'action', 'actionsRunner', 'changedFieldsTree',
- ],
- functions: [
- 'init', 'copyBehavior', 'make', 'saveChangedValue', 'saveChangedChoices', 'saveChangedAllowedNets',
- 'saveChangedOptions', 'putIntoChangedFields', 'addAttributeToChangedField', 'execute', 'executeTasks',
- 'executeTask', 'searchCases', 'change', 'changeFieldValue', 'generate', 'changeCaseProperty', 'cache',
- 'cacheFree', 'pcs', 'orsr', 'findCases', 'findCase', 'createCase', 'assignTask', 'assignTasks',
- 'cancelTask', 'cancelTasks', 'finishTask', 'finishTasks', 'findTasks', 'findTask', 'getTaskId',
- 'assignRole', 'setData', 'setDataWithPropagation', 'makeDataSetIntoChangedFields', 'getData',
- 'mapData', 'findOrganisation', 'createOrganisation', 'deleteOrganisation', 'saveOrganisation',
- 'removeMember', 'addMember', 'findMember', 'loggedUser', 'generatePDF', 'generatePdfWithTemplate',
- 'generatePdfWithLocale', 'sendMail', 'changeUser', 'inviteUser', 'deleteUser',
- ],
-
- operators: [
- '=', '>', '<', '!', '~', '?', ':',
- '==', '<=', '>=', '!=', '&&', '||', '++', '--',
- '+', '-', '*', '/', '&', '|', '^', '%', '<<',
- '>>', '>>>', '+=', '-=', '*=', '/=', '&=', '|=',
- '^=', '%=', '<<=', '>>=', '>>>=',
- ],
-
- // we include these common regular expressions
- symbols: /[=>/, 'errorSyntax'],
- // whitespace
- {include: '@whitespace'},
-
- // delimiters and operators
- [/[{}()\[\]]/, '@brackets'],
- [/[<>](?!@symbols)/, '@brackets'],
- [/@symbols/, {
- cases: {
- '@operators': 'delimiter',
- '@default': '',
- },
- }],
-
- // @ annotations.
- [/@\s*[a-zA-Z_\$][\w\$]*/, 'annotation'],
-
- // numbers
- [/(@digits)[eE]([\-+]?(@digits))?[fFdD]?/, 'number.float'],
- [/(@digits)\.(@digits)([eE][\-+]?(@digits))?[fFdD]?/, 'number.float'],
- [/0[xX](@hexdigits)[Ll]?/, 'number.hex'],
- [/0(@octaldigits)[Ll]?/, 'number.octal'],
- [/0[bB](@binarydigits)[Ll]?/, 'number.binary'],
- [/(@digits)[fFdD]/, 'number.float'],
- [/(@digits)[lL]?/, 'number'],
-
- // delimiter: after number because of .\d floats
- [/[;,.]/, 'delimiter'],
+const bracketTokens = [
+ {
+ open: "[",
+ close: "]",
+ token: "delimiter.square",
+ },
+ {
+ open: "(",
+ close: ")",
+ token: "delimiter.parenthesis",
+ },
+ {
+ open: "{",
+ close: "}",
+ token: "delimiter.curly",
+ },
+];
- // strings
- [/"([^"\\]|\\.)*$/, 'string.invalid'], // non-teminated string
- [/"/, 'string', '@string'],
+function getTokens(tokens: string, divider = "|"): string[] {
+ return tokens.split(divider);
+}
- // characters
- [/'[^\\']'/, 'string'],
- [/(')(@escapes)(')/, ['string', 'string.escape', 'string']],
- [/'/, 'string.invalid'],
- ],
+export function tokenProvider() {
+ return {
+ brackets: bracketTokens,
+ tokenPostfix: ".groovy",
+ keywords: getTokens(
+ "assert|with|abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|def|float|native|super|while|in|as"
+ ),
+ typeKeywords: getTokens(
+ "def|Long|Integer|Short|Byte|Double|Number|Float|Character|Boolean|StackTraceElement|Appendable|StringBuffer|Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|StackOverflowError|OutOfMemoryError|VirtualMachineError|ArrayStoreException|ClassCastException|LinkageError|NoClassDefFoundError|ClassNotFoundException|RuntimeException|Exception|ThreadDeath|Error|Throwable|System|ClassLoader|Cloneable|Class|CharSequence|Comparable|String|Object"
+ ),
+ constants: getTokens("null|Infinity|NaN|undefined|true|false"),
+ builtinFunctions: getTokens(
+ "AbstractMethodError|AssertionError|ClassCircularityError|ClassFormatError|Deprecated|EnumConstantNotPresentException|ExceptionInInitializerError|IllegalAccessError|IllegalThreadStateException|InstantiationError|InternalError|NegativeArraySizeException|NoSuchFieldError|Override|Process|ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|SuppressWarnings|TypeNotPresentException|UnknownError|UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|InstantiationException|IndexOutOfBoundsException|ArrayIndexOutOfBoundsException|CloneNotSupportedException|NoSuchFieldException|IllegalArgumentException|NumberFormatException|SecurityException|Void|InheritableThreadLocal|IllegalStateException|InterruptedException|NoSuchMethodException|IllegalAccessException|UnsupportedOperationException|Enum|StrictMath|Package|Compiler|Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|NullPointerException"
+ ),
+ operators: [
+ ".",
+ ".&",
+ ".@",
+ "?.",
+ "*",
+ "*.",
+ "*:",
+ "~",
+ "!",
+ "++",
+ "--",
+ "**",
+ "+",
+ "-",
+ "*",
+ "/",
+ "%",
+ "<<",
+ ">>",
+ ">>>",
+ "..",
+ "..<",
+ "<",
+ "<=",
+ ">",
+ ">",
+ "==",
+ "!=",
+ "<=>",
+ "===",
+ "!==",
+ "=~",
+ "==~",
+ "^",
+ "|",
+ "&&",
+ "||",
+ "?",
+ ":",
+ "?:",
+ "=",
+ "**=",
+ "*=",
+ "/=",
+ "%=",
+ "+=",
+ "-=",
+ "<<=",
+ ">>=",
+ ">>>=",
+ "&=",
+ "^=",
+ "|=",
+ "?=",
+ ],
+ symbols: /[=>/, 'comment', '@pop'],
- [/[^-]+/, 'comment.content'],
- [/./, 'comment.content'],
+ tokenizer: {
+ root: [
+ {include: "@whitespace"},
+ // NAB-362 - regex breaks line comments like: /* comment */
+ // [
+ // /\/(?=([^\\/]|\\.)+\/([dgimsuy]*)(\s*)(\.|;|,|\)|\]|\}|$))/,
+ // {token: "regexp", bracket: "@open", next: "@regexp"},
+ // ],
+ {include: "@comments"},
+ {include: "@numbers"},
+ {include: "common"},
+ [/[;,.]/, "delimiter"],
+ [/[(){}[\]]/, "@brackets"],
+ [
+ /[a-zA-Z_$]\w*/,
+ {
+ cases: {
+ "@keywords": "keyword",
+ "@typeKeywords": "type",
+ "@constants": "constant.groovy",
+ "@builtinFunctions": "constant.other.color",
+ "@default": "identifier",
+ },
+ },
+ ],
+ // @ annotations.
+ [/@\s*[a-zA-Z_\$][\w\$]*/, 'annotation'],
+ [
+ /@symbols/,
+ {
+ cases: {
+ "@operators": "operator",
+ "@default": "",
+ },
+ },
+ ],
+ ],
+ common: [
+ // delimiters and operators
+ [/[()[\]]/, "@brackets"],
+ // NAB-362 - breaks generic methods like: def T instanceMethod
+ // [/[<>](?!@symbols)/, "@brackets"],
+ [
+ /@symbols/,
+ {
+ cases: {
+ "@operators": "delimiter",
+ "@default": "",
+ },
+ },
+ ],
+ // NAB-362 - regex breaks line comments like: /* comment */
+ // [
+ // /\/(?=([^\\/]|\\.)+\/([gimsuy]*)(\s*)(\.|;|\/|,|\)|\]|\}|$))/,
+ // {token: "regexp", bracket: "@open", next: "@regexp"},
+ // ],
- ],
- // Identical copy of comment above, except for the addition of .doc
- javadoc: [
- [/[^\/*]+/, 'comment.doc'],
- // [/\/\*/, 'comment.doc', '@push' ], // nested comment not allowed :-(
- [/\/\*/, 'comment.doc.invalid'],
- [/\*\//, 'comment.doc', '@pop'],
- [/[\/*]/, 'comment.doc'],
- ],
+ // delimiter: after number because of .\d floats
+ [/[;,.]/, "delimiter"],
- string: [
- [/[^\\"]+/, 'string'],
- [/@escapes/, 'string.escape'],
- [/\\./, 'string.escape.invalid'],
- [/"/, 'string', '@pop'],
- ],
- },
- };
+ // strings
+ [/"([^"\\]|\\.)*$/, "string.invalid"],
+ [/'([^'\\]|\\.)*$/, "string.invalid"],
+ [/"/, "string", "@string_double"],
+ [/'/, "string", "@string_single"],
+ ],
+ whitespace: [[/\s+/, "white"]],
+ comments: [
+ [/\/\/.*/, "comment"],
+ [
+ /\/\*/,
+ {
+ token: "comment.quote",
+ next: "@comment",
+ },
+ ],
+ ],
+ comment: [
+ [/[^*/]+/, "comment"],
+ [
+ /\*\//,
+ {
+ token: "comment.quote",
+ next: "@pop",
+ },
+ ],
+ [/./, "comment"],
+ ],
+ commentAnsi: [
+ [
+ /\/\*/,
+ {
+ token: "comment.quote",
+ next: "@comment",
+ },
+ ],
+ [/[^*/]+/, "comment"],
+ [
+ /\*\//,
+ {
+ token: "comment.quote",
+ next: "@pop",
+ },
+ ],
+ [/./, "comment"],
+ ],
+ numbers: [
+ [/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?f?\b/, "number.float"],
+ [/[+-]?(?:0[obx])?\d+(?:u?[lst]?)?\b/, "number"],
+ ],
+ // NAB-362 - regex breaks line comments like: /* comment */
+ /*
+ regexp: [
+ [/(\{)(\d+(?:,\d*)?)(\})/, ["regexp.escape.control", "regexp.escape.control", "regexp.escape.control"]],
+ [
+ /(\[)(\^?)(?=(?:[^\]\\/]|\\.)+)/,
+ // @ts-ignore
+ ["regexp.escape.control", {token: "regexp.escape.control", next: "@regexrange"}],
+ ],
+ [/(\()(\?:|\?=|\?!)/, ["regexp.escape.control", "regexp.escape.control"]],
+ [/[()]/, "regexp.escape.control"],
+ [/@regexpctl/, "regexp.escape.control"],
+ [/[^\\/]/, "regexp"],
+ [/@regexpesc/, "regexp.escape"],
+ [/\\\./, "regexp.invalid"],
+ // @ts-ignore
+ [/(\/)([gimsuy]*)/, [{token: "regexp", bracket: "@close", next: "@pop"}, "keyword.other"]],
+ ],
+ regexrange: [
+ [/-/, "regexp.escape.control"],
+ [/\^/, "regexp.invalid"],
+ [/@regexpesc/, "regexp.escape"],
+ [/[^\]]/, "regexp"],
+ [/\]/, {token: "regexp.escape.control", next: "@pop", bracket: "@close"}],
+ ],*/
+ embedded: [
+ [
+ /([^@]|^)([@]{4})*[@]{2}([@]([^@]|$)|[^@]|$)/,
+ {
+ token: "@rematch",
+ next: "@pop",
+ nextEmbedded: "@pop",
+ },
+ ],
+ ],
+ string_double: [
+ [/\$\{/, {token: "delimiter.bracket", next: "@bracketCounting"}],
+ [/[^\\"$]+/, "string"],
+ [/[^\\"]+/, "string"],
+ [/@escapes/, "string.escape"],
+ [/\\./, "string.escape.invalid"],
+ [/"/, "string", "@pop"],
+ ],
+ string_single: [
+ [/[^\\']+/, "string"],
+ [/@escapes/, "string.escape"],
+ [/\\./, "string.escape.invalid"],
+ [/'/, "string", "@pop"],
+ ],
+ string_backtick: [
+ [/\$\{/, {token: "delimiter.bracket", next: "@bracketCounting"}],
+ [/[^\\"$]+/, "string"],
+ [/@escapes/, "string.escape"],
+ [/\\./, "string.escape.invalid"],
+ [/"/, "string", "@pop"],
+ ],
+ bracketCounting: [
+ [/\{/, "delimiter.bracket", "@bracketCounting"],
+ [/\}/, "delimiter.bracket", "@pop"],
+ {include: "common"},
+ ],
+ },
+ };
}
diff --git a/src/app/modeler/actions-mode/action-editor/function-editor/function-editor.component.ts b/src/app/modeler/actions-mode/action-editor/function-editor/function-editor.component.ts
index af3eb19..147a574 100644
--- a/src/app/modeler/actions-mode/action-editor/function-editor/function-editor.component.ts
+++ b/src/app/modeler/actions-mode/action-editor/function-editor/function-editor.component.ts
@@ -1,14 +1,14 @@
import {Component, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';
-import {MatSidenav} from '@angular/material/sidenav';
+import {FormControl} from '@angular/forms';
import {MatButton} from '@angular/material/button';
import {MatMenuTrigger} from '@angular/material/menu';
-import {FormControl} from '@angular/forms';
+import {MatSidenav} from '@angular/material/sidenav';
+import {PetriflowFunction} from '@netgrif/petriflow';
+import {ModelService} from '../../../services/model/model.service';
+import {MenuItem} from '../action-editor-menu/action-editor-menu-item/menu-item';
import {MenuItemConfiguration} from '../action-editor-menu/action-editor-menu-item/menu-item-configuration';
import {ActionEditorService} from '../action-editor.service';
-import {MenuItem} from '../action-editor-menu/action-editor-menu-item/menu-item';
-import {PetriflowFunction} from '@netgrif/petriflow';
import {actions} from '../classes/command-action';
-import {ModelService} from '../../../services/model/model.service';
@Component({
selector: 'nab-function-editor',
diff --git a/src/app/modeler/actions-mode/action-master/action-master-item/action-master-item.component.ts b/src/app/modeler/actions-mode/action-master/action-master-item/action-master-item.component.ts
index e76ee15..aef5295 100644
--- a/src/app/modeler/actions-mode/action-master/action-master-item/action-master-item.component.ts
+++ b/src/app/modeler/actions-mode/action-master/action-master-item/action-master-item.component.ts
@@ -1,7 +1,7 @@
import {Component, Inject} from '@angular/core';
-import {MASTER_ITEM, MASTER_SERVICE} from '../../../components/master-detail/main-master-item/master-injection-tokens';
import {DataVariable, Role, Transition} from '@netgrif/petriflow';
import {AbstractMasterDetailService} from '../../../components/master-detail/abstract-master-detail.service';
+import {MASTER_ITEM, MASTER_SERVICE} from '../../../components/master-detail/main-master-item/master-injection-tokens';
@Component({
selector: 'nab-action-master-item',
diff --git a/src/app/modeler/actions-mode/action-master/action-master.component.ts b/src/app/modeler/actions-mode/action-master/action-master.component.ts
index 5763af5..109f590 100644
--- a/src/app/modeler/actions-mode/action-master/action-master.component.ts
+++ b/src/app/modeler/actions-mode/action-master/action-master.component.ts
@@ -1,18 +1,14 @@
+import {ComponentType} from '@angular/cdk/overlay';
import {Component, Injector, OnInit} from '@angular/core';
-import {PageMasterComponent} from '../../components/master-detail/page-master.component';
-import {ActionsModeService} from '../actions-mode.service';
import {Sort} from '@angular/material/sort';
-import {DataActionsTool} from '../tools/data-actions-tool';
-import {TransitionActionsTool} from '../tools/transition-actions-tool';
-import {RoleActionsTool} from '../tools/role-actions-tool';
-import {ComponentType} from '@angular/cdk/overlay';
-import {ActionMasterItemComponent} from './action-master-item/action-master-item.component';
-import {FunctionMasterItemComponent} from './function-master-item/function-master-item.component';
+import {PageMasterComponent} from '../../components/master-detail/page-master.component';
+import {MasterItem} from '../action-editor/classes/master-item';
import {ActionsMasterDetailService} from '../actions-master-detail.setvice';
+import {ActionsModeService} from '../actions-mode.service';
import {FunctionsTool} from '../tools/functions-tool';
import {ProcessActionsTool} from '../tools/process-actions-tool';
-import {ModelerConfig} from '../../modeler-config';
-import {MasterItem} from '../action-editor/classes/master-item';
+import {ActionMasterItemComponent} from './action-master-item/action-master-item.component';
+import {FunctionMasterItemComponent} from './function-master-item/function-master-item.component';
@Component({
selector: 'nab-action-master',
diff --git a/src/app/modeler/actions-mode/action-master/function-master-item/function-master-item.component.ts b/src/app/modeler/actions-mode/action-master/function-master-item/function-master-item.component.ts
index 398156d..c09e03c 100644
--- a/src/app/modeler/actions-mode/action-master/function-master-item/function-master-item.component.ts
+++ b/src/app/modeler/actions-mode/action-master/function-master-item/function-master-item.component.ts
@@ -1,9 +1,9 @@
import {Component, Inject} from '@angular/core';
-import {MASTER_ITEM, MASTER_SERVICE} from '../../../components/master-detail/main-master-item/master-injection-tokens';
+import {MatDialog} from '@angular/material/dialog';
import {PetriflowFunction} from '@netgrif/petriflow';
-import {AbstractMasterDetailService} from '../../../components/master-detail/abstract-master-detail.service';
import {DialogDeleteComponent} from '../../../../dialogs/dialog-delete/dialog-delete.component';
-import {MatDialog} from '@angular/material/dialog';
+import {AbstractMasterDetailService} from '../../../components/master-detail/abstract-master-detail.service';
+import {MASTER_ITEM, MASTER_SERVICE} from '../../../components/master-detail/main-master-item/master-injection-tokens';
@Component({
selector: 'nab-function-master-item',
diff --git a/src/app/modeler/actions-mode/actions-master-detail.setvice.ts b/src/app/modeler/actions-mode/actions-master-detail.setvice.ts
index 81f50c8..841bedf 100644
--- a/src/app/modeler/actions-mode/actions-master-detail.setvice.ts
+++ b/src/app/modeler/actions-mode/actions-master-detail.setvice.ts
@@ -1,21 +1,17 @@
import {Injectable} from '@angular/core';
+import {Sort} from '@angular/material/sort';
+import {DataVariable, FunctionScope, PetriflowFunction, Role, Transition} from '@netgrif/petriflow';
import {AbstractMasterDetailService} from '../components/master-detail/abstract-master-detail.service';
-import {DataVariable,
- FunctionScope,
- PetriflowFunction,
- Role,
- Transition} from '@netgrif/petriflow';
+import {ModelerConfig} from '../modeler-config';
import {ModelService} from '../services/model/model.service';
-import {Sort} from '@angular/material/sort';
+import {ActionType} from './action-editor/classes/editable-action';
import {MasterItem} from './action-editor/classes/master-item';
import {ActionsModeService} from './actions-mode.service';
import {DataActionsTool} from './tools/data-actions-tool';
-import {TransitionActionsTool} from './tools/transition-actions-tool';
-import {ActionType} from './action-editor/classes/editable-action';
+import {FunctionsTool} from './tools/functions-tool';
import {ProcessActionsTool} from './tools/process-actions-tool';
import {RoleActionsTool} from './tools/role-actions-tool';
-import {FunctionsTool} from './tools/functions-tool';
-import {ModelerConfig} from '../modeler-config';
+import {TransitionActionsTool} from './tools/transition-actions-tool';
@Injectable({
providedIn: 'root'
diff --git a/src/app/modeler/actions-mode/actions-mode.component.spec.ts b/src/app/modeler/actions-mode/actions-mode.component.spec.ts
index f82c2b3..cfe5fc0 100644
--- a/src/app/modeler/actions-mode/actions-mode.component.spec.ts
+++ b/src/app/modeler/actions-mode/actions-mode.component.spec.ts
@@ -1,19 +1,19 @@
-import {waitForAsync, ComponentFixture, TestBed} from '@angular/core/testing';
-import {ActionsModeComponent} from './actions-mode.component';
-import {HttpClientModule} from '@angular/common/http';
-import {MaterialImportModule} from '../../material-import/material-import.module';
import {CommonModule} from '@angular/common';
-import {CdkImportModule} from '../../cdk-import/cdk-import.module';
+import {HttpClientModule} from '@angular/common/http';
+import {ComponentFixture, TestBed, waitForAsync} from '@angular/core/testing';
import {FormsModule} from '@angular/forms';
-import {RouterModule} from '@angular/router';
-import {HotkeyModule} from 'angular2-hotkeys';
-import {ResizableModule} from 'angular-resizable-element';
import {MatCheckboxModule} from '@angular/material/checkbox';
-import {MatTabsModule} from '@angular/material/tabs';
import {MatSortModule} from '@angular/material/sort';
-import {ModelerModule} from '../modeler.module';
+import {MatTabsModule} from '@angular/material/tabs';
import {NoopAnimationsModule} from '@angular/platform-browser/animations';
+import {RouterModule} from '@angular/router';
+import {ResizableModule} from 'angular-resizable-element';
+import {HotkeyModule} from 'angular2-hotkeys';
import {MonacoEditorModule} from 'ngx-monaco-editor-v2';
+import {CdkImportModule} from '../../cdk-import/cdk-import.module';
+import {MaterialImportModule} from '../../material-import/material-import.module';
+import {ModelerModule} from '../modeler.module';
+import {ActionsModeComponent} from './actions-mode.component';
describe('ActionsModeComponent', () => {
let component: ActionsModeComponent;
diff --git a/src/app/modeler/actions-mode/actions-mode.component.ts b/src/app/modeler/actions-mode/actions-mode.component.ts
index 9edc45c..731b403 100644
--- a/src/app/modeler/actions-mode/actions-mode.component.ts
+++ b/src/app/modeler/actions-mode/actions-mode.component.ts
@@ -1,11 +1,9 @@
-import {Component} from '@angular/core';
-import {
- FunctionScope,
-} from '@netgrif/petriflow';
import {ComponentType} from '@angular/cdk/overlay';
+import {Component} from '@angular/core';
+import {FunctionScope} from '@netgrif/petriflow';
import {ActionDetailComponent} from './action-detail/action-detail.component';
-import {ActionsMasterDetailService} from './actions-master-detail.setvice';
import {ActionMasterComponent} from './action-master/action-master.component';
+import {ActionsMasterDetailService} from './actions-master-detail.setvice';
export interface Scope {
viewValue: string;
diff --git a/src/app/modeler/actions-mode/actions-mode.service.ts b/src/app/modeler/actions-mode/actions-mode.service.ts
index 1e9c5c2..be7ea62 100644
--- a/src/app/modeler/actions-mode/actions-mode.service.ts
+++ b/src/app/modeler/actions-mode/actions-mode.service.ts
@@ -1,16 +1,16 @@
import {Injectable, Injector} from '@angular/core';
import {TutorialService} from '../../tutorial/tutorial-service';
-import {Mode} from '../control-panel/modes/mode';
import {ControlPanelButton} from '../control-panel/control-panel-button';
import {ControlPanelIcon} from '../control-panel/control-panel-icon';
-import {ToolGroup} from '../control-panel/tools/tool-group';
+import {Mode} from '../control-panel/modes/mode';
import {ModeService} from '../control-panel/modes/mode-component/mode.service';
+import {Tool} from '../control-panel/tools/tool';
+import {ToolGroup} from '../control-panel/tools/tool-group';
import {DataActionsTool} from './tools/data-actions-tool';
-import {TransitionActionsTool} from './tools/transition-actions-tool';
-import {RoleActionsTool} from './tools/role-actions-tool';
-import {ProcessActionsTool} from './tools/process-actions-tool';
import {FunctionsTool} from './tools/functions-tool';
-import {Tool} from '../control-panel/tools/tool';
+import {ProcessActionsTool} from './tools/process-actions-tool';
+import {RoleActionsTool} from './tools/role-actions-tool';
+import {TransitionActionsTool} from './tools/transition-actions-tool';
@Injectable({
providedIn: 'root'
diff --git a/src/app/modeler/actions-mode/tools/data-actions-tool.ts b/src/app/modeler/actions-mode/tools/data-actions-tool.ts
index 0aa4d85..a69c004 100644
--- a/src/app/modeler/actions-mode/tools/data-actions-tool.ts
+++ b/src/app/modeler/actions-mode/tools/data-actions-tool.ts
@@ -1,7 +1,7 @@
-import {Tool} from '../../control-panel/tools/tool';
+import {Injectable} from '@angular/core';
import {ControlPanelButton} from '../../control-panel/control-panel-button';
import {ControlPanelIcon} from '../../control-panel/control-panel-icon';
-import {Injectable} from '@angular/core';
+import {Tool} from '../../control-panel/tools/tool';
@Injectable({
providedIn: 'root'
diff --git a/src/app/modeler/actions-mode/tools/functions-tool.ts b/src/app/modeler/actions-mode/tools/functions-tool.ts
index 6a98987..9cab558 100644
--- a/src/app/modeler/actions-mode/tools/functions-tool.ts
+++ b/src/app/modeler/actions-mode/tools/functions-tool.ts
@@ -1,7 +1,7 @@
-import {Tool} from '../../control-panel/tools/tool';
+import {Injectable} from '@angular/core';
import {ControlPanelButton} from '../../control-panel/control-panel-button';
import {ControlPanelIcon} from '../../control-panel/control-panel-icon';
-import {Injectable} from '@angular/core';
+import {Tool} from '../../control-panel/tools/tool';
@Injectable({
providedIn: 'root'
diff --git a/src/app/modeler/actions-mode/tools/process-actions-tool.ts b/src/app/modeler/actions-mode/tools/process-actions-tool.ts
index c8cf5a4..b424895 100644
--- a/src/app/modeler/actions-mode/tools/process-actions-tool.ts
+++ b/src/app/modeler/actions-mode/tools/process-actions-tool.ts
@@ -1,7 +1,7 @@
-import {Tool} from '../../control-panel/tools/tool';
+import {Injectable} from '@angular/core';
import {ControlPanelButton} from '../../control-panel/control-panel-button';
import {ControlPanelIcon} from '../../control-panel/control-panel-icon';
-import {Injectable} from '@angular/core';
+import {Tool} from '../../control-panel/tools/tool';
@Injectable({
providedIn: 'root'
diff --git a/src/app/modeler/actions-mode/tools/role-actions-tool.ts b/src/app/modeler/actions-mode/tools/role-actions-tool.ts
index 3cbdab8..e6239a2 100644
--- a/src/app/modeler/actions-mode/tools/role-actions-tool.ts
+++ b/src/app/modeler/actions-mode/tools/role-actions-tool.ts
@@ -1,7 +1,7 @@
-import {Tool} from '../../control-panel/tools/tool';
+import {Injectable} from '@angular/core';
import {ControlPanelButton} from '../../control-panel/control-panel-button';
import {ControlPanelIcon} from '../../control-panel/control-panel-icon';
-import {Injectable} from '@angular/core';
+import {Tool} from '../../control-panel/tools/tool';
@Injectable({
providedIn: 'root'
diff --git a/src/app/modeler/actions-mode/tools/transition-actions-tool.ts b/src/app/modeler/actions-mode/tools/transition-actions-tool.ts
index 55e73b8..28ce79e 100644
--- a/src/app/modeler/actions-mode/tools/transition-actions-tool.ts
+++ b/src/app/modeler/actions-mode/tools/transition-actions-tool.ts
@@ -1,7 +1,7 @@
-import {Tool} from '../../control-panel/tools/tool';
+import {Injectable} from '@angular/core';
import {ControlPanelButton} from '../../control-panel/control-panel-button';
import {ControlPanelIcon} from '../../control-panel/control-panel-icon';
-import {Injectable} from '@angular/core';
+import {Tool} from '../../control-panel/tools/tool';
@Injectable({
providedIn: 'root'
diff --git a/src/app/modeler/components/master-detail/abstract-master-detail.service.ts b/src/app/modeler/components/master-detail/abstract-master-detail.service.ts
index 16719c9..1dab8b5 100644
--- a/src/app/modeler/components/master-detail/abstract-master-detail.service.ts
+++ b/src/app/modeler/components/master-detail/abstract-master-detail.service.ts
@@ -1,6 +1,6 @@
-import {BehaviorSubject, Observable, Subject} from 'rxjs';
import {Injectable, OnDestroy} from '@angular/core';
import {Sort} from '@angular/material/sort';
+import {BehaviorSubject, Observable, Subject} from 'rxjs';
@Injectable()
export abstract class AbstractMasterDetailService implements OnDestroy {
diff --git a/src/app/modeler/components/master-detail/abstract-master.component.ts b/src/app/modeler/components/master-detail/abstract-master.component.ts
index f785661..59b53d7 100644
--- a/src/app/modeler/components/master-detail/abstract-master.component.ts
+++ b/src/app/modeler/components/master-detail/abstract-master.component.ts
@@ -1,6 +1,6 @@
+import {ComponentType} from '@angular/cdk/overlay';
import {Component, Input} from '@angular/core';
import {AbstractMasterDetailService} from './abstract-master-detail.service';
-import {ComponentType} from '@angular/cdk/overlay';
@Component({
selector: 'nab-abstract-master-component',
diff --git a/src/app/modeler/components/master-detail/main-master-item/main-master-item.component.ts b/src/app/modeler/components/master-detail/main-master-item/main-master-item.component.ts
index 78af0d1..062564b 100644
--- a/src/app/modeler/components/master-detail/main-master-item/main-master-item.component.ts
+++ b/src/app/modeler/components/master-detail/main-master-item/main-master-item.component.ts
@@ -1,6 +1,6 @@
-import {Component, Injector, Input, OnInit} from '@angular/core';
-import {ComponentPortal} from '@angular/cdk/portal';
import {ComponentType} from '@angular/cdk/overlay';
+import {ComponentPortal} from '@angular/cdk/portal';
+import {Component, Injector, Input, OnInit} from '@angular/core';
import {AbstractMasterDetailService} from '../abstract-master-detail.service';
import {MASTER_ITEM, MASTER_SERVICE} from './master-injection-tokens';
diff --git a/src/app/modeler/components/master-detail/main-master/builder-paginator-inpl.ts b/src/app/modeler/components/master-detail/main-master/builder-paginator-inpl.ts
index 1f9c59e..d9ee3be 100644
--- a/src/app/modeler/components/master-detail/main-master/builder-paginator-inpl.ts
+++ b/src/app/modeler/components/master-detail/main-master/builder-paginator-inpl.ts
@@ -1,5 +1,5 @@
-import {MatPaginatorIntl} from '@angular/material/paginator';
import {Injectable} from '@angular/core';
+import {MatPaginatorIntl} from '@angular/material/paginator';
import {Subject} from 'rxjs';
@Injectable()
diff --git a/src/app/modeler/components/master-detail/main-master/main-master.component.ts b/src/app/modeler/components/master-detail/main-master/main-master.component.ts
index e81fcf6..a9672fd 100644
--- a/src/app/modeler/components/master-detail/main-master/main-master.component.ts
+++ b/src/app/modeler/components/master-detail/main-master/main-master.component.ts
@@ -1,4 +1,4 @@
-import {Component, Injector, OnInit} from '@angular/core';
+import {Component, OnInit} from '@angular/core';
import {PageMasterComponent} from '../page-master.component';
@Component({
diff --git a/src/app/modeler/components/master-detail/master-detail.component.ts b/src/app/modeler/components/master-detail/master-detail.component.ts
index 62786b2..f4c2a50 100644
--- a/src/app/modeler/components/master-detail/master-detail.component.ts
+++ b/src/app/modeler/components/master-detail/master-detail.component.ts
@@ -1,6 +1,6 @@
-import {Component, Injector, Input, OnInit} from '@angular/core';
-import {ComponentPortal} from '@angular/cdk/portal';
import {ComponentType} from '@angular/cdk/overlay';
+import {ComponentPortal} from '@angular/cdk/portal';
+import {Component, Injector, Input, OnInit} from '@angular/core';
import {AbstractMasterDetailService} from './abstract-master-detail.service';
@Component({
diff --git a/src/app/modeler/components/master-detail/page-master.component.ts b/src/app/modeler/components/master-detail/page-master.component.ts
index 9f04133..89921fb 100644
--- a/src/app/modeler/components/master-detail/page-master.component.ts
+++ b/src/app/modeler/components/master-detail/page-master.component.ts
@@ -1,7 +1,7 @@
-import {AbstractMasterComponent} from './abstract-master.component';
import {Component, Input, OnInit, ViewChild} from '@angular/core';
-import {MatSort, Sort} from '@angular/material/sort';
import {PageEvent} from '@angular/material/paginator';
+import {MatSort, Sort} from '@angular/material/sort';
+import {AbstractMasterComponent} from './abstract-master.component';
@Component({
selector: 'nab-abstract-page-master-component',
diff --git a/src/app/modeler/components/material-icon-picker/material-icon-picker.component.ts b/src/app/modeler/components/material-icon-picker/material-icon-picker.component.ts
index d6447fe..d02082d 100644
--- a/src/app/modeler/components/material-icon-picker/material-icon-picker.component.ts
+++ b/src/app/modeler/components/material-icon-picker/material-icon-picker.component.ts
@@ -1,8 +1,8 @@
import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';
-import {MaterialIconList} from './material-icon-list';
+import {FormControl} from '@angular/forms';
import {Observable} from 'rxjs';
import {map, startWith} from 'rxjs/operators';
-import {FormControl} from '@angular/forms';
+import {MaterialIconList} from './material-icon-list';
@Component({
selector: 'nab-material-icon-picker',
diff --git a/src/app/modeler/control-panel/control-panel.component.spec.ts b/src/app/modeler/control-panel/control-panel.component.spec.ts
index cf63d0d..f66ce5c 100644
--- a/src/app/modeler/control-panel/control-panel.component.spec.ts
+++ b/src/app/modeler/control-panel/control-panel.component.spec.ts
@@ -1,21 +1,21 @@
-import {waitForAsync, ComponentFixture, TestBed} from '@angular/core/testing';
-
-import {ControlPanelComponent} from './control-panel.component';
import {CommonModule} from '@angular/common';
-import {MaterialImportModule} from '../../material-import/material-import.module';
-import {CdkImportModule} from '../../cdk-import/cdk-import.module';
+import {HttpClientTestingModule} from '@angular/common/http/testing';
+import {ComponentFixture, TestBed, waitForAsync} from '@angular/core/testing';
import {FormsModule} from '@angular/forms';
-import {RouterModule} from '@angular/router';
-import {HotkeyModule} from 'angular2-hotkeys';
-import {ResizableModule} from 'angular-resizable-element';
import {MatCheckboxModule} from '@angular/material/checkbox';
-import {MatTabsModule} from '@angular/material/tabs';
import {MatSortModule} from '@angular/material/sort';
-import {HttpClientTestingModule} from '@angular/common/http/testing';
+import {MatTabsModule} from '@angular/material/tabs';
+import {RouterModule} from '@angular/router';
import {RouterTestingModule} from '@angular/router/testing';
-import {AppModule} from '../../app.module';
import {FlexLayoutModule} from '@ngbracket/ngx-layout';
+import {ResizableModule} from 'angular-resizable-element';
+import {HotkeyModule} from 'angular2-hotkeys';
import {MonacoEditorModule} from 'ngx-monaco-editor-v2';
+import {AppModule} from '../../app.module';
+import {CdkImportModule} from '../../cdk-import/cdk-import.module';
+import {MaterialImportModule} from '../../material-import/material-import.module';
+
+import {ControlPanelComponent} from './control-panel.component';
describe('ControlPanelComponent', () => {
let component: ControlPanelComponent;
diff --git a/src/app/modeler/control-panel/control-panel.component.ts b/src/app/modeler/control-panel/control-panel.component.ts
index e6018c8..cb5459d 100644
--- a/src/app/modeler/control-panel/control-panel.component.ts
+++ b/src/app/modeler/control-panel/control-panel.component.ts
@@ -1,4 +1,4 @@
-import {AfterViewInit, Component} from '@angular/core';
+import {Component} from '@angular/core';
import {ControlPanelService} from './control-panel.service';
import {GlobalToolRegistry} from './tools/global-tool-registry';
diff --git a/src/app/modeler/control-panel/control-panel.service.ts b/src/app/modeler/control-panel/control-panel.service.ts
index ee6b2ff..f4a9af3 100644
--- a/src/app/modeler/control-panel/control-panel.service.ts
+++ b/src/app/modeler/control-panel/control-panel.service.ts
@@ -1,23 +1,23 @@
import {Injectable} from '@angular/core';
-import {ModeRegistry} from './modes/mode-registry';
-import {Mode} from './modes/mode';
-import {ModeService} from './modes/mode-component/mode.service';
-import {I18nModeService} from '../i18n-mode/i18n-mode.service';
+import {NavigationEnd, Router} from '@angular/router';
+import {filter} from 'rxjs/operators';
import {ActionsModeService} from '../actions-mode/actions-mode.service';
import {DataModeService} from '../data-mode/data-mode.service';
-import {SimulationModeService} from '../simulation-mode/simulation-mode.service';
-import {RoleModeService} from '../role-mode/role-mode.service';
import {EditModeService} from '../edit-mode/edit-mode.service';
-import {GlobalToolRegistry} from './tools/global-tool-registry';
-import {ImportTool} from './modes/import-tool';
+import {HistoryModeService} from '../history-mode/history-mode.service';
+import {I18nModeService} from '../i18n-mode/i18n-mode.service';
+import {RoleModeService} from '../role-mode/role-mode.service';
+import {SimulationModeService} from '../simulation-mode/simulation-mode.service';
import {ExportTool} from './modes/export-tool';
-import {SvgExportTool} from './modes/svg-export-tool';
-import {NavigationEnd, Router} from '@angular/router';
-import {filter} from 'rxjs/operators';
+import {ImportTool} from './modes/import-tool';
+import {Mode} from './modes/mode';
+import {ModeService} from './modes/mode-component/mode.service';
+import {ModeRegistry} from './modes/mode-registry';
import {RedoTool} from './modes/redo-tool';
+import {SvgExportTool} from './modes/svg-export-tool';
import {UndoTool} from './modes/undo-tool';
+import {GlobalToolRegistry} from './tools/global-tool-registry';
import {Tool} from './tools/tool';
-import {HistoryModeService} from '../history-mode/history-mode.service';
@Injectable({
providedIn: 'root'
diff --git a/src/app/modeler/control-panel/modes/export-tool.ts b/src/app/modeler/control-panel/modes/export-tool.ts
index faffc95..72b8e16 100644
--- a/src/app/modeler/control-panel/modes/export-tool.ts
+++ b/src/app/modeler/control-panel/modes/export-tool.ts
@@ -1,9 +1,9 @@
-import {Tool} from '../tools/tool';
import {Injectable} from '@angular/core';
+import {TutorialService} from '../../../tutorial/tutorial-service';
+import {ModelExportService} from '../../services/model/model-export.service';
import {ControlPanelButton} from '../control-panel-button';
import {ControlPanelIcon} from '../control-panel-icon';
-import {ModelExportService} from '../../services/model/model-export.service';
-import {TutorialService} from '../../../tutorial/tutorial-service';
+import {Tool} from '../tools/tool';
@Injectable({
providedIn: 'root'
diff --git a/src/app/modeler/control-panel/modes/import-tool-button/import-tool-button.component.ts b/src/app/modeler/control-panel/modes/import-tool-button/import-tool-button.component.ts
index 10447aa..a7319be 100644
--- a/src/app/modeler/control-panel/modes/import-tool-button/import-tool-button.component.ts
+++ b/src/app/modeler/control-panel/modes/import-tool-button/import-tool-button.component.ts
@@ -1,7 +1,7 @@
import {Component, ElementRef, Inject, ViewChild} from '@angular/core';
+import {TutorialService} from '../../../../tutorial/tutorial-service';
import {NAB_CONTROL_PANEL_TOOL} from '../../control-panel-tool-injection-token';
import {ImportTool} from '../import-tool';
-import {TutorialService} from '../../../../tutorial/tutorial-service';
@Component({
selector: 'nab-import-tool-button',
diff --git a/src/app/modeler/control-panel/modes/import-tool.ts b/src/app/modeler/control-panel/modes/import-tool.ts
index b3b91c4..692a20e 100644
--- a/src/app/modeler/control-panel/modes/import-tool.ts
+++ b/src/app/modeler/control-panel/modes/import-tool.ts
@@ -1,13 +1,13 @@
+import {HttpClient, HttpErrorResponse} from '@angular/common/http';
import {Injectable} from '@angular/core';
+import {MatSnackBar} from '@angular/material/snack-bar';
+import {AppBuilderConfigurationService} from '../../../app-builder-configuration.service';
+import {TutorialService} from '../../../tutorial/tutorial-service';
+import {ModelImportService} from '../../model-import-service';
import {ControlPanelButton} from '../control-panel-button';
import {ControlPanelIcon} from '../control-panel-icon';
-import {ImportToolButtonComponent} from './import-tool-button/import-tool-button.component';
-import {ModelImportService} from '../../model-import-service';
import {Tool} from '../tools/tool';
-import {AppBuilderConfigurationService} from '../../../app-builder-configuration.service';
-import {HttpClient, HttpErrorResponse} from '@angular/common/http';
-import {MatSnackBar} from '@angular/material/snack-bar';
-import {TutorialService} from '../../../tutorial/tutorial-service';
+import {ImportToolButtonComponent} from './import-tool-button/import-tool-button.component';
@Injectable({
providedIn: 'root'
diff --git a/src/app/modeler/control-panel/modes/mode-component/mode.component.ts b/src/app/modeler/control-panel/modes/mode-component/mode.component.ts
index 1725dd8..b542a46 100644
--- a/src/app/modeler/control-panel/modes/mode-component/mode.component.ts
+++ b/src/app/modeler/control-panel/modes/mode-component/mode.component.ts
@@ -1,6 +1,6 @@
import {Component, Input} from '@angular/core';
-import {ControlPanelService} from '../../control-panel.service';
import {TutorialService} from '../../../../tutorial/tutorial-service';
+import {ControlPanelService} from '../../control-panel.service';
import {Mode} from '../mode';
@Component({
diff --git a/src/app/modeler/control-panel/modes/mode-component/mode.service.ts b/src/app/modeler/control-panel/modes/mode-component/mode.service.ts
index fd6a6d9..56e75a9 100644
--- a/src/app/modeler/control-panel/modes/mode-component/mode.service.ts
+++ b/src/app/modeler/control-panel/modes/mode-component/mode.service.ts
@@ -1,7 +1,7 @@
-import {Mode} from '../mode';
-import {ToolGroup} from '../../tools/tool-group';
-import {Tool} from '../../tools/tool';
import {BehaviorSubject} from 'rxjs';
+import {Tool} from '../../tools/tool';
+import {ToolGroup} from '../../tools/tool-group';
+import {Mode} from '../mode';
export abstract class ModeService {
diff --git a/src/app/modeler/control-panel/modes/mode-registry.ts b/src/app/modeler/control-panel/modes/mode-registry.ts
index 15f8893..c7dd79d 100644
--- a/src/app/modeler/control-panel/modes/mode-registry.ts
+++ b/src/app/modeler/control-panel/modes/mode-registry.ts
@@ -1,5 +1,5 @@
-import {Mode} from './mode';
import {AbstractRegistry} from '../../abstract-registry';
+import {Mode} from './mode';
export class ModeRegistry extends AbstractRegistry {
diff --git a/src/app/modeler/control-panel/modes/mode.ts b/src/app/modeler/control-panel/modes/mode.ts
index 638a45a..160aa36 100644
--- a/src/app/modeler/control-panel/modes/mode.ts
+++ b/src/app/modeler/control-panel/modes/mode.ts
@@ -1,9 +1,9 @@
-import {TutorialStep} from '../../../tutorial/tutorial-step';
-import {ToolRegistry} from '../tools/tool-registry';
import {Injector} from '@angular/core';
+import {TutorialStep} from '../../../tutorial/tutorial-step';
import {Identifiable} from '../../edit-mode/domain/identifiable';
import {ControlPanelButton} from '../control-panel-button';
import {ControlPanelIcon} from '../control-panel-icon';
+import {ToolRegistry} from '../tools/tool-registry';
export class Mode extends Identifiable {
diff --git a/src/app/modeler/control-panel/modes/redo-tool.ts b/src/app/modeler/control-panel/modes/redo-tool.ts
index b0177ca..7e9180e 100644
--- a/src/app/modeler/control-panel/modes/redo-tool.ts
+++ b/src/app/modeler/control-panel/modes/redo-tool.ts
@@ -1,8 +1,8 @@
-import {Tool} from '../tools/tool';
+import {Injectable} from '@angular/core';
import {HistoryService} from '../../services/history/history.service';
import {ControlPanelButton} from '../control-panel-button';
import {ControlPanelIcon} from '../control-panel-icon';
-import {Injectable} from '@angular/core';
+import {Tool} from '../tools/tool';
@Injectable({
providedIn: 'root'
diff --git a/src/app/modeler/control-panel/modes/svg-export-tool.ts b/src/app/modeler/control-panel/modes/svg-export-tool.ts
index 474dc78..286869d 100644
--- a/src/app/modeler/control-panel/modes/svg-export-tool.ts
+++ b/src/app/modeler/control-panel/modes/svg-export-tool.ts
@@ -1,10 +1,10 @@
import {Injectable} from '@angular/core';
-import {Tool} from '../tools/tool';
-import {ControlPanelButton} from '../control-panel-button';
-import {ControlPanelIcon} from '../control-panel-icon';
-import {ModelExportService} from '../../services/model/model-export.service';
import {PetriflowCanvasService} from '@netgrif/petriflow.svg';
import {TutorialService} from '../../../tutorial/tutorial-service';
+import {ModelExportService} from '../../services/model/model-export.service';
+import {ControlPanelButton} from '../control-panel-button';
+import {ControlPanelIcon} from '../control-panel-icon';
+import {Tool} from '../tools/tool';
@Injectable({
providedIn: 'root'
diff --git a/src/app/modeler/control-panel/modes/undo-tool.ts b/src/app/modeler/control-panel/modes/undo-tool.ts
index 5b0c7ba..ee4d4e2 100644
--- a/src/app/modeler/control-panel/modes/undo-tool.ts
+++ b/src/app/modeler/control-panel/modes/undo-tool.ts
@@ -1,8 +1,8 @@
import {Injectable} from '@angular/core';
-import {Tool} from '../tools/tool';
+import {HistoryService} from '../../services/history/history.service';
import {ControlPanelButton} from '../control-panel-button';
import {ControlPanelIcon} from '../control-panel-icon';
-import {HistoryService} from '../../services/history/history.service';
+import {Tool} from '../tools/tool';
@Injectable({
providedIn: 'root'
diff --git a/src/app/modeler/control-panel/tools/global-tool-registry.ts b/src/app/modeler/control-panel/tools/global-tool-registry.ts
index ee1e48c..a43a0c2 100644
--- a/src/app/modeler/control-panel/tools/global-tool-registry.ts
+++ b/src/app/modeler/control-panel/tools/global-tool-registry.ts
@@ -1,6 +1,6 @@
+import {ComponentPortal} from '@angular/cdk/portal';
import {Injectable, Injector} from '@angular/core';
import {Tool} from './tool';
-import {ComponentPortal} from '@angular/cdk/portal';
import {ToolComponent} from './tool-component/tool.component';
import {ToolRegistry} from './tool-registry';
diff --git a/src/app/modeler/control-panel/tools/tool-component/tool.component.ts b/src/app/modeler/control-panel/tools/tool-component/tool.component.ts
index 92d6786..0c1a297 100644
--- a/src/app/modeler/control-panel/tools/tool-component/tool.component.ts
+++ b/src/app/modeler/control-panel/tools/tool-component/tool.component.ts
@@ -1,8 +1,8 @@
-import {Component, Inject, OnInit} from '@angular/core';
-import {Tool} from '../tool';
-import {ModeService} from '../../modes/mode-component/mode.service';
-import {NAB_CONTROL_PANEL_MODE, NAB_CONTROL_PANEL_TOOL} from '../../control-panel-tool-injection-token';
+import {Component, Inject} from '@angular/core';
import {TutorialService} from '../../../../tutorial/tutorial-service';
+import {NAB_CONTROL_PANEL_MODE, NAB_CONTROL_PANEL_TOOL} from '../../control-panel-tool-injection-token';
+import {ModeService} from '../../modes/mode-component/mode.service';
+import {Tool} from '../tool';
@Component({
selector: 'nab-tool',
diff --git a/src/app/modeler/control-panel/tools/tool-registry.ts b/src/app/modeler/control-panel/tools/tool-registry.ts
index 09844c7..8cc5383 100644
--- a/src/app/modeler/control-panel/tools/tool-registry.ts
+++ b/src/app/modeler/control-panel/tools/tool-registry.ts
@@ -1,10 +1,10 @@
-import {Tool} from './tool';
import {ComponentPortal} from '@angular/cdk/portal';
-import {ToolComponent} from './tool-component/tool.component';
import {Injector, StaticProvider} from '@angular/core';
-import {ModeService} from '../modes/mode-component/mode.service';
import {AbstractRegistry} from '../../abstract-registry';
import {NAB_CONTROL_PANEL_MODE, NAB_CONTROL_PANEL_TOOL} from '../control-panel-tool-injection-token';
+import {ModeService} from '../modes/mode-component/mode.service';
+import {Tool} from './tool';
+import {ToolComponent} from './tool-component/tool.component';
export class ToolRegistry extends AbstractRegistry {
diff --git a/src/app/modeler/control-panel/tools/tool.ts b/src/app/modeler/control-panel/tools/tool.ts
index 4ad82de..9e90bee 100644
--- a/src/app/modeler/control-panel/tools/tool.ts
+++ b/src/app/modeler/control-panel/tools/tool.ts
@@ -1,10 +1,10 @@
-import {ControlPanelButton} from '../control-panel-button';
import {Type} from '@angular/core';
+import {BehaviorSubject} from 'rxjs';
+import {TutorialStep} from '../../../tutorial/tutorial-step';
import {Identifiable} from '../../edit-mode/domain/identifiable';
+import {ControlPanelButton} from '../control-panel-button';
import {ControlPanelIcon} from '../control-panel-icon';
import {ToolComponent} from './tool-component/tool.component';
-import {BehaviorSubject} from 'rxjs';
-import {TutorialStep} from '../../../tutorial/tutorial-step';
export abstract class Tool extends Identifiable {
diff --git a/src/app/modeler/control-panel/trees/trigger-tree/trigger-tree.component.spec.ts b/src/app/modeler/control-panel/trees/trigger-tree/trigger-tree.component.spec.ts
index 2dbef25..79b8105 100644
--- a/src/app/modeler/control-panel/trees/trigger-tree/trigger-tree.component.spec.ts
+++ b/src/app/modeler/control-panel/trees/trigger-tree/trigger-tree.component.spec.ts
@@ -1,20 +1,20 @@
-import {waitForAsync, ComponentFixture, TestBed} from '@angular/core/testing';
-
-import {TriggerTreeComponent} from './trigger-tree.component';
import {CommonModule} from '@angular/common';
-import {MaterialImportModule} from '../../../../material-import/material-import.module';
-import {CdkImportModule} from '../../../../cdk-import/cdk-import.module';
+import {Component} from '@angular/core';
+import {ComponentFixture, TestBed, waitForAsync} from '@angular/core/testing';
import {FormsModule} from '@angular/forms';
-import {RouterModule} from '@angular/router';
-import {HotkeyModule} from 'angular2-hotkeys';
-import {ResizableModule} from 'angular-resizable-element';
import {MatCheckboxModule} from '@angular/material/checkbox';
-import {MatTabsModule} from '@angular/material/tabs';
import {MatSortModule} from '@angular/material/sort';
-import {Component} from '@angular/core';
+import {MatTabsModule} from '@angular/material/tabs';
import {NoopAnimationsModule} from '@angular/platform-browser/animations';
-import {MonacoEditorModule} from 'ngx-monaco-editor-v2';
+import {RouterModule} from '@angular/router';
import {FlexLayoutModule} from '@ngbracket/ngx-layout';
+import {ResizableModule} from 'angular-resizable-element';
+import {HotkeyModule} from 'angular2-hotkeys';
+import {MonacoEditorModule} from 'ngx-monaco-editor-v2';
+import {CdkImportModule} from '../../../../cdk-import/cdk-import.module';
+import {MaterialImportModule} from '../../../../material-import/material-import.module';
+
+import {TriggerTreeComponent} from './trigger-tree.component';
describe('TriggerTreeComponent', () => {
let component: TriggerTreeComponent;
diff --git a/src/app/modeler/control-panel/trees/trigger-tree/trigger-tree.component.ts b/src/app/modeler/control-panel/trees/trigger-tree/trigger-tree.component.ts
index 1b10df7..d267a32 100644
--- a/src/app/modeler/control-panel/trees/trigger-tree/trigger-tree.component.ts
+++ b/src/app/modeler/control-panel/trees/trigger-tree/trigger-tree.component.ts
@@ -1,9 +1,9 @@
-import {Component, Input, OnInit} from '@angular/core';
-import {NestedTreeControl} from '@angular/cdk/tree';
-import {Trigger, TriggerType} from '@netgrif/petriflow';
import {NGX_MAT_DATE_FORMATS} from '@angular-material-components/datetime-picker';
+import {NestedTreeControl} from '@angular/cdk/tree';
+import {Component, Input} from '@angular/core';
import {MatTreeNestedDataSource} from '@angular/material/tree';
import {DATE_TIME_FORMAT} from '@netgrif/components-core';
+import {Trigger, TriggerType} from '@netgrif/petriflow';
interface TriggerNode {
name?: string;
diff --git a/src/app/modeler/data-mode/data-detail/data-detail.component.html b/src/app/modeler/data-mode/data-detail/data-detail.component.html
index faffabd..8bd0376 100644
--- a/src/app/modeler/data-mode/data-detail/data-detail.component.html
+++ b/src/app/modeler/data-mode/data-detail/data-detail.component.html
@@ -98,8 +98,13 @@
Component Name
-
+
+
+
+ {{componentDef.title}}
+
+
@@ -111,7 +116,12 @@
Key
+ [value]="property.key" [matAutocomplete]="propertyAutocomplete">
+
+
+ {{propertyDef.name}}
+
+
Value
@@ -142,45 +152,93 @@
-
- Initial value
-
-
-
-
+
Initial value
-
- None
-
- {{ opt.value?.value }}
-
-
-
-
-
- {{ opt.value?.value }}
-
-
-
-
-
-
- Initial value
-
-
-
-
-
-
-
-
+
+
+ @switch (item.type) {
+ @case (DataType.BOOLEAN) {
+
+ Initial value
+
+ {{item.init.value}}
+
+
+ }
+ @case (DataType.NUMBER) {
+
+ Initial value
+
+
+ }
+ @case (DataType.DATE) {
+
+ Initial value
+
+
+
+
+
+ }
+ @case (DataType.DATETIME) {
+
+ Initial value
+
+
+
+
+
+ }
+ @case (DataType.TASK_REF) {
+
+ }
+ @case ((item.type === DataType.ENUMERATION || item.type === DataType.ENUMERATION_MAP) ? item.type : '') {
+
+ Initial value
+
+ None
+
+ {{ opt.value?.value }}
+
+
+
+ }
+ @case ((item.type === DataType.MULTICHOICE || item.type === DataType.MULTICHOICE_MAP) ? item.type : '') {
+
+ Initial value
+
+
+ {{ opt.value?.value }}
+
+
+
+ }
+ @default {
+
+ Initial value
+
+
+ }
+ }
+
@@ -310,21 +368,12 @@
Options Init
-
+
-
- Is Options Init dynamic?
-
-
-
-
-
-
diff --git a/src/app/modeler/data-mode/data-detail/data-detail.component.ts b/src/app/modeler/data-mode/data-detail/data-detail.component.ts
index 792aaa3..dc4f66e 100644
--- a/src/app/modeler/data-mode/data-detail/data-detail.component.ts
+++ b/src/app/modeler/data-mode/data-detail/data-detail.component.ts
@@ -1,28 +1,37 @@
+import {CdkDragDrop, moveItemInArray} from '@angular/cdk/drag-drop';
import {Component, OnDestroy} from '@angular/core';
-import {DataMasterDetailService} from '../data-master-detail.service';
+import {FormControl} from '@angular/forms';
+import {MatAutocompleteSelectedEvent} from '@angular/material/autocomplete';
+import {MatDialog} from '@angular/material/dialog';
+import {Router} from '@angular/router';
+import {EnumerationFieldValue} from '@netgrif/components-core';
import {
- Component as PetriflowComponent,
- DataType,
- DataVariable, Expression, I18nString,
- I18nWithDynamic,
- Option,
- Property,
- Validation
+ Component as PetriflowComponent,
+ DataType,
+ DataVariable,
+ Expression,
+ I18nString,
+ I18nWithDynamic,
+ Option,
+ Property,
+ Validation,
} from '@netgrif/petriflow';
-import {MatDialog} from '@angular/material/dialog';
+import {Observable} from 'rxjs';
+import {map, startWith, tap} from 'rxjs/operators';
import {DialogRefactorComponent} from '../../../dialogs/dialog-refactor/dialog-refactor.component';
-import {FormControl} from '@angular/forms';
import {DataFieldUtils} from '../../../form-builder/data-field-utils';
-import {CdkDragDrop, moveItemInArray} from '@angular/cdk/drag-drop';
-import {EnumerationFieldValue} from '@netgrif/components-core';
-import {ModelService} from '../../services/model/model.service';
-import {Router} from '@angular/router';
-import {ActionsModeService} from '../../actions-mode/actions-mode.service';
+import {
+ ComponentDef,
+ DataRefDef,
+ FieldListService,
+ PropertyDef,
+} from '../../../form-builder/field-list/field-list.service';
import {ActionsMasterDetailService} from '../../actions-mode/actions-master-detail.setvice';
-import {HistoryService} from '../../services/history/history.service';
-import {Observable} from 'rxjs';
-import {map, startWith, tap} from 'rxjs/operators';
+import {ActionsModeService} from '../../actions-mode/actions-mode.service';
import {ModelerUtils} from '../../modeler-utils';
+import {HistoryService} from '../../services/history/history.service';
+import {ModelService} from '../../services/model/model.service';
+import {DataMasterDetailService} from '../data-master-detail.service';
export interface TypeArray {
viewValue: string;
@@ -43,6 +52,7 @@ export class DataDetailComponent implements OnDestroy {
counterEnumMap = 0;
formControlRef: FormControl;
+ componentNameFormCtrl: FormControl;
transitionOptions: Array
;
filteredOptions: Observable>;
typeArray: Array = [
@@ -71,6 +81,7 @@ export class DataDetailComponent implements OnDestroy {
public constructor(
private _masterService: DataMasterDetailService,
private _modelService: ModelService,
+ private _fieldListService: FieldListService,
private dialog: MatDialog,
private _router: Router,
private _actionMode: ActionsModeService,
@@ -78,6 +89,7 @@ export class DataDetailComponent implements OnDestroy {
private _historyService: HistoryService
) {
this.formControlRef = new FormControl();
+ this.componentNameFormCtrl = new FormControl();
this.transitionOptions = this.createTransOptions();
this._masterService.getSelected$().subscribe(obj => {
if (this.historyDataSave?.save) {
@@ -143,7 +155,7 @@ export class DataDetailComponent implements OnDestroy {
});
}
- setValue($event, variable: string, index?: number): void {
+ public setValue($event, variable: string, index?: number): void {
switch (variable) {
case 'id': {
this.item.id = $event.target.value;
@@ -186,9 +198,11 @@ export class DataDetailComponent implements OnDestroy {
case 'dynamic-init': {
const value = $event.source.checked;
if (this.item.init === undefined) {
- this.item.init = new I18nWithDynamic(value);
- } else {
- this.item.init.dynamic = value;
+ this.item.init = new I18nWithDynamic('');
+ }
+ this.item.init.dynamic = value;
+ if (value === true) {
+ this.item.inits = new Array();
}
break;
}
@@ -220,7 +234,12 @@ export class DataDetailComponent implements OnDestroy {
break;
}
case 'property_key': {
- this.item.component.properties[index].key = $event.target.value as string;
+ if ($event instanceof MatAutocompleteSelectedEvent) {
+ this.item.component.properties[index].key = $event.option.value as string;
+ this.setPropertyDefaultValue($event, index, this.item);
+ } else {
+ this.item.component.properties[index].key = $event.target.value as string;
+ }
break;
}
case 'property_value': {
@@ -231,6 +250,31 @@ export class DataDetailComponent implements OnDestroy {
this.historyDataSave.save = true;
}
+ setBooleanValue(event) {
+ this.item.init.value = event.checked.toString();
+ }
+
+ setNumberValue(event) {
+ this.item.init.value = event.target.value.toString();
+ }
+
+ formatDate(event) {
+ // TODO: NAB-326 better solution? date picker setting to store only date?
+ if (event.target.value) {
+ this.item.init.value = event.target.value.toISOString();
+ } else {
+ this.item.init.value = '';
+ }
+ }
+
+ formatDateTime(event) {
+ if (event.target.value) {
+ this.item.init.value = event.target.value.toISOString();
+ } else {
+ this.item.init.value = '';
+ }
+ }
+
removeSpecificAttributeOnChange() {
this.item.inits = [];
this.item.init.value = '';
@@ -364,4 +408,38 @@ export class DataDetailComponent implements OnDestroy {
trackByFn(index: any, item: any) {
return index;
}
+
+ get filteredComponents(): Array {
+ const componentDefs: DataRefDef = this._fieldListService.fieldListArray.find(type => type.type === this.item.type);
+ if (!componentDefs) {
+ return [];
+ }
+ return componentDefs.components.filter(def => def.name !== undefined && def.title.toLowerCase().includes(this.item.component.name));
+ }
+
+ public filteredProperties(dataVariable: DataVariable, propertyName: string): Array {
+ const componentDefs: DataRefDef = this._fieldListService.fieldListArray.find(type => type.type === dataVariable.type);
+ if (!componentDefs) {
+ return [];
+ }
+ const propertyDefs: ComponentDef = componentDefs.components.find(compDef => {
+ return (!dataVariable.component.name && !compDef.name) || (!!dataVariable.component.name && !!compDef.name && dataVariable.component.name === compDef.name);
+ });
+ if (!propertyDefs || !propertyDefs.properties) {
+ return [];
+ }
+ const existingProperties = dataVariable.component.properties.map(compProperty => compProperty.key);
+ return propertyDefs.properties.filter(propDef => propDef.name.includes(propertyName) && !existingProperties.includes(propDef.name));
+ }
+
+ public setPropertyDefaultValue($event: MatAutocompleteSelectedEvent, index: number, dataVariable: DataVariable): void {
+ dataVariable.component.properties[index].value = this._fieldListService.fieldListArray
+ .find(type => type.type === dataVariable.type)?.components
+ .find(compDef => (!dataVariable.component.name && !compDef.name) || (!!dataVariable.component.name && !!compDef.name && dataVariable.component.name === compDef.name))?.properties
+ .find(propDef => propDef.name === $event.option.value).defaultValue;
+ }
+
+ protected readonly DataType = DataType;
+ protected readonly Boolean = Boolean;
+ protected readonly DataFieldUtils = DataFieldUtils;
}
diff --git a/src/app/modeler/data-mode/data-master-detail.service.ts b/src/app/modeler/data-mode/data-master-detail.service.ts
index 2d684c0..0b1d003 100644
--- a/src/app/modeler/data-mode/data-master-detail.service.ts
+++ b/src/app/modeler/data-mode/data-master-detail.service.ts
@@ -1,10 +1,10 @@
import {Injectable} from '@angular/core';
+import {Sort} from '@angular/material/sort';
import {DataType, DataVariable} from '@netgrif/petriflow';
-import {ModelService} from '../services/model/model.service';
import {AbstractMasterDetailService} from '../components/master-detail/abstract-master-detail.service';
-import {Sort} from '@angular/material/sort';
-import {HistoryService} from '../services/history/history.service';
import {ModelerConfig} from '../modeler-config';
+import {HistoryService} from '../services/history/history.service';
+import {ModelService} from '../services/model/model.service';
@Injectable({
providedIn: 'root'
diff --git a/src/app/modeler/data-mode/data-master-item/data-master-item.component.ts b/src/app/modeler/data-mode/data-master-item/data-master-item.component.ts
index 5ae1409..168b7fb 100644
--- a/src/app/modeler/data-mode/data-master-item/data-master-item.component.ts
+++ b/src/app/modeler/data-mode/data-master-item/data-master-item.component.ts
@@ -1,9 +1,9 @@
import {Component, Inject} from '@angular/core';
+import {MatDialog} from '@angular/material/dialog';
import {DataVariable} from '@netgrif/petriflow';
-import {MASTER_ITEM, MASTER_SERVICE} from '../../components/master-detail/main-master-item/master-injection-tokens';
-import {AbstractMasterDetailService} from '../../components/master-detail/abstract-master-detail.service';
import {DialogDeleteComponent} from '../../../dialogs/dialog-delete/dialog-delete.component';
-import {MatDialog} from '@angular/material/dialog';
+import {AbstractMasterDetailService} from '../../components/master-detail/abstract-master-detail.service';
+import {MASTER_ITEM, MASTER_SERVICE} from '../../components/master-detail/main-master-item/master-injection-tokens';
@Component({
selector: 'nab-data-master-item',
diff --git a/src/app/modeler/data-mode/data-mode.component.ts b/src/app/modeler/data-mode/data-mode.component.ts
index 31aea51..96ecc54 100644
--- a/src/app/modeler/data-mode/data-mode.component.ts
+++ b/src/app/modeler/data-mode/data-mode.component.ts
@@ -1,8 +1,8 @@
-import {Component, ViewChild} from '@angular/core';
-import {DataDetailComponent} from './data-detail/data-detail.component';
import {ComponentType} from '@angular/cdk/overlay';
-import {DataMasterItemComponent} from './data-master-item/data-master-item.component';
+import {Component} from '@angular/core';
+import {DataDetailComponent} from './data-detail/data-detail.component';
import {DataMasterDetailService} from './data-master-detail.service';
+import {DataMasterItemComponent} from './data-master-item/data-master-item.component';
export interface TypeArray {
viewValue: string;
diff --git a/src/app/modeler/data-mode/data-mode.service.ts b/src/app/modeler/data-mode/data-mode.service.ts
index fbbb5b3..4e74bd2 100644
--- a/src/app/modeler/data-mode/data-mode.service.ts
+++ b/src/app/modeler/data-mode/data-mode.service.ts
@@ -1,11 +1,11 @@
import {EventEmitter, Injectable, Injector} from '@angular/core';
-import {BehaviorSubject} from 'rxjs';
import {DataType, DataVariable} from '@netgrif/petriflow';
-import {ModeService} from '../control-panel/modes/mode-component/mode.service';
+import {BehaviorSubject} from 'rxjs';
import {TutorialService} from '../../tutorial/tutorial-service';
-import {Mode} from '../control-panel/modes/mode';
import {ControlPanelButton} from '../control-panel/control-panel-button';
import {ControlPanelIcon} from '../control-panel/control-panel-icon';
+import {Mode} from '../control-panel/modes/mode';
+import {ModeService} from '../control-panel/modes/mode-component/mode.service';
import {Tool} from '../control-panel/tools/tool';
@Injectable({
diff --git a/src/app/modeler/data-mode/task-ref-init-field/task-ref-init-field.component.html b/src/app/modeler/data-mode/task-ref-init-field/task-ref-init-field.component.html
new file mode 100644
index 0000000..72185ff
--- /dev/null
+++ b/src/app/modeler/data-mode/task-ref-init-field/task-ref-init-field.component.html
@@ -0,0 +1,26 @@
+
+ Initial value
+
+ @for (init of taskRef.inits; track $index) {
+
+ {{ prettyTask(init?.value) }}
+
+
+ }
+
+
+
+ @for (task of tasks; track task) {
+ {{ task.label?.value }} [{{ task.id }}]
+ }
+
+
diff --git a/src/app/modeler/data-mode/task-ref-init-field/task-ref-init-field.component.scss b/src/app/modeler/data-mode/task-ref-init-field/task-ref-init-field.component.scss
new file mode 100644
index 0000000..07b4686
--- /dev/null
+++ b/src/app/modeler/data-mode/task-ref-init-field/task-ref-init-field.component.scss
@@ -0,0 +1,3 @@
+.full-width {
+ width: 100%;
+}
diff --git a/src/app/modeler/data-mode/task-ref-init-field/task-ref-init-field.component.spec.ts b/src/app/modeler/data-mode/task-ref-init-field/task-ref-init-field.component.spec.ts
new file mode 100644
index 0000000..2978fd4
--- /dev/null
+++ b/src/app/modeler/data-mode/task-ref-init-field/task-ref-init-field.component.spec.ts
@@ -0,0 +1,23 @@
+import {ComponentFixture, TestBed} from '@angular/core/testing';
+
+import {TaskRefInitFieldComponent} from './task-ref-init-field.component';
+
+describe('TaskRefInitFieldComponent', () => {
+ let component: TaskRefInitFieldComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ imports: [TaskRefInitFieldComponent]
+ })
+ .compileComponents();
+
+ fixture = TestBed.createComponent(TaskRefInitFieldComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/modeler/data-mode/task-ref-init-field/task-ref-init-field.component.ts b/src/app/modeler/data-mode/task-ref-init-field/task-ref-init-field.component.ts
new file mode 100644
index 0000000..7a05142
--- /dev/null
+++ b/src/app/modeler/data-mode/task-ref-init-field/task-ref-init-field.component.ts
@@ -0,0 +1,71 @@
+import {Component, ElementRef, Input, ViewChild} from '@angular/core';
+import {FormControl} from '@angular/forms';
+import {MatAutocompleteSelectedEvent} from '@angular/material/autocomplete';
+import {MatChipInputEvent} from '@angular/material/chips';
+import {DataVariable, I18nWithDynamic, Transition} from '@netgrif/petriflow';
+import {ModelService} from '../../services/model/model.service';
+
+@Component({
+ selector: 'nab-task-ref-init-field',
+ templateUrl: './task-ref-init-field.component.html',
+ styleUrl: './task-ref-init-field.component.scss'
+})
+export class TaskRefInitFieldComponent {
+
+ @Input() taskRef: DataVariable;
+ taskRefFormControl: FormControl;
+ @ViewChild('taskRefInput') taskRefInput: ElementRef;
+
+ constructor(private _modelService: ModelService) {
+ this.taskRefFormControl = new FormControl('');
+ }
+
+ removeInit(index: number): void {
+ if (index >= 0) {
+ this.taskRef.inits.splice(index, 1);
+ }
+ }
+
+ addInit($event: MatChipInputEvent): void {
+ this.taskRef.inits.push(new I18nWithDynamic($event.value));
+
+ $event.chipInput!.clear();
+ this.taskRefFormControl.setValue(null);
+ }
+
+ selectInit($event: MatAutocompleteSelectedEvent): void {
+ this.taskRef.inits.push(new I18nWithDynamic($event.option.value));
+ this.taskRefInput.nativeElement.value = '';
+ this.taskRefFormControl.setValue(null);
+ }
+
+ get tasks(): Transition[] {
+ return this._modelService.model.getTransitions().filter(t => {
+ return !this.taskRef.inits.some(init => init.value === t.id);
+ }).sort((t1, t2) => {
+ if (!t1.label.value && !t2.label.value) {
+ return t1.id > t2.id ? 1 : -1;
+ }
+ if (!t1.label.value) {
+ return 1;
+ }
+ if (!t2.label.value) {
+ return -1;
+ }
+ return t1.label.value.localeCompare(t2.label.value);
+ });
+ }
+
+ prettyTask(taskId: string): string {
+ const task = this._modelService.model.getTransition(taskId);
+ if (task === undefined) {
+ return taskId;
+ }
+ const taskTitle = task.label.value ? `${task.label.value} ` : '';
+ return `${taskTitle} [${taskId}]`;
+ }
+
+ isReferenced(task: Transition): boolean {
+ return task.dataGroups.some(group => !!group.getDataRef(this.taskRef.id));
+ }
+}
diff --git a/src/app/modeler/edit-mode/context-menu/context-menu.component.spec.ts b/src/app/modeler/edit-mode/context-menu/context-menu.component.spec.ts
index 55a3414..67ec154 100644
--- a/src/app/modeler/edit-mode/context-menu/context-menu.component.spec.ts
+++ b/src/app/modeler/edit-mode/context-menu/context-menu.component.spec.ts
@@ -1,6 +1,6 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
+import {ComponentFixture, TestBed} from '@angular/core/testing';
-import { ContextMenuComponent } from './context-menu.component';
+import {ContextMenuComponent} from './context-menu.component';
describe('ContextMenuComponent', () => {
let component: ContextMenuComponent;
diff --git a/src/app/modeler/edit-mode/context-menu/context-menu.component.ts b/src/app/modeler/edit-mode/context-menu/context-menu.component.ts
index e19b5e7..c5af316 100644
--- a/src/app/modeler/edit-mode/context-menu/context-menu.component.ts
+++ b/src/app/modeler/edit-mode/context-menu/context-menu.component.ts
@@ -1,6 +1,6 @@
-import {Component, OnInit} from '@angular/core';
-import {MenuItem} from './menu-items/menu-item';
+import {Component} from '@angular/core';
import {EditModeService} from '../edit-mode.service';
+import {MenuItem} from './menu-items/menu-item';
@Component({
selector: 'nab-context-menu',
diff --git a/src/app/modeler/edit-mode/context-menu/menu-items/arc/delete-arc-menu-item.ts b/src/app/modeler/edit-mode/context-menu/menu-items/arc/delete-arc-menu-item.ts
index 90670ed..5535e8d 100644
--- a/src/app/modeler/edit-mode/context-menu/menu-items/arc/delete-arc-menu-item.ts
+++ b/src/app/modeler/edit-mode/context-menu/menu-items/arc/delete-arc-menu-item.ts
@@ -1,6 +1,6 @@
-import {DeleteMenuItem} from '../delete-menu-item';
import {CanvasArc} from '../../../domain/canvas-arc';
import {CanvasTool} from '../../../services/modes/canvas-tool';
+import {DeleteMenuItem} from '../delete-menu-item';
export class DeleteArcMenuItem extends DeleteMenuItem {
diff --git a/src/app/modeler/edit-mode/context-menu/menu-items/arc/delete-breakpoint-menu-item.ts b/src/app/modeler/edit-mode/context-menu/menu-items/arc/delete-breakpoint-menu-item.ts
index 17c480d..3425d95 100644
--- a/src/app/modeler/edit-mode/context-menu/menu-items/arc/delete-breakpoint-menu-item.ts
+++ b/src/app/modeler/edit-mode/context-menu/menu-items/arc/delete-breakpoint-menu-item.ts
@@ -1,6 +1,6 @@
-import {MenuItem} from '../menu-item';
import {CanvasArc} from '../../../domain/canvas-arc';
import {CanvasTool} from '../../../services/modes/canvas-tool';
+import {MenuItem} from '../menu-item';
export class DeleteBreakpointMenuItem extends MenuItem {
diff --git a/src/app/modeler/edit-mode/context-menu/menu-items/arc/edit-arc-menu-item.ts b/src/app/modeler/edit-mode/context-menu/menu-items/arc/edit-arc-menu-item.ts
index 3c92677..41abe1c 100644
--- a/src/app/modeler/edit-mode/context-menu/menu-items/arc/edit-arc-menu-item.ts
+++ b/src/app/modeler/edit-mode/context-menu/menu-items/arc/edit-arc-menu-item.ts
@@ -1,8 +1,8 @@
-import {MenuItem} from '../menu-item';
-import {CanvasTool} from '../../../services/modes/canvas-tool';
+import {ChangedArc} from '../../../../../dialogs/dialog-arc-edit/changed-arc';
import {ArcEditData, DialogArcEditComponent} from '../../../../../dialogs/dialog-arc-edit/dialog-arc-edit.component';
import {CanvasArc} from '../../../domain/canvas-arc';
-import {ChangedArc} from '../../../../../dialogs/dialog-arc-edit/changed-arc';
+import {CanvasTool} from '../../../services/modes/canvas-tool';
+import {MenuItem} from '../menu-item';
export class EditArcMenuItem extends MenuItem {
diff --git a/src/app/modeler/edit-mode/context-menu/menu-items/delete-selected-menu-item.ts b/src/app/modeler/edit-mode/context-menu/menu-items/delete-selected-menu-item.ts
index b77e920..4a7d993 100644
--- a/src/app/modeler/edit-mode/context-menu/menu-items/delete-selected-menu-item.ts
+++ b/src/app/modeler/edit-mode/context-menu/menu-items/delete-selected-menu-item.ts
@@ -1,5 +1,5 @@
-import {MenuItem} from './menu-item';
import {SelectTool} from '../../services/modes/select-tool';
+import {MenuItem} from './menu-item';
export class DeleteSelectedMenuItem extends MenuItem {
diff --git a/src/app/modeler/edit-mode/context-menu/menu-items/model/edit-model-menu-item.ts b/src/app/modeler/edit-mode/context-menu/menu-items/model/edit-model-menu-item.ts
index f03a1c9..7408d34 100644
--- a/src/app/modeler/edit-mode/context-menu/menu-items/model/edit-model-menu-item.ts
+++ b/src/app/modeler/edit-mode/context-menu/menu-items/model/edit-model-menu-item.ts
@@ -1,7 +1,7 @@
-import {MenuItem} from '../menu-item';
-import {CanvasTool} from '../../../services/modes/canvas-tool';
import {DialogModelEditComponent} from '../../../../../dialogs/dialog-model-edit/dialog-model-edit.component';
import {ModelChange} from '../../../../history-mode/model/model/model-change';
+import {CanvasTool} from '../../../services/modes/canvas-tool';
+import {MenuItem} from '../menu-item';
export class EditModelMenuItem extends MenuItem {
diff --git a/src/app/modeler/edit-mode/context-menu/menu-items/model/manage-model-permissions-menu-item.ts b/src/app/modeler/edit-mode/context-menu/menu-items/model/manage-model-permissions-menu-item.ts
index acfb057..a85578e 100644
--- a/src/app/modeler/edit-mode/context-menu/menu-items/model/manage-model-permissions-menu-item.ts
+++ b/src/app/modeler/edit-mode/context-menu/menu-items/model/manage-model-permissions-menu-item.ts
@@ -1,10 +1,10 @@
-import {MenuItem} from '../menu-item';
-import {CanvasTool} from '../../../services/modes/canvas-tool';
import {DataType} from '@netgrif/petriflow';
import {
- DialogManageRolesComponent,
- RoleRefType
+ DialogManageRolesComponent,
+ RoleRefType,
} from '../../../../../dialogs/dialog-manage-roles/dialog-manage-roles.component';
+import {CanvasTool} from '../../../services/modes/canvas-tool';
+import {MenuItem} from '../menu-item';
export class ManageModelPermissionsMenuItem extends MenuItem {
diff --git a/src/app/modeler/edit-mode/context-menu/menu-items/place/delete-place-menu-item.ts b/src/app/modeler/edit-mode/context-menu/menu-items/place/delete-place-menu-item.ts
index 73cc483..b79bb5e 100644
--- a/src/app/modeler/edit-mode/context-menu/menu-items/place/delete-place-menu-item.ts
+++ b/src/app/modeler/edit-mode/context-menu/menu-items/place/delete-place-menu-item.ts
@@ -1,10 +1,10 @@
-import {DeleteMenuItem} from '../delete-menu-item';
-import {CanvasPlace} from '../../../domain/canvas-place';
-import {CanvasTool} from '../../../services/modes/canvas-tool';
import {
- DialogPlaceRefDeleteComponent,
- PlaceRefDeleteData
+ DialogPlaceRefDeleteComponent,
+ PlaceRefDeleteData,
} from '../../../../../dialogs/dialog-place-ref-delete/dialog-place-ref-delete.component';
+import {CanvasPlace} from '../../../domain/canvas-place';
+import {CanvasTool} from '../../../services/modes/canvas-tool';
+import {DeleteMenuItem} from '../delete-menu-item';
export class DeletePlaceMenuItem extends DeleteMenuItem {
diff --git a/src/app/modeler/edit-mode/context-menu/menu-items/place/edit-place-menu-item.ts b/src/app/modeler/edit-mode/context-menu/menu-items/place/edit-place-menu-item.ts
index 0705814..ab8dffb 100644
--- a/src/app/modeler/edit-mode/context-menu/menu-items/place/edit-place-menu-item.ts
+++ b/src/app/modeler/edit-mode/context-menu/menu-items/place/edit-place-menu-item.ts
@@ -1,11 +1,11 @@
-import {MenuItem} from '../menu-item';
import {
- DialogPlaceEditComponent,
- PlaceEditData
+ DialogPlaceEditComponent,
+ PlaceEditData,
} from '../../../../../dialogs/dialog-place-edit/dialog-place-edit.component';
import {PlaceChange} from '../../../../history-mode/model/place/place-change';
import {CanvasPlace} from '../../../domain/canvas-place';
import {CanvasTool} from '../../../services/modes/canvas-tool';
+import {MenuItem} from '../menu-item';
export class EditPlaceMenuItem extends MenuItem {
diff --git a/src/app/modeler/edit-mode/context-menu/menu-items/select-arcs-menu-item.ts b/src/app/modeler/edit-mode/context-menu/menu-items/select-arcs-menu-item.ts
index 6402738..ba113d5 100644
--- a/src/app/modeler/edit-mode/context-menu/menu-items/select-arcs-menu-item.ts
+++ b/src/app/modeler/edit-mode/context-menu/menu-items/select-arcs-menu-item.ts
@@ -1,6 +1,6 @@
-import {MenuItem} from './menu-item';
-import {SelectTool} from '../../services/modes/select-tool';
import {CanvasNodeElement} from '../../domain/canvas-node-element';
+import {SelectTool} from '../../services/modes/select-tool';
+import {MenuItem} from './menu-item';
export class SelectArcsMenuItem extends MenuItem {
diff --git a/src/app/modeler/edit-mode/context-menu/menu-items/transition/delete-transition-menu-item.ts b/src/app/modeler/edit-mode/context-menu/menu-items/transition/delete-transition-menu-item.ts
index 52f4412..2f1d546 100644
--- a/src/app/modeler/edit-mode/context-menu/menu-items/transition/delete-transition-menu-item.ts
+++ b/src/app/modeler/edit-mode/context-menu/menu-items/transition/delete-transition-menu-item.ts
@@ -1,6 +1,6 @@
-import {DeleteMenuItem} from '../delete-menu-item';
-import {CanvasTool} from '../../../services/modes/canvas-tool';
import {CanvasTransition} from '../../../domain/canvas-transition';
+import {CanvasTool} from '../../../services/modes/canvas-tool';
+import {DeleteMenuItem} from '../delete-menu-item';
export class DeleteTransitionMenuItem extends DeleteMenuItem {
diff --git a/src/app/modeler/edit-mode/context-menu/menu-items/transition/edit-form-menu-item.ts b/src/app/modeler/edit-mode/context-menu/menu-items/transition/edit-form-menu-item.ts
index 2b41536..cdf2533 100644
--- a/src/app/modeler/edit-mode/context-menu/menu-items/transition/edit-form-menu-item.ts
+++ b/src/app/modeler/edit-mode/context-menu/menu-items/transition/edit-form-menu-item.ts
@@ -1,6 +1,6 @@
-import {MenuItem} from '../menu-item';
import {CanvasTransition} from '../../../domain/canvas-transition';
import {CanvasTool} from '../../../services/modes/canvas-tool';
+import {MenuItem} from '../menu-item';
export class EditFormMenuItem extends MenuItem {
diff --git a/src/app/modeler/edit-mode/context-menu/menu-items/transition/edit-transition-actions-menu-item.ts b/src/app/modeler/edit-mode/context-menu/menu-items/transition/edit-transition-actions-menu-item.ts
index 2b50e6a..5c8420c 100644
--- a/src/app/modeler/edit-mode/context-menu/menu-items/transition/edit-transition-actions-menu-item.ts
+++ b/src/app/modeler/edit-mode/context-menu/menu-items/transition/edit-transition-actions-menu-item.ts
@@ -1,6 +1,6 @@
-import {MenuItem} from '../menu-item';
import {CanvasTransition} from '../../../domain/canvas-transition';
import {CanvasTool} from '../../../services/modes/canvas-tool';
+import {MenuItem} from '../menu-item';
export class EditTransitionActionsMenuItem extends MenuItem {
diff --git a/src/app/modeler/edit-mode/context-menu/menu-items/transition/edit-transition-menu-item.ts b/src/app/modeler/edit-mode/context-menu/menu-items/transition/edit-transition-menu-item.ts
index 11d4481..60f5773 100644
--- a/src/app/modeler/edit-mode/context-menu/menu-items/transition/edit-transition-menu-item.ts
+++ b/src/app/modeler/edit-mode/context-menu/menu-items/transition/edit-transition-menu-item.ts
@@ -1,11 +1,11 @@
-import {MenuItem} from '../menu-item';
+import {ChangedTransition} from '../../../../../dialogs/dialog-transition-edit/changed-transition';
import {
- DialogTransitionEditComponent,
- TransitionEditData
+ DialogTransitionEditComponent,
+ TransitionEditData,
} from '../../../../../dialogs/dialog-transition-edit/dialog-transition-edit.component';
import {CanvasTransition} from '../../../domain/canvas-transition';
import {CanvasTool} from '../../../services/modes/canvas-tool';
-import {ChangedTransition} from '../../../../../dialogs/dialog-transition-edit/changed-transition';
+import {MenuItem} from '../menu-item';
export class EditTransitionMenuItem extends MenuItem {
diff --git a/src/app/modeler/edit-mode/context-menu/menu-items/transition/edit-transition-permissions-menu-item.ts b/src/app/modeler/edit-mode/context-menu/menu-items/transition/edit-transition-permissions-menu-item.ts
index e03b8d5..e77ade9 100644
--- a/src/app/modeler/edit-mode/context-menu/menu-items/transition/edit-transition-permissions-menu-item.ts
+++ b/src/app/modeler/edit-mode/context-menu/menu-items/transition/edit-transition-permissions-menu-item.ts
@@ -1,11 +1,11 @@
-import {MenuItem} from '../menu-item';
+import {DataType} from '@netgrif/petriflow';
import {
- DialogManageRolesComponent,
- RoleRefType
+ DialogManageRolesComponent,
+ RoleRefType,
} from '../../../../../dialogs/dialog-manage-roles/dialog-manage-roles.component';
-import {DataType} from '@netgrif/petriflow';
import {CanvasTransition} from '../../../domain/canvas-transition';
import {CanvasTool} from '../../../services/modes/canvas-tool';
+import {MenuItem} from '../menu-item';
export class EditTransitionPermissionsMenuItem extends MenuItem {
diff --git a/src/app/modeler/edit-mode/domain/arc-builders/arc-builder.ts b/src/app/modeler/edit-mode/domain/arc-builders/arc-builder.ts
index 241e1a6..fcb5bb8 100644
--- a/src/app/modeler/edit-mode/domain/arc-builders/arc-builder.ts
+++ b/src/app/modeler/edit-mode/domain/arc-builders/arc-builder.ts
@@ -1,6 +1,6 @@
-import {PetriflowArc} from '@netgrif/petriflow.svg/lib/svg-elements/petriflow-arc';
import {NodeElement as SvgNodeElement} from '@netgrif/petri.svg';
import {Arc, NodeElement} from '@netgrif/petriflow';
+import {PetriflowArc} from '@netgrif/petriflow.svg/lib/svg-elements/petriflow-arc';
import {Identifiable} from '../identifiable';
export abstract class ArcBuilder, U extends Arc> extends Identifiable {
diff --git a/src/app/modeler/edit-mode/domain/arc-builders/arc-factory.service.ts b/src/app/modeler/edit-mode/domain/arc-builders/arc-factory.service.ts
index 70ec3d2..be1ff39 100644
--- a/src/app/modeler/edit-mode/domain/arc-builders/arc-factory.service.ts
+++ b/src/app/modeler/edit-mode/domain/arc-builders/arc-factory.service.ts
@@ -1,14 +1,14 @@
import {Injectable} from '@angular/core';
-import {InhibitorArcBuilder} from './inhibitor-arc-builder';
+import {NodeElement as SvgNodeElement} from '@netgrif/petri.svg';
import {Arc, ArcType, NodeElement} from '@netgrif/petriflow';
-import {ReadArcBuilder} from './read-arc-builder';
+import {PetriflowArc} from '@netgrif/petriflow.svg';
import {AbstractRegistry} from '../../../abstract-registry';
import {ArcBuilder} from './arc-builder';
-import {ResetArcBuilder} from './reset-arc-builder';
+import {InhibitorArcBuilder} from './inhibitor-arc-builder';
+import {ReadArcBuilder} from './read-arc-builder';
import {RegularPTArcBuilder} from './regular-p-t-arc-builder';
-import {PetriflowArc} from '@netgrif/petriflow.svg';
import {RegularTPArcBuilder} from './regular-tparc-builder';
-import {NodeElement as SvgNodeElement} from '@netgrif/petri.svg';
+import {ResetArcBuilder} from './reset-arc-builder';
@Injectable({
providedIn: 'root'
diff --git a/src/app/modeler/edit-mode/domain/arc-builders/inhibitor-arc-builder.ts b/src/app/modeler/edit-mode/domain/arc-builders/inhibitor-arc-builder.ts
index 628d735..188d3f5 100644
--- a/src/app/modeler/edit-mode/domain/arc-builders/inhibitor-arc-builder.ts
+++ b/src/app/modeler/edit-mode/domain/arc-builders/inhibitor-arc-builder.ts
@@ -1,7 +1,7 @@
-import {ArcBuilder} from './arc-builder';
-import {PetriflowInhibitorArc} from '@netgrif/petriflow.svg';
import {InhibitorArc as SvgInhibitorArc, Place as SvgPlace, Transition as SvgTransition} from '@netgrif/petri.svg';
import {InhibitorArc, Place, Transition} from '@netgrif/petriflow';
+import {PetriflowInhibitorArc} from '@netgrif/petriflow.svg';
+import {ArcBuilder} from './arc-builder';
export class InhibitorArcBuilder extends ArcBuilder {
diff --git a/src/app/modeler/edit-mode/domain/arc-builders/read-arc-builder.ts b/src/app/modeler/edit-mode/domain/arc-builders/read-arc-builder.ts
index 80fc10f..a625ea6 100644
--- a/src/app/modeler/edit-mode/domain/arc-builders/read-arc-builder.ts
+++ b/src/app/modeler/edit-mode/domain/arc-builders/read-arc-builder.ts
@@ -1,7 +1,7 @@
-import {ArcBuilder} from './arc-builder';
-import {PetriflowReadArc} from '@netgrif/petriflow.svg';
-import {Place, ReadArc, Transition} from '@netgrif/petriflow';
import {Place as SvgPlace, ReadArc as SvgReadArc, Transition as SvgTransition} from '@netgrif/petri.svg';
+import {Place, ReadArc, Transition} from '@netgrif/petriflow';
+import {PetriflowReadArc} from '@netgrif/petriflow.svg';
+import {ArcBuilder} from './arc-builder';
export class ReadArcBuilder extends ArcBuilder {
diff --git a/src/app/modeler/edit-mode/domain/arc-builders/regular-p-t-arc-builder.ts b/src/app/modeler/edit-mode/domain/arc-builders/regular-p-t-arc-builder.ts
index 3199162..46e26c8 100644
--- a/src/app/modeler/edit-mode/domain/arc-builders/regular-p-t-arc-builder.ts
+++ b/src/app/modeler/edit-mode/domain/arc-builders/regular-p-t-arc-builder.ts
@@ -1,11 +1,11 @@
-import {ArcBuilder} from './arc-builder';
-import {PetriflowPlaceTransitionArc} from '@netgrif/petriflow.svg';
-import {Place, RegularPlaceTransitionArc, Transition} from '@netgrif/petriflow';
import {
- Place as SvgPlace,
- RegularPlaceTransitionArc as SvgRegularPlaceTransitionArc,
- Transition as SvgTransition
+ Place as SvgPlace,
+ RegularPlaceTransitionArc as SvgRegularPlaceTransitionArc,
+ Transition as SvgTransition,
} from '@netgrif/petri.svg';
+import {Place, RegularPlaceTransitionArc, Transition} from '@netgrif/petriflow';
+import {PetriflowPlaceTransitionArc} from '@netgrif/petriflow.svg';
+import {ArcBuilder} from './arc-builder';
export class RegularPTArcBuilder extends ArcBuilder {
diff --git a/src/app/modeler/edit-mode/domain/arc-builders/regular-tparc-builder.ts b/src/app/modeler/edit-mode/domain/arc-builders/regular-tparc-builder.ts
index 55a5f94..fa012a8 100644
--- a/src/app/modeler/edit-mode/domain/arc-builders/regular-tparc-builder.ts
+++ b/src/app/modeler/edit-mode/domain/arc-builders/regular-tparc-builder.ts
@@ -1,11 +1,11 @@
-import {ArcBuilder} from './arc-builder';
-import {PetriflowTransitionPlaceArc} from '@netgrif/petriflow.svg';
-import {Place, RegularTransitionPlaceArc, Transition} from '@netgrif/petriflow';
import {
- Place as SvgPlace,
- RegularTransitionPlaceArc as SvgRegularTransitionPlaceArc,
- Transition as SvgTransition
+ Place as SvgPlace,
+ RegularTransitionPlaceArc as SvgRegularTransitionPlaceArc,
+ Transition as SvgTransition,
} from '@netgrif/petri.svg';
+import {Place, RegularTransitionPlaceArc, Transition} from '@netgrif/petriflow';
+import {PetriflowTransitionPlaceArc} from '@netgrif/petriflow.svg';
+import {ArcBuilder} from './arc-builder';
export class RegularTPArcBuilder extends ArcBuilder {
diff --git a/src/app/modeler/edit-mode/domain/arc-builders/reset-arc-builder.ts b/src/app/modeler/edit-mode/domain/arc-builders/reset-arc-builder.ts
index 7cade7a..be7c2ee 100644
--- a/src/app/modeler/edit-mode/domain/arc-builders/reset-arc-builder.ts
+++ b/src/app/modeler/edit-mode/domain/arc-builders/reset-arc-builder.ts
@@ -1,7 +1,7 @@
-import {PetriflowResetArc} from '@netgrif/petriflow.svg';
+import {Place as SvgPlace, ResetArc as SvgResetArc, Transition as SvgTransition} from '@netgrif/petri.svg';
import {Place, ResetArc, Transition} from '@netgrif/petriflow';
+import {PetriflowResetArc} from '@netgrif/petriflow.svg';
import {ArcBuilder} from './arc-builder';
-import {Place as SvgPlace, ResetArc as SvgResetArc, Transition as SvgTransition} from '@netgrif/petri.svg';
export class ResetArcBuilder extends ArcBuilder {
diff --git a/src/app/modeler/edit-mode/domain/canvas-arc.ts b/src/app/modeler/edit-mode/domain/canvas-arc.ts
index c95a937..5c337b0 100644
--- a/src/app/modeler/edit-mode/domain/canvas-arc.ts
+++ b/src/app/modeler/edit-mode/domain/canvas-arc.ts
@@ -1,6 +1,6 @@
-import {PetriflowArc} from '@netgrif/petriflow.svg';
-import {Arc, NodeElement} from '@netgrif/petriflow';
import {Arc as SvgArc} from '@netgrif/petri.svg';
+import {Arc, NodeElement} from '@netgrif/petriflow';
+import {PetriflowArc} from '@netgrif/petriflow.svg';
import {ModelerConfig} from '../../modeler-config';
import {CanvasObject} from './canvas-object';
diff --git a/src/app/modeler/edit-mode/domain/canvas-element-collection.ts b/src/app/modeler/edit-mode/domain/canvas-element-collection.ts
index f98d76c..898392d 100644
--- a/src/app/modeler/edit-mode/domain/canvas-element-collection.ts
+++ b/src/app/modeler/edit-mode/domain/canvas-element-collection.ts
@@ -1,11 +1,11 @@
-import {CanvasPlace} from './canvas-place';
-import {CanvasTransition} from './canvas-transition';
-import {CanvasArc} from './canvas-arc';
-import {CanvasNodeElement} from './canvas-node-element';
import {NodeElement} from '@netgrif/petriflow';
import {PetriflowNode} from '@netgrif/petriflow.svg';
-import {CanvasObject} from './canvas-object';
import {PetriflowCanvasElement} from '@netgrif/petriflow.svg/lib/svg-elements/petriflow-canvas-element';
+import {CanvasArc} from './canvas-arc';
+import {CanvasNodeElement} from './canvas-node-element';
+import {CanvasObject} from './canvas-object';
+import {CanvasPlace} from './canvas-place';
+import {CanvasTransition} from './canvas-transition';
export class CanvasElementCollection {
diff --git a/src/app/modeler/edit-mode/domain/canvas-node-element.ts b/src/app/modeler/edit-mode/domain/canvas-node-element.ts
index 4fd4fdf..a1438bc 100644
--- a/src/app/modeler/edit-mode/domain/canvas-node-element.ts
+++ b/src/app/modeler/edit-mode/domain/canvas-node-element.ts
@@ -19,4 +19,10 @@ export abstract class CanvasNodeElement{
diff --git a/src/app/modeler/edit-mode/edit-mode.component.spec.ts b/src/app/modeler/edit-mode/edit-mode.component.spec.ts
index 0b85bed..e12b1a3 100644
--- a/src/app/modeler/edit-mode/edit-mode.component.spec.ts
+++ b/src/app/modeler/edit-mode/edit-mode.component.spec.ts
@@ -1,6 +1,6 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
+import {ComponentFixture, TestBed} from '@angular/core/testing';
-import { EditModeComponent } from './edit-mode.component';
+import {EditModeComponent} from './edit-mode.component';
describe('BpmnModeComponent', () => {
let component: EditModeComponent;
diff --git a/src/app/modeler/edit-mode/edit-mode.component.ts b/src/app/modeler/edit-mode/edit-mode.component.ts
index 2430ee6..25311ef 100644
--- a/src/app/modeler/edit-mode/edit-mode.component.ts
+++ b/src/app/modeler/edit-mode/edit-mode.component.ts
@@ -1,13 +1,13 @@
-import {AfterViewInit, Component, ElementRef, OnDestroy, ViewChild} from '@angular/core';
+import {AfterViewInit, Component, ElementRef, HostListener, OnDestroy, ViewChild} from '@angular/core';
import {MatDialog} from '@angular/material/dialog';
import {NgxDropzoneChangeEvent} from 'ngx-dropzone';
import {ModelImportService} from '../model-import-service';
-import {EditModeService} from './edit-mode.service';
+import {ModelerUtils} from '../modeler-utils';
+import {HistoryService} from '../services/history/history.service';
import {ModelService} from '../services/model/model.service';
-import {ContextMenuComponent} from './context-menu/context-menu.component';
import {ContextMenu} from './context-menu/context-menu';
-import {HistoryService} from '../services/history/history.service';
-import {ModelerUtils} from '../modeler-utils';
+import {ContextMenuComponent} from './context-menu/context-menu.component';
+import {EditModeService} from './edit-mode.service';
@Component({
selector: 'nab-edit-mode',
@@ -28,6 +28,12 @@ export class EditModeComponent implements AfterViewInit, OnDestroy {
) {
}
+ @HostListener('contextmenu', ['$event'])
+ onRightClick(event: MouseEvent) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+
ngAfterViewInit() {
ModelerUtils.clearSelection();
this._editModeService.contextMenuItems.subscribe(menu => {
diff --git a/src/app/modeler/edit-mode/edit-mode.service.ts b/src/app/modeler/edit-mode/edit-mode.service.ts
index fd6fcc2..e8b57b2 100644
--- a/src/app/modeler/edit-mode/edit-mode.service.ts
+++ b/src/app/modeler/edit-mode/edit-mode.service.ts
@@ -1,46 +1,46 @@
import {Injectable, Injector} from '@angular/core';
+import {MatDialog} from '@angular/material/dialog';
+import {Router} from '@angular/router';
+import {CanvasConfiguration} from '@netgrif/petri.svg';
+import {Arc, ArcType, NodeElement, Place, Transition} from '@netgrif/petriflow';
+import {PetriflowCanvasService, PetriflowNode} from '@netgrif/petriflow.svg';
+import {PanzoomOptions} from '@panzoom/panzoom';
+import {BehaviorSubject} from 'rxjs';
+import {ChangedArc} from '../../dialogs/dialog-arc-edit/changed-arc';
+import {ChangedTransition} from '../../dialogs/dialog-transition-edit/changed-transition';
import {TutorialService} from '../../tutorial/tutorial-service';
-import {Mode} from '../control-panel/modes/mode';
+import {ActionsMasterDetailService} from '../actions-mode/actions-master-detail.setvice';
+import {ActionsModeService} from '../actions-mode/actions-mode.service';
import {ControlPanelButton} from '../control-panel/control-panel-button';
-import {ToolGroup} from '../control-panel/tools/tool-group';
import {ControlPanelIcon} from '../control-panel/control-panel-icon';
-import {CanvasTool} from './services/modes/canvas-tool';
-import {ClearModelTool} from './services/modes/clear-model-tool';
-import {GridTool} from './services/modes/grid-tool';
-import {SwitchLabelTool} from './services/modes/switch-label-tool';
-import {CanvasConfiguration} from '@netgrif/petri.svg';
-import {PetriflowCanvasService, PetriflowNode} from '@netgrif/petriflow.svg';
-import {CanvasPlace} from './domain/canvas-place';
-import {CanvasArc} from './domain/canvas-arc';
-import {Arc, ArcType, NodeElement, Place, Transition} from '@netgrif/petriflow';
-import {CanvasTransition} from './domain/canvas-transition';
-import {MatDialog} from '@angular/material/dialog';
+import {Mode} from '../control-panel/modes/mode';
+import {ToolGroup} from '../control-panel/tools/tool-group';
import {PlaceChange} from '../history-mode/model/place/place-change';
-import {ChangedArc} from '../../dialogs/dialog-arc-edit/changed-arc';
-import {ArcFactory} from './domain/arc-builders/arc-factory.service';
-import {BehaviorSubject} from 'rxjs';
-import {ContextMenu} from './context-menu/context-menu';
import {ModelerConfig} from '../modeler-config';
-import {ModelService} from '../services/model/model.service';
-import {ChangedTransition} from '../../dialogs/dialog-transition-edit/changed-transition';
+import {SelectedTransitionService} from '../selected-transition.service';
import {CanvasModeService} from '../services/canvas/canvas-mode-service';
-import {ResetPositionAndZoomTool} from './services/modes/reset-position-and-zoom-tool';
-import {RemoveTokenTool} from './services/modes/remove-token-tool';
+import {HistoryService} from '../services/history/history.service';
+import {ModelService} from '../services/model/model.service';
+import {ContextMenu} from './context-menu/context-menu';
+import {ArcFactory} from './domain/arc-builders/arc-factory.service';
+import {CanvasArc} from './domain/canvas-arc';
+import {CanvasPlace} from './domain/canvas-place';
+import {CanvasTransition} from './domain/canvas-transition';
import {AddTokenTool} from './services/modes/add-token-tool';
+import {CanvasTool} from './services/modes/canvas-tool';
+import {ClearModelTool} from './services/modes/clear-model-tool';
+import {CreateInhibitorArcTool} from './services/modes/create-inhibitor-arc-tools';
import {CreatePlaceTool} from './services/modes/create-place-tool';
+import {CreateReadArcTool} from './services/modes/create-read-arc-tool';
+import {CreateRegularArcTool} from './services/modes/create-regular-arc-tool';
+import {CreateResetArcTool} from './services/modes/create-reset-arc-tool';
import {CreateTransitionTool} from './services/modes/create-transition-tool';
+import {GridTool} from './services/modes/grid-tool';
import {QuickDrawTool} from './services/modes/quick-draw-tool';
+import {RemoveTokenTool} from './services/modes/remove-token-tool';
+import {ResetPositionAndZoomTool} from './services/modes/reset-position-and-zoom-tool';
import {SelectTool} from './services/modes/select-tool';
-import {CreateRegularArcTool} from './services/modes/create-regular-arc-tool';
-import {CreateResetArcTool} from './services/modes/create-reset-arc-tool';
-import {CreateInhibitorArcTool} from './services/modes/create-inhibitor-arc-tools';
-import {CreateReadArcTool} from './services/modes/create-read-arc-tool';
-import {SelectedTransitionService} from '../selected-transition.service';
-import {Router} from '@angular/router';
-import {HistoryService} from '../services/history/history.service';
-import {PanzoomOptions} from '@panzoom/panzoom';
-import {ActionsModeService} from '../actions-mode/actions-mode.service';
-import {ActionsMasterDetailService} from '../actions-mode/actions-master-detail.setvice';
+import {SwitchLabelTool} from './services/modes/switch-label-tool';
@Injectable({
providedIn: 'root'
diff --git a/src/app/modeler/edit-mode/services/modes/add-token-tool.ts b/src/app/modeler/edit-mode/services/modes/add-token-tool.ts
index 17fb93a..9b36a4e 100644
--- a/src/app/modeler/edit-mode/services/modes/add-token-tool.ts
+++ b/src/app/modeler/edit-mode/services/modes/add-token-tool.ts
@@ -1,15 +1,15 @@
-import {CanvasTool} from './canvas-tool';
-import {CanvasPlace} from '../../domain/canvas-place';
-import {ControlPanelButton} from '../../../control-panel/control-panel-button';
-import {ControlPanelIcon} from 'src/app/modeler/control-panel/control-panel-icon';
-import {ModelService} from '../../../services/model/model.service';
import {MatDialog} from '@angular/material/dialog';
-import {EditModeService} from '../../edit-mode.service';
import {Router} from '@angular/router';
-import {SelectedTransitionService} from '../../../selected-transition.service';
-import {ActionsModeService} from '../../../actions-mode/actions-mode.service';
+import {ControlPanelIcon} from 'src/app/modeler/control-panel/control-panel-icon';
import {ActionsMasterDetailService} from '../../../actions-mode/actions-master-detail.setvice';
+import {ActionsModeService} from '../../../actions-mode/actions-mode.service';
+import {ControlPanelButton} from '../../../control-panel/control-panel-button';
import {PlaceChange} from '../../../history-mode/model/place/place-change';
+import {SelectedTransitionService} from '../../../selected-transition.service';
+import {ModelService} from '../../../services/model/model.service';
+import {CanvasPlace} from '../../domain/canvas-place';
+import {EditModeService} from '../../edit-mode.service';
+import {CanvasTool} from './canvas-tool';
export class AddTokenTool extends CanvasTool {
diff --git a/src/app/modeler/edit-mode/services/modes/canvas-tool.ts b/src/app/modeler/edit-mode/services/modes/canvas-tool.ts
index ff32a36..96c76bd 100644
--- a/src/app/modeler/edit-mode/services/modes/canvas-tool.ts
+++ b/src/app/modeler/edit-mode/services/modes/canvas-tool.ts
@@ -1,38 +1,37 @@
-import {CanvasElementCollection} from '../../domain/canvas-element-collection';
-import {PetriflowCanvasService} from '@netgrif/petriflow.svg';
-import {EditModeService} from '../../edit-mode.service';
import {MatDialog} from '@angular/material/dialog';
-import {ModelService} from '../../../services/model/model.service';
-import {CanvasListenerTool} from '../../../services/canvas/canvas-listener-tool';
-import {ControlPanelButton} from '../../../control-panel/control-panel-button';
import {Router} from '@angular/router';
+import {PetriflowCanvasService} from '@netgrif/petriflow.svg';
+import {ActionsMasterDetailService} from '../../../actions-mode/actions-master-detail.setvice';
+import {ActionsModeService} from '../../../actions-mode/actions-mode.service';
+import {ControlPanelButton} from '../../../control-panel/control-panel-button';
import {SelectedTransitionService} from '../../../selected-transition.service';
-import {Hotkey} from './domain/hotkey';
-import {ComponentType} from '@angular/cdk/overlay';
-import {CanvasTransition} from '../../domain/canvas-transition';
-import {CanvasPlace} from '../../domain/canvas-place';
+import {CanvasListenerTool} from '../../../services/canvas/canvas-listener-tool';
+import {ContextMenuInterruptionError} from '../../../services/canvas/listeners/context-menu-interruption-error';
+import {HistoryService} from '../../../services/history/history.service';
+import {ModelService} from '../../../services/model/model.service';
import {ContextMenu} from '../../context-menu/context-menu';
+import {DeleteArcMenuItem} from '../../context-menu/menu-items/arc/delete-arc-menu-item';
+import {DeleteBreakpointMenuItem} from '../../context-menu/menu-items/arc/delete-breakpoint-menu-item';
+import {EditArcMenuItem} from '../../context-menu/menu-items/arc/edit-arc-menu-item';
+import {EditModelMenuItem} from '../../context-menu/menu-items/model/edit-model-menu-item';
+import {ManageModelPermissionsMenuItem} from '../../context-menu/menu-items/model/manage-model-permissions-menu-item';
+import {DeletePlaceMenuItem} from '../../context-menu/menu-items/place/delete-place-menu-item';
import {EditPlaceMenuItem} from '../../context-menu/menu-items/place/edit-place-menu-item';
-import {EditTransitionMenuItem} from '../../context-menu/menu-items/transition/edit-transition-menu-item';
+import {DeleteTransitionMenuItem} from '../../context-menu/menu-items/transition/delete-transition-menu-item';
import {EditFormMenuItem} from '../../context-menu/menu-items/transition/edit-form-menu-item';
import {
- EditTransitionPermissionsMenuItem
-} from '../../context-menu/menu-items/transition/edit-transition-permissions-menu-item';
-import {
- EditTransitionActionsMenuItem
+ EditTransitionActionsMenuItem,
} from '../../context-menu/menu-items/transition/edit-transition-actions-menu-item';
+import {EditTransitionMenuItem} from '../../context-menu/menu-items/transition/edit-transition-menu-item';
+import {
+ EditTransitionPermissionsMenuItem,
+} from '../../context-menu/menu-items/transition/edit-transition-permissions-menu-item';
import {CanvasArc} from '../../domain/canvas-arc';
-import {EditArcMenuItem} from '../../context-menu/menu-items/arc/edit-arc-menu-item';
-import {DeleteBreakpointMenuItem} from '../../context-menu/menu-items/arc/delete-breakpoint-menu-item';
-import {DeleteTransitionMenuItem} from '../../context-menu/menu-items/transition/delete-transition-menu-item';
-import {DeleteArcMenuItem} from '../../context-menu/menu-items/arc/delete-arc-menu-item';
-import {EditModelMenuItem} from '../../context-menu/menu-items/model/edit-model-menu-item';
-import {ManageModelPermissionsMenuItem} from '../../context-menu/menu-items/model/manage-model-permissions-menu-item';
-import {DeletePlaceMenuItem} from '../../context-menu/menu-items/place/delete-place-menu-item';
-import {ContextMenuInterruptionError} from '../../../services/canvas/listeners/context-menu-interruption-error';
-import {HistoryService} from '../../../services/history/history.service';
-import {ActionsModeService} from '../../../actions-mode/actions-mode.service';
-import {ActionsMasterDetailService} from '../../../actions-mode/actions-master-detail.setvice';
+import {CanvasElementCollection} from '../../domain/canvas-element-collection';
+import {CanvasPlace} from '../../domain/canvas-place';
+import {CanvasTransition} from '../../domain/canvas-transition';
+import {EditModeService} from '../../edit-mode.service';
+import {Hotkey} from './domain/hotkey';
export abstract class CanvasTool extends CanvasListenerTool {
@@ -118,16 +117,6 @@ export abstract class CanvasTool extends CanvasListenerTool {
this.closeContextMenu();
}
- openDialog(dialog: ComponentType, config: any, afterClose?: (value: any) => void): void {
- this.unbindKeys();
- this.dialog.open(dialog, config).afterClosed().subscribe(value => {
- if (afterClose) {
- afterClose(value);
- }
- this.bindKeys();
- });
- }
-
closeContextMenuOnClick(): void {
if (this.isContextMenuOpen()) {
this.closeContextMenu();
diff --git a/src/app/modeler/edit-mode/services/modes/clear-model-tool.ts b/src/app/modeler/edit-mode/services/modes/clear-model-tool.ts
index 58edaac..4ee8a92 100644
--- a/src/app/modeler/edit-mode/services/modes/clear-model-tool.ts
+++ b/src/app/modeler/edit-mode/services/modes/clear-model-tool.ts
@@ -1,14 +1,14 @@
+import {MatDialog} from '@angular/material/dialog';
+import {Router} from '@angular/router';
+import {DialogDeleteModelComponent} from '../../../../dialogs/dialog-delete-model/dialog-delete-model.component';
+import {ActionsMasterDetailService} from '../../../actions-mode/actions-master-detail.setvice';
+import {ActionsModeService} from '../../../actions-mode/actions-mode.service';
import {ControlPanelButton} from '../../../control-panel/control-panel-button';
import {ControlPanelIcon} from '../../../control-panel/control-panel-icon';
-import {DialogDeleteModelComponent} from '../../../../dialogs/dialog-delete-model/dialog-delete-model.component';
-import {CanvasTool} from './canvas-tool';
+import {SelectedTransitionService} from '../../../selected-transition.service';
import {ModelService} from '../../../services/model/model.service';
-import {MatDialog} from '@angular/material/dialog';
import {EditModeService} from '../../edit-mode.service';
-import {Router} from '@angular/router';
-import {SelectedTransitionService} from '../../../selected-transition.service';
-import {ActionsModeService} from '../../../actions-mode/actions-mode.service';
-import {ActionsMasterDetailService} from '../../../actions-mode/actions-master-detail.setvice';
+import {CanvasTool} from './canvas-tool';
export class ClearModelTool extends CanvasTool {
diff --git a/src/app/modeler/edit-mode/services/modes/create-arc-tool.ts b/src/app/modeler/edit-mode/services/modes/create-arc-tool.ts
index 3d17ed6..7a3c1b7 100644
--- a/src/app/modeler/edit-mode/services/modes/create-arc-tool.ts
+++ b/src/app/modeler/edit-mode/services/modes/create-arc-tool.ts
@@ -1,19 +1,19 @@
-import {CanvasNodeElement} from '../../domain/canvas-node-element';
+import {MatDialog} from '@angular/material/dialog';
+import {Router} from '@angular/router';
+import {NodeElement as SvgNodeElement} from '@netgrif/petri.svg';
import {ArcType, NodeElement} from '@netgrif/petriflow';
-import {NodeElement as SvgNodeElement} from '@netgrif/petri.svg'
import {PetriflowNode} from '@netgrif/petriflow.svg';
-import {CanvasTool} from './canvas-tool';
+import {ActionsMasterDetailService} from '../../../actions-mode/actions-master-detail.setvice';
+import {ActionsModeService} from '../../../actions-mode/actions-mode.service';
import {ControlPanelButton} from '../../../control-panel/control-panel-button';
-import {ModelService} from '../../../services/model/model.service';
-import {MatDialog} from '@angular/material/dialog';
-import {EditModeService} from '../../edit-mode.service';
-import {Router} from '@angular/router';
import {SelectedTransitionService} from '../../../selected-transition.service';
+import {ModelService} from '../../../services/model/model.service';
import {CanvasArc} from '../../domain/canvas-arc';
+import {CanvasNodeElement} from '../../domain/canvas-node-element';
import {CanvasPlace} from '../../domain/canvas-place';
import {CanvasTransition} from '../../domain/canvas-transition';
-import {ActionsModeService} from '../../../actions-mode/actions-mode.service';
-import {ActionsMasterDetailService} from '../../../actions-mode/actions-master-detail.setvice';
+import {EditModeService} from '../../edit-mode.service';
+import {CanvasTool} from './canvas-tool';
export abstract class CreateArcTool>> extends CanvasTool {
diff --git a/src/app/modeler/edit-mode/services/modes/create-inhibitor-arc-tools.ts b/src/app/modeler/edit-mode/services/modes/create-inhibitor-arc-tools.ts
index d6181e5..143ccd7 100644
--- a/src/app/modeler/edit-mode/services/modes/create-inhibitor-arc-tools.ts
+++ b/src/app/modeler/edit-mode/services/modes/create-inhibitor-arc-tools.ts
@@ -1,15 +1,15 @@
-import {ArcType} from '@netgrif/petriflow';
+import {MatDialog} from '@angular/material/dialog';
+import {Router} from '@angular/router';
import {InhibitorArc as SvgInhibitorArc} from '@netgrif/petri.svg';
+import {ArcType} from '@netgrif/petriflow';
+import {ActionsMasterDetailService} from '../../../actions-mode/actions-master-detail.setvice';
+import {ActionsModeService} from '../../../actions-mode/actions-mode.service';
import {ControlPanelButton} from '../../../control-panel/control-panel-button';
import {ControlPanelIcon} from '../../../control-panel/control-panel-icon';
-import {CreatePTArc} from './create-ptarc';
+import {SelectedTransitionService} from '../../../selected-transition.service';
import {ModelService} from '../../../services/model/model.service';
-import {MatDialog} from '@angular/material/dialog';
import {EditModeService} from '../../edit-mode.service';
-import {Router} from '@angular/router';
-import {SelectedTransitionService} from '../../../selected-transition.service';
-import {ActionsModeService} from '../../../actions-mode/actions-mode.service';
-import {ActionsMasterDetailService} from '../../../actions-mode/actions-master-detail.setvice';
+import {CreatePTArc} from './create-ptarc';
export class CreateInhibitorArcTool extends CreatePTArc {
diff --git a/src/app/modeler/edit-mode/services/modes/create-place-tool.ts b/src/app/modeler/edit-mode/services/modes/create-place-tool.ts
index 58fb391..1090e01 100644
--- a/src/app/modeler/edit-mode/services/modes/create-place-tool.ts
+++ b/src/app/modeler/edit-mode/services/modes/create-place-tool.ts
@@ -1,13 +1,13 @@
-import {CanvasTool} from './canvas-tool';
+import {MatDialog} from '@angular/material/dialog';
+import {Router} from '@angular/router';
+import {ActionsMasterDetailService} from '../../../actions-mode/actions-master-detail.setvice';
+import {ActionsModeService} from '../../../actions-mode/actions-mode.service';
import {ControlPanelButton} from '../../../control-panel/control-panel-button';
import {ControlPanelIcon} from '../../../control-panel/control-panel-icon';
+import {SelectedTransitionService} from '../../../selected-transition.service';
import {ModelService} from '../../../services/model/model.service';
-import {MatDialog} from '@angular/material/dialog';
import {EditModeService} from '../../edit-mode.service';
-import {Router} from '@angular/router';
-import {SelectedTransitionService} from '../../../selected-transition.service';
-import {ActionsModeService} from '../../../actions-mode/actions-mode.service';
-import {ActionsMasterDetailService} from '../../../actions-mode/actions-master-detail.setvice';
+import {CanvasTool} from './canvas-tool';
export class CreatePlaceTool extends CanvasTool {
diff --git a/src/app/modeler/edit-mode/services/modes/create-ptarc.ts b/src/app/modeler/edit-mode/services/modes/create-ptarc.ts
index cf7d206..a7da8ea 100644
--- a/src/app/modeler/edit-mode/services/modes/create-ptarc.ts
+++ b/src/app/modeler/edit-mode/services/modes/create-ptarc.ts
@@ -1,8 +1,8 @@
+import {ArcType} from '@netgrif/petriflow';
+import {CanvasArc} from '../../domain/canvas-arc';
import {CanvasPlace} from '../../domain/canvas-place';
import {CanvasTransition} from '../../domain/canvas-transition';
import {CreateArcTool} from './create-arc-tool';
-import {ArcType} from '@netgrif/petriflow';
-import {CanvasArc} from '../../domain/canvas-arc';
export abstract class CreatePTArc extends CreateArcTool {
diff --git a/src/app/modeler/edit-mode/services/modes/create-read-arc-tool.ts b/src/app/modeler/edit-mode/services/modes/create-read-arc-tool.ts
index 1a109f7..b6a4d78 100644
--- a/src/app/modeler/edit-mode/services/modes/create-read-arc-tool.ts
+++ b/src/app/modeler/edit-mode/services/modes/create-read-arc-tool.ts
@@ -1,15 +1,15 @@
-import {ControlPanelButton} from '../../../control-panel/control-panel-button';
-import {ControlPanelIcon} from '../../../control-panel/control-panel-icon';
+import {MatDialog} from '@angular/material/dialog';
+import {Router} from '@angular/router';
import {ReadArc as SvgReadArc} from '@netgrif/petri.svg';
import {ArcType} from '@netgrif/petriflow';
-import {CreatePTArc} from './create-ptarc';
+import {ActionsMasterDetailService} from '../../../actions-mode/actions-master-detail.setvice';
+import {ActionsModeService} from '../../../actions-mode/actions-mode.service';
+import {ControlPanelButton} from '../../../control-panel/control-panel-button';
+import {ControlPanelIcon} from '../../../control-panel/control-panel-icon';
+import {SelectedTransitionService} from '../../../selected-transition.service';
import {ModelService} from '../../../services/model/model.service';
-import {MatDialog} from '@angular/material/dialog';
import {EditModeService} from '../../edit-mode.service';
-import {Router} from '@angular/router';
-import {SelectedTransitionService} from '../../../selected-transition.service';
-import {ActionsModeService} from '../../../actions-mode/actions-mode.service';
-import {ActionsMasterDetailService} from '../../../actions-mode/actions-master-detail.setvice';
+import {CreatePTArc} from './create-ptarc';
export class CreateReadArcTool extends CreatePTArc {
diff --git a/src/app/modeler/edit-mode/services/modes/create-regular-arc-tool.ts b/src/app/modeler/edit-mode/services/modes/create-regular-arc-tool.ts
index 64912ef..f76653f 100644
--- a/src/app/modeler/edit-mode/services/modes/create-regular-arc-tool.ts
+++ b/src/app/modeler/edit-mode/services/modes/create-regular-arc-tool.ts
@@ -1,19 +1,18 @@
+import {MatDialog} from '@angular/material/dialog';
+import {Router} from '@angular/router';
+import {RegularTransitionPlaceArc as SvgArc} from '@netgrif/petri.svg';
+import {ArcType} from '@netgrif/petriflow';
+import {ActionsMasterDetailService} from '../../../actions-mode/actions-master-detail.setvice';
+import {ActionsModeService} from '../../../actions-mode/actions-mode.service';
import {ControlPanelButton} from '../../../control-panel/control-panel-button';
import {ControlPanelIcon} from '../../../control-panel/control-panel-icon';
-import {CreateArcTool} from './create-arc-tool';
+import {SelectedTransitionService} from '../../../selected-transition.service';
+import {ModelService} from '../../../services/model/model.service';
+import {CanvasArc} from '../../domain/canvas-arc';
import {CanvasPlace} from '../../domain/canvas-place';
import {CanvasTransition} from '../../domain/canvas-transition';
-import {RegularTransitionPlaceArc as SvgArc} from '@netgrif/petri.svg';
-import {CanvasArc} from '../../domain/canvas-arc';
-import {ModelService} from '../../../services/model/model.service';
-import {MatDialog} from '@angular/material/dialog';
import {EditModeService} from '../../edit-mode.service';
-import {Router} from '@angular/router';
-import {SelectedTransitionService} from '../../../selected-transition.service';
-import {ArcType} from '@netgrif/petriflow';
-import {Observable, of} from 'rxjs';
-import {ActionsModeService} from '../../../actions-mode/actions-mode.service';
-import {ActionsMasterDetailService} from '../../../actions-mode/actions-master-detail.setvice';
+import {CreateArcTool} from './create-arc-tool';
export class CreateRegularArcTool extends CreateArcTool {
diff --git a/src/app/modeler/edit-mode/services/modes/create-reset-arc-tool.ts b/src/app/modeler/edit-mode/services/modes/create-reset-arc-tool.ts
index 3547291..444de13 100644
--- a/src/app/modeler/edit-mode/services/modes/create-reset-arc-tool.ts
+++ b/src/app/modeler/edit-mode/services/modes/create-reset-arc-tool.ts
@@ -1,15 +1,15 @@
-import {ControlPanelIcon} from '../../../control-panel/control-panel-icon';
-import {ControlPanelButton} from '../../../control-panel/control-panel-button';
-import {CreatePTArc} from './create-ptarc';
-import {ArcType} from '@netgrif/petriflow';
-import {ResetArc as SvgResetArc} from '@netgrif/petri.svg';
-import {ModelService} from '../../../services/model/model.service';
import {MatDialog} from '@angular/material/dialog';
-import {EditModeService} from '../../edit-mode.service';
import {Router} from '@angular/router';
-import {SelectedTransitionService} from '../../../selected-transition.service';
-import {ActionsModeService} from '../../../actions-mode/actions-mode.service';
+import {ResetArc as SvgResetArc} from '@netgrif/petri.svg';
+import {ArcType} from '@netgrif/petriflow';
import {ActionsMasterDetailService} from '../../../actions-mode/actions-master-detail.setvice';
+import {ActionsModeService} from '../../../actions-mode/actions-mode.service';
+import {ControlPanelButton} from '../../../control-panel/control-panel-button';
+import {ControlPanelIcon} from '../../../control-panel/control-panel-icon';
+import {SelectedTransitionService} from '../../../selected-transition.service';
+import {ModelService} from '../../../services/model/model.service';
+import {EditModeService} from '../../edit-mode.service';
+import {CreatePTArc} from './create-ptarc';
export class CreateResetArcTool extends CreatePTArc {
diff --git a/src/app/modeler/edit-mode/services/modes/create-transition-tool.ts b/src/app/modeler/edit-mode/services/modes/create-transition-tool.ts
index 5ccc47e..9296309 100644
--- a/src/app/modeler/edit-mode/services/modes/create-transition-tool.ts
+++ b/src/app/modeler/edit-mode/services/modes/create-transition-tool.ts
@@ -1,13 +1,13 @@
-import {CanvasTool} from './canvas-tool';
+import {MatDialog} from '@angular/material/dialog';
+import {Router} from '@angular/router';
+import {ActionsMasterDetailService} from '../../../actions-mode/actions-master-detail.setvice';
+import {ActionsModeService} from '../../../actions-mode/actions-mode.service';
import {ControlPanelButton} from '../../../control-panel/control-panel-button';
import {ControlPanelIcon} from '../../../control-panel/control-panel-icon';
+import {SelectedTransitionService} from '../../../selected-transition.service';
import {ModelService} from '../../../services/model/model.service';
-import {MatDialog} from '@angular/material/dialog';
import {EditModeService} from '../../edit-mode.service';
-import {Router} from '@angular/router';
-import {SelectedTransitionService} from '../../../selected-transition.service';
-import {ActionsModeService} from '../../../actions-mode/actions-mode.service';
-import {ActionsMasterDetailService} from '../../../actions-mode/actions-master-detail.setvice';
+import {CanvasTool} from './canvas-tool';
export class CreateTransitionTool extends CanvasTool {
diff --git a/src/app/modeler/edit-mode/services/modes/grid-tool.ts b/src/app/modeler/edit-mode/services/modes/grid-tool.ts
index 5b58a92..76c733b 100644
--- a/src/app/modeler/edit-mode/services/modes/grid-tool.ts
+++ b/src/app/modeler/edit-mode/services/modes/grid-tool.ts
@@ -1,13 +1,13 @@
+import {MatDialog} from '@angular/material/dialog';
+import {Router} from '@angular/router';
+import {ActionsMasterDetailService} from '../../../actions-mode/actions-master-detail.setvice';
+import {ActionsModeService} from '../../../actions-mode/actions-mode.service';
import {ControlPanelButton} from '../../../control-panel/control-panel-button';
import {ControlPanelIcon} from '../../../control-panel/control-panel-icon';
-import {CanvasTool} from './canvas-tool';
+import {SelectedTransitionService} from '../../../selected-transition.service';
import {ModelService} from '../../../services/model/model.service';
-import {MatDialog} from '@angular/material/dialog';
import {EditModeService} from '../../edit-mode.service';
-import {Router} from '@angular/router';
-import {SelectedTransitionService} from '../../../selected-transition.service';
-import {ActionsModeService} from '../../../actions-mode/actions-mode.service';
-import {ActionsMasterDetailService} from '../../../actions-mode/actions-master-detail.setvice';
+import {CanvasTool} from './canvas-tool';
export class GridTool extends CanvasTool {
diff --git a/src/app/modeler/edit-mode/services/modes/quick-draw-tool.ts b/src/app/modeler/edit-mode/services/modes/quick-draw-tool.ts
index 7ad59a0..5809559 100644
--- a/src/app/modeler/edit-mode/services/modes/quick-draw-tool.ts
+++ b/src/app/modeler/edit-mode/services/modes/quick-draw-tool.ts
@@ -1,24 +1,24 @@
-import {CanvasTool} from './canvas-tool';
-import {ControlPanelButton} from '../../../control-panel/control-panel-button';
-import {ControlPanelIcon} from '../../../control-panel/control-panel-icon';
-import {CanvasPlace} from '../../domain/canvas-place';
-import {CanvasTransition} from '../../domain/canvas-transition';
+import {MatDialog} from '@angular/material/dialog';
+import {Router} from '@angular/router';
import {
- NodeElement as SvgNodeElement,
- RegularPlaceTransitionArc as SvgRegularPlaceTransitionArc,
- RegularTransitionPlaceArc as SvgRegularTransitionPlaceArc
+ NodeElement as SvgNodeElement,
+ RegularPlaceTransitionArc as SvgRegularPlaceTransitionArc,
+ RegularTransitionPlaceArc as SvgRegularTransitionPlaceArc,
} from '@netgrif/petri.svg';
-import {CanvasArc} from '../../domain/canvas-arc';
import {NodeElement} from '@netgrif/petriflow';
import {PetriflowNode} from '@netgrif/petriflow.svg';
+import {ActionsMasterDetailService} from '../../../actions-mode/actions-master-detail.setvice';
+import {ActionsModeService} from '../../../actions-mode/actions-mode.service';
+import {ControlPanelButton} from '../../../control-panel/control-panel-button';
+import {ControlPanelIcon} from '../../../control-panel/control-panel-icon';
+import {SelectedTransitionService} from '../../../selected-transition.service';
+import {ModelService} from '../../../services/model/model.service';
+import {CanvasArc} from '../../domain/canvas-arc';
import {CanvasNodeElement} from '../../domain/canvas-node-element';
-import {MatDialog} from '@angular/material/dialog';
+import {CanvasPlace} from '../../domain/canvas-place';
+import {CanvasTransition} from '../../domain/canvas-transition';
import {EditModeService} from '../../edit-mode.service';
-import {ModelService} from '../../../services/model/model.service';
-import {Router} from '@angular/router';
-import {SelectedTransitionService} from '../../../selected-transition.service';
-import {ActionsModeService} from '../../../actions-mode/actions-mode.service';
-import {ActionsMasterDetailService} from '../../../actions-mode/actions-master-detail.setvice';
+import {CanvasTool} from './canvas-tool';
enum Step {
PLACE,
diff --git a/src/app/modeler/edit-mode/services/modes/remove-token-tool.ts b/src/app/modeler/edit-mode/services/modes/remove-token-tool.ts
index 5ca3144..3192cac 100644
--- a/src/app/modeler/edit-mode/services/modes/remove-token-tool.ts
+++ b/src/app/modeler/edit-mode/services/modes/remove-token-tool.ts
@@ -1,15 +1,15 @@
-import {CanvasPlace} from '../../domain/canvas-place';
-import {CanvasTool} from './canvas-tool';
+import {MatDialog} from '@angular/material/dialog';
+import {Router} from '@angular/router';
+import {ActionsMasterDetailService} from '../../../actions-mode/actions-master-detail.setvice';
+import {ActionsModeService} from '../../../actions-mode/actions-mode.service';
import {ControlPanelButton} from '../../../control-panel/control-panel-button';
import {ControlPanelIcon} from '../../../control-panel/control-panel-icon';
+import {PlaceChange} from '../../../history-mode/model/place/place-change';
+import {SelectedTransitionService} from '../../../selected-transition.service';
import {ModelService} from '../../../services/model/model.service';
-import {MatDialog} from '@angular/material/dialog';
+import {CanvasPlace} from '../../domain/canvas-place';
import {EditModeService} from '../../edit-mode.service';
-import {Router} from '@angular/router';
-import {SelectedTransitionService} from '../../../selected-transition.service';
-import {PlaceChange} from '../../../history-mode/model/place/place-change';
-import {ActionsModeService} from '../../../actions-mode/actions-mode.service';
-import {ActionsMasterDetailService} from '../../../actions-mode/actions-master-detail.setvice';
+import {CanvasTool} from './canvas-tool';
export class RemoveTokenTool extends CanvasTool {
diff --git a/src/app/modeler/edit-mode/services/modes/reset-position-and-zoom-tool.ts b/src/app/modeler/edit-mode/services/modes/reset-position-and-zoom-tool.ts
index ad5bf56..b9544e5 100644
--- a/src/app/modeler/edit-mode/services/modes/reset-position-and-zoom-tool.ts
+++ b/src/app/modeler/edit-mode/services/modes/reset-position-and-zoom-tool.ts
@@ -1,14 +1,13 @@
-import {Injectable} from '@angular/core';
+import {MatDialog} from '@angular/material/dialog';
+import {Router} from '@angular/router';
+import {ActionsMasterDetailService} from '../../../actions-mode/actions-master-detail.setvice';
+import {ActionsModeService} from '../../../actions-mode/actions-mode.service';
import {ControlPanelButton} from '../../../control-panel/control-panel-button';
import {ControlPanelIcon} from '../../../control-panel/control-panel-icon';
-import {CanvasTool} from './canvas-tool';
+import {SelectedTransitionService} from '../../../selected-transition.service';
import {ModelService} from '../../../services/model/model.service';
-import {MatDialog} from '@angular/material/dialog';
import {EditModeService} from '../../edit-mode.service';
-import {Router} from '@angular/router';
-import {SelectedTransitionService} from '../../../selected-transition.service';
-import {ActionsModeService} from '../../../actions-mode/actions-mode.service';
-import {ActionsMasterDetailService} from '../../../actions-mode/actions-master-detail.setvice';
+import {CanvasTool} from './canvas-tool';
export class ResetPositionAndZoomTool extends CanvasTool {
diff --git a/src/app/modeler/edit-mode/services/modes/select-tool.ts b/src/app/modeler/edit-mode/services/modes/select-tool.ts
index 6eaf089..e478bc4 100644
--- a/src/app/modeler/edit-mode/services/modes/select-tool.ts
+++ b/src/app/modeler/edit-mode/services/modes/select-tool.ts
@@ -1,30 +1,30 @@
-import {CanvasTool} from './canvas-tool';
-import {ControlPanelButton} from '../../../control-panel/control-panel-button';
-import {ControlPanelIcon} from '../../../control-panel/control-panel-icon';
-import {CanvasElementCollection} from '../../domain/canvas-element-collection';
-import {ModelService} from '../../../services/model/model.service';
-import {EditModeService} from '../../edit-mode.service';
import {MatDialog} from '@angular/material/dialog';
-import {Hotkey} from './domain/hotkey';
-import {CanvasPlace} from '../../domain/canvas-place';
-import {CanvasTransition} from '../../domain/canvas-transition';
-import {CanvasArc} from '../../domain/canvas-arc';
-import {CanvasObject} from '../../domain/canvas-object';
import {Router} from '@angular/router';
-import {SelectedTransitionService} from '../../../selected-transition.service';
-import {ContextMenu} from '../../context-menu/context-menu';
-import {HistoryService} from '../../../services/history/history.service';
import {
- DialogPlaceRefDeleteComponent,
- PlaceRefDeleteData
+ DialogPlaceRefDeleteComponent,
+ PlaceRefDeleteData,
} from '../../../../dialogs/dialog-place-ref-delete/dialog-place-ref-delete.component';
+import {ActionsMasterDetailService} from '../../../actions-mode/actions-master-detail.setvice';
+import {ActionsModeService} from '../../../actions-mode/actions-mode.service';
+import {ControlPanelButton} from '../../../control-panel/control-panel-button';
+import {ControlPanelIcon} from '../../../control-panel/control-panel-icon';
import {ModelerConfig} from '../../../modeler-config';
-import {DeleteSelectedMenuItem} from '../../context-menu/menu-items/delete-selected-menu-item';
+import {SelectedTransitionService} from '../../../selected-transition.service';
+import {HistoryService} from '../../../services/history/history.service';
+import {ModelService} from '../../../services/model/model.service';
+import {ContextMenu} from '../../context-menu/context-menu';
import {DeleteMenuItem} from '../../context-menu/menu-items/delete-menu-item';
+import {DeleteSelectedMenuItem} from '../../context-menu/menu-items/delete-selected-menu-item';
import {SelectArcsMenuItem} from '../../context-menu/menu-items/select-arcs-menu-item';
+import {CanvasArc} from '../../domain/canvas-arc';
+import {CanvasElementCollection} from '../../domain/canvas-element-collection';
import {CanvasNodeElement} from '../../domain/canvas-node-element';
-import {ActionsModeService} from '../../../actions-mode/actions-mode.service';
-import {ActionsMasterDetailService} from '../../../actions-mode/actions-master-detail.setvice';
+import {CanvasObject} from '../../domain/canvas-object';
+import {CanvasPlace} from '../../domain/canvas-place';
+import {CanvasTransition} from '../../domain/canvas-transition';
+import {EditModeService} from '../../edit-mode.service';
+import {CanvasTool} from './canvas-tool';
+import {Hotkey} from './domain/hotkey';
export class SelectTool extends CanvasTool {
@@ -91,6 +91,7 @@ export class SelectTool extends CanvasTool {
reset() {
super.reset();
this.restart();
+ this.selectedElements.clear();
this.clipboardElements.clear();
this.deselectAll();
}
diff --git a/src/app/modeler/edit-mode/services/modes/switch-label-tool.ts b/src/app/modeler/edit-mode/services/modes/switch-label-tool.ts
index 0c5c2fd..888de70 100644
--- a/src/app/modeler/edit-mode/services/modes/switch-label-tool.ts
+++ b/src/app/modeler/edit-mode/services/modes/switch-label-tool.ts
@@ -1,15 +1,14 @@
+import {MatDialog} from '@angular/material/dialog';
+import {Router} from '@angular/router';
+import {NodeElement} from '@netgrif/petriflow';
+import {ActionsMasterDetailService} from '../../../actions-mode/actions-master-detail.setvice';
+import {ActionsModeService} from '../../../actions-mode/actions-mode.service';
import {ControlPanelButton} from '../../../control-panel/control-panel-button';
import {ControlPanelIcon} from '../../../control-panel/control-panel-icon';
-import {NodeElement} from '@netgrif/petriflow';
-import {CanvasTool} from './canvas-tool';
-import {Injectable} from '@angular/core';
+import {SelectedTransitionService} from '../../../selected-transition.service';
import {ModelService} from '../../../services/model/model.service';
-import {MatDialog} from '@angular/material/dialog';
import {EditModeService} from '../../edit-mode.service';
-import {Router} from '@angular/router';
-import {SelectedTransitionService} from '../../../selected-transition.service';
-import {ActionsModeService} from '../../../actions-mode/actions-mode.service';
-import {ActionsMasterDetailService} from '../../../actions-mode/actions-master-detail.setvice';
+import {CanvasTool} from './canvas-tool';
export class SwitchLabelTool extends CanvasTool {
diff --git a/src/app/modeler/gridster-field-to-engine-field.service.ts b/src/app/modeler/gridster-field-to-engine-field.service.ts
index 78ca7b7..5f17e68 100644
--- a/src/app/modeler/gridster-field-to-engine-field.service.ts
+++ b/src/app/modeler/gridster-field-to-engine-field.service.ts
@@ -1,44 +1,45 @@
import {Injectable} from '@angular/core';
import {
- Alignment,
- Appearance,
- Component as PetriflowComponent,
- DataRefBehavior,
- DataType,
- Property,
- Template
-} from '@netgrif/petriflow';
-import moment from 'moment';
-import {
- BooleanField,
- ButtonField,
- Component,
- DataField,
- DateField,
- DateTimeField,
- DynamicEnumerationField,
- EnumerationField,
- EnumerationFieldValue,
- FieldAlignment,
- FieldTypeResource,
- FileField,
- FileListField,
- FilterField,
- I18nField,
- Layout,
- MaterialAppearance,
- MultichoiceField,
- NumberField,
- Properties,
- TaskRefField,
- TemplateAppearance, TextAreaField,
- TextField,
- UserField
+ BooleanField,
+ ButtonField,
+ Component,
+ DataField,
+ DateField,
+ DateTimeField,
+ DynamicEnumerationField,
+ EnumerationField,
+ EnumerationFieldValue,
+ FieldAlignment,
+ FieldTypeResource,
+ FileField,
+ FileListField,
+ FilterField,
+ I18nField,
+ Layout,
+ MaterialAppearance,
+ MultichoiceField,
+ NumberField,
+ Properties,
+ TaskRefField,
+ TemplateAppearance,
+ TextAreaField,
+ TextField,
+ UserField,
} from '@netgrif/components-core';
-import {GridsterDataField} from '../form-builder/gridster/classes/gridster-data-field';
import {I18nFieldValue} from '@netgrif/components-core/lib/data-fields/i18n-field/models/i18n-field-value';
import {Behavior} from '@netgrif/components-core/lib/data-fields/models/behavior';
-import { Icon } from '@netgrif/components-core/lib/data-fields/models/icon';
+import {Icon} from '@netgrif/components-core/lib/data-fields/models/icon';
+import {
+ Alignment,
+ Appearance,
+ Component as PetriflowComponent,
+ DataRefBehavior,
+ DataType,
+ Property,
+ Template,
+} from '@netgrif/petriflow';
+import moment from 'moment';
+import {GridsterDataField} from '../form-builder/gridster/classes/gridster-data-field';
// noinspection JSMethodCanBeStatic
@Injectable({
diff --git a/src/app/modeler/history-mode/history-detail/history-detail.component.ts b/src/app/modeler/history-mode/history-detail/history-detail.component.ts
index a47ca30..4dc2af9 100644
--- a/src/app/modeler/history-mode/history-detail/history-detail.component.ts
+++ b/src/app/modeler/history-mode/history-detail/history-detail.component.ts
@@ -1,12 +1,12 @@
import {Component, OnDestroy, OnInit} from '@angular/core';
-import {HistoryMasterDetailService} from '../history-master-detail.service';
-import {HistoryService} from '../../services/history/history.service';
-import {ModelExportService} from '../../services/model/model-export.service';
+import {editor} from 'monaco-editor';
import {DiffEditorModel} from 'ngx-monaco-editor-v2';
import {Subscription} from 'rxjs';
-import {editor} from 'monaco-editor';
-import IDiffEditorOptions = editor.IDiffEditorOptions;
+import {HistoryService} from '../../services/history/history.service';
+import {ModelExportService} from '../../services/model/model-export.service';
+import {HistoryMasterDetailService} from '../history-master-detail.service';
import IDiffEditor = editor.IDiffEditor;
+import IDiffEditorOptions = editor.IDiffEditorOptions;
@Component({
selector: 'nab-history-detail',
diff --git a/src/app/modeler/history-mode/history-master-detail.service.ts b/src/app/modeler/history-mode/history-master-detail.service.ts
index f5896ab..0e73824 100644
--- a/src/app/modeler/history-mode/history-master-detail.service.ts
+++ b/src/app/modeler/history-mode/history-master-detail.service.ts
@@ -1,10 +1,10 @@
import {Injectable} from '@angular/core';
-import {AbstractMasterDetailService} from '../components/master-detail/abstract-master-detail.service';
-import {PetriNet} from '@netgrif/petriflow';
import {Sort} from '@angular/material/sort';
+import {PetriNet} from '@netgrif/petriflow';
+import {AbstractMasterDetailService} from '../components/master-detail/abstract-master-detail.service';
+import {ModelerConfig} from '../modeler-config';
import {HistoryChange} from '../services/history/history-change';
import {HistoryService} from '../services/history/history.service';
-import {ModelerConfig} from '../modeler-config';
@Injectable({
providedIn: 'root'
diff --git a/src/app/modeler/history-mode/history-master-item/history-master-item.component.ts b/src/app/modeler/history-mode/history-master-item/history-master-item.component.ts
index e885bc5..da1066b 100644
--- a/src/app/modeler/history-mode/history-master-item/history-master-item.component.ts
+++ b/src/app/modeler/history-mode/history-master-item/history-master-item.component.ts
@@ -1,7 +1,7 @@
import {Component, Inject} from '@angular/core';
-import {MASTER_ITEM, MASTER_SERVICE} from '../../components/master-detail/main-master-item/master-injection-tokens';
import {PetriNet} from '@netgrif/petriflow';
import {AbstractMasterDetailService} from '../../components/master-detail/abstract-master-detail.service';
+import {MASTER_ITEM, MASTER_SERVICE} from '../../components/master-detail/main-master-item/master-injection-tokens';
import {HistoryChange} from '../../services/history/history-change';
import {ModelService} from '../../services/model/model.service';
diff --git a/src/app/modeler/history-mode/history-mode.component.spec.ts b/src/app/modeler/history-mode/history-mode.component.spec.ts
index 8b2ff9a..b1558b3 100644
--- a/src/app/modeler/history-mode/history-mode.component.spec.ts
+++ b/src/app/modeler/history-mode/history-mode.component.spec.ts
@@ -1,6 +1,6 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
+import {ComponentFixture, TestBed} from '@angular/core/testing';
-import { HistoryModeComponent } from './history-mode.component';
+import {HistoryModeComponent} from './history-mode.component';
describe('HistoryModeComponent', () => {
let component: HistoryModeComponent;
diff --git a/src/app/modeler/history-mode/history-mode.component.ts b/src/app/modeler/history-mode/history-mode.component.ts
index b4af96d..d940c5e 100644
--- a/src/app/modeler/history-mode/history-mode.component.ts
+++ b/src/app/modeler/history-mode/history-mode.component.ts
@@ -1,8 +1,8 @@
-import {Component, OnInit} from '@angular/core';
import {ComponentType} from '@angular/cdk/overlay';
+import {Component} from '@angular/core';
+import {HistoryDetailComponent} from './history-detail/history-detail.component';
import {HistoryMasterDetailService} from './history-master-detail.service';
import {HistoryMasterItemComponent} from './history-master-item/history-master-item.component';
-import {HistoryDetailComponent} from './history-detail/history-detail.component';
@Component({
selector: 'nab-history-mode',
diff --git a/src/app/modeler/history-mode/history-mode.service.spec.ts b/src/app/modeler/history-mode/history-mode.service.spec.ts
index a9ba55b..414e698 100644
--- a/src/app/modeler/history-mode/history-mode.service.spec.ts
+++ b/src/app/modeler/history-mode/history-mode.service.spec.ts
@@ -1,6 +1,6 @@
-import { TestBed } from '@angular/core/testing';
+import {TestBed} from '@angular/core/testing';
-import { HistoryModeService } from './history-mode.service';
+import {HistoryModeService} from './history-mode.service';
describe('HistoryModeService', () => {
let service: HistoryModeService;
diff --git a/src/app/modeler/history-mode/history-mode.service.ts b/src/app/modeler/history-mode/history-mode.service.ts
index e9eb0ef..0bd155c 100644
--- a/src/app/modeler/history-mode/history-mode.service.ts
+++ b/src/app/modeler/history-mode/history-mode.service.ts
@@ -1,10 +1,10 @@
import {Injectable, Injector} from '@angular/core';
-import {ModeService} from '../control-panel/modes/mode-component/mode.service';
-import {Tool} from '../control-panel/tools/tool';
+import {TutorialService} from '../../tutorial/tutorial-service';
import {ControlPanelButton} from '../control-panel/control-panel-button';
import {ControlPanelIcon} from '../control-panel/control-panel-icon';
-import {TutorialService} from '../../tutorial/tutorial-service';
import {Mode} from '../control-panel/modes/mode';
+import {ModeService} from '../control-panel/modes/mode-component/mode.service';
+import {Tool} from '../control-panel/tools/tool';
@Injectable({
providedIn: 'root'
diff --git a/src/app/modeler/history-mode/model/element-change.ts b/src/app/modeler/history-mode/model/element-change.ts
index b01192f..37e11da 100644
--- a/src/app/modeler/history-mode/model/element-change.ts
+++ b/src/app/modeler/history-mode/model/element-change.ts
@@ -1,6 +1,4 @@
import {PetriNet} from '@netgrif/petriflow';
-import {id} from '@swimlane/ngx-charts';
-import {element} from 'protractor';
export abstract class ElementChange {
diff --git a/src/app/modeler/history-mode/model/model/model-change.ts b/src/app/modeler/history-mode/model/model/model-change.ts
index a7b056d..2ce37cf 100644
--- a/src/app/modeler/history-mode/model/model/model-change.ts
+++ b/src/app/modeler/history-mode/model/model/model-change.ts
@@ -1,5 +1,5 @@
-import {ElementChange} from '../element-change';
import {PetriNet} from '@netgrif/petriflow';
+import {ElementChange} from '../element-change';
export class ModelChange extends ElementChange {
diff --git a/src/app/modeler/history-mode/model/model/model-imported.ts b/src/app/modeler/history-mode/model/model/model-imported.ts
index 81f1f73..8bb502c 100644
--- a/src/app/modeler/history-mode/model/model/model-imported.ts
+++ b/src/app/modeler/history-mode/model/model/model-imported.ts
@@ -1,5 +1,5 @@
-import {ModelChange} from './model-change';
import {PetriNet} from '@netgrif/petriflow';
+import {ModelChange} from './model-change';
export class ModelImported extends ModelChange {
diff --git a/src/app/modeler/history-mode/model/place/place-created.ts b/src/app/modeler/history-mode/model/place/place-created.ts
index eeca6e8..ffb89d8 100644
--- a/src/app/modeler/history-mode/model/place/place-created.ts
+++ b/src/app/modeler/history-mode/model/place/place-created.ts
@@ -1,5 +1,5 @@
-import {PlaceChange} from './place-change';
import {PetriNet, Place} from '@netgrif/petriflow';
+import {PlaceChange} from './place-change';
export class PlaceCreated extends PlaceChange {
diff --git a/src/app/modeler/history-mode/model/place/place-deleted.ts b/src/app/modeler/history-mode/model/place/place-deleted.ts
index 3623f9c..efb4087 100644
--- a/src/app/modeler/history-mode/model/place/place-deleted.ts
+++ b/src/app/modeler/history-mode/model/place/place-deleted.ts
@@ -1,5 +1,5 @@
-import {PlaceChange} from './place-change';
import {PetriNet, Place} from '@netgrif/petriflow';
+import {PlaceChange} from './place-change';
export class PlaceDeleted extends PlaceChange {
diff --git a/src/app/modeler/history-mode/model/place/place-moved.ts b/src/app/modeler/history-mode/model/place/place-moved.ts
index ead9e4c..6e98bf4 100644
--- a/src/app/modeler/history-mode/model/place/place-moved.ts
+++ b/src/app/modeler/history-mode/model/place/place-moved.ts
@@ -1,5 +1,5 @@
-import {PlaceChange} from './place-change';
import {PetriNet, Place} from '@netgrif/petriflow';
+import {PlaceChange} from './place-change';
export class PlaceMoved extends PlaceChange {
diff --git a/src/app/modeler/i18n-mode/classes/i18n-tool.ts b/src/app/modeler/i18n-mode/classes/i18n-tool.ts
index 7f2ff80..371905e 100644
--- a/src/app/modeler/i18n-mode/classes/i18n-tool.ts
+++ b/src/app/modeler/i18n-mode/classes/i18n-tool.ts
@@ -1,7 +1,7 @@
-import {Tool} from '../../control-panel/tools/tool';
import {ComponentPortal} from '@angular/cdk/portal';
-import {ControlPanelButton} from '../../control-panel/control-panel-button';
import {Type} from '@angular/core';
+import {ControlPanelButton} from '../../control-panel/control-panel-button';
+import {Tool} from '../../control-panel/tools/tool';
export abstract class I18nTool extends Tool {
diff --git a/src/app/modeler/i18n-mode/i18n-mode.component.ts b/src/app/modeler/i18n-mode/i18n-mode.component.ts
index b3d7000..624de8b 100644
--- a/src/app/modeler/i18n-mode/i18n-mode.component.ts
+++ b/src/app/modeler/i18n-mode/i18n-mode.component.ts
@@ -1,7 +1,7 @@
-import {Component, OnInit} from '@angular/core';
-import {I18nModeService} from './i18n-mode.service';
import {ComponentPortal} from '@angular/cdk/portal';
+import {Component, OnInit} from '@angular/core';
import {I18nTool} from './classes/i18n-tool';
+import {I18nModeService} from './i18n-mode.service';
@Component({
selector: 'nab-i18n-mode',
diff --git a/src/app/modeler/i18n-mode/i18n-mode.service.ts b/src/app/modeler/i18n-mode/i18n-mode.service.ts
index d66a97a..9aa0031 100644
--- a/src/app/modeler/i18n-mode/i18n-mode.service.ts
+++ b/src/app/modeler/i18n-mode/i18n-mode.service.ts
@@ -1,18 +1,18 @@
import {Injectable, Injector} from '@angular/core';
-import {Locale} from './classes/locale';
import {DataType, DataVariable, I18nString, I18nTranslations, I18nWithDynamic} from '@netgrif/petriflow';
-import {I18nStringKeyTemplate} from './translations/i18n-string-key-template';
-import {Locales} from './classes/locales';
-import {ModeService} from '../control-panel/modes/mode-component/mode.service';
-import {Mode} from '../control-panel/modes/mode';
+import {TutorialService} from '../../tutorial/tutorial-service';
import {ControlPanelButton} from '../control-panel/control-panel-button';
import {ControlPanelIcon} from '../control-panel/control-panel-icon';
-import {TutorialService} from '../../tutorial/tutorial-service';
-import {ToolGroup} from '../control-panel/tools/tool-group';
-import {TranslationsTool} from './translations/translations-tool';
-import {LanguagesTool} from './languages/languages-tool';
+import {Mode} from '../control-panel/modes/mode';
+import {ModeService} from '../control-panel/modes/mode-component/mode.service';
import {Tool} from '../control-panel/tools/tool';
+import {ToolGroup} from '../control-panel/tools/tool-group';
import {ModelService} from '../services/model/model.service';
+import {Locale} from './classes/locale';
+import {Locales} from './classes/locales';
+import {LanguagesTool} from './languages/languages-tool';
+import {I18nStringKeyTemplate} from './translations/i18n-string-key-template';
+import {TranslationsTool} from './translations/translations-tool';
@Injectable({
providedIn: 'root'
diff --git a/src/app/modeler/i18n-mode/languages/language-select.service.spec.ts b/src/app/modeler/i18n-mode/languages/language-select.service.spec.ts
index 75e4e62..90c3909 100644
--- a/src/app/modeler/i18n-mode/languages/language-select.service.spec.ts
+++ b/src/app/modeler/i18n-mode/languages/language-select.service.spec.ts
@@ -1,6 +1,6 @@
-import { TestBed } from '@angular/core/testing';
+import {TestBed} from '@angular/core/testing';
-import { LanguageSelectService } from './language-select.service';
+import {LanguageSelectService} from './language-select.service';
describe('LanguageSelectService', () => {
let service: LanguageSelectService;
diff --git a/src/app/modeler/i18n-mode/languages/languages-tool.ts b/src/app/modeler/i18n-mode/languages/languages-tool.ts
index 2bb679f..411d170 100644
--- a/src/app/modeler/i18n-mode/languages/languages-tool.ts
+++ b/src/app/modeler/i18n-mode/languages/languages-tool.ts
@@ -1,8 +1,8 @@
+import {ComponentPortal} from '@angular/cdk/portal';
import {Injectable} from '@angular/core';
import {ControlPanelButton} from '../../control-panel/control-panel-button';
import {ControlPanelIcon} from '../../control-panel/control-panel-icon';
import {I18nTool} from '../classes/i18n-tool';
-import {ComponentPortal} from '@angular/cdk/portal';
import {LanguagesComponent} from './languages.component';
@Injectable({
diff --git a/src/app/modeler/i18n-mode/languages/languages.component.ts b/src/app/modeler/i18n-mode/languages/languages.component.ts
index aafc13b..75113e7 100644
--- a/src/app/modeler/i18n-mode/languages/languages.component.ts
+++ b/src/app/modeler/i18n-mode/languages/languages.component.ts
@@ -1,12 +1,11 @@
-import {Component, OnDestroy, OnInit, ViewChild} from '@angular/core';
-import {Locale} from '../classes/locale';
-import {Locales} from '../classes/locales';
-import {I18nModeService} from '../i18n-mode.service';
-import {MatSelect} from '@angular/material/select';
+import {Component, OnDestroy, OnInit} from '@angular/core';
import {AbstractControl, FormControl, ValidatorFn, Validators} from '@angular/forms';
import {Observable} from 'rxjs';
import {map, startWith} from 'rxjs/operators';
import {HistoryService} from '../../services/history/history.service';
+import {Locale} from '../classes/locale';
+import {Locales} from '../classes/locales';
+import {I18nModeService} from '../i18n-mode.service';
import {LanguageSelectService} from './language-select.service';
@Component({
diff --git a/src/app/modeler/i18n-mode/languages/progress/progress.component.ts b/src/app/modeler/i18n-mode/languages/progress/progress.component.ts
index 8bb5539..f1fb993 100644
--- a/src/app/modeler/i18n-mode/languages/progress/progress.component.ts
+++ b/src/app/modeler/i18n-mode/languages/progress/progress.component.ts
@@ -1,4 +1,4 @@
-import {Component, Input, Output, EventEmitter} from '@angular/core';
+import {Component, EventEmitter, Input, Output} from '@angular/core';
import {Locale} from '../../classes/locale';
import {I18nModeService} from '../../i18n-mode.service';
diff --git a/src/app/modeler/i18n-mode/translations/i18n-field/i18n-field.component.ts b/src/app/modeler/i18n-mode/translations/i18n-field/i18n-field.component.ts
index 5228309..533632d 100644
--- a/src/app/modeler/i18n-mode/translations/i18n-field/i18n-field.component.ts
+++ b/src/app/modeler/i18n-mode/translations/i18n-field/i18n-field.component.ts
@@ -1,7 +1,7 @@
+import {CommonModule} from '@angular/common';
import {Component, Input, OnInit} from '@angular/core';
-import {I18nString, I18nTranslations} from '@netgrif/petriflow';
import {MaterialModule} from '@netgrif/components-core';
-import {CommonModule} from '@angular/common';
+import {I18nString, I18nTranslations} from '@netgrif/petriflow';
import {I18nModeService} from '../../i18n-mode.service';
@Component({
diff --git a/src/app/modeler/i18n-mode/translations/translation-group/data-translation/data-translation.component.ts b/src/app/modeler/i18n-mode/translations/translation-group/data-translation/data-translation.component.ts
index fcb0b8c..58ba3aa 100644
--- a/src/app/modeler/i18n-mode/translations/translation-group/data-translation/data-translation.component.ts
+++ b/src/app/modeler/i18n-mode/translations/translation-group/data-translation/data-translation.component.ts
@@ -1,7 +1,7 @@
import {Component, Input} from '@angular/core';
import {DataVariable, I18nTranslations, PetriNet} from '@netgrif/petriflow';
-import {I18nModeService} from '../../../i18n-mode.service';
import {ModelService} from '../../../../services/model/model.service';
+import {I18nModeService} from '../../../i18n-mode.service';
@Component({
selector: 'nab-data-translation',
diff --git a/src/app/modeler/i18n-mode/translations/translation-group/model-translation/model-translation.component.ts b/src/app/modeler/i18n-mode/translations/translation-group/model-translation/model-translation.component.ts
index 422b451..21b71c6 100644
--- a/src/app/modeler/i18n-mode/translations/translation-group/model-translation/model-translation.component.ts
+++ b/src/app/modeler/i18n-mode/translations/translation-group/model-translation/model-translation.component.ts
@@ -1,4 +1,4 @@
-import {Component, Input, OnInit} from '@angular/core';
+import {Component, Input} from '@angular/core';
import {I18nTranslations, PetriNet} from '@netgrif/petriflow';
import {ModelService} from '../../../../services/model/model.service';
diff --git a/src/app/modeler/i18n-mode/translations/translation-group/role-translation/role-translation.component.ts b/src/app/modeler/i18n-mode/translations/translation-group/role-translation/role-translation.component.ts
index 6e144c9..96e9927 100644
--- a/src/app/modeler/i18n-mode/translations/translation-group/role-translation/role-translation.component.ts
+++ b/src/app/modeler/i18n-mode/translations/translation-group/role-translation/role-translation.component.ts
@@ -1,4 +1,4 @@
-import {Component, Input, OnInit} from '@angular/core';
+import {Component, Input} from '@angular/core';
import {I18nTranslations, PetriNet} from '@netgrif/petriflow';
import {ModelService} from '../../../../services/model/model.service';
diff --git a/src/app/modeler/i18n-mode/translations/translation-group/task-translation/task-translation.component.ts b/src/app/modeler/i18n-mode/translations/translation-group/task-translation/task-translation.component.ts
index 6418061..ab0b7a6 100644
--- a/src/app/modeler/i18n-mode/translations/translation-group/task-translation/task-translation.component.ts
+++ b/src/app/modeler/i18n-mode/translations/translation-group/task-translation/task-translation.component.ts
@@ -1,4 +1,4 @@
-import {Component, Input, OnInit} from '@angular/core';
+import {Component, Input} from '@angular/core';
import {I18nTranslations, PetriNet} from '@netgrif/petriflow';
import {ModelService} from '../../../../services/model/model.service';
diff --git a/src/app/modeler/i18n-mode/translations/translations-tool.ts b/src/app/modeler/i18n-mode/translations/translations-tool.ts
index debc912..b275be7 100644
--- a/src/app/modeler/i18n-mode/translations/translations-tool.ts
+++ b/src/app/modeler/i18n-mode/translations/translations-tool.ts
@@ -1,7 +1,7 @@
+import {ComponentPortal} from '@angular/cdk/portal';
+import {Injectable} from '@angular/core';
import {ControlPanelButton} from '../../control-panel/control-panel-button';
import {ControlPanelIcon} from '../../control-panel/control-panel-icon';
-import {Injectable} from '@angular/core';
-import {ComponentPortal} from '@angular/cdk/portal';
import {I18nTool} from '../classes/i18n-tool';
import {TranslationsComponent} from './translations.component';
diff --git a/src/app/modeler/i18n-mode/translations/translations.component.ts b/src/app/modeler/i18n-mode/translations/translations.component.ts
index 309cdd1..18d7238 100644
--- a/src/app/modeler/i18n-mode/translations/translations.component.ts
+++ b/src/app/modeler/i18n-mode/translations/translations.component.ts
@@ -1,11 +1,11 @@
import {Component, OnDestroy, OnInit} from '@angular/core';
-import {Locale} from '../classes/locale';
-import {I18nModeService} from '../i18n-mode.service';
-import {TranslationGroupConfiguration, Type} from './translation-group/translation-group-configuration';
import {I18nTranslations} from '@netgrif/petriflow';
-import {ModelService} from '../../services/model/model.service';
import {HistoryService} from '../../services/history/history.service';
+import {ModelService} from '../../services/model/model.service';
+import {Locale} from '../classes/locale';
+import {I18nModeService} from '../i18n-mode.service';
import {LanguageSelectService} from '../languages/language-select.service';
+import {TranslationGroupConfiguration, Type} from './translation-group/translation-group-configuration';
@Component({
selector: 'nab-translations',
diff --git a/src/app/modeler/model-import-service.ts b/src/app/modeler/model-import-service.ts
index a1b0aa6..2c84eb5 100644
--- a/src/app/modeler/model-import-service.ts
+++ b/src/app/modeler/model-import-service.ts
@@ -1,12 +1,12 @@
import {Injectable} from '@angular/core';
-import {DialogErrorsComponent} from '../dialogs/dialog-errors/dialog-errors.component';
-import {ImportSuccessfulComponent} from './control-panel/import-successful/import-successful.component';
-import {ImportService} from '@netgrif/petriflow';
import {MatDialog} from '@angular/material/dialog';
import {MatSnackBar} from '@angular/material/snack-bar';
import {Router} from '@angular/router';
-import {ModelService} from './services/model/model.service';
+import {ImportService} from '@netgrif/petriflow';
+import {DialogErrorsComponent} from '../dialogs/dialog-errors/dialog-errors.component';
+import {ImportSuccessfulComponent} from './control-panel/import-successful/import-successful.component';
import {HistoryService} from './services/history/history.service';
+import {ModelService} from './services/model/model.service';
@Injectable({
providedIn: 'root'
diff --git a/src/app/modeler/modeler.component.ts b/src/app/modeler/modeler.component.ts
index 18eee6b..e663a20 100644
--- a/src/app/modeler/modeler.component.ts
+++ b/src/app/modeler/modeler.component.ts
@@ -1,14 +1,14 @@
+import {HttpClient} from '@angular/common/http';
import {Component, ViewChild} from '@angular/core';
-import {ActivatedRoute, Router} from '@angular/router';
import {MatDialog} from '@angular/material/dialog';
-import {MatTabGroup} from '@angular/material/tabs';
import {MatSidenav} from '@angular/material/sidenav';
+import {MatTabGroup} from '@angular/material/tabs';
+import {ActivatedRoute, Router} from '@angular/router';
import {ImportService, PetriNet as PetriflowPetriNet} from '@netgrif/petriflow';
import {ProjectService} from '../project-builder/project.service';
-import {HttpClient} from '@angular/common/http';
import {EditModeService} from './edit-mode/edit-mode.service';
-import {ModelService} from './services/model/model.service';
import {HistoryService} from './services/history/history.service';
+import {ModelService} from './services/model/model.service';
@Component({
selector: 'nab-modeler',
diff --git a/src/app/modeler/modeler.module.ts b/src/app/modeler/modeler.module.ts
index b4b1b06..5ade089 100644
--- a/src/app/modeler/modeler.module.ts
+++ b/src/app/modeler/modeler.module.ts
@@ -1,77 +1,77 @@
-import {NgModule} from '@angular/core';
import {CommonModule} from '@angular/common';
-import {ModelerComponent} from './modeler.component';
-import {MaterialImportModule} from '../material-import/material-import.module';
-import {ControlPanelComponent} from './control-panel/control-panel.component';
-import {DomSanitizer} from '@angular/platform-browser';
+import {NgModule} from '@angular/core';
import {FormsModule, ReactiveFormsModule} from '@angular/forms';
-import {TriggerTreeComponent} from './control-panel/trees/trigger-tree/trigger-tree.component';
-import {DialogManageRolesComponent} from '../dialogs/dialog-manage-roles/dialog-manage-roles.component';
-import {CdkImportModule} from '../cdk-import/cdk-import.module';
-import {SimulationModeComponent} from './simulation-mode/simulation-mode.component';
-import {EditModeComponent} from './edit-mode/edit-mode.component';
+import {MatIconRegistry} from '@angular/material/icon';
+import {MatProgressSpinnerModule} from '@angular/material/progress-spinner';
+import {DomSanitizer} from '@angular/platform-browser';
import {RouterModule} from '@angular/router';
-import {DataModeComponent} from './data-mode/data-mode.component';
-import {RoleModeComponent} from './role-mode/role-mode.component';
-import {ActionsModeComponent} from './actions-mode/actions-mode.component';
-import {DialogArcAttachComponent} from '../dialogs/dialog-arc-attach/dialog-arc-attach.component';
+import {DataFieldsComponentModule, TaskContentComponentModule} from '@netgrif/components';
+import {MaterialModule} from '@netgrif/components-core';
+import {PetriflowCanvasModule} from '@netgrif/petriflow.svg';
+import {FlexLayoutModule} from '@ngbracket/ngx-layout';
+import {GridsterModule} from 'angular-gridster2';
+import {ResizableModule} from 'angular-resizable-element';
+import {NgxDropzoneModule} from 'ngx-dropzone';
+import {JoyrideModule} from 'ngx-joyride';
+import {MonacoEditorModule} from 'ngx-monaco-editor-v2';
import {environment} from '../../environments/environment';
-import {I18nModeComponent} from './i18n-mode/i18n-mode.component';
-import {DialogDeleteComponent} from '../dialogs/dialog-delete/dialog-delete.component';
+import {CdkImportModule} from '../cdk-import/cdk-import.module';
import {DialogAddLanguageComponent} from '../dialogs/dialog-add-language/dialog-add-language.component';
-import {MatIconRegistry} from '@angular/material/icon';
-import {FormBuilderModule} from '../form-builder/form-builder.module';
-import {ImportSuccessfulComponent} from './control-panel/import-successful/import-successful.component';
-import {GridsterModule} from 'angular-gridster2';
+import {DialogArcAttachComponent} from '../dialogs/dialog-arc-attach/dialog-arc-attach.component';
+import {DialogDeleteComponent} from '../dialogs/dialog-delete/dialog-delete.component';
+import {DialogManageRolesComponent} from '../dialogs/dialog-manage-roles/dialog-manage-roles.component';
+import {MaterialImportModule} from '../material-import/material-import.module';
+import {ActionDetailComponent} from './actions-mode/action-detail/action-detail.component';
import {ActionEditorModule} from './actions-mode/action-editor/action-editor.module';
+import {ActionMasterItemComponent} from './actions-mode/action-master/action-master-item/action-master-item.component';
+import {ActionMasterComponent} from './actions-mode/action-master/action-master.component';
+import {
+ FunctionMasterItemComponent,
+} from './actions-mode/action-master/function-master-item/function-master-item.component';
+import {ActionsModeComponent} from './actions-mode/actions-mode.component';
+import {MainMasterItemComponent} from './components/master-detail/main-master-item/main-master-item.component';
+import {MainMasterComponent} from './components/master-detail/main-master/main-master.component';
+import {MasterDetailComponent} from './components/master-detail/master-detail.component';
+import {ControlPanelComponent} from './control-panel/control-panel.component';
+import {ImportSuccessfulComponent} from './control-panel/import-successful/import-successful.component';
+import {ImportToolButtonComponent} from './control-panel/modes/import-tool-button/import-tool-button.component';
+import {ModeComponent} from './control-panel/modes/mode-component/mode.component';
+import {FileToolComponent} from './control-panel/tools/file-tool-component/file-tool.component';
+import {ToolComponent} from './control-panel/tools/tool-component/tool.component';
+import {TriggerTreeComponent} from './control-panel/trees/trigger-tree/trigger-tree.component';
+import {DataDetailComponent} from './data-mode/data-detail/data-detail.component';
+import {DataMasterItemComponent} from './data-mode/data-master-item/data-master-item.component';
+import {DataModeComponent} from './data-mode/data-mode.component';
+import {TaskRefInitFieldComponent} from './data-mode/task-ref-init-field/task-ref-init-field.component';
+import {ContextMenuComponent} from './edit-mode/context-menu/context-menu.component';
+import {EditModeComponent} from './edit-mode/edit-mode.component';
+import {HistoryDetailComponent} from './history-mode/history-detail/history-detail.component';
+import {HistoryMasterItemComponent} from './history-mode/history-master-item/history-master-item.component';
+import {HistoryModeComponent} from './history-mode/history-mode.component';
+import {I18nModeComponent} from './i18n-mode/i18n-mode.component';
+import {FlagFallbackDirective} from './i18n-mode/languages/flag/flag-fallback.directive';
+import {FlagComponent} from './i18n-mode/languages/flag/flag.component';
import {LanguagesComponent} from './i18n-mode/languages/languages.component';
-import {TranslationsComponent} from './i18n-mode/translations/translations.component';
import {ProgressComponent} from './i18n-mode/languages/progress/progress.component';
-import {FlagComponent} from './i18n-mode/languages/flag/flag.component';
-import {FlagFallbackDirective} from './i18n-mode/languages/flag/flag-fallback.directive';
-import {
- ModelTranslationComponent
-} from './i18n-mode/translations/translation-group/model-translation/model-translation.component';
import {I18nFieldComponent} from './i18n-mode/translations/i18n-field/i18n-field.component';
import {
- DataTranslationComponent
+ DataTranslationComponent,
} from './i18n-mode/translations/translation-group/data-translation/data-translation.component';
import {
- RoleTranslationComponent
+ ModelTranslationComponent,
+} from './i18n-mode/translations/translation-group/model-translation/model-translation.component';
+import {
+ RoleTranslationComponent,
} from './i18n-mode/translations/translation-group/role-translation/role-translation.component';
import {
- TaskTranslationComponent
+ TaskTranslationComponent,
} from './i18n-mode/translations/translation-group/task-translation/task-translation.component';
-import {NgxDropzoneModule} from 'ngx-dropzone';
-import {PetriflowCanvasModule} from '@netgrif/petriflow.svg';
-import {ModeComponent} from './control-panel/modes/mode-component/mode.component';
-import {ToolComponent} from './control-panel/tools/tool-component/tool.component';
-import {ImportToolButtonComponent} from './control-panel/modes/import-tool-button/import-tool-button.component';
-import {ContextMenuComponent} from './edit-mode/context-menu/context-menu.component';
-import {HistoryModeComponent} from './history-mode/history-mode.component';
-import {MaterialModule} from '@netgrif/components-core';
-import {DataFieldsComponentModule, TaskContentComponentModule} from '@netgrif/components';
-import {JoyrideModule} from 'ngx-joyride';
-import {ResizableModule} from 'angular-resizable-element';
-import {FlexLayoutModule} from '@ngbracket/ngx-layout';
-import {DataMasterItemComponent} from './data-mode/data-master-item/data-master-item.component';
-import {MasterDetailComponent} from './components/master-detail/master-detail.component';
-import {DataDetailComponent} from './data-mode/data-detail/data-detail.component';
-import {MainMasterComponent} from './components/master-detail/main-master/main-master.component';
-import {MainMasterItemComponent} from './components/master-detail/main-master-item/main-master-item.component';
+import {TranslationsComponent} from './i18n-mode/translations/translations.component';
+import {ModelerComponent} from './modeler.component';
import {RoleDetailComponent} from './role-mode/role-detail/role-detail.component';
import {RoleMasterItemComponent} from './role-mode/role-master-item/role-master-item.component';
-import {ActionMasterComponent} from './actions-mode/action-master/action-master.component';
-import {ActionMasterItemComponent} from './actions-mode/action-master/action-master-item/action-master-item.component';
-import {
- FunctionMasterItemComponent
-} from './actions-mode/action-master/function-master-item/function-master-item.component';
-import {ActionDetailComponent} from './actions-mode/action-detail/action-detail.component';
-import {MatProgressSpinnerModule} from '@angular/material/progress-spinner';
-import {HistoryMasterItemComponent} from './history-mode/history-master-item/history-master-item.component';
-import {HistoryDetailComponent} from './history-mode/history-detail/history-detail.component';
-import {MonacoEditorModule} from 'ngx-monaco-editor-v2';
-import {FileToolComponent} from './control-panel/tools/file-tool-component/file-tool.component';
+import {RoleModeComponent} from './role-mode/role-mode.component';
+import {SimulationModeComponent} from './simulation-mode/simulation-mode.component';
@NgModule({
declarations: [
@@ -117,11 +117,13 @@ import {FileToolComponent} from './control-panel/tools/file-tool-component/file-
FunctionMasterItemComponent,
ActionDetailComponent,
HistoryMasterItemComponent,
- HistoryDetailComponent
+ HistoryDetailComponent,
+ TaskRefInitFieldComponent
],
exports: [
ActionEditorModule,
- TriggerTreeComponent
+ TriggerTreeComponent,
+ TaskRefInitFieldComponent
],
imports: [
ActionEditorModule,
@@ -129,7 +131,6 @@ import {FileToolComponent} from './control-panel/tools/file-tool-component/file-
CommonModule,
DataFieldsComponentModule,
FlexLayoutModule,
- FormBuilderModule,
FormsModule,
GridsterModule,
JoyrideModule,
diff --git a/src/app/modeler/mortgage.service.ts b/src/app/modeler/mortgage.service.ts
index 07696aa..3a7d834 100644
--- a/src/app/modeler/mortgage.service.ts
+++ b/src/app/modeler/mortgage.service.ts
@@ -1,6 +1,5 @@
-import {Injectable} from '@angular/core';
import {HttpClient} from '@angular/common/http';
-import {ModelerTabsService} from './services/modeler-tabs.service';
+import {Injectable} from '@angular/core';
import {ModelImportService} from './model-import-service';
@Injectable({
diff --git a/src/app/modeler/role-mode/role-detail/role-detail.component.html b/src/app/modeler/role-mode/role-detail/role-detail.component.html
index 6d576ba..6a614e1 100644
--- a/src/app/modeler/role-mode/role-detail/role-detail.component.html
+++ b/src/app/modeler/role-mode/role-detail/role-detail.component.html
@@ -4,9 +4,11 @@
Id
-
- Id is required
- Transition with given id already exists
+
+ Id is required
+
+ Role with given id already exists
+
@@ -21,9 +23,17 @@
+
+
+ Is Global
+
+
+
+
+
diff --git a/src/app/modeler/role-mode/role-detail/role-detail.component.ts b/src/app/modeler/role-mode/role-detail/role-detail.component.ts
index d4db8ee..60324fc 100644
--- a/src/app/modeler/role-mode/role-detail/role-detail.component.ts
+++ b/src/app/modeler/role-mode/role-detail/role-detail.component.ts
@@ -1,25 +1,25 @@
import {Component, OnDestroy} from '@angular/core';
-import {Role} from '@netgrif/petriflow';
-import {ModelService} from '../../services/model/model.service';
-import {RoleMasterDetailService} from '../role-master-detail.service';
+import {FormControl, ValidatorFn, Validators} from '@angular/forms';
import {Router} from '@angular/router';
-import {ActionsModeService} from '../../actions-mode/actions-mode.service';
+import {Role} from '@netgrif/petriflow';
import {ActionsMasterDetailService} from '../../actions-mode/actions-master-detail.setvice';
+import {ActionsModeService} from '../../actions-mode/actions-mode.service';
+import {ModelerUtils} from '../../modeler-utils';
import {HistoryService} from '../../services/history/history.service';
-import {FormControl, ValidatorFn, Validators} from '@angular/forms';
+import {ModelService} from '../../services/model/model.service';
+import {RoleMasterDetailService} from '../role-master-detail.service';
import {ChangedRole} from './changed-role';
-import {ModelerUtils} from '../../modeler-utils';
@Component({
selector: 'nab-role-detail',
templateUrl: './role-detail.component.html',
- styleUrl: './role-detail.component.scss'
+ styleUrl: './role-detail.component.scss',
})
export class RoleDetailComponent implements OnDestroy {
public role: ChangedRole;
public shouldSave: boolean = false;
- public form: FormControl;
+ public roleIdForm: FormControl;
public constructor(
private _masterService: RoleMasterDetailService,
@@ -27,7 +27,7 @@ export class RoleDetailComponent implements OnDestroy {
private _router: Router,
private _actionMode: ActionsModeService,
private _actionsMasterDetail: ActionsMasterDetailService,
- protected _historyService: HistoryService
+ protected _historyService: HistoryService,
) {
this._masterService.getSelected$().subscribe(item => {
this.saveChange();
@@ -36,9 +36,9 @@ export class RoleDetailComponent implements OnDestroy {
}
this.role = new ChangedRole(item.clone());
});
- this.form = new FormControl('', [
+ this.roleIdForm = new FormControl('', [
Validators.required,
- this.validUnique()
+ this.validUnique(),
]);
}
@@ -75,6 +75,11 @@ export class RoleDetailComponent implements OnDestroy {
this.shouldSave = true;
}
+ changeGlobalFlag($event): void {
+ this.role.role.global = $event.checked;
+ this.shouldSave = true;
+ }
+
get item(): Role {
return this.service.getSelected();
}
diff --git a/src/app/modeler/role-mode/role-master-detail.service.ts b/src/app/modeler/role-mode/role-master-detail.service.ts
index 9687443..7f194f5 100644
--- a/src/app/modeler/role-mode/role-master-detail.service.ts
+++ b/src/app/modeler/role-mode/role-master-detail.service.ts
@@ -1,10 +1,10 @@
import {Injectable} from '@angular/core';
-import {AbstractMasterDetailService} from '../components/master-detail/abstract-master-detail.service';
-import {Role} from '@netgrif/petriflow';
-import {ModelService} from '../services/model/model.service';
import {Sort} from '@angular/material/sort';
-import {HistoryService} from '../services/history/history.service';
+import {Role} from '@netgrif/petriflow';
+import {AbstractMasterDetailService} from '../components/master-detail/abstract-master-detail.service';
import {ModelerConfig} from '../modeler-config';
+import {HistoryService} from '../services/history/history.service';
+import {ModelService} from '../services/model/model.service';
@Injectable({
providedIn: 'root'
diff --git a/src/app/modeler/role-mode/role-master-item/role-master-item.component.ts b/src/app/modeler/role-mode/role-master-item/role-master-item.component.ts
index 7ec20b5..5c65b15 100644
--- a/src/app/modeler/role-mode/role-master-item/role-master-item.component.ts
+++ b/src/app/modeler/role-mode/role-master-item/role-master-item.component.ts
@@ -1,9 +1,9 @@
import {Component, Inject} from '@angular/core';
-import {MASTER_ITEM, MASTER_SERVICE} from '../../components/master-detail/main-master-item/master-injection-tokens';
-import {DataVariable, Role} from '@netgrif/petriflow';
-import {AbstractMasterDetailService} from '../../components/master-detail/abstract-master-detail.service';
import {MatDialog} from '@angular/material/dialog';
+import {Role} from '@netgrif/petriflow';
import {DialogDeleteComponent} from '../../../dialogs/dialog-delete/dialog-delete.component';
+import {AbstractMasterDetailService} from '../../components/master-detail/abstract-master-detail.service';
+import {MASTER_ITEM, MASTER_SERVICE} from '../../components/master-detail/main-master-item/master-injection-tokens';
@Component({
selector: 'nab-role-master-item',
diff --git a/src/app/modeler/role-mode/role-mode.component.spec.ts b/src/app/modeler/role-mode/role-mode.component.spec.ts
index 337325f..16973b9 100644
--- a/src/app/modeler/role-mode/role-mode.component.spec.ts
+++ b/src/app/modeler/role-mode/role-mode.component.spec.ts
@@ -1,19 +1,19 @@
-import {ComponentFixture, TestBed, waitForAsync} from '@angular/core/testing';
-
-import {RoleModeComponent} from './role-mode.component';
-import {MaterialImportModule} from '../../material-import/material-import.module';
import {CommonModule} from '@angular/common';
-import {CdkImportModule} from '../../cdk-import/cdk-import.module';
-import {FormsModule} from '@angular/forms';
-import {RouterModule} from '@angular/router';
-import {HotkeyModule} from 'angular2-hotkeys';
-import {ResizableModule} from 'angular-resizable-element';
import {HttpClientModule} from '@angular/common/http';
+import {ComponentFixture, TestBed, waitForAsync} from '@angular/core/testing';
+import {FormsModule} from '@angular/forms';
import {MatCheckboxModule} from '@angular/material/checkbox';
-import {MatTabsModule} from '@angular/material/tabs';
import {MatSortModule} from '@angular/material/sort';
+import {MatTabsModule} from '@angular/material/tabs';
+import {RouterModule} from '@angular/router';
import {FlexLayoutModule} from '@ngbracket/ngx-layout';
+import {ResizableModule} from 'angular-resizable-element';
+import {HotkeyModule} from 'angular2-hotkeys';
import {MonacoEditorModule} from 'ngx-monaco-editor-v2';
+import {CdkImportModule} from '../../cdk-import/cdk-import.module';
+import {MaterialImportModule} from '../../material-import/material-import.module';
+
+import {RoleModeComponent} from './role-mode.component';
describe('RoleModeComponent', () => {
let component: RoleModeComponent;
diff --git a/src/app/modeler/role-mode/role-mode.component.ts b/src/app/modeler/role-mode/role-mode.component.ts
index aef604a..5c8c612 100644
--- a/src/app/modeler/role-mode/role-mode.component.ts
+++ b/src/app/modeler/role-mode/role-mode.component.ts
@@ -1,8 +1,7 @@
-import {Component} from '@angular/core';
-import {DataMasterDetailService} from '../data-mode/data-master-detail.service';
import {ComponentType} from '@angular/cdk/overlay';
-import {RoleMasterDetailService} from './role-master-detail.service';
+import {Component} from '@angular/core';
import {RoleDetailComponent} from './role-detail/role-detail.component';
+import {RoleMasterDetailService} from './role-master-detail.service';
import {RoleMasterItemComponent} from './role-master-item/role-master-item.component';
@Component({
diff --git a/src/app/modeler/role-mode/role-mode.service.ts b/src/app/modeler/role-mode/role-mode.service.ts
index 53a63a8..0ed034b 100644
--- a/src/app/modeler/role-mode/role-mode.service.ts
+++ b/src/app/modeler/role-mode/role-mode.service.ts
@@ -1,8 +1,8 @@
import {EventEmitter, Injectable, Injector} from '@angular/core';
import {TutorialService} from '../../tutorial/tutorial-service';
-import {Mode} from '../control-panel/modes/mode';
import {ControlPanelButton} from '../control-panel/control-panel-button';
import {ControlPanelIcon} from '../control-panel/control-panel-icon';
+import {Mode} from '../control-panel/modes/mode';
import {ModeService} from '../control-panel/modes/mode-component/mode.service';
import {Tool} from '../control-panel/tools/tool';
diff --git a/src/app/modeler/services/canvas/canvas-listener-tool.ts b/src/app/modeler/services/canvas/canvas-listener-tool.ts
index f145bb3..e0be093 100644
--- a/src/app/modeler/services/canvas/canvas-listener-tool.ts
+++ b/src/app/modeler/services/canvas/canvas-listener-tool.ts
@@ -1,25 +1,25 @@
-import {Tool} from '../../control-panel/tools/tool';
-import {MouseListener} from './listeners/mouse-listener';
-import {PlaceListener} from './listeners/place-listener';
-import {TransitionListener} from './listeners/transition-listener';
-import {ArcListener} from './listeners/arc-listener';
-import {ModelService} from '../model/model.service';
+import {ComponentType} from '@angular/cdk/overlay';
import {MatDialog} from '@angular/material/dialog';
-import {CanvasPlace} from '../../edit-mode/domain/canvas-place';
-import {CanvasTransition} from '../../edit-mode/domain/canvas-transition';
-import {CanvasArc} from '../../edit-mode/domain/canvas-arc';
-import {PetriflowCanvas, PetriflowCanvasService} from '@netgrif/petriflow.svg';
+import {Router} from '@angular/router';
import {PetriNet} from '@netgrif/petriflow';
-import {CanvasElementCollection} from '../../edit-mode/domain/canvas-element-collection';
+import {PetriflowCanvas, PetriflowCanvasService} from '@netgrif/petriflow.svg';
import {ControlPanelButton} from '../../control-panel/control-panel-button';
-import {Router} from '@angular/router';
-import {SelectedTransitionService} from '../../selected-transition.service';
-import {ComponentType} from '@angular/cdk/overlay';
+import {Tool} from '../../control-panel/tools/tool';
+import {CanvasArc} from '../../edit-mode/domain/canvas-arc';
+import {CanvasElementCollection} from '../../edit-mode/domain/canvas-element-collection';
+import {CanvasObject} from '../../edit-mode/domain/canvas-object';
+import {CanvasPlace} from '../../edit-mode/domain/canvas-place';
+import {CanvasTransition} from '../../edit-mode/domain/canvas-transition';
import {Hotkey} from '../../edit-mode/services/modes/domain/hotkey';
import {ModelerConfig} from '../../modeler-config';
-import {KeyListener} from './listeners/key-listener';
+import {SelectedTransitionService} from '../../selected-transition.service';
+import {ModelService} from '../model/model.service';
+import {ArcListener} from './listeners/arc-listener';
import {ContextMenuInterruptionError} from './listeners/context-menu-interruption-error';
-import {CanvasObject} from '../../edit-mode/domain/canvas-object';
+import {KeyListener} from './listeners/key-listener';
+import {MouseListener} from './listeners/mouse-listener';
+import {PlaceListener} from './listeners/place-listener';
+import {TransitionListener} from './listeners/transition-listener';
export abstract class CanvasListenerTool extends Tool implements MouseListener, PlaceListener, TransitionListener, ArcListener, KeyListener {
@@ -339,8 +339,23 @@ export abstract class CanvasListenerTool extends Tool implements MouseListener,
onClick(): void {
}
- openDialog(dialog: ComponentType
, config: any, afterClose: (value: any) => void): void {
- this.dialog.open(dialog, config).afterClosed().subscribe(afterClose);
+ openDialog(dialog: ComponentType, config: any, afterClose?: (value: any) => void): void {
+ this.beforeDialog();
+ this.dialog.open(dialog, config).afterClosed().subscribe(value => {
+ if (afterClose) {
+ afterClose(value);
+ }
+ this.afterDialog();
+ });
+ }
+
+ protected beforeDialog(): void {
+ this.unbindKeys();
+ }
+
+ protected afterDialog(): void {
+ this.bindKeys();
+ this.reset();
}
isLeftButton(event: PointerEvent): boolean {
diff --git a/src/app/modeler/services/canvas/canvas-mode-service.ts b/src/app/modeler/services/canvas/canvas-mode-service.ts
index 843632f..d73bf7c 100644
--- a/src/app/modeler/services/canvas/canvas-mode-service.ts
+++ b/src/app/modeler/services/canvas/canvas-mode-service.ts
@@ -1,19 +1,19 @@
-import {ModeService} from '../../control-panel/modes/mode-component/mode.service';
-import {Tool} from '../../control-panel/tools/tool';
+import {Place as SvgPlace, Transition as SvgTransition} from '@netgrif/petri.svg';
import {Arc, NodeElement, PetriNet, Place, Transition} from '@netgrif/petriflow';
-import {CanvasArc} from '../../edit-mode/domain/canvas-arc';
-import {CanvasPlace} from '../../edit-mode/domain/canvas-place';
import {
- PetriflowCanvas,
- PetriflowCanvasService,
- PetriflowPlace as PetriflowSvgPlace,
- PetriflowTransition as PetriflowSvgTransition
+ PetriflowCanvas,
+ PetriflowCanvasService,
+ PetriflowPlace as PetriflowSvgPlace,
+ PetriflowTransition as PetriflowSvgTransition,
} from '@netgrif/petriflow.svg';
-import {Place as SvgPlace, Transition as SvgTransition} from '@netgrif/petri.svg';
-import {CanvasElementCollection} from '../../edit-mode/domain/canvas-element-collection';
+import {ModeService} from '../../control-panel/modes/mode-component/mode.service';
+import {Tool} from '../../control-panel/tools/tool';
import {ArcFactory} from '../../edit-mode/domain/arc-builders/arc-factory.service';
-import {ModelService} from '../model/model.service';
+import {CanvasArc} from '../../edit-mode/domain/canvas-arc';
+import {CanvasElementCollection} from '../../edit-mode/domain/canvas-element-collection';
+import {CanvasPlace} from '../../edit-mode/domain/canvas-place';
import {CanvasTransition} from '../../edit-mode/domain/canvas-transition';
+import {ModelService} from '../model/model.service';
export abstract class CanvasModeService extends ModeService {
private readonly _elements: CanvasElementCollection;
diff --git a/src/app/modeler/services/history/history.service.ts b/src/app/modeler/services/history/history.service.ts
index 49e0c66..6500327 100644
--- a/src/app/modeler/services/history/history.service.ts
+++ b/src/app/modeler/services/history/history.service.ts
@@ -1,12 +1,12 @@
import {Injectable} from '@angular/core';
import {ExportService, PetriNet} from '@netgrif/petriflow';
import {Subject} from 'rxjs';
+import {RedoTool} from '../../control-panel/modes/redo-tool';
+import {UndoTool} from '../../control-panel/modes/undo-tool';
import {ModelerConfig} from '../../modeler-config';
import {ModelService} from '../model/model.service';
import {History} from './history';
import {HistoryChange} from './history-change';
-import {UndoTool} from '../../control-panel/modes/undo-tool';
-import {RedoTool} from '../../control-panel/modes/redo-tool';
@Injectable({
providedIn: 'root'
diff --git a/src/app/modeler/services/model/model-export.service.ts b/src/app/modeler/services/model/model-export.service.ts
index d2836ef..b862882 100644
--- a/src/app/modeler/services/model/model-export.service.ts
+++ b/src/app/modeler/services/model/model-export.service.ts
@@ -1,12 +1,12 @@
import {Injectable} from '@angular/core';
-import {ModelService} from './model.service';
+import {MatDialog} from '@angular/material/dialog';
+import {CanvasConfiguration} from '@netgrif/petri.svg';
import {BasicSimulation, ExportService, PetriNet} from '@netgrif/petriflow';
import format from 'xml-formatter';
-import {MatDialog} from '@angular/material/dialog';
import {DialogDeadNetComponent} from '../../../dialogs/dialog-dead-net/dialog-dead-net.component';
-import {CanvasConfiguration} from '@netgrif/petri.svg';
import {ModelerConfig} from '../../modeler-config';
import {ModelSourceService} from './model-source.service';
+import {ModelService} from './model.service';
@Injectable({
providedIn: 'root'
diff --git a/src/app/modeler/services/model/model-source.service.ts b/src/app/modeler/services/model/model-source.service.ts
index f53ac7d..550833d 100644
--- a/src/app/modeler/services/model/model-source.service.ts
+++ b/src/app/modeler/services/model/model-source.service.ts
@@ -1,10 +1,9 @@
import {Injectable} from '@angular/core';
-import {PetriNet} from '@netgrif/petriflow';
-import {ModelSource} from './model-source';
-import {ModelService} from './model.service';
-import {SimulationModeService} from '../../simulation-mode/simulation-mode.service';
import {Router} from '@angular/router';
+import {PetriNet} from '@netgrif/petriflow';
import {SimulationModeComponent} from '../../simulation-mode/simulation-mode.component';
+import {SimulationModeService} from '../../simulation-mode/simulation-mode.service';
+import {ModelService} from './model.service';
@Injectable({
providedIn: 'root'
diff --git a/src/app/modeler/services/model/model.service.ts b/src/app/modeler/services/model/model.service.ts
index f2b4226..aab00ef 100644
--- a/src/app/modeler/services/model/model.service.ts
+++ b/src/app/modeler/services/model/model.service.ts
@@ -1,35 +1,37 @@
import {Injectable} from '@angular/core';
+import {CanvasConfiguration} from '@netgrif/petri.svg';
import {
- Arc,
- ArcType,
- Breakpoint,
- DataType,
- DataVariable,
- I18nString,
- NodeElement,
- PetriNet,
- Place,
- Role,
- Transition,
- XmlArcType
+ Action,
+ Arc,
+ ArcType,
+ Breakpoint,
+ DataType,
+ DataVariable,
+ I18nString,
+ ImportUtils,
+ NodeElement,
+ PetriNet,
+ Place,
+ Role,
+ Transition,
+ XmlArcType,
} from '@netgrif/petriflow';
-import {ModelConfig} from './model-config';
-import {CanvasConfiguration} from '@netgrif/petri.svg';
import {BehaviorSubject, Subject} from 'rxjs';
-import {PlaceChange} from '../../history-mode/model/place/place-change';
import {ChangedTransition} from 'src/app/dialogs/dialog-transition-edit/changed-transition';
import {ChangedArc} from '../../../dialogs/dialog-arc-edit/changed-arc';
-import {SequenceGenerator} from './sequence-generator';
import {ArcFactory} from '../../edit-mode/domain/arc-builders/arc-factory.service';
-import {ModelerConfig} from '../../modeler-config';
-import {PlaceMoved} from '../../history-mode/model/place/place-moved';
-import {PlaceDeleted} from '../../history-mode/model/place/place-deleted';
import {ModelChange} from '../../history-mode/model/model/model-change';
-import {ChangedRole} from '../../role-mode/role-detail/changed-role';
+import {PlaceChange} from '../../history-mode/model/place/place-change';
+import {PlaceDeleted} from '../../history-mode/model/place/place-deleted';
+import {PlaceMoved} from '../../history-mode/model/place/place-moved';
+import {ModelerConfig} from '../../modeler-config';
import {ModelerUtils} from '../../modeler-utils';
+import {ChangedRole} from '../../role-mode/role-detail/changed-role';
+import {ModelConfig} from './model-config';
+import {SequenceGenerator} from './sequence-generator';
@Injectable({
- providedIn: 'root'
+ providedIn: 'root',
})
export class ModelService {
private readonly _model: BehaviorSubject;
@@ -43,6 +45,7 @@ export class ModelService {
private _arcIdSequence = new SequenceGenerator('a');
private _dataIdSequence = new SequenceGenerator('data');
private _roleIdSequence = new SequenceGenerator('role');
+ private _actionIdSequence = new SequenceGenerator('action');
private xmlArcTypeMapping: Map = new Map([
[XmlArcType.REGULAR, ArcType.REGULAR_PT],
@@ -59,7 +62,7 @@ export class ModelService {
]);
constructor(
- private arcFactory: ArcFactory
+ private arcFactory: ArcFactory,
) {
this._model = new BehaviorSubject(undefined);
this._placeChange = new Subject();
@@ -75,6 +78,7 @@ export class ModelService {
this._arcIdSequence.reset(newModel.getArcs());
this._dataIdSequence.reset(newModel.getDataSet());
this._roleIdSequence.reset(newModel.getRoles());
+ this._actionIdSequence.reset(this.collectActions(newModel));
}
get model(): PetriNet {
@@ -113,7 +117,7 @@ export class ModelService {
this.alignPositionCoordinate(x, CanvasConfiguration.WIDTH),
this.alignPositionCoordinate(y, CanvasConfiguration.HEIGHT),
false,
- this.nextPlaceId()
+ this.nextPlaceId(),
);
if (this.model.getPlaces().length === 0) {
place.marking = 1;
@@ -177,7 +181,7 @@ export class ModelService {
const transition = new Transition(
this.alignPositionCoordinate(x, CanvasConfiguration.WIDTH),
this.alignPositionCoordinate(y, CanvasConfiguration.HEIGHT),
- this.nextTransitionId()
+ this.nextTransitionId(),
);
this.addTransition(transition);
return transition;
@@ -272,10 +276,10 @@ export class ModelService {
return arc;
}
- public newArcBreakpoint(arc: Arc, position: DOMPoint, index: number,): void {
+ public newArcBreakpoint(arc: Arc, position: DOMPoint, index: number): void {
const breakPoint = new Breakpoint(
this.alignPositionX(position.x),
- this.alignPositionY(position.y)
+ this.alignPositionY(position.y),
);
arc.breakpoints.splice(index, 0, breakPoint);
this.model.lastChanged = Date.now();
@@ -365,6 +369,7 @@ export class ModelService {
const role = this.model.getRole(newRole.id);
role.id = newRole.role.id;
role.title = newRole.role.title;
+ role.global = newRole.role.global;
this.model.removeRole(newRole.id);
this.model.addRole(role);
@@ -439,6 +444,45 @@ export class ModelService {
return id;
}
+ public nextActionId(): string {
+ return this._actionIdSequence.next();
+ }
+
+ private collectActions(newModel: PetriNet): Action[] {
+ const actions = new Array();
+ newModel.getCaseEvents().forEach(e => {
+ actions.push(...e.preActions);
+ actions.push(...e.postActions);
+ });
+ newModel.getProcessEvents().forEach(e => {
+ actions.push(...e.preActions);
+ actions.push(...e.postActions);
+ });
+ newModel.getRoles().forEach(r => {
+ r.getEvents().forEach(e => {
+ actions.push(...e.preActions);
+ actions.push(...e.postActions);
+ });
+ });
+ newModel.getTransitions().forEach(t => {
+ t.eventSource.getEvents().forEach(e => {
+ actions.push(...e.preActions);
+ actions.push(...e.postActions);
+ });
+ t.dataGroups.forEach(g => g.getDataRefs().forEach(d => d.getEvents().forEach(e => {
+ actions.push(...e.preActions);
+ actions.push(...e.postActions);
+ })));
+ });
+ newModel.getDataSet().forEach(d => {
+ d.getEvents().forEach(e => {
+ actions.push(...e.preActions);
+ actions.push(...e.postActions);
+ });
+ });
+ return actions;
+ }
+
public alignModel(model = this.model): void {
[...model.getPlaces(), ...model.getTransitions()].forEach(node => {
node.x = this.alignPositionX(node.x);
@@ -455,7 +499,7 @@ export class ModelService {
public alignPosition(position: DOMPoint): DOMPoint {
return new DOMPoint(
this.alignPositionX(position.x),
- this.alignPositionY(position.y)
+ this.alignPositionY(position.y),
);
}
@@ -478,17 +522,19 @@ export class ModelService {
return newPosition;
}
- public getReferenceValue(id: string): number {
+ public getReferenceValue(id: string, model: PetriNet = this.model): number {
// TODO: NAB-326 probably move to petriflow.js
- const referencedData = this.model.getData(id);
+ const referencedData = model.getData(id);
if (referencedData) {
- if (referencedData.init.value) {
- return Number(referencedData.init.value);
- // TODO: NAB-326 check if isFinite and >= 0
+ if (referencedData.init?.value) {
+ if (ImportUtils.isInitValueNumber(referencedData.init)) {
+ return Number(referencedData.init.value);
+ }
+ return 0;
}
return 0;
}
- const referencedPlace = this.model.getPlace(id);
+ const referencedPlace = model.getPlace(id);
if (referencedPlace) {
return referencedPlace.marking;
}
@@ -531,8 +577,8 @@ export class ModelService {
.map(dg =>
dg.getDataRefs()
.map(ref =>
- ModelerUtils.numberOfEventActions(ref.getEvents())
- ).reduce((sum, current) => sum + current, 0)
+ ModelerUtils.numberOfEventActions(ref.getEvents()),
+ ).reduce((sum, current) => sum + current, 0),
).reduce((sum, current) => sum + current, 0);
return eventActions + dataRefActions;
}
diff --git a/src/app/modeler/services/model/sequence-generator.ts b/src/app/modeler/services/model/sequence-generator.ts
index 64f18d3..4a131db 100644
--- a/src/app/modeler/services/model/sequence-generator.ts
+++ b/src/app/modeler/services/model/sequence-generator.ts
@@ -1,4 +1,4 @@
-import {DataVariable, Element, Role} from '@netgrif/petriflow';
+import {Action, DataVariable, Element, Role} from '@netgrif/petriflow';
export class SequenceGenerator {
private _id = 0;
@@ -13,9 +13,9 @@ export class SequenceGenerator {
return `${this._prefix}${this._id}`;
}
- public reset(collection: Array): void {
+ public reset(collection: Array): void {
this._id = collection.filter(e => e.id.startsWith(this._prefix))
- .map(e => Number.parseInt(e.id.substring(1), 10))
+ .map(e => Number.parseInt(e.id.substring(this._prefix.length), 10))
.filter(elementId => !isNaN(elementId))
.reduce((a, b) => Math.max(a, b), 0);
}
diff --git a/src/app/modeler/simulation-mode/simulation-mode.component.spec.ts b/src/app/modeler/simulation-mode/simulation-mode.component.spec.ts
index 016714c..4b8aac5 100644
--- a/src/app/modeler/simulation-mode/simulation-mode.component.spec.ts
+++ b/src/app/modeler/simulation-mode/simulation-mode.component.spec.ts
@@ -1,19 +1,19 @@
-import {ComponentFixture, TestBed, waitForAsync} from '@angular/core/testing';
-
-import {SimulationModeComponent} from './simulation-mode.component';
-import {HttpClientModule} from '@angular/common/http';
-import {MaterialImportModule} from '../../material-import/material-import.module';
import {CommonModule} from '@angular/common';
-import {CdkImportModule} from '../../cdk-import/cdk-import.module';
+import {HttpClientModule} from '@angular/common/http';
+import {ComponentFixture, TestBed, waitForAsync} from '@angular/core/testing';
import {FormsModule} from '@angular/forms';
-import {RouterModule} from '@angular/router';
-import {HotkeyModule} from 'angular2-hotkeys';
-import {ResizableModule} from 'angular-resizable-element';
import {MatCheckboxModule} from '@angular/material/checkbox';
-import {MatTabsModule} from '@angular/material/tabs';
import {MatSortModule} from '@angular/material/sort';
+import {MatTabsModule} from '@angular/material/tabs';
+import {RouterModule} from '@angular/router';
import {FlexLayoutModule} from '@ngbracket/ngx-layout';
+import {ResizableModule} from 'angular-resizable-element';
+import {HotkeyModule} from 'angular2-hotkeys';
import {MonacoEditorModule} from 'ngx-monaco-editor-v2';
+import {CdkImportModule} from '../../cdk-import/cdk-import.module';
+import {MaterialImportModule} from '../../material-import/material-import.module';
+
+import {SimulationModeComponent} from './simulation-mode.component';
describe('SimulationModeComponent', () => {
let component: SimulationModeComponent;
diff --git a/src/app/modeler/simulation-mode/simulation-mode.component.ts b/src/app/modeler/simulation-mode/simulation-mode.component.ts
index d961e60..6371888 100644
--- a/src/app/modeler/simulation-mode/simulation-mode.component.ts
+++ b/src/app/modeler/simulation-mode/simulation-mode.component.ts
@@ -1,8 +1,8 @@
-import {AfterViewInit, Component, ElementRef, OnDestroy, ViewChild} from '@angular/core';
-import {SimulationModeService} from './simulation-mode.service';
+import {AfterViewInit, Component, ElementRef, HostListener, OnDestroy, ViewChild} from '@angular/core';
import {PetriflowCanvasService} from '@netgrif/petriflow.svg';
-import {ModelService} from '../services/model/model.service';
import {ModelerUtils} from '../modeler-utils';
+import {ModelService} from '../services/model/model.service';
+import {SimulationModeService} from './simulation-mode.service';
@Component({
selector: 'nab-simulation-mode',
@@ -20,6 +20,12 @@ export class SimulationModeComponent implements AfterViewInit, OnDestroy {
) {
}
+ @HostListener('contextmenu', ['$event'])
+ onRightClick(event: MouseEvent) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+
ngAfterViewInit() {
ModelerUtils.clearSelection();
this.simulationService.originalModel.next(this.modelService.model);
diff --git a/src/app/modeler/simulation-mode/simulation-mode.service.spec.ts b/src/app/modeler/simulation-mode/simulation-mode.service.spec.ts
index c16a1b1..d63175f 100644
--- a/src/app/modeler/simulation-mode/simulation-mode.service.spec.ts
+++ b/src/app/modeler/simulation-mode/simulation-mode.service.spec.ts
@@ -1,8 +1,8 @@
+import {HttpClientModule} from '@angular/common/http';
import {TestBed} from '@angular/core/testing';
+import {MatSnackBarModule} from '@angular/material/snack-bar';
import {SimulationModeService} from './simulation-mode.service';
-import {HttpClientModule} from '@angular/common/http';
-import {MatSnackBarModule} from '@angular/material/snack-bar';
describe('SimulationModeService', () => {
let service: SimulationModeService;
diff --git a/src/app/modeler/simulation-mode/simulation-mode.service.ts b/src/app/modeler/simulation-mode/simulation-mode.service.ts
index 8d79bca..650d7c8 100644
--- a/src/app/modeler/simulation-mode/simulation-mode.service.ts
+++ b/src/app/modeler/simulation-mode/simulation-mode.service.ts
@@ -1,29 +1,30 @@
import {Injectable, Injector} from '@angular/core';
+import {MatDialog} from '@angular/material/dialog';
+import {Router} from '@angular/router';
+import {Arc, BasicSimulation, ImportUtils, PetriNet, Place, Transition} from '@netgrif/petriflow';
+import {PetriflowCanvasService} from '@netgrif/petriflow.svg';
import {BehaviorSubject} from 'rxjs';
-import {BasicSimulation, PetriNet, Transition} from '@netgrif/petriflow';
import {TutorialService} from '../../tutorial/tutorial-service';
-import {ModelService} from '../services/model/model.service';
-import {EventSimulationTool} from './tool/event-simulation.tool';
-import {TaskSimulationTool} from './tool/task-simulation.tool';
-import {ResetSimulationTool} from './tool/reset-simulation.tool';
import {ToolGroup} from '../control-panel/tools/tool-group';
-import {PetriflowCanvasService} from '@netgrif/petriflow.svg';
-import {SimulationTool} from './tool/simulation-tool';
-import {ChangeDataTool} from './tool/change-data-tool';
-import {CanvasTransition} from '../edit-mode/domain/canvas-transition';
import {ArcFactory} from '../edit-mode/domain/arc-builders/arc-factory.service';
-import {CanvasModeService} from '../services/canvas/canvas-mode-service';
import {CanvasArc} from '../edit-mode/domain/canvas-arc';
-import {MatDialog} from '@angular/material/dialog';
-import {ResetPositionAndZoomTool} from './tool/reset-position-and-zoom-tool';
-import {GridTool} from './tool/grid-tool';
-import {SwitchLabelTool} from './tool/switch-label-tool';
-import {Router} from '@angular/router';
+import {CanvasPlace} from '../edit-mode/domain/canvas-place';
+import {CanvasTransition} from '../edit-mode/domain/canvas-transition';
import {SelectedTransitionService} from '../selected-transition.service';
+import {CanvasModeService} from '../services/canvas/canvas-mode-service';
+import {ModelService} from '../services/model/model.service';
import {SimulationMode} from './simulation-mode';
+import {ChangeDataTool} from './tool/change-data-tool';
+import {EventSimulationTool} from './tool/event-simulation.tool';
+import {GridTool} from './tool/grid-tool';
+import {ResetPositionAndZoomTool} from './tool/reset-position-and-zoom-tool';
+import {ResetSimulationTool} from './tool/reset-simulation.tool';
+import {SimulationTool} from './tool/simulation-tool';
+import {SwitchLabelTool} from './tool/switch-label-tool';
+import {TaskSimulationTool} from './tool/task-simulation.tool';
@Injectable({
- providedIn: 'root'
+ providedIn: 'root',
})
export class SimulationModeService extends CanvasModeService {
@@ -58,7 +59,7 @@ export class SimulationModeService extends CanvasModeService {
if (this.data.has(a.modelArc.reference)) {
multiplicity = this.data.get(a.modelArc.reference);
} else {
- multiplicity = this.modelService.getReferenceValue(a.modelArc.reference);
+ multiplicity = this.modelService.getReferenceValue(a.modelArc.reference, this.model);
}
return `${a.modelArc.reference} (${multiplicity})`;
}
@@ -73,7 +74,7 @@ export class SimulationModeService extends CanvasModeService {
new ChangeDataTool(modelService, dialog, this, router, transitionService),
new ResetPositionAndZoomTool(modelService, dialog, this, router, transitionService),
new GridTool(modelService, dialog, this, router, transitionService),
- new SwitchLabelTool(modelService, dialog, this, router, transitionService)
+ new SwitchLabelTool(modelService, dialog, this, router, transitionService),
);
this.switchTools.tools.forEach(t => t.bind());
this.tools = [
@@ -81,12 +82,18 @@ export class SimulationModeService extends CanvasModeService {
this.defaultTool,
new EventSimulationTool(modelService, dialog, this, router, transitionService),
),
- this.switchTools
+ this.switchTools,
];
this.originalModel = new BehaviorSubject(this.modelService.model.clone());
this.originalModel.subscribe(model => {
this.data = new Map(model.getArcs().filter(a => !!a.reference && !!model.getData(a.reference))
- .map(a => [a.reference, Number.parseInt(model.getData(a.reference).init?.value, 10) || 0]));
+ .map(a => {
+ const data = model.getData(a.reference);
+ if (ImportUtils.isInitValueNumber(data.init)) {
+ return [a.reference, Number.parseInt(data.init.value, 10)];
+ }
+ return [a.reference, 0];
+ }));
this.simulation = new BasicSimulation(model, this.data);
this.renderModel(model);
});
@@ -115,6 +122,18 @@ export class SimulationModeService extends CanvasModeService {
return canvasTransition;
}
+ newSvgPlace(modelPlace: Place): CanvasPlace {
+ const place = super.newSvgPlace(modelPlace);
+ this.activeTool.bindPlace(place);
+ return place;
+ }
+
+ public newSvgArc(modelArc: Arc): CanvasArc {
+ const arc = super.newSvgArc(modelArc);
+ this.activeTool.bindArc(arc);
+ return arc;
+ }
+
set onTransitionDraw(value: (t: CanvasTransition) => void) {
this._onTransitionDraw = value;
}
diff --git a/src/app/modeler/simulation-mode/simulation-mode.ts b/src/app/modeler/simulation-mode/simulation-mode.ts
index c94bd4a..49ee4a1 100644
--- a/src/app/modeler/simulation-mode/simulation-mode.ts
+++ b/src/app/modeler/simulation-mode/simulation-mode.ts
@@ -1,8 +1,8 @@
-import {Mode} from '../control-panel/modes/mode';
+import {Injector} from '@angular/core';
+import {TutorialStep} from '../../tutorial/tutorial-step';
import {ControlPanelButton} from '../control-panel/control-panel-button';
import {ControlPanelIcon} from '../control-panel/control-panel-icon';
-import {TutorialStep} from '../../tutorial/tutorial-step';
-import {Injector} from '@angular/core';
+import {Mode} from '../control-panel/modes/mode';
export class SimulationMode extends Mode {
diff --git a/src/app/modeler/simulation-mode/tool/change-data-tool.ts b/src/app/modeler/simulation-mode/tool/change-data-tool.ts
index 1d5db8f..9f2dcee 100644
--- a/src/app/modeler/simulation-mode/tool/change-data-tool.ts
+++ b/src/app/modeler/simulation-mode/tool/change-data-tool.ts
@@ -1,16 +1,16 @@
-import {SimulationTool} from './simulation-tool';
-import {ControlPanelButton} from '../../control-panel/control-panel-button';
-import {ControlPanelIcon} from '../../control-panel/control-panel-icon';
import {MatDialog} from '@angular/material/dialog';
+import {Router} from '@angular/router';
import {
- Data,
- DataSet,
- DialogChangeDataComponent
+ Data,
+ DataSet,
+ DialogChangeDataComponent,
} from '../../../dialogs/dialog-change-data/dialog-change-data.component';
+import {ControlPanelButton} from '../../control-panel/control-panel-button';
+import {ControlPanelIcon} from '../../control-panel/control-panel-icon';
+import {SelectedTransitionService} from '../../selected-transition.service';
import {ModelService} from '../../services/model/model.service';
import {SimulationModeService} from '../simulation-mode.service';
-import {Router} from '@angular/router';
-import {SelectedTransitionService} from '../../selected-transition.service';
+import {SimulationTool} from './simulation-tool';
export class ChangeDataTool extends SimulationTool {
@@ -37,13 +37,13 @@ export class ChangeDataTool extends SimulationTool {
onClick() {
super.onClick();
- this.dialog.open(DialogChangeDataComponent, {
+ this.openDialog(DialogChangeDataComponent, {
width: '50%',
panelClass: "dialog-width-50",
data: {
dataSet: this.simulationModeService.data
} as DataSet
- }).afterClosed().subscribe((data: Array) => {
+ }, (data: Array) => {
if (data) {
const dataSet = new Map(data.map(d => [d.id, d.value]));
this.simulationModeService.data = dataSet;
diff --git a/src/app/modeler/simulation-mode/tool/event-simulation.tool.ts b/src/app/modeler/simulation-mode/tool/event-simulation.tool.ts
index b69c007..41dbc10 100644
--- a/src/app/modeler/simulation-mode/tool/event-simulation.tool.ts
+++ b/src/app/modeler/simulation-mode/tool/event-simulation.tool.ts
@@ -1,12 +1,12 @@
+import {MatDialog} from '@angular/material/dialog';
+import {Router} from '@angular/router';
import {ControlPanelButton} from '../../control-panel/control-panel-button';
import {ControlPanelIcon} from '../../control-panel/control-panel-icon';
-import {SimulationTool} from './simulation-tool';
-import {ModelService} from '../../services/model/model.service';
-import {SimulationModeService} from '../simulation-mode.service';
import {CanvasTransition} from '../../edit-mode/domain/canvas-transition';
-import {MatDialog} from '@angular/material/dialog';
-import {Router} from '@angular/router';
import {SelectedTransitionService} from '../../selected-transition.service';
+import {ModelService} from '../../services/model/model.service';
+import {SimulationModeService} from '../simulation-mode.service';
+import {SimulationTool} from './simulation-tool';
export class EventSimulationTool extends SimulationTool {
diff --git a/src/app/modeler/simulation-mode/tool/grid-tool.ts b/src/app/modeler/simulation-mode/tool/grid-tool.ts
index 3122a37..a5e65ea 100644
--- a/src/app/modeler/simulation-mode/tool/grid-tool.ts
+++ b/src/app/modeler/simulation-mode/tool/grid-tool.ts
@@ -1,11 +1,11 @@
import {MatDialog} from '@angular/material/dialog';
-import { SimulationTool } from './simulation-tool';
-import {ModelService} from '../../services/model/model.service';
-import {SimulationModeService} from '../simulation-mode.service';
+import {Router} from '@angular/router';
import {ControlPanelButton} from '../../control-panel/control-panel-button';
import {ControlPanelIcon} from '../../control-panel/control-panel-icon';
-import {Router} from '@angular/router';
import {SelectedTransitionService} from '../../selected-transition.service';
+import {ModelService} from '../../services/model/model.service';
+import {SimulationModeService} from '../simulation-mode.service';
+import {SimulationTool} from './simulation-tool';
export class GridTool extends SimulationTool {
diff --git a/src/app/modeler/simulation-mode/tool/reset-position-and-zoom-tool.ts b/src/app/modeler/simulation-mode/tool/reset-position-and-zoom-tool.ts
index 5543141..1164f58 100644
--- a/src/app/modeler/simulation-mode/tool/reset-position-and-zoom-tool.ts
+++ b/src/app/modeler/simulation-mode/tool/reset-position-and-zoom-tool.ts
@@ -1,11 +1,11 @@
import {MatDialog} from '@angular/material/dialog';
-import { SimulationTool } from './simulation-tool';
-import {ModelService} from '../../services/model/model.service';
-import {SimulationModeService} from '../simulation-mode.service';
+import {Router} from '@angular/router';
import {ControlPanelButton} from '../../control-panel/control-panel-button';
import {ControlPanelIcon} from '../../control-panel/control-panel-icon';
-import {Router} from '@angular/router';
import {SelectedTransitionService} from '../../selected-transition.service';
+import {ModelService} from '../../services/model/model.service';
+import {SimulationModeService} from '../simulation-mode.service';
+import {SimulationTool} from './simulation-tool';
export class ResetPositionAndZoomTool extends SimulationTool {
diff --git a/src/app/modeler/simulation-mode/tool/reset-simulation.tool.ts b/src/app/modeler/simulation-mode/tool/reset-simulation.tool.ts
index 8e26cc4..75fd972 100644
--- a/src/app/modeler/simulation-mode/tool/reset-simulation.tool.ts
+++ b/src/app/modeler/simulation-mode/tool/reset-simulation.tool.ts
@@ -1,11 +1,11 @@
+import {MatDialog} from '@angular/material/dialog';
+import {Router} from '@angular/router';
import {ControlPanelButton} from '../../control-panel/control-panel-button';
import {ControlPanelIcon} from '../../control-panel/control-panel-icon';
-import {SimulationTool} from './simulation-tool';
+import {SelectedTransitionService} from '../../selected-transition.service';
import {ModelService} from '../../services/model/model.service';
-import {MatDialog} from '@angular/material/dialog';
import {SimulationModeService} from '../simulation-mode.service';
-import {Router} from '@angular/router';
-import {SelectedTransitionService} from '../../selected-transition.service';
+import {SimulationTool} from './simulation-tool';
export class ResetSimulationTool extends SimulationTool {
diff --git a/src/app/modeler/simulation-mode/tool/simulation-tool.ts b/src/app/modeler/simulation-mode/tool/simulation-tool.ts
index 37740f9..4199b4a 100644
--- a/src/app/modeler/simulation-mode/tool/simulation-tool.ts
+++ b/src/app/modeler/simulation-mode/tool/simulation-tool.ts
@@ -1,18 +1,23 @@
-import {SimulationModeService} from '../simulation-mode.service';
+import {MatDialog} from '@angular/material/dialog';
+import {Router} from '@angular/router';
+import {BasicSimulation, Place} from '@netgrif/petriflow';
import {PetriflowCanvasService} from '@netgrif/petriflow.svg';
-import {CanvasElementCollection} from '../../edit-mode/domain/canvas-element-collection';
-import {BasicSimulation} from '@netgrif/petriflow';
-import {CanvasListenerTool} from '../../services/canvas/canvas-listener-tool';
+import {
+ Data,
+ DataSet,
+ DialogChangeDataComponent,
+} from '../../../dialogs/dialog-change-data/dialog-change-data.component';
+import {DialogMarkingChangeComponent} from '../../../dialogs/dialog-marking-change/dialog-marking-change.component';
+import {PlaceEditData} from '../../../dialogs/dialog-place-edit/dialog-place-edit.component';
import {ControlPanelButton} from '../../control-panel/control-panel-button';
-import {ModelService} from '../../services/model/model.service';
-import {MatDialog} from '@angular/material/dialog';
-import {CanvasTransition} from '../../edit-mode/domain/canvas-transition';
-import {CanvasPlace} from '../../edit-mode/domain/canvas-place';
import {CanvasArc} from '../../edit-mode/domain/canvas-arc';
-import {Router} from '@angular/router';
+import {CanvasElementCollection} from '../../edit-mode/domain/canvas-element-collection';
+import {CanvasPlace} from '../../edit-mode/domain/canvas-place';
+import {CanvasTransition} from '../../edit-mode/domain/canvas-transition';
import {SelectedTransitionService} from '../../selected-transition.service';
-import {id} from '@swimlane/ngx-charts';
-import {transition} from '@angular/animations';
+import {CanvasListenerTool} from '../../services/canvas/canvas-listener-tool';
+import {ModelService} from '../../services/model/model.service';
+import {SimulationModeService} from '../simulation-mode.service';
export abstract class SimulationTool extends CanvasListenerTool {
@@ -50,12 +55,74 @@ export abstract class SimulationTool extends CanvasListenerTool {
onTransitionLeave(event: MouseEvent, transition: CanvasTransition) {
}
+ onPlaceUp(event: PointerEvent, place: CanvasPlace) {
+ super.onPlaceUp(event, place);
+ // do not remove this setTimout - Windows user will not be happy (context menu problem)
+ setTimeout(() => {
+ this.openMarkingPlaceDialog(place.modelPlace);
+ }, 0);
+ }
+
onPlaceEnter(event: MouseEvent, place: CanvasPlace) {
}
onPlaceLeave(event: MouseEvent, place: CanvasPlace) {
}
+ onArcUp(event: PointerEvent, arc: CanvasArc) {
+ super.onArcUp(event, arc);
+ const reference = arc.modelArc.reference;
+ if (!reference) {
+ return;
+ }
+ const value = this.simulationModeService.data.get(reference);
+ if (value === undefined) {
+ const place = this.simulationModeService.model.getPlace(reference);
+ if (place) {
+ setTimeout(() => {
+ this.openMarkingPlaceDialog(place);
+ }, 0);
+ }
+ } else {
+ setTimeout(() => {
+ this.openDataDialog(reference, value);
+ }, 0);
+ }
+ }
+
+ openMarkingPlaceDialog(place: Place): void {
+ this.openDialog(DialogMarkingChangeComponent, {
+ width: '50%',
+ panelClass: "dialog-width-50",
+ data: {
+ placeId: place.id
+ } as PlaceEditData
+ }, (data: number) => {
+ if (data !== undefined) {
+ place.marking = data;
+ this.simulation.updatePlaceReferences();
+ this.simulationModeService.renderModel(this.simulation.simulationModel);
+ }
+ });
+ }
+
+ openDataDialog(id: string, value: number): void {
+ const dataSet = new Map([[id, value]]);
+ this.openDialog(DialogChangeDataComponent, {
+ width: '50%',
+ panelClass: "dialog-width-50",
+ data: {
+ dataSet: dataSet
+ } as DataSet
+ }, (data: Array) => {
+ if (data) {
+ this.simulationModeService.data.set(data[0].id, data[0].value);
+ this.simulation.updateData(this.simulationModeService.data);
+ this.simulationModeService.renderModel(this.simulation.simulationModel);
+ }
+ });
+ }
+
onArcEnter(event: MouseEvent, arc: CanvasArc) {
}
@@ -66,6 +133,10 @@ export abstract class SimulationTool extends CanvasListenerTool {
this.simulation?.reset();
}
+ protected afterDialog() {
+ this.bindKeys();
+ }
+
get canvasService(): PetriflowCanvasService {
return this._simulationModeService.canvasService;
}
diff --git a/src/app/modeler/simulation-mode/tool/switch-label-tool.ts b/src/app/modeler/simulation-mode/tool/switch-label-tool.ts
index 142a09b..9827fbf 100644
--- a/src/app/modeler/simulation-mode/tool/switch-label-tool.ts
+++ b/src/app/modeler/simulation-mode/tool/switch-label-tool.ts
@@ -1,12 +1,12 @@
import {MatDialog} from '@angular/material/dialog';
-import { SimulationTool } from './simulation-tool';
-import {ModelService} from '../../services/model/model.service';
-import {SimulationModeService} from '../simulation-mode.service';
+import {Router} from '@angular/router';
+import {NodeElement} from '@netgrif/petriflow';
import {ControlPanelButton} from '../../control-panel/control-panel-button';
import {ControlPanelIcon} from '../../control-panel/control-panel-icon';
-import {NodeElement} from '@netgrif/petriflow';
-import {Router} from '@angular/router';
import {SelectedTransitionService} from '../../selected-transition.service';
+import {ModelService} from '../../services/model/model.service';
+import {SimulationModeService} from '../simulation-mode.service';
+import {SimulationTool} from './simulation-tool';
export class SwitchLabelTool extends SimulationTool {
diff --git a/src/app/modeler/simulation-mode/tool/task-simulation.tool.ts b/src/app/modeler/simulation-mode/tool/task-simulation.tool.ts
index 9e872ef..2daf2cf 100644
--- a/src/app/modeler/simulation-mode/tool/task-simulation.tool.ts
+++ b/src/app/modeler/simulation-mode/tool/task-simulation.tool.ts
@@ -1,12 +1,12 @@
+import {MatDialog} from '@angular/material/dialog';
+import {Router} from '@angular/router';
import {ControlPanelButton} from '../../control-panel/control-panel-button';
import {ControlPanelIcon} from '../../control-panel/control-panel-icon';
-import {SimulationTool} from './simulation-tool';
-import {ModelService} from '../../services/model/model.service';
-import {SimulationModeService} from '../simulation-mode.service';
import {CanvasTransition} from '../../edit-mode/domain/canvas-transition';
-import {MatDialog} from '@angular/material/dialog';
-import {Router} from '@angular/router';
import {SelectedTransitionService} from '../../selected-transition.service';
+import {ModelService} from '../../services/model/model.service';
+import {SimulationModeService} from '../simulation-mode.service';
+import {SimulationTool} from './simulation-tool';
export class TaskSimulationTool extends SimulationTool {
diff --git a/src/app/tutorial/tutorial-service.ts b/src/app/tutorial/tutorial-service.ts
index 97438d2..bed1d09 100644
--- a/src/app/tutorial/tutorial-service.ts
+++ b/src/app/tutorial/tutorial-service.ts
@@ -1,8 +1,8 @@
import {Injectable} from '@angular/core';
-import {MortgageService} from '../modeler/mortgage.service';
import {Router} from '@angular/router';
-import {TutorialStep} from './tutorial-step';
+import {MortgageService} from '../modeler/mortgage.service';
import {ModelService} from '../modeler/services/model/model.service';
+import {TutorialStep} from './tutorial-step';
@Injectable({
providedIn: 'root'
@@ -167,8 +167,8 @@ export class TutorialService {
);
this.demo = TutorialStep.of(
'demo',
- 'Demo Application',
- 'You can deploy your Petriflow models in our demo application after registration.',
+ 'Netgrif eTask',
+ 'You can deploy your Petriflow models in our eTask application after registration.',
() => {
},
() => {
diff --git a/src/index.html b/src/index.html
index 62d565b..4221484 100644
--- a/src/index.html
+++ b/src/index.html
@@ -2,15 +2,83 @@
- Netgrif builder
+ Netgrif Builder
+
+
+
-
+
+
+
+
+
+
diff --git a/src/styles.scss b/src/styles.scss
index debb327..bfa5f99 100644
--- a/src/styles.scss
+++ b/src/styles.scss
@@ -229,3 +229,36 @@ nab-simulation-mode {
height: 40px;
}
}
+
+.app-loading {
+ @keyframes fadeInFromNone {
+ 0% {
+ display: none;
+ opacity: 0;
+ }
+
+ 1% {
+ display: block;
+ opacity: 0;
+ }
+
+ 100% {
+ display: block;
+ opacity: 1;
+ }
+ }
+
+ .logo {
+ width: 100px;
+ height: 100px;
+ animation: 1s ease-out 0s 1 fadeInFromNone;
+ // this way asset gets processed by webpack
+ background: url(assets/netgrif_logo.svg) center center no-repeat;
+ background-size: contain;
+ }
+}
+
+.app-version-text {
+ font-size: 9px;
+ color: map-get(netgif-theme.$netgrif-blue, 200);
+}