Skip to content

Commit bcc5a85

Browse files
committed
working on supprt text in the url
1 parent 535b629 commit bcc5a85

File tree

1 file changed

+54
-10
lines changed

1 file changed

+54
-10
lines changed

jquery.filters.js

+54-10
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
};
3232

3333
$.fn.bootstrapFilter = function(options) {
34+
var filterHtml;
3435

3536
// first thing, make sure we have all of our dependencies
3637
libraryDependenciesValidations();
@@ -57,7 +58,8 @@
5758
filterModal.decryptField = settings.encodeInUrl == 'value' ? 'name': 'value';
5859

5960
decryptUrlIntoSelectedFilters();
60-
this.html(buildHtml(settings)).hide().fadeIn();
61+
filterHtml = buildHtml(settings);
62+
this.html(filterHtml).hide().fadeIn();
6163
renderDateRangeIfNeeded();
6264
bindFilterClicks();
6365
populateModal();
@@ -171,7 +173,7 @@
171173
if (filterModal.selectedFilterParameters[parameter.attributeName]){
172174
value = filterModal.selectedFilterParameters[parameter.attributeName].values[0].value
173175
}
174-
176+
// todo support prefilled text input
175177
return '<input style="margin: 5px 0" class="form-control text-input-js" value="'+value+'" placeholder="'+ (parameter.placeholder || name) + '">';
176178
}
177179

@@ -182,6 +184,7 @@
182184
value = filterModal.selectedFilterParameters[parameter.attributeName].values[0].value
183185
}
184186

187+
// todo support prefilled date Range input
185188
return '<div id="daterange" style="float: left; margin: 5px 0;" class="selectbox active">' +
186189
'<input type="text" data-time-picker="true" value="'+value+'" name="'+dateRangeName+'" class="filters-date-range-picker">' +
187190
'</div>';
@@ -302,6 +305,11 @@
302305
populateSelectedFiltersFromDefaultValues();
303306

304307
$.each(filterModal.selectedFilterParameters, function(serverName, selectedParameter){
308+
// skip on not supported input selected filters
309+
if (!existsInArray(selectedParameter.type, [single, multiCheckBoxes])){
310+
return true;
311+
}
312+
305313
humanParameterName = selectedParameter.attributeHumaneName;
306314
showMoreModelName = calcShowMoreModelName(selectedParameter.attributeHumaneName);
307315
selectedValue = (1 < selectedParameter.values.length) ? '(' + selectedParameter.values.length + ')' : selectedParameter.values[0]['name'];
@@ -490,8 +498,13 @@
490498
return filterInputBox + shiftSelectMultiMessage + checkBoxesHtml;
491499
}
492500

493-
function relateToRender(filterParameter){
501+
function relateToRender(filterParameter, dataType){
494502
var relatedTo = '';
503+
// if not relevant here
504+
if (existsInArray(dataType, [textType])) {
505+
return ''
506+
}
507+
495508
if (filterParameter.relatedTo){
496509
relatedTo += ' (';
497510
$.each(filterParameter.relatedTo, function(paramServerName, parameterData){
@@ -979,19 +992,22 @@
979992
$.each(data.relatedData, function(key, value){
980993
key = removeFiltersPrefix(key);
981994
if (!filterModal.selectedFilterParameters[key]) {
982-
values = value.split(',');
983995
selectedData = filterModal.filterParametersByKeyValue[key];
984-
filterModal.selectedFilterParameters[key] = {values: [],
996+
values = getSelectedValues(value, selectedData.type);
997+
filterModal.selectedFilterParameters[key] = {
998+
values: [],
985999
attributeHumaneName: selectedData.name,
986-
type: selectedData.type};
1000+
type: selectedData.type
1001+
};
9871002
$.each(values, function (_, selectedFilterValue) {
9881003
selectedFilterValue = decodeURIComponent(selectedFilterValue);
9891004
// possible bug here
990-
selectedFilterValue = selectedFilterValue.replace("/", "");
991-
if (selectedData.options[selectedFilterValue]) {
1005+
selectedFilterValue = selectedFilterValue.replace('/', '');
1006+
// todo - support isValidInput for text input
1007+
if (isValidInput(selectedData.options, selectedFilterValue, selectedData.type)) {
9921008

993-
selectedValue = selectedData.options[selectedFilterValue][filterModal.decryptField];
994-
tempRelatedTo = relateToRender(selectedData.options[selectedFilterValue]);
1009+
selectedValue = getSelectedValueByType(filterModal.decryptField, selectedData.options, selectedFilterValue, selectedData.type);
1010+
tempRelatedTo = relateToRender(selectedData.options[selectedFilterValue], selectedData.type);
9951011
if (filterModal.decryptField == 'value'){
9961012
name = selectedFilterValue + tempRelatedTo;
9971013
tempValue = selectedValue;
@@ -1009,6 +1025,34 @@
10091025

10101026
}
10111027

1028+
function getSelectedValues(value, dataType){
1029+
if (existsInArray(dataType, [textType])){
1030+
// for input, no need to seaprate.
1031+
// for example for id_number "123,52314" is one value not two
1032+
return [value]
1033+
}else{
1034+
return value.split(',');
1035+
}
1036+
}
1037+
1038+
1039+
function getSelectedValueByType(decryptField, options, selectedFilterValue, dataType){
1040+
if (existsInArray(dataType, [textType])){
1041+
return selectedFilterValue
1042+
}else{
1043+
return options[selectedFilterValue][decryptField]
1044+
}
1045+
}
1046+
1047+
1048+
function isValidInput(options, value, dataType){
1049+
if (existsInArray(dataType, [textType])){
1050+
return true
1051+
}else{
1052+
return options[value]
1053+
}
1054+
}
1055+
10121056

10131057
function removeFiltersPrefix(fullString){
10141058
return fullString.substr(backofficeFiltersUrlPrefix.length);

0 commit comments

Comments
 (0)