mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-06-22 18:38:26 +00:00
Basic ui for addons
This commit is contained in:
59
modules/webapp/src/main/elm/Data/AddonTrigger.elm
Normal file
59
modules/webapp/src/main/elm/Data/AddonTrigger.elm
Normal file
@ -0,0 +1,59 @@
|
||||
{-
|
||||
Copyright 2020 Eike K. & Contributors
|
||||
|
||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
-}
|
||||
|
||||
|
||||
module Data.AddonTrigger exposing (..)
|
||||
|
||||
-- A copy of docspell.addons.AddonTrigger.scala
|
||||
|
||||
|
||||
type AddonTrigger
|
||||
= FinalProcessItem
|
||||
| FinalReprocessItem
|
||||
| Scheduled
|
||||
| ExistingItem
|
||||
|
||||
|
||||
all : List AddonTrigger
|
||||
all =
|
||||
[ FinalProcessItem
|
||||
, FinalReprocessItem
|
||||
, Scheduled
|
||||
, ExistingItem
|
||||
]
|
||||
|
||||
|
||||
asString : AddonTrigger -> String
|
||||
asString t =
|
||||
case t of
|
||||
FinalProcessItem ->
|
||||
"final-process-item"
|
||||
|
||||
FinalReprocessItem ->
|
||||
"final-reprocess-item"
|
||||
|
||||
Scheduled ->
|
||||
"scheduled"
|
||||
|
||||
ExistingItem ->
|
||||
"existing-item"
|
||||
|
||||
|
||||
fromString : String -> Maybe AddonTrigger
|
||||
fromString s =
|
||||
let
|
||||
name =
|
||||
String.toLower s
|
||||
|
||||
x =
|
||||
List.filter (\e -> asString e == name) all
|
||||
in
|
||||
List.head x
|
||||
|
||||
|
||||
fromList : List String -> List AddonTrigger
|
||||
fromList list =
|
||||
List.filterMap fromString list
|
@ -8,6 +8,7 @@
|
||||
module Data.CalEvent exposing
|
||||
( CalEvent
|
||||
, everyMonth
|
||||
, everyMonthTz
|
||||
, fromEvent
|
||||
, makeEvent
|
||||
)
|
||||
@ -29,7 +30,12 @@ type alias CalEvent =
|
||||
|
||||
everyMonth : CalEvent
|
||||
everyMonth =
|
||||
CalEvent Nothing "*" "*" "01" "00" "00" Data.TimeZone.utc
|
||||
everyMonthTz Data.TimeZone.utc
|
||||
|
||||
|
||||
everyMonthTz : TimeZone -> CalEvent
|
||||
everyMonthTz tz =
|
||||
CalEvent Nothing "*" "*" "01" "00" "00" tz
|
||||
|
||||
|
||||
makeEvent : CalEvent -> String
|
||||
|
@ -38,6 +38,7 @@ type alias Config =
|
||||
, downloadAllMaxFiles : Int
|
||||
, downloadAllMaxSize : Int
|
||||
, openIdAuth : List OpenIdAuth
|
||||
, addonsEnabled : Bool
|
||||
}
|
||||
|
||||
|
||||
|
@ -8,6 +8,8 @@
|
||||
module Data.Icons exposing
|
||||
( addFiles2
|
||||
, addFilesIcon2
|
||||
, addonIcon
|
||||
, addonRunConfigIcon
|
||||
, concerned
|
||||
, concerned2
|
||||
, concernedIcon
|
||||
@ -76,7 +78,7 @@ module Data.Icons exposing
|
||||
)
|
||||
|
||||
import Data.CustomFieldType exposing (CustomFieldType)
|
||||
import Html exposing (Html, i, img)
|
||||
import Html exposing (Html, div, i, img, span)
|
||||
import Html.Attributes exposing (class, src)
|
||||
import Svg
|
||||
import Svg.Attributes as SA
|
||||
@ -265,6 +267,24 @@ customFieldIcon2 classes =
|
||||
i [ class (customField2 ++ " " ++ classes) ] []
|
||||
|
||||
|
||||
addon : String
|
||||
addon =
|
||||
"fa fa-puzzle-piece"
|
||||
|
||||
|
||||
addonIcon : String -> Html msg
|
||||
addonIcon classes =
|
||||
i [ class (addon ++ " " ++ classes) ] []
|
||||
|
||||
|
||||
addonRunConfigIcon : String -> Html msg
|
||||
addonRunConfigIcon classes =
|
||||
div [ class (classes ++ " inline-block relative margin-auto leading-8") ]
|
||||
[ i [ class "fa fa-puzzle-piece" ] []
|
||||
, i [ class "fa fa-play font-bold absolute text-xs -right-2 top-0" ] []
|
||||
]
|
||||
|
||||
|
||||
search : String
|
||||
search =
|
||||
"fa fa-search"
|
||||
|
@ -5,15 +5,34 @@
|
||||
-}
|
||||
|
||||
|
||||
module Data.ServerEvent exposing (ServerEvent(..), decode)
|
||||
module Data.ServerEvent exposing (AddonInfo, ServerEvent(..), decode)
|
||||
|
||||
import Json.Decode as D
|
||||
import Json.Decode.Pipeline as P
|
||||
|
||||
|
||||
type ServerEvent
|
||||
= JobSubmitted String
|
||||
| JobDone String
|
||||
| JobsWaiting Int
|
||||
| AddonInstalled AddonInfo
|
||||
|
||||
|
||||
type alias AddonInfo =
|
||||
{ success : Bool
|
||||
, addonId : Maybe String
|
||||
, addonUrl : Maybe String
|
||||
, message : String
|
||||
}
|
||||
|
||||
|
||||
addonInfoDecoder : D.Decoder AddonInfo
|
||||
addonInfoDecoder =
|
||||
D.succeed AddonInfo
|
||||
|> P.required "success" D.bool
|
||||
|> P.optional "addonId" (D.maybe D.string) Nothing
|
||||
|> P.optional "addonUrl" (D.maybe D.string) Nothing
|
||||
|> P.required "message" D.string
|
||||
|
||||
|
||||
decoder : D.Decoder ServerEvent
|
||||
@ -43,5 +62,9 @@ decodeTag tag =
|
||||
D.field "content" D.int
|
||||
|> D.map JobsWaiting
|
||||
|
||||
"addon-installed" ->
|
||||
D.field "content" addonInfoDecoder
|
||||
|> D.map AddonInstalled
|
||||
|
||||
_ ->
|
||||
D.fail ("Unknown tag: " ++ tag)
|
||||
|
Reference in New Issue
Block a user