aboutsummaryrefslogtreecommitdiff
path: root/webgui
diff options
context:
space:
mode:
authorGregor Kleen <gkleen@yggdrasil.li>2016-02-25 14:07:03 +0100
committerGregor Kleen <gkleen@yggdrasil.li>2016-02-25 14:07:03 +0100
commita93837da703767b6a982ead94494df7c885b46f1 (patch)
treea06788f787f3d6ad8d241f299ac80e46b51ac91e /webgui
parenta204390c515048e5427198c15846d52eb806ae23 (diff)
downloadthermoprint-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')
-rw-r--r--webgui/data/index.html1
-rw-r--r--webgui/src/Main.hs21
2 files changed, 16 insertions, 6 deletions
diff --git a/webgui/data/index.html b/webgui/data/index.html
index d368fa5..3bdd047 100644
--- a/webgui/data/index.html
+++ b/webgui/data/index.html
@@ -25,6 +25,7 @@
25 <div class="tab-content"> 25 <div class="tab-content">
26 <div class="tab active" id="editor"> 26 <div class="tab active" id="editor">
27 <!-- <label id="titleLabel" for="editorTitle">Title</label> --> 27 <!-- <label id="titleLabel" for="editorTitle">Title</label> -->
28 <input id="saveDraft" type="checkbox" checked="checked" /><label for="saveDraft">Save as Draft</label>
28 <input id="editorTitle" /> 29 <input id="editorTitle" />
29 <textarea id="editorText"></textarea> 30 <textarea id="editorText"></textarea>
30 <span id="bbcodeStatus"></span> 31 <span id="bbcodeStatus"></span>
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
45import Text.Read hiding (get) 45import Text.Read hiding (get)
46import Data.Either 46import Data.Either
47import Data.List (isPrefixOf) 47import Data.List (isPrefixOf)
48import Data.Bool
48 49
49import Paths_thermoprint_webgui 50import 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