From 1dcc3941edf95d9dd2c86ec8d1c0409e894e8cc7 Mon Sep 17 00:00:00 2001
From: Eike Kettner <eike.kettner@posteo.de>
Date: Sun, 14 Feb 2021 23:18:18 +0100
Subject: [PATCH 1/7] Fix overflowing content in item cards

When displaying long lines this leads to horizontal scrolling the
complete item list.
---
 modules/webapp/src/main/elm/Comp/ItemCard.elm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/modules/webapp/src/main/elm/Comp/ItemCard.elm b/modules/webapp/src/main/elm/Comp/ItemCard.elm
index 973c5b22..2c440bf9 100644
--- a/modules/webapp/src/main/elm/Comp/ItemCard.elm
+++ b/modules/webapp/src/main/elm/Comp/ItemCard.elm
@@ -604,7 +604,7 @@ view2 cfg settings model item =
     in
     div
         ([ class cfg.extraClasses
-         , class "ds-item-card relative hover:shadow-lg rounded-lg flex flex-col"
+         , class "ds-item-card relative hover:shadow-lg rounded-lg flex flex-col break-all"
          , classList
             [ ( "border border-gray-400 dark:border-bluegray-600 dark:hover:border-bluegray-500", not (isMultiSelectMode cfg) )
             , ( "border-2 border-gray-800 border-dashed dark:border-lightblue-500", isMultiSelectMode cfg )

From 31cb8284a51faf47efc1ca48e519d6ad55659bec Mon Sep 17 00:00:00 2001
From: Eike Kettner <eike.kettner@posteo.de>
Date: Sun, 14 Feb 2021 23:22:37 +0100
Subject: [PATCH 2/7] Fix formatting icon in top nav bar

---
 modules/webapp/src/main/elm/App/View2.elm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/modules/webapp/src/main/elm/App/View2.elm b/modules/webapp/src/main/elm/App/View2.elm
index e2574422..dce4129b 100644
--- a/modules/webapp/src/main/elm/App/View2.elm
+++ b/modules/webapp/src/main/elm/App/View2.elm
@@ -84,12 +84,12 @@ topNavAnon model =
 headerNavItem : Model -> Html Msg
 headerNavItem model =
     a
-        [ class "font-bold hover:bg-blue-200 dark:hover:bg-bluegray-800 w-40 inline-flex items-center px-4"
+        [ class "inline-flex font-bold hover:bg-blue-200 dark:hover:bg-bluegray-800 items-center px-4"
         , Page.href HomePage
         ]
         [ img
             [ src (model.flags.config.docspellAssetPath ++ "/img/logo-96.png")
-            , class "h-full inline-block py-2 pr-2"
+            , class "w-9 h-9 mr-2 block"
             ]
             []
         , div [ class "" ]

From dec6148df6829ed63fb46e3fe2cab6269f75d826 Mon Sep 17 00:00:00 2001
From: Eike Kettner <eike.kettner@posteo.de>
Date: Sun, 14 Feb 2021 23:28:53 +0100
Subject: [PATCH 3/7] Hide field stats component if there is nothing to show

---
 modules/webapp/src/main/elm/Comp/SearchStatsView.elm | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/modules/webapp/src/main/elm/Comp/SearchStatsView.elm b/modules/webapp/src/main/elm/Comp/SearchStatsView.elm
index 3d37c6b2..6edab65d 100644
--- a/modules/webapp/src/main/elm/Comp/SearchStatsView.elm
+++ b/modules/webapp/src/main/elm/Comp/SearchStatsView.elm
@@ -152,7 +152,10 @@ view2 classes stats =
                     }
                 ]
             , div [ class "flex-grow" ]
-                [ table [ class "w-full text-sm" ]
+                [ table
+                    [ class "w-full text-sm"
+                    , classList [ ( "hidden", List.isEmpty fields ) ]
+                    ]
                     [ thead []
                         [ tr [ class "" ]
                             [ th [ class "py-2 text-left" ] []

From a10971607ec764f815d378717f9cdae79b2bb215 Mon Sep 17 00:00:00 2001
From: Eike Kettner <eike.kettner@posteo.de>
Date: Sun, 14 Feb 2021 23:34:18 +0100
Subject: [PATCH 4/7] Always show custom field dropdown in detail mode

Even if there are no custom fields define, the control is shown now.
The user can create a new one in this view.
---
 modules/webapp/src/main/elm/Comp/ItemDetail/EditForm.elm    | 2 +-
 .../webapp/src/main/elm/Comp/ItemDetail/FieldTabState.elm   | 6 ++++--
 .../webapp/src/main/elm/Comp/ItemDetail/MultiEditMenu.elm   | 2 +-
 3 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/modules/webapp/src/main/elm/Comp/ItemDetail/EditForm.elm b/modules/webapp/src/main/elm/Comp/ItemDetail/EditForm.elm
index 73c93ee4..f9af0250 100644
--- a/modules/webapp/src/main/elm/Comp/ItemDetail/EditForm.elm
+++ b/modules/webapp/src/main/elm/Comp/ItemDetail/EditForm.elm
@@ -425,5 +425,5 @@ tabState settings allNames model =
     in
     FTabState.tabState settings
         openTabs
-        model.customFieldsModel
+        Nothing
         (.title >> ToggleAkkordionTab)
diff --git a/modules/webapp/src/main/elm/Comp/ItemDetail/FieldTabState.elm b/modules/webapp/src/main/elm/Comp/ItemDetail/FieldTabState.elm
index e12abb06..8952f2b5 100644
--- a/modules/webapp/src/main/elm/Comp/ItemDetail/FieldTabState.elm
+++ b/modules/webapp/src/main/elm/Comp/ItemDetail/FieldTabState.elm
@@ -10,7 +10,7 @@ import Set exposing (Set)
 tabState :
     UiSettings
     -> Set String
-    -> Comp.CustomFieldMultiInput.Model
+    -> Maybe Comp.CustomFieldMultiInput.Model
     -> (TB.Tab msg -> msg)
     -> TB.Tab msg
     -> ( TB.State, msg )
@@ -35,7 +35,9 @@ tabState settings openTabs cfmodel toggle tab =
 
                 "Custom Fields" ->
                     isHidden Data.Fields.CustomFields
-                        || Comp.CustomFieldMultiInput.isEmpty cfmodel
+                        || (Maybe.map Comp.CustomFieldMultiInput.isEmpty cfmodel
+                                |> Maybe.withDefault False
+                           )
 
                 "Date" ->
                     isHidden Data.Fields.Date
diff --git a/modules/webapp/src/main/elm/Comp/ItemDetail/MultiEditMenu.elm b/modules/webapp/src/main/elm/Comp/ItemDetail/MultiEditMenu.elm
index 305e5df4..20fdde6f 100644
--- a/modules/webapp/src/main/elm/Comp/ItemDetail/MultiEditMenu.elm
+++ b/modules/webapp/src/main/elm/Comp/ItemDetail/MultiEditMenu.elm
@@ -1149,7 +1149,7 @@ tabState : UiSettings -> Model -> TB.Tab Msg -> ( TB.State, Msg )
 tabState settings model tab =
     FTabState.tabState settings
         model.openTabs
-        model.customFieldModel
+        (Just model.customFieldModel)
         (.title >> ToggleAkkordionTab)
         tab
 

From 9c90d7c4c20d1fb457eae090370fd705e46ca426 Mon Sep 17 00:00:00 2001
From: Eike Kettner <eike.kettner@posteo.de>
Date: Mon, 15 Feb 2021 00:10:38 +0100
Subject: [PATCH 5/7] Fix min height of tag area in detail

This avoids "nervous/noisy" ui flickering when changing between items
where one has no tags/fields to show.
---
 .../src/main/elm/Comp/ItemDetail/ItemInfoHeader.elm  | 12 +++++-------
 modules/webapp/src/main/styles/index.css             |  7 +++++++
 2 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/modules/webapp/src/main/elm/Comp/ItemDetail/ItemInfoHeader.elm b/modules/webapp/src/main/elm/Comp/ItemDetail/ItemInfoHeader.elm
index 0dfbfc60..30e11f49 100644
--- a/modules/webapp/src/main/elm/Comp/ItemDetail/ItemInfoHeader.elm
+++ b/modules/webapp/src/main/elm/Comp/ItemDetail/ItemInfoHeader.elm
@@ -149,16 +149,14 @@ view settings model =
                 ]
                 |> List.map Tuple.first
             )
-        , div [ class "font-semibold mb-2 mt-3 pr-3" ]
-            (renderTagsAndFields settings model)
+        , renderTagsAndFields settings model
         ]
 
 
-renderTagsAndFields : UiSettings -> Model -> List (Html Msg)
+renderTagsAndFields : UiSettings -> Model -> Html Msg
 renderTagsAndFields settings model =
-    [ div [ class "flex flex-row flex-wrap items-center sm:justify-end" ]
+    div [ class "flex flex-row flex-wrap items-center font-semibold sm:justify-end mt-1 min-h-7" ]
         (renderTags settings model ++ renderCustomValues settings model)
-    ]
 
 
 renderTags : UiSettings -> Model -> List (Html Msg)
@@ -167,7 +165,7 @@ renderTags settings model =
         tagView t =
             Comp.LinkTarget.makeTagLink
                 (IdName t.id t.name)
-                [ ( "label inline-flex ml-2 hover:opacity-90 mt-1 items-center", True )
+                [ ( "label md:text-sm inline-flex ml-2 hover:opacity-90 mt-1 items-center", True )
                 , ( Data.UiSettings.tagColorString2 t settings, True )
                 ]
                 SetLinkTarget
@@ -185,7 +183,7 @@ renderCustomValues settings model =
         fieldView cv =
             Comp.LinkTarget.makeCustomFieldLink2
                 cv
-                [ ( "ml-2 hover:opacity-90 mt-1 " ++ S.basicLabel, True ) ]
+                [ ( "ml-2 md:text-sm hover:opacity-90 mt-1 " ++ S.basicLabel, True ) ]
                 SetLinkTarget
 
         labelThenName cv =
diff --git a/modules/webapp/src/main/styles/index.css b/modules/webapp/src/main/styles/index.css
index fff467a3..165ca2cd 100644
--- a/modules/webapp/src/main/styles/index.css
+++ b/modules/webapp/src/main/styles/index.css
@@ -120,6 +120,13 @@
         z-index: 35;
     }
 
+    @variants responsive {
+        .min-h-7 {
+            min-height: 1.75rem;
+        }
+
+    }
+
     .scrollbar-none {
         -ms-overflow-style: none;  /* IE and Edge */
         scrollbar-width: none;  /* Firefox */

From 07edaaaf5e7a3f848c8020258bdf9fd6ab2c6c88 Mon Sep 17 00:00:00 2001
From: Eike Kettner <eike.kettner@posteo.de>
Date: Mon, 15 Feb 2021 00:11:37 +0100
Subject: [PATCH 6/7] Try fix attachment selection for firefox

It works great in chromium, in firefox the border is a bit off.
---
 .../webapp/src/main/elm/Comp/ItemDetail/SingleAttachment.elm  | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/modules/webapp/src/main/elm/Comp/ItemDetail/SingleAttachment.elm b/modules/webapp/src/main/elm/Comp/ItemDetail/SingleAttachment.elm
index f3d790fc..63ec841b 100644
--- a/modules/webapp/src/main/elm/Comp/ItemDetail/SingleAttachment.elm
+++ b/modules/webapp/src/main/elm/Comp/ItemDetail/SingleAttachment.elm
@@ -312,7 +312,7 @@ menuItem model pos attach =
             , ( "dark:border-bluegray-600", pos /= 0 )
             ]
                 ++ highlight
-         , class "block flex-col relative border rounded px-1 py-1 mr-2"
+         , class "flex flex-col relative border rounded px-1 py-1 mr-2"
          , class " hover:shadow dark:hover:border-bluegray-500"
          , href "#"
          , onClick (SetActiveAttachment pos)
@@ -328,7 +328,7 @@ menuItem model pos attach =
             ]
             [ i [ class "fa fa-check-circle ml-1" ] []
             ]
-        , div [ class "" ]
+        , div [ class "flex-grow" ]
             [ img
                 [ src (Api.attachmentPreviewURL attach.id)
                 , class "block w-20 mx-auto"

From 64bacb665ae3b358b7fb6fcc73383c05714b45e2 Mon Sep 17 00:00:00 2001
From: Eike Kettner <eike.kettner@posteo.de>
Date: Mon, 15 Feb 2021 00:27:46 +0100
Subject: [PATCH 7/7] Show queue counts in side menu

---
 .../webapp/src/main/elm/Page/Queue/View2.elm  | 41 ++++++++++++++++---
 1 file changed, 35 insertions(+), 6 deletions(-)

diff --git a/modules/webapp/src/main/elm/Page/Queue/View2.elm b/modules/webapp/src/main/elm/Page/Queue/View2.elm
index 28f4f6f8..a59534b4 100644
--- a/modules/webapp/src/main/elm/Page/Queue/View2.elm
+++ b/modules/webapp/src/main/elm/Page/Queue/View2.elm
@@ -18,6 +18,26 @@ import Util.Time exposing (formatDateTime, formatIsoDateTime)
 viewSidebar : Bool -> Flags -> UiSettings -> Model -> Html Msg
 viewSidebar visible _ _ model =
     let
+        count v =
+            case v of
+                CurrentJobs ->
+                    List.length model.state.progress
+
+                QueueAll ->
+                    List.length model.state.queued
+                        + List.length model.state.completed
+
+                QueueWaiting ->
+                    List.length model.state.queued
+
+                QueueSuccess ->
+                    filterJobDetails model.state.completed "success"
+                        |> List.length
+
+                QueueError ->
+                    filterJobDetails model.state.completed "failed"
+                        |> List.length
+
         tabLink cls v icon label =
             a
                 [ href "#"
@@ -28,9 +48,12 @@ viewSidebar visible _ _ model =
                 ]
                 [ i [ class icon ]
                     []
-                , span
+                , div
                     [ class "ml-3" ]
                     [ text label ]
+                , div [ class "ml-auto bg-gray-200 border rounded-full h-6 w-6 flex items-center justify-center text-xs dark:bg-bluegray-800 dark:text-bluegray-200 dark:border-bluegray-800 dark:bg-opacity-50" ]
+                    [ count v |> String.fromInt |> text
+                    ]
                 ]
     in
     div
@@ -60,9 +83,6 @@ viewContent _ _ model =
         gridStyle =
             "grid gap-4 grid-cols-1 md:grid-cols-2"
 
-        isState state job =
-            state == job.state
-
         message str =
             div [ class "h-28 flex flex-col items-center justify-center w-full" ]
                 [ div [ class S.header2 ]
@@ -110,7 +130,7 @@ viewContent _ _ model =
             QueueError ->
                 let
                     items =
-                        List.filter (isState "failed") model.state.completed
+                        filterJobDetails model.state.completed "failed"
                 in
                 if List.isEmpty items then
                     message "No failed jobs to display."
@@ -122,7 +142,7 @@ viewContent _ _ model =
             QueueSuccess ->
                 let
                     items =
-                        List.filter (isState "success") model.state.completed
+                        filterJobDetails model.state.completed "success"
                 in
                 if List.isEmpty items then
                     message "No succesfull jobs to display."
@@ -133,6 +153,15 @@ viewContent _ _ model =
         ]
 
 
+filterJobDetails : List JobDetail -> String -> List JobDetail
+filterJobDetails list state =
+    let
+        isState job =
+            state == job.state
+    in
+    List.filter isState list
+
+
 renderJobLog : JobDetail -> Html Msg
 renderJobLog job =
     div