diff options
author | Lauri Ojansivu <x@xet7.org> | 2017-02-03 02:02:47 +0200 |
---|---|---|
committer | Lauri Ojansivu <x@xet7.org> | 2017-02-03 02:02:47 +0200 |
commit | 40594485d869be1638ea619bf655cc1de2e079db (patch) | |
tree | 70bb050626b491155f393db2ff3f5546d6a6ae2c /client/components/cards/checklists.js | |
parent | 70f92c6e0e3e15444cdb20987ce0544ec691d606 (diff) | |
parent | 335b91f0a48c2c64a96a74e8a2b9866bf590714a (diff) | |
download | wekan-40594485d869be1638ea619bf655cc1de2e079db.tar.gz wekan-40594485d869be1638ea619bf655cc1de2e079db.tar.bz2 wekan-40594485d869be1638ea619bf655cc1de2e079db.zip |
Add checklist feature: Merge branch 'lkisme-ckls' into devel
Diffstat (limited to 'client/components/cards/checklists.js')
-rw-r--r-- | client/components/cards/checklists.js | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/client/components/cards/checklists.js b/client/components/cards/checklists.js new file mode 100644 index 00000000..5dac7bd3 --- /dev/null +++ b/client/components/cards/checklists.js @@ -0,0 +1,89 @@ +BlazeComponent.extendComponent({ + addChecklist(event) { + event.preventDefault(); + const textarea = this.find('textarea.js-add-checklist-item'); + const title = textarea.value.trim(); + const cardId = this.currentData().cardId; + Checklists.insert({ + cardId, + title, + }); + }, + + addChecklistItem(event) { + event.preventDefault(); + const textarea = this.find('textarea.js-add-checklist-item'); + const title = textarea.value.trim(); + const checklist = this.currentData().checklist; + checklist.addItem(title); + }, + + editChecklist(event) { + event.preventDefault(); + const textarea = this.find('textarea.js-edit-checklist-item'); + const title = textarea.value.trim(); + const checklist = this.currentData().checklist; + checklist.setTitle(title); + }, + + editChecklistItem(event) { + event.preventDefault(); + + const textarea = this.find('textarea.js-edit-checklist-item'); + const title = textarea.value.trim(); + const itemId = this.currentData().item._id; + const checklist = this.currentData().checklist; + checklist.editItem(itemId, title); + }, + + deleteItem() { + const checklist = this.currentData().checklist; + const item = this.currentData().item; + if (checklist && item && item._id) { + checklist.removeItem(item._id); + } + }, + + deleteChecklist() { + const checklist = this.currentData().checklist; + if (checklist && checklist._id) { + Checklists.remove(checklist._id); + } + }, + + pressKey(event) { + //If user press enter key inside a form, submit it, so user doesn't have to leave keyboard to submit a form. + if (event.keyCode === 13) { + event.preventDefault(); + const $form = $(event.currentTarget).closest('form'); + $form.find('button[type=submit]').click(); + } + }, + + events() { + return [{ + 'submit .js-add-checklist': this.addChecklist, + 'submit .js-edit-checklist-title': this.editChecklist, + 'submit .js-add-checklist-item': this.addChecklistItem, + 'submit .js-edit-checklist-item': this.editChecklistItem, + 'click .js-delete-checklist-item': this.deleteItem, + 'click .js-delete-checklist': this.deleteChecklist, + keydown: this.pressKey, + }]; + }, +}).register('checklists'); + +BlazeComponent.extendComponent({ + toggleItem() { + const checklist = this.currentData().checklist; + const item = this.currentData().item; + if (checklist && item && item._id) { + checklist.toggleItem(item._id); + } + }, + events() { + return [{ + 'click .item .check-box': this.toggleItem, + }]; + }, +}).register('itemDetail'); |