1
0
Fork 0
mirror of https://github.com/documize/community.git synced 2025-08-03 04:25:25 +02:00

upgraded Ember and Bootstrap, merged changes

This commit is contained in:
sauls8t 2018-01-22 10:31:03 +00:00
parent b4fd42da38
commit 5dd7d9c181
114 changed files with 9814 additions and 1361 deletions

View file

@ -12,33 +12,15 @@
import Service, { inject as service } from '@ember/service';
export default Service.extend({
sessionService: service('session'),
ajax: service(),
store: service(),
// document number of views, edits, approvals, etc.
getDocumentSummary(documentId, days) {
return this.get('ajax').request(`activity/document/${documentId}?days=${days}`, {
getDocumentSummary(documentId) {
return this.get('ajax').request(`activity/document/${documentId}`, {
method: "GET"
}).then((response) => {
let data = {
viewers: [],
changers: []
};
data.viewers = response.viewers.map((obj) => {
let data = this.get('store').normalize('documentActivity', obj);
return this.get('store').push(data);
});
data.changers = response.changers.map((obj) => {
let data = this.get('store').normalize('documentActivity', obj);
return this.get('store').push(data);
});
return data;
return response;
}).catch(() => {
return [];
});
},
}
});

View file

@ -9,7 +9,9 @@
//
// https://documize.com
import $ from 'jquery';
import Service, { inject as service } from '@ember/service';
import { schedule } from '@ember/runloop';
export default Service.extend({
sessionService: service('session'),
@ -42,5 +44,17 @@ export default Service.extend({
}
$('head').append('<meta name="description" content="' + description + '">');
},
scrollTo(id) {
schedule('afterRender', () => {
let elem = $(id).offset();
if (is.undefined(elem)) return;
$('html, body').animate({
scrollTop: elem.top
}, 250);
});
}
});

View file

@ -52,6 +52,8 @@ export default Service.extend({
});
return documents;
}).catch((error) => {
return error;
});
},
@ -100,6 +102,8 @@ export default Service.extend({
}).then((response) => {
let data = this.get('store').normalize('page', response);
return this.get('store').push(data);
}).catch((error) => {
return error;
});
},
@ -121,7 +125,6 @@ export default Service.extend({
// Returns document page with content
getPage(documentId, pageId) {
return this.get('ajax').request(`documents/${documentId}/pages/${pageId}`, {
method: 'GET'
}).then((response) => {
@ -132,7 +135,6 @@ export default Service.extend({
// Returns document page meta object
getPageMeta(documentId, pageId) {
return this.get('ajax').request(`documents/${documentId}/pages/${pageId}/meta`, {
method: 'GET'
}).then((response) => {
@ -203,34 +205,12 @@ export default Service.extend({
});
},
//**************************************************
// Activity
//**************************************************
// document meta referes to number of views, edits, approvals, etc.
getActivity(documentId, days) {
return this.get('ajax').request(`documents/${documentId}/activity?days=${days}`, {
method: "GET"
}).then((response) => {
let data = [];
data = response.map((obj) => {
let data = this.get('store').normalize('documentActivity', obj);
return this.get('store').push(data);
});
return data;
}).catch(() => {
return [];
});
},
//**************************************************
// Table of contents
//**************************************************
// Returns all pages without the content
getTableOfContents(documentId) {
return this.get('ajax').request(`documents/${documentId}/pages?content=0`, {
method: 'GET'
}).then((response) => {
@ -268,7 +248,6 @@ export default Service.extend({
// document attachments without the actual content
getAttachments(documentId) {
return this.get('ajax').request(`documents/${documentId}/attachments`, {
method: 'GET'
}).then((response) => {
@ -380,8 +359,108 @@ export default Service.extend({
data.links = response.links;
return data;
}).catch((error) => {
return error;
});
},
// fetchPages returns all pages, page meta and pending changes for document.
// This method bulk fetches data to reduce network chatter.
// We produce a bunch of calculated boolean's for UI display purposes
// that can tell us quickly about pending changes for UI display.
fetchPages(documentId, currentUserId) {
let constants = this.get('constants');
let changePending = false;
let changeAwaitingReview = false;
let changeRejected = false;
let userHasChangePending = false;
let userHasChangeAwaitingReview = false;
let userHasChangeRejected = false;
return this.get('ajax').request(`fetch/page/${documentId}`, {
method: 'GET'
}).then((response) => {
let data = A([]);
response.forEach((page) => {
changePending = false;
changeAwaitingReview = false;
changeRejected = false;
userHasChangePending = false;
userHasChangeAwaitingReview = false;
userHasChangeRejected = false;
let p = this.get('store').normalize('page', page.page);
p = this.get('store').push(p);
let m = this.get('store').normalize('page-meta', page.meta);
m = this.get('store').push(m);
let pending = A([]);
page.pending.forEach((i) => {
let p = this.get('store').normalize('page', i.page);
p = this.get('store').push(p);
let m = this.get('store').normalize('page-meta', i.meta);
m = this.get('store').push(m);
let belongsToMe = p.get('userId') === currentUserId;
let pageStatus = p.get('status');
let pi = {
id: p.get('id'),
page: p,
meta: m,
owner: i.owner,
changePending: pageStatus === constants.ChangeState.Pending || pageStatus === constants.ChangeState.PendingNew,
changeAwaitingReview: pageStatus === constants.ChangeState.UnderReview,
changeRejected: pageStatus === constants.ChangeState.Rejected,
userHasChangePending: belongsToMe && (pageStatus === constants.ChangeState.Pending || pageStatus === constants.ChangeState.PendingNew),
userHasChangeAwaitingReview: belongsToMe && pageStatus === constants.ChangeState.UnderReview,
userHasChangeRejected: belongsToMe && pageStatus === constants.ChangeState.Rejected
};
let pim = this.get('store').normalize('page-pending', pi);
pim = this.get('store').push(pim);
pending.pushObject(pim);
if (p.get('status') === constants.ChangeState.Pending || p.get('status') === constants.ChangeState.PendingNew) {
changePending = true;
userHasChangePending = belongsToMe;
}
if (p.get('status') === constants.ChangeState.UnderReview) {
changeAwaitingReview = true;
userHasChangeAwaitingReview = belongsToMe;
}
if (p.get('status') === constants.ChangeState.Rejected) {
changeRejected = p.get('status') === constants.ChangeState.Rejected;
userHasChangeRejected = changeRejected && belongsToMe;
}
});
let pi = {
id: p.get('id'),
page: p,
meta: m,
pending: pending,
changePending: changePending,
changeAwaitingReview: changeAwaitingReview,
changeRejected: changeRejected,
userHasChangePending: userHasChangePending,
userHasChangeAwaitingReview: userHasChangeAwaitingReview,
userHasChangeRejected: userHasChangeRejected,
userHasNewPagePending: p.isNewPageUserPending(this.get('sessionService.user.id'))
};
let pim = this.get('store').normalize('page-container', pi);
pim = this.get('store').push(pim);
data.pushObject(pim);
});
return data;
}).catch((error) => {
return error;
});
}
});

View file

@ -19,10 +19,12 @@ export default BaseService.extend({
ajax: service(),
localStorage: service(),
store: service(),
// selected folder
currentFolder: null,
permissions: {},
init() {
this._super(...arguments);
this.permissions = {};
},
// Add a new folder.
add(payload) {

View file

@ -10,7 +10,6 @@
// https://documize.com
import { Promise as EmberPromise } from 'rsvp';
import Service, { inject as service } from '@ember/service';
import netUtil from '../utils/net';
@ -19,7 +18,11 @@ export default Service.extend({
ajax: service(),
appMeta: service(),
keycloak: null,
config: {},
init() {
this._super(...arguments);
this.config = {};
},
boot() {
return new EmberPromise((resolve, reject) => {

View file

@ -19,9 +19,13 @@ export default Service.extend({
ajax: service(),
appMeta: service(),
store: service(),
pins: [],
initialized: false,
init() {
this._super(...arguments);
this.pins = [];
},
getUserPins() {
let userId = this.get('session.user.id');

View file

@ -10,17 +10,33 @@
// https://documize.com
import Service, { inject as service } from '@ember/service';
import { A } from '@ember/array';
import ArrayProxy from '@ember/array/proxy';
export default Service.extend({
sessionService: service('session'),
ajax: service(),
store: service(),
// find all matching documents.
// find all matching documents
find(payload) {
return this.get('ajax').request("search", {
method: "POST",
data: JSON.stringify(payload),
contentType: 'json'
}).then((response) => {
let results = ArrayProxy.create({
content: A([])
});
results = response.map((doc) => {
let data = this.get('store').normalize('doc-search-result', doc);
return this.get('store').push(data);
});
return results;
}).catch((error) => {
return error;
});
},
});
});

View file

@ -40,6 +40,7 @@ export default SimpleAuthSession.extend({
}),
authenticated: computed('session.content.authenticated.user', function () {
if (is.null(this.get('session.authenticator'))) return false;
return this.get('session.authenticator') !== 'authenticator:anonymous' && this.get('session.content.authenticated.user.id') !== '0';
}),