diff --git a/app.js b/app.js index 178dd7b9..c51b0697 100644 --- a/app.js +++ b/app.js @@ -2,6 +2,12 @@ * This file is responsible for launching the application. Application logic should be * placed in the NgcpCsc.Application class. */ + + Ext.Ajax.on("beforerequest",function(con){ + con.setUseDefaultXhrHeader(false); + con.setWithCredentials(true); + }); + Ext.application({ name: 'NgcpCsc', diff --git a/app/model/Reminder.js b/app/model/Reminder.js index bd28f2b4..78ac77c7 100644 --- a/app/model/Reminder.js +++ b/app/model/Reminder.js @@ -1,15 +1,53 @@ Ext.define('NgcpCsc.model.Reminder', { extend: 'Ext.data.Model', - fields: ["reminder_status", "timer", "recurrence"], + requires: ['NgcpCsc.proxy.NgcpApi'], - proxy: { - type: 'ajax', - url: '/resources/data/reminder.json', - autoLoad: true, - reader: { - type: 'json', - rootProperty: 'data' + fields: [{ + name: "_embedded", + persist: false + }, { + name: "_links", + persist: false + }, { + name: "total_count", + persist: false + }, { + name: "id", + persist: false + }, { + name: "recur", + mapping: function(data) { + return data._embedded['ngcp:reminders'][0].recur; + } + }, { + name: "time", + type: "date", + dateFormat: 'H:m:s', + mapping: function(data) { + return data._embedded['ngcp:reminders'][0].time; + } + }, { + name: "reminder_status", + mapping: function(data) { + return true; + } + }, { + name: "subscriber_id", + mapping: function(data) { + return data._embedded['ngcp:reminders'][0].subscriber_id; } + }], + + // this replace the temprary Model ID in VM links + onLoad: function() { + this.set("id", this.data._embedded['ngcp:reminders'][0].id); + this.commit(); + }, + + proxy: { + type: 'ngcp-api', + route: 'reminders', + params: 'subscriber_id=175' } }); diff --git a/app/proxy/NgcpApi.js b/app/proxy/NgcpApi.js new file mode 100644 index 00000000..21204181 --- /dev/null +++ b/app/proxy/NgcpApi.js @@ -0,0 +1,47 @@ +/** +Ex. usage in model/store: +proxy: { + type: 'ngcp-api', + route: 'reminders/', + autoLoad: true +} +**/ +Ext.define('NgcpCsc.proxy.NgcpApi', { + extend: 'Ext.data.proxy.Ajax', + alias: 'proxy.ngcp-api', + /* temporary authentication, should be bound to auth token once implemented*/ + withCredentials: true, + username: 'administrator', + password: 'administrator', + baseApiUrl: 'https://localhost:1443/api/', + autoLoad: true, + appendId: false, + actionMethods: { + read: 'GET', + create: 'POST', + update: 'PUT', + destroy: 'DELETE' + }, + buildUrl: function(request) { + var me = this; + var action = request._action; + var url, records; + switch(action){ + case 'read' : + url = Ext.String.format('{0}{1}/?{2}', me.baseApiUrl, me.route, me.params); + break; + case 'update' : + records = request._records; + url = Ext.String.format('{0}{1}/{2}', me.baseApiUrl, me.route, records[0].get('id')); + break; + } + request._url = url; + return me.callParent(arguments); + }, + reader: { + type: 'json' + }, + writer: { + writeAllFields: true + } +}); diff --git a/classic/src/view/pages/reminder/Reminder.js b/classic/src/view/pages/reminder/Reminder.js index 55671224..7a6f2a2a 100644 --- a/classic/src/view/pages/reminder/Reminder.js +++ b/classic/src/view/pages/reminder/Reminder.js @@ -42,18 +42,23 @@ Ext.define('NgcpCsc.view.pages.reminder.Reminder', { }, { xtype: 'form', layout: 'responsivecolumn', + defaults:{ + listeners: { + change: 'saveReminder' + } + }, items: [{ flex: 1, userCls: 'small-100 big-50', xtype: 'timefield', fieldLabel: Ngcp.csc.locales.reminder.time[localStorage.getItem('languageSelected')], - format: 'H:i', - minValue: '0:00', - maxValue: '23:50', - increment: 10, + format: 'H:i:s', + minValue: '0:00:00', + maxValue: '23:50:00', + increment: 5, editable: false, bind: { - value: '{reminder.timer}', + value: '{reminder.time}', disabled: '{!reminder.reminder_status}' } }, { @@ -66,7 +71,7 @@ Ext.define('NgcpCsc.view.pages.reminder.Reminder', { columns: 1, simpleValue: true, bind: { - value: '{reminder.recurrence}', + value: '{reminder.recur}', disabled: '{!reminder.reminder_status}' }, defaults: { diff --git a/classic/src/view/pages/reminder/ReminderController.js b/classic/src/view/pages/reminder/ReminderController.js index 94441dff..0e99d1ab 100644 --- a/classic/src/view/pages/reminder/ReminderController.js +++ b/classic/src/view/pages/reminder/ReminderController.js @@ -2,7 +2,7 @@ Ext.define('NgcpCsc.view.pages.reminder.ReminderController', { extend: 'Ext.app.ViewController', alias: 'controller.reminder', - clickActiveInactiveButton: function () { + clickActiveInactiveButton: function() { var vm = this.getViewModel(); var currentReminderIsMode = vm.get('reminder.reminder_status'); switch (currentReminderIsMode) { @@ -13,6 +13,24 @@ Ext.define('NgcpCsc.view.pages.reminder.ReminderController', { this.fireEvent('showmessage', true, Ngcp.csc.locales.reminder.reminder_set_to_active[localStorage.getItem('languageSelected')]); break; }; + }, + saveReminder: function() { + var me = this; + var reminderRec = this.getViewModel().get('reminder'); + Ext.defer(function() { + if (reminderRec.dirty) { + reminderRec.save({ + failure: function(record, operation) { + me.fireEvent('showmessage', true, Ngcp.csc.locales.common.save_unsuccess[localStorage.getItem('languageSelected')]); + }, + success: function(record, operation) { + me.fireEvent('showmessage', true, Ngcp.csc.locales.common.save_success[localStorage.getItem('languageSelected')]); + }, + callback: function(record, operation, success) { + // do something whether the save succeeded or failed + } + }); + } + }, 1); } - }); diff --git a/classic/src/view/pages/reminder/ReminderModel.js b/classic/src/view/pages/reminder/ReminderModel.js index 9a322c2e..d16f83b2 100644 --- a/classic/src/view/pages/reminder/ReminderModel.js +++ b/classic/src/view/pages/reminder/ReminderModel.js @@ -1,6 +1,7 @@ Ext.define('NgcpCsc.view.pages.account.ReminderModel', { extend: 'Ext.app.ViewModel', alias: 'viewmodel.reminder', + session: true, links: { reminder: { type: 'NgcpCsc.model.Reminder', diff --git a/resources/data/reminder.json b/resources/data/reminder.json deleted file mode 100644 index 75b67dbf..00000000 --- a/resources/data/reminder.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "data": [ - { - "reminder_status": true, - "timer": "17:50", - "recurrence": "never" - } - ] -}