packages feed

toodles 0.1.0.5 → 0.1.0.6

raw patch · 5 files changed

+52/−8 lines, 5 files

Files

app/Main.hs view
@@ -5,7 +5,7 @@ {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeOperators       #-} --- TODO(avi|p=3|#cleanup) - break this into modules+-- TODO(avi|p=3|#cleanup|key=val|k3y=asdf) - break this into modules module Main where  import qualified Control.Exception          as E@@ -71,6 +71,7 @@   { editIds     :: [Integer]   , setAssignee :: Maybe T.Text   , addTags     :: [T.Text]+  , addKeyVals  :: [(T.Text, T.Text)]   , setPriority :: Maybe Integer   } deriving (Show, Generic) @@ -208,7 +209,10 @@             else assignee entry           newPriority = if isJust (setPriority editRequest) then setPriority editRequest else priority entry in -        entry {assignee = newAssignee, tags = tags entry ++ addTags editRequest, priority = newPriority}+        entry {assignee = newAssignee,+               tags = tags entry ++ addTags editRequest,+               priority = newPriority,+               customAttributes = nub $ customAttributes entry ++ addKeyVals editRequest}      recordUpdates :: MonadIO m => TodoEntry -> m ()     recordUpdates t = void $ updateTodoLinesInFile renderTodo t
toodles.cabal view
@@ -2,10 +2,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: c6c9747348f5840600bc60ca50371441531f0a8aeb8866276836eb133141353a+-- hash: 770bcef8fdc02da5e012a221275957c0f7b87d287968aa1806ed5ddd1c1c3746  name:           toodles-version:        0.1.0.5+version:        0.1.0.6 synopsis:       Manage the TODO entries in your code description:    See the README on GitHub at <https://github.com/aviaviavi/toodles#readme> category:       Project Management
web/css/toodles.css view
@@ -132,3 +132,7 @@ .toodles-nav-title-text {     padding-left: 5px; }++.input-error {+    color: red;+}
web/html/index.html view
@@ -59,24 +59,33 @@                     <div class="field edit-todo-field-input">                         <label class="label">Set Assignee</label>                         <div class="control">-                            <input class="input" type="text" placeholder="Assignee" v-model="setAssignee">+                            <input class="input" type="text" placeholder="Assignee" v-model="setAssignee" @keyup.enter="submitTodoEdits">                         </div>                     </div>                      <div class="field edit-todo-field-input">                         <label class="label">Add Tag (comma separated)</label>                         <div class="control">-                            <input class="input" type="text" placeholder="#bug,#techdebt,..." v-model="addTags">+                            <input class="input" type="text" placeholder="#bug,#techdebt,..." v-model="addTags" @keyup.enter="submitTodoEdits">                         </div>                     </div>                      <div class="field edit-todo-field-input">+                        <label class="label">Add Custom Attributes (comma separated)</label>+                        <div class="input-error key-val-parse-error" v-show="addKeyValParseError">Parse error, check your formatting and try again</div>+                        <div class="control">+                            <input class="input" type="text" placeholder="key1:val1,key2:val2,..." v-model="addKeyVals" @keyup.enter="submitTodoEdits">+                        </div>+                    </div>++                    <div class="field edit-todo-field-input">                         <label class="label">Set Priority</label>                         <div class="control">-                            <input class="input" type="number" placeholder="Number" v-model="setPriority">+                            <input class="input" type="number" placeholder="Number" v-model="setPriority" @keyup.enter="submitTodoEdits">                         </div>                     </div> +                    <div class="input-error nothing-filled-error" v-show="nothingFilledError">Add some changes before submitting</div>                     <button class="button is-primary submit-todo-edits" v-on:click="submitTodoEdits">Submit</button>                 </div>             </div>
web/js/app.js view
@@ -14,6 +14,9 @@         addTags: "",         setPriority: null,         lastSortField: null,+        addKeyVals: "",+        addKeyValParseError: false,+        nothingFilledError: false,       }     },     created: function() {@@ -167,6 +170,23 @@       },        submitTodoEdits: function(){+        this.keyValParseError = false+        this.nothingFilledError = false++        if (!(this.addKeyVals || this.setAssignee || this.setPriority || this.addTags)) {+          this.nothingFilledError = true+          return+        }+        const keyVals =+              this.addKeyVals.trim() === "" ?+              [] :+              this.addKeyVals.split(",").map(p => p.split(":").map(t => t.trim()))+        const keyValError = keyVals.some(p => p && p.length !== 2)+        if (keyValError) {+          this.addKeyValParseError = true+          return+        }+         $.ajax({           url: "/todos/edit",           type: "POST",@@ -182,7 +202,8 @@                   "#" + tag                }),-            setPriority: parseInt(this.setPriority)+            setPriority: parseInt(this.setPriority),+            addKeyVals: keyVals,           }),           success: function(data){             this.todos.filter(function(t) {@@ -197,6 +218,12 @@                 }                 if (this.setPriority) {                   t.priority = parseInt(this.setPriority)+                }++                if (this.addKeyVals) {+                  for (var i = 0; i < keyVals.length; i++) {+                    t.customAttributes[keyVals[i][0]] = keyVals[i][1]+                  }                 }              }.bind(this))             this.closeModal()