diff options
| author | Gregor Kleen <gkleen@yggdrasil.li> | 2016-02-25 14:07:03 +0100 | 
|---|---|---|
| committer | Gregor Kleen <gkleen@yggdrasil.li> | 2016-02-25 14:07:03 +0100 | 
| commit | a93837da703767b6a982ead94494df7c885b46f1 (patch) | |
| tree | a06788f787f3d6ad8d241f299ac80e46b51ac91e /webgui/src | |
| parent | a204390c515048e5427198c15846d52eb806ae23 (diff) | |
| download | thermoprint-a93837da703767b6a982ead94494df7c885b46f1.tar thermoprint-a93837da703767b6a982ead94494df7c885b46f1.tar.gz thermoprint-a93837da703767b6a982ead94494df7c885b46f1.tar.bz2 thermoprint-a93837da703767b6a982ead94494df7c885b46f1.tar.xz thermoprint-a93837da703767b6a982ead94494df7c885b46f1.zip  | |
Checkbox to disable autosave
Diffstat (limited to 'webgui/src')
| -rw-r--r-- | webgui/src/Main.hs | 21 | 
1 files changed, 15 insertions, 6 deletions
diff --git a/webgui/src/Main.hs b/webgui/src/Main.hs index dde6eb1..cbb1a75 100644 --- a/webgui/src/Main.hs +++ b/webgui/src/Main.hs  | |||
| @@ -45,6 +45,7 @@ import Data.Monoid | |||
| 45 | import Text.Read hiding (get) | 45 | import Text.Read hiding (get) | 
| 46 | import Data.Either | 46 | import Data.Either | 
| 47 | import Data.List (isPrefixOf) | 47 | import Data.List (isPrefixOf) | 
| 48 | import Data.Bool | ||
| 48 | 49 | ||
| 49 | import Paths_thermoprint_webgui | 50 | import Paths_thermoprint_webgui | 
| 50 | 51 | ||
| @@ -147,6 +148,10 @@ setup Config{..} window (split -> (socketErr, dataUpdate)) = void $ do | |||
| 147 | 148 | ||
| 148 | (editorStatus, fmap liftIO -> changeEditorStatus) <- stepper' def | 149 | (editorStatus, fmap liftIO -> changeEditorStatus) <- stepper' def | 
| 149 | 150 | ||
| 151 | saveDraft <- do | ||
| 152 | saveDraft <- fatal' "Could not find save switch" =<< getElementById window "saveDraft" | ||
| 153 | flip stepper (UI.checkedChange saveDraft) =<< saveDraft # get UI.checked | ||
| 154 | |||
| 150 | let | 155 | let | 
| 151 | modifyStatus f = changeEditorStatus . f =<< currentValue editorStatus | 156 | modifyStatus f = changeEditorStatus . f =<< currentValue editorStatus | 
| 152 | 157 | ||
| @@ -186,10 +191,11 @@ setup Config{..} window (split -> (socketErr, dataUpdate)) = void $ do | |||
| 186 | when' :: Applicative m => Bool -> m a -> m (Maybe a) | 191 | when' :: Applicative m => Bool -> m a -> m (Maybe a) | 
| 187 | when' True = fmap Just | 192 | when' True = fmap Just | 
| 188 | when' False = const $ pure Nothing | 193 | when' False = const $ pure Nothing | 
| 189 | discardAction = do | 194 | clearAction = do | 
| 190 | -- maybe (return ()) draftDelete . associatedDraft =<< currentValue editorStatus | 195 | -- maybe (return ()) draftDelete . associatedDraft =<< currentValue editorStatus | 
| 191 | saved <- saveAction False | 196 | saved <- saveAction False | 
| 192 | when saved $ modifyStatus $ const def | 197 | when saved $ discardAction | 
| 198 | discardAction = modifyStatus $ const def | ||
| 193 | printAction = do | 199 | printAction = do | 
| 194 | EditorState{..} <- currentValue editorStatus | 200 | EditorState{..} <- currentValue editorStatus | 
| 195 | case ePrintout of | 201 | case ePrintout of | 
| @@ -201,15 +207,18 @@ setup Config{..} window (split -> (socketErr, dataUpdate)) = void $ do | |||
| 201 | runFunction . focusJob =<< jobCreate Nothing po -- FIXME | 207 | runFunction . focusJob =<< jobCreate Nothing po -- FIXME | 
| 202 | Left err -> emitError $ "Could not print draft due to error parsing bbcode: " ++ show err | 208 | Left err -> emitError $ "Could not print draft due to error parsing bbcode: " ++ show err | 
| 203 | 209 | ||
| 204 | onEvent (tick autoSaveTimer) (const . void $ saveAction True) | 210 | onEvent (whenE saveDraft $ tick autoSaveTimer) (const . void $ saveAction True) | 
| 205 | 211 | ||
| 206 | return saveButton # sink UI.enabled (saveable <$> editorStatus) | 212 | return saveButton # sink UI.enabled ((&&) <$> (saveable <$> editorStatus) <*> saveDraft) | 
| 207 | return printButton # sink UI.enabled (printable <$> editorStatus) | 213 | return printButton # sink UI.enabled (printable <$> editorStatus) | 
| 208 | return discardButton # sink UI.enabled (discardable <$> editorStatus) | 214 | return discardButton # sink UI.enabled (discardable <$> editorStatus) | 
| 209 | 215 | ||
| 210 | on UI.click saveButton . const . void $ saveAction False | 216 | return discardButton # sink UI.text (bool "Discard" "Save & Clear" <$> saveDraft) | 
| 217 | |||
| 218 | on (whenE saveDraft . UI.click) saveButton . const . void $ saveAction False | ||
| 211 | on UI.click printButton $ const printAction | 219 | on UI.click printButton $ const printAction | 
| 212 | on UI.click discardButton $ const discardAction | 220 | on (whenE (not <$> saveDraft) . UI.click) discardButton $ const discardAction | 
| 221 | on (whenE saveDraft . UI.click) discardButton $ const clearAction | ||
| 213 | 222 | ||
| 214 | return modifyStatus | 223 | return modifyStatus | 
| 215 | 224 | ||
