TT#21900 Ngcp-csc CallForwarding > Show the list of existing time periods

Change-Id: Ie6f5b474025fe14e5658aa2ffbb342810f752d57
changes/14/15414/7
Carlo 8 years ago
parent 483bb04351
commit 61130f1cea

@ -41,6 +41,46 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
store.sync(); store.sync();
}, },
parseTimesetApiToRecords: function(times) {
var retData = [];
var weekDaysMap = {
1: 'Sunday',
2: 'Monday',
3: 'Tuesday',
4: 'Wednesday',
5: 'Thursday',
6: 'Friday',
7: 'Saturday'
};
Ext.each(times, function(timeSlot) {
var days = timeSlot.wday.split('-');
var fromHour = parseInt(timeSlot.hour.split('-')[0]);
var toHour = parseInt(timeSlot.hour.split('-')[1]) || null;
if (days.length > 1) {
var fromDay = parseInt(days[0]);
var toDay = parseInt(days[1]);
while (fromDay < toDay) {
days.push(fromDay.toString())
fromDay++;
}
}
days = Ext.Array.unique(days).sort();
Ext.each(days, function(day) {
retData.push({
day: weekDaysMap[day],
dayArrIndex: day, // needed for sorting
timeFrom: fromHour.toString(),
timeTo: toHour ? toHour.toString() : null
});
});
});
return Ext.Array.sort(retData, this.sortTimeSlots);
},
sortTimeSlots: function(timeSlot1, timeSlot2) {
return timeSlot1.dayArrIndex > timeSlot2.dayArrIndex;
},
cfTimesetStoreLoaded: function(store, data) { cfTimesetStoreLoaded: function(store, data) {
var me = this; var me = this;
var arrayOfModels = []; var arrayOfModels = [];
@ -56,16 +96,18 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
var timesetId = timeset.id; var timesetId = timeset.id;
me.setVmToTrue(timesetName); me.setVmToTrue(timesetName);
if (/(After|Company)\s(Hours)/.test(timesetName)) { if (/(After|Company)\s(Hours)/.test(timesetName)) {
var times = me.getModelValuesFromTimesData(timeset.times[0]); var times = me.parseTimesetApiToRecords(timeset.times);
Ext.each(times.days, function(weekday) { Ext.each(times, function(time) {
var cfModel = Ext.create('NgcpCsc.model.CallForwardDestination', { var cfModel = Ext.create('NgcpCsc.model.CallForwardDestination', {
id: Ext.id(), id: Ext.id(),
timeset_name: timesetName, timeset_name: timesetName,
timeset_id: timesetId, timeset_id: timesetId,
time_from: times.timeFrom, time_from: time.timeFrom,
time_to: times.timeTo, time_to: time.timeTo,
day: weekday, day: time.day,
closed: false closed: false // TODO: (For PUT/PATCH ticket) decide
// if we should keep this, or solve this
// differently, or not at all
}); });
arrayOfModels.push(cfModel); arrayOfModels.push(cfModel);
}); });
@ -110,9 +152,9 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
}); });
} }
$cf.createSourcesetTabs(sourcesets); $cf.createSourcesetTabs(sourcesets);
Ext.defer(function(){ Ext.defer(function() {
$cf.populateSourcesetStores(arrayOfModels); $cf.populateSourcesetStores(arrayOfModels);
},100) }, 100)
}, },
getTimesetFromRoute: function(route) { getTimesetFromRoute: function(route) {
@ -129,7 +171,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
}; };
}, },
getStoreNameFromRoute: function (route) { getStoreNameFromRoute: function(route) {
switch (route) { switch (route) {
case ('#callforward/always'): case ('#callforward/always'):
return 'CallForwardAlways'; return 'CallForwardAlways';
@ -143,7 +185,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
}; };
}, },
sortDestinationsetByPriority: function (destinations) { sortDestinationsetByPriority: function(destinations) {
var sorted = destinations.sort(function(a, b) { var sorted = destinations.sort(function(a, b) {
return parseFloat(a.priority) - parseFloat(b.priority); return parseFloat(a.priority) - parseFloat(b.priority);
}); });
@ -161,7 +203,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
} }
}, },
hasMappings: function (mapping) { hasMappings: function(mapping) {
return mapping.length !== 0; return mapping.length !== 0;
}, },
@ -268,7 +310,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
if (data.destination !== 'own phone') { if (data.destination !== 'own phone') {
switch (recordsToSend.length === 0 || !me.hasDestinationWithId(recordsToSend, data.destinationset_id)) { switch (recordsToSend.length === 0 || !me.hasDestinationWithId(recordsToSend, data.destinationset_id)) {
case true: case true:
// if recordsToSend array is empty or recordsToSend does not already contain current destinationset already // if recordsToSend array is empty or recordsToSend does not already contain current destinationset already
if (data.timeout) { if (data.timeout) {
recordsToSend.push({ recordsToSend.push({
id: data.destinationset_id, id: data.destinationset_id,
@ -291,8 +333,8 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
}; };
break; break;
case false: case false:
// if destinationset has already been added to recordsToSend, push to the records field for that destinationset, // if destinationset has already been added to recordsToSend, push to the records field for that destinationset,
// building up an array of destination objects to write to API // building up an array of destination objects to write to API
recordsToSend.forEach(function(obj, index) { recordsToSend.forEach(function(obj, index) {
if (obj.id == data.destinationset_id) { if (obj.id == data.destinationset_id) {
if (data.timeout) { if (data.timeout) {
@ -366,7 +408,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
return false; return false;
}, },
cfReLoadStore: function () { cfReLoadStore: function() {
var me = this; var me = this;
var vm = this.getViewModel(); var vm = this.getViewModel();
var currentRoute = window.location.hash; var currentRoute = window.location.hash;
@ -376,7 +418,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
}; };
}, },
cfSourcesetBeforeSync: function (store, options) { cfSourcesetBeforeSync: function(store, options) {
// Using Ajax request here as we are using different url // Using Ajax request here as we are using different url
// params for PATCH compared to GET // params for PATCH compared to GET
delete options['destroy']; delete options['destroy'];
@ -559,9 +601,9 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
var store = Ext.getStore(moduleName + '-Timeset'); var store = Ext.getStore(moduleName + '-Timeset');
if (store.getCount() === 0) { if (store.getCount() === 0) {
Ext.each(models, function(model) { Ext.each(models, function(model) {
if (moduleName == 'afterours' && model.get('timeset_name') == 'After Hours') { if (moduleName == 'afterhours' && model.get('timeset_name') == 'After Hours') {
store.add(model); store.add(model);
} else if (moduleName == 'companyours' && model.get('timeset_name') == 'Company Hours') { } else if (moduleName == 'companyhours' && model.get('timeset_name') == 'Company Hours') {
store.add(model); store.add(model);
}; };
}); });
@ -646,11 +688,11 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
}; };
}, },
addOwnPhoneToEmptyOnline: function () { addOwnPhoneToEmptyOnline: function() {
var $cf = this; var $cf = this;
var $vm = $cf.getViewModel(); var $vm = $cf.getViewModel();
var timeout = $vm.get('cftRingTimeout'); var timeout = $vm.get('cftRingTimeout');
var stores = Ext.data.StoreManager.filterBy(function (item, key) { var stores = Ext.data.StoreManager.filterBy(function(item, key) {
return (key.indexOf('CallForwardOnline') >= 0); return (key.indexOf('CallForwardOnline') >= 0);
}); });
Ext.each(stores.getRange(), function(store) { Ext.each(stores.getRange(), function(store) {
@ -765,7 +807,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
Ext.each(models, function(model) { Ext.each(models, function(model) {
var tabId = model.get('sourceset_name'); var tabId = model.get('sourceset_name');
var strippedSourcesetName = tabId.replace(/ /g, ''); var strippedSourcesetName = tabId.replace(/ /g, '');
if(!stores[strippedSourcesetName]){ if (!stores[strippedSourcesetName]) {
stores[strippedSourcesetName] = []; stores[strippedSourcesetName] = [];
} }
stores[strippedSourcesetName].push(model); stores[strippedSourcesetName].push(model);
@ -937,7 +979,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
// setCfuAsType() sets type to cfu for all destinations with given destinationset id, and returns // setCfuAsType() sets type to cfu for all destinations with given destinationset id, and returns
// the updated store // the updated store
setCfuAsType: function (store, id) { setCfuAsType: function(store, id) {
Ext.each(store.getRange(), function(record) { Ext.each(store.getRange(), function(record) {
if (record.get('destinationset_id') === id) { if (record.get('destinationset_id') === id) {
record.set('type', 'cfu'); record.set('type', 'cfu');
@ -946,12 +988,12 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
return store; return store;
}, },
recordHasStoreAndOwnPhone: function (record) { recordHasStoreAndOwnPhone: function(record) {
var store = record.store; var store = record.store;
return store && record.get('destination') === 'own phone'; return store && record.get('destination') === 'own phone';
}, },
isLastOnlineDestinationOfId: function (record, store) { isLastOnlineDestinationOfId: function(record, store) {
if (store.getCount() === 2 && store.getAt(0).get('destination') === "own phone") { if (store.getCount() === 2 && store.getAt(0).get('destination') === "own phone") {
return true; return true;
} }
@ -978,7 +1020,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
"sourceset": record.get('sourceset'), "sourceset": record.get('sourceset'),
"timeset": record.get('timeset') "timeset": record.get('timeset')
}); });
cftMappings = cftMappings.filter(function( obj ) { cftMappings = cftMappings.filter(function(obj) {
return obj.destinationset !== record.get('destinationset_name'); return obj.destinationset !== record.get('destinationset_name');
}); });
if (isLastOnlineDestinationOfId) { if (isLastOnlineDestinationOfId) {
@ -1003,7 +1045,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
"path": "/cfu", "path": "/cfu",
"value": cfuMappings "value": cfuMappings
}], }],
success: function (response) { success: function(response) {
store.sync(); store.sync();
}, },
failure: function(response) { failure: function(response) {
@ -1220,7 +1262,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
}); });
}, },
hasOnlyOwnPhone: function (store) { hasOnlyOwnPhone: function(store) {
if (store.first()) { if (store.first()) {
return store.getCount() === 1 && store.first().get('destination') === 'own phone'; return store.getCount() === 1 && store.first().get('destination') === 'own phone';
} else { } else {
@ -1228,7 +1270,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
} }
}, },
storeIsEmpty: function (store) { storeIsEmpty: function(store) {
return !store.first() || this.hasOnlyOwnPhone(store); return !store.first() || this.hasOnlyOwnPhone(store);
}, },

Loading…
Cancel
Save