Basic ui for addons

This commit is contained in:
eikek
2022-05-08 14:01:41 +02:00
parent 7fdd78ad06
commit 73747c4ea3
33 changed files with 2881 additions and 13 deletions

View 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

View File

@ -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

View File

@ -38,6 +38,7 @@ type alias Config =
, downloadAllMaxFiles : Int
, downloadAllMaxSize : Int
, openIdAuth : List OpenIdAuth
, addonsEnabled : Bool
}

View File

@ -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"

View File

@ -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)