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

Create folder model and push data into the store

This commit is contained in:
zinyando 2016-08-11 10:47:53 +02:00
parent 624d00402e
commit 87f7631880
5 changed files with 93 additions and 21 deletions

View file

@ -0,0 +1,12 @@
import Model from 'ember-data/model';
import attr from 'ember-data/attr';
// import { belongsTo, hasMany } from 'ember-data/relationships';
export default Model.extend({
orgId: attr('string'),
folderId: attr('string'),
userId: attr('string'),
fullname: attr('string'),
canView: attr('boolean', { defaultValue: false }),
canEdit: attr('boolean', { defaultValue: false })
});

View file

@ -1,7 +1,33 @@
import Model from 'ember-data/model';
// import attr from 'ember-data/attr';
import attr from 'ember-data/attr';
import constants from '../utils/constants';
import stringUtil from '../utils/string';
// import { belongsTo, hasMany } from 'ember-data/relationships';
export default Model.extend({
name: attr('string'),
orgId: attr('string'),
userId: attr('string'),
folderType: constants.FolderType.Private,
slug: Ember.computed('name', function () {
return stringUtil.makeSlug(this.get('name'));
}),
markAsRestricted: function () {
this.set('folderType', constants.FolderType.Protected);
},
markAsPrivate: function () {
this.set('folderType', constants.FolderType.Private);
},
markAsPublic: function () {
this.set('folderType', constants.FolderType.Public);
},
// client-side prop that holds who can see this folder
sharedWith: attr(),
created: attr(),
revised: attr()
});

View file

@ -0,0 +1,17 @@
import Model from 'ember-data/model';
import attr from 'ember-data/attr';
// import { belongsTo, hasMany } from 'ember-data/relationships';
export default Model.extend({
userId: attr('string'),
email: attr('string'),
firstname: attr('string'),
lastname: attr('string'),
name: attr('string'),
folderId: attr('string'),
folderType: attr('number', { defaultValue: 0 }),
fullname: Ember.computed('firstname', 'lastname', function () {
return `${this.get('firstname')} ${this.get('lastname')}`;
})
});

View file

@ -0,0 +1,11 @@
import ApplicationSerializer from './application';
export default ApplicationSerializer.extend({
normalize(modelClass, resourceHash) {
return {
id: resourceHash.folderId,
type: modelClass.modelName,
attributes: resourceHash
};
}
});

View file

@ -10,8 +10,8 @@
// https://documize.com
import Ember from 'ember';
import models from '../utils/model';
import BaseService from '../services/base';
import models from '../utils/model';
const {
get,
@ -35,8 +35,8 @@ export default BaseService.extend({
contentType: 'json',
data: JSON.stringify(folder)
}).then((folder) => {
let folderModel = models.FolderModel.create(folder);
return folderModel;
let data = this.get('store').normalize('folder', folder);
return this.get('store').push({ data: data });
});
},
@ -45,19 +45,18 @@ export default BaseService.extend({
return this.get('ajax').request(`folders/${id}`, {
method: 'GET'
}).then((response) => {
let folder = models.FolderModel.create(response);
return folder;
}).then((folder) => {
let data = this.get('store').normalize('folder', folder);
return this.get('store').push({ data: data });
});
},
// Returns all folders that user can see.
getAll() {
let self = this;
if (this.get('folders') != null) {
return new Ember.RSVP.Promise(function (resolve) {
resolve(self.get('folders'));
return new Ember.RSVP.Promise((resolve) => {
resolve(this.get('folders'));
});
} else {
return this.reload();
@ -75,7 +74,7 @@ export default BaseService.extend({
});
},
remove: function (folderId, moveToId) {
remove(folderId, moveToId) {
let url = `folders/${folderId}/move/${moveToId}`;
return this.get('ajax').request(url, {
@ -83,7 +82,7 @@ export default BaseService.extend({
});
},
onboard: function (folderId, payload) {
onboard(folderId, payload) {
let url = `public/share/${folderId}`;
return this.get('ajax').post(url, {
@ -93,13 +92,16 @@ export default BaseService.extend({
},
// getProtectedFolderInfo returns non-private folders and who has access to them.
getProtectedFolderInfo: function () {
getProtectedFolderInfo() {
return this.get('ajax').request(`folders?filter=viewers`, {
method: "GET"
}).then((response) => {
let data = [];
_.each(response, function (obj) {
data.pushObject(models.ProtectedFolderParticipant.create(obj));
_.each(response, (obj) => {
debugger;
let participantData = this.get('store').normalize('protected-folder-participant', obj);
let participant = this.get('store').push({ data: participantData });
data.pushObject(participant);
});
return data;
@ -113,8 +115,10 @@ export default BaseService.extend({
method: "GET"
}).then((response) => {
let data = [];
_.each(response, function (obj) {
data.pushObject(models.FolderModel.create(obj));
_.each(response, (obj) => {
let folderData = this.get('store').normalize('folder', obj);
let folder = this.get('store').push({ data: folderData });
data.pushObject(folder);
});
return data;
@ -128,8 +132,10 @@ export default BaseService.extend({
method: "GET"
}).then((response) => {
let data = [];
_.each(response, function (obj) {
data.pushObject(models.FolderPermissionModel.create(obj));
_.each(response, (obj) => {
let permissionData = this.get('store').normalize('folder-permission', obj);
let permission = this.get('store').push({ data: permissionData });
data.pushObject(permission);
});
return data;
@ -183,7 +189,7 @@ export default BaseService.extend({
let result = [];
let folderId = folder.get('id');
folderPermissions.forEach(function (item) {
folderPermissions.forEach((item) => {
if (item.folderId === folderId) {
result.push(item);
}
@ -191,7 +197,7 @@ export default BaseService.extend({
let canEdit = false;
result.forEach(function (permission) {
result.forEach((permission) => {
if (permission.userId === userId) {
canEdit = permission.canEdit;
}