From b2818fc4394fc2c7c54f0332d6e89f311d65982f Mon Sep 17 00:00:00 2001 From: antonleviathan Date: Tue, 20 Nov 2018 19:41:52 +0100 Subject: [PATCH 1/6] Add labels to places and transitions --- src/PetrinetView.purs | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/src/PetrinetView.purs b/src/PetrinetView.purs index 3afec11e..a57e6ef8 100644 --- a/src/PetrinetView.purs +++ b/src/PetrinetView.purs @@ -241,12 +241,22 @@ ui initialState' = -------------------------------------------------------------------------------- svgTransitionRect :: ∀ a tid. Show tid => Vec2D -> tid -> HTML a ((QueryF pid tid) Unit) - svgTransitionRect pos tid = SE.rect - [ SA.class_ "css-transition-rect" - , SA.width transitionWidth - , SA.height transitionHeight - , SA.x (pos.x - transitionWidth / 2.0) - , SA.y (pos.y - transitionHeight / 2.0) + svgTransitionRect pos tid = + SE.g [] [ + SE.rect + [ SA.class_ "css-transition-rect" + , SA.width transitionWidth + , SA.height transitionHeight + , SA.x (pos.x - transitionWidth / 2.0) + , SA.y (pos.y - transitionHeight / 2.0) + ] + , SE.text + [ SA.class_ "css-place-label" + , SA.x (pos.x + 1.5 * placeRadius) + , SA.y (pos.y + 0.3) + , SA.font_size (SA.FontSizeLength (SA.Px 2.0)) + ] + [ HH.text $ mkTransitionIdStr tid ] ] svgArc :: ∀ a pid tid. Show tid => ArcModel tid -> HTML a ((QueryF pid tid) Unit) @@ -334,6 +344,12 @@ ui initialState' = , SA.cy point.y ] , svgTokens tokens point + , SE.text [ SA.class_ "css-place-label" + , SA.x (point.x + 1.5 * placeRadius) + , SA.y (point.y + 0.3) + , SA.font_size (SA.FontSizeLength (SA.Px 2.0)) + ] + [ HH.text label ] , SE.text [ SA.class_ "css-place-label" , SA.x (point.x + 0.2 * placeRadius) , SA.y (point.y - 0.2 * placeRadius) From 6f891696c5b75814f529f83f28a535c038f77dfb Mon Sep 17 00:00:00 2001 From: antonleviathan Date: Tue, 20 Nov 2018 23:52:37 +0100 Subject: [PATCH 2/6] Update some naming and make value for shifting label text dependent on font size --- dist/index.html | 7 ++++--- src/PetrinetView.purs | 39 ++++++++++++++++++++++++--------------- 2 files changed, 28 insertions(+), 18 deletions(-) diff --git a/dist/index.html b/dist/index.html index 8c468659..91b020f2 100644 --- a/dist/index.html +++ b/dist/index.html @@ -30,13 +30,14 @@ .css-place.focused { fill: lightblue; } - .css-place-label { - font-size: 0.075em; + .css-place-name-label, .css-transition-name-label { + fill: rgb(100,100,100); + } + .css-place-label{ fill: rgb(100,100,100); } .css-arc-label { display: none; /* TODO development */ - font-size: 0.1em; fill: rgb(200,200,200); } .css-arc, diff --git a/src/PetrinetView.purs b/src/PetrinetView.purs index a57e6ef8..aaa1fae4 100644 --- a/src/PetrinetView.purs +++ b/src/PetrinetView.purs @@ -41,13 +41,22 @@ import TransitionEditor as TransitionEditor -- config ---------------------------------------------------------------------- +fontSize :: Number +fontSize = 0.1 + +tokenPadding :: Number +tokenPadding = placeRadius * 0.2 + placeRadius :: Number placeRadius = 4.0 * tokenRadius tokenRadius :: Number tokenRadius = 0.5 +transitionHeight :: Number transitionHeight = 2.0 * placeRadius + +transitionWidth :: Number transitionWidth = 2.0 * placeRadius arcAnimationDuration :: Duration @@ -241,20 +250,20 @@ ui initialState' = -------------------------------------------------------------------------------- svgTransitionRect :: ∀ a tid. Show tid => Vec2D -> tid -> HTML a ((QueryF pid tid) Unit) - svgTransitionRect pos tid = + svgTransitionRect point tid = SE.g [] [ SE.rect [ SA.class_ "css-transition-rect" , SA.width transitionWidth , SA.height transitionHeight - , SA.x (pos.x - transitionWidth / 2.0) - , SA.y (pos.y - transitionHeight / 2.0) + , SA.x (point.x - transitionWidth / 2.0) + , SA.y (point.y - transitionHeight / 2.0) ] , SE.text - [ SA.class_ "css-place-label" - , SA.x (pos.x + 1.5 * placeRadius) - , SA.y (pos.y + 0.3) - , SA.font_size (SA.FontSizeLength (SA.Px 2.0)) + [ SA.class_ "css-transition-name-label" + , SA.x (point.x + 1.5 * placeRadius) + , SA.y (point.y + 4.0 * fontSize) + , SA.font_size (SA.FontSizeLength $ Em fontSize) ] [ HH.text $ mkTransitionIdStr tid ] ] @@ -277,7 +286,7 @@ ui initialState' = [ SA.class_ "css-arc-label" , SA.x arc.src.x , SA.y arc.src.y - , SA.font_size (FontSizeLength $ Px 2.0) + , SA.font_size (FontSizeLength $ Em fontSize) -- TODO add SVG.textPath prop, refer to the svg path using xlink:href="#" ] [ HH.text arc.htmlId ] @@ -344,16 +353,16 @@ ui initialState' = , SA.cy point.y ] , svgTokens tokens point - , SE.text [ SA.class_ "css-place-label" - , SA.x (point.x + 1.5 * placeRadius) - , SA.y (point.y + 0.3) - , SA.font_size (SA.FontSizeLength (SA.Px 2.0)) + , SE.text [ SA.class_ "css-place-name-label" + , SA.x (point.x + placeRadius + placeRadius / 2.0) + , SA.y (point.y + 4.0 * fontSize) + , SA.font_size (SA.FontSizeLength $ Em fontSize) ] [ HH.text label ] , SE.text [ SA.class_ "css-place-label" - , SA.x (point.x + 0.2 * placeRadius) - , SA.y (point.y - 0.2 * placeRadius) - , SA.font_size (SA.FontSizeLength (SA.Px 2.0)) + , SA.x (point.x + tokenPadding) + , SA.y (point.y - tokenPadding) + , SA.font_size (SA.FontSizeLength $ Em fontSize) ] [ HH.text $ if tokens == 0 || tokens == 1 then "" else show tokens ] ] From 8bef93c385374ea625521ce0270c0f7abdb4ed95 Mon Sep 17 00:00:00 2001 From: antonleviathan Date: Thu, 22 Nov 2018 16:17:32 +0100 Subject: [PATCH 3/6] Simplify svg nesting for tx rect and label --- src/PetrinetView.purs | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/src/PetrinetView.purs b/src/PetrinetView.purs index aaa1fae4..8e162e20 100644 --- a/src/PetrinetView.purs +++ b/src/PetrinetView.purs @@ -238,7 +238,7 @@ ui initialState' = , HE.onClick (HE.input_ (FocusTransition tid)) , HE.onDoubleClick (HE.input_ (if isEnabled then FireTransition tid else FocusTransition tid)) ] - (svgPreArcs <> svgPostArcs <> [svgTransitionRect trPos tid]) + (svgPreArcs <> svgPostArcs <> [svgTransitionRect trPos tid] <> [svgTransitionLabel trPos tid]) -- TODO simplify, especially (src, dest) order given isPost mkPostArc :: ∀ tid a. Show tid => tid -> Vec2D -> PlaceMarkingF pid Tokens -> Maybe (ArcModel tid) @@ -251,22 +251,21 @@ ui initialState' = svgTransitionRect :: ∀ a tid. Show tid => Vec2D -> tid -> HTML a ((QueryF pid tid) Unit) svgTransitionRect point tid = - SE.g [] [ - SE.rect - [ SA.class_ "css-transition-rect" - , SA.width transitionWidth - , SA.height transitionHeight - , SA.x (point.x - transitionWidth / 2.0) - , SA.y (point.y - transitionHeight / 2.0) - ] - , SE.text - [ SA.class_ "css-transition-name-label" - , SA.x (point.x + 1.5 * placeRadius) - , SA.y (point.y + 4.0 * fontSize) - , SA.font_size (SA.FontSizeLength $ Em fontSize) - ] - [ HH.text $ mkTransitionIdStr tid ] - ] + SE.rect [ SA.class_ "css-transition-rect" + , SA.width transitionWidth + , SA.height transitionHeight + , SA.x (point.x - transitionWidth / 2.0) + , SA.y (point.y - transitionHeight / 2.0) + ] + + svgTransitionLabel :: ∀ a tid. Show tid => Vec2D -> tid -> HTML a ((QueryF pid tid) Unit) + svgTransitionLabel point tid = + SE.text [ SA.class_ "css-transition-name-label" + , SA.x (point.x + 1.5 * placeRadius) + , SA.y (point.y + 4.0 * fontSize) + , SA.font_size (SA.FontSizeLength $ Em fontSize) + ] + [ HH.text $ mkTransitionIdStr tid ] svgArc :: ∀ a pid tid. Show tid => ArcModel tid -> HTML a ((QueryF pid tid) Unit) svgArc arc = From e6b9e6e5965dd4abc91fd3c2e211b03d38426486 Mon Sep 17 00:00:00 2001 From: antonleviathan Date: Fri, 23 Nov 2018 18:29:47 +0100 Subject: [PATCH 4/6] Move config vars back into Config.purs --- src/Config.purs | 25 +++++++++++++++++++++++++ src/PetrinetView.purs | 26 +------------------------- 2 files changed, 26 insertions(+), 25 deletions(-) create mode 100644 src/Config.purs diff --git a/src/Config.purs b/src/Config.purs new file mode 100644 index 00000000..8f16531f --- /dev/null +++ b/src/Config.purs @@ -0,0 +1,25 @@ +module Config where + +import Prelude +import Svg.Attributes (Duration, seconds) + +fontSize :: Number +fontSize = 0.1 + +tokenPadding :: Number +tokenPadding = placeRadius * 0.2 + +placeRadius :: Number +placeRadius = 4.0 * tokenRadius + +tokenRadius :: Number +tokenRadius = 0.5 + +transitionHeight :: Number +transitionHeight = 2.0 * placeRadius + +transitionWidth :: Number +transitionWidth = 2.0 * placeRadius + +arcAnimationDuration :: Duration +arcAnimationDuration = seconds 0.70 diff --git a/src/PetrinetView.purs b/src/PetrinetView.purs index 8e162e20..58e9b951 100644 --- a/src/PetrinetView.purs +++ b/src/PetrinetView.purs @@ -1,6 +1,7 @@ module PetrinetView where import Prelude +import Config import Control.MonadZero (empty) import Data.Array (cons) import Data.Newtype (un) @@ -39,31 +40,6 @@ import Model (PID, TID, Tokens, Typedef(..), NetObj, NetApi, NetInfoFRow, NetInf import PlaceEditor as PlaceEditor import TransitionEditor as TransitionEditor --- config ---------------------------------------------------------------------- - -fontSize :: Number -fontSize = 0.1 - -tokenPadding :: Number -tokenPadding = placeRadius * 0.2 - -placeRadius :: Number -placeRadius = 4.0 * tokenRadius - -tokenRadius :: Number -tokenRadius = 0.5 - -transitionHeight :: Number -transitionHeight = 2.0 * placeRadius - -transitionWidth :: Number -transitionWidth = 2.0 * placeRadius - -arcAnimationDuration :: Duration -arcAnimationDuration = seconds 0.70 - --------------------------------------------------------------------------------- - type StateF pid tid = { focusedPlace :: Maybe pid , focusedTransition :: Maybe tid From d4c7c72ae5ea92b5b45d8e75332495bce92cc689 Mon Sep 17 00:00:00 2001 From: antonleviathan Date: Fri, 23 Nov 2018 18:33:59 +0100 Subject: [PATCH 5/6] Fix Config.purs merge --- src/Config.purs | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/Config.purs b/src/Config.purs index a00ef4b8..8f16531f 100644 --- a/src/Config.purs +++ b/src/Config.purs @@ -3,15 +3,12 @@ module Config where import Prelude import Svg.Attributes (Duration, seconds) -<<<<<<< HEAD fontSize :: Number fontSize = 0.1 tokenPadding :: Number tokenPadding = placeRadius * 0.2 -======= ->>>>>>> 05e34be6be7516fd8598cbcfda3e82a3520f78c9 placeRadius :: Number placeRadius = 4.0 * tokenRadius From f65c87b8d16743db19dd3e27c266b8654e055590 Mon Sep 17 00:00:00 2001 From: antonleviathan Date: Mon, 26 Nov 2018 16:25:20 +0100 Subject: [PATCH 6/6] Fix indentation --- src/PetrinetView.purs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/PetrinetView.purs b/src/PetrinetView.purs index 022fe46a..632f7a99 100644 --- a/src/PetrinetView.purs +++ b/src/PetrinetView.purs @@ -227,11 +227,11 @@ ui initialState' = svgTransitionRect :: ∀ a tid. Show tid => Vec2D -> tid -> HTML a ((QueryF pid tid) Unit) svgTransitionRect point tid = SE.rect [ SA.class_ "css-transition-rect" - , SA.width transitionWidth - , SA.height transitionHeight - , SA.x (point.x - transitionWidth / 2.0) - , SA.y (point.y - transitionHeight / 2.0) - ] + , SA.width transitionWidth + , SA.height transitionHeight + , SA.x (point.x - transitionWidth / 2.0) + , SA.y (point.y - transitionHeight / 2.0) + ] svgTransitionLabel :: ∀ a tid. Show tid => Vec2D -> tid -> HTML a ((QueryF pid tid) Unit) svgTransitionLabel point tid =