Skip to content

Commit e5daa2f

Browse files
committed
[NAB-375] Variables with no init values referenced in arcs will cause arcs not to load
- Improved usage of ImportUtils.isInitValueNumber to replace regex checks for initialization values.
1 parent 020ecfd commit e5daa2f

File tree

2 files changed

+17
-16
lines changed

2 files changed

+17
-16
lines changed

src/app/modeler/services/model/model.service.ts

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,13 @@ import {
66
DataType,
77
DataVariable,
88
I18nString,
9+
ImportUtils,
910
NodeElement,
1011
PetriNet,
1112
Place,
1213
Role,
1314
Transition,
14-
XmlArcType
15+
XmlArcType,
1516
} from '@netgrif/petriflow';
1617
import {ModelConfig} from './model-config';
1718
import {CanvasConfiguration} from '@netgrif/petri.svg';
@@ -29,7 +30,7 @@ import {ChangedRole} from '../../role-mode/role-detail/changed-role';
2930
import {ModelerUtils} from '../../modeler-utils';
3031

3132
@Injectable({
32-
providedIn: 'root'
33+
providedIn: 'root',
3334
})
3435
export class ModelService {
3536
private readonly _model: BehaviorSubject<PetriNet>;
@@ -59,7 +60,7 @@ export class ModelService {
5960
]);
6061

6162
constructor(
62-
private arcFactory: ArcFactory
63+
private arcFactory: ArcFactory,
6364
) {
6465
this._model = new BehaviorSubject<PetriNet>(undefined);
6566
this._placeChange = new Subject<PlaceChange>();
@@ -113,7 +114,7 @@ export class ModelService {
113114
this.alignPositionCoordinate(x, CanvasConfiguration.WIDTH),
114115
this.alignPositionCoordinate(y, CanvasConfiguration.HEIGHT),
115116
false,
116-
this.nextPlaceId()
117+
this.nextPlaceId(),
117118
);
118119
if (this.model.getPlaces().length === 0) {
119120
place.marking = 1;
@@ -177,7 +178,7 @@ export class ModelService {
177178
const transition = new Transition(
178179
this.alignPositionCoordinate(x, CanvasConfiguration.WIDTH),
179180
this.alignPositionCoordinate(y, CanvasConfiguration.HEIGHT),
180-
this.nextTransitionId()
181+
this.nextTransitionId(),
181182
);
182183
this.addTransition(transition);
183184
return transition;
@@ -272,10 +273,10 @@ export class ModelService {
272273
return arc;
273274
}
274275

275-
public newArcBreakpoint(arc: Arc<NodeElement, NodeElement>, position: DOMPoint, index: number,): void {
276+
public newArcBreakpoint(arc: Arc<NodeElement, NodeElement>, position: DOMPoint, index: number): void {
276277
const breakPoint = new Breakpoint(
277278
this.alignPositionX(position.x),
278-
this.alignPositionY(position.y)
279+
this.alignPositionY(position.y),
279280
);
280281
arc.breakpoints.splice(index, 0, breakPoint);
281282
this.model.lastChanged = Date.now();
@@ -455,7 +456,7 @@ export class ModelService {
455456
public alignPosition(position: DOMPoint): DOMPoint {
456457
return new DOMPoint(
457458
this.alignPositionX(position.x),
458-
this.alignPositionY(position.y)
459+
this.alignPositionY(position.y),
459460
);
460461
}
461462

@@ -483,7 +484,7 @@ export class ModelService {
483484
const referencedData = model.getData(id);
484485
if (referencedData) {
485486
if (referencedData.init.value) {
486-
if (/^[1-9]\d*$/.test(referencedData.init.value.trim())) {
487+
if (ImportUtils.isInitValueNumber(referencedData.init)) {
487488
return Number(referencedData.init.value);
488489
}
489490
return 0;
@@ -533,8 +534,8 @@ export class ModelService {
533534
.map(dg =>
534535
dg.getDataRefs()
535536
.map(ref =>
536-
ModelerUtils.numberOfEventActions(ref.getEvents())
537-
).reduce((sum, current) => sum + current, 0)
537+
ModelerUtils.numberOfEventActions(ref.getEvents()),
538+
).reduce((sum, current) => sum + current, 0),
538539
).reduce((sum, current) => sum + current, 0);
539540
return eventActions + dataRefActions;
540541
}

src/app/modeler/simulation-mode/simulation-mode.service.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import {Injectable, Injector} from '@angular/core';
22
import {BehaviorSubject} from 'rxjs';
3-
import {Arc, BasicSimulation, PetriNet, Place, Transition} from '@netgrif/petriflow';
3+
import {Arc, BasicSimulation, ImportUtils, PetriNet, Place, Transition} from '@netgrif/petriflow';
44
import {TutorialService} from '../../tutorial/tutorial-service';
55
import {ModelService} from '../services/model/model.service';
66
import {EventSimulationTool} from './tool/event-simulation.tool';
@@ -24,7 +24,7 @@ import {SimulationMode} from './simulation-mode';
2424
import {CanvasPlace} from '../edit-mode/domain/canvas-place';
2525

2626
@Injectable({
27-
providedIn: 'root'
27+
providedIn: 'root',
2828
})
2929
export class SimulationModeService extends CanvasModeService<SimulationTool> {
3030

@@ -74,22 +74,22 @@ export class SimulationModeService extends CanvasModeService<SimulationTool> {
7474
new ChangeDataTool(modelService, dialog, this, router, transitionService),
7575
new ResetPositionAndZoomTool(modelService, dialog, this, router, transitionService),
7676
new GridTool(modelService, dialog, this, router, transitionService),
77-
new SwitchLabelTool(modelService, dialog, this, router, transitionService)
77+
new SwitchLabelTool(modelService, dialog, this, router, transitionService),
7878
);
7979
this.switchTools.tools.forEach(t => t.bind());
8080
this.tools = [
8181
new ToolGroup<SimulationTool>(
8282
this.defaultTool,
8383
new EventSimulationTool(modelService, dialog, this, router, transitionService),
8484
),
85-
this.switchTools
85+
this.switchTools,
8686
];
8787
this.originalModel = new BehaviorSubject<PetriNet>(this.modelService.model.clone());
8888
this.originalModel.subscribe(model => {
8989
this.data = new Map(model.getArcs().filter(a => !!a.reference && !!model.getData(a.reference))
9090
.map(a => {
9191
const data = model.getData(a.reference);
92-
if (!!data.init && !!data.init.value && /^[1-9]\d*$/.test(data.init.value)) {
92+
if (ImportUtils.isInitValueNumber(data.init)) {
9393
return [a.reference, Number.parseInt(data.init.value, 10)];
9494
}
9595
return [a.reference, 0];

0 commit comments

Comments
 (0)