Skip to content

Commit 3c41e30

Browse files
authored
Merge pull request #26 from netgrif/NAB-375
[NAB-375] Variables with no init values referenced in arcs will cause arcs not to load
2 parents f5df106 + e5daa2f commit 3c41e30

File tree

2 files changed

+26
-17
lines changed

2 files changed

+26
-17
lines changed

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

Lines changed: 15 additions & 12 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,8 +484,10 @@ export class ModelService {
483484
const referencedData = model.getData(id);
484485
if (referencedData) {
485486
if (referencedData.init.value) {
486-
return Number(referencedData.init.value);
487-
// TODO: NAB-326 check if isFinite and >= 0
487+
if (ImportUtils.isInitValueNumber(referencedData.init)) {
488+
return Number(referencedData.init.value);
489+
}
490+
return 0;
488491
}
489492
return 0;
490493
}
@@ -531,8 +534,8 @@ export class ModelService {
531534
.map(dg =>
532535
dg.getDataRefs()
533536
.map(ref =>
534-
ModelerUtils.numberOfEventActions(ref.getEvents())
535-
).reduce((sum, current) => sum + current, 0)
537+
ModelerUtils.numberOfEventActions(ref.getEvents()),
538+
).reduce((sum, current) => sum + current, 0),
536539
).reduce((sum, current) => sum + current, 0);
537540
return eventActions + dataRefActions;
538541
}

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

Lines changed: 11 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,20 +74,26 @@ 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))
90-
.map(a => [a.reference, Number.parseInt(model.getData(a.reference).init?.value, 10) || 0]));
90+
.map(a => {
91+
const data = model.getData(a.reference);
92+
if (ImportUtils.isInitValueNumber(data.init)) {
93+
return [a.reference, Number.parseInt(data.init.value, 10)];
94+
}
95+
return [a.reference, 0];
96+
}));
9197
this.simulation = new BasicSimulation(model, this.data);
9298
this.renderModel(model);
9399
});

0 commit comments

Comments
 (0)