app/assets/javascripts/task-manager/extjs/app/model/Plan.js in task-manager-0.1.2 vs app/assets/javascripts/task-manager/extjs/app/model/Plan.js in task-manager-0.1.3
- old
+ new
@@ -1,54 +1,28 @@
Ext.define('TM.model.Plan', {
extend: 'Ext.data.Model',
fields: [
- { name: 'id', type: 'int' },
+ { name: 'id', type: 'int', persist: false },
{ name: 'name' },
{ name: 'plan_type' },
{ name: 'data', type: 'auto' },
- { name: 'dataX', convert: function(v, record) {
- return record.get('data').x;
- }},
- { name: 'dataY', convert: function(v, record) {
- return record.get('data').y;
- }},
- { name: 'quarterly_month', convert: function(v, record) {
- if (record.get('plan_type') == 'quarterly') return record.get('data').deadline_month;
- return null;
- }},
- { name: 'month', convert: function(v, record) {
- if (record.get('plan_type') == 'yearly') return record.get('data').deadline_month;
- return null;
- }},
- { name: 'weekly_day', convert: function(v, record) {
- if (record.get('plan_type') == 'weekly') return record.get('data').deadline_day;
- return null;
- }},
- { name: 'day', convert: function(v, record) {
- if (record.get('plan_type') != 'weekly') return record.get('data').deadline_day;
- return null;
- }},
- { name: 'hour', convert: function(v, record) {
- return record.get('data').deadline_hour;
- }},
- { name: 'minute', convert: function(v, record) {
- return record.get('data').deadline_minute;
- }},
{ name: 'autocompletable', type: 'boolean' },
{ name: 'begin_to_remind', type: 'int' },
{ name: 'enabled_at', type: 'date' },
{ name: 'last_task_created_at', type: 'date' },
- { name: 'created_at', type: 'date' },
- { name: 'updated_at', type: 'date' },
+ { name: 'created_at', type: 'date', persist: false },
+ { name: 'updated_at', type: 'date', persist: false },
- { name: 'assignees', type: 'auto' }
+ { name: 'assignees', type: 'auto', persist: false, defaultValue: [] },
+ { name: 'assignables_attributes', type: 'auto', defaultValue: [] },
+ { name: 'callables_attributes', type: 'auto', defaultValue: [] }
],
proxy: {
type: 'rest',
url: '/task-manager/api/plans',
@@ -56,135 +30,23 @@
root: 'plans',
totalProperty: 'total'
}
},
- set: function() {
- if (typeof arguments[0] === 'object') {
- this.callParent(arguments);
-
- obj = arguments[0];
- if (obj.data) {
- this.set('dataX', obj.data.x);
- this.set('dataY', obj.data.y);
- this.set('quarterly_month', obj.data.deadline_month);
- this.set('month', obj.data.deadline_month);
- this.set('weekly_day', obj.data.deadline_day);
- this.set('day', obj.data.deadline_day);
- this.set('hour', obj.data.deadline_hour);
- this.set('minute', obj.data.deadline_minute);
+ save: function(opts) {
+ var self = this;
+ opts = opts || {};
+ var success = opts.success;
+ opts.success = function(record, operation) {
+ self.set(Ext.JSON.decode(operation.response.responseText).plan);
+ self.commit();
+ if (operation.action === 'create') {
+ Ext.getStore('TM.store.Plans').insert(0, self);
}
- } else {
- this.callParent(arguments);
- }
- },
+ if(success) success.call(self);
+ };
- update: function(attrs, opts) {
- var self = this;
- var plan = Ext.create('TM.model.Plan', attrs);
-
- opts = opts || {};
- var success = opts.success;
-
- var assignables_attributes = new Array();
- Ext.Array.forEach(attrs.assignees, function(node, index, assignees) {
- var record = Ext.getStore('TM.store.Assignees').getById(node.get('id'));
- assignables_attributes.push({
- assignee_id: record.get('id'),
- assignee_type: record.get('class_name')
- });
- });
-
- var callables_attributes = new Array();
-
- Ext.apply(opts, {
- url: '/task-manager/api/plans/'+this.get('id'),
- method: 'PUT',
- jsonData: {
- plan: {
- data: {
- x: attrs.dataX,
- y: attrs.dataY,
- deadline_month: attrs.plan_type == 'quarterly' ? attrs.quarterly_month : (attrs.plan_type == 'yearly' ? attrs.month : null),
- deadline_day: attrs.plan_type == 'weekly' ? attrs.weekly_day : (attrs.plan_type == 'daily' ? null : attrs.day),
- deadline_hour: attrs.hour,
- deadline_minute: attrs.minute
- },
- name: attrs.name,
- plan_type: attrs.plan_type,
- enabled_at: attrs.enabled_at,
- begin_to_remind: attrs.begin_to_remind,
- autocompletable: attrs.autocompletable,
- assignables_attributes: assignables_attributes,
- callables_attributes: callables_attributes
- }
- },
- success: function(response) {
- var obj = Ext.JSON.decode(response.responseText);
- self.set(obj.plan);
- self.commit();
-
- if(success) success.call(opts.scope || this);
- }
- });
- Ext.Ajax.request(opts);
-
- return plan;
- },
-
- statics: {
- create: function(attrs, opts) {
- var plan = Ext.create('TM.model.Plan', attrs);
-
- opts = opts || {};
- var success = opts.success;
-
- var assignables_attributes = new Array();
- Ext.Array.forEach(attrs.assignees, function(node, index, assignees) {
- var record = Ext.getStore('TM.store.Assignees').getById(node.get('id'));
- assignables_attributes.push({
- assignee_id: record.get('id'),
- assignee_type: record.get('class_name')
- })
- });
-
- var callables_attributes = new Array();
-
- Ext.apply(opts, {
- url: '/task-manager/api/plans',
- method: 'POST',
- jsonData: {
- plan: {
- data: {
- x: attrs.dataX,
- y: attrs.dataY,
- deadline_month: attrs.plan_type == 'quarterly' ? attrs.quarterly_month : (attrs.plan_type == 'yearly' ? attrs.month : null),
- deadline_day: attrs.plan_type == 'weekly' ? attrs.weekly_day : (attrs.plan_type == 'daily' ? null : attrs.day),
- deadline_hour: attrs.hour,
- deadline_minute: attrs.minute
- },
- name: attrs.name,
- plan_type: attrs.plan_type,
- enabled_at: attrs.enabled_at,
- begin_to_remind: attrs.begin_to_remind,
- autocompletable: attrs.autocompletable,
- assignables_attributes: assignables_attributes,
- callables_attributes: callables_attributes
- }
- },
- success: function(response) {
- var obj = Ext.JSON.decode(response.responseText);
- plan.set(obj.plan);
- //plan.set('dataX', obj.plan.data.x);
- plan.commit();
-
- if(success) success.call(opts.scope || this);
- }
- });
- Ext.Ajax.request(opts);
-
- return plan;
- }
+ this.callParent([opts]);
},
destroy: function() {
this.callParent(arguments);