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({
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() {

View file

@ -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) {

View file

@ -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}}

View file

@ -7,15 +7,15 @@
<div class="snippet">{{ document.excerpt }}</div>
<div class="chips">{{folder/document-tags documentTags=document.tags}}</div>
{{/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}}
<i class="material-icons">check_box</i>
{{else}}
<i class="material-icons">check_box_outline_blank</i>
{{/if}}
{{/if}}
</div>
</div>
{{/if}}
</div>
{{#if canCreate}}
<div class="wizard-item start-document" {{action 'onShowDocumentWizard' document.id}}>