1
0
Fork 0
mirror of https://github.com/documize/community.git synced 2025-07-21 22:29:41 +02:00

chained bulk doc delete promises

This commit is contained in:
Harvey Kandola 2017-08-17 18:31:19 +01:00
parent eeb3d8f070
commit 5b70ffd954
4 changed files with 30 additions and 34 deletions

View file

@ -13,7 +13,6 @@ import Ember from 'ember';
export default Ember.Component.extend({ export default Ember.Component.extend({
folderService: Ember.inject.service('folder'), folderService: Ember.inject.service('folder'),
selectedDocuments: [],
moveTarget: null, moveTarget: null,
emptyState: Ember.computed('documents', function() { emptyState: Ember.computed('documents', function() {
return this.get('documents.length') === 0; return this.get('documents.length') === 0;
@ -22,20 +21,19 @@ export default Ember.Component.extend({
didReceiveAttrs() { didReceiveAttrs() {
this._super(...arguments); this._super(...arguments);
this.set('selectedDocuments', []);
this.set('canCreate', this.get('folderService').get('canEditCurrentFolder')); this.set('canCreate', this.get('folderService').get('canEditCurrentFolder'));
this.set('deleteTargets', this.get('folders').rejectBy('id', this.get('folder.id'))); this.set('deleteTargets', this.get('folders').rejectBy('id', this.get('folder.id')));
}, },
didUpdateAttrs() { didUpdateAttrs() {
this._super(...arguments); this._super(...arguments);
this.setupAddWizard(); this.setupAddWizard();
}, },
didInsertElement() { didInsertElement() {
this._super(...arguments); this._super(...arguments);
this.setupAddWizard(); this.setupAddWizard();
}, },
@ -50,7 +48,7 @@ export default Ember.Component.extend({
// out // out
$(this).find('.start-button').velocity("transition.slideUpOut", {duration: 300}); $(this).find('.start-button').velocity("transition.slideUpOut", {duration: 300});
} }); } });
}); });
}, },
actions: { actions: {
@ -61,16 +59,12 @@ export default Ember.Component.extend({
doc.set('selected', !doc.get('selected')); doc.set('selected', !doc.get('selected'));
if (doc.get('selected')) { if (doc.get('selected')) {
list.push(documentId); list.pushObject(documentId);
} else { } else {
var index = list.indexOf(documentId); list = _.without(list, documentId);
if (index > -1) { }
list.splice(index, 1);
}
}
this.set('selectedDocuments', list); this.set('selectedDocuments', list);
this.get('onDocumentsChecked')(list);
}, },
onDelete() { onDelete() {

View file

@ -16,17 +16,12 @@ export default Ember.Controller.extend(NotifierMixin, {
documentService: Ember.inject.service('document'), documentService: Ember.inject.service('document'),
folderService: Ember.inject.service('folder'), folderService: Ember.inject.service('folder'),
localStorage: Ember.inject.service('localStorage'), localStorage: Ember.inject.service('localStorage'),
hasSelectedDocuments: false,
selectedDocuments: [], selectedDocuments: [],
hasSelectedDocuments: Ember.computed.gt('selectedDocuments.length', 0),
queryParams: ['tab'], queryParams: ['tab'],
tab: 'index', tab: 'index',
actions: { actions: {
onDocumentsChecked(documents) {
this.set('selectedDocuments', documents);
this.set('hasSelectedDocuments', documents.length > 0);
},
onMoveDocument(folder) { onMoveDocument(folder) {
let self = this; let self = this;
let documents = this.get('selectedDocuments'); let documents = this.get('selectedDocuments');
@ -42,23 +37,29 @@ export default Ember.Controller.extend(NotifierMixin, {
}); });
this.set('selectedDocuments', []); this.set('selectedDocuments', []);
this.set('hasSelectedDocuments', false);
this.send("showNotification", "Moved"); this.send("showNotification", "Moved");
}, },
onDeleteDocument() { onDeleteDocument() {
let documents = this.get('selectedDocuments'); let documents = this.get('selectedDocuments');
let self = this; let self = this;
let promises = [];
documents.forEach(function (document) { documents.forEach(function (document, index) {
self.get('documentService').deleteDocument(document).then(function () { promises[index] = self.get('documentService').deleteDocument(document);
self.get('target._routerMicrolib').refresh();
});
}); });
this.set('selectedDocuments', []); Ember.RSVP.all(promises).then(() => {
this.set('hasSelectedDocuments', false); let documents = this.get('model.documents');
this.send("showNotification", "Deleted"); 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) { onFolderAdd(folder) {

View file

@ -8,7 +8,8 @@
{{folder/folder-heading folder=model.folder isFolderOwner=model.isFolderOwner isEditor=model.isEditor}} {{folder/folder-heading folder=model.folder isFolderOwner=model.isFolderOwner isEditor=model.isEditor}}
{{folder/folder-toolbar folders=model.folders folder=model.folder hasSelectedDocuments=hasSelectedDocuments {{folder/folder-toolbar folders=model.folders folder=model.folder hasSelectedDocuments=hasSelectedDocuments
onDeleteDocument=(action 'onDeleteDocument') onMoveDocument=(action 'onMoveDocument')}} 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 {{folder/documents-list documents=model.documents folders=model.folders folder=model.folder templates=model.templates
onDocumentsChecked=(action 'onDocumentsChecked') onDeleteSpace=(action 'onDeleteSpace') onImport=(action 'onImport')}} isFolderOwner=model.isFolderOwner isEditor=model.isEditor selectedDocuments=(mut selectedDocuments)
onDeleteSpace=(action 'onDeleteSpace') onImport=(action 'onImport')}}
{{/layout/zone-content}} {{/layout/zone-content}}
{{/layout/zone-container}} {{/layout/zone-container}}

View file

@ -7,15 +7,15 @@
<div class="snippet">{{ document.excerpt }}</div> <div class="snippet">{{ document.excerpt }}</div>
<div class="chips">{{folder/document-tags documentTags=document.tags}}</div> <div class="chips">{{folder/document-tags documentTags=document.tags}}</div>
{{/link-to}} {{/link-to}}
<div class="checkbox" {{action 'selectDocument' document.id}}> {{#if session.authenticated}}
{{#if session.authenticated}} <div class="checkbox" {{action 'selectDocument' document.id}}>
{{#if document.selected}} {{#if document.selected}}
<i class="material-icons">check_box</i> <i class="material-icons">check_box</i>
{{else}} {{else}}
<i class="material-icons">check_box_outline_blank</i> <i class="material-icons">check_box_outline_blank</i>
{{/if}} {{/if}}
{{/if}} </div>
</div> {{/if}}
</div> </div>
{{#if canCreate}} {{#if canCreate}}
<div class="wizard-item start-document" {{action 'onShowDocumentWizard' document.id}}> <div class="wizard-item start-document" {{action 'onShowDocumentWizard' document.id}}>