# HG changeset patch # User Benjamin Weber # Date 1668000243 -3600 # Wed Nov 09 14:24:03 2022 +0100 # Node ID ebc6529886086db7102398ddfc00dfa5704795ba # Parent dfda6e29fefd933a2673b64b97d82967061addf6 add chart showing share of todo having been interrupted diff --git a/src/Charting.elm b/src/Charting.elm --- a/src/Charting.elm +++ b/src/Charting.elm @@ -21,6 +21,9 @@ 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 @@ ReworkShare -> OnHoverRework + InterruptedShare -> + OnHoverInterrupted + hover = CE.onMouseMove hoverVariant (CE.getNearest CI.stacks) @@ -69,6 +75,9 @@ contentForRework = dataPointsTwo "NKIT" .reworkShareNKIT "KIT" .reworkShareKIT + contentForInterrupted = + dataPointsTwo "NKIT" .interruptedShareNKIT "KIT" .interruptedShareKIT + content = case cmodel.chartType of HowMuchDone -> @@ -79,6 +88,9 @@ ReworkShare -> contentForRework + + InterruptedShare -> + contentForInterrupted in C.chart [ CA.height 200 diff --git a/src/Main.elm b/src/Main.elm --- a/src/Main.elm +++ b/src/Main.elm @@ -230,6 +230,9 @@ 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 @@ 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 = diff --git a/src/Stats.elm b/src/Stats.elm --- a/src/Stats.elm +++ b/src/Stats.elm @@ -81,6 +81,16 @@ 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 @@ , 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 } diff --git a/src/Types.elm b/src/Types.elm --- a/src/Types.elm +++ b/src/Types.elm @@ -8,7 +8,7 @@ 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 @@ { hovering = Nothing, chartType = chartType } +chart0 : ChartingModel +chart0 = + initChart InterruptedShare + + chart1 : ChartingModel chart1 = initChart HowMuchDone @@ -33,7 +38,7 @@ 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 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 @@ = OnHoverDone HoverData | OnHoverFloat HoverData | OnHoverRework HoverData + | OnHoverInterrupted HoverData type alias HoverData = @@ -390,6 +396,7 @@ = HowMuchDone | HowLongFloat | ReworkShare + | InterruptedShare type alias Stats =