diff --git a/app/utils/locales.js b/app/utils/locales.js index 90dee743..9e1fd334 100644 --- a/app/utils/locales.js +++ b/app/utils/locales.js @@ -1050,6 +1050,9 @@ Ext.define('Ngcp.csc.locales', { en: 'Only numbers allowed. Please retry.', it: 'Only numbers allowed. Please retry.' }, + invalid_times: { + en: 'There are invalid time periods in the timeset; allowed fields are Weekday and Hour. Please fix your time periods or reset the timeset by clicking on Create button.' + }, tooltips: { change_time_from: { en: 'Change time from', @@ -1367,15 +1370,15 @@ Ext.define('Ngcp.csc.locales', { sp: 'With your 4-digit PIN you may query your voicebox from any telephone.' } }, - contacts:{ - title:{ + contacts: { + title: { en: 'Contacts', it: 'Contacts', de: 'Contacts', fr: 'Contacts', sp: 'Contacts' }, - delete_user:{ + delete_user: { en: 'Do you really want to delete {0} from your Personal Addressbook?', it: 'Do you really want to delete {0} from your Personal Addressbook?', de: 'Do you really want to delete {0} from your Personal Addressbook?', @@ -2107,14 +2110,14 @@ Ext.define('Ngcp.csc.locales', { } }, devices: { - delete_assignment:{ + delete_assignment: { en: 'Do you really want to unassign button {0}?', it: 'Do you really want to unassign button {0}?', de: 'Do you really want to unassign button {0}?', fr: 'Do you really want to unassign button {0}?', sp: 'Do you really want to unassign button {0}?' }, - tooltip:{ + tooltip: { click: { en: 'Click to edit or remove', it: 'Click to edit or remove', @@ -2133,6 +2136,9 @@ Ext.define('Ngcp.csc.locales', { } }, common: { + create: { + en: 'CREATE' + }, edit: { en: 'Edit', it: 'Edit', diff --git a/classic/sass/src/view/pages/callforward/CallForward.scss b/classic/sass/src/view/pages/callforward/CallForward.scss index 93a55780..1ec556c5 100644 --- a/classic/sass/src/view/pages/callforward/CallForward.scss +++ b/classic/sass/src/view/pages/callforward/CallForward.scss @@ -101,3 +101,7 @@ background: #B0FFC5; color: black; } +.cf-invalid-period-box { + padding: 2px; + color: red; +} diff --git a/classic/src/view/pages/callforward/CallForwardController.js b/classic/src/view/pages/callforward/CallForwardController.js index b20ce581..7bdebe58 100644 --- a/classic/src/view/pages/callforward/CallForwardController.js +++ b/classic/src/view/pages/callforward/CallForwardController.js @@ -41,8 +41,18 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', { store.sync(); }, - parseTimesetApiToRecords: function(times) { + checkIncompatibleTimeset: function(timeSlot){ + var mday = timeSlot.mday; + var minute = timeSlot.minute; + var month = timeSlot.month; + var year = timeSlot.year; + return mday || minute || month || year; + }, + + parseTimesetApiToRecords: function(times, timesetName) { var retData = []; + var me = this; + var vm = me.getViewModel(); var weekDaysMap = { 1: 'Sunday', 2: 'Monday', @@ -56,6 +66,11 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', { var days = timeSlot.wday.split('-'); var fromHour = timeSlot.hour ? parseInt(timeSlot.hour.split('-')[0]) : null; var toHour = timeSlot.hour ? parseInt(timeSlot.hour.split('-')[1]) : null; + var checkIncompatibleTimeset = me.checkIncompatibleTimeset(timeSlot); + if(checkIncompatibleTimeset){ + vm.set(me.getTimesetPrexifFromName(timesetName) + '_add_text', '
' + Ngcp.csc.locales.callforward.invalid_times[localStorage.getItem('languageSelected')] + '
'); + return; + } if (days.length > 1) { var fromDay = parseInt(days[0]); var toDay = parseInt(days[1]); @@ -87,14 +102,16 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', { break; default: return 0; - } }, cfTimesetStoreLoaded: function(store, data) { var me = this; var arrayOfModels = []; + var vm = this.getViewModel(); + var currentRoute = window.location.hash; var timesets; + if (data.getData()._embedded == undefined) { return; } else { @@ -104,9 +121,8 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', { Ext.each(timesets, function(timeset) { var timesetName = timeset.name; var timesetId = timeset.id; - me.setVmToTrue(timesetName); if (/(After|Company)\s(Hours)/.test(timesetName)) { - var times = me.parseTimesetApiToRecords(timeset.times); + var times = me.parseTimesetApiToRecords(timeset.times, timesetName); Ext.each(times, function(time) { var cfModel = Ext.create('NgcpCsc.model.CallForwardDestination', { id: Ext.id(), @@ -117,22 +133,25 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', { day: time.day }); arrayOfModels.push(cfModel); + me.setVmToTrue(timesetName, true); }); }; }); if (arrayOfModels.length > 0) { me.populateTimesetStores(arrayOfModels); - }; + }else{ + me.setVmToTrue(me.getTimesetFromRoute(currentRoute), false); + } }, - setVmToTrue: function(name) { + setVmToTrue: function(name, exists) { var vm = this.getViewModel(); switch (name) { case 'After Hours': - vm.set('after_hours_exists_in_api', true); + vm.set('after_hours_exists_in_api', exists); break; case 'Company Hours': - vm.set('company_hours_exists_in_api', true); + vm.set('company_hours_exists_in_api', exists); break; }; }, @@ -147,7 +166,6 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', { Ext.each(sourcesets, function(sourceset) { var sourcesetName = sourceset.name; var sourcesetId = sourceset.id; - $cf.setVmToTrue(sourcesetName); Ext.each(sourceset.sources, function(sourceEntry) { arrayOfModels.push(Ext.create('NgcpCsc.model.CallForwardDestination', { id: Ext.id(), @@ -178,6 +196,17 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', { }; }, + getTimesetPrexifFromName: function(timesetName) { + switch (timesetName) { + case ('Company Hours'): + return 'company_hours'; + break; + case ('After Hours'): + return 'after_hours'; + break; + }; + }, + getStoreNameFromRoute: function(route) { switch (route) { case ('#callforward/always'): diff --git a/classic/src/view/pages/callforward/CallForwardModel.js b/classic/src/view/pages/callforward/CallForwardModel.js index f35dd465..18c09727 100644 --- a/classic/src/view/pages/callforward/CallForwardModel.js +++ b/classic/src/view/pages/callforward/CallForwardModel.js @@ -33,7 +33,9 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardModel', { offline_then_number: '', offline_then_timeout: '10', after_hours_exists_in_api: false, + after_hours_add_text: Ngcp.csc.locales.callforward.no_after_hours_set[localStorage.getItem('languageSelected')], company_hours_exists_in_api: false, + company_hours_add_text: Ngcp.csc.locales.callforward.no_company_hours_set[localStorage.getItem('languageSelected')], last_store_synced: '', cft_ringtimeout: '15', arrayOfDestModels: null, diff --git a/classic/src/view/pages/callforward/afterhours/AfterHours.js b/classic/src/view/pages/callforward/afterhours/AfterHours.js index 44ce289f..7bc92aa9 100644 --- a/classic/src/view/pages/callforward/afterhours/AfterHours.js +++ b/classic/src/view/pages/callforward/afterhours/AfterHours.js @@ -50,10 +50,24 @@ Ext.define('NgcpCsc.view.pages.callforward.afterhours.Afterhours', { items: [{ xtype: 'panel', margin: '10 0 10 0', - html: Ngcp.csc.locales.callforward.no_after_hours_set[localStorage.getItem('languageSelected')], bind: { hidden: '{after_hours_exists_in_api}' - } + }, + items: [{ + bind: { + html: '{after_hours_add_text}' + } + }, { + width: '100%', + layout:'hbox', + items: [{ + flex: 5 + },{ + flex: 1, + xtype: 'button', + text: Ngcp.csc.locales.common.create[localStorage.getItem('languageSelected')] + }] + }] }, callForwardAfterGrid, { text: Ngcp.csc.locales.common.save_caps[localStorage.getItem('languageSelected')], diff --git a/classic/src/view/pages/callforward/companyhours/CompanyHours.js b/classic/src/view/pages/callforward/companyhours/CompanyHours.js index 54dc2ff6..8097024a 100644 --- a/classic/src/view/pages/callforward/companyhours/CompanyHours.js +++ b/classic/src/view/pages/callforward/companyhours/CompanyHours.js @@ -50,17 +50,30 @@ Ext.define('NgcpCsc.view.pages.callforward.companyhours.Companyhours', { items: [{ xtype: 'panel', margin: '10 0 10 0', - html: Ngcp.csc.locales.callforward.no_company_hours_set[localStorage.getItem('languageSelected')], bind: { hidden: '{company_hours_exists_in_api}' - } + }, + items: [{ + bind: { + html: '{company_hours_add_text}' + } + }, { + width: '100%', + layout:'hbox', + items: [{ + flex: 5 + },{ + flex: 1, + xtype: 'button', + text: Ngcp.csc.locales.common.create[localStorage.getItem('languageSelected')] + }] + }] }, - callForwardCompanyGrid, - { + callForwardCompanyGrid, { text: Ngcp.csc.locales.common.save_caps[localStorage.getItem('languageSelected')], xtype: 'button', - cls: 'x-btn-left', id: 'companyHours-saveButton', + cls: 'x-btn-left', width: 135, margin: '10 0 10 585', listeners: {