diff --git a/gui/app/components/folder/documents-list.js b/gui/app/components/folder/documents-list.js index 0d2f1a48..8fbfb516 100644 --- a/gui/app/components/folder/documents-list.js +++ b/gui/app/components/folder/documents-list.js @@ -13,7 +13,6 @@ import Ember from 'ember'; export default Ember.Component.extend({ folderService: Ember.inject.service('folder'), - selectedDocuments: [], moveTarget: null, emptyState: Ember.computed('documents', function() { return this.get('documents.length') === 0; @@ -22,20 +21,19 @@ export default Ember.Component.extend({ didReceiveAttrs() { this._super(...arguments); - this.set('selectedDocuments', []); this.set('canCreate', this.get('folderService').get('canEditCurrentFolder')); this.set('deleteTargets', this.get('folders').rejectBy('id', this.get('folder.id'))); }, didUpdateAttrs() { this._super(...arguments); - + this.setupAddWizard(); - }, + }, didInsertElement() { this._super(...arguments); - + this.setupAddWizard(); }, @@ -50,7 +48,7 @@ export default Ember.Component.extend({ // out $(this).find('.start-button').velocity("transition.slideUpOut", {duration: 300}); } }); - }); + }); }, actions: { @@ -61,16 +59,12 @@ export default Ember.Component.extend({ doc.set('selected', !doc.get('selected')); if (doc.get('selected')) { - list.push(documentId); + list.pushObject(documentId); } else { - var index = list.indexOf(documentId); - if (index > -1) { - list.splice(index, 1); - } - } + list = _.without(list, documentId); + } - this.set('selectedDocuments', list); - this.get('onDocumentsChecked')(list); + this.set('selectedDocuments', list); }, onDelete() { diff --git a/gui/app/pods/folder/controller.js b/gui/app/pods/folder/controller.js index 79269fdc..09d01750 100644 --- a/gui/app/pods/folder/controller.js +++ b/gui/app/pods/folder/controller.js @@ -16,17 +16,12 @@ export default Ember.Controller.extend(NotifierMixin, { documentService: Ember.inject.service('document'), folderService: Ember.inject.service('folder'), localStorage: Ember.inject.service('localStorage'), - hasSelectedDocuments: false, selectedDocuments: [], + hasSelectedDocuments: Ember.computed.gt('selectedDocuments.length', 0), queryParams: ['tab'], tab: 'index', actions: { - onDocumentsChecked(documents) { - this.set('selectedDocuments', documents); - this.set('hasSelectedDocuments', documents.length > 0); - }, - onMoveDocument(folder) { let self = this; let documents = this.get('selectedDocuments'); @@ -42,23 +37,29 @@ export default Ember.Controller.extend(NotifierMixin, { }); this.set('selectedDocuments', []); - this.set('hasSelectedDocuments', false); this.send("showNotification", "Moved"); }, onDeleteDocument() { let documents = this.get('selectedDocuments'); let self = this; + let promises = []; - documents.forEach(function (document) { - self.get('documentService').deleteDocument(document).then(function () { - self.get('target._routerMicrolib').refresh(); - }); + documents.forEach(function (document, index) { + promises[index] = self.get('documentService').deleteDocument(document); }); - this.set('selectedDocuments', []); - this.set('hasSelectedDocuments', false); - this.send("showNotification", "Deleted"); + Ember.RSVP.all(promises).then(() => { + let documents = this.get('model.documents'); + documents.forEach(function (document) { + document.set('selected', false); + }); + this.set('model.documents', documents); + + this.set('selectedDocuments', []); + this.send("showNotification", "Deleted"); + this.get('target._routerMicrolib').refresh(); + }); }, onFolderAdd(folder) { diff --git a/gui/app/pods/folder/template.hbs b/gui/app/pods/folder/template.hbs index b062d4f4..eaaac033 100644 --- a/gui/app/pods/folder/template.hbs +++ b/gui/app/pods/folder/template.hbs @@ -8,7 +8,8 @@ {{folder/folder-heading folder=model.folder isFolderOwner=model.isFolderOwner isEditor=model.isEditor}} {{folder/folder-toolbar folders=model.folders folder=model.folder hasSelectedDocuments=hasSelectedDocuments onDeleteDocument=(action 'onDeleteDocument') onMoveDocument=(action 'onMoveDocument')}} - {{folder/documents-list documents=model.documents folders=model.folders folder=model.folder templates=model.templates isFolderOwner=model.isFolderOwner isEditor=model.isEditor - onDocumentsChecked=(action 'onDocumentsChecked') onDeleteSpace=(action 'onDeleteSpace') onImport=(action 'onImport')}} + {{folder/documents-list documents=model.documents folders=model.folders folder=model.folder templates=model.templates + isFolderOwner=model.isFolderOwner isEditor=model.isEditor selectedDocuments=(mut selectedDocuments) + onDeleteSpace=(action 'onDeleteSpace') onImport=(action 'onImport')}} {{/layout/zone-content}} {{/layout/zone-container}} \ No newline at end of file diff --git a/gui/app/templates/components/folder/documents-list.hbs b/gui/app/templates/components/folder/documents-list.hbs index 16e82ff5..61290bfd 100644 --- a/gui/app/templates/components/folder/documents-list.hbs +++ b/gui/app/templates/components/folder/documents-list.hbs @@ -7,15 +7,15 @@