add chart showing share of todo having been interrupted
4 files changed, 38 insertions(+), 4 deletions(-)

M src/Charting.elm
M src/Main.elm
M src/Stats.elm
M src/Types.elm
M src/Charting.elm +12 -0
@@ 21,6 21,9 @@ update msg cmodel =
         OnHoverRework hoverData ->
             { cmodel | hovering = Just hoverData, chartType = ReworkShare }
 
+        OnHoverInterrupted hoverData ->
+            { cmodel | hovering = Just hoverData, chartType = InterruptedShare }
+
 
 data =
     [ { round = 101, waitingNKIT = 85, doneNKIT = 117, waitingKIT = 14, doneKIT = 188 }

          
@@ 44,6 47,9 @@ twoLinesChart cmodel doneData =
                 ReworkShare ->
                     OnHoverRework
 
+                InterruptedShare ->
+                    OnHoverInterrupted
+
         hover =
             CE.onMouseMove hoverVariant (CE.getNearest CI.stacks)
 

          
@@ 69,6 75,9 @@ twoLinesChart cmodel doneData =
         contentForRework =
             dataPointsTwo "NKIT" .reworkShareNKIT "KIT" .reworkShareKIT
 
+        contentForInterrupted =
+            dataPointsTwo "NKIT" .interruptedShareNKIT "KIT" .interruptedShareKIT
+
         content =
             case cmodel.chartType of
                 HowMuchDone ->

          
@@ 79,6 88,9 @@ twoLinesChart cmodel doneData =
 
                 ReworkShare ->
                     contentForRework
+
+                InterruptedShare ->
+                    contentForInterrupted
     in
     C.chart
         [ CA.height 200

          
M src/Main.elm +4 -1
@@ 230,6 230,9 @@ update msg model =
                 ReworkShare ->
                     ( { model | chart5 = Charting.update y model.chart5 }, Cmd.none )
 
+                InterruptedShare ->
+                    ( { model | chart0 = Charting.update y model.chart0 }, Cmd.none )
+
         ChartingMsgWrapperScatter _ ->
             ( model, Cmd.none )
 

          
@@ 484,7 487,7 @@ view model =
                     column [ width fill, height fill, spacing 25 ] [ el [ paddingXY 10 0, Font.size 14, centerX ] <| column [ width fill, height fill ] [ text t1, text t2 ], theChart x ]
             in
             column [ width fill, height fill, spacing 30 ]
-                [ cc [ headedChart "How much gets done?" "[incoming jobs]" model.chart1, headedChart "How long does it take?" "[jobs > 4 cycles flow time]" model.chart3, headedChart "How much rework?" "[jobs requiring rework]" model.chart5 ]
+                [ cc [ headedChart "jobs in todo interrupted" "[%]" model.chart0, headedChart "How much gets done?" "[incoming jobs]" model.chart1, headedChart "How long does it take?" "[jobs > 4 cycles flow time]" model.chart3, headedChart "How much rework?" "[jobs requiring rework]" model.chart5 ]
                 ]
 
         cy =

          
M src/Stats.elm +12 -0
@@ 81,6 81,16 @@ createDataPoint r kit nkit =
         reworkShare xs =
             safeDiv (100 * (toFloat <| List.length <| List.filter (\x -> x.conditions.rework /= NoRework) xs)) (toFloat <| List.length xs)
 
+        interruptedShare field =
+            let
+                totalNumber =
+                    List.length field.w0
+
+                interrupted =
+                    List.length <| List.filter (\x -> x.conditions.interruptedProcessing) field.w0
+            in
+            (\x -> 100 * x) <| safeDiv (toFloat interrupted) (toFloat totalNumber)
+
         flowtimeG n xs =
             safeDiv (100 * (toFloat <| List.length <| List.filter (\x -> x > n) xs)) (toFloat <| List.length xs)
 

          
@@ 106,6 116,8 @@ createDataPoint r kit nkit =
     , flowtimeAvgNKIT = avg <| flowtimes <| getDone nkit
     , reworkShareKIT = reworkShare <| getAll kit
     , reworkShareNKIT = reworkShare <| getAll nkit
+    , interruptedShareKIT = interruptedShare kit
+    , interruptedShareNKIT = interruptedShare nkit
     , flowtimeGKIT = flowtimeG 4 <| flowtimes <| getDone kit
     , flowtimeGNKIT = flowtimeG 4 <| flowtimes <| getDone nkit
     }

          
M src/Types.elm +10 -3
@@ 8,7 8,7 @@ import Time
 
 
 type alias Model =
-    { viewport : Maybe Dom.Viewport, kit : Field, nkit : Field, round : Round, step : StepVariant, finishRound : Bool, roundEmpty : Bool, stepEmpty : Bool, stopRoundEmpty : Bool, autoPlay : Bool, incrementMode : AutoPlayMode, reworkProbPerRound : Float, reworkProbPerRoundDot : Bool, reworkProbEmpty : Bool, scrapLimit : Maybe ScrapLimit, cyclesPerIncrement : Int, cyclesPerIncrementEmpty : Bool, chart1 : ChartingModel, chart3 : ChartingModel, chart5 : ChartingModel, stats : Stats }
+    { viewport : Maybe Dom.Viewport, kit : Field, nkit : Field, round : Round, step : StepVariant, finishRound : Bool, roundEmpty : Bool, stepEmpty : Bool, stopRoundEmpty : Bool, autoPlay : Bool, incrementMode : AutoPlayMode, reworkProbPerRound : Float, reworkProbPerRoundDot : Bool, reworkProbEmpty : Bool, scrapLimit : Maybe ScrapLimit, cyclesPerIncrement : Int, cyclesPerIncrementEmpty : Bool, chart0 : ChartingModel, chart1 : ChartingModel, chart3 : ChartingModel, chart5 : ChartingModel, stats : Stats }
 
 
 initChart : ChartType -> ChartingModel

          
@@ 16,6 16,11 @@ initChart chartType =
     { hovering = Nothing, chartType = chartType }
 
 
+chart0 : ChartingModel
+chart0 =
+    initChart InterruptedShare
+
+
 chart1 : ChartingModel
 chart1 =
     initChart HowMuchDone

          
@@ 33,7 38,7 @@ chart5 =
 
 initModel : Model
 initModel =
-    { viewport = Nothing, nkit = initField, kit = initField, round = 0, step = S7, finishRound = False, roundEmpty = False, stepEmpty = False, stopRoundEmpty = False, autoPlay = False, incrementMode = RoundMode, reworkProbPerRound = 0.5, reworkProbPerRoundDot = False, reworkProbEmpty = False, scrapLimit = Nothing, cyclesPerIncrement = 1, cyclesPerIncrementEmpty = False, chart1 = chart1, chart3 = chart3, chart5 = chart5, stats = { flowtimesSinglesNKIT = [], flowtimesSinglesKIT = [], justDonesNKIT = [], justDonesKIT = [], doneData = [] } }
+    { viewport = Nothing, nkit = initField, kit = initField, round = 0, step = S7, finishRound = False, roundEmpty = False, stepEmpty = False, stopRoundEmpty = False, autoPlay = False, incrementMode = RoundMode, reworkProbPerRound = 0.5, reworkProbPerRoundDot = False, reworkProbEmpty = False, scrapLimit = Nothing, cyclesPerIncrement = 1, cyclesPerIncrementEmpty = False, chart0 = chart0, chart1 = chart1, chart3 = chart3, chart5 = chart5, stats = { flowtimesSinglesNKIT = [], flowtimesSinglesKIT = [], justDonesNKIT = [], justDonesKIT = [], doneData = [] } }
 
 
 type AutoPlayMode

          
@@ 365,7 370,7 @@ type alias DoneStat =
 
 
 type alias DoneData =
-    { round : Float, doneNKIT : Float, doneKIT : Float, flowtimeQ1NKIT : Float, flowtimeQ2NKIT : Float, flowtimeQ3NKIT : Float, flowtimeAvgNKIT : Float, flowtimeQ1KIT : Float, flowtimeQ2KIT : Float, flowtimeQ3KIT : Float, flowtimeAvgKIT : Float, reworkShareNKIT : Float, reworkShareKIT : Float, flowtimeGNKIT : Float, flowtimeGKIT : Float }
+    { round : Float, doneNKIT : Float, doneKIT : Float, flowtimeQ1NKIT : Float, flowtimeQ2NKIT : Float, flowtimeQ3NKIT : Float, flowtimeAvgNKIT : Float, flowtimeQ1KIT : Float, flowtimeQ2KIT : Float, flowtimeQ3KIT : Float, flowtimeAvgKIT : Float, reworkShareNKIT : Float, reworkShareKIT : Float, interruptedShareKIT : Float, interruptedShareNKIT : Float, flowtimeGNKIT : Float, flowtimeGKIT : Float }
 
 
 type alias ScatterPoint =

          
@@ 380,6 385,7 @@ type ChartingMsg
     = OnHoverDone HoverData
     | OnHoverFloat HoverData
     | OnHoverRework HoverData
+    | OnHoverInterrupted HoverData
 
 
 type alias HoverData =

          
@@ 390,6 396,7 @@ type ChartType
     = HowMuchDone
     | HowLongFloat
     | ReworkShare
+    | InterruptedShare
 
 
 type alias Stats =