Skip to content

Commit

Permalink
Add some aggregation options
Browse files Browse the repository at this point in the history
  • Loading branch information
maxhille committed Jan 17, 2024
1 parent 0981497 commit 8899dca
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 1 deletion.
15 changes: 15 additions & 0 deletions src/AgGrid.elm
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -566,6 +572,8 @@ Default column settings:
defaultSettings : ColumnSettings
defaultSettings =
{ aggFunc = NoAggregation
, allowedAggFuncs = []
, defaultAggFunc = "sum"
, autoHeaderHeight = False
, cellClassRules = []
, checkboxSelection = False
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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 <|
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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 )
Expand Down
9 changes: 8 additions & 1 deletion tests/AgGridTest.elm
Original file line number Diff line number Diff line change
Expand Up @@ -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 (..)


Expand Down Expand Up @@ -84,6 +83,8 @@ suite =
|> (\settings ->
{ settings
| aggFunc = AgGrid.NoAggregation
, allowedAggFuncs = [ "sum", "avg" ]
, defaultAggFunc = "sum"
, flex = Nothing
, hide = False
, pinned = AgGrid.Unpinned
Expand All @@ -106,6 +107,8 @@ suite =

defaultColumnState =
{ aggFunc = Nothing
, allowedAggFuncs = [ "sum", "avg" ]
, defaultAggFunc = "sum"
, colId = "test"
, flex = Nothing
, hide = Nothing
Expand All @@ -127,6 +130,8 @@ suite =
{ defaultGridConfig
| columnStates =
[ { aggFunc = Just "avg"
, allowedAggFuncs = [ "sum", "avg" ]
, defaultAggFunc = "sum"
, colId = "test"
, flex = Just 5
, hide = Just True
Expand All @@ -147,6 +152,8 @@ suite =
| settings =
{ defaultSettings
| aggFunc = AgGrid.AvgAggregation
, allowedAggFuncs = [ "sum", "avg" ]
, defaultAggFunc = "sum"
, flex = Just 5
, hide = True
, pinned = AgGrid.PinnedToLeft
Expand Down

0 comments on commit 8899dca

Please sign in to comment.