mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-06-04 06:05:59 +00:00
218 lines
7.2 KiB
Elm
218 lines
7.2 KiB
Elm
module Page.CollectiveSettings.View exposing (view)
|
|
|
|
import Api.Model.NameCount exposing (NameCount)
|
|
import Comp.Settings
|
|
import Comp.SourceManage
|
|
import Comp.UserManage
|
|
import Data.Flags exposing (Flags)
|
|
import Html exposing (..)
|
|
import Html.Attributes exposing (..)
|
|
import Html.Events exposing (onClick)
|
|
import Page.CollectiveSettings.Data exposing (..)
|
|
import Util.Html exposing (classActive)
|
|
import Util.Maybe
|
|
import Util.Size
|
|
|
|
|
|
view : Flags -> Model -> Html Msg
|
|
view flags model =
|
|
div [ class "collectivesetting-page ui padded grid" ]
|
|
[ div [ class "sixteen wide mobile four wide tablet four wide computer column" ]
|
|
[ h4 [ class "ui top attached ablue-comp header" ]
|
|
[ text "Collective"
|
|
]
|
|
, div [ class "ui attached fluid segment" ]
|
|
[ div [ class "ui fluid vertical secondary menu" ]
|
|
[ div
|
|
[ classActive (model.currentTab == Just InsightsTab) "link icon item"
|
|
, onClick (SetTab InsightsTab)
|
|
]
|
|
[ i [ class "chart bar outline icon" ] []
|
|
, text "Insights"
|
|
]
|
|
, div
|
|
[ classActive (model.currentTab == Just SourceTab) "link icon item"
|
|
, onClick (SetTab SourceTab)
|
|
]
|
|
[ i [ class "upload icon" ] []
|
|
, text "Sources"
|
|
]
|
|
, div
|
|
[ classActive (model.currentTab == Just SettingsTab) "link icon item"
|
|
, onClick (SetTab SettingsTab)
|
|
]
|
|
[ i [ class "language icon" ] []
|
|
, text "Document Language"
|
|
]
|
|
, div
|
|
[ classActive (model.currentTab == Just UserTab) "link icon item"
|
|
, onClick (SetTab UserTab)
|
|
]
|
|
[ i [ class "user icon" ] []
|
|
, text "Users"
|
|
]
|
|
]
|
|
]
|
|
]
|
|
, div [ class "sixteen wide mobile twelve wide tablet twelve wide computer column" ]
|
|
[ div [ class "" ]
|
|
(case model.currentTab of
|
|
Just SourceTab ->
|
|
viewSources flags model
|
|
|
|
Just UserTab ->
|
|
viewUsers model
|
|
|
|
Just InsightsTab ->
|
|
viewInsights model
|
|
|
|
Just SettingsTab ->
|
|
viewSettings model
|
|
|
|
Nothing ->
|
|
[]
|
|
)
|
|
]
|
|
]
|
|
|
|
|
|
viewInsights : Model -> List (Html Msg)
|
|
viewInsights model =
|
|
[ h1 [ class "ui header" ]
|
|
[ i [ class "chart bar outline icon" ] []
|
|
, div [ class "content" ]
|
|
[ text "Insights"
|
|
]
|
|
]
|
|
, div [ class "ui basic blue segment" ]
|
|
[ h4 [ class "ui header" ]
|
|
[ text "Items"
|
|
]
|
|
, div [ class "ui statistics" ]
|
|
[ div [ class "ui statistic" ]
|
|
[ div [ class "value" ]
|
|
[ String.fromInt (model.insights.incomingCount + model.insights.outgoingCount) |> text
|
|
]
|
|
, div [ class "label" ]
|
|
[ text "Items"
|
|
]
|
|
]
|
|
, div [ class "ui statistic" ]
|
|
[ div [ class "value" ]
|
|
[ String.fromInt model.insights.incomingCount |> text
|
|
]
|
|
, div [ class "label" ]
|
|
[ text "Incoming"
|
|
]
|
|
]
|
|
, div [ class "ui statistic" ]
|
|
[ div [ class "value" ]
|
|
[ String.fromInt model.insights.outgoingCount |> text
|
|
]
|
|
, div [ class "label" ]
|
|
[ text "Outgoing"
|
|
]
|
|
]
|
|
]
|
|
]
|
|
, div [ class "ui basic blue segment" ]
|
|
[ h4 [ class "ui header" ]
|
|
[ text "Size"
|
|
]
|
|
, div [ class "ui statistics" ]
|
|
[ div [ class "ui statistic" ]
|
|
[ div [ class "value" ]
|
|
[ toFloat model.insights.itemSize |> Util.Size.bytesReadable Util.Size.B |> text
|
|
]
|
|
, div [ class "label" ]
|
|
[ text "Size"
|
|
]
|
|
]
|
|
]
|
|
]
|
|
, div [ class "ui basic blue segment" ]
|
|
[ h4 [ class "ui header" ]
|
|
[ text "Tags"
|
|
]
|
|
, div [ class "ui statistics" ]
|
|
(List.map makeTagStats model.insights.tagCloud.items)
|
|
]
|
|
]
|
|
|
|
|
|
makeTagStats : NameCount -> Html Msg
|
|
makeTagStats nc =
|
|
div [ class "ui statistic" ]
|
|
[ div [ class "value" ]
|
|
[ String.fromInt nc.count |> text
|
|
]
|
|
, div [ class "label" ]
|
|
[ text nc.name
|
|
]
|
|
]
|
|
|
|
|
|
viewSources : Flags -> Model -> List (Html Msg)
|
|
viewSources flags model =
|
|
[ h2 [ class "ui header" ]
|
|
[ i [ class "ui upload icon" ] []
|
|
, div [ class "content" ]
|
|
[ text "Sources"
|
|
]
|
|
]
|
|
, Html.map SourceMsg (Comp.SourceManage.view flags model.sourceModel)
|
|
]
|
|
|
|
|
|
viewUsers : Model -> List (Html Msg)
|
|
viewUsers model =
|
|
[ h2 [ class "ui header" ]
|
|
[ i [ class "ui user icon" ] []
|
|
, div [ class "content" ]
|
|
[ text "Users"
|
|
]
|
|
]
|
|
, Html.map UserMsg (Comp.UserManage.view model.userModel)
|
|
]
|
|
|
|
|
|
viewSettings : Model -> List (Html Msg)
|
|
viewSettings model =
|
|
[ div [ class "ui grid" ]
|
|
[ div [ class "row" ]
|
|
[ div [ class "sixteen wide colum" ]
|
|
[ h2 [ class "ui header" ]
|
|
[ i [ class "ui language icon" ] []
|
|
, div [ class "content" ]
|
|
[ text "Document Language"
|
|
]
|
|
]
|
|
]
|
|
]
|
|
, div [ class "row" ]
|
|
[ div [ class "six wide column" ]
|
|
[ div [ class "ui basic segment" ]
|
|
[ text "The language of your documents. This helps text recognition (OCR) and text analysis."
|
|
]
|
|
]
|
|
]
|
|
, div [ class "row" ]
|
|
[ div [ class "six wide column" ]
|
|
[ Html.map SettingsMsg (Comp.Settings.view model.settingsModel)
|
|
, div
|
|
[ classList
|
|
[ ( "ui message", True )
|
|
, ( "hidden", Util.Maybe.isEmpty model.submitResult )
|
|
, ( "success", Maybe.map .success model.submitResult |> Maybe.withDefault False )
|
|
, ( "error", Maybe.map .success model.submitResult |> Maybe.map not |> Maybe.withDefault False )
|
|
]
|
|
]
|
|
[ Maybe.map .message model.submitResult
|
|
|> Maybe.withDefault ""
|
|
|> text
|
|
]
|
|
]
|
|
]
|
|
]
|
|
]
|