mirror of
https://github.com/documize/community.git
synced 2025-08-02 20:15:26 +02:00
bulk data load methods for space and document views
This commit is contained in:
parent
bc72db711f
commit
318abef710
9 changed files with 315 additions and 29 deletions
|
@ -24,22 +24,31 @@ export default Ember.Route.extend(AuthenticatedRouteMixin, {
|
|||
this.set('documentId', this.paramsFor('document').document_id);
|
||||
|
||||
return new Ember.RSVP.Promise((resolve) => {
|
||||
this.get('documentService').getDocument(this.get('documentId')).then((document) => {
|
||||
this.set('document', document);
|
||||
|
||||
this.get('folderService').getAll().then((folders) => {
|
||||
this.set('folders', folders);
|
||||
|
||||
this.get('folderService').getFolder(this.get('folderId')).then((folder) => {
|
||||
this.set('folder', folder);
|
||||
|
||||
this.get('folderService').setCurrentFolder(folder).then(() => {
|
||||
this.set('permissions', this.get('folderService').get('permissions'));
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
});
|
||||
this.get('documentService').fetchDocumentData(this.get('documentId')).then((data) => {
|
||||
this.set('document', data.document);
|
||||
this.set('folders', data.folders);
|
||||
this.set('folder', data.folder);
|
||||
this.set('permissions', data.permissions);
|
||||
this.set('links', data.links);
|
||||
resolve();
|
||||
});
|
||||
|
||||
// this.get('documentService').getDocument(this.get('documentId')).then((document) => {
|
||||
// this.set('document', document);
|
||||
|
||||
// this.get('folderService').getAll().then((folders) => {
|
||||
// this.set('folders', folders);
|
||||
|
||||
// this.get('folderService').getFolder(this.get('folderId')).then((folder) => {
|
||||
// this.set('folder', folder);
|
||||
|
||||
// this.get('folderService').setCurrentFolder(folder).then(() => {
|
||||
// this.set('permissions', this.get('folderService').get('permissions'));
|
||||
// resolve();
|
||||
// });
|
||||
// });
|
||||
// });
|
||||
// });
|
||||
});
|
||||
},
|
||||
|
||||
|
@ -50,7 +59,7 @@ export default Ember.Route.extend(AuthenticatedRouteMixin, {
|
|||
document: this.get('document'),
|
||||
page: this.get('pageId'),
|
||||
permissions: this.get('permissions'),
|
||||
links: this.get('linkService').getDocumentLinks(this.get('documentId')),
|
||||
links: this.get('links'),
|
||||
sections: this.get('sectionService').getAll()
|
||||
});
|
||||
},
|
||||
|
|
|
@ -15,6 +15,18 @@ import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-rout
|
|||
export default Ember.Route.extend(AuthenticatedRouteMixin, {
|
||||
categoryService: Ember.inject.service('category'),
|
||||
|
||||
beforeModel() {
|
||||
return new Ember.RSVP.Promise((resolve) => {
|
||||
this.get('categoryService').fetchSpaceData(this.modelFor('folder').folder.get('id')).then((data) => {
|
||||
this.set('categories', data.category);
|
||||
this.set('categorySummary', data.summary);
|
||||
this.set('categoryMembers', data.membership);
|
||||
|
||||
resolve(data);
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
model() {
|
||||
this.get('browser').setTitle(this.modelFor('folder').folder.get('name'));
|
||||
|
||||
|
@ -25,14 +37,25 @@ export default Ember.Route.extend(AuthenticatedRouteMixin, {
|
|||
documents: this.modelFor('folder').documents,
|
||||
templates: this.modelFor('folder').templates,
|
||||
showStartDocument: false,
|
||||
categories: this.get('categoryService').getUserVisible(this.modelFor('folder').folder.get('id')),
|
||||
categorySummary: this.get('categoryService').getSummary(this.modelFor('folder').folder.get('id')),
|
||||
categoryMembers: this.get('categoryService').getSpaceCategoryMembership(this.modelFor('folder').folder.get('id')),
|
||||
rootDocCount: 0
|
||||
rootDocCount: 0,
|
||||
categories: this.get('categories'),
|
||||
categorySummary: this.get('categorySummary'),
|
||||
categoryMembers: this.get('categoryMembers'),
|
||||
// categories: this.get('categoryService').getUserVisible(this.modelFor('folder').folder.get('id')),
|
||||
// categorySummary: this.get('categoryService').getSummary(this.modelFor('folder').folder.get('id')),
|
||||
// categoryMembers: this.get('categoryService').getSpaceCategoryMembership(this.modelFor('folder').folder.get('id')),
|
||||
});
|
||||
},
|
||||
|
||||
afterModel(model, transition) { // eslint-disable-line no-unused-vars
|
||||
// model.folder = this.modelFor('folder').folder;
|
||||
// model.permissions = this.modelFor('folder').permissions;
|
||||
// model.folders = this.modelFor('folder').folders;
|
||||
// model.documents = this.modelFor('folder').documents;
|
||||
// model.templates = this.modelFor('folder').templates;
|
||||
// model.showStartDocument = false;
|
||||
// model.rootDocCount = 0;
|
||||
|
||||
let docs = model.documents;
|
||||
let categoryMembers = model.categoryMembers;
|
||||
let rootDocCount = 0;
|
||||
|
|
|
@ -151,5 +151,34 @@ export default BaseService.extend({
|
|||
}).then((response) => {
|
||||
return response;
|
||||
});
|
||||
},
|
||||
|
||||
// fetchXXX represents UI specific bulk data loading designed to
|
||||
// reduce network traffic and boost app performance.
|
||||
// This method that returns:
|
||||
// 1. getUserVisible()
|
||||
// 2. getSummary()
|
||||
// 3. getSpaceCategoryMembership()
|
||||
fetchSpaceData(spaceId) {
|
||||
return this.get('ajax').request(`fetch/category/space/${spaceId}`, {
|
||||
method: 'GET'
|
||||
}).then((response) => {
|
||||
let data = {
|
||||
category: [],
|
||||
membership: [],
|
||||
summary: []
|
||||
};
|
||||
|
||||
let cats = response.category.map((obj) => {
|
||||
let data = this.get('store').normalize('category', obj);
|
||||
return this.get('store').push(data);
|
||||
});
|
||||
|
||||
data.category = cats;
|
||||
data.membership = response.membership;
|
||||
data.summary = response.summary;
|
||||
|
||||
return data;
|
||||
});
|
||||
}
|
||||
});
|
||||
|
|
|
@ -17,6 +17,7 @@ const {
|
|||
|
||||
export default Ember.Service.extend({
|
||||
sessionService: service('session'),
|
||||
folderService: service('folder'),
|
||||
ajax: service(),
|
||||
store: service(),
|
||||
|
||||
|
@ -308,6 +309,51 @@ export default Ember.Service.extend({
|
|||
let data = this.get('store').normalize('page', response);
|
||||
return this.get('store').push(data);
|
||||
});
|
||||
},
|
||||
|
||||
//**************************************************
|
||||
// Fetch bulk data
|
||||
//**************************************************
|
||||
|
||||
// fetchXXX represents UI specific bulk data loading designed to
|
||||
// reduce network traffic and boost app performance.
|
||||
// This method that returns:
|
||||
// 1. getUserVisible()
|
||||
// 2. getSummary()
|
||||
// 3. getSpaceCategoryMembership()
|
||||
fetchDocumentData(documentId) {
|
||||
return this.get('ajax').request(`fetch/document/${documentId}`, {
|
||||
method: 'GET'
|
||||
}).then((response) => {
|
||||
let data = {
|
||||
document: {},
|
||||
permissions: {},
|
||||
folders: [],
|
||||
folder: {},
|
||||
links: [],
|
||||
};
|
||||
|
||||
let doc = this.get('store').normalize('document', response.document);
|
||||
doc = this.get('store').push(doc);
|
||||
|
||||
let perms = this.get('store').normalize('space-permission', response);
|
||||
perms= this.get('store').push(perms);
|
||||
this.get('folderService').set('permissions', perms);
|
||||
|
||||
let folders = response.folders.map((obj) => {
|
||||
let data = this.get('store').normalize('folder', obj);
|
||||
return this.get('store').push(data);
|
||||
});
|
||||
|
||||
data.document = doc;
|
||||
data.permissions = perms;
|
||||
data.folders = folders;
|
||||
data.folder = folders.findBy('id', doc.get('folderId'));
|
||||
data.links = response.links;
|
||||
|
||||
return data;
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue