diff --git a/Train/SimpleTrainTrack.mch b/Train/SimpleTrainTrack.mch index b34d333e55109ba4d9c4396e6debf7e8e6f447eb..eec275545bc87d6ab29819c8641e3b89fa5bdc40 100644 --- a/Train/SimpleTrainTrack.mch +++ b/Train/SimpleTrainTrack.mch @@ -7,12 +7,26 @@ CONSTANTS TrackElementNumber, TRACK, TTD_TrackElements PROPERTIES TrackElementNumber : NATURAL1 -& TRACK = 1..TrackElementNumber +& TRACK = 0..TrackElementNumber & TTD_TrackElements : TTDS --> FIN1(TRACK) & TrackElementNumber = 30 -& TTD_TrackElements = {ttd1 |-> 1..10 , ttd2 |-> 11..25 , ttd3 |-> 26..30} +& TTD_TrackElements = {ttd1 |-> 0..10 , ttd2 |-> 11..25 , ttd3 |-> 26..30} +VARIABLES + occ +INVARIANT + occ <: TTDS +INITIALISATION occ := {} +OPERATIONS + TTD_Occupied(ttd) = PRE ttd:TTDS \ occ THEN + occ := occ \/ {ttd} + END; + TTD_Free(ttd) = PRE ttd:occ THEN + occ := occ \ {ttd} + END DEFINITIONS - "LibrarySVG.def" // enable to use the external functions in the VisB json file + "LibrarySVG.def"; // enable to use the external functions in the VisB json file + OCC_TE == union(ran(%tt.(tt:occ|TTD_TrackElements(tt)))); + FREE_TE == union(ran(%tt.(tt/:occ|TTD_TrackElements(tt)))) END \ No newline at end of file diff --git a/Train/Track.json b/Train/Track.json index dc4626698dc4ef90f5274ad5b7c7c8c0a2f23328..8325b3bb053fd0c9dcd1a650ec0caa14932e3a0d 100644 --- a/Train/Track.json +++ b/Train/Track.json @@ -5,27 +5,40 @@ { "id":"track_polyline", "attr":"points", - "value":"svg_axis(TRACK,100.0/real(TrackElementNumber),1.0,100.0,1.0)", + "value":"svg_axis({TrackElementNumber+1} \\/ TRACK ,100.0/real(TrackElementNumber+1),1.0,100.0,1.0)", "comment":"show ticks for Track units" }, { "id":"ttd_polyline", "attr":"points", - "value":"svg_set_polygon(ran(%tt.(tt:TTDS|max(TTD_TrackElements(tt)))),100.0/real(TrackElementNumber),1.0,100.0,2.0)", + "value":"svg_axis({0} \\/ ran(%tt.(tt:TTDS|1+max(TTD_TrackElements(tt)))),100.0/real(TrackElementNumber+1),1.0,100.0,2.0)", "comment":"show ticks for TTD Limits" }, { "id":"occupied_ttd_polygon", "attr":"points", - "value":"svg_axis(union(ran(%tt.(tt:{ttd1}|TTD_TrackElements(tt)))),100.0/real(TrackElementNumber),1.0,100.0,2.0)", + "value":"svg_set_polygon(OCC_TE,100.0/real(TrackElementNumber+1),0.0,100.0,2.0)", "comment":"show ticks for TTD Limits" }, { "id":"cleared_ttd_polygon", "attr":"points", - "value":"svg_set_polygon(union(ran(%tt.(tt:{ttd2,ttd3}|TTD_TrackElements(tt)))),100.0/real(TrackElementNumber),1.0,100.0,2.0)", + "value":"svg_set_polygon(FREE_TE,100.0/real(TrackElementNumber+1),0.0,100.0,2.0)", "comment":"show ticks for TTD Limits" } ], - "events":[ ] + "events":[ + { + "id":"occupied_ttd_polygon", + "event":"TTD_Free", + "optional" : true, + "hovers": [{ "attr":"stroke", "enter":"black", "leave":"none"}] + }, + { + "id":"cleared_ttd_polygon", + "event":"TTD_Occupied", + "optional" : true, + "hovers": [{ "attr":"stroke", "enter":"black", "leave":"none"}] + } + ] } \ No newline at end of file diff --git a/Train/Track.svg b/Train/Track.svg index e028a48bdd54d9b7f6d898af7d069699a3605e70..6f5a9802e943a502a2ff243f52132ddce9001be9 100644 --- a/Train/Track.svg +++ b/Train/Track.svg @@ -10,12 +10,12 @@ <polygon id = "track_polyline" points="0,0 100,0" style="stroke-width: 0.3" - stroke="red" fill="none" + stroke="black" fill="none" transform="translate(10,20.5)" /> <polygon id = "ttd_polyline" points="0,0 100,0" style="stroke-width: 0.3" - stroke="red" fill="none" + stroke="gray" fill="none" transform="translate(10,22.5)" />