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({
|
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() {
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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}}
|
|
@ -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}}>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue