Преглед изворни кода

Merge pull request #5568 from mfilser/checklist_multiline_insert

Checklist multiline insert (many checklist items at once)
Lauri Ojansivu пре 6 месеци
родитељ
комит
7623c8dcb7

+ 7 - 1
client/components/cards/checklists.jade

@@ -73,6 +73,12 @@ template(name="addChecklistItemForm")
       .material-toggle-switch(title="{{_ 'newlineBecomesNewChecklistItem'}}")
         input.toggle-switch(type="checkbox" id="toggleNewlineBecomesNewChecklistItem")
         label.toggle-label(for="toggleNewlineBecomesNewChecklistItem")
+        | {{_ 'newLineNewItem'}}
+      if $eq position 'top'
+        .material-toggle-switch(title="{{_ 'newlineBecomesNewChecklistItemOriginOrder'}}")
+          input.toggle-switch(type="checkbox" id="toggleNewlineBecomesNewChecklistItemOriginOrder")
+          label.toggle-label(for="toggleNewlineBecomesNewChecklistItemOriginOrder")
+          | {{_ 'originOrder'}}
 
 template(name="editChecklistItemForm")
   a.fa.fa-copy(title="{{_ 'copy-text-to-clipboard'}}")
@@ -96,7 +102,7 @@ template(name="checklistItems")
   if checklist.items.length
     if canModifyCard
       +inlinedForm(autoclose=false classNames="js-add-checklist-item" checklist = checklist position="top")
-        +addChecklistItemForm(checklist=checklist showNewlineBecomesNewChecklistItem=true)
+        +addChecklistItemForm(checklist=checklist showNewlineBecomesNewChecklistItem=true position="top")
       else
         a.add-checklist-item.js-open-inlined-form(title="{{_ 'add-checklist-item'}}")
           i.fa.fa-plus

+ 14 - 7
client/components/cards/checklists.js

@@ -119,6 +119,7 @@ BlazeComponent.extendComponent({
     event.preventDefault();
     const textarea = this.find('textarea.js-add-checklist-item');
     const newlineBecomesNewChecklistItem = this.find('input#toggleNewlineBecomesNewChecklistItem');
+    const newlineBecomesNewChecklistItemOriginOrder = this.find('input#toggleNewlineBecomesNewChecklistItemOriginOrder');
     const title = textarea.value.trim();
     const checklist = this.currentData().checklist;
 
@@ -127,22 +128,28 @@ BlazeComponent.extendComponent({
       if (newlineBecomesNewChecklistItem.checked) {
         checklistItems = title.split('\n').map(_value => _value.trim());
         if (this.currentData().position === 'top') {
-          checklistItems = checklistItems.reverse();
+          if (newlineBecomesNewChecklistItemOriginOrder.checked === false) {
+            checklistItems = checklistItems.reverse();
+          }
         }
       }
+      let addIndex;
+      let sortIndex;
+      if (this.currentData().position === 'top') {
+        sortIndex = Utils.calculateIndexData(null, checklist.firstItem()).base;
+        addIndex = -1;
+      } else {
+        sortIndex = Utils.calculateIndexData(checklist.lastItem(), null).base;
+        addIndex = 1;
+      }
       for (let checklistItem of checklistItems) {
-        let sortIndex;
-        if (this.currentData().position === 'top') {
-          sortIndex = Utils.calculateIndexData(null, checklist.firstItem()).base;
-        } else {
-          sortIndex = Utils.calculateIndexData(checklist.lastItem(), null).base;
-        }
         ChecklistItems.insert({
           title: checklistItem,
           checklistId: checklist._id,
           cardId: checklist.cardId,
           sort: sortIndex,
         });
+        sortIndex += addIndex;
       }
     }
     // We keep the form opened, empty it.

+ 3 - 0
imports/i18n/data/en.i18n.json

@@ -1196,6 +1196,9 @@
   "moveChecklist": "Move Checklist",
   "moveChecklistPopup-title": "Move Checklist",
   "newlineBecomesNewChecklistItem": "Newline becomes new checklist item",
+  "newLineNewItem": "newline = new item",
+  "newlineBecomesNewChecklistItemOriginOrder": "Newline becomes new checklist item, origin order",
+  "originOrder": "origin order",
   "copyChecklist": "Copy Checklist",
   "copyChecklistPopup-title": "Copy Checklist",
   "card-show-lists": "Card Show Lists",