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:
parent
eeb3d8f070
commit
5b70ffd954
4 changed files with 30 additions and 34 deletions
|
@ -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() {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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}}
|
|
@ -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}}>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue