TT#13007 Ngcp CSC global confirm alertbox for prompting user in case of

unreversible actions (ex. item  deletion)

Change-Id: I38674f57cee6fccaa6b6bb63901107a542d5c0d9
changes/17/12917/5
Carlo 8 years ago
parent 258657ab7b
commit f1bc4e7795

@ -9,6 +9,7 @@ Ext.define('NgcpCsc.view.main.MainController', {
},
'*': {
showmessage: 'showMessage',
showconfirmbox: 'showConfirmBox',
updateconversationtitle: 'setSectionTitle',
setCentralContentHeight: 'setCentralContentHeight'
}
@ -280,6 +281,22 @@ Ext.define('NgcpCsc.view.main.MainController', {
};
},
showConfirmBox: function(title, question, msg, callbackEvent, callbackParams) {
var me = this;
Ext.Msg.show({
title: title,
message: question,
buttons: Ext.Msg.YESNO,
icon: Ext.Msg.QUESTION,
fn: function(btn) {
if (btn === 'yes') {
me.fireEvent(callbackEvent, callbackParams);
me.fireEvent('showmessage', true, msg);
}
}
});
},
setItemsSize: function(view) {
var defaultHeight = view.down('#headerBar').getHeight();
var currentMainViewHeight = view.getHeight() - defaultHeight; // tbar height

@ -3,7 +3,15 @@ Ext.define('NgcpCsc.view.pages.callblocking.CallBlockingController', {
alias: 'controller.callblocking',
onEnterPressed: function (field, el) {
listen: {
controller: {
'*': {
confirmCallBlockingRemoval: 'confirmCallBlockingRemoval'
}
}
},
onEnterPressed: function(field, el) {
if (el.getKey() == el.ENTER) {
this.addNewNumber();
};
@ -24,24 +32,28 @@ Ext.define('NgcpCsc.view.pages.callblocking.CallBlockingController', {
}
},
addUnsuccessful: function () {
addUnsuccessful: function() {
this.fireEvent('showmessage', false, Ngcp.csc.locales.common.save_unsuccess[localStorage.getItem('languageSelected')]);
},
addToStore: function (newNumber, newId, store) {
store.add({ "id": newId, "block_list": newNumber, "enabled": true });
addToStore: function(newNumber, newId, store) {
store.add({
"id": newId,
"block_list": newNumber,
"enabled": true
});
this.fireEvent('showmessage', true, Ngcp.csc.locales.common.add_success[localStorage.getItem('languageSelected')]);
},
getCallBlockingStoreName: function (currentRoute) {
getCallBlockingStoreName: function(currentRoute) {
return currentRoute === '#callblocking/incoming' ? 'CallBlockingIncoming' : 'CallBlockingOutgoing';
},
getAcceptedCharacters: function () {
getAcceptedCharacters: function() {
return ['1', '2', '3', '4', '5', '6', '7', '8', '9', '*', '?'];
},
addNewNumber: function () {
addNewNumber: function() {
var me = this;
var vm = me.getViewModel();
var invalidCheck = 0;
@ -56,7 +68,7 @@ Ext.define('NgcpCsc.view.pages.callblocking.CallBlockingController', {
} else {
newNumber = newNumber.split('');
};
newNumber.forEach(function (character) {
newNumber.forEach(function(character) {
if (acceptedCharacters.indexOf(character) === -1) invalidCheck = 1;
});
switch (newNumber.length) {
@ -99,7 +111,7 @@ Ext.define('NgcpCsc.view.pages.callblocking.CallBlockingController', {
vm.set('new_number', '');
},
clickAllowModeButton: function () {
clickAllowModeButton: function() {
var vm = this.getViewModel();
var blockAllowMode = vm.get('block_mode');
if (blockAllowMode === 'allow') {
@ -109,7 +121,7 @@ Ext.define('NgcpCsc.view.pages.callblocking.CallBlockingController', {
};
},
clickHideModeButton: function () {
clickHideModeButton: function() {
var vm = this.getViewModel();
var hideMode = vm.get('hide_mode');
if (hideMode === 'on') {
@ -124,11 +136,18 @@ Ext.define('NgcpCsc.view.pages.callblocking.CallBlockingController', {
var currentRoute = window.location.hash;
var storeName = currentRoute === '#callblocking/incoming' ? 'CallBlockingIncoming' : 'CallBlockingOutgoing';
var store = Ext.getStore(storeName);
store.remove(rec);
this.fireEvent('showmessage', true, Ngcp.csc.locales.common.remove_success[localStorage.getItem('languageSelected')]);
var title = Ngcp.csc.locales.common.delete[localStorage.getItem('languageSelected')];
var question = Ngcp.csc.locales.common.remove_confirm[localStorage.getItem('languageSelected')];
var sucessMsg = Ngcp.csc.locales.common.remove_success[localStorage.getItem('languageSelected')];
this.fireEvent('showconfirmbox', title, question, sucessMsg, 'confirmCallBlockingRemoval', rec);
},
confirmCallBlockingRemoval: function(record) {
var store = record.store;
store.remove(record);
},
enableNumberBlocking: function (event) {
enableNumberBlocking: function(event) {
var rec = event.record;
var enabledDisabledMode = rec.get('enabled');
rec.set('enabled', !enabledDisabledMode);
@ -139,7 +158,7 @@ Ext.define('NgcpCsc.view.pages.callblocking.CallBlockingController', {
};
},
toggleBlockCalls: function (event) {
toggleBlockCalls: function(event) {
var vm = this.getViewModel();
var submoduleName = event.getTarget().id.split('-')[1];
var classList = event.target.classList;

@ -3,6 +3,14 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
alias: 'controller.callforward',
listen: {
controller: {
'*': {
confirmCFRemoval: 'confirmCFRemoval'
}
}
},
editingPhoneDone: function(editor, context) {
var record = context.record;
var grid = context.grid;
@ -10,7 +18,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
grid.getView().refresh();
},
collapsePanel: function (el) {
collapsePanel: function(el) {
var panelId = el.id.split('-')[1];
var isCollapsed = el.collapsed === false ? false : true;
var store = Ext.getStore('CallForwardLocalStorage');
@ -20,41 +28,41 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
switch (isCollapsed) {
case true:
localStorageRecord.set('afterHoursCollapsed', true);
break;
break;
case false:
localStorageRecord.set('afterHoursCollapsed', false);
break;
break;
}
break;
case 'companyHours':
switch (isCollapsed) {
case true:
localStorageRecord.set('companyHoursCollapsed', true);
break;
break;
case false:
localStorageRecord.set('companyHoursCollapsed', false);
break;
break;
}
break;
};
store.sync();
},
onEnterPressed: function (field, el) {
onEnterPressed: function(field, el) {
var me = this;
if (el.getKey() == el.ENTER) {
me.addNewDestination(field);
};
},
toggleChangeTitle: function (button) {
toggleChangeTitle: function(button) {
var vm = this.getViewModel();
var buttonId = button.id;
var hiddenKey = 'hide_' + buttonId.split('-')[2];
vm.set(hiddenKey, !vm.get(hiddenKey));
},
saveNewTitle: function (button) {
saveNewTitle: function(button) {
var vm = this.getViewModel();
var buttonId = button.id;
var hiddenKey = 'hide_' + buttonId.split('-')[2];
@ -62,7 +70,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
this.fireEvent('showmessage', true, Ngcp.csc.locales.common.save_success[localStorage.getItem('languageSelected')]);
},
onEditClicked: function (el) {
onEditClicked: function(el) {
var vm = this.getViewModel();
var classList = el.target.classList;
switch (true) {
@ -81,19 +89,25 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
return target.indexOf(string) > -1;
},
saveEmptyRowToStore: function (grid) {
saveEmptyRowToStore: function(grid) {
var store = grid.getStore();
var plugin = grid.getPlugin('celleditingTime');
var newRowIndex = store.getCount() + 1;
var record = store.getAt(store.getCount() - 1);
if (record == null || (record.data.phone !== ' ' && record.data.phone !== '')) {
// Need to add whitespace in record when using widgetcolumn
store.add({ "phone": " ", "edit": true });
store.add({
"phone": " ",
"edit": true
});
};
plugin.startEditByPosition({ row: newRowIndex, column: 0 });
plugin.startEditByPosition({
row: newRowIndex,
column: 0
});
},
addEmptyRow: function (button) {
addEmptyRow: function(button) {
var buttonIdSplit = button.id.split('-');
var buttonPrefixOne = buttonIdSplit[0];
var buttonPrefixTwo = buttonIdSplit[1];
@ -113,17 +127,24 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
removeEntry: function(grid, rowIndex, colIndex) {
var store = grid.getStore();
var rec = grid.getStore().getAt(rowIndex);
store.remove(rec);
this.fireEvent('showmessage', true, Ngcp.csc.locales.common.remove_success[localStorage.getItem('languageSelected')]);
var title = Ngcp.csc.locales.common.delete[localStorage.getItem('languageSelected')];
var question = Ngcp.csc.locales.common.remove_confirm[localStorage.getItem('languageSelected')];
var sucessMsg = Ngcp.csc.locales.common.remove_success[localStorage.getItem('languageSelected')];
this.fireEvent('showconfirmbox', title, question, sucessMsg, 'confirmCFRemoval', rec);
},
getStoresArrayFromRoute: function (currentRoute, currentSourceset) {
confirmCFRemoval: function(record) {
var store = record.store;
store.remove(record);
},
getStoresArrayFromRoute: function(currentRoute, currentSourceset) {
var view = currentRoute.split('/')[1];
var prefix = currentSourceset + '-' + view + '-';
return [prefix + 'CallForwardOnline', prefix + 'CallForwardBusy', prefix + 'CallForwardOffline'];
},
onTabClicked: function (cmp) {
onTabClicked: function(cmp) {
var me = this;
var vm = me.getViewModel();
var currentRoute = window.location.hash.replace('hours', 'Hours');
@ -139,7 +160,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
success: function(response, opts) {
var obj = Ext.decode(response.responseText);
var combinationStore = obj.data[0];
storesArray.map(function (storeName) {
storesArray.map(function(storeName) {
var store = Ext.getStore(storeName);
var strippedStoreName = storeName.split('-')[2];
// Workaround since tabpanel being in initComponent causes this function to run before we have a route set.
@ -151,13 +172,12 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
store.add(records);
};
};
Ext.defer(function () {
Ext.defer(function() {
loadingBar.clearStatus();
}, 300);
});
},
failure: function(response, opts) {
}
failure: function(response, opts) {}
});
},
@ -174,15 +194,17 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
this.renderDay(record.get('closed'), null, record);
},
toggleClosedClass: function (val, meta, rec) {
toggleClosedClass: function(val, meta, rec) {
return rec.get('closed') === true ? Ngcp.csc.icons.square_checked : Ngcp.csc.icons.square;
},
removeSourcelistRecord: function(grid, rowIndex) {
var store = grid.getStore();
var rec = grid.getStore().getAt(rowIndex);
store.remove(rec);
this.fireEvent('showmessage', true, Ngcp.csc.locales.common.remove_success[localStorage.getItem('languageSelected')]);
var title = Ngcp.csc.locales.common.delete[localStorage.getItem('languageSelected')];
var question = Ngcp.csc.locales.common.remove_confirm[localStorage.getItem('languageSelected')];
var sucessMsg = Ngcp.csc.locales.common.remove_success[localStorage.getItem('languageSelected')];
this.fireEvent('showconfirmbox', title, question, sucessMsg, 'confirmCFRemoval', rec);
},
renderPhoneColumn: function(value, metaData, record) {
@ -195,7 +217,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
};
},
showHideTimeoutField: function (vm, record, timeoutField) {
showHideTimeoutField: function(vm, record, timeoutField) {
switch (record) {
case 'Number':
case 'Own phone':
@ -209,7 +231,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
};
},
selectRing: function (component, record) {
selectRing: function(component, record) {
var vm = this.getViewModel();
var cmpIdSplit = component.getId().split('-');
var timeoutFieldCategory = cmpIdSplit[2].replace(/FirstDest|ThenDest/, '');
@ -217,7 +239,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
this.showHideTimeoutField(vm, record, timeoutFieldCategory + '_' + firstOrThen + '_timeout_hidden');
},
toggleNewDestinationForm: function (button) {
toggleNewDestinationForm: function(button) {
var me = this;
var vm = this.getViewModel();
var targetId = button.id;
@ -234,7 +256,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
};
},
hideThenFieldsByStoreName: function (vm, storeNameStripped) {
hideThenFieldsByStoreName: function(vm, storeNameStripped) {
this.fireEvent('showmessage', true, Ngcp.csc.locales.common.save_success[localStorage.getItem('languageSelected')]);
switch (storeNameStripped) {
case 'CallForwardOnline':
@ -249,7 +271,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
};
},
validateDestinationForm: function (storeName) {
validateDestinationForm: function(storeName) {
var me = this;
var vm = me.getViewModel();
var targetStore = Ext.getStore(storeName);
@ -265,7 +287,10 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
me.fireEvent('showmessage', false, 'Number is required. Please retry.');
break;
case false:
targetStore.add({ "phone": newDest, "ring_for": "" });
targetStore.add({
"phone": newDest,
"ring_for": ""
});
me.hideThenFieldsByStoreName(vm, storeNameStripped);
break;
};
@ -280,7 +305,10 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
case true:
var newTimeout = newDest === 'Number' ? vm.get(storeNameCategory + '_then_timeout') : '';
var newPhone = newDest === 'Number' ? newNumber : newDest;
targetStore.add({ "phone": newPhone, "ring_for": newTimeout });
targetStore.add({
"phone": newPhone,
"ring_for": newTimeout
});
vm.set(storeNameCategory + '_then_number', '');
me.hideThenFieldsByStoreName(vm, storeNameStripped);
break;
@ -289,7 +317,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
};
},
addNewDestination: function (element) {
addNewDestination: function(element) {
var me = this;
var targetId = element.id;
var splitTargetId = targetId.split('-');
@ -308,7 +336,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
};
},
saveGrid: function (el) {
saveGrid: function(el) {
this.fireEvent('showmessage', true, Ngcp.csc.locales.common.save_success[localStorage.getItem('languageSelected')]);
}

@ -35,7 +35,6 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardMainGrid', {
xtype: 'actioncolumn',
width: 30,
align: 'right',
iconCls: Ngcp.csc.icons.trash,
handler: 'removeEntry'
}, {

@ -9,7 +9,8 @@ Ext.define('NgcpCsc.view.pages.contacts.ContactsController', {
collapseContacts: 'collapseContacts',
expandContacts: 'expandContacts',
resizeContactPanel: 'resizeContactPanel',
addContact: 'addContact'
addContact: 'addContact',
confirmUserRemoval: 'confirmUserRemoval'
}
},
store: {
@ -183,21 +184,15 @@ Ext.define('NgcpCsc.view.pages.contacts.ContactsController', {
},
deleteUser: function(view, rowIndex, colIndex, item, ev, record) {
var contactStore = Ext.getStore('Contacts');
var me = this;
Ext.Msg.show({
title: Ngcp.csc.locales.common.delete[localStorage.getItem('languageSelected')],
message: Ext.String.format(Ngcp.csc.locales.contacts.delete_user[localStorage.getItem('languageSelected')], record.get('name')),
buttons: Ext.Msg.YESNO,
icon: Ext.Msg.QUESTION,
fn: function(btn) {
if (btn === 'yes') {
me.resizePanel(record)
record.remove();
me.fireEvent('showmessage', true, Ngcp.csc.locales.common.remove_success[localStorage.getItem('languageSelected')]);
me.getView().view.refresh();
}
}
});
var me = this;var title = Ngcp.csc.locales.common.delete[localStorage.getItem('languageSelected')];
var question = Ext.String.format(Ngcp.csc.locales.contacts.delete_user[localStorage.getItem('languageSelected')], record.get('name'));
var sucessMsg = Ngcp.csc.locales.common.remove_success[localStorage.getItem('languageSelected')];
this.fireEvent('showconfirmbox', title, question, sucessMsg, 'confirmUserRemoval', record);
},
confirmUserRemoval: function(userRec){
var store = this.getView().getStore();
store.remove(userRec);
this.getView().view.refresh();
},
onPressEnter: function(field, e) {
if (e.getKey() == e.ENTER) {
@ -297,23 +292,6 @@ Ext.define('NgcpCsc.view.pages.contacts.ContactsController', {
}, 100);
return false;
},
deleteNode: function(grid, rowIndex, colIndex, item, ev) {
var nodeToDelete = grid.getStore().getAt(rowIndex);
var me = this;
if (nodeToDelete.get('leaf'))
return;
Ext.Msg.show({
message: Ext.String.format(Ngcp.csc.locales.conversationwith.alerts.channel_delete[localStorage.getItem('languageSelected')], nodeToDelete.get('name')),
buttons: Ext.Msg.YESNO,
icon: Ext.Msg.QUESTION,
fn: function(btn) {
if (btn === 'yes') {
nodeToDelete.remove();
me.fireEvent('destroytab', nodeToDelete.get('name'));
}
}
});
},
validateFields: function(btn) {
var me = this;
var doSave = this.getView().getStore().getModifiedRecords().length > 0,

@ -6,7 +6,8 @@ Ext.define('NgcpCsc.view.pages.pbxconfig.PbxConfigController', {
listen: {
controller: {
'*': {
unmatchedroute: 'onRouteChange'
unmatchedroute: 'onRouteChange',
confirmPbxCardRemoval: 'confirmPbxCardRemoval'
}
}
},
@ -369,17 +370,15 @@ Ext.define('NgcpCsc.view.pages.pbxconfig.PbxConfigController', {
var store = Ext.getStore(storeName);
var recId = el.id.split("-")[1];
var selectedRow = store.findRecord('id', recId);
Ext.Msg.show({
message: Ext.String.format(Ngcp.csc.locales.common.remove_confirm[localStorage.getItem('languageSelected')]),
buttons: Ext.Msg.YESNO,
icon: Ext.Msg.QUESTION,
fn: function(btn) {
if (btn === 'yes') {
store.remove(selectedRow);
me.fireEvent('showmessage', true, Ngcp.csc.locales.common.remove_success[localStorage.getItem('languageSelected')]);
}
}
});
var title = Ngcp.csc.locales.common.delete[localStorage.getItem('languageSelected')];
var question = Ngcp.csc.locales.common.remove_confirm[localStorage.getItem('languageSelected')];
var sucessMsg = Ngcp.csc.locales.common.remove_success[localStorage.getItem('languageSelected')];
me.fireEvent('showconfirmbox', title, question, sucessMsg, 'confirmPbxCardRemoval', selectedRow);
},
confirmPbxCardRemoval:function(card){
var store = card.store;
store.remove(card);
},
toggleCancelCard: function(el, state) {

@ -1,6 +1,13 @@
Ext.define('NgcpCsc.view.pages.pbxconfig.DevicseController', {
extend: 'NgcpCsc.view.pages.pbxconfig.PbxConfigController',
alias: 'controller.devices',
listen: {
controller: {
'*': {
seatRemoveConfirmed: 'seatRemoveConfirmed'
}
}
},
onIconClicked: function(event, el) {
// overrides onIconClicked of PbxConfigController
if (el.dataset.onseatclick) {
@ -104,32 +111,29 @@ Ext.define('NgcpCsc.view.pages.pbxconfig.DevicseController', {
},
deleteSeat: function() {
var me = this;
var grid = me.lookupReference('devicesGrid');
var selectedRec = me.getSelectedRec();
var showPanel = Ext.ComponentQuery.query('#seat-show-panel-' + selectedRec.get('id'))[0];
var editPanel = Ext.ComponentQuery.query('#seat-edit-panel-' + selectedRec.get('id'))[0];
Ext.each(selectedRec.get('seats'), function(seat) {
if (seat.order == editPanel._order) {
Ext.Msg.show({
message: Ext.String.format(Ngcp.csc.locales.pbxconfig.devices.delete_assignment[localStorage.getItem('languageSelected')], seat.order),
buttons: Ext.Msg.YESNO,
icon: Ext.Msg.QUESTION,
fn: function(btn) {
if (btn === 'yes') {
seat.name = null;
seat.type = null;
me.commitUnsavedChanges();
me.fireEvent('showmessage', true, Ngcp.csc.locales.pbxconfig.changes_saved[localStorage.getItem('languageSelected')])
editPanel.hide();
grid.focus();
}
}
});
return;
var title = Ngcp.csc.locales.common.delete[localStorage.getItem('languageSelected')];
var question = Ext.String.format(Ngcp.csc.locales.pbxconfig.devices.delete_assignment[localStorage.getItem('languageSelected')]);
var sucessMsg = Ngcp.csc.locales.pbxconfig.changes_saved[localStorage.getItem('languageSelected')];
me.fireEvent('showconfirmbox', title, question, sucessMsg, 'seatRemoveConfirmed', seat);
}
});
},
seatRemoveConfirmed: function(seat) {
var me = this;
var grid = me.lookupReference('devicesGrid');
var selectedRec = me.getSelectedRec();
var editPanel = Ext.ComponentQuery.query('#seat-edit-panel-' + selectedRec.get('id'))[0];
seat.name = null;
seat.type = null;
me.commitUnsavedChanges();
editPanel.hide();
grid.focus();
},
saveSeat: function() {
var me = this;

Loading…
Cancel
Save