TT#11850 Ngcp-csc fix pbx modules filtering

Fix filtering for pbx modules, and make case insensitive by default.

Change-Id: I7ef721439171cdb0dc1bd4064edfa3e7fc8beebb
changes/73/11673/5
Robert Axelsen 9 years ago
parent 844b0c4a2d
commit 5ab34eedd5

@ -9,7 +9,9 @@ Ext.define('NgcpCsc.model.GridFilters', {
'missed',
'answered',
'search_term',
'name', 'extensions',
'name',
'seats_extension',
'groups_extension',
'groups',
'numbers',
'phone_devices',

@ -139,46 +139,36 @@ Ext.define('NgcpCsc.view.common.gridfilters.GridFilters', {
items: [{
flex: 1,
userCls: 'small-100 big-50',
defaults: {
listeners: {
input: {
element: 'el',
fn: 'submitFilters'
}
}
},
items: [{
xtype: 'textfield',
labelAlign: 'top',
bind: '{filtergrid.extensions}',
fieldLabel: Ngcp.csc.locales.filters.extension[localStorage.getItem('languageSelected')]
bind: '{filtergrid.seats_extension}',
fieldLabel: Ngcp.csc.locales.filters.extension[localStorage.getItem('languageSelected')],
listeners: {
delay: 100,
change: 'submitFilters'
}
}, {
xtype: 'textfield',
labelAlign: 'top',
bind: '{filtergrid.groups}',
fieldLabel: Ngcp.csc.locales.filters.groups[localStorage.getItem('languageSelected')]
fieldLabel: Ngcp.csc.locales.filters.groups[localStorage.getItem('languageSelected')],
listeners: {
delay: 100,
change: 'submitFilters'
}
}]
}, {
flex: 1,
userCls: 'small-100 big-50',
defaults: {
listeners: {
input: {
element: 'el',
fn: 'submitFilters'
}
}
},
items: [{
xtype: 'textfield',
labelAlign: 'top',
bind: '{filtergrid.numbers}',
fieldLabel: Ngcp.csc.locales.filters.numbers[localStorage.getItem('languageSelected')],
input: {
listeners: {
delay: 100,
change: 'submitFilters'
}
listeners: {
delay: 100,
change: 'submitFilters'
}
}, {
xtype: 'textfield',
@ -186,10 +176,8 @@ Ext.define('NgcpCsc.view.common.gridfilters.GridFilters', {
bind: '{filtergrid.phone_devices}',
fieldLabel: Ngcp.csc.locales.filters.phone_devices[localStorage.getItem('languageSelected')],
listeners: {
listeners: {
delay: 100,
change: 'submitFilters'
}
delay: 100,
change: 'submitFilters'
}
}]
}]
@ -205,6 +193,15 @@ Ext.define('NgcpCsc.view.common.gridfilters.GridFilters', {
flex: 1,
userCls: 'small-100 big-50',
items: [{
xtype: 'textfield',
labelAlign: 'top',
bind: '{filtergrid.groups_extension}',
fieldLabel: Ngcp.csc.locales.filters.extension[localStorage.getItem('languageSelected')],
listeners: {
delay: 100,
change: 'submitFilters'
}
}, {
xtype: 'textfield',
labelAlign: 'top',
bind: '{filtergrid.hunt_policy}',
@ -247,11 +244,11 @@ Ext.define('NgcpCsc.view.common.gridfilters.GridFilters', {
name: 'deviceCombo',
displayField: 'name',
valueField: 'name', // here we will use the ids most probablys
editable: false,
editable: true,
bind: '{filtergrid.device}',
listeners: {
delay: 100,
select: 'submitFilters'
change: 'submitFilters'
}
}, {
xtype: 'textfield',

@ -41,10 +41,10 @@ Ext.define('NgcpCsc.view.common.gridfilters.GridFiltersController', {
applyFreeSearchFilter: function(record) {
var vm = this.getViewModel();
var search_term = vm.get('filtergrid.headerBarFieldInput') || "";
var search_term = vm.get('filtergrid.headerBarFieldInput').toLowerCase() || "";
var retVal = false;
Ext.Object.each(record.data, function(key, val) {
if (Ext.isString(val) && val.indexOf(search_term) > -1) {
if (Ext.isString(val) && val.toLowerCase().indexOf(search_term) > -1) {
retVal = true;
return;
}
@ -72,9 +72,9 @@ Ext.define('NgcpCsc.view.common.gridfilters.GridFiltersController', {
applyConvSearchFilter: function(record) {
var vm = this.getViewModel();
var store = Ext.getStore('Conversations');
var fieldInput = vm.get('filtergrid.headerBarFieldInput');
var fieldInput = vm.get('filtergrid.headerBarFieldInput').toLowerCase();
var retVal = true;
if (fieldInput && record.get('source_cli').indexOf(fieldInput) == -1) {
if (fieldInput && record.get('source_cli').toLowerCase().indexOf(fieldInput) == -1) {
retVal = false;
}
return retVal;
@ -83,9 +83,9 @@ Ext.define('NgcpCsc.view.common.gridfilters.GridFiltersController', {
applyPbxSearchFilter: function(record) {
var vm = this.getViewModel();
var store = Ext.getStore('Conversations');
var fieldInput = vm.get('filtergrid.headerBarFieldInput');
var fieldInput = vm.get('filtergrid.headerBarFieldInput').toLowerCase();
var retVal = true;
if (fieldInput && record.get('name').indexOf(fieldInput) == -1) {
if (fieldInput && record.get('name').toLowerCase().indexOf(fieldInput) == -1) {
retVal = false;
}
return retVal;
@ -150,7 +150,7 @@ Ext.define('NgcpCsc.view.common.gridfilters.GridFiltersController', {
var direction = [vm.get('filtergrid.incoming') ? 'incoming' : null, vm.get('filtergrid.outgoing') ? 'outgoing' : null];
var status = [vm.get('filtergrid.missed') ? 'missed' : null, vm.get('filtergrid.answered') ? 'answered' : null];
var answered = vm.get('filtergrid.answered');
var fieldInput = vm.get('filtergrid.headerBarFieldInput');
var fieldInput = vm.get('filtergrid.headerBarFieldInput').toLowerCase();
var types = [vm.get('filtergrid.call') ? 'call' : null,
vm.get('filtergrid.voicemail') ? 'voicemail' : null,
vm.get('filtergrid.sms') ? 'sms' : null,
@ -160,7 +160,7 @@ Ext.define('NgcpCsc.view.common.gridfilters.GridFiltersController', {
if (new Date(record.get('start_time')) < new Date(fromFilter) ||
new Date(record.get('start_time')) > new Date(toFilter).setHours(23,59,59,999) ||
fieldInput && record.get('source_cli').indexOf(fieldInput) == -1 ||
fieldInput && record.get('source_cli').toLowerCase().indexOf(fieldInput) == -1 ||
types.length > 0 && types.indexOf(record.get('conversation_type')) == -1 ||
direction.length > 0 && direction.indexOf(record.get('direction')) == -1 ||
status.length > 0 && status.indexOf(record.get('status')) == -1
@ -173,16 +173,16 @@ Ext.define('NgcpCsc.view.common.gridfilters.GridFiltersController', {
applyPbxconfigSeatsFilters: function(record) {
var vm = this.getViewModel();
var fieldInput = vm.get('filtergrid.headerBarFieldInput') || "";
var extensions = vm.get('filtergrid.extensions') ? vm.get('filtergrid.extensions').split(',') : [];
var groups = vm.get('filtergrid.groups') ? vm.get('filtergrid.groups').split(',') : [];
var extension = vm.get('filtergrid.seats_extension') ? vm.get('filtergrid.seats_extension').toLowerCase().split(',') : [];
var groups = vm.get('filtergrid.groups') ? vm.get('filtergrid.groups').toLowerCase().split(',') : [];
var numbers = vm.get('filtergrid.numbers') || "";
var phone_devices = vm.get('filtergrid.phone_devices') ? vm.get('filtergrid.phone_devices').split(',') : [];
var phone_devices = vm.get('filtergrid.phone_devices') ? vm.get('filtergrid.phone_devices').toLowerCase().split(',') : [];
var retVal = true;
if (fieldInput && record.get('name').indexOf(fieldInput) == -1 ||
extensions.length > 0 && extensions.indexOf(record.get('extension')) == -1 ||
groups.length > 0 && groups.indexOf(record.get('groups')) == -1 ||
numbers && record.get('numbers').indexOf(numbers) == -1 ||
phone_devices.length > 0 && phone_devices.indexOf(record.get('phone_devices')) == -1
if (fieldInput && record.get('name').toLowerCase().indexOf(fieldInput) == -1 ||
extension && record.get('extension').toLowerCase().indexOf(extension) == -1 ||
groups && record.get('groups').toLowerCase().indexOf(groups) == -1 ||
numbers && record.get('numbers').toLowerCase().indexOf(numbers) == -1 ||
phone_devices && record.get('phone_devices').toLowerCase().indexOf(phone_devices) == -1
) {
retVal = false;
}
@ -191,15 +191,15 @@ Ext.define('NgcpCsc.view.common.gridfilters.GridFiltersController', {
applyPbxconfigGroupsFilters: function(record) {
var vm = this.getViewModel();
var fieldInput = vm.get('filtergrid.headerBarFieldInput') || "";
var extensions = vm.get('filtergrid.extensions') ? vm.get('filtergrid.extensions').split(',') : [];
var hunt_policy = vm.get('filtergrid.hunt_policy') ? vm.get('filtergrid.hunt_policy').split(',') : [];
var hunt_timeout = vm.get('filtergrid.hunt_timeout') ? vm.get('filtergrid.hunt_timeout').split(',') : [];
var fieldInput = vm.get('filtergrid.headerBarFieldInput').toLowerCase() || "";
var extension = vm.get('filtergrid.groups_extension') ? vm.get('filtergrid.groups_extension').toLowerCase().split(',') : [];
var hunt_policy = vm.get('filtergrid.hunt_policy') ? vm.get('filtergrid.hunt_policy').toLowerCase().split(',') : [];
var hunt_timeout = vm.get('filtergrid.hunt_timeout') ? vm.get('filtergrid.hunt_timeout').toLowerCase().split(',') : [];
var retVal = true;
if (fieldInput && record.get('name').indexOf(fieldInput) == -1 ||
extensions.length > 0 && extensions.indexOf(record.get('extension')) == -1 ||
hunt_policy.length > 0 && hunt_policy.indexOf(record.get('hunt_policy')) == -1 ||
hunt_timeout.length > 0 && hunt_timeout.indexOf(record.get('hunt_timeout')) == -1
if (fieldInput && record.get('name').toLowerCase().indexOf(fieldInput) == -1 ||
extension && record.get('extension').toLowerCase().indexOf(extension) == -1 ||
hunt_policy && record.get('hunt_policy').toLowerCase().indexOf(hunt_policy) == -1 ||
hunt_timeout && record.get('hunt_timeout').toLowerCase().indexOf(hunt_timeout) == -1
) {
retVal = false;
}
@ -208,14 +208,14 @@ Ext.define('NgcpCsc.view.common.gridfilters.GridFiltersController', {
applyPbxconfigDevicesFilters: function(record) {
var vm = this.getViewModel();
var fieldInput = vm.get('filtergrid.headerBarFieldInput') || "";
var fieldInput = vm.get('filtergrid.headerBarFieldInput').toLowerCase() || "";
var deviceProfile = vm.get('filtergrid.device') || "";
var mac = vm.get('filtergrid.mac') || "";
var status = [vm.get('filtergrid.enabled') ? 'enabled' : null, vm.get('filtergrid.disabled') ? 'disabled' : null];
var retVal = true;
if (fieldInput && record.get('name').indexOf(fieldInput) == -1 ||
if (fieldInput && record.get('name').toLowerCase().indexOf(fieldInput) == -1 ||
deviceProfile && record.get('device').indexOf(deviceProfile) == -1 ||
mac && record.get('mac').indexOf(mac) == -1 ||
status.length > 0 && status.indexOf(record.get('status')) == -1
@ -252,7 +252,8 @@ Ext.define('NgcpCsc.view.common.gridfilters.GridFiltersController', {
vm.set('filtergrid.answered', true);
vm.set('filtergrid.search_term', '');
vm.set('filtergrid.name', '');
vm.set('filtergrid.extensions', '');
vm.set('filtergrid.seats_extension', '');
vm.set('filtergrid.groups_extension', '');
vm.set('filtergrid.groups', '');
vm.set('filtergrid.phone_devices', '');
vm.set('filtergrid.enabled', true);
@ -263,7 +264,7 @@ Ext.define('NgcpCsc.view.common.gridfilters.GridFiltersController', {
filterBySearchFieldInput: function(el) {
var vm = this.getViewModel();
var val = el.getTarget().value;
var val = el.getTarget().value.toLowerCase();
vm.set('filtergrid.headerBarFieldInput', val);
if (val.length === 0) {
this.resetFilters();
@ -320,9 +321,17 @@ Ext.define('NgcpCsc.view.common.gridfilters.GridFiltersController', {
vm.set('filtergrid.pbxDevicesFilterHideState', true);
},
toggleFreeSearch: function () {
toggleFreeSearch: function (pressed) {
var vm = this.getViewModel();
vm.set('freeSearchState', !vm.get('freeSearchState'));
var currentFreeSearchState = vm.get('freeSearchState');
switch (!pressed) {
case (true):
vm.set('freeSearchState', !currentFreeSearchState);
break;
case (false):
vm.set('freeSearchState', true);
break;
};
}
});

@ -63,7 +63,9 @@ Ext.define('NgcpCsc.view.main.Main', {
}
}, {
iconCls: 'x-fa fa-header',
reference: 'headerToggleButton',
enableToggle: true,
pressed: false,
tooltip: Ngcp.csc.locales.filters.tooltips.search_toggle[localStorage.getItem('languageSelected')],
margin: '0 2 0 3',
bind: {

@ -173,6 +173,7 @@ Ext.define('NgcpCsc.view.main.MainController', {
onRouteChange: function(id) {
var vm = this.getViewModel();
var toggleButton = this.lookupReference('headerToggleButton');
this.setCurrentView(id);
this.fireEvent('routeChange');
this.setSectionTitle(id);
@ -181,6 +182,10 @@ Ext.define('NgcpCsc.view.main.MainController', {
} else {
vm.set('headerBarFieldHideState', true);
};
if (id == 'pbxconfig/seats' || id == 'pbxconfig/groups' || id == 'pbxconfig/devices') {
this.toggleFree('pressed');
toggleButton.setPressed(true);
};
},
setSectionTitle: function(id) {
@ -309,8 +314,8 @@ Ext.define('NgcpCsc.view.main.MainController', {
this.fireEvent('toggleFilterForm');
},
toggleFree: function() {
this.fireEvent('toggleFreeSearch');
toggleFree: function(pressed) {
this.fireEvent('toggleFreeSearch', pressed);
}
});

@ -17,11 +17,12 @@ Ext.define('NgcpCsc.view.pages.pbxconfig.devices.Devices', {
items: [{
xtype: 'core-container',
margin: Ext.os.is.Desktop ? '-5 0 0 20' : '-5 0 0 0',
width: Ext.os.is.Desktop ? 810 : '100%',
items: [{
width: Ext.os.is.Desktop ? 810 : '100%'
,items: [{
margin: 10,
xtype: 'button',
reference:'addNewBtn',
disabled: true,
text: Ngcp.csc.locales.pbxconfig.add_new_group[localStorage.getItem('languageSelected')]
// ,handler: 'addDevice'
}]

@ -32,14 +32,6 @@ Ext.define('NgcpCsc.view.pages.devices.DevicesGrid', {
},
userCls: Ext.os.is.Desktop ? 'big-820' : 'small-100',
// XXX: Cvenusino: For devices, a) We need new specs from andreas, and b)
// No matter what the new specs are, we either need to use child nodes,
// and/or pull data from other endpoints/data resources for the destinations
// and positioning of the destinations data on the images. As these anyways
// depend on the specs to know 100% what we need to account for in the
// implementation, I propose we leave this module as is for this iteration,
// and await specs for new devices task.
initComponent: function() {
var me = this;

@ -22,6 +22,7 @@ Ext.define('NgcpCsc.view.pages.pbxconfig.groups.Groups', {
margin: 10,
xtype: 'button',
reference:'addNewBtn',
disabled: true,
text: Ngcp.csc.locales.pbxconfig.add_new_group[localStorage.getItem('languageSelected')]
// ,handler: 'addGroup'
}]

@ -22,6 +22,7 @@ Ext.define('NgcpCsc.view.pages.pbxconfig.seats.Seats', {
margin: 10,
xtype: 'button',
reference:'addNewBtn',
disabled: true,
text: Ngcp.csc.locales.pbxconfig.add_new_group[localStorage.getItem('languageSelected')]
// ,handler: 'addSeat'
}]

@ -32,13 +32,6 @@ Ext.define('NgcpCsc.view.pages.seats.SeatsGrid', {
},
userCls: Ext.os.is.Desktop ? 'big-820' : 'small-100',
// XXX: Cvenusino: For seats cards, numbers and phone/devices should be in a
// list (not comma separated), and stored in data as child nodes. For this,
// we need a solution for how to best iterate over child nodes within the
// records. We had a solution for this with rowexpander and rowBodyTpl (see
// example with DevicesGrid.js in current master), but with this new rowbody
// implementation I am not sure how to tacle this. Please advice
initComponent: function() {
var me = this;
me.features = [{

@ -4,7 +4,7 @@
"name":"Device1",
"device": "Cisco Pbx 1",
"mac":"00-14-22-01-23-41",
"status": "enabled",
"status": "disabled",
"image": "/resources/images/pbx.png",
"destinations": [{
"name": "destination1",

@ -18,7 +18,8 @@
"search_term": "",
/* Pbx config filters */
"name": "",
"extensions": "",
"seats_extension": "",
"groups_extension": "",
"groups": "",
"numbers": "",
"phone_devices": "",

@ -4,28 +4,28 @@
"name": "Seat1",
"extension": "ext1",
"groups": "group2",
"numbers": "123, 345, 789",
"numbers": "345, 789",
"phone_devices": "dev1"
},{
"id" : 2,
"name":"Seat2",
"name": "Seat2",
"extension": "ext2",
"groups":"group3",
"numbers": "123, 345, 789",
"groups": "group3",
"numbers": "123",
"phone_devices": "dev3"
}, {
"id" : 3,
"name":"Seat3",
"name": "Seat3",
"extension": "ext3",
"groups":"group4",
"numbers": "123, 345, 789",
"groups": "group4",
"numbers": "421",
"phone_devices": "dev2"
}, {
"id" : 4,
"name":"Seat4",
"name": "Seat4",
"extension": "ext4",
"groups":"group4",
"numbers": "123, 345, 789",
"groups": "group4",
"numbers": "444, 123, 954",
"phone_devices": "dev4"
}]
}

Loading…
Cancel
Save