mirror of
https://github.com/documize/community.git
synced 2025-07-28 09:39:42 +02:00
Add document model and push document data to store
This commit is contained in:
parent
a78a73d552
commit
624d00402e
10 changed files with 140 additions and 21 deletions
14
app/app/models/attachment.js
Normal file
14
app/app/models/attachment.js
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
import Model from 'ember-data/model';
|
||||||
|
import attr from 'ember-data/attr';
|
||||||
|
// import { belongsTo, hasMany } from 'ember-data/relationships';
|
||||||
|
|
||||||
|
export default Model.extend({
|
||||||
|
documentId: attr('string'),
|
||||||
|
extension: attr('string'),
|
||||||
|
fileId: attr('string'),
|
||||||
|
filename: attr('string'),
|
||||||
|
job: attr('string'),
|
||||||
|
orgId: attr('string'),
|
||||||
|
created: attr(),
|
||||||
|
revised: attr(),
|
||||||
|
});
|
23
app/app/models/document.js
Normal file
23
app/app/models/document.js
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
import Model from 'ember-data/model';
|
||||||
|
import attr from 'ember-data/attr';
|
||||||
|
import Ember from 'ember';
|
||||||
|
import stringUtil from '../utils/string';
|
||||||
|
// import { belongsTo, hasMany } from 'ember-data/relationships';
|
||||||
|
|
||||||
|
export default Model.extend({
|
||||||
|
name: attr('string'),
|
||||||
|
excerpt: attr('string'),
|
||||||
|
job: attr('string'),
|
||||||
|
location: attr('string'),
|
||||||
|
orgId: attr('string'),
|
||||||
|
folderId: attr('string'),
|
||||||
|
userId: attr('string'),
|
||||||
|
tags: attr('string'),
|
||||||
|
template: attr('string'),
|
||||||
|
|
||||||
|
// client-side property
|
||||||
|
selected: attr('boolean', { defaultValue: false }),
|
||||||
|
slug: Ember.computed('name', function () {
|
||||||
|
return stringUtil.makeSlug(this.get('name'));
|
||||||
|
})
|
||||||
|
});
|
7
app/app/models/folder.js
Normal file
7
app/app/models/folder.js
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
import Model from 'ember-data/model';
|
||||||
|
// import attr from 'ember-data/attr';
|
||||||
|
// import { belongsTo, hasMany } from 'ember-data/relationships';
|
||||||
|
|
||||||
|
export default Model.extend({
|
||||||
|
|
||||||
|
});
|
7
app/app/models/organization.js
Normal file
7
app/app/models/organization.js
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
import Model from 'ember-data/model';
|
||||||
|
// import attr from 'ember-data/attr';
|
||||||
|
// import { belongsTo, hasMany } from 'ember-data/relationships';
|
||||||
|
|
||||||
|
export default Model.extend({
|
||||||
|
|
||||||
|
});
|
14
app/app/models/page-meta.js
Normal file
14
app/app/models/page-meta.js
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
import Model from 'ember-data/model';
|
||||||
|
import attr from 'ember-data/attr';
|
||||||
|
// import { belongsTo, hasMany } from 'ember-data/relationships';
|
||||||
|
|
||||||
|
export default Model.extend({
|
||||||
|
pageId: attr('string'),
|
||||||
|
documentId: attr('string'),
|
||||||
|
orgId: attr('string'),
|
||||||
|
rawBody: attr('string'),
|
||||||
|
config: attr(),
|
||||||
|
externalSource: attr('boolean', { defaultValue: false }),
|
||||||
|
created: attr(),
|
||||||
|
revised: attr(),
|
||||||
|
});
|
32
app/app/models/page.js
Normal file
32
app/app/models/page.js
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
import Model from 'ember-data/model';
|
||||||
|
import attr from 'ember-data/attr';
|
||||||
|
import Ember from 'ember';
|
||||||
|
// import { belongsTo, hasMany } from 'ember-data/relationships';
|
||||||
|
|
||||||
|
export default Model.extend({
|
||||||
|
documentId: attr('string'),
|
||||||
|
orgId: attr('string'),
|
||||||
|
contentType: attr('string'),
|
||||||
|
level: attr('number', { defaultValue: 1 }),
|
||||||
|
sequence: attr('number', { defaultValue: 0 }),
|
||||||
|
revisions: attr('number', { defaultValue: 0 }),
|
||||||
|
title: attr('string'),
|
||||||
|
body: attr('string'),
|
||||||
|
rawBody: attr('string'),
|
||||||
|
meta: attr(),
|
||||||
|
created: attr(),
|
||||||
|
revised: attr(),
|
||||||
|
|
||||||
|
tagName: Ember.computed('level', function () {
|
||||||
|
return "h" + this.get('level');
|
||||||
|
}),
|
||||||
|
|
||||||
|
tocIndent: Ember.computed('level', function () {
|
||||||
|
return (this.get('level') - 1) * 20;
|
||||||
|
}),
|
||||||
|
|
||||||
|
tocIndentCss: Ember.computed('tocIndent', function () {
|
||||||
|
let tocIndent = this.get('tocIndent');
|
||||||
|
return `margin-left-${tocIndent}`;
|
||||||
|
})
|
||||||
|
});
|
7
app/app/models/template.js
Normal file
7
app/app/models/template.js
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
import Model from 'ember-data/model';
|
||||||
|
// import attr from 'ember-data/attr';
|
||||||
|
// import { belongsTo, hasMany } from 'ember-data/relationships';
|
||||||
|
|
||||||
|
export default Model.extend({
|
||||||
|
|
||||||
|
});
|
|
@ -10,18 +10,23 @@
|
||||||
// https://documize.com
|
// https://documize.com
|
||||||
|
|
||||||
import Ember from 'ember';
|
import Ember from 'ember';
|
||||||
import models from '../utils/model';
|
|
||||||
|
const {
|
||||||
|
inject: { service }
|
||||||
|
} = Ember;
|
||||||
|
|
||||||
export default Ember.Service.extend({
|
export default Ember.Service.extend({
|
||||||
sessionService: Ember.inject.service('session'),
|
sessionService: service('session'),
|
||||||
ajax: Ember.inject.service(),
|
ajax: service(),
|
||||||
|
store: service(),
|
||||||
|
|
||||||
// Returns document model for specified document id.
|
// Returns document model for specified document id.
|
||||||
getDocument(documentId) {
|
getDocument(documentId) {
|
||||||
return this.get('ajax').request(`documents/${documentId}`, {
|
return this.get('ajax').request(`documents/${documentId}`, {
|
||||||
method: "GET"
|
method: "GET"
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
return models.DocumentModel.create(response);
|
let doc = this.get('store').normalize('document', response);
|
||||||
|
return this.get('store').push({ data: doc });
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -34,8 +39,9 @@ export default Ember.Service.extend({
|
||||||
content: Ember.A([])
|
content: Ember.A([])
|
||||||
});
|
});
|
||||||
|
|
||||||
_.each(response, function (doc) {
|
_.each(response, (doc) => {
|
||||||
let documentModel = models.DocumentModel.create(doc);
|
let data = this.get('store').normalize('document', doc);
|
||||||
|
let documentModel = this.get('store').push({ data: data });
|
||||||
documents.pushObject(documentModel);
|
documents.pushObject(documentModel);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -53,7 +59,8 @@ export default Ember.Service.extend({
|
||||||
});
|
});
|
||||||
|
|
||||||
_.each(response, function (doc) {
|
_.each(response, function (doc) {
|
||||||
let documentModel = models.DocumentModel.create(doc);
|
let data = this.get('store').normalize('document', doc);
|
||||||
|
let documentModel = this.get('store').push({ data: data });
|
||||||
documents.pushObject(documentModel);
|
documents.pushObject(documentModel);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -192,8 +199,10 @@ export default Ember.Service.extend({
|
||||||
method: 'GET'
|
method: 'GET'
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
let data = [];
|
let data = [];
|
||||||
_.each(response, function (obj) {
|
_.each(response, (obj) => {
|
||||||
data.pushObject(models.PageModel.create(obj));
|
let data = this.get('store').normalize('page', obj);
|
||||||
|
let tableOfContents = this.get('store').push({ data: data });
|
||||||
|
data.pushObject(tableOfContents);
|
||||||
});
|
});
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
|
@ -208,8 +217,10 @@ export default Ember.Service.extend({
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
let pages = [];
|
let pages = [];
|
||||||
|
|
||||||
_.each(response, function (page) {
|
_.each(response, (page) => {
|
||||||
pages.pushObject(models.PageModel.create(page));
|
let data = this.get('store').normalize('page', page);
|
||||||
|
let pageData = this.get('store').push({ data: data });
|
||||||
|
pages.pushObject(pageData);
|
||||||
});
|
});
|
||||||
|
|
||||||
return pages;
|
return pages;
|
||||||
|
@ -222,8 +233,8 @@ export default Ember.Service.extend({
|
||||||
return this.get('ajax').request(`documents/${documentId}/pages/${pageId}`, {
|
return this.get('ajax').request(`documents/${documentId}/pages/${pageId}`, {
|
||||||
method: 'GET'
|
method: 'GET'
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
let page = models.PageModel.create(response);
|
let data = this.get('store').normalize('page', response);
|
||||||
return page;
|
return this.get('store').push({ data: data });
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -233,8 +244,8 @@ export default Ember.Service.extend({
|
||||||
return this.get('ajax').request(`documents/${documentId}/pages/${pageId}/meta`, {
|
return this.get('ajax').request(`documents/${documentId}/pages/${pageId}/meta`, {
|
||||||
method: 'GET'
|
method: 'GET'
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
let meta = models.PageMetaModel.create(response);
|
let data = this.get('store').normalize('page-meta', response);
|
||||||
return meta;
|
return this.get('store').push({ data: data });
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -246,7 +257,9 @@ export default Ember.Service.extend({
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
let data = [];
|
let data = [];
|
||||||
_.each(response, function (obj) {
|
_.each(response, function (obj) {
|
||||||
data.pushObject(models.AttachmentModel.create(obj));
|
let data = this.get('store').normalize('attachment', obj);
|
||||||
|
let attachments = this.get('store').push({ data: data });
|
||||||
|
data.pushObject(attachments);
|
||||||
});
|
});
|
||||||
return data;
|
return data;
|
||||||
});
|
});
|
||||||
|
|
|
@ -14,13 +14,15 @@ import models from '../utils/model';
|
||||||
import BaseService from '../services/base';
|
import BaseService from '../services/base';
|
||||||
|
|
||||||
const {
|
const {
|
||||||
get
|
get,
|
||||||
|
inject: { service }
|
||||||
} = Ember;
|
} = Ember;
|
||||||
|
|
||||||
export default BaseService.extend({
|
export default BaseService.extend({
|
||||||
sessionService: Ember.inject.service('session'),
|
sessionService: service('session'),
|
||||||
ajax: Ember.inject.service(),
|
ajax: service(),
|
||||||
localStorage: Ember.inject.service(),
|
localStorage: service(),
|
||||||
|
store: service(),
|
||||||
|
|
||||||
// selected folder
|
// selected folder
|
||||||
currentFolder: null,
|
currentFolder: null,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue