From 8899dca7fe3d1819364ad23df0a6741ed8811605 Mon Sep 17 00:00:00 2001 From: Max Hille Date: Wed, 17 Jan 2024 15:39:27 +0100 Subject: [PATCH] Add some aggregation options --- src/AgGrid.elm | 15 +++++++++++++++ tests/AgGridTest.elm | 9 ++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/AgGrid.elm b/src/AgGrid.elm index cdb19be..286dbc3 100644 --- a/src/AgGrid.elm +++ b/src/AgGrid.elm @@ -304,6 +304,8 @@ type alias ColumnDef dataType = -} type alias ColumnSettings = { aggFunc : Aggregation + , allowedAggFuncs : List String + , defaultAggFunc : String , autoHeaderHeight : Bool , cellClassRules : List ( String, Expression.Eval Bool ) , checkboxSelection : Bool @@ -358,6 +360,8 @@ storage. Column states can be restored through the `columnState` on the `GridCon -} type alias ColumnState = { aggFunc : Maybe String + , allowedAggFuncs : List String + , defaultAggFunc : String , colId : String , flex : Maybe Int , hide : Maybe Bool @@ -520,6 +524,8 @@ Can be used when implementing column configurations for the table. Default column settings: { aggFunc = NoAggregation + , allowedAggFuncs = [] + , defaultAggFunc = "sum" , autoHeaderHeight = False , cellClassRules = [] , checkboxSelection = False @@ -566,6 +572,8 @@ Default column settings: defaultSettings : ColumnSettings defaultSettings = { aggFunc = NoAggregation + , allowedAggFuncs = [] + , defaultAggFunc = "sum" , autoHeaderHeight = False , cellClassRules = [] , checkboxSelection = False @@ -811,6 +819,7 @@ applyColumnState gridConfig columnDefs = | settings = { settings | aggFunc = toAggregation cachedState.aggFunc + , allowedAggFuncs = cachedState.allowedAggFuncs , flex = cachedState.flex , hide = Maybe.withDefault settings.hide cachedState.hide , pinned = toPinningType cachedState.pinned @@ -1013,6 +1022,8 @@ columnDefEncoder gridConfig columnDef = in Json.Encode.object [ ( "aggFunc", encodeMaybe Json.Encode.string (aggregationToString columnDef.settings.aggFunc) ) + , ( "allowedAggFuncs", Json.Encode.list Json.Encode.string columnDef.settings.allowedAggFuncs ) + , ( "defaultAggFunc", Json.Encode.string columnDef.settings.defaultAggFunc ) , ( "autoHeaderHeight", Json.Encode.bool columnDef.settings.autoHeaderHeight ) , ( "cellClassRules" , Json.Encode.object <| @@ -1211,6 +1222,8 @@ columnStateDecoder : Decoder ColumnState columnStateDecoder = Decode.succeed ColumnState |> DecodePipeline.optional "aggFunc" (Decode.nullable Decode.string) Nothing + |> DecodePipeline.optional "allowedAggFuncs" (Decode.list Decode.string) defaultSettings.allowedAggFuncs + |> DecodePipeline.optional "defaultAggFunc" Decode.string defaultSettings.defaultAggFunc |> DecodePipeline.required "colId" Decode.string |> DecodePipeline.optional "flex" (Decode.nullable Decode.int) Nothing |> DecodePipeline.optional "hide" (Decode.nullable Decode.bool) Nothing @@ -1340,6 +1353,8 @@ columnStateEncoder : ColumnState -> Json.Encode.Value columnStateEncoder columnState = Json.Encode.object [ ( "aggFunc", encodeMaybe Json.Encode.string columnState.aggFunc ) + , ( "allowedAggFuncs", Json.Encode.list Json.Encode.string columnState.allowedAggFuncs ) + , ( "defaultAggFunc", Json.Encode.string columnState.defaultAggFunc ) , ( "colId", Json.Encode.string columnState.colId ) , ( "flex", encodeMaybe Json.Encode.int columnState.flex ) , ( "hide", encodeMaybe Json.Encode.bool columnState.hide ) diff --git a/tests/AgGridTest.elm b/tests/AgGridTest.elm index 09d87ee..4365e02 100644 --- a/tests/AgGridTest.elm +++ b/tests/AgGridTest.elm @@ -2,7 +2,6 @@ module AgGridTest exposing (suite) import AgGrid exposing (Aggregation(..), PinningType(..), Sorting(..), defaultGridConfig) import Expect -import Html.Attributes exposing (default) import Test exposing (..) @@ -84,6 +83,8 @@ suite = |> (\settings -> { settings | aggFunc = AgGrid.NoAggregation + , allowedAggFuncs = [ "sum", "avg" ] + , defaultAggFunc = "sum" , flex = Nothing , hide = False , pinned = AgGrid.Unpinned @@ -106,6 +107,8 @@ suite = defaultColumnState = { aggFunc = Nothing + , allowedAggFuncs = [ "sum", "avg" ] + , defaultAggFunc = "sum" , colId = "test" , flex = Nothing , hide = Nothing @@ -127,6 +130,8 @@ suite = { defaultGridConfig | columnStates = [ { aggFunc = Just "avg" + , allowedAggFuncs = [ "sum", "avg" ] + , defaultAggFunc = "sum" , colId = "test" , flex = Just 5 , hide = Just True @@ -147,6 +152,8 @@ suite = | settings = { defaultSettings | aggFunc = AgGrid.AvgAggregation + , allowedAggFuncs = [ "sum", "avg" ] + , defaultAggFunc = "sum" , flex = Just 5 , hide = True , pinned = AgGrid.PinnedToLeft