1
0
Fork 0
mirror of https://github.com/documize/community.git synced 2025-07-24 15:49:44 +02:00

move documents new UX

This commit is contained in:
Harvey Kandola 2017-11-22 16:28:17 +00:00
parent bae1245d47
commit aee9345886
14 changed files with 141 additions and 207 deletions

View file

@ -10,11 +10,14 @@
// https://documize.com
import { computed } from '@ember/object';
import { A } from "@ember/array"
import Component from '@ember/component';
export default Component.extend({
showDeleteDialog: false,
selectedDocuments: [],
showMoveDialog: false,
selectedDocuments: A([]),
selectedCaption: 'document',
showAdd: computed('permissions', 'documents', function() {
return this.get('documents.length') === 0 && this.get('permissions.documentAdd');
@ -26,23 +29,50 @@ export default Component.extend({
return this.get('permissions.documentDelete') || this.get('permissions.documentMove');
}),
didReceiveAttrs() {
this._super(...arguments);
let space = this.get('space');
let targets = _.reject(this.get('spaces'), {id: space.get('id')});
this.set('moveOptions', A(targets));
this.set('selectedDocuments', A([]));
},
actions: {
onConfirmDeleteDocuments() {
onShowDeleteDocuments() {
this.set('showDeleteDialog', true);
},
onDeleteDocuments() {
this.set('showDeleteDialog', false);
let list = this.get('selectedDocuments');
// list.forEach(d => {
// let doc = this.get('documents').findBy('id', d);
// doc.set('selected', false);
// });
this.set('selectedDocuments', A([]));
this.set('showDeleteDialog', false);
this.attrs.onDeleteDocument(list);
this.set('selectedDocuments', []);
return true;
},
onShowMoveDocuments() {
this.set('showMoveDialog', true);
},
onMoveDocuments() {
let list = this.get('selectedDocuments');
let spaces = this.get('spaces');
let moveSpaceId = '';
spaces.forEach(space => {
if (space.get('selected')) {
moveSpaceId = space.get('id');
}
});
if (moveSpaceId === '') return false;
this.set('showMoveDialog', false);
this.set('selectedDocuments', A([]));
this.attrs.onMoveDocument(list, moveSpaceId);
return true;
},
@ -59,7 +89,8 @@ export default Component.extend({
list = _.without(list, documentId);
}
this.set('selectedDocuments', list);
this.set('selectedCaption', list.length > 1 ? 'documents' : 'document');
this.set('selectedDocuments', A(list));
}
}
});

View file

@ -1,95 +0,0 @@
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
//
// This software (Documize Community Edition) is licensed under
// GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html
//
// You can operate outside the AGPL restrictions by purchasing
// Documize Enterprise Edition and obtaining a commercial license
// by contacting <sales@documize.com>.
//
// https://documize.com
import { computed } from '@ember/object';
import Component from '@ember/component';
import { inject as service } from '@ember/service';
import NotifierMixin from '../../mixins/notifier';
import TooltipMixin from '../../mixins/tooltip';
import AuthMixin from '../../mixins/auth';
export default Component.extend(NotifierMixin, TooltipMixin, AuthMixin, {
folderService: service('folder'),
session: service(),
appMeta: service(),
pinned: service(),
showToolbar: false,
folder: {},
busy: false,
moveFolderId: "",
drop: null,
pinState : {
isPinned: false,
pinId: '',
newName: ''
},
deleteSpaceName: '',
spaceSettings: computed('permissions', function() {
return this.get('permissions.spaceOwner') || this.get('permissions.spaceManage');
}),
didReceiveAttrs() {
this._super(...arguments);
let folder = this.get('folder');
let targets = _.reject(this.get('folders'), {id: folder.get('id')});
this.set('movedFolderOptions', targets);
},
didRender() {
this._super(...arguments);
this.renderTooltips();
},
renderTooltips() {
this.destroyTooltips();
},
willDestroyElement() {
this._super(...arguments);
if (this.get('isDestroyed') || this.get('isDestroying')) return;
if (is.not.null(this.get('drop'))) {
this.get('drop').destroy();
this.set('drop', null);
}
this.destroyTooltips();
},
actions: {
setMoveFolder(folderId) {
this.set('moveFolderId', folderId);
let folders = this.get('folders');
folders.forEach(folder => {
folder.set('selected', folder.id === folderId);
});
},
moveDocuments() {
if (this.get("moveFolderId") === "") {
return false;
}
this.attrs.onMoveDocument(this.get('moveFolderId'));
return true;
},
onStartDocument() {
this.attrs.onStartDocument();
}
}
});

View file

@ -9,25 +9,19 @@
//
// https://documize.com
import { all } from 'rsvp';
import { schedule } from '@ember/runloop';
import { gt } from '@ember/object/computed';
import Component from '@ember/component';
import { inject as service } from '@ember/service';
import NotifierMixin from '../../mixins/notifier';
import TooltipMixin from '../../mixins/tooltip';
import { all } from 'rsvp';
import { schedule } from '@ember/runloop';
import { gt } from '@ember/object/computed';
import AuthMixin from '../../mixins/auth';
export default Component.extend(NotifierMixin, TooltipMixin, AuthMixin, {
export default Component.extend(AuthMixin, {
router: service(),
documentService: service('document'),
folderService: service('folder'),
localStorage: service('localStorage'),
selectedDocuments: [],
hasSelectedDocuments: gt('selectedDocuments.length', 0),
hasCategories: gt('categories.length', 0),
showStartDocument: false,
filteredDocs: [],
didReceiveAttrs() {
@ -41,20 +35,6 @@ export default Component.extend(NotifierMixin, TooltipMixin, AuthMixin, {
this.set('filteredDocs', []);
},
didRender() {
this._super(...arguments);
if (this.get('rootDocCount') > 0) {
this.addTooltip(document.getElementById("uncategorized-button"));
}
},
willDestroyElement() {
this._super(...arguments);
this.destroyTooltips();
},
setup() {
let categories = this.get('categories');
let categorySummary = this.get('categorySummary');
@ -81,22 +61,42 @@ export default Component.extend(NotifierMixin, TooltipMixin, AuthMixin, {
},
actions: {
onMoveDocument(folder) {
zonMoveDocumentz(documents, targetSpaceId) {
let self = this;
let documents = this.get('selectedDocuments');
documents.forEach(function (documentId) {
self.get('documentService').getDocument(documentId).then(function (doc) {
doc.set('folderId', folder);
doc.set('selected', !doc.get('selected'));
doc.set('folderId', targetSpaceId);
doc.set('selected', false);
self.get('documentService').save(doc).then(function () {
self.attrs.onRefresh();
});
});
});
},
this.set('selectedDocuments', []);
this.send("showNotification", "Moved");
onMoveDocument(documents, targetSpaceId) {
let self = this;
let promises1 = [];
let promises2 = [];
documents.forEach(function(documentId, index) {
promises1[index] = self.get('documentService').getDocument(documentId);
});
all(promises1).then(() => {
promises1.forEach(function(doc, index) {
doc.then((d) => {
d.set('folderId', targetSpaceId);
d.set('selected', false);
promises2[index] = self.get('documentService').save(d);
});
});
all(promises2).then(() => {
self.attrs.onRefresh();
});
});
},
onDeleteDocument(documents) {
@ -114,7 +114,6 @@ export default Component.extend(NotifierMixin, TooltipMixin, AuthMixin, {
});
this.set('documents', documents);
this.set('selectedDocuments', []);
this.attrs.onRefresh();
});
},

View file

@ -18,6 +18,7 @@ export default Component.extend({
confirmCaption: 'OK',
title: 'Confirm',
show: false,
buttonType: 'btn-secondary',
didInsertElement() {
this._super(...arguments);
@ -54,7 +55,8 @@ export default Component.extend({
return;
}
if (this.attrs.onAction()) {
let result = this.attrs.onAction();
if (result) {
this.set('show', false);
}
}

View file

@ -15,10 +15,19 @@ import Component from '@ember/component';
export default Component.extend({
nameField: 'category',
singleSelect: false,
items: [],
actions: {
onToggle(item) {
if (this.get('singleSelect')) {
let items = this.get('items');
items.forEach(item => {
set(item, 'selected', false);
});
this.set('items', items);
}
set(item, 'selected', !item.get('selected'));
}
}