From d15596052d150a7f5b6c1210a198f290e55574e4 Mon Sep 17 00:00:00 2001 From: rupert Date: Fri, 20 Jan 2023 15:52:44 +0000 Subject: [PATCH 01/21] Collapse: gonna be more readable with a record for Column config --- src/Column.elm | 40 ++++++++++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/src/Column.elm b/src/Column.elm index f448b42c..f5d38d9a 100644 --- a/src/Column.elm +++ b/src/Column.elm @@ -13,7 +13,14 @@ module Column exposing type Column a - = Column Bool String (List a) + = Column (Config a) + + +type alias Config a = + { enabled : Bool + , name : String + , items : List a + } type PlacementResult @@ -28,7 +35,11 @@ type PlacementResult init : Bool -> String -> List a -> Column a init enabled_ name_ items_ = - Column enabled_ name_ items_ + Column + { enabled = enabled_ + , name = name_ + , items = items_ + } @@ -36,8 +47,8 @@ init enabled_ name_ items_ = hasName : String -> Column a -> Bool -hasName n (Column _ name_ _) = - n == name_ +hasName n = + (==) n << name isEmpty : Column a -> Bool @@ -46,15 +57,24 @@ isEmpty = isEnabled : Column a -> Bool -isEnabled (Column e _ _) = - e +isEnabled = + .enabled << config items : Column a -> List a -items (Column _ _ items_) = - items_ +items = + .items << config name : Column a -> String -name (Column _ name_ _) = - name_ +name = + .name << config + + + +-- PRIVATE + + +config : Column a -> Config a +config (Column c) = + c From bfd8c10550d02603d6589554682e468aec7ddb2d Mon Sep 17 00:00:00 2001 From: rupert Date: Fri, 20 Jan 2023 15:58:54 +0000 Subject: [PATCH 02/21] Collapse: empty columns are collapsed (intially anyway) --- src/Column.elm | 6 ++++++ tests/ColumnTests.elm | 17 +++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/Column.elm b/src/Column.elm index f5d38d9a..6138d659 100644 --- a/src/Column.elm +++ b/src/Column.elm @@ -3,6 +3,7 @@ module Column exposing , PlacementResult(..) , hasName , init + , isCollapsed , isEmpty , isEnabled , items @@ -51,6 +52,11 @@ hasName n = (==) n << name +isCollapsed : Column a -> Bool +isCollapsed = + isEmpty + + isEmpty : Column a -> Bool isEmpty = List.isEmpty << items diff --git a/tests/ColumnTests.elm b/tests/ColumnTests.elm index f02e729c..100c22c0 100644 --- a/tests/ColumnTests.elm +++ b/tests/ColumnTests.elm @@ -9,6 +9,7 @@ suite : Test suite = concat [ name + , isCollapsed , isEmpty , isEnabled , items @@ -27,6 +28,22 @@ name = ] +isCollapsed : Test +isCollapsed = + describe "isCollapsed" + [ test "returns True for an initialised empty Column" <| + \() -> + Column.init True "a name" [] + |> Column.isCollapsed + |> Expect.equal True + , test "returns False for an initialised non-empty Column" <| + \() -> + Column.init True "a name" [ 1 ] + |> Column.isCollapsed + |> Expect.equal False + ] + + isEmpty : Test isEmpty = describe "isEmpty" From a5d4244aabcea314ad97b13cf6a61160c886bcf6 Mon Sep 17 00:00:00 2001 From: rupert Date: Fri, 27 Jan 2023 09:16:53 +0000 Subject: [PATCH 03/21] Collapse: switch to flexbox to show collapsed columns --- TODO.md | 10 ++++++++++ src/Page/Board.elm | 10 +++++++++- styles.css | 25 ++++++++++++++++++++----- 3 files changed, 39 insertions(+), 6 deletions(-) diff --git a/TODO.md b/TODO.md index 4fdeb442..017acfe1 100644 --- a/TODO.md +++ b/TODO.md @@ -1,3 +1,13 @@ +- horizontal scrollbar isn't working properly (there can be things offscreen to the right + that I can't scroll into view (e.g. the completed column) +- should I use flexbox instead? + - need a min/max width for each column, so width is always filled - always fill width on initial layout + - do I want the width of other columns to change when a column is collapsed? + - no -> only resize columns when changing the size of the page + +- https://www.sitepoint.com/building-trello-layout-css-grid-flexbox/ +- https://css-tricks.com/snippets/css/css-triangle/ + # Cleanups - simplify parsing as per typing tutor - replace regex stuff in TaskItem.toToggledSting with some form of token parsing diff --git a/src/Page/Board.elm b/src/Page/Board.elm index 8e235882..0ba82b8b 100644 --- a/src/Page/Board.elm +++ b/src/Page/Board.elm @@ -248,7 +248,15 @@ selectedBoardView timeWithZone index board = columnView : TimeWithZone -> Column Card -> Html Msg columnView timeWithZone column = - Html.div [ class "card-board-column" ] + let + columnCollapsedClass = + if Column.isCollapsed column then + " collapsed" + + else + "" + in + Html.div [ class <| "card-board-column" ++ columnCollapsedClass ] [ Html.div [ class "card-board-column-header" ] [ Html.text <| Column.name column ] , Html.Keyed.ul [ class "card-board-column-list" ] diff --git a/styles.css b/styles.css index c1d40849..5a8ac8a9 100644 --- a/styles.css +++ b/styles.css @@ -107,19 +107,34 @@ li.is-after-active .card-board-tabs-inner { } .card-board-columns { - display: grid; - grid-auto-columns: minmax(20em, 1fr); - grid-auto-flow: column; - grid-gap: 1em; - margin-right: 1em; + display: flex; + overflow-x: auto; +} + +.card-board-columns > * { + flex: 1 1 auto; + margin-right: 20px; +} + +.card-board-columns::after { + content: ""; + flex: 0 0 1em; +} + +.card-board-column.collapsed { + width: 2em; + min-width: 2em; + flex-grow: 0; } .card-board-column { padding: 1em; + min-width: 20em; background-color: var(--background-secondary); border-radius: 3px; border: var(--border-width) solid var(--background-modifier-border); } + .card-board-column-header { font-weight: var(--bold-weight); margin-bottom: 1em; From 1175932d5e2afdcbf44975559531f550e2469c63 Mon Sep 17 00:00:00 2001 From: rupert Date: Fri, 27 Jan 2023 14:21:06 +0000 Subject: [PATCH 04/21] Collapse: add arrow collapse state marker and align column title --- src/Page/Board.elm | 5 ++++- styles.css | 43 ++++++++++++++++++++++++++++++++----------- 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/src/Page/Board.elm b/src/Page/Board.elm index 0ba82b8b..13924e97 100644 --- a/src/Page/Board.elm +++ b/src/Page/Board.elm @@ -258,7 +258,10 @@ columnView timeWithZone column = in Html.div [ class <| "card-board-column" ++ columnCollapsedClass ] [ Html.div [ class "card-board-column-header" ] - [ Html.text <| Column.name column ] + [ Html.div [ class "arrow-right" ] [] + , Html.span [] + [ Html.text <| Column.name column ] + ] , Html.Keyed.ul [ class "card-board-column-list" ] (List.map (cardView timeWithZone) (Column.items column)) ] diff --git a/styles.css b/styles.css index 5a8ac8a9..bf9c8df4 100644 --- a/styles.css +++ b/styles.css @@ -111,33 +111,54 @@ li.is-after-active .card-board-tabs-inner { overflow-x: auto; } -.card-board-columns > * { - flex: 1 1 auto; - margin-right: 20px; -} - .card-board-columns::after { content: ""; flex: 0 0 1em; } -.card-board-column.collapsed { - width: 2em; - min-width: 2em; - flex-grow: 0; -} - .card-board-column { + flex: 1 1 auto; padding: 1em; + margin-right: 20px; min-width: 20em; background-color: var(--background-secondary); border-radius: 3px; border: var(--border-width) solid var(--background-modifier-border); } +.card-board-column.collapsed { + width: 2em; + min-width: 2em; + flex-grow: 0; + overflow: visible; + margin: 0; + margin-right: 20px; + padding: 1em 0 0 0.5em; +} + .card-board-column-header { font-weight: var(--bold-weight); margin-bottom: 1em; + display: flex; +} + +.card-board-column.collapsed .card-board-column-header { + margin-bottom: 0; + transform: rotate(90deg); + transform-origin: bottom left; + position: relative; + top: -1em; + left: -0.2em; +} + +.arrow-right { + width: 0; + height: 0; + border-top: 0.4em solid transparent; + border-bottom: 0.4em solid transparent; + border-left: 0.4em solid var(--text-normal); + margin-right: 0.4em; + margin-top: 0.2em; } ul.card-board-column-list { From 73311a6e6bc74acea9e095b353c8d810797979f1 Mon Sep 17 00:00:00 2001 From: rupert Date: Fri, 27 Jan 2023 14:23:18 +0000 Subject: [PATCH 05/21] Collapse: use pointer cursor when over marker triangle --- styles.css | 1 + 1 file changed, 1 insertion(+) diff --git a/styles.css b/styles.css index bf9c8df4..2b9c50d2 100644 --- a/styles.css +++ b/styles.css @@ -159,6 +159,7 @@ li.is-after-active .card-board-tabs-inner { border-left: 0.4em solid var(--text-normal); margin-right: 0.4em; margin-top: 0.2em; + cursor: pointer; } ul.card-board-column-list { From 5c0b9ee82886f9e4d302effc6eb660261f6ab203 Mon Sep 17 00:00:00 2001 From: rupert Date: Sun, 29 Jan 2023 11:25:56 +0000 Subject: [PATCH 06/21] Collapse: CollapseStates to track collapsed columns (render only) --- TODO.md | 1 + src/Board.elm | 19 + src/BoardConfig.elm | 12 + src/CollapseStates.elm | 43 + src/Column.elm | 16 +- src/DateBoardConfig.elm | 8 + src/Page/Board.elm | 51 +- src/TagBoardConfig.elm | 8 + tests/BoardTests.elm | 1088 +++++++++++++++----------- tests/CollapseStatesTests.elm | 43 + tests/ColumnTests.elm | 12 + tests/Helpers/BoardConfigHelpers.elm | 5 + tests/Helpers/BoardHelpers.elm | 10 +- tests/InteropDefinitionsTests.elm | 17 + tests/SettingsStateTests.elm | 3 + 15 files changed, 854 insertions(+), 482 deletions(-) create mode 100644 src/CollapseStates.elm create mode 100644 tests/CollapseStatesTests.elm diff --git a/TODO.md b/TODO.md index 017acfe1..5fa40a37 100644 --- a/TODO.md +++ b/TODO.md @@ -1,5 +1,6 @@ - horizontal scrollbar isn't working properly (there can be things offscreen to the right that I can't scroll into view (e.g. the completed column) +- show the number of cards in a column when it is collapsed - should I use flexbox instead? - need a min/max width for each column, so width is always filled - always fill width on initial layout - do I want the width of other columns to change when a column is collapsed? diff --git a/src/Board.elm b/src/Board.elm index 34da6da4..40ad43e4 100644 --- a/src/Board.elm +++ b/src/Board.elm @@ -6,6 +6,7 @@ module Board exposing import BoardConfig exposing (BoardConfig) import Card exposing (Card) +import CollapseStates import Column exposing (Column) import ColumnNames exposing (ColumnNames) import DateBoardColumns exposing (DateBoardColumns) @@ -51,6 +52,7 @@ columns timeWithZone boardIndex (Board columnNames config taskList) = |> TaskList.foldl DateBoardColumns.addTaskItem emptyDateBoardColumns |> DateBoardColumns.columns |> convertToCards boardIndex + |> collapseColumns config BoardConfig.TagBoardConfig tagBoardConfig -> let @@ -63,12 +65,29 @@ columns timeWithZone boardIndex (Board columnNames config taskList) = |> TaskList.foldl TagBoardColumns.addTaskItem emptyTagBoardColumns |> TagBoardColumns.columns |> convertToCards boardIndex + |> collapseColumns config -- PRIVATE +collapseColumns : BoardConfig -> List (Column Card) -> List (Column Card) +collapseColumns config cols = + let + collapseStates = + BoardConfig.collapseStates config + + collapseIfToggled index col = + if CollapseStates.columnIsToggled index collapseStates then + Column.invertCollapseState col + + else + col + in + List.indexedMap collapseIfToggled cols + + filterTaskList : BoardConfig -> TaskList -> TaskList filterTaskList config taskList = let diff --git a/src/BoardConfig.elm b/src/BoardConfig.elm index 347d5000..13146bf0 100644 --- a/src/BoardConfig.elm +++ b/src/BoardConfig.elm @@ -1,5 +1,6 @@ module BoardConfig exposing ( BoardConfig(..) + , collapseStates , decoder_v_0_1_0 , decoder_v_0_2_0 , decoder_v_0_3_0 @@ -30,6 +31,7 @@ module BoardConfig exposing , updateTitle ) +import CollapseStates exposing (CollapseStates) import DateBoardConfig exposing (DateBoardConfig) import DecodeHelpers import Filter exposing (Filter, Polarity, Scope) @@ -81,6 +83,16 @@ fromBoardType boardType title_ = -- UTILITIES +collapseStates : BoardConfig -> CollapseStates +collapseStates config = + case config of + DateBoardConfig c -> + c.collapseStates + + TagBoardConfig c -> + c.collapseStates + + isForDateBoard : BoardConfig -> Bool isForDateBoard config = case config of diff --git a/src/CollapseStates.elm b/src/CollapseStates.elm new file mode 100644 index 00000000..2006a4f8 --- /dev/null +++ b/src/CollapseStates.elm @@ -0,0 +1,43 @@ +module CollapseStates exposing + ( CollapseStates + , columnIsToggled + , init + , toggleColumn + ) + +import List.Extra as LE + + + +-- TYPES + + +type CollapseStates + = CollapsedIndicies (List Int) + + +init : CollapseStates +init = + CollapsedIndicies [] + + + +-- INFO + + +columnIsToggled : Int -> CollapseStates -> Bool +columnIsToggled column (CollapsedIndicies indicies) = + List.member column indicies + + + +-- MODIFY + + +toggleColumn : Int -> CollapseStates -> CollapseStates +toggleColumn column (CollapsedIndicies indicies) = + if List.member column indicies then + CollapsedIndicies <| LE.remove column indicies + + else + CollapsedIndicies <| column :: indicies diff --git a/src/Column.elm b/src/Column.elm index 6138d659..b99a2ab5 100644 --- a/src/Column.elm +++ b/src/Column.elm @@ -3,6 +3,7 @@ module Column exposing , PlacementResult(..) , hasName , init + , invertCollapseState , isCollapsed , isEmpty , isEnabled @@ -21,6 +22,7 @@ type alias Config a = { enabled : Bool , name : String , items : List a + , invertCollapsed : Bool } @@ -40,6 +42,7 @@ init enabled_ name_ items_ = { enabled = enabled_ , name = name_ , items = items_ + , invertCollapsed = False } @@ -53,8 +56,8 @@ hasName n = isCollapsed : Column a -> Bool -isCollapsed = - isEmpty +isCollapsed ((Column c) as col) = + xor c.invertCollapsed (isEmpty col) isEmpty : Column a -> Bool @@ -78,6 +81,15 @@ name = +-- MODIFICATION + + +invertCollapseState : Column a -> Column a +invertCollapseState (Column c) = + Column { c | invertCollapsed = True } + + + -- PRIVATE diff --git a/src/DateBoardConfig.elm b/src/DateBoardConfig.elm index 5c696ef5..67429ee9 100644 --- a/src/DateBoardConfig.elm +++ b/src/DateBoardConfig.elm @@ -9,6 +9,7 @@ module DateBoardConfig exposing , encoder ) +import CollapseStates exposing (CollapseStates) import Filter exposing (Filter, Polarity, Scope) import TsJson.Decode as TsDecode import TsJson.Encode as TsEncode @@ -26,6 +27,7 @@ type alias DateBoardConfig = , showFilteredTags : Bool , includeUndated : Bool , title : String + , collapseStates : CollapseStates } @@ -38,6 +40,7 @@ default = , showFilteredTags = True , includeUndated = True , title = "" + , collapseStates = CollapseStates.init } @@ -68,6 +71,7 @@ decoder_v_0_5_0 = |> TsDecode.andMap (TsDecode.field "showFilteredTags" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "includeUndated" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "title" TsDecode.string) + |> TsDecode.andMap (TsDecode.succeed CollapseStates.init) decoder_v_0_4_0 : TsDecode.Decoder DateBoardConfig @@ -80,6 +84,7 @@ decoder_v_0_4_0 = |> TsDecode.andMap (TsDecode.field "showFilteredTags" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "includeUndated" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "title" TsDecode.string) + |> TsDecode.andMap (TsDecode.succeed CollapseStates.init) decoder_v_0_3_0 : TsDecode.Decoder DateBoardConfig @@ -92,6 +97,7 @@ decoder_v_0_3_0 = |> TsDecode.andMap (TsDecode.succeed True) |> TsDecode.andMap (TsDecode.field "includeUndated" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "title" TsDecode.string) + |> TsDecode.andMap (TsDecode.succeed CollapseStates.init) decoder_v_0_2_0 : TsDecode.Decoder DateBoardConfig @@ -104,6 +110,7 @@ decoder_v_0_2_0 = |> TsDecode.andMap (TsDecode.succeed True) |> TsDecode.andMap (TsDecode.field "includeUndated" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "title" TsDecode.string) + |> TsDecode.andMap (TsDecode.succeed CollapseStates.init) decoder_v_0_1_0 : TsDecode.Decoder DateBoardConfig @@ -116,3 +123,4 @@ decoder_v_0_1_0 = |> TsDecode.andMap (TsDecode.succeed True) |> TsDecode.andMap (TsDecode.field "includeUndated" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "title" TsDecode.string) + |> TsDecode.andMap (TsDecode.succeed CollapseStates.init) diff --git a/src/Page/Board.elm b/src/Page/Board.elm index 13924e97..7bf157ed 100644 --- a/src/Page/Board.elm +++ b/src/Page/Board.elm @@ -34,6 +34,7 @@ type Msg | TaskItemEditClicked String | TaskItemDeleteClicked String | TaskItemToggled String + | ToggleColumnCollapse Int update : Msg -> Session -> ( Session, Cmd Msg, Session.Msg ) @@ -90,6 +91,12 @@ update msg session = , Session.NoOp ) + ToggleColumnCollapse columnIndex -> + ( session + , Cmd.none + , Session.NoOp + ) + cmdIfHasTask : String -> Session -> (TaskItemFields -> Cmd b) -> Cmd b cmdIfHasTask id session cmd = @@ -120,8 +127,8 @@ view session = Session.globalSettings session |> .columnNames - currentIndex : Maybe Int - currentIndex = + currentBoardIndex : Maybe Int + currentBoardIndex = Boards.currentIndex boards timeWithZone : TimeWithZone @@ -130,7 +137,7 @@ view session = in Html.div [ attribute "dir" (TextDirection.toString <| Session.textDirection session) ] [ Html.ul [ class "card-board-tab-list" ] - (tabHeaders currentIndex boards) + (tabHeaders currentBoardIndex boards) , Html.div [ class "card-board-boards" ] (Boards.boardZipper boards |> SafeZipper.indexedMapSelectedAndRest (selectedBoardView timeWithZone) (boardView timeWithZone) @@ -140,11 +147,11 @@ view session = tabHeaders : Maybe Int -> Boards -> List (Html Msg) -tabHeaders currentIndex boards = +tabHeaders currentBoardIndex boards = let beforeHeaderClass : String beforeHeaderClass = - tabHeaderClass currentIndex -1 + tabHeaderClass currentBoardIndex -1 beforeFirst : Html Msg beforeFirst = @@ -162,7 +169,7 @@ tabHeaders currentIndex boards = afterHeaderClass : String afterHeaderClass = - tabHeaderClass currentIndex (Boards.length boards) + tabHeaderClass currentBoardIndex (Boards.length boards) afterLast : Html Msg afterLast = @@ -174,7 +181,7 @@ tabHeaders currentIndex boards = tabs : List (Html Msg) tabs = Boards.titles boards - |> SafeZipper.indexedMapSelectedAndRest selectedTabHeader (tabHeader currentIndex) + |> SafeZipper.indexedMapSelectedAndRest selectedTabHeader (tabHeader currentBoardIndex) |> SafeZipper.toList in beforeFirst :: List.append tabs [ afterLast ] @@ -189,11 +196,11 @@ selectedTabHeader _ title = tabHeader : Maybe Int -> Int -> String -> Html Msg -tabHeader currentIndex index title = +tabHeader currentBoardIndex index title = let headerClass : String headerClass = - tabHeaderClass currentIndex index + tabHeaderClass currentBoardIndex index in Html.li [ class ("card-board-tab-title" ++ headerClass) @@ -205,8 +212,8 @@ tabHeader currentIndex index title = tabHeaderClass : Maybe Int -> Int -> String -tabHeaderClass currentIndex index = - case currentIndex of +tabHeaderClass currentBoardIndex index = + case currentBoardIndex of Just i -> if index == i - 1 then " is-before-active" @@ -222,32 +229,32 @@ tabHeaderClass currentIndex index = boardView : TimeWithZone -> Int -> Board -> Html Msg -boardView timeWithZone index board = +boardView timeWithZone boardIndex board = Html.div [ class "card-board-board" , hidden True ] [ Html.div [ class "card-board-columns" ] (board - |> Board.columns timeWithZone index - |> List.map (\column -> columnView timeWithZone column) + |> Board.columns timeWithZone boardIndex + |> List.indexedMap (\index column -> columnView index timeWithZone column) ) ] selectedBoardView : TimeWithZone -> Int -> Board -> Html Msg -selectedBoardView timeWithZone index board = +selectedBoardView timeWithZone boardIndex board = Html.div [ class "card-board-board" ] [ Html.div [ class "card-board-columns" ] (board - |> Board.columns timeWithZone index - |> List.map (\column -> columnView timeWithZone column) + |> Board.columns timeWithZone boardIndex + |> List.indexedMap (\index column -> columnView index timeWithZone column) ) ] -columnView : TimeWithZone -> Column Card -> Html Msg -columnView timeWithZone column = +columnView : Int -> TimeWithZone -> Column Card -> Html Msg +columnView columnIndex timeWithZone column = let columnCollapsedClass = if Column.isCollapsed column then @@ -258,7 +265,11 @@ columnView timeWithZone column = in Html.div [ class <| "card-board-column" ++ columnCollapsedClass ] [ Html.div [ class "card-board-column-header" ] - [ Html.div [ class "arrow-right" ] [] + [ Html.div + [ class "arrow-right" + , onClick <| ToggleColumnCollapse columnIndex + ] + [] , Html.span [] [ Html.text <| Column.name column ] ] diff --git a/src/TagBoardConfig.elm b/src/TagBoardConfig.elm index db44dbd2..df51d3ca 100644 --- a/src/TagBoardConfig.elm +++ b/src/TagBoardConfig.elm @@ -11,6 +11,7 @@ module TagBoardConfig exposing , encoder ) +import CollapseStates exposing (CollapseStates) import Filter exposing (Filter, Polarity, Scope) import Parser as P exposing ((|.), (|=), Parser) import ParserHelper @@ -34,6 +35,7 @@ type alias TagBoardConfig = , includeOthers : Bool , includeUntagged : Bool , title : String + , collapseStates : CollapseStates } @@ -55,6 +57,7 @@ default = , includeOthers = False , includeUntagged = False , title = "" + , collapseStates = CollapseStates.init } @@ -99,6 +102,7 @@ decoder_v_0_5_0 = |> TsDecode.andMap (TsDecode.field "includeOthers" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "includeUntagged" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "title" TsDecode.string) + |> TsDecode.andMap (TsDecode.succeed CollapseStates.init) decoder_v_0_4_0 : TsDecode.Decoder TagBoardConfig @@ -114,6 +118,7 @@ decoder_v_0_4_0 = |> TsDecode.andMap (TsDecode.field "includeOthers" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "includeUntagged" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "title" TsDecode.string) + |> TsDecode.andMap (TsDecode.succeed CollapseStates.init) decoder_v_0_3_0 : TsDecode.Decoder TagBoardConfig @@ -129,6 +134,7 @@ decoder_v_0_3_0 = |> TsDecode.andMap (TsDecode.field "includeOthers" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "includeUntagged" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "title" TsDecode.string) + |> TsDecode.andMap (TsDecode.succeed CollapseStates.init) decoder_v_0_2_0 : TsDecode.Decoder TagBoardConfig @@ -144,6 +150,7 @@ decoder_v_0_2_0 = |> TsDecode.andMap (TsDecode.field "includeOthers" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "includeUntagged" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "title" TsDecode.string) + |> TsDecode.andMap (TsDecode.succeed CollapseStates.init) decoder_v_0_1_0 : TsDecode.Decoder TagBoardConfig @@ -159,6 +166,7 @@ decoder_v_0_1_0 = |> TsDecode.andMap (TsDecode.field "includeOthers" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "includeUntagged" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "title" TsDecode.string) + |> TsDecode.andMap (TsDecode.succeed CollapseStates.init) columnConfigDecoder : TsDecode.Decoder ColumnConfig diff --git a/tests/BoardTests.elm b/tests/BoardTests.elm index 4bf0e2c7..5323a18e 100644 --- a/tests/BoardTests.elm +++ b/tests/BoardTests.elm @@ -3,6 +3,8 @@ module BoardTests exposing (suite) import Board import BoardConfig import Card +import CollapseStates +import Column import ColumnNames import DateBoardConfig exposing (DateBoardConfig) import Expect @@ -28,471 +30,639 @@ suite = columnsDateBoard : Test columnsDateBoard = describe "columns - dateboard" - [ test "can filter tasks to be from a given file" <| - \() -> - TaskListHelpers.exampleDateBoardTaskList - |> Board.init - ColumnNames.default - (BoardConfig.DateBoardConfig - { defaultDateBoardConfig - | includeUndated = True - , filters = - [ FilterHelpers.fileFilter "gg/xx/yy.md" - ] - , filterPolarity = Filter.Allow - } - ) - |> Board.columns DateTimeHelpers.nowWithZone 0 - |> BoardHelpers.thingsInColumn "Undated" - |> List.map Card.taskItem - |> List.map TaskItem.title - |> Expect.equal - [ "an undated incomplete" - , "an undated incomplete with subtask" - , "incomplete with cTag" - , "incomplete with subtask with cTag" - , "untagged incomplete" - ] - , test "can filter tasks to NOT be from a given file" <| - \() -> - TaskListHelpers.exampleDateBoardTaskList - |> Board.init - ColumnNames.default - (BoardConfig.DateBoardConfig - { defaultDateBoardConfig - | includeUndated = True - , completedCount = 20 - , filters = - [ FilterHelpers.fileFilter "gg/xx/yy.md" - , FilterHelpers.fileFilter "x" - , FilterHelpers.fileFilter "b" - , FilterHelpers.fileFilter "c" - , FilterHelpers.fileFilter "d" - ] - , filterPolarity = Filter.Deny - } - ) - |> Board.columns DateTimeHelpers.nowWithZone 0 - |> BoardHelpers.thingsInColumn "Completed" - |> List.map Card.taskItem - |> List.map TaskItem.title - |> Expect.equal - [ "future complete" - , "yesterday complete" - , "invalid date complete" - ] - , test "can filter tasks to be from a given path" <| - \() -> - TaskListHelpers.taskListFromFile "aa/bb/c.ext" - |> Board.init - ColumnNames.default - (BoardConfig.DateBoardConfig - { defaultDateBoardConfig - | includeUndated = True - , filters = [ FilterHelpers.pathFilter "aa/bb" ] - , filterPolarity = Filter.Allow - } - ) - |> Board.columns DateTimeHelpers.nowWithZone 0 - |> BoardHelpers.thingsInColumn "Undated" - |> List.map Card.taskItem - |> List.map TaskItem.title - |> Expect.equal [ "c1" ] - , test "can filter tasks to NOT be from a given path" <| - \() -> - TaskListHelpers.taskListFromFile "aa/bb/c.ext" - |> Board.init - ColumnNames.default - (BoardConfig.DateBoardConfig - { defaultDateBoardConfig - | includeUndated = True - , filters = [ FilterHelpers.pathFilter "aa/bb" ] - , filterPolarity = Filter.Deny - } - ) - |> Board.columns DateTimeHelpers.nowWithZone 0 - |> BoardHelpers.thingsInColumn "Undated" - |> List.map Card.taskItem - |> List.map TaskItem.title - |> Expect.equal [] - , test "can filter tasks to have a given tag checking both top level and sub tasks" <| - \() -> - TaskListHelpers.exampleDateBoardTaskList - |> Board.init - ColumnNames.default - (BoardConfig.DateBoardConfig - { defaultDateBoardConfig - | includeUndated = True - , filters = [ FilterHelpers.tagFilter "aTag" ] - , filterPolarity = Filter.Allow - , filterScope = Filter.Both - } - ) - |> Board.columns DateTimeHelpers.nowWithZone 0 - |> BoardHelpers.thingsInColumn "Undated" - |> List.map Card.taskItem - |> List.map TaskItem.title - |> Expect.equal [ "invalid date incomplete", "invalid date incomplete with sub-task" ] - , test "can filter tasks to have a given tag checking just top level tasks" <| - \() -> - TaskListHelpers.exampleDateBoardTaskList - |> Board.init - ColumnNames.default - (BoardConfig.DateBoardConfig - { defaultDateBoardConfig - | includeUndated = True - , filters = [ FilterHelpers.tagFilter "aTag" ] - , filterPolarity = Filter.Allow - , filterScope = Filter.TopLevelOnly - } - ) - |> Board.columns DateTimeHelpers.nowWithZone 0 - |> BoardHelpers.thingsInColumn "Undated" - |> List.map Card.taskItem - |> List.map TaskItem.title - |> Expect.equal [ "invalid date incomplete" ] - , test "can filter tasks to have a given tag checking just sub-tasks" <| - \() -> - TaskListHelpers.exampleDateBoardTaskList - |> Board.init - ColumnNames.default - (BoardConfig.DateBoardConfig - { defaultDateBoardConfig - | includeUndated = True - , filters = [ FilterHelpers.tagFilter "aTag" ] - , filterPolarity = Filter.Allow - , filterScope = Filter.SubTasksOnly - } - ) - |> Board.columns DateTimeHelpers.nowWithZone 0 - |> BoardHelpers.thingsInColumn "Undated" - |> List.map Card.taskItem - |> List.map TaskItem.title - |> Expect.equal [ "invalid date incomplete with sub-task" ] - , test "can filter tasks to NOT have a given tag checking both the top level task and its sub-tasks" <| - \() -> - TaskListHelpers.exampleDateBoardTaskList - |> Board.init - ColumnNames.default - (BoardConfig.DateBoardConfig - { defaultDateBoardConfig - | includeUndated = True - , filters = - [ FilterHelpers.tagFilter "aTag" - , FilterHelpers.tagFilter "cTag" - ] - , filterPolarity = Filter.Deny - , filterScope = Filter.Both - } - ) - |> Board.columns DateTimeHelpers.nowWithZone 0 - |> BoardHelpers.thingsInColumn "Undated" - |> List.map Card.taskItem - |> List.map TaskItem.title - |> Expect.equal - [ "an undated incomplete" - , "an undated incomplete with subtask" - , "more undated incomplete" - , "untagged incomplete" - ] - , test "can filter tasks to NOT have a given tag checking just the top level task" <| - \() -> - TaskListHelpers.exampleDateBoardTaskList - |> Board.init - ColumnNames.default - (BoardConfig.DateBoardConfig - { defaultDateBoardConfig - | includeUndated = True - , filters = - [ FilterHelpers.tagFilter "aTag" - , FilterHelpers.tagFilter "cTag" - ] - , filterPolarity = Filter.Deny - , filterScope = Filter.TopLevelOnly - } - ) - |> Board.columns DateTimeHelpers.nowWithZone 0 - |> BoardHelpers.thingsInColumn "Undated" - |> List.map Card.taskItem - |> List.map TaskItem.title - |> Expect.equal - [ "an undated incomplete" - , "an undated incomplete with subtask" - , "incomplete with subtask with cTag" - , "invalid date incomplete with sub-task" - , "more undated incomplete" - , "untagged incomplete" - ] - , test "can filter tasks to NOT have a given tag checking just the sub tasks" <| - \() -> - TaskListHelpers.exampleDateBoardTaskList - |> Board.init - ColumnNames.default - (BoardConfig.DateBoardConfig - { defaultDateBoardConfig - | includeUndated = True - , filters = - [ FilterHelpers.tagFilter "aTag" - , FilterHelpers.tagFilter "cTag" - ] - , filterPolarity = Filter.Deny - , filterScope = Filter.SubTasksOnly - } - ) - |> Board.columns DateTimeHelpers.nowWithZone 0 - |> BoardHelpers.thingsInColumn "Undated" - |> List.map Card.taskItem - |> List.map TaskItem.title - |> Expect.equal - [ "an undated incomplete" - , "an undated incomplete with subtask" - , "incomplete with cTag" - , "invalid date incomplete" - , "more undated incomplete" - , "more undated incomplete with cTag" - , "untagged incomplete" - ] - , test "filters tasks that are either in a file or path AND have one of the given tags" <| - \() -> - TaskListHelpers.exampleDateBoardTaskList - |> Board.init - ColumnNames.default - (BoardConfig.DateBoardConfig - { defaultDateBoardConfig - | includeUndated = True - , filters = - [ FilterHelpers.fileFilter "f" - , FilterHelpers.pathFilter "gg" - , FilterHelpers.tagFilter "aTag" - , FilterHelpers.tagFilter "bTag" - ] - , filterPolarity = Filter.Allow - , filterScope = Filter.Both - } - ) - |> Board.columns DateTimeHelpers.nowWithZone 0 - |> BoardHelpers.thingsInColumn "Undated" - |> List.map Card.taskItem - |> List.map TaskItem.title - |> Expect.equal - [ "an undated incomplete" - , "an undated incomplete with subtask" - , "invalid date incomplete" - , "invalid date incomplete with sub-task" - ] - , test "filters tasks that are NOT in the given files and paths AND DO NOT have one of the given tags" <| - \() -> - TaskListHelpers.exampleDateBoardTaskList - |> Board.init - ColumnNames.default - (BoardConfig.DateBoardConfig - { defaultDateBoardConfig - | includeUndated = True - , filters = - [ FilterHelpers.fileFilter "f" - , FilterHelpers.pathFilter "gg" - , FilterHelpers.tagFilter "aTag" - , FilterHelpers.tagFilter "bTag" - ] - , filterPolarity = Filter.Deny - } - ) - |> Board.columns DateTimeHelpers.nowWithZone 0 - |> BoardHelpers.thingsInColumn "Undated" - |> List.map Card.taskItem - |> List.map TaskItem.title - |> Expect.equal - [ "more undated incomplete with cTag" ] + [ describe "filtering" + [ test "can filter tasks to be from a given file" <| + \() -> + TaskListHelpers.exampleDateBoardTaskList + |> Board.init + ColumnNames.default + (BoardConfig.DateBoardConfig + { defaultDateBoardConfig + | includeUndated = True + , filters = + [ FilterHelpers.fileFilter "gg/xx/yy.md" + ] + , filterPolarity = Filter.Allow + } + ) + |> Board.columns DateTimeHelpers.nowWithZone 0 + |> BoardHelpers.thingsInColumn "Undated" + |> List.map Card.taskItem + |> List.map TaskItem.title + |> Expect.equal + [ "an undated incomplete" + , "an undated incomplete with subtask" + , "incomplete with cTag" + , "incomplete with subtask with cTag" + , "untagged incomplete" + ] + , test "can filter tasks to NOT be from a given file" <| + \() -> + TaskListHelpers.exampleDateBoardTaskList + |> Board.init + ColumnNames.default + (BoardConfig.DateBoardConfig + { defaultDateBoardConfig + | includeUndated = True + , completedCount = 20 + , filters = + [ FilterHelpers.fileFilter "gg/xx/yy.md" + , FilterHelpers.fileFilter "x" + , FilterHelpers.fileFilter "b" + , FilterHelpers.fileFilter "c" + , FilterHelpers.fileFilter "d" + ] + , filterPolarity = Filter.Deny + } + ) + |> Board.columns DateTimeHelpers.nowWithZone 0 + |> BoardHelpers.thingsInColumn "Completed" + |> List.map Card.taskItem + |> List.map TaskItem.title + |> Expect.equal + [ "future complete" + , "yesterday complete" + , "invalid date complete" + ] + , test "can filter tasks to be from a given path" <| + \() -> + TaskListHelpers.taskListFromFile "aa/bb/c.ext" + |> Board.init + ColumnNames.default + (BoardConfig.DateBoardConfig + { defaultDateBoardConfig + | includeUndated = True + , filters = [ FilterHelpers.pathFilter "aa/bb" ] + , filterPolarity = Filter.Allow + } + ) + |> Board.columns DateTimeHelpers.nowWithZone 0 + |> BoardHelpers.thingsInColumn "Undated" + |> List.map Card.taskItem + |> List.map TaskItem.title + |> Expect.equal [ "c1" ] + , test "can filter tasks to NOT be from a given path" <| + \() -> + TaskListHelpers.taskListFromFile "aa/bb/c.ext" + |> Board.init + ColumnNames.default + (BoardConfig.DateBoardConfig + { defaultDateBoardConfig + | includeUndated = True + , filters = [ FilterHelpers.pathFilter "aa/bb" ] + , filterPolarity = Filter.Deny + } + ) + |> Board.columns DateTimeHelpers.nowWithZone 0 + |> BoardHelpers.thingsInColumn "Undated" + |> List.map Card.taskItem + |> List.map TaskItem.title + |> Expect.equal [] + , test "can filter tasks to have a given tag checking both top level and sub tasks" <| + \() -> + TaskListHelpers.exampleDateBoardTaskList + |> Board.init + ColumnNames.default + (BoardConfig.DateBoardConfig + { defaultDateBoardConfig + | includeUndated = True + , filters = [ FilterHelpers.tagFilter "aTag" ] + , filterPolarity = Filter.Allow + , filterScope = Filter.Both + } + ) + |> Board.columns DateTimeHelpers.nowWithZone 0 + |> BoardHelpers.thingsInColumn "Undated" + |> List.map Card.taskItem + |> List.map TaskItem.title + |> Expect.equal [ "invalid date incomplete", "invalid date incomplete with sub-task" ] + , test "can filter tasks to have a given tag checking just top level tasks" <| + \() -> + TaskListHelpers.exampleDateBoardTaskList + |> Board.init + ColumnNames.default + (BoardConfig.DateBoardConfig + { defaultDateBoardConfig + | includeUndated = True + , filters = [ FilterHelpers.tagFilter "aTag" ] + , filterPolarity = Filter.Allow + , filterScope = Filter.TopLevelOnly + } + ) + |> Board.columns DateTimeHelpers.nowWithZone 0 + |> BoardHelpers.thingsInColumn "Undated" + |> List.map Card.taskItem + |> List.map TaskItem.title + |> Expect.equal [ "invalid date incomplete" ] + , test "can filter tasks to have a given tag checking just sub-tasks" <| + \() -> + TaskListHelpers.exampleDateBoardTaskList + |> Board.init + ColumnNames.default + (BoardConfig.DateBoardConfig + { defaultDateBoardConfig + | includeUndated = True + , filters = [ FilterHelpers.tagFilter "aTag" ] + , filterPolarity = Filter.Allow + , filterScope = Filter.SubTasksOnly + } + ) + |> Board.columns DateTimeHelpers.nowWithZone 0 + |> BoardHelpers.thingsInColumn "Undated" + |> List.map Card.taskItem + |> List.map TaskItem.title + |> Expect.equal [ "invalid date incomplete with sub-task" ] + , test "can filter tasks to NOT have a given tag checking both the top level task and its sub-tasks" <| + \() -> + TaskListHelpers.exampleDateBoardTaskList + |> Board.init + ColumnNames.default + (BoardConfig.DateBoardConfig + { defaultDateBoardConfig + | includeUndated = True + , filters = + [ FilterHelpers.tagFilter "aTag" + , FilterHelpers.tagFilter "cTag" + ] + , filterPolarity = Filter.Deny + , filterScope = Filter.Both + } + ) + |> Board.columns DateTimeHelpers.nowWithZone 0 + |> BoardHelpers.thingsInColumn "Undated" + |> List.map Card.taskItem + |> List.map TaskItem.title + |> Expect.equal + [ "an undated incomplete" + , "an undated incomplete with subtask" + , "more undated incomplete" + , "untagged incomplete" + ] + , test "can filter tasks to NOT have a given tag checking just the top level task" <| + \() -> + TaskListHelpers.exampleDateBoardTaskList + |> Board.init + ColumnNames.default + (BoardConfig.DateBoardConfig + { defaultDateBoardConfig + | includeUndated = True + , filters = + [ FilterHelpers.tagFilter "aTag" + , FilterHelpers.tagFilter "cTag" + ] + , filterPolarity = Filter.Deny + , filterScope = Filter.TopLevelOnly + } + ) + |> Board.columns DateTimeHelpers.nowWithZone 0 + |> BoardHelpers.thingsInColumn "Undated" + |> List.map Card.taskItem + |> List.map TaskItem.title + |> Expect.equal + [ "an undated incomplete" + , "an undated incomplete with subtask" + , "incomplete with subtask with cTag" + , "invalid date incomplete with sub-task" + , "more undated incomplete" + , "untagged incomplete" + ] + , test "can filter tasks to NOT have a given tag checking just the sub tasks" <| + \() -> + TaskListHelpers.exampleDateBoardTaskList + |> Board.init + ColumnNames.default + (BoardConfig.DateBoardConfig + { defaultDateBoardConfig + | includeUndated = True + , filters = + [ FilterHelpers.tagFilter "aTag" + , FilterHelpers.tagFilter "cTag" + ] + , filterPolarity = Filter.Deny + , filterScope = Filter.SubTasksOnly + } + ) + |> Board.columns DateTimeHelpers.nowWithZone 0 + |> BoardHelpers.thingsInColumn "Undated" + |> List.map Card.taskItem + |> List.map TaskItem.title + |> Expect.equal + [ "an undated incomplete" + , "an undated incomplete with subtask" + , "incomplete with cTag" + , "invalid date incomplete" + , "more undated incomplete" + , "more undated incomplete with cTag" + , "untagged incomplete" + ] + , test "filters tasks that are either in a file or path AND have one of the given tags" <| + \() -> + TaskListHelpers.exampleDateBoardTaskList + |> Board.init + ColumnNames.default + (BoardConfig.DateBoardConfig + { defaultDateBoardConfig + | includeUndated = True + , filters = + [ FilterHelpers.fileFilter "f" + , FilterHelpers.pathFilter "gg" + , FilterHelpers.tagFilter "aTag" + , FilterHelpers.tagFilter "bTag" + ] + , filterPolarity = Filter.Allow + , filterScope = Filter.Both + } + ) + |> Board.columns DateTimeHelpers.nowWithZone 0 + |> BoardHelpers.thingsInColumn "Undated" + |> List.map Card.taskItem + |> List.map TaskItem.title + |> Expect.equal + [ "an undated incomplete" + , "an undated incomplete with subtask" + , "invalid date incomplete" + , "invalid date incomplete with sub-task" + ] + , test "filters tasks that are NOT in the given files and paths AND DO NOT have one of the given tags" <| + \() -> + TaskListHelpers.exampleDateBoardTaskList + |> Board.init + ColumnNames.default + (BoardConfig.DateBoardConfig + { defaultDateBoardConfig + | includeUndated = True + , filters = + [ FilterHelpers.fileFilter "f" + , FilterHelpers.pathFilter "gg" + , FilterHelpers.tagFilter "aTag" + , FilterHelpers.tagFilter "bTag" + ] + , filterPolarity = Filter.Deny + } + ) + |> Board.columns DateTimeHelpers.nowWithZone 0 + |> BoardHelpers.thingsInColumn "Undated" + |> List.map Card.taskItem + |> List.map TaskItem.title + |> Expect.equal + [ "more undated incomplete with cTag" ] + ] + , describe "collapsing columns" + [ test "does not collapse an untoggled column containing cards" <| + \() -> + TaskListHelpers.exampleDateBoardTaskList + |> Board.init + ColumnNames.default + (BoardConfig.DateBoardConfig + { defaultDateBoardConfig + | includeUndated = True + , filters = [] + , filterPolarity = Filter.Deny + } + ) + |> Board.columns DateTimeHelpers.nowWithZone 0 + |> BoardHelpers.columnTitled "Undated" + |> Maybe.map Column.isCollapsed + |> Expect.equal (Just False) + , test "collapses a toggled column containing cards" <| + \() -> + TaskListHelpers.exampleDateBoardTaskList + |> Board.init + ColumnNames.default + (BoardConfig.DateBoardConfig + { defaultDateBoardConfig + | includeUndated = True + , filters = [] + , filterPolarity = Filter.Deny + , collapseStates = CollapseStates.init |> CollapseStates.toggleColumn 0 + } + ) + |> Board.columns DateTimeHelpers.nowWithZone 0 + |> BoardHelpers.columnTitled "Undated" + |> Maybe.map Column.isCollapsed + |> Expect.equal (Just True) + , test "collapses an untoggled column with no cards" <| + \() -> + TaskListHelpers.exampleDateBoardTaskList + |> Board.init + ColumnNames.default + (BoardConfig.DateBoardConfig + { defaultDateBoardConfig + | includeUndated = True + , filters = + [ FilterHelpers.fileFilter "f" + , FilterHelpers.pathFilter "gg" + , FilterHelpers.tagFilter "aTag" + , FilterHelpers.tagFilter "bTag" + , FilterHelpers.tagFilter "cTag" + ] + , filterPolarity = Filter.Deny + } + ) + |> Board.columns DateTimeHelpers.nowWithZone 0 + |> BoardHelpers.columnTitled "Undated" + |> Maybe.map Column.isCollapsed + |> Expect.equal (Just True) + , test "does not collapse a toggled column with no cards" <| + \() -> + TaskListHelpers.exampleDateBoardTaskList + |> Board.init + ColumnNames.default + (BoardConfig.DateBoardConfig + { defaultDateBoardConfig + | includeUndated = True + , filters = + [ FilterHelpers.fileFilter "f" + , FilterHelpers.pathFilter "gg" + , FilterHelpers.tagFilter "aTag" + , FilterHelpers.tagFilter "bTag" + , FilterHelpers.tagFilter "cTag" + ] + , filterPolarity = Filter.Deny + , collapseStates = CollapseStates.init |> CollapseStates.toggleColumn 0 + } + ) + |> Board.columns DateTimeHelpers.nowWithZone 0 + |> BoardHelpers.columnTitled "Undated" + |> Maybe.map Column.isCollapsed + |> Expect.equal (Just False) + ] ] columnsTagBoard : Test columnsTagBoard = describe "columns - tagboard" - [ test "can filter tasks to be from a given file" <| - \() -> - TaskListHelpers.exampleTagBoardTaskList - |> Board.init - ColumnNames.default - (BoardConfig.TagBoardConfig - { defaultTagBoardConfig - | includeOthers = True - , filters = [ FilterHelpers.fileFilter "a" ] - , filterPolarity = Filter.Allow - } - ) - |> Board.columns DateTimeHelpers.nowWithZone 0 - |> BoardHelpers.thingsInColumn "Others" - |> List.map Card.taskItem - |> List.map TaskItem.title - |> Expect.equal - [ "a.tag1" - , "a.tag2" - , "a.tag3" - ] - , test "can filter tasks to NOT be from a given file" <| - \() -> - TaskListHelpers.exampleTagBoardTaskList - |> Board.init - ColumnNames.default - (BoardConfig.TagBoardConfig - { defaultTagBoardConfig - | includeOthers = True - , filters = [ FilterHelpers.fileFilter "a" ] - , filterPolarity = Filter.Deny - } - ) - |> Board.columns DateTimeHelpers.nowWithZone 0 - |> BoardHelpers.thingsInColumn "Others" - |> List.map Card.taskItem - |> List.map TaskItem.title - |> Expect.equal - [ "b.tag1" - , "b.tag2" - , "b.tag3" - , "c.tag1" - , "c.tag2" - , "c.tag3" - ] - , test "can filter tasks to be from a given path" <| - \() -> - TaskListHelpers.exampleTagBoardTaskList - |> Board.init - ColumnNames.default - (BoardConfig.TagBoardConfig - { defaultTagBoardConfig - | includeOthers = True - , filters = [ FilterHelpers.pathFilter "aa" ] - , filterPolarity = Filter.Allow - } - ) - |> Board.columns DateTimeHelpers.nowWithZone 0 - |> BoardHelpers.thingsInColumn "Others" - |> List.map Card.taskItem - |> List.map TaskItem.title - |> Expect.equal - [ "c.tag1" - , "c.tag2" - , "c.tag3" - ] - , test "can filter tasks to NOT be from a given path" <| - \() -> - TaskListHelpers.exampleTagBoardTaskList - |> Board.init - ColumnNames.default - (BoardConfig.TagBoardConfig - { defaultTagBoardConfig - | includeOthers = True - , filters = [ FilterHelpers.pathFilter "aa" ] - , filterPolarity = Filter.Deny - } - ) - |> Board.columns DateTimeHelpers.nowWithZone 0 - |> BoardHelpers.thingsInColumn "Others" - |> List.map Card.taskItem - |> List.map TaskItem.title - |> Expect.equal - [ "a.tag1" - , "a.tag2" - , "a.tag3" - , "b.tag1" - , "b.tag2" - , "b.tag3" - ] - , test "can filter tasks to have a given tag" <| - \() -> - TaskListHelpers.exampleTagBoardTaskList - |> Board.init - ColumnNames.default - (BoardConfig.TagBoardConfig - { defaultTagBoardConfig - | includeOthers = True - , filters = [ FilterHelpers.tagFilter "tag1" ] - , filterPolarity = Filter.Allow - } - ) - |> Board.columns DateTimeHelpers.nowWithZone 0 - |> BoardHelpers.thingsInColumn "Others" - |> List.map Card.taskItem - |> List.map TaskItem.title - |> Expect.equal - [ "a.tag1" - , "b.tag1" - , "c.tag1" - ] - , test "can filter tasks to NOT have a given tag" <| - \() -> - TaskListHelpers.exampleTagBoardTaskList - |> Board.init - ColumnNames.default - (BoardConfig.TagBoardConfig - { defaultTagBoardConfig - | includeOthers = True - , filters = [ FilterHelpers.tagFilter "tag1" ] - , filterPolarity = Filter.Deny - } - ) - |> Board.columns DateTimeHelpers.nowWithZone 0 - |> BoardHelpers.thingsInColumn "Others" - |> List.map Card.taskItem - |> List.map TaskItem.title - |> Expect.equal - [ "a.tag2" - , "a.tag3" - , "b.tag2" - , "b.tag3" - , "c.tag2" - , "c.tag3" - ] - , test "filters tasks that are either in a file or path AND have one of the given tags" <| - \() -> - TaskListHelpers.exampleTagBoardTaskList - |> Board.init - ColumnNames.default - (BoardConfig.TagBoardConfig - { defaultTagBoardConfig - | includeOthers = True - , filters = - [ FilterHelpers.fileFilter "a" - , FilterHelpers.pathFilter "aa" - , FilterHelpers.tagFilter "tag1" - , FilterHelpers.tagFilter "tag2" - ] - , filterPolarity = Filter.Allow - } - ) - |> Board.columns DateTimeHelpers.nowWithZone 0 - |> BoardHelpers.thingsInColumn "Others" - |> List.map Card.taskItem - |> List.map TaskItem.title - |> Expect.equal - [ "a.tag1" - , "a.tag2" - , "c.tag1" - , "c.tag2" - ] - , test "filters tasks that are NOT in any of the given file or path AND DO NOT have one of the given tags" <| - \() -> - TaskListHelpers.exampleTagBoardTaskList - |> Board.init - ColumnNames.default - (BoardConfig.TagBoardConfig - { defaultTagBoardConfig - | includeOthers = True - , filters = - [ FilterHelpers.fileFilter "a" - , FilterHelpers.pathFilter "aa" - , FilterHelpers.tagFilter "tag1" - , FilterHelpers.tagFilter "tag2" - ] - , filterPolarity = Filter.Deny - } - ) - |> Board.columns DateTimeHelpers.nowWithZone 0 - |> BoardHelpers.thingsInColumn "Others" - |> List.map Card.taskItem - |> List.map TaskItem.title - |> Expect.equal [ "b.tag3" ] + [ describe "filtering" + [ test "can filter tasks to be from a given file" <| + \() -> + TaskListHelpers.exampleTagBoardTaskList + |> Board.init + ColumnNames.default + (BoardConfig.TagBoardConfig + { defaultTagBoardConfig + | includeOthers = True + , filters = [ FilterHelpers.fileFilter "a" ] + , filterPolarity = Filter.Allow + } + ) + |> Board.columns DateTimeHelpers.nowWithZone 0 + |> BoardHelpers.thingsInColumn "Others" + |> List.map Card.taskItem + |> List.map TaskItem.title + |> Expect.equal + [ "a.tag1" + , "a.tag2" + , "a.tag3" + ] + , test "can filter tasks to NOT be from a given file" <| + \() -> + TaskListHelpers.exampleTagBoardTaskList + |> Board.init + ColumnNames.default + (BoardConfig.TagBoardConfig + { defaultTagBoardConfig + | includeOthers = True + , filters = [ FilterHelpers.fileFilter "a" ] + , filterPolarity = Filter.Deny + } + ) + |> Board.columns DateTimeHelpers.nowWithZone 0 + |> BoardHelpers.thingsInColumn "Others" + |> List.map Card.taskItem + |> List.map TaskItem.title + |> Expect.equal + [ "b.tag1" + , "b.tag2" + , "b.tag3" + , "c.tag1" + , "c.tag2" + , "c.tag3" + ] + , test "can filter tasks to be from a given path" <| + \() -> + TaskListHelpers.exampleTagBoardTaskList + |> Board.init + ColumnNames.default + (BoardConfig.TagBoardConfig + { defaultTagBoardConfig + | includeOthers = True + , filters = [ FilterHelpers.pathFilter "aa" ] + , filterPolarity = Filter.Allow + } + ) + |> Board.columns DateTimeHelpers.nowWithZone 0 + |> BoardHelpers.thingsInColumn "Others" + |> List.map Card.taskItem + |> List.map TaskItem.title + |> Expect.equal + [ "c.tag1" + , "c.tag2" + , "c.tag3" + ] + , test "can filter tasks to NOT be from a given path" <| + \() -> + TaskListHelpers.exampleTagBoardTaskList + |> Board.init + ColumnNames.default + (BoardConfig.TagBoardConfig + { defaultTagBoardConfig + | includeOthers = True + , filters = [ FilterHelpers.pathFilter "aa" ] + , filterPolarity = Filter.Deny + } + ) + |> Board.columns DateTimeHelpers.nowWithZone 0 + |> BoardHelpers.thingsInColumn "Others" + |> List.map Card.taskItem + |> List.map TaskItem.title + |> Expect.equal + [ "a.tag1" + , "a.tag2" + , "a.tag3" + , "b.tag1" + , "b.tag2" + , "b.tag3" + ] + , test "can filter tasks to have a given tag" <| + \() -> + TaskListHelpers.exampleTagBoardTaskList + |> Board.init + ColumnNames.default + (BoardConfig.TagBoardConfig + { defaultTagBoardConfig + | includeOthers = True + , filters = [ FilterHelpers.tagFilter "tag1" ] + , filterPolarity = Filter.Allow + } + ) + |> Board.columns DateTimeHelpers.nowWithZone 0 + |> BoardHelpers.thingsInColumn "Others" + |> List.map Card.taskItem + |> List.map TaskItem.title + |> Expect.equal + [ "a.tag1" + , "b.tag1" + , "c.tag1" + ] + , test "can filter tasks to NOT have a given tag" <| + \() -> + TaskListHelpers.exampleTagBoardTaskList + |> Board.init + ColumnNames.default + (BoardConfig.TagBoardConfig + { defaultTagBoardConfig + | includeOthers = True + , filters = [ FilterHelpers.tagFilter "tag1" ] + , filterPolarity = Filter.Deny + } + ) + |> Board.columns DateTimeHelpers.nowWithZone 0 + |> BoardHelpers.thingsInColumn "Others" + |> List.map Card.taskItem + |> List.map TaskItem.title + |> Expect.equal + [ "a.tag2" + , "a.tag3" + , "b.tag2" + , "b.tag3" + , "c.tag2" + , "c.tag3" + ] + , test "filters tasks that are either in a file or path AND have one of the given tags" <| + \() -> + TaskListHelpers.exampleTagBoardTaskList + |> Board.init + ColumnNames.default + (BoardConfig.TagBoardConfig + { defaultTagBoardConfig + | includeOthers = True + , filters = + [ FilterHelpers.fileFilter "a" + , FilterHelpers.pathFilter "aa" + , FilterHelpers.tagFilter "tag1" + , FilterHelpers.tagFilter "tag2" + ] + , filterPolarity = Filter.Allow + } + ) + |> Board.columns DateTimeHelpers.nowWithZone 0 + |> BoardHelpers.thingsInColumn "Others" + |> List.map Card.taskItem + |> List.map TaskItem.title + |> Expect.equal + [ "a.tag1" + , "a.tag2" + , "c.tag1" + , "c.tag2" + ] + , test "filters tasks that are NOT in any of the given file or path AND DO NOT have one of the given tags" <| + \() -> + TaskListHelpers.exampleTagBoardTaskList + |> Board.init + ColumnNames.default + (BoardConfig.TagBoardConfig + { defaultTagBoardConfig + | includeOthers = True + , filters = + [ FilterHelpers.fileFilter "a" + , FilterHelpers.pathFilter "aa" + , FilterHelpers.tagFilter "tag1" + , FilterHelpers.tagFilter "tag2" + ] + , filterPolarity = Filter.Deny + } + ) + |> Board.columns DateTimeHelpers.nowWithZone 0 + |> BoardHelpers.thingsInColumn "Others" + |> List.map Card.taskItem + |> List.map TaskItem.title + |> Expect.equal [ "b.tag3" ] + ] + , describe "collapsing columns" + [ test "does not collapse an untoggled column containing cards" <| + \() -> + TaskListHelpers.exampleTagBoardTaskList + |> Board.init + ColumnNames.default + (BoardConfig.TagBoardConfig + { defaultTagBoardConfig + | includeUntagged = False + , includeOthers = True + , filters = [] + , filterPolarity = Filter.Deny + } + ) + |> Board.columns DateTimeHelpers.nowWithZone 0 + |> BoardHelpers.columnTitled "Others" + |> Maybe.map Column.isCollapsed + |> Expect.equal (Just False) + , test "collapses a toggled column containing cards" <| + \() -> + TaskListHelpers.exampleTagBoardTaskList + |> Board.init + ColumnNames.default + (BoardConfig.TagBoardConfig + { defaultTagBoardConfig + | includeUntagged = False + , includeOthers = True + , filters = [] + , filterPolarity = Filter.Deny + , collapseStates = CollapseStates.init |> CollapseStates.toggleColumn 0 + } + ) + |> Board.columns DateTimeHelpers.nowWithZone 0 + |> BoardHelpers.columnTitled "Others" + |> Maybe.map Column.isCollapsed + |> Expect.equal (Just True) + , test "collapses an untoggled column with no cards" <| + \() -> + TaskListHelpers.exampleTagBoardTaskList + |> Board.init + ColumnNames.default + (BoardConfig.TagBoardConfig + { defaultTagBoardConfig + | includeUntagged = False + , includeOthers = True + , filters = + [ FilterHelpers.fileFilter "a" + , FilterHelpers.pathFilter "aa" + , FilterHelpers.tagFilter "tag1" + , FilterHelpers.tagFilter "tag2" + , FilterHelpers.tagFilter "tag3" + ] + , filterPolarity = Filter.Deny + } + ) + |> Board.columns DateTimeHelpers.nowWithZone 0 + |> BoardHelpers.columnTitled "Others" + |> Maybe.map Column.isCollapsed + |> Expect.equal (Just True) + , test "does not collapse a toggled column with no cards" <| + \() -> + TaskListHelpers.exampleTagBoardTaskList + |> Board.init + ColumnNames.default + (BoardConfig.TagBoardConfig + { defaultTagBoardConfig + | includeUntagged = False + , includeOthers = True + , filters = + [ FilterHelpers.fileFilter "a" + , FilterHelpers.pathFilter "aa" + , FilterHelpers.tagFilter "tag1" + , FilterHelpers.tagFilter "tag2" + , FilterHelpers.tagFilter "tag3" + ] + , filterPolarity = Filter.Deny + , collapseStates = CollapseStates.init |> CollapseStates.toggleColumn 0 + } + ) + |> Board.columns DateTimeHelpers.nowWithZone 0 + |> BoardHelpers.columnTitled "Others" + |> Maybe.map Column.isCollapsed + |> Expect.equal (Just False) + ] ] diff --git a/tests/CollapseStatesTests.elm b/tests/CollapseStatesTests.elm new file mode 100644 index 00000000..4a1096cc --- /dev/null +++ b/tests/CollapseStatesTests.elm @@ -0,0 +1,43 @@ +module CollapseStatesTests exposing (suite) + +import CollapseStates +import Expect +import Fuzz exposing (Fuzzer) +import Test exposing (..) + + +suite : Test +suite = + concat + [ columnIsToggled + ] + + +columnIsToggled : Test +columnIsToggled = + describe "isToggled" + [ fuzz (Fuzz.intRange 0 20) "returns False for any column if nothing has been toggled" <| + \fuzzedInt -> + CollapseStates.init + |> CollapseStates.columnIsToggled fuzzedInt + |> Expect.equal False + , fuzz (Fuzz.intRange 0 20) "returns True for any column if it has been toggled" <| + \fuzzedInt -> + CollapseStates.init + |> CollapseStates.toggleColumn fuzzedInt + |> CollapseStates.columnIsToggled fuzzedInt + |> Expect.equal True + , fuzz (Fuzz.intRange 0 20) "returns False for any column if it has been toggled twice" <| + \fuzzedInt -> + CollapseStates.init + |> CollapseStates.toggleColumn fuzzedInt + |> CollapseStates.toggleColumn fuzzedInt + |> CollapseStates.columnIsToggled fuzzedInt + |> Expect.equal False + , fuzz (Fuzz.intRange 1 20) "toggling a column does not affect other columns" <| + \fuzzedInt -> + CollapseStates.init + |> CollapseStates.toggleColumn fuzzedInt + |> CollapseStates.columnIsToggled 0 + |> Expect.equal False + ] diff --git a/tests/ColumnTests.elm b/tests/ColumnTests.elm index 100c22c0..470be33e 100644 --- a/tests/ColumnTests.elm +++ b/tests/ColumnTests.elm @@ -41,6 +41,18 @@ isCollapsed = Column.init True "a name" [ 1 ] |> Column.isCollapsed |> Expect.equal False + , test "returns False for an empty Column which has had it's collapse state inverted" <| + \() -> + Column.init True "a name" [] + |> Column.invertCollapseState + |> Column.isCollapsed + |> Expect.equal False + , test "returns True for a non-empty Column which has had its collapse state inverted" <| + \() -> + Column.init True "a name" [ 1 ] + |> Column.invertCollapseState + |> Column.isCollapsed + |> Expect.equal True ] diff --git a/tests/Helpers/BoardConfigHelpers.elm b/tests/Helpers/BoardConfigHelpers.elm index 016b12f9..a9281fa3 100644 --- a/tests/Helpers/BoardConfigHelpers.elm +++ b/tests/Helpers/BoardConfigHelpers.elm @@ -7,6 +7,7 @@ module Helpers.BoardConfigHelpers exposing ) import BoardConfig exposing (BoardConfig) +import CollapseStates import DateBoardConfig exposing (DateBoardConfig) import Filter import Helpers.FilterHelpers as FilterHelpers @@ -22,6 +23,7 @@ defaultDateBoardConfig = , showFilteredTags = True , includeUndated = False , title = "Date Board Title" + , collapseStates = CollapseStates.init } @@ -39,6 +41,7 @@ exampleDateBoardConfig = , showFilteredTags = True , includeUndated = False , title = "Date Board Title" + , collapseStates = CollapseStates.init } @@ -54,6 +57,7 @@ defaultTagBoardConfig = , includeOthers = False , includeUntagged = False , title = "Tag Board Title" + , collapseStates = CollapseStates.init } @@ -69,4 +73,5 @@ exampleTagBoardConfig = , includeOthers = False , includeUntagged = True , title = "Tag Board Title" + , collapseStates = CollapseStates.init } diff --git a/tests/Helpers/BoardHelpers.elm b/tests/Helpers/BoardHelpers.elm index 17e1d56f..8284d725 100644 --- a/tests/Helpers/BoardHelpers.elm +++ b/tests/Helpers/BoardHelpers.elm @@ -1,11 +1,19 @@ module Helpers.BoardHelpers exposing - ( thingsInColumn + ( columnTitled + , thingsInColumn , thingsInColumns ) import Column exposing (Column) +columnTitled : String -> List (Column a) -> Maybe (Column a) +columnTitled columnName cardsInColumns = + cardsInColumns + |> List.filter (\c -> Column.hasName columnName c) + |> List.head + + thingsInColumns : List String -> List (Column a) -> List a thingsInColumns columnNames cardsInColumns = List.concatMap (\columnName -> thingsInColumn columnName cardsInColumns) columnNames diff --git a/tests/InteropDefinitionsTests.elm b/tests/InteropDefinitionsTests.elm index b52bf6d2..8365ed8b 100644 --- a/tests/InteropDefinitionsTests.elm +++ b/tests/InteropDefinitionsTests.elm @@ -1,6 +1,7 @@ module InteropDefinitionsTests exposing (suite) import BoardConfig +import CollapseStates import ColumnNames import DataviewTaskCompletion import Expect @@ -48,6 +49,7 @@ flagsTests = , showFilteredTags = True , includeUndated = True , title = "date board title" + , collapseStates = CollapseStates.init } , BoardConfig.TagBoardConfig { columns = [ { displayTitle = "title 1", tag = "tag 1" } ] @@ -60,6 +62,7 @@ flagsTests = , includeOthers = False , includeUntagged = True , title = "tag board title" + , collapseStates = CollapseStates.init } ] , globalSettings = @@ -100,6 +103,7 @@ flagsTests = , showFilteredTags = True , includeUndated = True , title = "date board title" + , collapseStates = CollapseStates.init } , BoardConfig.TagBoardConfig { columns = [ { displayTitle = "title 1", tag = "tag 1" } ] @@ -112,6 +116,7 @@ flagsTests = , includeOthers = False , includeUntagged = True , title = "tag board title" + , collapseStates = CollapseStates.init } ] , globalSettings = @@ -152,6 +157,7 @@ flagsTests = , showFilteredTags = True , includeUndated = True , title = "date board title" + , collapseStates = CollapseStates.init } , BoardConfig.TagBoardConfig { columns = [ { displayTitle = "title 1", tag = "tag 1" } ] @@ -164,6 +170,7 @@ flagsTests = , includeOthers = False , includeUntagged = True , title = "tag board title" + , collapseStates = CollapseStates.init } ] , globalSettings = @@ -196,6 +203,7 @@ flagsTests = , showFilteredTags = True , includeUndated = True , title = "date board title" + , collapseStates = CollapseStates.init } , BoardConfig.TagBoardConfig { columns = [ { displayTitle = "title 1", tag = "tag 1" } ] @@ -208,6 +216,7 @@ flagsTests = , includeOthers = False , includeUntagged = True , title = "tag board title" + , collapseStates = CollapseStates.init } ] , globalSettings = @@ -240,6 +249,7 @@ flagsTests = , showFilteredTags = True , includeUndated = True , title = "date board title" + , collapseStates = CollapseStates.init } , BoardConfig.TagBoardConfig { columns = [ { displayTitle = "title 1", tag = "tag 1" } ] @@ -252,6 +262,7 @@ flagsTests = , includeOthers = False , includeUntagged = True , title = "tag board title" + , collapseStates = CollapseStates.init } ] , globalSettings = GlobalSettings.default @@ -281,6 +292,7 @@ flagsTests = , showFilteredTags = True , includeUndated = True , title = "date board title" + , collapseStates = CollapseStates.init } , BoardConfig.TagBoardConfig { columns = [ { displayTitle = "title 1", tag = "tag 1" } ] @@ -293,6 +305,7 @@ flagsTests = , includeOthers = False , includeUntagged = True , title = "tag board title" + , collapseStates = CollapseStates.init } ] , globalSettings = GlobalSettings.default @@ -322,6 +335,7 @@ flagsTests = , showFilteredTags = True , includeUndated = True , title = "date board title" + , collapseStates = CollapseStates.init } , BoardConfig.TagBoardConfig { columns = [ { displayTitle = "title 1", tag = "tag 1" } ] @@ -334,6 +348,7 @@ flagsTests = , includeOthers = False , includeUntagged = True , title = "tag board title" + , collapseStates = CollapseStates.init } ] , globalSettings = GlobalSettings.default @@ -363,6 +378,7 @@ flagsTests = , showFilteredTags = True , includeUndated = True , title = "date board title" + , collapseStates = CollapseStates.init } , BoardConfig.TagBoardConfig { columns = [ { displayTitle = "title 1", tag = "tag 1" } ] @@ -375,6 +391,7 @@ flagsTests = , includeOthers = False , includeUntagged = True , title = "tag board title" + , collapseStates = CollapseStates.init } ] , globalSettings = GlobalSettings.default diff --git a/tests/SettingsStateTests.elm b/tests/SettingsStateTests.elm index 793a8158..c1f34fc1 100644 --- a/tests/SettingsStateTests.elm +++ b/tests/SettingsStateTests.elm @@ -1,6 +1,7 @@ module SettingsStateTests exposing (suite) import BoardConfig exposing (BoardConfig) +import CollapseStates import ColumnNames import DateBoardConfig exposing (DateBoardConfig) import Expect @@ -506,6 +507,7 @@ exampleDateBoardConfig = , showFilteredTags = True , includeUndated = False , title = "Date Board Title" + , collapseStates = CollapseStates.init } @@ -521,4 +523,5 @@ exampleTagBoardConfig = , includeOthers = False , includeUntagged = True , title = "Tag Board Title" + , collapseStates = CollapseStates.init } From dc6e282684eca571c5aedc8e41086ab2ee6b8693 Mon Sep 17 00:00:00 2001 From: rupert Date: Sun, 29 Jan 2023 14:19:25 +0000 Subject: [PATCH 07/21] Collapse: collapse/uncollapse when click on control --- src/BoardConfig.elm | 13 +++++++++++++ src/Page/Board.elm | 2 +- src/Session.elm | 12 ++++++++++++ tests/BoardConfigTests.elm | 38 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 64 insertions(+), 1 deletion(-) diff --git a/src/BoardConfig.elm b/src/BoardConfig.elm index 13146bf0..72ab8679 100644 --- a/src/BoardConfig.elm +++ b/src/BoardConfig.elm @@ -17,6 +17,7 @@ module BoardConfig exposing , isForTagBoard , mapFilters , title + , toggleColumnCollapse , toggleIncludeOthers , toggleIncludeUndated , toggleIncludeUntagged @@ -232,6 +233,18 @@ mapFilters fn config = TagBoardConfig { boardConfig | filters = List.map fn boardConfig.filters } +toggleColumnCollapse : Int -> BoardConfig -> BoardConfig +toggleColumnCollapse columnIndex config = + case config of + DateBoardConfig boardConfig -> + DateBoardConfig <| + { boardConfig | collapseStates = CollapseStates.toggleColumn columnIndex boardConfig.collapseStates } + + TagBoardConfig boardConfig -> + TagBoardConfig <| + { boardConfig | collapseStates = CollapseStates.toggleColumn columnIndex boardConfig.collapseStates } + + toggleIncludeOthers : BoardConfig -> BoardConfig toggleIncludeOthers config = case config of diff --git a/src/Page/Board.elm b/src/Page/Board.elm index 7bf157ed..043cbd75 100644 --- a/src/Page/Board.elm +++ b/src/Page/Board.elm @@ -92,7 +92,7 @@ update msg session = ) ToggleColumnCollapse columnIndex -> - ( session + ( Session.toggleColumnCollapse columnIndex session , Cmd.none , Session.NoOp ) diff --git a/src/Session.elm b/src/Session.elm index d8637c00..7f016fbd 100644 --- a/src/Session.elm +++ b/src/Session.elm @@ -23,6 +23,7 @@ module Session exposing , timeIs , timeWIthZoneIs , timeWithZone + , toggleColumnCollapse , updatePath , updateSettings , updateTextDirection @@ -284,6 +285,17 @@ replaceTaskItems filePath updatedList ((Session config) as session) = updateTaskListState (State.Loaded (TaskList.replaceForFile filePath updatedList currentList)) session +toggleColumnCollapse : Int -> Session -> Session +toggleColumnCollapse columnIndex (Session config) = + Session + { config + | settings = + Settings.updateCurrentBoard + (BoardConfig.toggleColumnCollapse columnIndex) + config.settings + } + + updatePath : String -> String -> Session -> Session updatePath oldPath newPath (Session config) = let diff --git a/tests/BoardConfigTests.elm b/tests/BoardConfigTests.elm index a120ad2b..e2766f2a 100644 --- a/tests/BoardConfigTests.elm +++ b/tests/BoardConfigTests.elm @@ -1,6 +1,7 @@ module BoardConfigTests exposing (suite) import BoardConfig exposing (BoardConfig) +import CollapseStates import DateBoardConfig exposing (DateBoardConfig) import Expect import Filter @@ -21,6 +22,7 @@ suite = , isForDateBoard , isForTagBoard , mapFilters + , toggleColumnCollapse , toggleIncludeOthers , toggleIncludeUndated , toggleIncludeUntagged @@ -141,6 +143,42 @@ mapFilters = ] +toggleColumnCollapse : Test +toggleColumnCollapse = + describe "toggleColumnCollapse" + [ test "sets the collapse state for a DateBoard config" <| + \() -> + BoardConfig.fromBoardType "dateBoard" "" + |> BoardConfig.toggleColumnCollapse 0 + |> extractDateBoardConfig + |> Maybe.map .collapseStates + |> Expect.equal (Just <| (CollapseStates.init |> CollapseStates.toggleColumn 0)) + , test "unsets the collapse state for a DateBoard config if toggled twice" <| + \() -> + BoardConfig.fromBoardType "dateBoard" "" + |> BoardConfig.toggleColumnCollapse 0 + |> BoardConfig.toggleColumnCollapse 0 + |> extractDateBoardConfig + |> Maybe.map .collapseStates + |> Expect.equal (Just <| CollapseStates.init) + , test "sets the collapse state for a TagBoard config" <| + \() -> + BoardConfig.fromBoardType "tagBoard" "" + |> BoardConfig.toggleColumnCollapse 0 + |> extractTagBoardConfig + |> Maybe.map .collapseStates + |> Expect.equal (Just <| (CollapseStates.init |> CollapseStates.toggleColumn 0)) + , test "unsets the collapse state for a TagBoard config if toggled twice" <| + \() -> + BoardConfig.fromBoardType "tagBoard" "" + |> BoardConfig.toggleColumnCollapse 0 + |> BoardConfig.toggleColumnCollapse 0 + |> extractTagBoardConfig + |> Maybe.map .collapseStates + |> Expect.equal (Just <| CollapseStates.init) + ] + + toggleIncludeOthers : Test toggleIncludeOthers = describe "toggleIncludeOthers" From 58c0a253b9045ed3831e26fe9e9351b84078ab06 Mon Sep 17 00:00:00 2001 From: rupert Date: Sun, 29 Jan 2023 14:24:39 +0000 Subject: [PATCH 08/21] Collapse: don't display cards in collapsed columns --- TODO.md | 7 +------ styles.css | 4 ++++ 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/TODO.md b/TODO.md index 5fa40a37..3fb41d73 100644 --- a/TODO.md +++ b/TODO.md @@ -1,13 +1,8 @@ +- don't resize columns when toggling collapse - only do this when re-sizing the window - horizontal scrollbar isn't working properly (there can be things offscreen to the right that I can't scroll into view (e.g. the completed column) - show the number of cards in a column when it is collapsed -- should I use flexbox instead? - - need a min/max width for each column, so width is always filled - always fill width on initial layout - - do I want the width of other columns to change when a column is collapsed? - - no -> only resize columns when changing the size of the page -- https://www.sitepoint.com/building-trello-layout-css-grid-flexbox/ -- https://css-tricks.com/snippets/css/css-triangle/ # Cleanups - simplify parsing as per typing tutor diff --git a/styles.css b/styles.css index 2b9c50d2..321202c9 100644 --- a/styles.css +++ b/styles.css @@ -176,6 +176,10 @@ ul.card-board-column-list > li.card-board-card::before { content: ""; } +.card-board-column.collapsed .card-board-card { + display: none; +} + .card-board-card { border-radius: 3px; border: var(--border-width) solid var(--background-modifier-border); From 270a639512810df2418e05ec9485571873c0a19e Mon Sep 17 00:00:00 2001 From: rupert Date: Mon, 30 Jan 2023 09:04:13 +0000 Subject: [PATCH 09/21] Collapse: fix the width of columns --- TODO.md | 15 +++++++++++++-- styles.css | 8 ++++---- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/TODO.md b/TODO.md index 3fb41d73..d8b89951 100644 --- a/TODO.md +++ b/TODO.md @@ -1,8 +1,19 @@ -- don't resize columns when toggling collapse - only do this when re-sizing the window +- show the number of cards in a column when it is collapsed +- what happens with people board and column collapsing when I tick things off on + decorate my cave card? +- when I collpase all columns, they are not tall enough to show their titles +- newed to move right arrow a bit to the left for better looking toggle - horizontal scrollbar isn't working properly (there can be things offscreen to the right that I can't scroll into view (e.g. the completed column) -- show the number of cards in a column when it is collapsed +- update readme + - new way to set column width with snippet +- set size in elm (resize_spike branch) + - don't resize columns when toggling collapse - only do this when re-sizing the window + - annoyingly Browser.onResize returns the size of the complete obsidian interface and + not just the CardBoard view controlled by elm... + - only need emSize once at start as it doesn't change + - what does it do with an empty config at start? # Cleanups - simplify parsing as per typing tutor diff --git a/styles.css b/styles.css index 321202c9..4c359c2d 100644 --- a/styles.css +++ b/styles.css @@ -117,10 +117,10 @@ li.is-after-active .card-board-tabs-inner { } .card-board-column { - flex: 1 1 auto; + flex: 0 0 auto; padding: 1em; - margin-right: 20px; - min-width: 20em; + margin-right: 15px; + width: 20em; background-color: var(--background-secondary); border-radius: 3px; border: var(--border-width) solid var(--background-modifier-border); @@ -132,7 +132,7 @@ li.is-after-active .card-board-tabs-inner { flex-grow: 0; overflow: visible; margin: 0; - margin-right: 20px; + margin-right: 15px; padding: 1em 0 0 0.5em; } From 94586eb9a5cbb595628025166803b5e7f8a57f0c Mon Sep 17 00:00:00 2001 From: rupert Date: Mon, 30 Jan 2023 09:43:44 +0000 Subject: [PATCH 10/21] Collapse: show number of cards in collapsed column --- TODO.md | 3 --- src/Page/Board.elm | 18 +++++++++++++++++- styles.css | 27 ++++++++++++++++++--------- 3 files changed, 35 insertions(+), 13 deletions(-) diff --git a/TODO.md b/TODO.md index d8b89951..760b9739 100644 --- a/TODO.md +++ b/TODO.md @@ -1,8 +1,5 @@ -- show the number of cards in a column when it is collapsed - what happens with people board and column collapsing when I tick things off on decorate my cave card? -- when I collpase all columns, they are not tall enough to show their titles -- newed to move right arrow a bit to the left for better looking toggle - horizontal scrollbar isn't working properly (there can be things offscreen to the right that I can't scroll into view (e.g. the completed column) - update readme diff --git a/src/Page/Board.elm b/src/Page/Board.elm index 043cbd75..5ab5f1cf 100644 --- a/src/Page/Board.elm +++ b/src/Page/Board.elm @@ -256,22 +256,38 @@ selectedBoardView timeWithZone boardIndex board = columnView : Int -> TimeWithZone -> Column Card -> Html Msg columnView columnIndex timeWithZone column = let + columnCollapsedArrow = + if Column.isCollapsed column then + "arrow-down" + + else + "arrow-right" + columnCollapsedClass = if Column.isCollapsed column then " collapsed" else "" + + columnCountString = + if Column.isCollapsed column then + "(" ++ (String.fromInt <| List.length <| Column.items column) ++ ")" + + else + "" in Html.div [ class <| "card-board-column" ++ columnCollapsedClass ] [ Html.div [ class "card-board-column-header" ] [ Html.div - [ class "arrow-right" + [ class columnCollapsedArrow , onClick <| ToggleColumnCollapse columnIndex ] [] , Html.span [] [ Html.text <| Column.name column ] + , Html.span [ class "sub-text" ] + [ Html.text <| columnCountString ] ] , Html.Keyed.ul [ class "card-board-column-list" ] (List.map (cardView timeWithZone) (Column.items column)) diff --git a/styles.css b/styles.css index 4c359c2d..e4ba54da 100644 --- a/styles.css +++ b/styles.css @@ -133,7 +133,7 @@ li.is-after-active .card-board-tabs-inner { overflow: visible; margin: 0; margin-right: 15px; - padding: 1em 0 0 0.5em; + padding: 1em 0 0 0.3em; } .card-board-column-header { @@ -143,12 +143,22 @@ li.is-after-active .card-board-tabs-inner { } .card-board-column.collapsed .card-board-column-header { - margin-bottom: 0; - transform: rotate(90deg); - transform-origin: bottom left; - position: relative; - top: -1em; - left: -0.2em; + writing-mode: vertical-rl; +} + +.card-board-column.collapsed .card-board-column-header .sub-text { + font-weight: var(--normal-weight); + margin-top: 0.3em; +} + +.arrow-down { + width: 0; + height: 0; + border-left: 0.4em solid transparent; + border-right: 0.4em solid transparent; + border-top: 0.4em solid var(--text-normal); + margin: 0.4em 0.3em 0.4em 0em; + cursor: pointer; } .arrow-right { @@ -157,8 +167,7 @@ li.is-after-active .card-board-tabs-inner { border-top: 0.4em solid transparent; border-bottom: 0.4em solid transparent; border-left: 0.4em solid var(--text-normal); - margin-right: 0.4em; - margin-top: 0.2em; + margin: 0.2em 0.4em 0 -0.2em; cursor: pointer; } From f555aae1fefee27a0e1324c0ab49115ba2af8e52 Mon Sep 17 00:00:00 2001 From: rupert Date: Mon, 30 Jan 2023 13:02:31 +0000 Subject: [PATCH 11/21] Collapse: ensure a collapsed column stays collapsed --- TODO.md | 4 +-- src/Board.elm | 10 +++--- src/BoardConfig.elm | 10 +++--- src/CollapseStates.elm | 26 +++++++------- src/Column.elm | 16 ++++----- src/Page/Board.elm | 8 ++--- src/Session.elm | 8 ++--- tests/BoardConfigTests.elm | 32 +++++++++--------- tests/BoardTests.elm | 64 +++++++++++++++++------------------ tests/CollapseStatesTests.elm | 32 +++++++++--------- tests/ColumnTests.elm | 26 ++++++++++---- 11 files changed, 124 insertions(+), 112 deletions(-) diff --git a/TODO.md b/TODO.md index 760b9739..f6815644 100644 --- a/TODO.md +++ b/TODO.md @@ -1,5 +1,5 @@ -- what happens with people board and column collapsing when I tick things off on - decorate my cave card? +- do I want to save the collapse state in the settings? (probably) +- move the heading up a pixel or two next to the right arrow - horizontal scrollbar isn't working properly (there can be things offscreen to the right that I can't scroll into view (e.g. the completed column) - update readme diff --git a/src/Board.elm b/src/Board.elm index 40ad43e4..cc07e449 100644 --- a/src/Board.elm +++ b/src/Board.elm @@ -78,14 +78,14 @@ collapseColumns config cols = collapseStates = BoardConfig.collapseStates config - collapseIfToggled index col = - if CollapseStates.columnIsToggled index collapseStates then - Column.invertCollapseState col + foo index col = + if CollapseStates.columnIsCollapsed index collapseStates then + Column.collapseState True col else - col + Column.collapseState False col in - List.indexedMap collapseIfToggled cols + List.indexedMap foo cols filterTaskList : BoardConfig -> TaskList -> TaskList diff --git a/src/BoardConfig.elm b/src/BoardConfig.elm index 72ab8679..f7e73e1f 100644 --- a/src/BoardConfig.elm +++ b/src/BoardConfig.elm @@ -1,5 +1,6 @@ module BoardConfig exposing ( BoardConfig(..) + , collapseColumn , collapseStates , decoder_v_0_1_0 , decoder_v_0_2_0 @@ -17,7 +18,6 @@ module BoardConfig exposing , isForTagBoard , mapFilters , title - , toggleColumnCollapse , toggleIncludeOthers , toggleIncludeUndated , toggleIncludeUntagged @@ -233,16 +233,16 @@ mapFilters fn config = TagBoardConfig { boardConfig | filters = List.map fn boardConfig.filters } -toggleColumnCollapse : Int -> BoardConfig -> BoardConfig -toggleColumnCollapse columnIndex config = +collapseColumn : Int -> Bool -> BoardConfig -> BoardConfig +collapseColumn columnIndex isCollapsed config = case config of DateBoardConfig boardConfig -> DateBoardConfig <| - { boardConfig | collapseStates = CollapseStates.toggleColumn columnIndex boardConfig.collapseStates } + { boardConfig | collapseStates = CollapseStates.collapseColumn columnIndex isCollapsed boardConfig.collapseStates } TagBoardConfig boardConfig -> TagBoardConfig <| - { boardConfig | collapseStates = CollapseStates.toggleColumn columnIndex boardConfig.collapseStates } + { boardConfig | collapseStates = CollapseStates.collapseColumn columnIndex isCollapsed boardConfig.collapseStates } toggleIncludeOthers : BoardConfig -> BoardConfig diff --git a/src/CollapseStates.elm b/src/CollapseStates.elm index 2006a4f8..a8b6dd3b 100644 --- a/src/CollapseStates.elm +++ b/src/CollapseStates.elm @@ -1,10 +1,11 @@ module CollapseStates exposing ( CollapseStates - , columnIsToggled + , collapseColumn + , columnIsCollapsed , init - , toggleColumn ) +import Dict exposing (Dict) import List.Extra as LE @@ -13,31 +14,28 @@ import List.Extra as LE type CollapseStates - = CollapsedIndicies (List Int) + = CollapseStates (Dict Int Bool) init : CollapseStates init = - CollapsedIndicies [] + CollapseStates Dict.empty -- INFO -columnIsToggled : Int -> CollapseStates -> Bool -columnIsToggled column (CollapsedIndicies indicies) = - List.member column indicies +columnIsCollapsed : Int -> CollapseStates -> Bool +columnIsCollapsed column (CollapseStates states) = + Dict.get column states + |> Maybe.withDefault False -- MODIFY -toggleColumn : Int -> CollapseStates -> CollapseStates -toggleColumn column (CollapsedIndicies indicies) = - if List.member column indicies then - CollapsedIndicies <| LE.remove column indicies - - else - CollapsedIndicies <| column :: indicies +collapseColumn : Int -> Bool -> CollapseStates -> CollapseStates +collapseColumn column state (CollapseStates states) = + CollapseStates <| Dict.insert column state states diff --git a/src/Column.elm b/src/Column.elm index b99a2ab5..f70d2af6 100644 --- a/src/Column.elm +++ b/src/Column.elm @@ -1,9 +1,9 @@ module Column exposing ( Column , PlacementResult(..) + , collapseState , hasName , init - , invertCollapseState , isCollapsed , isEmpty , isEnabled @@ -22,7 +22,7 @@ type alias Config a = { enabled : Bool , name : String , items : List a - , invertCollapsed : Bool + , collapsed : Bool } @@ -42,7 +42,7 @@ init enabled_ name_ items_ = { enabled = enabled_ , name = name_ , items = items_ - , invertCollapsed = False + , collapsed = False } @@ -56,8 +56,8 @@ hasName n = isCollapsed : Column a -> Bool -isCollapsed ((Column c) as col) = - xor c.invertCollapsed (isEmpty col) +isCollapsed = + .collapsed << config isEmpty : Column a -> Bool @@ -84,9 +84,9 @@ name = -- MODIFICATION -invertCollapseState : Column a -> Column a -invertCollapseState (Column c) = - Column { c | invertCollapsed = True } +collapseState : Bool -> Column a -> Column a +collapseState collapsed (Column c) = + Column { c | collapsed = collapsed } diff --git a/src/Page/Board.elm b/src/Page/Board.elm index 5ab5f1cf..4b259a78 100644 --- a/src/Page/Board.elm +++ b/src/Page/Board.elm @@ -34,7 +34,7 @@ type Msg | TaskItemEditClicked String | TaskItemDeleteClicked String | TaskItemToggled String - | ToggleColumnCollapse Int + | ToggleColumnCollapse Int Bool update : Msg -> Session -> ( Session, Cmd Msg, Session.Msg ) @@ -91,8 +91,8 @@ update msg session = , Session.NoOp ) - ToggleColumnCollapse columnIndex -> - ( Session.toggleColumnCollapse columnIndex session + ToggleColumnCollapse columnIndex newState -> + ( Session.updateColumnCollapse columnIndex newState session , Cmd.none , Session.NoOp ) @@ -281,7 +281,7 @@ columnView columnIndex timeWithZone column = [ Html.div [ class "card-board-column-header" ] [ Html.div [ class columnCollapsedArrow - , onClick <| ToggleColumnCollapse columnIndex + , onClick <| ToggleColumnCollapse columnIndex (not <| Column.isCollapsed column) ] [] , Html.span [] diff --git a/src/Session.elm b/src/Session.elm index 7f016fbd..30e6aaad 100644 --- a/src/Session.elm +++ b/src/Session.elm @@ -23,7 +23,7 @@ module Session exposing , timeIs , timeWIthZoneIs , timeWithZone - , toggleColumnCollapse + , updateColumnCollapse , updatePath , updateSettings , updateTextDirection @@ -285,13 +285,13 @@ replaceTaskItems filePath updatedList ((Session config) as session) = updateTaskListState (State.Loaded (TaskList.replaceForFile filePath updatedList currentList)) session -toggleColumnCollapse : Int -> Session -> Session -toggleColumnCollapse columnIndex (Session config) = +updateColumnCollapse : Int -> Bool -> Session -> Session +updateColumnCollapse columnIndex isCollapsed (Session config) = Session { config | settings = Settings.updateCurrentBoard - (BoardConfig.toggleColumnCollapse columnIndex) + (BoardConfig.collapseColumn columnIndex isCollapsed) config.settings } diff --git a/tests/BoardConfigTests.elm b/tests/BoardConfigTests.elm index e2766f2a..17cd2218 100644 --- a/tests/BoardConfigTests.elm +++ b/tests/BoardConfigTests.elm @@ -22,7 +22,7 @@ suite = , isForDateBoard , isForTagBoard , mapFilters - , toggleColumnCollapse + , collapseColumn , toggleIncludeOthers , toggleIncludeUndated , toggleIncludeUntagged @@ -143,39 +143,39 @@ mapFilters = ] -toggleColumnCollapse : Test -toggleColumnCollapse = - describe "toggleColumnCollapse" - [ test "sets the collapse state for a DateBoard config" <| +collapseColumn : Test +collapseColumn = + describe "collapseColumn" + [ test "collapses a column for a DateBoard config" <| \() -> BoardConfig.fromBoardType "dateBoard" "" - |> BoardConfig.toggleColumnCollapse 0 + |> BoardConfig.collapseColumn 0 True |> extractDateBoardConfig |> Maybe.map .collapseStates - |> Expect.equal (Just <| (CollapseStates.init |> CollapseStates.toggleColumn 0)) - , test "unsets the collapse state for a DateBoard config if toggled twice" <| + |> Expect.equal (Just <| (CollapseStates.init |> CollapseStates.collapseColumn 0 True)) + , test "un-collapses a column for a DateBoard config" <| \() -> BoardConfig.fromBoardType "dateBoard" "" - |> BoardConfig.toggleColumnCollapse 0 - |> BoardConfig.toggleColumnCollapse 0 + |> BoardConfig.collapseColumn 0 True + |> BoardConfig.collapseColumn 0 False |> extractDateBoardConfig |> Maybe.map .collapseStates - |> Expect.equal (Just <| CollapseStates.init) + |> Expect.equal (Just <| (CollapseStates.init |> CollapseStates.collapseColumn 0 False)) , test "sets the collapse state for a TagBoard config" <| \() -> BoardConfig.fromBoardType "tagBoard" "" - |> BoardConfig.toggleColumnCollapse 0 + |> BoardConfig.collapseColumn 0 True |> extractTagBoardConfig |> Maybe.map .collapseStates - |> Expect.equal (Just <| (CollapseStates.init |> CollapseStates.toggleColumn 0)) + |> Expect.equal (Just <| (CollapseStates.init |> CollapseStates.collapseColumn 0 True)) , test "unsets the collapse state for a TagBoard config if toggled twice" <| \() -> BoardConfig.fromBoardType "tagBoard" "" - |> BoardConfig.toggleColumnCollapse 0 - |> BoardConfig.toggleColumnCollapse 0 + |> BoardConfig.collapseColumn 0 True + |> BoardConfig.collapseColumn 0 False |> extractTagBoardConfig |> Maybe.map .collapseStates - |> Expect.equal (Just <| CollapseStates.init) + |> Expect.equal (Just <| (CollapseStates.init |> CollapseStates.collapseColumn 0 False)) ] diff --git a/tests/BoardTests.elm b/tests/BoardTests.elm index 5323a18e..2b32c730 100644 --- a/tests/BoardTests.elm +++ b/tests/BoardTests.elm @@ -308,7 +308,7 @@ columnsDateBoard = [ "more undated incomplete with cTag" ] ] , describe "collapsing columns" - [ test "does not collapse an untoggled column containing cards" <| + [ test "does not collapse an initialized column containing cards" <| \() -> TaskListHelpers.exampleDateBoardTaskList |> Board.init @@ -324,7 +324,7 @@ columnsDateBoard = |> BoardHelpers.columnTitled "Undated" |> Maybe.map Column.isCollapsed |> Expect.equal (Just False) - , test "collapses a toggled column containing cards" <| + , test "does not collapse an initialized column with no cards" <| \() -> TaskListHelpers.exampleDateBoardTaskList |> Board.init @@ -332,16 +332,21 @@ columnsDateBoard = (BoardConfig.DateBoardConfig { defaultDateBoardConfig | includeUndated = True - , filters = [] + , filters = + [ FilterHelpers.fileFilter "f" + , FilterHelpers.pathFilter "gg" + , FilterHelpers.tagFilter "aTag" + , FilterHelpers.tagFilter "bTag" + , FilterHelpers.tagFilter "cTag" + ] , filterPolarity = Filter.Deny - , collapseStates = CollapseStates.init |> CollapseStates.toggleColumn 0 } ) |> Board.columns DateTimeHelpers.nowWithZone 0 |> BoardHelpers.columnTitled "Undated" |> Maybe.map Column.isCollapsed - |> Expect.equal (Just True) - , test "collapses an untoggled column with no cards" <| + |> Expect.equal (Just False) + , test "collapses a column containing cards if is has been set to collapsed" <| \() -> TaskListHelpers.exampleDateBoardTaskList |> Board.init @@ -349,21 +354,16 @@ columnsDateBoard = (BoardConfig.DateBoardConfig { defaultDateBoardConfig | includeUndated = True - , filters = - [ FilterHelpers.fileFilter "f" - , FilterHelpers.pathFilter "gg" - , FilterHelpers.tagFilter "aTag" - , FilterHelpers.tagFilter "bTag" - , FilterHelpers.tagFilter "cTag" - ] + , filters = [] , filterPolarity = Filter.Deny + , collapseStates = CollapseStates.init |> CollapseStates.collapseColumn 0 True } ) |> Board.columns DateTimeHelpers.nowWithZone 0 |> BoardHelpers.columnTitled "Undated" |> Maybe.map Column.isCollapsed |> Expect.equal (Just True) - , test "does not collapse a toggled column with no cards" <| + , test "collapses a column with no cards if it has been set as collapsed" <| \() -> TaskListHelpers.exampleDateBoardTaskList |> Board.init @@ -379,13 +379,13 @@ columnsDateBoard = , FilterHelpers.tagFilter "cTag" ] , filterPolarity = Filter.Deny - , collapseStates = CollapseStates.init |> CollapseStates.toggleColumn 0 + , collapseStates = CollapseStates.init |> CollapseStates.collapseColumn 0 True } ) |> Board.columns DateTimeHelpers.nowWithZone 0 |> BoardHelpers.columnTitled "Undated" |> Maybe.map Column.isCollapsed - |> Expect.equal (Just False) + |> Expect.equal (Just True) ] ] @@ -580,7 +580,7 @@ columnsTagBoard = |> Expect.equal [ "b.tag3" ] ] , describe "collapsing columns" - [ test "does not collapse an untoggled column containing cards" <| + [ test "does not collapse an initialized column containing cards" <| \() -> TaskListHelpers.exampleTagBoardTaskList |> Board.init @@ -597,7 +597,7 @@ columnsTagBoard = |> BoardHelpers.columnTitled "Others" |> Maybe.map Column.isCollapsed |> Expect.equal (Just False) - , test "collapses a toggled column containing cards" <| + , test "does not collapse an initialized column with no cards" <| \() -> TaskListHelpers.exampleTagBoardTaskList |> Board.init @@ -606,16 +606,21 @@ columnsTagBoard = { defaultTagBoardConfig | includeUntagged = False , includeOthers = True - , filters = [] + , filters = + [ FilterHelpers.fileFilter "a" + , FilterHelpers.pathFilter "aa" + , FilterHelpers.tagFilter "tag1" + , FilterHelpers.tagFilter "tag2" + , FilterHelpers.tagFilter "tag3" + ] , filterPolarity = Filter.Deny - , collapseStates = CollapseStates.init |> CollapseStates.toggleColumn 0 } ) |> Board.columns DateTimeHelpers.nowWithZone 0 |> BoardHelpers.columnTitled "Others" |> Maybe.map Column.isCollapsed - |> Expect.equal (Just True) - , test "collapses an untoggled column with no cards" <| + |> Expect.equal (Just False) + , test "collapses a column containing cards if it has been set to collapsed" <| \() -> TaskListHelpers.exampleTagBoardTaskList |> Board.init @@ -624,21 +629,16 @@ columnsTagBoard = { defaultTagBoardConfig | includeUntagged = False , includeOthers = True - , filters = - [ FilterHelpers.fileFilter "a" - , FilterHelpers.pathFilter "aa" - , FilterHelpers.tagFilter "tag1" - , FilterHelpers.tagFilter "tag2" - , FilterHelpers.tagFilter "tag3" - ] + , filters = [] , filterPolarity = Filter.Deny + , collapseStates = CollapseStates.init |> CollapseStates.collapseColumn 0 True } ) |> Board.columns DateTimeHelpers.nowWithZone 0 |> BoardHelpers.columnTitled "Others" |> Maybe.map Column.isCollapsed |> Expect.equal (Just True) - , test "does not collapse a toggled column with no cards" <| + , test "collapses a column with no cards if it has been set to collapsed" <| \() -> TaskListHelpers.exampleTagBoardTaskList |> Board.init @@ -655,13 +655,13 @@ columnsTagBoard = , FilterHelpers.tagFilter "tag3" ] , filterPolarity = Filter.Deny - , collapseStates = CollapseStates.init |> CollapseStates.toggleColumn 0 + , collapseStates = CollapseStates.init |> CollapseStates.collapseColumn 0 True } ) |> Board.columns DateTimeHelpers.nowWithZone 0 |> BoardHelpers.columnTitled "Others" |> Maybe.map Column.isCollapsed - |> Expect.equal (Just False) + |> Expect.equal (Just True) ] ] diff --git a/tests/CollapseStatesTests.elm b/tests/CollapseStatesTests.elm index 4a1096cc..34ce4830 100644 --- a/tests/CollapseStatesTests.elm +++ b/tests/CollapseStatesTests.elm @@ -9,35 +9,35 @@ import Test exposing (..) suite : Test suite = concat - [ columnIsToggled + [ columnIsCollapsed ] -columnIsToggled : Test -columnIsToggled = - describe "isToggled" - [ fuzz (Fuzz.intRange 0 20) "returns False for any column if nothing has been toggled" <| +columnIsCollapsed : Test +columnIsCollapsed = + describe "columnIsCollapsed" + [ fuzz (Fuzz.intRange 0 20) "returns False for any column if it has just been initialized" <| \fuzzedInt -> CollapseStates.init - |> CollapseStates.columnIsToggled fuzzedInt + |> CollapseStates.columnIsCollapsed fuzzedInt |> Expect.equal False - , fuzz (Fuzz.intRange 0 20) "returns True for any column if it has been toggled" <| + , fuzz (Fuzz.intRange 0 20) "returns True for any column if it has been set to collapsed" <| \fuzzedInt -> CollapseStates.init - |> CollapseStates.toggleColumn fuzzedInt - |> CollapseStates.columnIsToggled fuzzedInt + |> CollapseStates.collapseColumn fuzzedInt True + |> CollapseStates.columnIsCollapsed fuzzedInt |> Expect.equal True - , fuzz (Fuzz.intRange 0 20) "returns False for any column if it has been toggled twice" <| + , fuzz (Fuzz.intRange 0 20) "returns False for any column if it has been set to not be collapsed" <| \fuzzedInt -> CollapseStates.init - |> CollapseStates.toggleColumn fuzzedInt - |> CollapseStates.toggleColumn fuzzedInt - |> CollapseStates.columnIsToggled fuzzedInt + |> CollapseStates.collapseColumn fuzzedInt True + |> CollapseStates.collapseColumn fuzzedInt False + |> CollapseStates.columnIsCollapsed fuzzedInt |> Expect.equal False - , fuzz (Fuzz.intRange 1 20) "toggling a column does not affect other columns" <| + , fuzz (Fuzz.intRange 1 20) "collapsing a column does not affect other columns" <| \fuzzedInt -> CollapseStates.init - |> CollapseStates.toggleColumn fuzzedInt - |> CollapseStates.columnIsToggled 0 + |> CollapseStates.collapseColumn fuzzedInt True + |> CollapseStates.columnIsCollapsed 0 |> Expect.equal False ] diff --git a/tests/ColumnTests.elm b/tests/ColumnTests.elm index 470be33e..13f05821 100644 --- a/tests/ColumnTests.elm +++ b/tests/ColumnTests.elm @@ -31,28 +31,42 @@ name = isCollapsed : Test isCollapsed = describe "isCollapsed" - [ test "returns True for an initialised empty Column" <| + [ test "returns False for an initialised empty Column" <| \() -> Column.init True "a name" [] |> Column.isCollapsed - |> Expect.equal True + |> Expect.equal False , test "returns False for an initialised non-empty Column" <| \() -> Column.init True "a name" [ 1 ] |> Column.isCollapsed |> Expect.equal False - , test "returns False for an empty Column which has had it's collapse state inverted" <| + , test "returns True for an empty Column which has been set to collapsed" <| + \() -> + Column.init True "a name" [] + |> Column.collapseState True + |> Column.isCollapsed + |> Expect.equal True + , test "returns False for an empty Column which has been set to not collapsed" <| \() -> Column.init True "a name" [] - |> Column.invertCollapseState + |> Column.collapseState True + |> Column.collapseState False |> Column.isCollapsed |> Expect.equal False - , test "returns True for a non-empty Column which has had its collapse state inverted" <| + , test "returns True for a non-empty Column which has been set to collapsed" <| \() -> Column.init True "a name" [ 1 ] - |> Column.invertCollapseState + |> Column.collapseState True |> Column.isCollapsed |> Expect.equal True + , test "returns False for a non-empty Column which has been set to not collapsed" <| + \() -> + Column.init True "a name" [ 1 ] + |> Column.collapseState True + |> Column.collapseState False + |> Column.isCollapsed + |> Expect.equal False ] From ec279a8f2c9130df95e850dc654c62c7a76f9c4f Mon Sep 17 00:00:00 2001 From: rupert Date: Mon, 30 Jan 2023 14:23:53 +0000 Subject: [PATCH 12/21] Collapse: save collumn collapse state (in settings) --- TODO.md | 4 +- src/BoardConfig.elm | 9 ++++ src/CollapseStates.elm | 50 +++++++++++++++--- src/DateBoardConfig.elm | 15 ++++++ src/GlobalSettings.elm | 6 +++ src/Page/Board.elm | 8 ++- src/Settings.elm | 16 +++++- src/TagBoardConfig.elm | 18 +++++++ tests/CollapseStatesTests.elm | 51 ++++++++++++++++++ tests/InteropDefinitionsTests.elm | 88 +++++++++++++++++++++++++------ tests/SettingsTests.elm | 4 +- 11 files changed, 236 insertions(+), 33 deletions(-) diff --git a/TODO.md b/TODO.md index f6815644..fcd1f42d 100644 --- a/TODO.md +++ b/TODO.md @@ -1,5 +1,5 @@ -- do I want to save the collapse state in the settings? (probably) -- move the heading up a pixel or two next to the right arrow +- CollapseStates -> CollapsedColumns +- move the heading up a pixel or two next to the right arrow (or centre the text and arrow vertically) - horizontal scrollbar isn't working properly (there can be things offscreen to the right that I can't scroll into view (e.g. the completed column) - update readme diff --git a/src/BoardConfig.elm b/src/BoardConfig.elm index f7e73e1f..f46761b1 100644 --- a/src/BoardConfig.elm +++ b/src/BoardConfig.elm @@ -8,6 +8,7 @@ module BoardConfig exposing , decoder_v_0_4_0 , decoder_v_0_5_0 , decoder_v_0_6_0 + , decoder_v_0_9_0 , default , encoder , filterPolarity @@ -174,6 +175,14 @@ encoder = |> TsEncode.buildUnion +decoder_v_0_9_0 : TsDecode.Decoder BoardConfig +decoder_v_0_9_0 = + TsDecode.oneOf + [ DecodeHelpers.toElmVariant "dateBoardConfig" DateBoardConfig DateBoardConfig.decoder_v_0_9_0 + , DecodeHelpers.toElmVariant "tagBoardConfig" TagBoardConfig TagBoardConfig.decoder_v_0_9_0 + ] + + decoder_v_0_6_0 : TsDecode.Decoder BoardConfig decoder_v_0_6_0 = TsDecode.oneOf diff --git a/src/CollapseStates.elm b/src/CollapseStates.elm index a8b6dd3b..8617d485 100644 --- a/src/CollapseStates.elm +++ b/src/CollapseStates.elm @@ -2,11 +2,15 @@ module CollapseStates exposing ( CollapseStates , collapseColumn , columnIsCollapsed + , decoder + , encoder , init ) -import Dict exposing (Dict) import List.Extra as LE +import Set exposing (Set) +import TsJson.Decode as TsDecode +import TsJson.Encode as TsEncode @@ -14,12 +18,30 @@ import List.Extra as LE type CollapseStates - = CollapseStates (Dict Int Bool) + = CollapseStates (Set Int) init : CollapseStates init = - CollapseStates Dict.empty + CollapseStates Set.empty + + + +-- SERIALIZATION + + +decoder : TsDecode.Decoder CollapseStates +decoder = + TsDecode.list TsDecode.int + |> TsDecode.map Set.fromList + |> TsDecode.map CollapseStates + + +encoder : TsEncode.Encoder CollapseStates +encoder = + TsEncode.list TsEncode.int + |> TsEncode.map Set.toList + |> TsEncode.map states @@ -27,9 +49,8 @@ init = columnIsCollapsed : Int -> CollapseStates -> Bool -columnIsCollapsed column (CollapseStates states) = - Dict.get column states - |> Maybe.withDefault False +columnIsCollapsed column collapseStates = + Set.member column (states collapseStates) @@ -37,5 +58,18 @@ columnIsCollapsed column (CollapseStates states) = collapseColumn : Int -> Bool -> CollapseStates -> CollapseStates -collapseColumn column state (CollapseStates states) = - CollapseStates <| Dict.insert column state states +collapseColumn column state collapseStates = + if state then + CollapseStates <| Set.insert column (states collapseStates) + + else + CollapseStates <| Set.remove column (states collapseStates) + + + +-- PRIVATE + + +states : CollapseStates -> Set Int +states (CollapseStates s) = + s diff --git a/src/DateBoardConfig.elm b/src/DateBoardConfig.elm index 67429ee9..63fb02f6 100644 --- a/src/DateBoardConfig.elm +++ b/src/DateBoardConfig.elm @@ -5,6 +5,7 @@ module DateBoardConfig exposing , decoder_v_0_3_0 , decoder_v_0_4_0 , decoder_v_0_5_0 + , decoder_v_0_9_0 , default , encoder ) @@ -58,9 +59,23 @@ encoder = , TsEncode.required "showFilteredTags" .showFilteredTags TsEncode.bool , TsEncode.required "includeUndated" .includeUndated TsEncode.bool , TsEncode.required "title" .title TsEncode.string + , TsEncode.required "collapsedColumns" .collapseStates CollapseStates.encoder ] +decoder_v_0_9_0 : TsDecode.Decoder DateBoardConfig +decoder_v_0_9_0 = + TsDecode.succeed DateBoardConfig + |> TsDecode.andMap (TsDecode.field "completedCount" TsDecode.int) + |> TsDecode.andMap (TsDecode.field "filters" <| TsDecode.list Filter.decoder) + |> TsDecode.andMap (TsDecode.field "filterPolarity" <| Filter.polarityDecoder) + |> TsDecode.andMap (TsDecode.field "filterScope" <| Filter.scopeDecoder) + |> TsDecode.andMap (TsDecode.field "showFilteredTags" TsDecode.bool) + |> TsDecode.andMap (TsDecode.field "includeUndated" TsDecode.bool) + |> TsDecode.andMap (TsDecode.field "title" TsDecode.string) + |> TsDecode.andMap (TsDecode.field "collapsedColumns" CollapseStates.decoder) + + decoder_v_0_5_0 : TsDecode.Decoder DateBoardConfig decoder_v_0_5_0 = TsDecode.succeed DateBoardConfig diff --git a/src/GlobalSettings.elm b/src/GlobalSettings.elm index 76ec5514..3c52eb07 100644 --- a/src/GlobalSettings.elm +++ b/src/GlobalSettings.elm @@ -8,6 +8,7 @@ module GlobalSettings exposing , v_0_5_0_decoder , v_0_6_0_decoder , v_0_7_0_decoder + , v_0_9_0_decoder ) import ColumnNames exposing (ColumnNames) @@ -66,6 +67,11 @@ encoder = ] +v_0_9_0_decoder : TsDecode.Decoder GlobalSettings +v_0_9_0_decoder = + v_0_7_0_decoder + + v_0_7_0_decoder : TsDecode.Decoder GlobalSettings v_0_7_0_decoder = TsDecode.succeed GlobalSettings diff --git a/src/Page/Board.elm b/src/Page/Board.elm index 4b259a78..296eec94 100644 --- a/src/Page/Board.elm +++ b/src/Page/Board.elm @@ -92,8 +92,12 @@ update msg session = ) ToggleColumnCollapse columnIndex newState -> - ( Session.updateColumnCollapse columnIndex newState session - , Cmd.none + let + newSession = + Session.updateColumnCollapse columnIndex newState session + in + ( newSession + , InteropPorts.updateSettings <| Session.settings newSession , Session.NoOp ) diff --git a/src/Settings.elm b/src/Settings.elm index d48e408c..f83639cb 100644 --- a/src/Settings.elm +++ b/src/Settings.elm @@ -55,7 +55,7 @@ boardConfigs = currentVersion : Semver.Version currentVersion = - Semver.version 0 8 0 [] [] + Semver.version 0 9 0 [] [] globalSettings : Settings -> GlobalSettings @@ -151,8 +151,11 @@ semverEncoder = versionedSettingsDecoder : TsDecode.AndThenContinuation (String -> TsDecode.Decoder Settings) versionedSettingsDecoder = TsDecode.andThenInit - (\v_0_8_0 v_0_7_0 v_0_6_0 v_0_5_0 v_0_4_0 v_0_3_0 v_0_2_0 v_0_1_0 unsupportedVersion version_ -> + (\v_0_9_0 v_0_8_0 v_0_7_0 v_0_6_0 v_0_5_0 v_0_4_0 v_0_3_0 v_0_2_0 v_0_1_0 unsupportedVersion version_ -> case version_ of + "0.9.0" -> + v_0_9_0 + "0.8.0" -> v_0_8_0 @@ -180,6 +183,7 @@ versionedSettingsDecoder = _ -> unsupportedVersion ) + |> TsDecode.andThenDecoder (TsDecode.field "data" v_0_9_0_Decoder) |> TsDecode.andThenDecoder (TsDecode.field "data" v_0_8_0_Decoder) |> TsDecode.andThenDecoder (TsDecode.field "data" v_0_7_0_Decoder) |> TsDecode.andThenDecoder (TsDecode.field "data" v_0_6_0_Decoder) @@ -191,6 +195,14 @@ versionedSettingsDecoder = |> TsDecode.andThenDecoder (TsDecode.field "data" unsupportedVersionDecoder) +v_0_9_0_Decoder : TsDecode.Decoder Settings +v_0_9_0_Decoder = + TsDecode.succeed Settings + |> TsDecode.andMap (TsDecode.field "boardConfigs" (TsDecode.map SafeZipper.fromList (TsDecode.list BoardConfig.decoder_v_0_9_0))) + |> TsDecode.andMap (TsDecode.field "globalSettings" GlobalSettings.v_0_9_0_decoder) + |> TsDecode.andMap (TsDecode.succeed currentVersion) + + v_0_8_0_Decoder : TsDecode.Decoder Settings v_0_8_0_Decoder = TsDecode.succeed Settings diff --git a/src/TagBoardConfig.elm b/src/TagBoardConfig.elm index df51d3ca..7b9e60ed 100644 --- a/src/TagBoardConfig.elm +++ b/src/TagBoardConfig.elm @@ -7,6 +7,7 @@ module TagBoardConfig exposing , decoder_v_0_3_0 , decoder_v_0_4_0 , decoder_v_0_5_0 + , decoder_v_0_9_0 , default , encoder ) @@ -78,6 +79,7 @@ encoder = , TsEncode.required "includeOthers" .includeOthers TsEncode.bool , TsEncode.required "includeUntagged" .includeUntagged TsEncode.bool , TsEncode.required "title" .title TsEncode.string + , TsEncode.required "collapsedColumns" .collapseStates CollapseStates.encoder ] @@ -89,6 +91,22 @@ columnConfigEncoder = ] +decoder_v_0_9_0 : TsDecode.Decoder TagBoardConfig +decoder_v_0_9_0 = + TsDecode.succeed TagBoardConfig + |> TsDecode.andMap (TsDecode.field "columns" (TsDecode.list columnConfigDecoder)) + |> TsDecode.andMap (TsDecode.field "showColumnTags" TsDecode.bool) + |> TsDecode.andMap (TsDecode.field "completedCount" TsDecode.int) + |> TsDecode.andMap (TsDecode.field "filters" <| TsDecode.list Filter.decoder) + |> TsDecode.andMap (TsDecode.field "filterPolarity" <| Filter.polarityDecoder) + |> TsDecode.andMap (TsDecode.field "filterScope" <| Filter.scopeDecoder) + |> TsDecode.andMap (TsDecode.field "showFilteredTags" TsDecode.bool) + |> TsDecode.andMap (TsDecode.field "includeOthers" TsDecode.bool) + |> TsDecode.andMap (TsDecode.field "includeUntagged" TsDecode.bool) + |> TsDecode.andMap (TsDecode.field "title" TsDecode.string) + |> TsDecode.andMap (TsDecode.field "collapsedColumns" CollapseStates.decoder) + + decoder_v_0_5_0 : TsDecode.Decoder TagBoardConfig decoder_v_0_5_0 = TsDecode.succeed TagBoardConfig diff --git a/tests/CollapseStatesTests.elm b/tests/CollapseStatesTests.elm index 34ce4830..a4e962c6 100644 --- a/tests/CollapseStatesTests.elm +++ b/tests/CollapseStatesTests.elm @@ -3,13 +3,17 @@ module CollapseStatesTests exposing (suite) import CollapseStates import Expect import Fuzz exposing (Fuzzer) +import Helpers.DecodeHelpers as DecodeHelpers import Test exposing (..) +import TsJson.Encode as TsEncode suite : Test suite = concat [ columnIsCollapsed + , decoder + , encoder ] @@ -41,3 +45,50 @@ columnIsCollapsed = |> CollapseStates.columnIsCollapsed 0 |> Expect.equal False ] + + +decoder : Test +decoder = + describe "decoder" + [ test "decodes an empty array" <| + \() -> + "[]" + |> DecodeHelpers.runDecoder CollapseStates.decoder + |> .decoded + |> Expect.equal (Ok CollapseStates.init) + , test "decodes '[1,3,4]'" <| + \() -> + "[1,3,4]" + |> DecodeHelpers.runDecoder CollapseStates.decoder + |> .decoded + |> Expect.equal + (Ok + (CollapseStates.init + |> CollapseStates.collapseColumn 1 True + |> CollapseStates.collapseColumn 3 True + |> CollapseStates.collapseColumn 4 True + ) + ) + ] + + +encoder : Test +encoder = + describe "encoder" + [ test "encodes an initialized CollapseStates" <| + \() -> + CollapseStates.init + |> TsEncode.runExample CollapseStates.encoder + |> .output + |> Expect.equal "[]" + , test "encodes an CollapseStates with some collapsed columns" <| + \() -> + (CollapseStates.init + |> CollapseStates.collapseColumn 1 True + |> CollapseStates.collapseColumn 3 True + |> CollapseStates.collapseColumn 4 True + ) + |> TsEncode.runExample CollapseStates.encoder + |> .output + |> Expect.equal "[1,3,4]" + ] diff --git a/tests/InteropDefinitionsTests.elm b/tests/InteropDefinitionsTests.elm index 8365ed8b..746654ab 100644 --- a/tests/InteropDefinitionsTests.elm +++ b/tests/InteropDefinitionsTests.elm @@ -30,7 +30,61 @@ suite = flagsTests : Test flagsTests = describe "interop.flags (decoding)" - [ test "decodes valid flags for settings version 0.8.0" <| + [ test "decodes valid flags for settings version 0.9.0" <| + \() -> + """{"now":11,"zone":22,"rightToLeft":false,"dataviewTaskCompletion":{"taskCompletionTracking":true,"taskCompletionUseEmojiShorthand":false,"taskCompletionText":"completion"},"settings":{"version":"0.9.0","data":{"globalSettings":{"taskCompletionFormat":"ObsidianTasks","columnNames":{"today":"Do Today","tomorrow":"","future":"The Future","undated":"","others":"The Others","untagged":"","completed":"Done"}},"boardConfigs":[{"tag":"dateBoardConfig","data":{"completedCount":4,"filters":[{"tag":"pathFilter","data":"a/path"},{"tag":"tagFilter","data":"tag1"}],"filterPolarity":"Deny","filterScope":"TopLevelOnly","showFilteredTags":true,"includeUndated":true,"collapsedColumns":[],"title":"date board title"}},{"tag":"tagBoardConfig","data":{"columns":[{"tag":"tag 1","displayTitle":"title 1"}],"showColumnTags":false,"completedCount":5,"filters":[{"tag":"pathFilter","data":"b/path"},{"tag":"tagFilter","data":"tag2"}],"filterPolarity":"Allow","filterScope":"SubTasksOnly","showFilteredTags":false,"includeOthers":false,"includeUntagged":true,"collapsedColumns":[1,4],"title":"tag board title"}}]}}}""" + |> DecodeHelpers.runDecoder interop.flags + |> .decoded + |> Expect.equal + (Ok + { settings = + { version = Semver.version 0 9 0 [] [] + , boardConfigs = + SafeZipper.fromList + [ BoardConfig.DateBoardConfig + { completedCount = 4 + , filters = [ FilterHelpers.pathFilter "a/path", FilterHelpers.tagFilter "tag1" ] + , filterPolarity = Filter.Deny + , filterScope = Filter.TopLevelOnly + , showFilteredTags = True + , includeUndated = True + , collapseStates = CollapseStates.init + , title = "date board title" + } + , BoardConfig.TagBoardConfig + { columns = [ { displayTitle = "title 1", tag = "tag 1" } ] + , showColumnTags = False + , completedCount = 5 + , filters = [ FilterHelpers.pathFilter "b/path", FilterHelpers.tagFilter "tag2" ] + , filterPolarity = Filter.Allow + , filterScope = Filter.SubTasksOnly + , showFilteredTags = False + , includeOthers = False + , includeUntagged = True + , collapseStates = CollapseStates.init |> CollapseStates.collapseColumn 1 True |> CollapseStates.collapseColumn 4 True + , title = "tag board title" + } + ] + , globalSettings = + { taskCompletionFormat = GlobalSettings.ObsidianTasks + , columnNames = + { today = Just "Do Today" + , tomorrow = Nothing + , future = Just "The Future" + , undated = Nothing + , others = Just "The Others" + , untagged = Nothing + , completed = Just "Done" + } + } + } + , dataviewTaskCompletion = DataviewTaskCompletion.Text "completion" + , rightToLeft = False + , now = 11 + , zone = 22 + } + ) + , test "decodes valid flags for settings version 0.8.0" <| \() -> """{"now":11,"zone":22,"rightToLeft":false,"dataviewTaskCompletion":{"taskCompletionTracking":true,"taskCompletionUseEmojiShorthand":false,"taskCompletionText":"completion"},"settings":{"version":"0.8.0","data":{"globalSettings":{"taskCompletionFormat":"ObsidianTasks","columnNames":{"today":"Do Today","tomorrow":"","future":"The Future","undated":"","others":"The Others","untagged":"","completed":"Done"}},"boardConfigs":[{"tag":"dateBoardConfig","data":{"completedCount":4,"filters":[{"tag":"pathFilter","data":"a/path"},{"tag":"tagFilter","data":"tag1"}],"filterPolarity":"Deny","filterScope":"TopLevelOnly","showFilteredTags":true,"includeUndated":true,"title":"date board title"}},{"tag":"tagBoardConfig","data":{"columns":[{"tag":"tag 1","displayTitle":"title 1"}],"showColumnTags":false,"completedCount":5,"filters":[{"tag":"pathFilter","data":"b/path"},{"tag":"tagFilter","data":"tag2"}],"filterPolarity":"Allow","filterScope":"SubTasksOnly","showFilteredTags":false,"includeOthers":false,"includeUntagged":true,"title":"tag board title"}}]}}}""" |> DecodeHelpers.runDecoder interop.flags @@ -38,7 +92,7 @@ flagsTests = |> Expect.equal (Ok { settings = - { version = Semver.version 0 8 0 [] [] + { version = Semver.version 0 9 0 [] [] , boardConfigs = SafeZipper.fromList [ BoardConfig.DateBoardConfig @@ -92,7 +146,7 @@ flagsTests = |> Expect.equal (Ok { settings = - { version = Semver.version 0 8 0 [] [] + { version = Semver.version 0 9 0 [] [] , boardConfigs = SafeZipper.fromList [ BoardConfig.DateBoardConfig @@ -146,7 +200,7 @@ flagsTests = |> Expect.equal (Ok { settings = - { version = Semver.version 0 8 0 [] [] + { version = Semver.version 0 9 0 [] [] , boardConfigs = SafeZipper.fromList [ BoardConfig.DateBoardConfig @@ -192,7 +246,7 @@ flagsTests = |> Expect.equal (Ok { settings = - { version = Semver.version 0 8 0 [] [] + { version = Semver.version 0 9 0 [] [] , boardConfigs = SafeZipper.fromList [ BoardConfig.DateBoardConfig @@ -238,7 +292,7 @@ flagsTests = |> Expect.equal (Ok { settings = - { version = Semver.version 0 8 0 [] [] + { version = Semver.version 0 9 0 [] [] , boardConfigs = SafeZipper.fromList [ BoardConfig.DateBoardConfig @@ -281,7 +335,7 @@ flagsTests = |> Expect.equal (Ok { settings = - { version = Semver.version 0 8 0 [] [] + { version = Semver.version 0 9 0 [] [] , boardConfigs = SafeZipper.fromList [ BoardConfig.DateBoardConfig @@ -324,7 +378,7 @@ flagsTests = |> Expect.equal (Ok { settings = - { version = Semver.version 0 8 0 [] [] + { version = Semver.version 0 9 0 [] [] , boardConfigs = SafeZipper.fromList [ BoardConfig.DateBoardConfig @@ -367,7 +421,7 @@ flagsTests = |> Expect.equal (Ok { settings = - { version = Semver.version 0 8 0 [] [] + { version = Semver.version 0 9 0 [] [] , boardConfigs = SafeZipper.fromList [ BoardConfig.DateBoardConfig @@ -551,49 +605,49 @@ toElmTests = """{"tag":"settingsUpdated","data":{"version":"0.8.0","data":{"boardConfigs":[],"globalSettings":{"taskCompletionFormat":"ObsidianDataview","columnNames":{"today":"","tomorrow":"","future":"","undated":"","others":"","untagged":"","completed":""}}}}}""" |> DecodeHelpers.runDecoder interop.toElm |> .decoded - |> Expect.equal (Ok <| InteropDefinitions.SettingsUpdated { version = Semver.version 0 8 0 [] [], boardConfigs = SafeZipper.fromList [], globalSettings = { taskCompletionFormat = GlobalSettings.ObsidianDataview, columnNames = ColumnNames.default } }) + |> Expect.equal (Ok <| InteropDefinitions.SettingsUpdated { version = Semver.version 0 9 0 [] [], boardConfigs = SafeZipper.fromList [], globalSettings = { taskCompletionFormat = GlobalSettings.ObsidianDataview, columnNames = ColumnNames.default } }) , test "decodes version 0.7.0 settings data" <| \() -> """{"tag":"settingsUpdated","data":{"version":"0.7.0","data":{"boardConfigs":[],"globalSettings":{"taskCompletionFormat":"ObsidianDataview","columnNames":{"today":"","tomorrow":"","future":"","undated":"","others":"","untagged":"","completed":""}}}}}""" |> DecodeHelpers.runDecoder interop.toElm |> .decoded - |> Expect.equal (Ok <| InteropDefinitions.SettingsUpdated { version = Semver.version 0 8 0 [] [], boardConfigs = SafeZipper.fromList [], globalSettings = { taskCompletionFormat = GlobalSettings.ObsidianDataview, columnNames = ColumnNames.default } }) + |> Expect.equal (Ok <| InteropDefinitions.SettingsUpdated { version = Semver.version 0 9 0 [] [], boardConfigs = SafeZipper.fromList [], globalSettings = { taskCompletionFormat = GlobalSettings.ObsidianDataview, columnNames = ColumnNames.default } }) , test "decodes version 0.6.0 settings data" <| \() -> """{"tag":"settingsUpdated","data":{"version":"0.6.0","data":{"boardConfigs":[],"globalSettings":{"taskCompletionFormat":"ObsidianDataview"}}}}""" |> DecodeHelpers.runDecoder interop.toElm |> .decoded - |> Expect.equal (Ok <| InteropDefinitions.SettingsUpdated { version = Semver.version 0 8 0 [] [], boardConfigs = SafeZipper.fromList [], globalSettings = { taskCompletionFormat = GlobalSettings.ObsidianDataview, columnNames = ColumnNames.default } }) + |> Expect.equal (Ok <| InteropDefinitions.SettingsUpdated { version = Semver.version 0 9 0 [] [], boardConfigs = SafeZipper.fromList [], globalSettings = { taskCompletionFormat = GlobalSettings.ObsidianDataview, columnNames = ColumnNames.default } }) , test "decodes version 0.5.0 settings data" <| \() -> """{"tag":"settingsUpdated","data":{"version":"0.5.0","data":{"boardConfigs":[],"globalSettings":{"taskUpdateFormat":"ObsidianCardBoard"}}}}""" |> DecodeHelpers.runDecoder interop.toElm |> .decoded - |> Expect.equal (Ok <| InteropDefinitions.SettingsUpdated { version = Semver.version 0 8 0 [] [], boardConfigs = SafeZipper.fromList [], globalSettings = GlobalSettings.default }) + |> Expect.equal (Ok <| InteropDefinitions.SettingsUpdated { version = Semver.version 0 9 0 [] [], boardConfigs = SafeZipper.fromList [], globalSettings = GlobalSettings.default }) , test "decodes version 0.4.0 settings data" <| \() -> """{"tag":"settingsUpdated","data":{"version":"0.4.0","data":{"boardConfigs":[]}}}""" |> DecodeHelpers.runDecoder interop.toElm |> .decoded - |> Expect.equal (Ok <| InteropDefinitions.SettingsUpdated { version = Semver.version 0 8 0 [] [], boardConfigs = SafeZipper.fromList [], globalSettings = GlobalSettings.default }) + |> Expect.equal (Ok <| InteropDefinitions.SettingsUpdated { version = Semver.version 0 9 0 [] [], boardConfigs = SafeZipper.fromList [], globalSettings = GlobalSettings.default }) , test "decodes version 0.3.0 settings data" <| \() -> """{"tag":"settingsUpdated","data":{"version":"0.3.0","data":{"boardConfigs":[]}}}""" |> DecodeHelpers.runDecoder interop.toElm |> .decoded - |> Expect.equal (Ok <| InteropDefinitions.SettingsUpdated { version = Semver.version 0 8 0 [] [], boardConfigs = SafeZipper.fromList [], globalSettings = GlobalSettings.default }) + |> Expect.equal (Ok <| InteropDefinitions.SettingsUpdated { version = Semver.version 0 9 0 [] [], boardConfigs = SafeZipper.fromList [], globalSettings = GlobalSettings.default }) , test "decodes version 0.2.0 settings data" <| \() -> """{"tag":"settingsUpdated","data":{"version":"0.2.0","data":{"boardConfigs":[],"globalSettings":{"hideCompletedSubtasks":false,"ignorePaths":[],"subTaskDisplayLimit":null}}}}""" |> DecodeHelpers.runDecoder interop.toElm |> .decoded - |> Expect.equal (Ok <| InteropDefinitions.SettingsUpdated { version = Semver.version 0 8 0 [] [], boardConfigs = SafeZipper.fromList [], globalSettings = GlobalSettings.default }) + |> Expect.equal (Ok <| InteropDefinitions.SettingsUpdated { version = Semver.version 0 9 0 [] [], boardConfigs = SafeZipper.fromList [], globalSettings = GlobalSettings.default }) , test "decodes version 0.1.0 settings data" <| \() -> """{"tag":"settingsUpdated","data":{"version":"0.1.0","data":{"boardConfigs":[]}}}""" |> DecodeHelpers.runDecoder interop.toElm |> .decoded - |> Expect.equal (Ok <| InteropDefinitions.SettingsUpdated { version = Semver.version 0 8 0 [] [], boardConfigs = SafeZipper.fromList [], globalSettings = GlobalSettings.default }) + |> Expect.equal (Ok <| InteropDefinitions.SettingsUpdated { version = Semver.version 0 9 0 [] [], boardConfigs = SafeZipper.fromList [], globalSettings = GlobalSettings.default }) , test "fails to decode an unsupported version of settings data" <| \() -> """{"tag":"settingsUpdated","data":{"version":"99999.0.0","data":{"boardConfigs":[]}}}""" diff --git a/tests/SettingsTests.elm b/tests/SettingsTests.elm index 658b3c3c..2c86195d 100644 --- a/tests/SettingsTests.elm +++ b/tests/SettingsTests.elm @@ -24,11 +24,11 @@ suite = currentVersion : Test currentVersion = describe "currentVersion" - [ test "is 0.8.0" <| + [ test "is 0.9.0" <| \() -> Settings.currentVersion |> Semver.print - |> Expect.equal "0.8.0" + |> Expect.equal "0.9.0" ] From 56a6b879059195325f4683b904d2d6a61543834f Mon Sep 17 00:00:00 2001 From: rupert Date: Mon, 30 Jan 2023 14:46:37 +0000 Subject: [PATCH 13/21] Collapse: CollapseState -> CollapsedColumns --- TODO.md | 1 - src/Board.elm | 8 +-- src/BoardConfig.elm | 16 ++--- src/CollapseStates.elm | 75 ---------------------- src/CollapsedColumns.elm | 75 ++++++++++++++++++++++ src/DateBoardConfig.elm | 20 +++--- src/TagBoardConfig.elm | 20 +++--- tests/BoardConfigTests.elm | 18 +++--- tests/BoardTests.elm | 10 +-- tests/CollapseStatesTests.elm | 94 ---------------------------- tests/CollapsedColumnsTests.elm | 94 ++++++++++++++++++++++++++++ tests/Helpers/BoardConfigHelpers.elm | 10 +-- tests/InteropDefinitionsTests.elm | 38 +++++------ tests/SettingsStateTests.elm | 6 +- 14 files changed, 242 insertions(+), 243 deletions(-) delete mode 100644 src/CollapseStates.elm create mode 100644 src/CollapsedColumns.elm delete mode 100644 tests/CollapseStatesTests.elm create mode 100644 tests/CollapsedColumnsTests.elm diff --git a/TODO.md b/TODO.md index fcd1f42d..4270c3e5 100644 --- a/TODO.md +++ b/TODO.md @@ -1,4 +1,3 @@ -- CollapseStates -> CollapsedColumns - move the heading up a pixel or two next to the right arrow (or centre the text and arrow vertically) - horizontal scrollbar isn't working properly (there can be things offscreen to the right that I can't scroll into view (e.g. the completed column) diff --git a/src/Board.elm b/src/Board.elm index cc07e449..ee74a308 100644 --- a/src/Board.elm +++ b/src/Board.elm @@ -6,7 +6,7 @@ module Board exposing import BoardConfig exposing (BoardConfig) import Card exposing (Card) -import CollapseStates +import CollapsedColumns import Column exposing (Column) import ColumnNames exposing (ColumnNames) import DateBoardColumns exposing (DateBoardColumns) @@ -75,11 +75,11 @@ columns timeWithZone boardIndex (Board columnNames config taskList) = collapseColumns : BoardConfig -> List (Column Card) -> List (Column Card) collapseColumns config cols = let - collapseStates = - BoardConfig.collapseStates config + collapsedColumns = + BoardConfig.collapsedColumns config foo index col = - if CollapseStates.columnIsCollapsed index collapseStates then + if CollapsedColumns.columnIsCollapsed index collapsedColumns then Column.collapseState True col else diff --git a/src/BoardConfig.elm b/src/BoardConfig.elm index f46761b1..97cf2f57 100644 --- a/src/BoardConfig.elm +++ b/src/BoardConfig.elm @@ -1,7 +1,7 @@ module BoardConfig exposing ( BoardConfig(..) , collapseColumn - , collapseStates + , collapsedColumns , decoder_v_0_1_0 , decoder_v_0_2_0 , decoder_v_0_3_0 @@ -33,7 +33,7 @@ module BoardConfig exposing , updateTitle ) -import CollapseStates exposing (CollapseStates) +import CollapsedColumns exposing (CollapsedColumns) import DateBoardConfig exposing (DateBoardConfig) import DecodeHelpers import Filter exposing (Filter, Polarity, Scope) @@ -85,14 +85,14 @@ fromBoardType boardType title_ = -- UTILITIES -collapseStates : BoardConfig -> CollapseStates -collapseStates config = +collapsedColumns : BoardConfig -> CollapsedColumns +collapsedColumns config = case config of DateBoardConfig c -> - c.collapseStates + c.collapsedColumns TagBoardConfig c -> - c.collapseStates + c.collapsedColumns isForDateBoard : BoardConfig -> Bool @@ -247,11 +247,11 @@ collapseColumn columnIndex isCollapsed config = case config of DateBoardConfig boardConfig -> DateBoardConfig <| - { boardConfig | collapseStates = CollapseStates.collapseColumn columnIndex isCollapsed boardConfig.collapseStates } + { boardConfig | collapsedColumns = CollapsedColumns.collapseColumn columnIndex isCollapsed boardConfig.collapsedColumns } TagBoardConfig boardConfig -> TagBoardConfig <| - { boardConfig | collapseStates = CollapseStates.collapseColumn columnIndex isCollapsed boardConfig.collapseStates } + { boardConfig | collapsedColumns = CollapsedColumns.collapseColumn columnIndex isCollapsed boardConfig.collapsedColumns } toggleIncludeOthers : BoardConfig -> BoardConfig diff --git a/src/CollapseStates.elm b/src/CollapseStates.elm deleted file mode 100644 index 8617d485..00000000 --- a/src/CollapseStates.elm +++ /dev/null @@ -1,75 +0,0 @@ -module CollapseStates exposing - ( CollapseStates - , collapseColumn - , columnIsCollapsed - , decoder - , encoder - , init - ) - -import List.Extra as LE -import Set exposing (Set) -import TsJson.Decode as TsDecode -import TsJson.Encode as TsEncode - - - --- TYPES - - -type CollapseStates - = CollapseStates (Set Int) - - -init : CollapseStates -init = - CollapseStates Set.empty - - - --- SERIALIZATION - - -decoder : TsDecode.Decoder CollapseStates -decoder = - TsDecode.list TsDecode.int - |> TsDecode.map Set.fromList - |> TsDecode.map CollapseStates - - -encoder : TsEncode.Encoder CollapseStates -encoder = - TsEncode.list TsEncode.int - |> TsEncode.map Set.toList - |> TsEncode.map states - - - --- INFO - - -columnIsCollapsed : Int -> CollapseStates -> Bool -columnIsCollapsed column collapseStates = - Set.member column (states collapseStates) - - - --- MODIFY - - -collapseColumn : Int -> Bool -> CollapseStates -> CollapseStates -collapseColumn column state collapseStates = - if state then - CollapseStates <| Set.insert column (states collapseStates) - - else - CollapseStates <| Set.remove column (states collapseStates) - - - --- PRIVATE - - -states : CollapseStates -> Set Int -states (CollapseStates s) = - s diff --git a/src/CollapsedColumns.elm b/src/CollapsedColumns.elm new file mode 100644 index 00000000..629a34a8 --- /dev/null +++ b/src/CollapsedColumns.elm @@ -0,0 +1,75 @@ +module CollapsedColumns exposing + ( CollapsedColumns + , collapseColumn + , columnIsCollapsed + , decoder + , encoder + , init + ) + +import List.Extra as LE +import Set exposing (Set) +import TsJson.Decode as TsDecode +import TsJson.Encode as TsEncode + + + +-- TYPES + + +type CollapsedColumns + = CollapsedColumns (Set Int) + + +init : CollapsedColumns +init = + CollapsedColumns Set.empty + + + +-- SERIALIZATION + + +decoder : TsDecode.Decoder CollapsedColumns +decoder = + TsDecode.list TsDecode.int + |> TsDecode.map Set.fromList + |> TsDecode.map CollapsedColumns + + +encoder : TsEncode.Encoder CollapsedColumns +encoder = + TsEncode.list TsEncode.int + |> TsEncode.map Set.toList + |> TsEncode.map indicies + + + +-- INFO + + +columnIsCollapsed : Int -> CollapsedColumns -> Bool +columnIsCollapsed column collapsedColumns = + Set.member column (indicies collapsedColumns) + + + +-- MODIFY + + +collapseColumn : Int -> Bool -> CollapsedColumns -> CollapsedColumns +collapseColumn column state collapsedColumns = + if state then + CollapsedColumns <| Set.insert column (indicies collapsedColumns) + + else + CollapsedColumns <| Set.remove column (indicies collapsedColumns) + + + +-- PRIVATE + + +indicies : CollapsedColumns -> Set Int +indicies (CollapsedColumns s) = + s diff --git a/src/DateBoardConfig.elm b/src/DateBoardConfig.elm index 63fb02f6..c6651a25 100644 --- a/src/DateBoardConfig.elm +++ b/src/DateBoardConfig.elm @@ -10,7 +10,7 @@ module DateBoardConfig exposing , encoder ) -import CollapseStates exposing (CollapseStates) +import CollapsedColumns exposing (CollapsedColumns) import Filter exposing (Filter, Polarity, Scope) import TsJson.Decode as TsDecode import TsJson.Encode as TsEncode @@ -28,7 +28,7 @@ type alias DateBoardConfig = , showFilteredTags : Bool , includeUndated : Bool , title : String - , collapseStates : CollapseStates + , collapsedColumns : CollapsedColumns } @@ -41,7 +41,7 @@ default = , showFilteredTags = True , includeUndated = True , title = "" - , collapseStates = CollapseStates.init + , collapsedColumns = CollapsedColumns.init } @@ -59,7 +59,7 @@ encoder = , TsEncode.required "showFilteredTags" .showFilteredTags TsEncode.bool , TsEncode.required "includeUndated" .includeUndated TsEncode.bool , TsEncode.required "title" .title TsEncode.string - , TsEncode.required "collapsedColumns" .collapseStates CollapseStates.encoder + , TsEncode.required "collapsedColumns" .collapsedColumns CollapsedColumns.encoder ] @@ -73,7 +73,7 @@ decoder_v_0_9_0 = |> TsDecode.andMap (TsDecode.field "showFilteredTags" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "includeUndated" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "title" TsDecode.string) - |> TsDecode.andMap (TsDecode.field "collapsedColumns" CollapseStates.decoder) + |> TsDecode.andMap (TsDecode.field "collapsedColumns" CollapsedColumns.decoder) decoder_v_0_5_0 : TsDecode.Decoder DateBoardConfig @@ -86,7 +86,7 @@ decoder_v_0_5_0 = |> TsDecode.andMap (TsDecode.field "showFilteredTags" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "includeUndated" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "title" TsDecode.string) - |> TsDecode.andMap (TsDecode.succeed CollapseStates.init) + |> TsDecode.andMap (TsDecode.succeed CollapsedColumns.init) decoder_v_0_4_0 : TsDecode.Decoder DateBoardConfig @@ -99,7 +99,7 @@ decoder_v_0_4_0 = |> TsDecode.andMap (TsDecode.field "showFilteredTags" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "includeUndated" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "title" TsDecode.string) - |> TsDecode.andMap (TsDecode.succeed CollapseStates.init) + |> TsDecode.andMap (TsDecode.succeed CollapsedColumns.init) decoder_v_0_3_0 : TsDecode.Decoder DateBoardConfig @@ -112,7 +112,7 @@ decoder_v_0_3_0 = |> TsDecode.andMap (TsDecode.succeed True) |> TsDecode.andMap (TsDecode.field "includeUndated" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "title" TsDecode.string) - |> TsDecode.andMap (TsDecode.succeed CollapseStates.init) + |> TsDecode.andMap (TsDecode.succeed CollapsedColumns.init) decoder_v_0_2_0 : TsDecode.Decoder DateBoardConfig @@ -125,7 +125,7 @@ decoder_v_0_2_0 = |> TsDecode.andMap (TsDecode.succeed True) |> TsDecode.andMap (TsDecode.field "includeUndated" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "title" TsDecode.string) - |> TsDecode.andMap (TsDecode.succeed CollapseStates.init) + |> TsDecode.andMap (TsDecode.succeed CollapsedColumns.init) decoder_v_0_1_0 : TsDecode.Decoder DateBoardConfig @@ -138,4 +138,4 @@ decoder_v_0_1_0 = |> TsDecode.andMap (TsDecode.succeed True) |> TsDecode.andMap (TsDecode.field "includeUndated" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "title" TsDecode.string) - |> TsDecode.andMap (TsDecode.succeed CollapseStates.init) + |> TsDecode.andMap (TsDecode.succeed CollapsedColumns.init) diff --git a/src/TagBoardConfig.elm b/src/TagBoardConfig.elm index 7b9e60ed..fd3bc46c 100644 --- a/src/TagBoardConfig.elm +++ b/src/TagBoardConfig.elm @@ -12,7 +12,7 @@ module TagBoardConfig exposing , encoder ) -import CollapseStates exposing (CollapseStates) +import CollapsedColumns exposing (CollapsedColumns) import Filter exposing (Filter, Polarity, Scope) import Parser as P exposing ((|.), (|=), Parser) import ParserHelper @@ -36,7 +36,7 @@ type alias TagBoardConfig = , includeOthers : Bool , includeUntagged : Bool , title : String - , collapseStates : CollapseStates + , collapsedColumns : CollapsedColumns } @@ -58,7 +58,7 @@ default = , includeOthers = False , includeUntagged = False , title = "" - , collapseStates = CollapseStates.init + , collapsedColumns = CollapsedColumns.init } @@ -79,7 +79,7 @@ encoder = , TsEncode.required "includeOthers" .includeOthers TsEncode.bool , TsEncode.required "includeUntagged" .includeUntagged TsEncode.bool , TsEncode.required "title" .title TsEncode.string - , TsEncode.required "collapsedColumns" .collapseStates CollapseStates.encoder + , TsEncode.required "collapsedColumns" .collapsedColumns CollapsedColumns.encoder ] @@ -104,7 +104,7 @@ decoder_v_0_9_0 = |> TsDecode.andMap (TsDecode.field "includeOthers" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "includeUntagged" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "title" TsDecode.string) - |> TsDecode.andMap (TsDecode.field "collapsedColumns" CollapseStates.decoder) + |> TsDecode.andMap (TsDecode.field "collapsedColumns" CollapsedColumns.decoder) decoder_v_0_5_0 : TsDecode.Decoder TagBoardConfig @@ -120,7 +120,7 @@ decoder_v_0_5_0 = |> TsDecode.andMap (TsDecode.field "includeOthers" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "includeUntagged" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "title" TsDecode.string) - |> TsDecode.andMap (TsDecode.succeed CollapseStates.init) + |> TsDecode.andMap (TsDecode.succeed CollapsedColumns.init) decoder_v_0_4_0 : TsDecode.Decoder TagBoardConfig @@ -136,7 +136,7 @@ decoder_v_0_4_0 = |> TsDecode.andMap (TsDecode.field "includeOthers" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "includeUntagged" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "title" TsDecode.string) - |> TsDecode.andMap (TsDecode.succeed CollapseStates.init) + |> TsDecode.andMap (TsDecode.succeed CollapsedColumns.init) decoder_v_0_3_0 : TsDecode.Decoder TagBoardConfig @@ -152,7 +152,7 @@ decoder_v_0_3_0 = |> TsDecode.andMap (TsDecode.field "includeOthers" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "includeUntagged" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "title" TsDecode.string) - |> TsDecode.andMap (TsDecode.succeed CollapseStates.init) + |> TsDecode.andMap (TsDecode.succeed CollapsedColumns.init) decoder_v_0_2_0 : TsDecode.Decoder TagBoardConfig @@ -168,7 +168,7 @@ decoder_v_0_2_0 = |> TsDecode.andMap (TsDecode.field "includeOthers" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "includeUntagged" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "title" TsDecode.string) - |> TsDecode.andMap (TsDecode.succeed CollapseStates.init) + |> TsDecode.andMap (TsDecode.succeed CollapsedColumns.init) decoder_v_0_1_0 : TsDecode.Decoder TagBoardConfig @@ -184,7 +184,7 @@ decoder_v_0_1_0 = |> TsDecode.andMap (TsDecode.field "includeOthers" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "includeUntagged" TsDecode.bool) |> TsDecode.andMap (TsDecode.field "title" TsDecode.string) - |> TsDecode.andMap (TsDecode.succeed CollapseStates.init) + |> TsDecode.andMap (TsDecode.succeed CollapsedColumns.init) columnConfigDecoder : TsDecode.Decoder ColumnConfig diff --git a/tests/BoardConfigTests.elm b/tests/BoardConfigTests.elm index 17cd2218..7e01f573 100644 --- a/tests/BoardConfigTests.elm +++ b/tests/BoardConfigTests.elm @@ -1,7 +1,7 @@ module BoardConfigTests exposing (suite) import BoardConfig exposing (BoardConfig) -import CollapseStates +import CollapsedColumns import DateBoardConfig exposing (DateBoardConfig) import Expect import Filter @@ -151,31 +151,31 @@ collapseColumn = BoardConfig.fromBoardType "dateBoard" "" |> BoardConfig.collapseColumn 0 True |> extractDateBoardConfig - |> Maybe.map .collapseStates - |> Expect.equal (Just <| (CollapseStates.init |> CollapseStates.collapseColumn 0 True)) + |> Maybe.map .collapsedColumns + |> Expect.equal (Just <| (CollapsedColumns.init |> CollapsedColumns.collapseColumn 0 True)) , test "un-collapses a column for a DateBoard config" <| \() -> BoardConfig.fromBoardType "dateBoard" "" |> BoardConfig.collapseColumn 0 True |> BoardConfig.collapseColumn 0 False |> extractDateBoardConfig - |> Maybe.map .collapseStates - |> Expect.equal (Just <| (CollapseStates.init |> CollapseStates.collapseColumn 0 False)) + |> Maybe.map .collapsedColumns + |> Expect.equal (Just <| (CollapsedColumns.init |> CollapsedColumns.collapseColumn 0 False)) , test "sets the collapse state for a TagBoard config" <| \() -> BoardConfig.fromBoardType "tagBoard" "" |> BoardConfig.collapseColumn 0 True |> extractTagBoardConfig - |> Maybe.map .collapseStates - |> Expect.equal (Just <| (CollapseStates.init |> CollapseStates.collapseColumn 0 True)) + |> Maybe.map .collapsedColumns + |> Expect.equal (Just <| (CollapsedColumns.init |> CollapsedColumns.collapseColumn 0 True)) , test "unsets the collapse state for a TagBoard config if toggled twice" <| \() -> BoardConfig.fromBoardType "tagBoard" "" |> BoardConfig.collapseColumn 0 True |> BoardConfig.collapseColumn 0 False |> extractTagBoardConfig - |> Maybe.map .collapseStates - |> Expect.equal (Just <| (CollapseStates.init |> CollapseStates.collapseColumn 0 False)) + |> Maybe.map .collapsedColumns + |> Expect.equal (Just <| (CollapsedColumns.init |> CollapsedColumns.collapseColumn 0 False)) ] diff --git a/tests/BoardTests.elm b/tests/BoardTests.elm index 2b32c730..9050d21f 100644 --- a/tests/BoardTests.elm +++ b/tests/BoardTests.elm @@ -3,7 +3,7 @@ module BoardTests exposing (suite) import Board import BoardConfig import Card -import CollapseStates +import CollapsedColumns import Column import ColumnNames import DateBoardConfig exposing (DateBoardConfig) @@ -356,7 +356,7 @@ columnsDateBoard = | includeUndated = True , filters = [] , filterPolarity = Filter.Deny - , collapseStates = CollapseStates.init |> CollapseStates.collapseColumn 0 True + , collapsedColumns = CollapsedColumns.init |> CollapsedColumns.collapseColumn 0 True } ) |> Board.columns DateTimeHelpers.nowWithZone 0 @@ -379,7 +379,7 @@ columnsDateBoard = , FilterHelpers.tagFilter "cTag" ] , filterPolarity = Filter.Deny - , collapseStates = CollapseStates.init |> CollapseStates.collapseColumn 0 True + , collapsedColumns = CollapsedColumns.init |> CollapsedColumns.collapseColumn 0 True } ) |> Board.columns DateTimeHelpers.nowWithZone 0 @@ -631,7 +631,7 @@ columnsTagBoard = , includeOthers = True , filters = [] , filterPolarity = Filter.Deny - , collapseStates = CollapseStates.init |> CollapseStates.collapseColumn 0 True + , collapsedColumns = CollapsedColumns.init |> CollapsedColumns.collapseColumn 0 True } ) |> Board.columns DateTimeHelpers.nowWithZone 0 @@ -655,7 +655,7 @@ columnsTagBoard = , FilterHelpers.tagFilter "tag3" ] , filterPolarity = Filter.Deny - , collapseStates = CollapseStates.init |> CollapseStates.collapseColumn 0 True + , collapsedColumns = CollapsedColumns.init |> CollapsedColumns.collapseColumn 0 True } ) |> Board.columns DateTimeHelpers.nowWithZone 0 diff --git a/tests/CollapseStatesTests.elm b/tests/CollapseStatesTests.elm deleted file mode 100644 index a4e962c6..00000000 --- a/tests/CollapseStatesTests.elm +++ /dev/null @@ -1,94 +0,0 @@ -module CollapseStatesTests exposing (suite) - -import CollapseStates -import Expect -import Fuzz exposing (Fuzzer) -import Helpers.DecodeHelpers as DecodeHelpers -import Test exposing (..) -import TsJson.Encode as TsEncode - - -suite : Test -suite = - concat - [ columnIsCollapsed - , decoder - , encoder - ] - - -columnIsCollapsed : Test -columnIsCollapsed = - describe "columnIsCollapsed" - [ fuzz (Fuzz.intRange 0 20) "returns False for any column if it has just been initialized" <| - \fuzzedInt -> - CollapseStates.init - |> CollapseStates.columnIsCollapsed fuzzedInt - |> Expect.equal False - , fuzz (Fuzz.intRange 0 20) "returns True for any column if it has been set to collapsed" <| - \fuzzedInt -> - CollapseStates.init - |> CollapseStates.collapseColumn fuzzedInt True - |> CollapseStates.columnIsCollapsed fuzzedInt - |> Expect.equal True - , fuzz (Fuzz.intRange 0 20) "returns False for any column if it has been set to not be collapsed" <| - \fuzzedInt -> - CollapseStates.init - |> CollapseStates.collapseColumn fuzzedInt True - |> CollapseStates.collapseColumn fuzzedInt False - |> CollapseStates.columnIsCollapsed fuzzedInt - |> Expect.equal False - , fuzz (Fuzz.intRange 1 20) "collapsing a column does not affect other columns" <| - \fuzzedInt -> - CollapseStates.init - |> CollapseStates.collapseColumn fuzzedInt True - |> CollapseStates.columnIsCollapsed 0 - |> Expect.equal False - ] - - -decoder : Test -decoder = - describe "decoder" - [ test "decodes an empty array" <| - \() -> - "[]" - |> DecodeHelpers.runDecoder CollapseStates.decoder - |> .decoded - |> Expect.equal (Ok CollapseStates.init) - , test "decodes '[1,3,4]'" <| - \() -> - "[1,3,4]" - |> DecodeHelpers.runDecoder CollapseStates.decoder - |> .decoded - |> Expect.equal - (Ok - (CollapseStates.init - |> CollapseStates.collapseColumn 1 True - |> CollapseStates.collapseColumn 3 True - |> CollapseStates.collapseColumn 4 True - ) - ) - ] - - -encoder : Test -encoder = - describe "encoder" - [ test "encodes an initialized CollapseStates" <| - \() -> - CollapseStates.init - |> TsEncode.runExample CollapseStates.encoder - |> .output - |> Expect.equal "[]" - , test "encodes an CollapseStates with some collapsed columns" <| - \() -> - (CollapseStates.init - |> CollapseStates.collapseColumn 1 True - |> CollapseStates.collapseColumn 3 True - |> CollapseStates.collapseColumn 4 True - ) - |> TsEncode.runExample CollapseStates.encoder - |> .output - |> Expect.equal "[1,3,4]" - ] diff --git a/tests/CollapsedColumnsTests.elm b/tests/CollapsedColumnsTests.elm new file mode 100644 index 00000000..70bd5cdf --- /dev/null +++ b/tests/CollapsedColumnsTests.elm @@ -0,0 +1,94 @@ +module CollapsedColumnsTests exposing (suite) + +import CollapsedColumns +import Expect +import Fuzz exposing (Fuzzer) +import Helpers.DecodeHelpers as DecodeHelpers +import Test exposing (..) +import TsJson.Encode as TsEncode + + +suite : Test +suite = + concat + [ columnIsCollapsed + , decoder + , encoder + ] + + +columnIsCollapsed : Test +columnIsCollapsed = + describe "columnIsCollapsed" + [ fuzz (Fuzz.intRange 0 20) "returns False for any column if it has just been initialized" <| + \fuzzedInt -> + CollapsedColumns.init + |> CollapsedColumns.columnIsCollapsed fuzzedInt + |> Expect.equal False + , fuzz (Fuzz.intRange 0 20) "returns True for any column if it has been set to collapsed" <| + \fuzzedInt -> + CollapsedColumns.init + |> CollapsedColumns.collapseColumn fuzzedInt True + |> CollapsedColumns.columnIsCollapsed fuzzedInt + |> Expect.equal True + , fuzz (Fuzz.intRange 0 20) "returns False for any column if it has been set to not be collapsed" <| + \fuzzedInt -> + CollapsedColumns.init + |> CollapsedColumns.collapseColumn fuzzedInt True + |> CollapsedColumns.collapseColumn fuzzedInt False + |> CollapsedColumns.columnIsCollapsed fuzzedInt + |> Expect.equal False + , fuzz (Fuzz.intRange 1 20) "collapsing a column does not affect other columns" <| + \fuzzedInt -> + CollapsedColumns.init + |> CollapsedColumns.collapseColumn fuzzedInt True + |> CollapsedColumns.columnIsCollapsed 0 + |> Expect.equal False + ] + + +decoder : Test +decoder = + describe "decoder" + [ test "decodes an empty array" <| + \() -> + "[]" + |> DecodeHelpers.runDecoder CollapsedColumns.decoder + |> .decoded + |> Expect.equal (Ok CollapsedColumns.init) + , test "decodes '[1,3,4]'" <| + \() -> + "[1,3,4]" + |> DecodeHelpers.runDecoder CollapsedColumns.decoder + |> .decoded + |> Expect.equal + (Ok + (CollapsedColumns.init + |> CollapsedColumns.collapseColumn 1 True + |> CollapsedColumns.collapseColumn 3 True + |> CollapsedColumns.collapseColumn 4 True + ) + ) + ] + + +encoder : Test +encoder = + describe "encoder" + [ test "encodes an initialized CollapsedColumns" <| + \() -> + CollapsedColumns.init + |> TsEncode.runExample CollapsedColumns.encoder + |> .output + |> Expect.equal "[]" + , test "encodes an CollapsedColumns with some collapsed columns" <| + \() -> + (CollapsedColumns.init + |> CollapsedColumns.collapseColumn 1 True + |> CollapsedColumns.collapseColumn 3 True + |> CollapsedColumns.collapseColumn 4 True + ) + |> TsEncode.runExample CollapsedColumns.encoder + |> .output + |> Expect.equal "[1,3,4]" + ] diff --git a/tests/Helpers/BoardConfigHelpers.elm b/tests/Helpers/BoardConfigHelpers.elm index a9281fa3..f23d0cb7 100644 --- a/tests/Helpers/BoardConfigHelpers.elm +++ b/tests/Helpers/BoardConfigHelpers.elm @@ -7,7 +7,7 @@ module Helpers.BoardConfigHelpers exposing ) import BoardConfig exposing (BoardConfig) -import CollapseStates +import CollapsedColumns import DateBoardConfig exposing (DateBoardConfig) import Filter import Helpers.FilterHelpers as FilterHelpers @@ -23,7 +23,7 @@ defaultDateBoardConfig = , showFilteredTags = True , includeUndated = False , title = "Date Board Title" - , collapseStates = CollapseStates.init + , collapsedColumns = CollapsedColumns.init } @@ -41,7 +41,7 @@ exampleDateBoardConfig = , showFilteredTags = True , includeUndated = False , title = "Date Board Title" - , collapseStates = CollapseStates.init + , collapsedColumns = CollapsedColumns.init } @@ -57,7 +57,7 @@ defaultTagBoardConfig = , includeOthers = False , includeUntagged = False , title = "Tag Board Title" - , collapseStates = CollapseStates.init + , collapsedColumns = CollapsedColumns.init } @@ -73,5 +73,5 @@ exampleTagBoardConfig = , includeOthers = False , includeUntagged = True , title = "Tag Board Title" - , collapseStates = CollapseStates.init + , collapsedColumns = CollapsedColumns.init } diff --git a/tests/InteropDefinitionsTests.elm b/tests/InteropDefinitionsTests.elm index 746654ab..037bbe14 100644 --- a/tests/InteropDefinitionsTests.elm +++ b/tests/InteropDefinitionsTests.elm @@ -1,7 +1,7 @@ module InteropDefinitionsTests exposing (suite) import BoardConfig -import CollapseStates +import CollapsedColumns import ColumnNames import DataviewTaskCompletion import Expect @@ -48,7 +48,7 @@ flagsTests = , filterScope = Filter.TopLevelOnly , showFilteredTags = True , includeUndated = True - , collapseStates = CollapseStates.init + , collapsedColumns = CollapsedColumns.init , title = "date board title" } , BoardConfig.TagBoardConfig @@ -61,7 +61,7 @@ flagsTests = , showFilteredTags = False , includeOthers = False , includeUntagged = True - , collapseStates = CollapseStates.init |> CollapseStates.collapseColumn 1 True |> CollapseStates.collapseColumn 4 True + , collapsedColumns = CollapsedColumns.init |> CollapsedColumns.collapseColumn 1 True |> CollapsedColumns.collapseColumn 4 True , title = "tag board title" } ] @@ -103,7 +103,7 @@ flagsTests = , showFilteredTags = True , includeUndated = True , title = "date board title" - , collapseStates = CollapseStates.init + , collapsedColumns = CollapsedColumns.init } , BoardConfig.TagBoardConfig { columns = [ { displayTitle = "title 1", tag = "tag 1" } ] @@ -116,7 +116,7 @@ flagsTests = , includeOthers = False , includeUntagged = True , title = "tag board title" - , collapseStates = CollapseStates.init + , collapsedColumns = CollapsedColumns.init } ] , globalSettings = @@ -157,7 +157,7 @@ flagsTests = , showFilteredTags = True , includeUndated = True , title = "date board title" - , collapseStates = CollapseStates.init + , collapsedColumns = CollapsedColumns.init } , BoardConfig.TagBoardConfig { columns = [ { displayTitle = "title 1", tag = "tag 1" } ] @@ -170,7 +170,7 @@ flagsTests = , includeOthers = False , includeUntagged = True , title = "tag board title" - , collapseStates = CollapseStates.init + , collapsedColumns = CollapsedColumns.init } ] , globalSettings = @@ -211,7 +211,7 @@ flagsTests = , showFilteredTags = True , includeUndated = True , title = "date board title" - , collapseStates = CollapseStates.init + , collapsedColumns = CollapsedColumns.init } , BoardConfig.TagBoardConfig { columns = [ { displayTitle = "title 1", tag = "tag 1" } ] @@ -224,7 +224,7 @@ flagsTests = , includeOthers = False , includeUntagged = True , title = "tag board title" - , collapseStates = CollapseStates.init + , collapsedColumns = CollapsedColumns.init } ] , globalSettings = @@ -257,7 +257,7 @@ flagsTests = , showFilteredTags = True , includeUndated = True , title = "date board title" - , collapseStates = CollapseStates.init + , collapsedColumns = CollapsedColumns.init } , BoardConfig.TagBoardConfig { columns = [ { displayTitle = "title 1", tag = "tag 1" } ] @@ -270,7 +270,7 @@ flagsTests = , includeOthers = False , includeUntagged = True , title = "tag board title" - , collapseStates = CollapseStates.init + , collapsedColumns = CollapsedColumns.init } ] , globalSettings = @@ -303,7 +303,7 @@ flagsTests = , showFilteredTags = True , includeUndated = True , title = "date board title" - , collapseStates = CollapseStates.init + , collapsedColumns = CollapsedColumns.init } , BoardConfig.TagBoardConfig { columns = [ { displayTitle = "title 1", tag = "tag 1" } ] @@ -316,7 +316,7 @@ flagsTests = , includeOthers = False , includeUntagged = True , title = "tag board title" - , collapseStates = CollapseStates.init + , collapsedColumns = CollapsedColumns.init } ] , globalSettings = GlobalSettings.default @@ -346,7 +346,7 @@ flagsTests = , showFilteredTags = True , includeUndated = True , title = "date board title" - , collapseStates = CollapseStates.init + , collapsedColumns = CollapsedColumns.init } , BoardConfig.TagBoardConfig { columns = [ { displayTitle = "title 1", tag = "tag 1" } ] @@ -359,7 +359,7 @@ flagsTests = , includeOthers = False , includeUntagged = True , title = "tag board title" - , collapseStates = CollapseStates.init + , collapsedColumns = CollapsedColumns.init } ] , globalSettings = GlobalSettings.default @@ -389,7 +389,7 @@ flagsTests = , showFilteredTags = True , includeUndated = True , title = "date board title" - , collapseStates = CollapseStates.init + , collapsedColumns = CollapsedColumns.init } , BoardConfig.TagBoardConfig { columns = [ { displayTitle = "title 1", tag = "tag 1" } ] @@ -402,7 +402,7 @@ flagsTests = , includeOthers = False , includeUntagged = True , title = "tag board title" - , collapseStates = CollapseStates.init + , collapsedColumns = CollapsedColumns.init } ] , globalSettings = GlobalSettings.default @@ -432,7 +432,7 @@ flagsTests = , showFilteredTags = True , includeUndated = True , title = "date board title" - , collapseStates = CollapseStates.init + , collapsedColumns = CollapsedColumns.init } , BoardConfig.TagBoardConfig { columns = [ { displayTitle = "title 1", tag = "tag 1" } ] @@ -445,7 +445,7 @@ flagsTests = , includeOthers = False , includeUntagged = True , title = "tag board title" - , collapseStates = CollapseStates.init + , collapsedColumns = CollapsedColumns.init } ] , globalSettings = GlobalSettings.default diff --git a/tests/SettingsStateTests.elm b/tests/SettingsStateTests.elm index c1f34fc1..8141240a 100644 --- a/tests/SettingsStateTests.elm +++ b/tests/SettingsStateTests.elm @@ -1,7 +1,7 @@ module SettingsStateTests exposing (suite) import BoardConfig exposing (BoardConfig) -import CollapseStates +import CollapsedColumns import ColumnNames import DateBoardConfig exposing (DateBoardConfig) import Expect @@ -507,7 +507,7 @@ exampleDateBoardConfig = , showFilteredTags = True , includeUndated = False , title = "Date Board Title" - , collapseStates = CollapseStates.init + , collapsedColumns = CollapsedColumns.init } @@ -523,5 +523,5 @@ exampleTagBoardConfig = , includeOthers = False , includeUntagged = True , title = "Tag Board Title" - , collapseStates = CollapseStates.init + , collapsedColumns = CollapsedColumns.init } From b2bb585a5277a0e8e6f4dcacd242f259625afb48 Mon Sep 17 00:00:00 2001 From: rupert Date: Mon, 30 Jan 2023 14:56:15 +0000 Subject: [PATCH 14/21] Collapse: better alignment of arrow and column title --- TODO.md | 1 - styles.css | 5 +++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/TODO.md b/TODO.md index 4270c3e5..33cd9069 100644 --- a/TODO.md +++ b/TODO.md @@ -1,4 +1,3 @@ -- move the heading up a pixel or two next to the right arrow (or centre the text and arrow vertically) - horizontal scrollbar isn't working properly (there can be things offscreen to the right that I can't scroll into view (e.g. the completed column) - update readme diff --git a/styles.css b/styles.css index e4ba54da..ad1da673 100644 --- a/styles.css +++ b/styles.css @@ -140,6 +140,7 @@ li.is-after-active .card-board-tabs-inner { font-weight: var(--bold-weight); margin-bottom: 1em; display: flex; + align-items: center; } .card-board-column.collapsed .card-board-column-header { @@ -157,7 +158,7 @@ li.is-after-active .card-board-tabs-inner { border-left: 0.4em solid transparent; border-right: 0.4em solid transparent; border-top: 0.4em solid var(--text-normal); - margin: 0.4em 0.3em 0.4em 0em; + margin: 0.5em 0 0.5em 0; cursor: pointer; } @@ -167,7 +168,7 @@ li.is-after-active .card-board-tabs-inner { border-top: 0.4em solid transparent; border-bottom: 0.4em solid transparent; border-left: 0.4em solid var(--text-normal); - margin: 0.2em 0.4em 0 -0.2em; + margin: 0 0.4em 0 -0.2em; cursor: pointer; } From d3f91a4df3c61147bd0711bdfaf8ab8703ba7fb4 Mon Sep 17 00:00:00 2001 From: rupert Date: Mon, 30 Jan 2023 15:05:30 +0000 Subject: [PATCH 15/21] Collapse: save new example config --- configExamples/data.0.9.0.json | 221 +++++++++++++++++++++++++++++++++ 1 file changed, 221 insertions(+) create mode 100644 configExamples/data.0.9.0.json diff --git a/configExamples/data.0.9.0.json b/configExamples/data.0.9.0.json new file mode 100644 index 00000000..4072c646 --- /dev/null +++ b/configExamples/data.0.9.0.json @@ -0,0 +1,221 @@ +{ + "version": "0.9.0", + "data": { + "boardConfigs": [ + { + "tag": "dateBoardConfig", + "data": { + "completedCount": 5, + "filters": [ + { + "tag": "tagFilter", + "data": "people/" + }, + { + "tag": "tagFilter", + "data": "home/" + } + ], + "filterPolarity": "Deny", + "filterScope": "TopLevelOnly", + "showFilteredTags": false, + "includeUndated": true, + "title": "Dated", + "collapsedColumns": [ + 0, + 2, + 3 + ] + } + }, + { + "tag": "tagBoardConfig", + "data": { + "columns": [ + { + "tag": "home/", + "displayTitle": "Home/" + }, + { + "tag": "home", + "displayTitle": "Home" + }, + { + "tag": "wellbeing", + "displayTitle": "Wellbeing" + }, + { + "tag": "town", + "displayTitle": "Town" + } + ], + "showColumnTags": false, + "completedCount": 10, + "filters": [], + "filterPolarity": "Allow", + "filterScope": "SubTasksOnly", + "showFilteredTags": false, + "includeOthers": true, + "includeUntagged": true, + "title": "Tagged", + "collapsedColumns": [ + 0, + 1, + 5 + ] + } + }, + { + "tag": "tagBoardConfig", + "data": { + "columns": [ + { + "tag": "status/backlog", + "displayTitle": "Backlog" + }, + { + "tag": "status/triaged", + "displayTitle": "Triaged" + }, + { + "tag": "status/blocked", + "displayTitle": "Blocked" + }, + { + "tag": "status/doing", + "displayTitle": "Doing" + } + ], + "showColumnTags": false, + "completedCount": 10, + "filters": [ + { + "tag": "tagFilter", + "data": "projects/project1" + } + ], + "filterPolarity": "Allow", + "filterScope": "Both", + "showFilteredTags": false, + "includeOthers": true, + "includeUntagged": false, + "title": "Project 1", + "collapsedColumns": [ + 0, + 2, + 3 + ] + } + }, + { + "tag": "tagBoardConfig", + "data": { + "columns": [ + { + "tag": "home/kitchen", + "displayTitle": "Kitchen" + }, + { + "tag": "home/outside", + "displayTitle": "Outside" + } + ], + "showColumnTags": true, + "completedCount": 10, + "filters": [ + { + "tag": "tagFilter", + "data": "home" + }, + { + "tag": "tagFilter", + "data": "home/" + } + ], + "filterPolarity": "Allow", + "filterScope": "Both", + "showFilteredTags": true, + "includeOthers": false, + "includeUntagged": false, + "title": "Home", + "collapsedColumns": [] + } + }, + { + "tag": "tagBoardConfig", + "data": { + "columns": [ + { + "tag": "خانه", + "displayTitle": "خانه" + }, + { + "tag": "خانه/", + "displayTitle": "خانه/" + } + ], + "showColumnTags": true, + "completedCount": 10, + "filters": [], + "filterPolarity": "Allow", + "filterScope": "Both", + "showFilteredTags": true, + "includeOthers": false, + "includeUntagged": false, + "title": "خانه", + "collapsedColumns": [] + } + }, + { + "tag": "tagBoardConfig", + "data": { + "columns": [ + { + "tag": "people/fred", + "displayTitle": "Fred" + }, + { + "tag": "people/wilma", + "displayTitle": "Wilma" + }, + { + "tag": "people/barney", + "displayTitle": "Barney" + } + ], + "showColumnTags": true, + "completedCount": 10, + "filters": [ + { + "tag": "tagFilter", + "data": "people/" + } + ], + "filterPolarity": "Allow", + "filterScope": "Both", + "showFilteredTags": true, + "includeOthers": true, + "includeUntagged": false, + "title": "People", + "collapsedColumns": [ + 0, + 1, + 3 + ] + } + } + ], + "globalSettings": { + "taskCompletionFormat": "ObsidianCardBoard", + "columnNames": { + "today": "", + "tomorrow": "", + "future": "", + "undated": "", + "others": "", + "untagged": "", + "completed": "" + } + } + } +} \ No newline at end of file From 7f606054846c0419e94f556fdd7237bb3d03817c Mon Sep 17 00:00:00 2001 From: rupert Date: Mon, 30 Jan 2023 15:15:25 +0000 Subject: [PATCH 16/21] Collapse: reduce column padding-top as gap looks biiig when collapsed --- TODO.md | 3 +++ styles.css | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/TODO.md b/TODO.md index 33cd9069..e3315138 100644 --- a/TODO.md +++ b/TODO.md @@ -1,3 +1,6 @@ +- need to update collapsed columns if columns are added or removed +- need to do something different in RTL mode + - arrow needs reversing and putting at the top of collapsed columns - horizontal scrollbar isn't working properly (there can be things offscreen to the right that I can't scroll into view (e.g. the completed column) - update readme diff --git a/styles.css b/styles.css index ad1da673..08ef2079 100644 --- a/styles.css +++ b/styles.css @@ -118,7 +118,7 @@ li.is-after-active .card-board-tabs-inner { .card-board-column { flex: 0 0 auto; - padding: 1em; + padding: 0.6em 1em 1em 1em; margin-right: 15px; width: 20em; background-color: var(--background-secondary); @@ -133,12 +133,12 @@ li.is-after-active .card-board-tabs-inner { overflow: visible; margin: 0; margin-right: 15px; - padding: 1em 0 0 0.3em; + padding: 0.6em 0 0 0.3em; } .card-board-column-header { font-weight: var(--bold-weight); - margin-bottom: 1em; + margin-bottom: 0.6em; display: flex; align-items: center; } From b925c2a699e30620ec637f2fc3871d99d4a1af0e Mon Sep 17 00:00:00 2001 From: rupert Date: Mon, 30 Jan 2023 17:00:23 +0000 Subject: [PATCH 17/21] Collapse: better working with RTL text (I hope) --- TODO.md | 2 -- styles.css | 35 +++++++++++++++++++++++++++++++++-- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/TODO.md b/TODO.md index e3315138..156db3df 100644 --- a/TODO.md +++ b/TODO.md @@ -1,6 +1,4 @@ - need to update collapsed columns if columns are added or removed -- need to do something different in RTL mode - - arrow needs reversing and putting at the top of collapsed columns - horizontal scrollbar isn't working properly (there can be things offscreen to the right that I can't scroll into view (e.g. the completed column) - update readme diff --git a/styles.css b/styles.css index 08ef2079..92ce1629 100644 --- a/styles.css +++ b/styles.css @@ -126,6 +126,11 @@ li.is-after-active .card-board-tabs-inner { border: var(--border-width) solid var(--background-modifier-border); } +div[dir=rtl] .card-board-column { + margin-left: 15px; + margin-right: 0; +} + .card-board-column.collapsed { width: 2em; min-width: 2em; @@ -136,6 +141,12 @@ li.is-after-active .card-board-tabs-inner { padding: 0.6em 0 0 0.3em; } +div[dir=rtl] .card-board-column.collapsed { + margin-left: 15px; + margin-right: 0; + padding: 0.6em 0.3em 0 0; +} + .card-board-column-header { font-weight: var(--bold-weight); margin-bottom: 0.6em; @@ -143,13 +154,19 @@ li.is-after-active .card-board-tabs-inner { align-items: center; } -.card-board-column.collapsed .card-board-column-header { + +div[dir=ltr] .card-board-column.collapsed .card-board-column-header { + writing-mode: vertical-lr; +} + +div[dir=rtl] .card-board-column.collapsed .card-board-column-header { writing-mode: vertical-rl; } .card-board-column.collapsed .card-board-column-header .sub-text { font-weight: var(--normal-weight); margin-top: 0.3em; + margin-bottom: 0.3em; } .arrow-down { @@ -162,7 +179,11 @@ li.is-after-active .card-board-tabs-inner { cursor: pointer; } -.arrow-right { +div[dir=rtl] .arrow-down { + order: 3; +} + +div[dir=ltr] .arrow-right { width: 0; height: 0; border-top: 0.4em solid transparent; @@ -172,6 +193,16 @@ li.is-after-active .card-board-tabs-inner { cursor: pointer; } +div[dir=rtl] .arrow-right { + width: 0; + height: 0; + border-top: 0.4em solid transparent; + border-bottom: 0.4em solid transparent; + border-right: 0.4em solid var(--text-normal); + margin: 0 -0.2em 0 0.4em; + cursor: pointer; +} + ul.card-board-column-list { display: grid; grid-gap: 0.5em; From 1f338219ccdfccb906995a4c32538515de229d90 Mon Sep 17 00:00:00 2001 From: rupert Date: Mon, 30 Jan 2023 17:45:10 +0000 Subject: [PATCH 18/21] Collapse: fix horizontal scroll issue --- TODO.md | 5 ++--- styles.css | 1 - 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/TODO.md b/TODO.md index 156db3df..38898485 100644 --- a/TODO.md +++ b/TODO.md @@ -1,9 +1,8 @@ -- need to update collapsed columns if columns are added or removed -- horizontal scrollbar isn't working properly (there can be things offscreen to the right - that I can't scroll into view (e.g. the completed column) - update readme - new way to set column width with snippet +- need to update collapsed columns if columns are added or removed + - set size in elm (resize_spike branch) - don't resize columns when toggling collapse - only do this when re-sizing the window - annoyingly Browser.onResize returns the size of the complete obsidian interface and diff --git a/styles.css b/styles.css index 92ce1629..366aea84 100644 --- a/styles.css +++ b/styles.css @@ -108,7 +108,6 @@ li.is-after-active .card-board-tabs-inner { .card-board-columns { display: flex; - overflow-x: auto; } .card-board-columns::after { From fa21c5c95013908e08a7fe12a8ee3471a0453cba Mon Sep 17 00:00:00 2001 From: rupert Date: Mon, 30 Jan 2023 18:02:35 +0000 Subject: [PATCH 19/21] Collapse: update README --- README.md | 18 +++++++++--------- images/dateBoard.png | Bin 234476 -> 236189 bytes 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 6fd6e0c0..320ffac6 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,9 @@ An [Obsidian](https://obsidian.md/) plugin to make working with tasks a pleasure - Tag based (uses `#tags` to define your boards). ## New +- Collapseable columns. To make this work nicely, columns are now set to a fixed width. + See the [Scaling Board Text and Column Sizes section](#scaling-board-text-and-column-sizes) + to customize this if you don't like the width I have chosen. - Supports all valid CommonMark unordered list markers (`-`, `+`, `*`) -> @MattiasMartens. - Option to choose whether to apply tag filters to top level tasks, sub-tasks, or both. @@ -22,7 +25,6 @@ An [Obsidian](https://obsidian.md/) plugin to make working with tasks a pleasure from boards when marked as complete, or the information on a card changing depending which column it was displayed in. If you are used to the way things used to work you may well notice a change (hopefully for the best). -- Sub-task tags now shown inline rather than at the top of the card. ![date based board screenshot](/images/dateBoard.png?raw=true) @@ -319,23 +321,21 @@ To get the correct behavior for recurring tasks, click the edit icon on the card to go to the file where the task is written, and then use the *"Tasks: Toggle Done"* command or click the checkbox from there. -## Scaling Board Size -You can scale the size of the board relative to the size of stuff in Obsidian using -a css snippet: +## Scaling Board Text and Column Sizes +Use the following css snippet to customize these: ```css .card-board-view { font-size: 1em; } -.card-board-view .card-board-columns { - grid-auto-columns: minmax(20em, 1fr); +.card-board-view .card-board-column { + width: 20em; } ``` -You can change the font-size to alter the general size of the contents of the cards. -If you change the value of the first parameter of the minmax function you can change -the minimum width of the cards. +You can alter the general size of the contents of the cards by changng the font-size, +and/or set the width of the columns by changing the width setting. ## Limitations diff --git a/images/dateBoard.png b/images/dateBoard.png index bc1e774bdf982b3a3f45f914023c103d6658dae3..a5df2455630141941a956bb968d5b672021ef5d6 100644 GIT binary patch literal 236189 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�T=3+xfOrx#I)Np;pz~9m%JKA z*HJpM0%6RQ$Yglu3otlH_nGj6ek5xK6-%A7_%jeyyfxlP1D2jYu%d;9E6*%9i93@6 zAIE++$+a_pV%Z`xp~i#3l86XQ4QvK#}BJ z$Vv`#-Gp{o6~K5*eiYR&tR-LQuA)wYhem=EtjGXp!EE=$y-vk6C?!-2kzpYb9#*!Ua< zdXyyJHu?p!&8@Bh|JvKHT-9+#77+sz`jxBXe=-9_D646H;wj_`m z@2wvhEFY^P4c8&-c->6Cf8WJrYCYY#goUBwbqo0ia|L1f?Y3%BxAWgNkMsF?T@A~$ zJ9Av4c9}w#jN<#AN^~*}j^eWC(9o~#g=x~LNwVsSzeONC;!aJa@DL_SBczj5>3h5q zCmQlg=%W>a%2XlK66ni~Hg@}m_UPz`-EVoW&Gxpx9HsEyP(jYZ+qvlpF6TFDM7$#9 zZrFgEdni7UW91n@LYz67DX=hbR?!|x_NSR)qK1!HYD*>J@u}|X& zC!s1ldH+!El&-tO+~=e0p&>mLyK|0Km$q*8=6`JQ0v{8S3#0A#=M27 zFUC?gKsZ1P^rRAL^6KX>7@&|T-lbLogqTiHIvD@xvs1hnxr+?v2ohT%)ODHk;w$5wtBQut5eo8^{zCu?1jd;<8dE)je%hoEn>Ul+s zl^xBQg%*AUG$%T4-X?bcuE+lOET@h%t17K)Ct`fH^fLy|0 z9!Tgl_|yg+pR0h~Mz_n~s;Mmmo>5Ki1$whP`Ye~AgNXyecVg+4qVTviMtU6C=%JCk zjY7wva$|9VcerFxX|AT4$W?l_l z2(AdqYGl7q$!T*3}XEv)qO#MG`zg#vv_bFIsA0ul)P*3AR3AE2}o*%B3~N*w3vO&YM-w zO>)~{i{>V!zSQEfKL5t0DbMky>zva(Ynl{AkIvNtIt;Hh;Q94*38Z^J$zuSJ`afiKa(z! z_}a?j3vKcF_~^e1p0u{decNgdOXm9z9g7 zXN;uVyJS|BR*Tgj7sEyhLhOzV_qq<}(M9H_k^Amr|n+scw} zpTBIe_`r|$O0scFjHyd~v95Hg@|C6sTz-1z=WaI2H?CqBA7_{@uSOM&VLVZk+!M0mEpbgjwYXn>Uu@T`0@HyhbIpGg3H%L zJ2G)HXzcy1*_S0;1jAcDQbYF-~s>d=+@8Se1i|_AcK@q{JeNZ+rN;@Nm9j(Sg zKlGrqZpb*c?=yn&DiLvqw(0+z+XRWfYCG4EIOi3iF$$TJh7x?$7pa(@C_RaL#zYNs zmXi3gsFDzB=zUofNsyD)4<^!IE2{-byF&goTxSlWLt)l-9E0!M*Io$tZs$wBTEF|5 zc|X)KQjIRCM6g($>I_k|AAgi%ZmmUQ4ACpOfcIugwxPvs#|(_iN7V(|s-> zH*h&x>k)Q{gg)Zy-!ltI>NgHy|K=eMu%8{;e%oJp#~kXR1Lf2U>cfHRb)3oKfYHU<`&7<^ua7#&XE ziJxyY@j`xJJWy6%d?OyfVcd_jkS!}pNcO*H{6x}& zii)_f=gh?48L5ZB2kE|m7X@@jD>^$R?s+|G?)Sg?mdc`Hap~#8+*R>RWp!=x?iXkH z{2ixrRio3Jbd3WvGO6zGPtM)c#}sNT3&5Z+ME)^8>@Qz@skJxbE3P2WvmgeajtjW>X_AwpfgP*mof>Srp2tC zDRDX7$ojW}U+EYD)7*Y4@rTd2K-fV-0|Xl{CXZh+FSao~Q(*NO(P@Mx9vu(n$XJ8m zPDAv*%5nq9V{|omPws&uOL=<~$H}GFPVzV7S@nyAN_E46VZwz}#LCA9>+>T3Is~4J zDsa$x9OOZWFfcFFHWgEnK&n+?=eTaOEm$-J08pj;!UYQ!x!GKm1ZH$duJTaYtUT(l z;SOxNO@0)K4h+edB2qY0(9W1aVi6{C`0}H+>f&&jiCF1c zBul)UQN%lH&{&pxNpAjw;f3cBEq+(Tt9) zz0?x3HXg)ZXiI)oUU_NKC~F98(Q3R4re*2+s9Oa5?le^BXiqNBJd>R`tzrAtV~?jn zy%Wi{R0O0pJ-hF)+jU&^8uANcJcIs((w(-xynk7IWZMXxCnyqC^^f&m$+FQp^nb`2eUUACPb=_kmxHkZwZ=r^ zyYhALS#0X|zACv^kiBIu{{%3bHcr(3){asB6RP#QiuNJYRvNK9OTGR-iCuWaG`wver=Al!S>mw7 zXi%l0fnq>9Y-bLi4%dTFb^3}Nn1P9qn=CSSkgn?=-^O=7xgATYN=her)zrDB4KNqJ z;8rwHr_zX;5@f^?Hn7i7=@mKrsN=fi$WZkSpbJ#BYp}Dbhp{jopKAWGXpJ$;O^(EHAd!F1ZQq+?FJdd&ENPj*^1KizuIy%0aN!-sIvMgR#3H@}Hs zHXAVasI4rB_D0REbxqQ}Oyt_7bKM6Xh9;SGiG2*6<^ zrw1`sLK?-z&=gexq$HKT7W$_zHS++a2!QsudQK?RomhCDXPm;edcXqG(wm6$k2f2w z^pbZn+khiX3$94Xipmi9N58A^`QouKC(yHCA#W;}a?*j}W~TY`0B6V|oe6np)1!gf zMvhFb!~hawsS^rLI>!-HQFL1Lm0(Z$xi;#9?h)?%%^^V44Jx&PathCTTG;}$KrNCc zz&se+6M-e=1jq5wGD!f$irb(SWy*R`{empvHX0&+QwhJ)aR#J)N5jzuc9f<9gEZKn zX)r*h5k|5%C*Tj)E$Ee;{}aTYOpMYiw#7ePkF=?%-UL;`{oxQyQ5clSNd2LYx6egli3}Ecq*aXI)Vyk> z7Tk7v;ai272HUXxaKML5{ct)zzr|ALH>On5KYC4 zR5mKXshK$(;>EYVJC|~Ad%B#&;E^J${J$RJfBh(dLY`-Cv6-N}0jGLrPPp2lvS)YE zEP|VH*nb0xre6PRQiolD`bAEiHL$hKp=1Htus`~! z`GUk0p_iXqBouGW8skXwb6EZdJ5SNA{#;|H@q2$dPdV#KU!tM5Xi0wWC$)-ImNl+h6| zybkMrJt*02O1-T`+fd^5wy}t2A0hRgLWk!50`G?R3zkkYa6*mAOb>G|!YON0np3n7 z%IMk>=Vr^1mzt--9RLS+j^AB|SfWnnLBGlN9X4P|hezG;BDgP4H2kKB=ELz+t_~A2 z{}k+y2&aet?!+BaQhP(}ESi&{A4pDCdqD_&jpa_;S#(?SSu_Bk$AA)iMc#WlBi+AQ zs$a-|J!KYFIvHZ-GAcvYA@WCl>7Ca79bH2R;Z@LXW*N%Ac0Kws z?)-^&G{!{Kz=r$~S`zPqXAl4#yW?FdqEkJ2Ru-J> zc>Xo}Q02-ZaPBhp8@T0P$x^|jX6=G;XONYOElk)vpQUnbr2tsTe&Ba45iBh9irZpX zzzJ06YLSm*p|~`q5zF_?4|h5og>YC%4nI0dLGHP=Ld=uKCsHjtlSQ4Q_8m~V@ug=R zsNGTeia;SsBL?=}%ADV@e6*|QmiCpM-c-CmnI1nFcU?{a!qFxqD`PNWr2~lpX z|6&i5oqmJydMw$c`7F?60)q$!_84YB(_u8{A*(rplj^Z}Wbm{fT+{s`ccIb2{7Y=; zJ>5y;>Rvcr+Mku@oCV*8J?YP;Bv;U1hv79#13; zT;3&O7LT@%gGeCz*@8;wQGNVhN3mFtBZ-pG6Ukz3h)zJk%P;&@{0fzU&9TJX@6f;* z_1#D4?YWRFV1c5!#F1U+5(-UN3hIJkz5KtWJZ3{@eNWd}!$XLx+tnXq`T93Xr5*JHq3Fw7o_* zo?j1kIr+8P@=p;Ea6Yxb8t>!P0{KEeOu3i7I6Xql z{gf^RA$=rtS6y*6mB*pfHK#)-HM;V5ts4ur&)L?;{P<&O1PA$@UxNzZe(j#fcMpb3 zuOx7$NO4xiQkTdQbwsx&)nX<%oZ4(S8`E%=xXh3seV& zp2L;Uo*-O*B&t`>{U{1+j|de32*k#p1;Ye{+*floIl?73QJ0NyZ&SZT|uLd*6ziSZGiy_8A6Qf3q95MlqVSu zr@SNwdN{&*rNFLpzM>`_#4u&O?=p6N!|YI~pQZBkw(3!rD^IP)4JyTlPgiVelYLM< zb^D3CH*g}wS_z3iHHs0ilt~els^WekxrqN4!E}eBmMbO>v^9)n#|@n~0ck1Wp$Brg*WNUtdY<_C2{!nlLkYEnrM} z2VLih)AH4`7?(PiO6WjDuako#KYNMRG8-o?P%Pme^3Jt&MyU{l^V~p8m2hEgE{76 zohZj4o2m(#w~g-8dBr-Vmi|W%lQs*PN5vlsC#D;_mG2=!-iP$7+aHYpQz4X%h^K+C z{qEaR$Xu$&d&>xifYz$?B~96JeDax?m&^5BJs5P7#PB+>2zx@A=kvvE>`u|84D9OqkV(9agO&yfsqiG}Aw4qIy3Gj15jMv}QMQ zz=)cH+}ZrbuC$x>Dm_WyTvO6DN9>^LV*AAMS@2xAAy7X<_Jrx@Ya0Ce!+Ki(a3do1A~0`zAIaeT#@xZY#;K2q7fCTMW)lFZQ4AJ9+@Lu9n2B_UH(L? zC)Wc&bEIuiGdY_;7&u&0LCRm3lyPci+wWie74Q2`D0+PXI-UYU3U!08h*4k1Af2`U z>gu%c2ap0mCgPQ%&bOEiMSVE)=Y#PH`WPto5de-DWP&G*9KCd6TpuGzSJ+sTuHy3~t;@IMpbOG737(vn-<5TK zhB-nwD2WW-p2t9SZCL@nS|s8(ngX|<-uxe5-sS;U*tukm^!1VOMMiJxbT%6*1TRK} z%5|e9;rWRf;PQZ7jz+SVijhqB283zGItWqsI{QUIQOUY34_mo$+7+aEBar@)Ts3pM zJZ_NH4%GwGHYp5hmT(wBTzdEiO(#OO_nOXmh~V7= z`jU%X02EwZ+yF`H7eBB2pp>yRN>cR1A-&FZ;waTX{=P6k?TQq@>8Z-d=Edc?69_2f z4{uTiflAPjeZxdkZ}0cZy@%zch%yRc>QD7n=m-q!sJ|jm+$vc-5ALT7wyr=7pv!tj zLR?c__5qQ3y#}TY0%qx^k0DkZ$DpdUl-K

cle$e*A6Pnu2JCfVB477X*&Ncmbrj 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 J6o?u4|38Ml-YWnA literal 234476 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 Date: Mon, 30 Jan 2023 18:26:21 +0000 Subject: [PATCH 20/21] Cleanup: elm-review --- TODO.md | 3 --- src/Board.elm | 8 +++++--- src/CollapsedColumns.elm | 1 - src/Page/Board.elm | 4 ++++ tests/CollapsedColumnsTests.elm | 2 +- 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/TODO.md b/TODO.md index 38898485..f8b6b48d 100644 --- a/TODO.md +++ b/TODO.md @@ -1,6 +1,3 @@ -- update readme - - new way to set column width with snippet - - need to update collapsed columns if columns are added or removed - set size in elm (resize_spike branch) diff --git a/src/Board.elm b/src/Board.elm index ee74a308..8f3712e2 100644 --- a/src/Board.elm +++ b/src/Board.elm @@ -6,7 +6,7 @@ module Board exposing import BoardConfig exposing (BoardConfig) import Card exposing (Card) -import CollapsedColumns +import CollapsedColumns exposing (CollapsedColumns) import Column exposing (Column) import ColumnNames exposing (ColumnNames) import DateBoardColumns exposing (DateBoardColumns) @@ -75,17 +75,19 @@ columns timeWithZone boardIndex (Board columnNames config taskList) = collapseColumns : BoardConfig -> List (Column Card) -> List (Column Card) collapseColumns config cols = let + collapsedColumns : CollapsedColumns collapsedColumns = BoardConfig.collapsedColumns config - foo index col = + performCollapse : Int -> Column Card -> Column Card + performCollapse index col = if CollapsedColumns.columnIsCollapsed index collapsedColumns then Column.collapseState True col else Column.collapseState False col in - List.indexedMap foo cols + List.indexedMap performCollapse cols filterTaskList : BoardConfig -> TaskList -> TaskList diff --git a/src/CollapsedColumns.elm b/src/CollapsedColumns.elm index 629a34a8..19a70715 100644 --- a/src/CollapsedColumns.elm +++ b/src/CollapsedColumns.elm @@ -7,7 +7,6 @@ module CollapsedColumns exposing , init ) -import List.Extra as LE import Set exposing (Set) import TsJson.Decode as TsDecode import TsJson.Encode as TsEncode diff --git a/src/Page/Board.elm b/src/Page/Board.elm index 296eec94..084ac6bc 100644 --- a/src/Page/Board.elm +++ b/src/Page/Board.elm @@ -93,6 +93,7 @@ update msg session = ToggleColumnCollapse columnIndex newState -> let + newSession : Session newSession = Session.updateColumnCollapse columnIndex newState session in @@ -260,6 +261,7 @@ selectedBoardView timeWithZone boardIndex board = columnView : Int -> TimeWithZone -> Column Card -> Html Msg columnView columnIndex timeWithZone column = let + columnCollapsedArrow : String columnCollapsedArrow = if Column.isCollapsed column then "arrow-down" @@ -267,6 +269,7 @@ columnView columnIndex timeWithZone column = else "arrow-right" + columnCollapsedClass : String columnCollapsedClass = if Column.isCollapsed column then " collapsed" @@ -274,6 +277,7 @@ columnView columnIndex timeWithZone column = else "" + columnCountString : String columnCountString = if Column.isCollapsed column then "(" ++ (String.fromInt <| List.length <| Column.items column) ++ ")" diff --git a/tests/CollapsedColumnsTests.elm b/tests/CollapsedColumnsTests.elm index 70bd5cdf..59e3ad07 100644 --- a/tests/CollapsedColumnsTests.elm +++ b/tests/CollapsedColumnsTests.elm @@ -2,7 +2,7 @@ module CollapsedColumnsTests exposing (suite) import CollapsedColumns import Expect -import Fuzz exposing (Fuzzer) +import Fuzz import Helpers.DecodeHelpers as DecodeHelpers import Test exposing (..) import TsJson.Encode as TsEncode From 2b1d2432d8bd796dcf7125cc4dba47e77e7608f1 Mon Sep 17 00:00:00 2001 From: rupert Date: Mon, 30 Jan 2023 18:36:25 +0000 Subject: [PATCH 21/21] Cleanup: update TODO --- TODO.md | 9 --------- 1 file changed, 9 deletions(-) diff --git a/TODO.md b/TODO.md index f8b6b48d..4fdeb442 100644 --- a/TODO.md +++ b/TODO.md @@ -1,12 +1,3 @@ -- need to update collapsed columns if columns are added or removed - -- set size in elm (resize_spike branch) - - don't resize columns when toggling collapse - only do this when re-sizing the window - - annoyingly Browser.onResize returns the size of the complete obsidian interface and - not just the CardBoard view controlled by elm... - - only need emSize once at start as it doesn't change - - what does it do with an empty config at start? - # Cleanups - simplify parsing as per typing tutor - replace regex stuff in TaskItem.toToggledSting with some form of token parsing