{"version":3,"sources":["parametricFilter.min.js"],"names":["EBContext","modules","ParametricFilter","options","self","generateSliderStyles","filtrtyp","filterConfig","filterStyle","_bar_color","push","_label_color","filterStyles","utils","extendObj","filterWrapId","activeWrapId","priceWrapId","extendedFilterId","reloadBlock","resultPageName","resultPagePath","resultBlockName","visibleItemsCount","priceWithVAT","showQuantity","useDefault","alwaysOpen","collapsibleFilters","popupFilter","appearance","filter","collapsible","defaultOpen","parameters","values","showFirst","getLoader","fwEl","Loader","parentElement","loaderClass","loaderType","prependLoader","disableParentElement","independent","loaderIcon","icon","animation","debug","paramsTypes","FLOAT","fnParseValue","value","parsedVal","parseFloat","toString","replace","filterTypes","CHECKBOX","fnStringify","i","valStr","koef","val","length","selected","join","oid","type","RADIO","SELECT","MULTI_SELECT_SEARCH","NUMBER_INPUTS","SLIDER_INPUTS","SLIDER_STEPS","RANGE","defaultFilterType","val1","val2","value2","ENUM","valueProperty","BOOLEAN","fnChange","changed","filters","fnUpdateFilterValues","scope","document","radioEl","labelEl","querySelector","getValId","HTMLInputElement","checked","disabled","HTMLElement","innerText","name","count","classList","add","remove","COLOR","fnGenerateFilterBody","filterOptions","getFilterOptions","filterDOM","template","filterWrapEl","checkboxWrapEl","checkboxEl","getValValue","onCheckedChange","e","el","getAttribute","submit","colorBox","style","background","radioWrapEl","outline","selectEl","optionEl","onChange","HTMLOptionElement","fnGenerateActive","valueWrapEl","rmBtn","activeWrapEl","createElement","active","className","append","innerHTML","setAttribute","addEventListener","appendChild","children","firstChild","before","label","clearBtn","clearFilter","fnClear","DEFAULT","config","_multiUnitActive","filterContainerEl","boxMoreEl","showMoreEl","useShowMore","vars","renderVisibleItems","renderInvisibleItems","textWrap","unit","hasOwnProperty","valueTextEl","fnUpdate","j","valueCount","_filter","hasEmptyVal","sort","fnSortValues","resource","group","actionsBox","liveSearch","width","_multiple","filterTypeConfig","mergeObj","selectedOptions","isMultiple","selects","elementId","activeValues","require","jQuery","selectpicker","Array","isArray","inputMinWrap","labelMinEl","inputMinEl","labelMinUnitEl","inputMaxWrap","labelMaxEl","inputMaxEl","labelMaxUnitEl","getMaxValue","maxValue","initMaxValue","getMinValue","minValue","initMinValue","onMinBlur","onMaxBlur","onInputChange","sliders","instanceObj","update","from","boundaryMinValue","placeholder","removeAttribute","boundaryMaxValue","minVal","maxVal","minValUnit","maxValUnit","minValObj","maxValObj","find","min","max","pMin","pMax","isNaN","filterMin","filterMax","grid","drag_interval","decorate_both","force_edges","themeClass","fnGenerateFilterStyles","filterType","sliderWrapEl","id","substr","to","postfix","data","getElementById","onFinish","sliderObj","boundaryMin","boundaryMax","valMin","valMax","sliderUpdate","disable","initMinIndex","initMaxIndex","minIndex","boundaryMinIndex","maxIndex","boundaryMaxIndex","valuesArr","numValuesArr","indexOf","findIndex","valExists","forEach","a","b","array","findLastIndexOf","SLIDER_ONLY","a_order","parseInt","order","b_order","trim","UNSUPPORTED","filterWrap","filterTypesFallback","paramsMap","filterTypeKod","fnSortFilters","minPozice","nameA","toLowerCase","nameB","fnGenerateFilterHead","headWrap","headingEl","rmWrap","fnUpdateFilterHead","fnGenerateFilters","filterBody","resultEl","wrapEl","activeFilterEl","removeChild","btnRmAll","rmAll","f","fnToggleFilter","open","display","optionsCache","loader","reset","isRendered","isUpdated","isOpen","priceWrapEl","extendedFilterEl","priceParam","goodResult","filterStr","resultParams","filterStylesEl","clear","filtersKeys","Object","keys","searchObj","init","console","submitExFormEl","jenSkladEl","postData","window","history","state","savedElements","filterData","submitForm","click","body","contains","ajaxNav","setElementsState","category","paramFilter","visibility","height","key","activeElement","blur","querySelectorAll","onchange","evt","jensklad","provozovna","maloobchod","target","toggle","async","finish","stringify","store","hasParams","k","render","filtersArr","ready","initPlugins","sheet","rules","deleteRule","entries","fs","fc","mainSel","sArr","split","selectors","charAt","slice","addRule","prepareToggleMore","fetch","multiUnit","multiUnitFallback","tmp","dataKeys","JSON","parse","error","Set","map","session","Cust_Kurz","Cust_KurzPocet","dataCallback","log","start","ajaxCall","response","err","consoleStyles","errorMsg","groupCollapsed","errorBtn","groupEnd","code","sliderEl","ionRangeSlider","stringifiedFilters","override","updateObj","setObj","currentState","pageData","processPostData","saveState","reload","url","urlParams","postParams","form","paramsStrToObj","method","serializeForm","createElementsState","page","params","extendURL","paramsObjToStr","navigationTrigger","navigation","scrollTop","updateURL","extendQS"],"mappings":"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","sourcesContent":["/**\r\n * Module to generate, update and otherwise service functions of parametric filters\r\n * @class ParametricFilter\r\n * @memberof EBContext.modules\r\n */\r\n/* jshint esversion: 6 */\r\nEBContext.modules.ParametricFilter = function (options) {\r\n\tvar self = this;\r\n\tvar generateSliderStyles = function (filtrtyp, filterConfig){\r\n\t\tif(!filtrtyp) return '';\r\n\t\tlet filterStyle = [];\r\n\t\tif(filterConfig._bar_color){\r\n\t\t\tfilterStyle.push('.irs-bar,.irs-handle>i:first-child{background-color:' + filterConfig._bar_color + '}');\r\n\t\t}\r\n\t\tif(filterConfig._label_color){\r\n\t\t\tfilterStyle.push('.irs-from,.irs-to,.irs-single{background-color:' + filterConfig._label_color + '}');\r\n\t\t\tfilterStyle.push('.irs-from:before,.irs-to:before,.irs-single:before{border-top-color:' + filterConfig._label_color + '}');\r\n\t\t}\r\n\t\tself.filterStyles['c_' + filtrtyp] = filterStyle;\r\n\t\treturn 'c_' + filtrtyp;\r\n\t}\r\n\t\r\n\t// Define the default options (to be possibly extended via init function)\r\n\tthis.options = EBContext.utils.extendObj(false, {\r\n\t\tfilterWrapId: 'filterWrap',\r\n\t\tactiveWrapId: 'activeFilters',\r\n\t\tpriceWrapId: 'priceFilterWrap',\r\n\t\textendedFilterId: 'extendedFilter',\r\n\t\treloadBlock: 'page',\r\n\t\tresultPageName: 'Result',\r\n\t\tresultPagePath: 'produkty/',\r\n\t\tresultBlockName: 'page',\r\n\t\tvisibleItemsCount: 12,\r\n\t\tpriceWithVAT: true,\r\n\t\tshowQuantity: false,\r\n\t\tuseDefault: false,\r\n\t\talwaysOpen: false,\r\n\t\tcollapsibleFilters: false,\r\n\t\tpopupFilter: false,\r\n\t\tappearance: {\r\n\t\t\tfilter: {\r\n\t\t\t\tcollapsible: true,\r\n\t\t\t\tdefaultOpen: false\r\n\t\t\t},\r\n\t\t\tparameters: {\r\n\t\t\t\tcollapsible: true,\r\n\t\t\t\tdefaultOpen: false,\r\n\t\t\t\tappearance: 'list' //['tabs','list','carousel']\r\n\t\t\t},\r\n\t\t\tvalues: {\r\n\t\t\t\tcollapsible: true,\r\n\t\t\t\tdefaultOpen: false,\r\n\t\t\t\tshowFirst: 0\r\n\t\t\t}\r\n\t\t}, \r\n\t\tgetLoader: fwEl=>{\r\n\t\t\treturn new EBContext.modules.Loader({\r\n\t\t\t\tparentElement: fwEl,\r\n\t\t\t\tloaderClass: 'fas fa-fw fa-spinner fa-spin',\r\n\t\t\t\tloaderType: 'overlay',\r\n\t\t\t\tprependLoader: false,\r\n\t\t\t\tdisableParentElement: false,\r\n\t\t\t\tindependent: false,\r\n\t\t\t\tloaderIcon: {\r\n\t\t\t\t\ticon: 'spinner',\r\n\t\t\t\t\tanimation: 'spin'\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\t\tdebug: true,\r\n\t\tparamsTypes: {\r\n\t\t\tFLOAT: {\r\n\t\t\t\tfnParseValue: function (value) {\r\n\t\t\t\t\tlet parsedVal = (!value ? value : parseFloat(value.toString().replace(/,/g, '.')));\r\n\t\t\t\t\treturn (typeof parsedVal === 'number' ? parsedVal : null);\r\n\t\t\t\t},\r\n\t\t\t\tfilterTypes: {\r\n\t\t\t\t\tCHECKBOX: {\r\n\t\t\t\t\t\tfnStringify: function (filter) {\r\n\t\t\t\t\t\t\tlet i, valStr, koef, val, values = [];\r\n\t\t\t\t\t\t\tfor (i = 0; i < filter.values.length; i++) {\r\n\t\t\t\t\t\t\t\tif (filter.values[i].selected) {\r\n\t\t\t\t\t\t\t\t\tkoef = filter.values[i].koef || 1;\r\n\t\t\t\t\t\t\t\t\tval = filter.values[i].value;\r\n\t\t\t\t\t\t\t\t\tvalues.push((val ? val * koef : val).toString().replace(/\\./g, ','));\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tvalStr = values.join(';');\r\n\t\t\t\t\t\t\tif (valStr !== '') valStr = '@@@' + valStr;\r\n\t\t\t\t\t\t\treturn filter.oid + ':::' + filter.type + ':::' + '@@@' + valStr + '###';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tRADIO: {\r\n\t\t\t\t\t\tfnStringify: function (filter) {\r\n\t\t\t\t\t\t\tlet i, valStr, koef, val, values = [];\r\n\t\t\t\t\t\t\tfor (i = 0; i < filter.values.length; i++) {\r\n\t\t\t\t\t\t\t\tif (filter.values[i].selected) {\r\n\t\t\t\t\t\t\t\t\tkoef = filter.values[i].koef || 1;\r\n\t\t\t\t\t\t\t\t\tval = filter.values[i].value;\r\n\t\t\t\t\t\t\t\t\tvalues.push((val ? val * koef : val).toString().replace(/\\./g, ','));\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tvalStr = values.join(';');\r\n\t\t\t\t\t\t\tif (valStr !== '') valStr = '@@@' + valStr;\r\n\t\t\t\t\t\t\treturn filter.oid + ':::' + filter.type + ':::' + '@@@' + valStr + '###';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tSELECT: {\r\n\t\t\t\t\t\tfnStringify: function (filter) {\r\n\t\t\t\t\t\t\tlet i, valStr, koef, val, values = [];\r\n\t\t\t\t\t\t\tfor (i = 0; i < filter.values.length; i++) {\r\n\t\t\t\t\t\t\t\tif (filter.values[i].selected) {\r\n\t\t\t\t\t\t\t\t\tkoef = filter.values[i].koef || 1;\r\n\t\t\t\t\t\t\t\t\tval = filter.values[i].value;\r\n\t\t\t\t\t\t\t\t\tvalues.push((val ? val * koef : val).toString().replace(/\\./g, ','));\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tvalStr = values.join(';');\r\n\t\t\t\t\t\t\tif (valStr !== '') valStr = '@@@' + valStr;\r\n\t\t\t\t\t\t\treturn filter.oid + ':::' + filter.type + ':::' + '@@@' + valStr + '###';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tMULTI_SELECT_SEARCH: {\r\n\t\t\t\t\t\tfnStringify: function (filter) {\r\n\t\t\t\t\t\t\tlet i, valStr, koef, val, values = [];\r\n\t\t\t\t\t\t\tfor (i = 0; i < filter.values.length; i++) {\r\n\t\t\t\t\t\t\t\tif (filter.values[i].selected) {\r\n\t\t\t\t\t\t\t\t\tkoef = filter.values[i].koef || 1;\r\n\t\t\t\t\t\t\t\t\tval = filter.values[i].value;\r\n\t\t\t\t\t\t\t\t\tvalues.push((val ? val * koef : val).toString().replace(/\\./g, ','));\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tvalStr = values.join(';');\r\n\t\t\t\t\t\t\tif (valStr !== '') valStr = '@@@' + valStr;\r\n\t\t\t\t\t\t\treturn filter.oid + ':::' + filter.type + ':::' + '@@@' + valStr + '###';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tNUMBER_INPUTS: {},\r\n\t\t\t\t\tSLIDER_INPUTS: {},\r\n\t\t\t\t\tSLIDER_STEPS: {}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tRANGE: {\r\n\t\t\t\tdefaultFilterType: 'NUMBER_INPUTS',\r\n\t\t\t\tfnParseValue: function (value) {\r\n\t\t\t\t\tif (value !== null) value = parseFloat(value.toString().replace(/,/g, '.'));\r\n\t\t\t\t\treturn (typeof value === 'number' ? value : null);\r\n\t\t\t\t},\r\n\t\t\t\tfilterTypes: {\r\n\t\t\t\t\tCHECKBOX: {\r\n\t\t\t\t\t\tfnStringify: function (filter) {\r\n\t\t\t\t\t\t\tlet i, valStr, koef, val1, val2, values = [];\r\n\t\t\t\t\t\t\tfor (i = 0; i < filter.values.length; i++) {\r\n\t\t\t\t\t\t\t\tif (filter.values[i].selected) {\r\n\t\t\t\t\t\t\t\t\tkoef = filter.values[i].koef || 1;\r\n\t\t\t\t\t\t\t\t\tval1 = filter.values[i].value;\r\n\t\t\t\t\t\t\t\t\tval2 = filter.values[i].value2;\r\n\t\t\t\t\t\t\t\t\tvalues.push((val1 ? val1*koef : val1).toString().replace(/\\./g, ',') + '~' + (val2 ? val2*koef : val2).toString().replace(/\\./g, ','));\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tvalStr = values.join(';');\r\n\t\t\t\t\t\t\tif (valStr !== '') valStr = '@@@' + valStr;\r\n\t\t\t\t\t\t\treturn filter.oid + ':::' + filter.type + ':::' + '@@@' + valStr + '###';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tRADIO: {\r\n\t\t\t\t\t\tfnStringify: function (filter) {\r\n\t\t\t\t\t\t\tlet i, valStr, koef, val1, val2, values = [];\r\n\t\t\t\t\t\t\tfor (i = 0; i < filter.values.length; i++) {\r\n\t\t\t\t\t\t\t\tif (filter.values[i].selected) {\r\n\t\t\t\t\t\t\t\t\tkoef = filter.values[i].koef || 1;\r\n\t\t\t\t\t\t\t\t\tval1 = filter.values[i].value;\r\n\t\t\t\t\t\t\t\t\tval2 = filter.values[i].value2;\r\n\t\t\t\t\t\t\t\t\tvalues.push((val1 ? val1 * koef : val1).toString().replace(/\\./g, ',') + '~' + (val2 ? val2 * koef : val2).toString().replace(/\\./g, ','));\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tvalStr = values.join(';');\r\n\t\t\t\t\t\t\tif (valStr !== '') valStr = '@@@' + valStr;\r\n\t\t\t\t\t\t\treturn filter.oid + ':::' + filter.type + ':::' + '@@@' + valStr + '###';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tSELECT: {\r\n\t\t\t\t\t\tfnStringify: function (filter) {\r\n\t\t\t\t\t\t\tlet i, valStr, koef, val1, val2, values = [];\r\n\t\t\t\t\t\t\tfor (i = 0; i < filter.values.length; i++) {\r\n\t\t\t\t\t\t\t\tif (filter.values[i].selected) {\r\n\t\t\t\t\t\t\t\t\tkoef = filter.values[i].koef || 1;\r\n\t\t\t\t\t\t\t\t\tval1 = filter.values[i].value;\r\n\t\t\t\t\t\t\t\t\tval2 = filter.values[i].value2;\r\n\t\t\t\t\t\t\t\t\tvalues.push((val1 ? val1 * koef : val1).toString().replace(/\\./g, ',') + '~' + (val2 ? val2 * koef : val2).toString().replace(/\\./g, ','));\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tvalStr = values.join(';');\r\n\t\t\t\t\t\t\tif (valStr !== '') valStr = '@@@' + valStr;\r\n\t\t\t\t\t\t\treturn filter.oid + ':::' + filter.type + ':::' + '@@@' + valStr + '###';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tMULTI_SELECT_SEARCH: {\r\n\t\t\t\t\t\tfnStringify: function (filter) {\r\n\t\t\t\t\t\t\tlet i, valStr, koef, val1, val2, values = [];\r\n\t\t\t\t\t\t\tfor (i = 0; i < filter.values.length; i++) {\r\n\t\t\t\t\t\t\t\tif (filter.values[i].selected) {\r\n\t\t\t\t\t\t\t\t\tkoef = filter.values[i].koef || 1;\r\n\t\t\t\t\t\t\t\t\tval1 = filter.values[i].value;\r\n\t\t\t\t\t\t\t\t\tval2 = filter.values[i].value2;\r\n\t\t\t\t\t\t\t\t\tvalues.push((val1 ? val1 * koef : val1).toString().replace(/\\./g, ',') + '~' + (val2 ? val2 * koef : val2).toString().replace(/\\./g, ','));\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tvalStr = values.join(';');\r\n\t\t\t\t\t\t\tif (valStr !== '') valStr = '@@@' + valStr;\r\n\t\t\t\t\t\t\treturn filter.oid + ':::' + filter.type + ':::' + '@@@' + valStr + '###';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tNUMBER_INPUTS: {},\r\n\t\t\t\t\tSLIDER_INPUTS: {},\r\n\t\t\t\t\tSLIDER_STEPS: {}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tENUM: {\r\n\t\t\t\tvalueProperty: 'oid',\r\n\t\t\t\tfilterTypes: {\r\n\t\t\t\t\tCHECKBOX: {},\r\n\t\t\t\t\tRADIO: {},\r\n\t\t\t\t\tSELECT: {},\r\n\t\t\t\t\tMULTI_SELECT_SEARCH: {}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tBOOLEAN: {\r\n\t\t\t\tdefaultFilterType: 'RADIO',\r\n\t\t\t\tfilterTypes: {\r\n\t\t\t\t\tRADIO: {},\r\n\t\t\t\t\tSELECT: {}\r\n\t\t\t\t},\r\n\t\t\t\tfnChange: function (oid, value) {\r\n\t\t\t\t\tlet i, changed = false;\r\n\t\t\t\t\tfor (i = 0; i < self.filters[oid].values.length; i++) {\r\n\t\t\t\t\t\tif (self.filters[oid].values[i].value == value) {\r\n\t\t\t\t\t\t\tif(!self.filters[oid].values[i].selected) changed = true;\r\n\t\t\t\t\t\t\tself.filters[oid].values[i].selected = true;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tif(self.filters[oid].values[i].selected) changed = true;\r\n\t\t\t\t\t\t\tself.filters[oid].values[i].selected = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn changed;\r\n\t\t\t\t},\r\n\t\t\t\tfnUpdateFilterValues: function (filter, scope) {\r\n\t\t\t\t\tfilter.selected = false;\r\n\t\t\t\t\tscope = scope || document;\r\n\t\t\t\t\tlet i, radioEl, labelEl;\r\n\t\t\t\t\tfor (i = 0; i < filter.values.length; i++) {\r\n\t\t\t\t\t\tradioEl = scope.querySelector('#' + self.getValId(filter.oid, filter.values[i].value));\r\n\t\t\t\t\t\tif (radioEl instanceof HTMLInputElement) {\r\n\t\t\t\t\t\t\tradioEl.checked = filter.values[i].selected;\r\n\t\t\t\t\t\t\tradioEl.disabled = filter.values[i].disabled;\r\n\r\n\t\t\t\t\t\t\tlabelEl = scope.querySelector('label[for=\"' + self.getValId(filter.oid, filter.values[i].value) + '\"]');\r\n\t\t\t\t\t\t\tif (labelEl instanceof HTMLElement) {\r\n\t\t\t\t\t\t\t\tlabelEl.innerText = filter.values[i].name + (filter.values[i].count && self.options.showQuantity ? ' (' + filter.values[i].count + ')' : '');\r\n\t\t\t\t\t\t\t\tif(radioEl.disabled){\r\n\t\t\t\t\t\t\t\t\tlabelEl.classList.add('text-muted');\r\n\t\t\t\t\t\t\t\t } else {\r\n\t\t\t\t\t\t\t\t\tlabelEl.classList.remove('text-muted');\r\n\t\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tfilter.selected = filter.selected || (filter.values[i].value !=='' && filter.values[i].selected);\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tfnStringify: function (filter) {\r\n\t\t\t\t\tlet i, value = '';\r\n\t\t\t\t\tfor (i = 0; i < filter.values.length; i++) {\r\n\t\t\t\t\t\tif (filter.values[i].selected) {\r\n\t\t\t\t\t\t\tvalue = filter.values[i].value;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn filter.oid + ':::' + filter.type + ':::' + value + '###';\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tCOLOR: {\r\n\t\t\t\tfilterTypes: {\r\n\t\t\t\t\tCHECKBOX: {\r\n\t\t\t\t\t\tfnGenerateFilterBody: function (filter, fnChange) {\r\n\t\t\t\t\t\t\tlet filterOptions = self.getFilterOptions(filter);\r\n\t\t\t\t\t\t\tlet filterDOM = EBContext.utils.template('<!--#filterWrapEl-->', {\r\n\t\t\t\t\t\t\t\tfilterWrapEl: '<div class=\"clearfix\"><!--#checkboxWrapEl;~:filter.values--></div>',\r\n\t\t\t\t\t\t\t\tcheckboxWrapEl: '<div class=\"checkboxWrap my-1 me-2 float-start\"><!--#checkboxEl--><!--#labelEl--></div>',\r\n\t\t\t\t\t\t\t\tcheckboxEl: '<input type=\"checkbox\" id=\"<!--@getValId-->\" style=\"visibility:hidden;width:1rem\" data-filter=\"<!--~filter.oid-->\" value=\"<!--@getValValue-->\"<!--!change@onCheckedChange-->>',\r\n\t\t\t\t\t\t\t\tlabelEl: '<label for=\"<!--@getValId-->\" class=\"colorBox\" style=\"width:1rem;height:1rem;display:inline-block;margin-left:-1rem\"></label>'\r\n\t\t\t\t\t\t\t}, {\r\n\t\t\t\t\t\t\t\tfilter: filter,\r\n\t\t\t\t\t\t\t\tgetValId: val=>self.getValId(filter.oid, val[filterOptions.valueProperty]),\r\n\t\t\t\t\t\t\t\tgetValValue: val=>val[filterOptions.valueProperty],\r\n\t\t\t\t\t\t\t\tonCheckedChange: (e,el,vars)=>(fnChange(el.getAttribute('data-filter'), el.value, el.checked) && self.submit())\r\n\t\t\t\t\t\t\t})[0];\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t filterOptions.fnUpdateFilterValues(filter, filterDOM);\r\n\t\t\t\t\t\t\treturn filterDOM;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnUpdateFilterValues: function (filter, scope) {\r\n\t\t\t\t\t\t\tscope = scope || document;\r\n\t\t\t\t\t\t\tfilter.selected = false;\r\n\t\t\t\t\t\t\tlet i, checkboxEl, colorBox;\r\n\t\t\t\t\t\t\tfor (i = 0; i < filter.values.length; i++) {\r\n\t\t\t\t\t\t\t\tcheckboxEl = scope.querySelector('#' + self.getValId(filter.oid, filter.values[i].value));\r\n\t\t\t\t\t\t\t\tif (checkboxEl instanceof HTMLInputElement) {\r\n\t\t\t\t\t\t\t\t\tcheckboxEl.checked = filter.values[i].selected;\r\n\t\t\t\t\t\t\t\t\tcheckboxEl.disabled = filter.values[i].disabled;\r\n\r\n\t\t\t\t\t\t\t\t\tcolorBox = scope.querySelector('[for=\"' + self.getValId(filter.oid, filter.values[i].value) + '\"]');\r\n\t\t\t\t\t\t\t\t\tif (colorBox instanceof HTMLElement) {\r\n\t\t\t\t\t\t\t\t\t\tcolorBox.style.background = (filter.values[i].disabled ? '#f2f2f2' : '#' + filter.values[i].value.toString().replace(/#/g, ''));\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tfilter.selected = filter.selected || filter.values[i].selected;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tRADIO: {\r\n\t\t\t\t\t\tfnGenerateFilterBody: function (filter, fnChange) {\r\n\t\t\t\t\t\t\tlet filterOptions = self.getFilterOptions(filter);\r\n\t\t\t\t\t\t\tlet filterDOM = EBContext.utils.template('<!--#filterWrapEl-->', {\r\n\t\t\t\t\t\t\t\tfilterWrapEl: '<div class=\"clearfix\"><!--#radioWrapEl;~:filter.values--></div>',\r\n\t\t\t\t\t\t\t\tradioWrapEl: '<div class=\"radioWrap my-1 me-2 float-start\"><!--#radioEl--><!--#labelEl--></div>',\r\n\t\t\t\t\t\t\t\tradioEl: '<input type=\"radio\" name=\"filter_<!--~filter.oid-->\" id=\"<!--@getValId-->\" style=\"visibility:hidden;width:1rem\" data-filter=\"<!--~filter.oid-->\" value=\"<!--@getValValue-->\"<!--!change@onCheckedChange-->>',\r\n\t\t\t\t\t\t\t\tlabelEl: '<label for=\"<!--@getValId-->\" class=\"colorBox\" style=\"width:1rem;height:1rem;display:inline-block;margin-left:-1rem\"></label>'\r\n\t\t\t\t\t\t\t}, {\r\n\t\t\t\t\t\t\t\tfilter: filter,\r\n\t\t\t\t\t\t\t\tgetValId: val=>self.getValId(filter.oid, val[filterOptions.valueProperty]),\r\n\t\t\t\t\t\t\t\tgetValValue: val=>val[filterOptions.valueProperty],\r\n\t\t\t\t\t\t\t\tonCheckedChange: (e,el,vars)=>(fnChange(el.getAttribute('data-filter'), el.value, el.checked) && self.submit())\r\n\t\t\t\t\t\t\t})[0];\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t filterOptions.fnUpdateFilterValues(filter, filterDOM);\r\n\t\t\t\t\t\t\treturn filterDOM;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnUpdateFilterValues: function (filter, scope) {\r\n\t\t\t\t\t\t\tscope = scope || document;\r\n\t\t\t\t\t\t\tfilter.selected = false;\r\n\t\t\t\t\t\t\tlet i, radioEl, colorBox;\r\n\t\t\t\t\t\t\tfor (i = 0; i < filter.values.length; i++) {\r\n\t\t\t\t\t\t\t\tradioEl = scope.querySelector('#' - self.getValId(filter.oid, filter.values[i].value));\r\n\t\t\t\t\t\t\t\tif (radioEl instanceof HTMLInputElement) {\r\n\t\t\t\t\t\t\t\t\tradioEl.checked = filter.values[i].selected;\r\n\t\t\t\t\t\t\t\t\tradioEl.disabled = filter.values[i].disabled;\r\n\r\n\t\t\t\t\t\t\t\t\tcolorBox = scope.querySelector('[for=\"' + self.getValId(filter.oid, filter.values[i].value) + '\"]');\r\n\t\t\t\t\t\t\t\t\tif (colorBox instanceof HTMLElement) {\r\n\t\t\t\t\t\t\t\t\t\tcolorBox.style.outline = (filter.values[i].selected ? '2px solid #333' : '');\r\n\t\t\t\t\t\t\t\t\t\tcolorBox.style.background = (filter.values[i].disabled ? '#f2f2f2' : '#' + filter.values[i].value);\r\n\t\t\t\t\t\t\t\t\t\tfilter.selected = filter.selected || filter.values[i].selected;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tSELECT: {\r\n\t\t\t\t\t\tfnGenerateFilterBody: function (filter, fnChange) {\r\n\t\t\t\t\t\t\tlet filterOptions = self.getFilterOptions(filter)\r\n\t\t\t\t\t\t\tlet filterDOM = EBContext.utils.template('<div><!--#selectEl--></div>', {\r\n\t\t\t\t\t\t\t\tselectEl: '<select class=\"form-control\" id=\"filter_<!--~filter.oid-->\" name=\"filter_<!--~filter.oid-->\" aria-label=\"<!--~filter.name-->\" data-filter=\"<!--~filter.oid-->\"<!--!change@onChange-->><!--#optionEl;~filter.values--></select>',\r\n\t\t\t\t\t\t\t\toptionEl: '<option id=\"<!--@getValId-->\" value=\"<!--$value-->\"></option>'\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t}, {\r\n\t\t\t\t\t\t\t\tfilter: filter,\r\n\t\t\t\t\t\t\t\tfnChange: fnChange,\r\n\t\t\t\t\t\t\t\tfilterOptions: filterOptions,\r\n\t\t\t\t\t\t\t\tgetValId: val=>self.getValId(filter.oid, val[filterOptions.valueProperty]),\r\n\t\t\t\t\t\t\t\tonChange: (e,el,vars)=>(fnChange(el.getAttribute('data-filter'), el.value, true) && self.submit())\r\n\t\t\t\t\t\t\t})[0];\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tfilterOptions.fnUpdateFilterValues(filter, filterDOM);\r\n\t\t\t\t\t\t\treturn filterDOM;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnUpdateFilterValues: function (filter, scope) {\r\n\t\t\t\t\t\t\tscope = scope || document;\r\n\t\t\t\t\t\t\tfilter.selected = false;\r\n\t\t\t\t\t\t\tlet selectEl = scope.querySelector('#filter_' + filter.oid),\r\n\t\t\t\t\t\t\ti, optionEl;\r\n\t\t\t\t\t\t\tfor (i = 0; i < filter.values.length; i++) {\r\n\t\t\t\t\t\t\t\toptionEl = scope.querySelector('#' + self.getValId(filter.oid, filter.values[i].value));\r\n\t\t\t\t\t\t\t\tif (optionEl instanceof HTMLOptionElement) {\r\n\t\t\t\t\t\t\t\t\toptionEl.disabled = filter.values[i].disabled;\r\n\t\t\t\t\t\t\t\t\toptionEl.style.background = (filter.values[i].disabled ? '#f2f2f2' : '#' + (filter.values[i].value ? filter.values[i].value : 'FFF'));\r\n\t\t\t\t\t\t\t\t\toptionEl.innerText = (\r\n\t\t\t\t\t\t\t\t\t\t(filter.values[i].name ? filter.values[i].name : '') +\r\n\t\t\t\t\t\t\t\t\t\t(filter.values[i].count && self.options.showQuantity ? ' (' + filter.values[i].count + ')' : '')\r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\tfilter.selected = filter.selected || filter.values[i].selected;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (filter.values[i].selected) {\r\n\t\t\t\t\t\t\t\t\tselectEl.value = filter.values[i].value;\r\n\t\t\t\t\t\t\t\t\tselectEl.style.background = (filter.disabled ? '#f2f2f2' : '#' + filter.values[i].value);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tfnGenerateActive: function (filter, fnChange) {\r\n\t\t\t\t\tlet filterOptions = self.getFilterOptions(filter),\r\n\t\t\t\t\t\tactiveWrapEl = document.createElement('div'),\r\n\t\t\t\t\t\ti, valueWrapEl, colorBox, rmBtn;\r\n\t\t\t\t\tself.filters[filter.oid].active = false;\r\n\t\t\t\t\t\r\n\t\t\t\t\tfor (i = 0; i < filter.values.length; i++) {\r\n\t\t\t\t\t\tif (filter.values[i].selected && (filter.values[i].value || typeof filter.values[i].value === 'number')) {\r\n\t\t\t\t\t\t\tvalueWrapEl = document.createElement('div');\r\n\t\t\t\t\t\t\tvalueWrapEl.className = 'valueWrap';\r\n\t\t\t\t\t\t\tcolorBox = document.createElement('div');\r\n\t\t\t\t\t\t\tcolorBox.className = 'colorBox';\r\n\t\t\t\t\t\t\tcolorBox.style.background = '#' + filter.values[i].value.toString().replace(/#/g, '');\r\n\t\t\t\t\t\t\tvalueWrapEl.append(colorBox);\r\n\t\t\t\t\t\t\trmBtn = document.createElement('button');\r\n\t\t\t\t\t\t\trmBtn.innerHTML = '<i class=\"fas fa-fw fa-times\"></i>';\r\n\t\t\t\t\t\t\trmBtn.type = 'button';\r\n\t\t\t\t\t\t\trmBtn.className = 'px-2';\r\n\t\t\t\t\t\t\trmBtn.setAttribute('data-filter', filter.oid);\r\n\t\t\t\t\t\t\trmBtn.setAttribute('data-value', filter.values[i][filterOptions.valueProperty]);\r\n\t\t\t\t\t\t\trmBtn.addEventListener('click', function () { // jshint ignore:line\r\n\t\t\t\t\t\t\t\tif(fnChange(this.getAttribute('data-filter'), this.getAttribute('data-value'), false)) self.submit();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tvalueWrapEl.appendChild(rmBtn);\r\n\t\t\t\t\t\t\tactiveWrapEl.appendChild(valueWrapEl);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (activeWrapEl.children.length > 0) {\r\n\t\t\t\t\t\tactiveWrapEl.firstChild.before(EBContext.utils.template('<!--#label-->', {\r\n\t\t\t\t\t\t\tlabel: '<div class=\"filterLabel\"><!--#clearBtn--><!--$filter.name--></div>',\r\n\t\t\t\t\t\t\tclearBtn: '<button <!--!click@clearFilter--> class=\"text-danger\" data-filter=\"<!--$filter.oid-->\"><i class=\"fas fa-fw fa-trash\"></i></button>'\r\n\t\t\t\t\t\t}, {\r\n\t\t\t\t\t\t\tfilter: filter,\r\n\t\t\t\t\t\t\tclearFilter: (e,el,vars,params)=>{\r\n\t\t\t\t\t\t\t\tfilterOptions.fnClear(el.getAttribute('data-filter'));\r\n\t\t\t\t\t\t\t\tself.submit();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})[0]);\r\n\t\t\t\t\t\tself.filters[filter.oid].active = true;\r\n\t\t\t\t\t\treturn activeWrapEl;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tDEFAULT: {\r\n\t\t\t\tvalueProperty: 'value',\r\n\t\t\t\tdefaultFilterType: 'CHECKBOX',\r\n\t\t\t\tconfig: {\r\n\t\t\t\t\t_multiUnitActive: true\r\n\t\t\t\t},\r\n\t\t\t\tfilterTypes: {\r\n\t\t\t\t\tCHECKBOX: {\r\n\t\t\t\t\t\tfnGenerateFilterBody: function (filter, fnChange) {\r\n\t\t\t\t\t\t\tlet filterOptions = self.getFilterOptions(filter);\r\n\t\t\t\t\t\t\tlet filterDOM = EBContext.utils.template('<!--#filterContainerEl-->', {\r\n\t\t\t\t\t\t\t\tfilterContainerEl: '<div class=\"container-fluid px-3\"><!--#filterWrapEl--><!--@useShowMore--></div>',\r\n\t\t\t\t\t\t\t\tfilterWrapEl: '<div class=\"row row-cols-1 row-cols-sm-2 row-cols-xl-4 box-visible\"><!--@renderVisibleItems--></div>',\r\n\t\t\t\t\t\t\t\tboxMoreEl: '<div class=\"row row-cols-1 row-cols-sm-2 row-cols-xl-4 ml-0 box-more d-none\"><!--@renderInvisibleItems--></div>',\r\n\t\t\t\t\t\t\t\tshowMoreEl: '<button type=\"button\" class=\"show-more btn btn-sm btn-primary w-100 mt-1\" id=\"more_<!--~filter.oid-->\"></button>',\r\n\t\t\t\t\t\t\t\tcheckboxWrapEl: '<div class=\"col checkboxWrap form-check flex-grow-1\" style=\"min-width:200px\"><!--#checkboxEl--><!--#labelEl--></div>',\r\n\t\t\t\t\t\t\t\tcheckboxEl: '<input type=\"checkbox\" id=\"<!--@getValId-->\" class=\"form-check-input me-2\" data-filter=\"<!--~filter.oid-->\" value=\"<!--@getValValue-->\"<!--!change@onCheckedChange-->>',\r\n\t\t\t\t\t\t\t\tlabelEl: '<label for=\"<!--@getValId-->\" class=\"form-check-label w-100\"></label>'\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t}, {\r\n\t\t\t\t\t\t\t\tfilter: filter,\r\n\t\t\t\t\t\t\t\tfnChange: fnChange,\r\n\t\t\t\t\t\t\t\tfilterOptions: filterOptions,\r\n\t\t\t\t\t\t\t\tuseShowMore: vars=>(vars.filter.values.length > self.options.visibleItemsCount ? '<!--#boxMoreEl--><!--#showMoreEl-->' : ''),\r\n\t\t\t\t\t\t\t\trenderVisibleItems: vars=>'<!--#checkboxWrapEl;$filter.values[0:' + self.options.visibleItemsCount + ']-->',\r\n\t\t\t\t\t\t\t\trenderInvisibleItems: vars=>'<!--#checkboxWrapEl;$filter.values[' + self.options.visibleItemsCount + ']-->',\r\n\t\t\t\t\t\t\t\tgetValId: val=>self.getValId(filter.oid, val[filterOptions.valueProperty]),\r\n\t\t\t\t\t\t\t\tgetValValue: val=>val[filterOptions.valueProperty],\r\n\t\t\t\t\t\t\t\tonCheckedChange: (e,el,vars)=>(fnChange(el.getAttribute('data-filter'), el.value, el.checked) && self.submit())\r\n\t\t\t\t\t\t\t})[0];\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t filterOptions.fnUpdateFilterValues(filter, filterDOM);\r\n\t\t\t\t\t\t\treturn filterDOM;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnUpdateFilterValues: function (filter, scope) {\r\n\t\t\t\t\t\t\tscope = scope || document;\r\n\t\t\t\t\t\t\tfilter.selected = false;\r\n\t\t\t\t\t\t\tlet filterOptions = self.getFilterOptions(filter),\r\n\t\t\t\t\t\t\t\ti, checkboxEl, labelEl, textWrap, unit, val1, val2;\r\n\t\t\t\t\t\t\tfor (i = 0; i < filter.values.length; i++) {\r\n\t\t\t\t\t\t\t\tcheckboxEl = scope.querySelector('#' + self.getValId(filter.oid, filter.values[i][filterOptions.valueProperty]));\r\n\t\t\t\t\t\t\t\tif (checkboxEl instanceof HTMLInputElement) {\r\n\t\t\t\t\t\t\t\t\tcheckboxEl.checked = filter.values[i].selected;\r\n\t\t\t\t\t\t\t\t\tcheckboxEl.disabled = filter.values[i].disabled;\r\n\t\t\t\t\t\t\t\t\tfilter.selected = filter.selected || filter.values[i].selected;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tlabelEl = scope.querySelector('[for=\"' + self.getValId(filter.oid, filter.values[i][filterOptions.valueProperty]) + '\"]');\r\n\t\t\t\t\t\t\t\tif (labelEl instanceof HTMLElement) {\r\n\t\t\t\t\t\t\t\t\ttextWrap = document.createElement('div');\r\n\t\t\t\t\t\t\t\t\ttextWrap.className = 'text-truncate';\r\n\t\t\t\t\t\t\t\t\tunit = filter.values[i].unit || filter.unit;\r\n\t\t\t\t\t\t\t\t\tval1 = filter.values[i][filterOptions.valueProperty];\r\n\t\t\t\t\t\t\t\t\tval2 = filter.values[i].value2;\r\n\t\t\t\t\t\t\t\t\ttextWrap.innerText = (filter.values[i].hasOwnProperty('name') ? filter.values[i].name : val1)\r\n\t\t\t\t\t\t\t\t\t\t+ (val2 ? '~' + val2 : '')\r\n\t\t\t\t\t\t\t\t\t\t+ (unit && (val1 || typeof val1 === 'number') ? ' ' + unit : '')\r\n\t\t\t\t\t\t\t\t\t\t+ (filter.values[i].count && self.options.showQuantity ? ' (' + filter.values[i].count + ')' : '');\r\n\t\t\t\t\t\t\t\t\ttextWrap.setAttribute('title', textWrap.innerText);\r\n\t\t\t\t\t\t\t\t\tlabelEl.innerHTML = '';\r\n\t\t\t\t\t\t\t\t\tlabelEl.appendChild(textWrap); \r\n\t\t\t\t\t\t\t\t\tif(checkboxEl.disabled){\r\n\t\t\t\t\t\t\t\t\t\tlabelEl.classList.add('text-muted');\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t labelEl.classList.remove('text-muted');\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tRADIO: {\r\n\t\t\t\t\t\tfnGenerateFilterBody: function (filter, fnChange) {\r\n\t\t\t\t\t\t\tlet filterOptions = self.getFilterOptions(filter);\r\n\t\t\t\t\t\t\tlet filterDOM = EBContext.utils.template('<!--#filterContainerEl-->', {\r\n\t\t\t\t\t\t\t\tfilterContainerEl: '<div class=\"container-fluid px-3\"><!--#filterWrapEl--><!--@useShowMore--></div>',\r\n\t\t\t\t\t\t\t\tfilterWrapEl: '<div class=\"row row-cols-1 row-cols-sm-2 row-cols-xl-4 box-visible\"><!--@renderVisibleItems--></div>',\r\n\t\t\t\t\t\t\t\tboxMoreEl: '<div class=\"row row-cols-1 row-cols-sm-2 row-cols-xl-4 ml-0 box-more d-none\"><!--@renderInvisibleItems--></div>',\r\n\t\t\t\t\t\t\t\tshowMoreEl: '<button type=\"button\" class=\"show-more btn btn-sm btn-primary w-100 mt-1\" id=\"more_<!--~filter.oid-->\"></button>',\r\n\t\t\t\t\t\t\t\tradioWrapEl: '<div class=\"col checkboxWrap form-check flex-grow-1\" style=\"min-width:200px\"><!--#radioEl--><!--#labelEl--></div>',\r\n\t\t\t\t\t\t\t\tradioEl: '<input type=\"radio\" name=\"filter_<!--~filter.oid-->\" id=\"<!--@getValId-->\" class=\"form-check-input me-2\" data-filter=\"<!--~filter.oid-->\" value=\"<!--@getValValue-->\"<!--!change@onCheckedChange-->>',\r\n\t\t\t\t\t\t\t\tlabelEl: '<label for=\"<!--@getValId-->\" class=\"form-check-label w-100\"></label>'\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t}, {\r\n\t\t\t\t\t\t\t\tfilter: filter,\r\n\t\t\t\t\t\t\t\tfnChange: fnChange,\r\n\t\t\t\t\t\t\t\tfilterOptions: filterOptions,\r\n\t\t\t\t\t\t\t\tuseShowMore: vars=>(vars.filter.values.length > self.options.visibleItemsCount ? '<!--#boxMoreEl--><!--#showMoreEl-->' : ''),\r\n\t\t\t\t\t\t\t\trenderVisibleItems: vars=>'<!--#radioWrapEl;$filter.values[0:' + self.options.visibleItemsCount + ']-->',\r\n\t\t\t\t\t\t\t\trenderInvisibleItems: vars=>'<!--#radioWrapEl;$filter.values[' + self.options.visibleItemsCount + ']-->',\r\n\t\t\t\t\t\t\t\tgetValId: val=>self.getValId(filter.oid, val[filterOptions.valueProperty]),\r\n\t\t\t\t\t\t\t\tgetValValue: val=>val[filterOptions.valueProperty],\r\n\t\t\t\t\t\t\t\tonCheckedChange: (e,el,vars)=>(fnChange(el.getAttribute('data-filter'), el.value, el.checked) && self.submit())\r\n\t\t\t\t\t\t\t})[0];\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tfilterOptions.fnUpdateFilterValues(filter, filterDOM);\r\n\t\t\t\t\t\t\treturn filterDOM;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnUpdateFilterValues: function (filter, scope) {\r\n\t\t\t\t\t\t\tscope = scope || document;\r\n\t\t\t\t\t\t\tfilter.selected = false;\r\n\t\t\t\t\t\t\tlet filterOptions = self.getFilterOptions(filter),\r\n\t\t\t\t\t\t\t\ti, radioEl, labelEl, unit, val1, val2;\r\n\t\t\t\t\t\t\tfor (i = 0; i < filter.values.length; i++) {\r\n\t\t\t\t\t\t\t\tradioEl = scope.querySelector('#' + self.getValId(filter.oid, filter.values[i][filterOptions.valueProperty]));\r\n\t\t\t\t\t\t\t\tif (radioEl instanceof HTMLInputElement) {\r\n\t\t\t\t\t\t\t\t\tradioEl.checked = filter.values[i].selected;\r\n\t\t\t\t\t\t\t\t\tradioEl.disabled = filter.values[i].disabled;\r\n\t\t\t\t\t\t\t\t\tfilter.selected = filter.selected || (filter.values[i][filterOptions.valueProperty] !== '' && filter.values[i].selected);\r\n\r\n\t\t\t\t\t\t\t\t\tlabelEl = scope.querySelector('label[for=\"' + self.getValId(filter.oid, filter.values[i][filterOptions.valueProperty]) + '\"]');\r\n\t\t\t\t\t\t\t\t\tif (labelEl instanceof HTMLElement) {\r\n\t\t\t\t\t\t\t\t\t\tunit = filter.values[i].unit || filter.unit;\r\n\t\t\t\t\t\t\t\t\t\tval1 = filter.values[i][filterOptions.valueProperty];\r\n\t\t\t\t\t\t\t\t\t\tval2 = filter.values[i].value2;\r\n\t\t\t\t\t\t\t\t\t\tlabelEl.innerText = (filter.values[i].hasOwnProperty('name') ? filter.values[i].name : val1)\r\n\t\t\t\t\t\t\t\t\t\t\t+ (val2 ? '~' + val2 : '')\r\n\t\t\t\t\t\t\t\t\t\t\t+ (unit && (val1 || typeof val1 === 'number') ? ' ' + unit : '')\r\n\t\t\t\t\t\t\t\t\t\t\t+ (filter.values[i].count && self.options.showQuantity ? ' (' + filter.values[i].count + ')' : '');\r\n\t\t\t\t\t\t\t\t\t\tif(radioEl.disabled){\r\n\t\t\t\t\t\t\t\t\t\t\tlabelEl.classList.add('text-muted');\r\n\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\t labelEl.classList.remove('text-muted');\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnGenerateActive: function (filter, fnChange) {\r\n\t\t\t\t\t\t\tlet filterOptions = self.getFilterOptions(filter),\r\n\t\t\t\t\t\t\t\tactiveWrapEl = document.createElement('div'),\r\n\t\t\t\t\t\t\t\ti, valueWrapEl, valueTextEl, val1, val2, unit, rmBtn;\r\n\t\t\t\t\t\t\tself.filters[filter.oid].active = false;\r\n\r\n\t\t\t\t\t\t\tfor (i = 0; i < filter.values.length; i++) {\r\n\t\t\t\t\t\t\t\tif (filter.values[i].selected && filter.values[i][filterOptions.valueProperty] !== '') {\r\n\t\t\t\t\t\t\t\t\tvalueWrapEl = document.createElement('div');\r\n\t\t\t\t\t\t\t\t\tvalueWrapEl.className = 'valueWrap';\r\n\t\t\t\t\t\t\t\t\tvalueTextEl = document.createElement('span');\r\n\t\t\t\t\t\t\t\t\tval1 = filter.values[i][filterOptions.valueProperty];\r\n\t\t\t\t\t\t\t\t\tval2 = filter.values[i].value2;\r\n\t\t\t\t\t\t\t\t\tunit = filter.values[i].unit || filter.unit;\r\n\t\t\t\t\t\t\t\t\tvalueTextEl.innerText = (filter.values[i].hasOwnProperty('name') ? filter.values[i].name : val1)\r\n\t\t\t\t\t\t\t\t\t\t+ (val2 ? '~' + val2 : '')\r\n\t\t\t\t\t\t\t\t\t\t+ (filter.unit && (val1 || typeof val1 === 'number') ? ' ' + unit : '')\r\n\t\t\t\t\t\t\t\t\t\t+ (filter.values[i].count && self.options.showQuantity ? ' (' + filter.values[i].count + ')' : '');\r\n\t\t\t\t\t\t\t\t\trmBtn = document.createElement('button');\r\n\t\t\t\t\t\t\t\t\trmBtn.innerHTML = '<i class=\"fas fa-fw fa-times\"></i>';\r\n\t\t\t\t\t\t\t\t\trmBtn.type = 'button';\r\n\t\t\t\t\t\t\t\t\trmBtn.className = 'px-2';\r\n\t\t\t\t\t\t\t\t\trmBtn.setAttribute('data-filter', filter.oid);\r\n\t\t\t\t\t\t\t\t\trmBtn.setAttribute('data-value', filter.values[i][filterOptions.valueProperty]);\r\n\t\t\t\t\t\t\t\t\trmBtn.addEventListener('click', function () { // jshint ignore:line\r\n\t\t\t\t\t\t\t\t\t\tif(fnChange(this.getAttribute('data-filter'), '', true)) self.submit();\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\tvalueWrapEl.appendChild(valueTextEl);\r\n\t\t\t\t\t\t\t\t\tvalueWrapEl.appendChild(rmBtn);\r\n\t\t\t\t\t\t\t\t\tactiveWrapEl.appendChild(valueWrapEl);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (activeWrapEl.children.length > 0) {\r\n\t\t\t\t\t\t\t\tactiveWrapEl.firstChild.before(EBContext.utils.template('<!--#label-->', {\r\n\t\t\t\t\t\t\t\t\tlabel: '<div class=\"filterLabel\"><!--#clearBtn--><!--$filter.name--></div>',\r\n\t\t\t\t\t\t\t\t\tclearBtn: '<button <!--!click@clearFilter--> class=\"text-danger\" data-filter=\"<!--$filter.oid-->\"><i class=\"fas fa-fw fa-trash\"></i></button>'\r\n\t\t\t\t\t\t\t\t}, {\r\n\t\t\t\t\t\t\t\t\tfilter: filter,\r\n\t\t\t\t\t\t\t\t\tclearFilter: (e,el,vars,params)=>{\r\n\t\t\t\t\t\t\t\t\t\tfilterOptions.fnClear(el.getAttribute('data-filter'));\r\n\t\t\t\t\t\t\t\t\t\tself.submit();\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t})[0]);\r\n\t\t\t\t\t\t\t\tself.filters[filter.oid].active = true;\r\n\t\t\t\t\t\t\t\treturn activeWrapEl;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnUpdate: function (filter) {\r\n\t\t\t\t\t\t\tlet filterOptions = self.getFilterOptions(filter),\r\n\t\t\t\t\t\t\t\thasEmptyVal = false,\r\n\t\t\t\t\t\t\t\ti, j, disabled, valueCount, _filter;\r\n\t\t\t\t\t\t\tfilter.values = filter.values.sort(filterOptions.fnSortValues);\r\n\r\n\t\t\t\t\t\t\tfor (i = 0; i < filter.values.length; i++) {\r\n\t\t\t\t\t\t\t\tif (filter.type === 'BOOLEAN') {\r\n\t\t\t\t\t\t\t\t\tif (filter.values[i].value == '0') {\r\n\t\t\t\t\t\t\t\t\t\tfilter.values[i].name = EBContext.resource('NE');\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tif (filter.values[i].value == '1') {\r\n\t\t\t\t\t\t\t\t\t\tfilter.values[i].name = EBContext.resource('ANO');\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (filter.values[i].value == '') {\r\n\t\t\t\t\t\t\t\t\thasEmptyVal = true;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (!hasEmptyVal) {\r\n\t\t\t\t\t\t\t\tfilter.values.push({\r\n\t\t\t\t\t\t\t\t\tcount: '',\r\n\t\t\t\t\t\t\t\t\tgroup: '',\r\n\t\t\t\t\t\t\t\t\tselected: true,\r\n\t\t\t\t\t\t\t\t\tvalue: '',\r\n\t\t\t\t\t\t\t\t\toid: '',\r\n\t\t\t\t\t\t\t\t\tname: EBContext.resource('NEFILTROVAT')\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (!self.filters.hasOwnProperty(filter.oid)) {\r\n\t\t\t\t\t\t\t\tself.filters[filter.oid] = filter;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t_filter = self.filters[filter.oid],\r\n\t\t\t\t\t\t\t_filter.selected = false;\r\n\r\n\t\t\t\t\t\t\tfor (i = 0; i < _filter.values.length; i++) {\r\n\t\t\t\t\t\t\t\tif (_filter.values[i].selected && (_filter.values[i].value || typeof _filter.values[i].value === 'number')) {\r\n\t\t\t\t\t\t\t\t\t_filter.selected = true;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tfor (i = 0; i < _filter.values.length; i++) {\r\n\t\t\t\t\t\t\t\tdisabled = !_filter.selected;\r\n\t\t\t\t\t\t\t\tvalueCount = 0;\r\n\r\n\t\t\t\t\t\t\t\t// pro enum naplnit vlastnost name - mo�nost do budoucna u typu COLOR jako name pos�lat i n�zev barvy\r\n\t\t\t\t\t\t\t\tif (filterOptions.valueProperty !== 'value' && _filter.values[i].value) _filter.values[i].name = _filter.values[i].value;\r\n\r\n\t\t\t\t\t\t\t\tfor (j = 0; j < filter.values.length; j++) {\r\n\t\t\t\t\t\t\t\t\tif (_filter.values[i].value == filter.values[j].value) {\r\n\t\t\t\t\t\t\t\t\t\tif (!_filter.selected && _filter.values[i].value == '') {\r\n\t\t\t\t\t\t\t\t\t\t\t_filter.values[i].selected = true;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tif(!_filter.disabled) disabled = false;\r\n\t\t\t\t\t\t\t\t\t\tvalueCount = filter.values[j].count;\r\n\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t_filter.values[i].disabled = disabled;\r\n\t\t\t\t\t\t\t\t_filter.values[i].count = valueCount;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnChange: function (oid, value, selected) {\r\n\t\t\t\t\t\t\tlet changed = false,\r\n\t\t\t\t\t\t\t\tfilterOptions = self.getFilterOptions(self.filters[oid]),\r\n\t\t\t\t\t\t\t\ti;\r\n\t\t\t\t\t\t\tvalue = filterOptions.fnParseValue(value);\r\n\t\t\t\t\t\t\tfor (i = 0; i < self.filters[oid].values.length; i++) {\r\n\t\t\t\t\t\t\t\tif (self.filters[oid].values[i][filterOptions.valueProperty] == value) {\r\n\t\t\t\t\t\t\t\t\tif(self.filters[oid].values[i].selected !== selected) changed = true;\r\n\t\t\t\t\t\t\t\t\tself.filters[oid].values[i].selected = selected;\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tif(self.filters[oid].values[i].selected) changed = true;\r\n\t\t\t\t\t\t\t\t\tself.filters[oid].values[i].selected = false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn changed;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tSELECT: {\r\n\t\t\t\t\t\tfnGenerateFilterBody: function (filter, fnChange) {\r\n\t\t\t\t\t\t\tlet filterOptions = self.getFilterOptions(filter)\r\n\t\t\t\t\t\t\tlet filterDOM = EBContext.utils.template('<div><!--#selectEl--></div>', {\r\n\t\t\t\t\t\t\t\tselectEl: '<select class=\"form-control\" id=\"filter_<!--~filter.oid-->\" name=\"filter_<!--~filter.oid-->\" aria-label=\"<!--~filter.name-->\" data-filter=\"<!--~filter.oid-->\"<!--!change@onChange-->><!--#optionEl;~filter.values--></select>',\r\n\t\t\t\t\t\t\t\toptionEl: '<option id=\"<!--@getValId-->\" value=\"<!--@getValValue-->\"></option>'\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t}, {\r\n\t\t\t\t\t\t\t\tfilter: filter,\r\n\t\t\t\t\t\t\t\tfnChange: fnChange,\r\n\t\t\t\t\t\t\t\tfilterOptions: filterOptions,\r\n\t\t\t\t\t\t\t\tgetValId: val=>self.getValId(filter.oid, val[filterOptions.valueProperty]),\r\n\t\t\t\t\t\t\t\tgetValValue: val=>val[filterOptions.valueProperty],\r\n\t\t\t\t\t\t\t\tonChange: (e,el,vars)=>(fnChange(el.getAttribute('data-filter'), el.value, true) && self.submit())\r\n\t\t\t\t\t\t\t})[0];\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tfilterOptions.fnUpdateFilterValues(filter, filterDOM);\r\n\t\t\t\t\t\t\treturn filterDOM;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnUpdateFilterValues: function (filter, scope) {\r\n\t\t\t\t\t\t\tscope = scope || document;\r\n\t\t\t\t\t\t\tfilter.selected = false;\r\n\t\t\t\t\t\t\tlet filterOptions = self.getFilterOptions(filter),\r\n\t\t\t\t\t\t\t\tselectEl = scope.querySelector('#filter_' + filter.oid),\r\n\t\t\t\t\t\t\t\ti, optionEl, unit, val1, val2;\r\n\t\t\t\t\t\t\tfor (i = 0; i < filter.values.length; i++) {\r\n\t\t\t\t\t\t\t\toptionEl = scope.querySelector('#' + self.getValId(filter.oid, filter.values[i][filterOptions.valueProperty]));\r\n\t\t\t\t\t\t\t\tif (optionEl instanceof HTMLOptionElement) {\r\n\t\t\t\t\t\t\t\t\toptionEl.selected = filter.values[i].selected;\r\n\t\t\t\t\t\t\t\t\toptionEl.disabled = filter.values[i].disabled;\r\n\t\t\t\t\t\t\t\t\tfilter.selected = filter.selected || (filter.values[i][filterOptions.valueProperty] !== '' && filter.values[i].selected);\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tunit = filter.values[i].unit || filter.unit;\r\n\t\t\t\t\t\t\t\t\tval1 = filter.values[i][filterOptions.valueProperty];\r\n\t\t\t\t\t\t\t\t\tval2 = filter.values[i].value2;\r\n\t\t\t\t\t\t\t\t\toptionEl.innerText = (filter.values[i].hasOwnProperty('name') ? filter.values[i].name : val1)\r\n\t\t\t\t\t\t\t\t\t\t+ (val2 ? '~' + val2 : '')\r\n\t\t\t\t\t\t\t\t\t\t+ (unit && (val1 || typeof val1 === 'number') ? ' ' + unit : '')\r\n\t\t\t\t\t\t\t\t\t\t+ (filter.values[i].count && self.options.showQuantity ? ' (' + filter.values[i].count + ')' : '');\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tselectEl.disabled = filter.disabled;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnGenerateActive: function (filter, fnChange) {\r\n\t\t\t\t\t\t\tlet filterOptions = self.getFilterOptions(filter),\r\n\t\t\t\t\t\t\t\tactiveWrapEl = document.createElement('div'),\r\n\t\t\t\t\t\t\t\ti, valueWrapEl, valueTextEl, val1, val2, rmBtn;\r\n\t\t\t\t\t\t\tself.filters[filter.oid].active = false;\r\n\t\t\t\t\t\t\tfor (i = 0; i < filter.values.length; i++) {\r\n\t\t\t\t\t\t\t\tif (filter.values[i].selected && filter.values[i][filterOptions.valueProperty] !== '') {\r\n\t\t\t\t\t\t\t\t\tvalueWrapEl = document.createElement('div');\r\n\t\t\t\t\t\t\t\t\tvalueWrapEl.className = 'valueWrap';\r\n\t\t\t\t\t\t\t\t\tvalueTextEl = document.createElement('span');\r\n\t\t\t\t\t\t\t\t\tval1 = filter.values[i][filterOptions.valueProperty];\r\n\t\t\t\t\t\t\t\t\tval2 = filter.values[i].value2\r\n\t\t\t\t\t\t\t\t\tvalueTextEl.innerText = (filter.values[i].hasOwnProperty('name') ? filter.values[i].name : val1)\r\n\t\t\t\t\t\t\t\t\t\t + (val2 ? '~' + val2 : '')\r\n\t\t\t\t\t\t\t\t\t\t + (filter.unit && filter.values[i][filterOptions.valueProperty] !== '' ? ' ' + filter.unit : '')\r\n\t\t\t\t\t\t\t\t\t\t + (filter.values[i].count && self.options.showQuantity ? ' (' + filter.values[i].count + ')' : '');\r\n\t\t\t\t\t\t\t\t\tvalueWrapEl.appendChild(valueTextEl);\r\n\t\t\t\t\t\t\t\t\trmBtn = document.createElement('button');\r\n\t\t\t\t\t\t\t\t\trmBtn.innerHTML = '<i class=\"fas fa-fw fa-times\"></i>';\r\n\t\t\t\t\t\t\t\t\trmBtn.type = 'button';\r\n\t\t\t\t\t\t\t\t\trmBtn.className = 'px-2';\r\n\t\t\t\t\t\t\t\t\trmBtn.setAttribute('data-filter', filter.oid);\r\n\t\t\t\t\t\t\t\t\trmBtn.setAttribute('data-value', filter.values[i][filterOptions.valueProperty]);\r\n\t\t\t\t\t\t\t\t\trmBtn.addEventListener('click', function () { // jshint ignore:line\r\n\t\t\t\t\t\t\t\t\t\tif(fnChange(this.getAttribute('data-filter'), this.getAttribute('data-value'), false)) self.submit();\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\tvalueWrapEl.appendChild(rmBtn);\r\n\t\t\t\t\t\t\t\t\tactiveWrapEl.appendChild(valueWrapEl);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (activeWrapEl.children.length > 0) {\r\n\t\t\t\t\t\t\t\tactiveWrapEl.firstChild.before(EBContext.utils.template('<!--#label-->', {\r\n\t\t\t\t\t\t\t\t\tlabel: '<div class=\"filterLabel\"><!--#clearBtn--><!--$filter.name--></div>',\r\n\t\t\t\t\t\t\t\t\tclearBtn: '<button <!--!click@clearFilter--> class=\"text-danger\" data-filter=\"<!--$filter.oid-->\"><i class=\"fas fa-fw fa-trash\"></i></button>'\r\n\t\t\t\t\t\t\t\t}, {\r\n\t\t\t\t\t\t\t\t\tfilter: filter,\r\n\t\t\t\t\t\t\t\t\tclearFilter: (e,el,vars,params)=>{\r\n\t\t\t\t\t\t\t\t\t\tfilterOptions.fnClear(el.getAttribute('data-filter'));\r\n\t\t\t\t\t\t\t\t\t\tself.submit();\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t})[0]);\r\n\t\t\t\t\t\t\t\tself.filters[filter.oid].active = true;\r\n\t\t\t\t\t\t\t\treturn activeWrapEl;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnChange: function (oid, value, selected) {\r\n\t\t\t\t\t\t\tlet changed = false,\r\n\t\t\t\t\t\t\t\tfilterOptions = self.getFilterOptions(self.filters[oid]),\r\n\t\t\t\t\t\t\t\ti;\r\n\t\t\t\t\t\t\tvalue = filterOptions.fnParseValue(value);\r\n\t\t\t\t\t\t\tfor (i = 0; i < self.filters[oid].values.length; i++) {\r\n\t\t\t\t\t\t\t\tif (self.filters[oid].values[i][filterOptions.valueProperty] == value) {\r\n\t\t\t\t\t\t\t\t\tif(self.filters[oid].values[i].selected !== selected) changed = true;\r\n\t\t\t\t\t\t\t\t\tself.filters[oid].values[i].selected = selected;\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tif(self.filters[oid].values[i].selected) changed = true;\r\n\t\t\t\t\t\t\t\t\tself.filters[oid].values[i].selected = false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn changed;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnUpdate: function (filter) {\r\n\t\t\t\t\t\t\tlet filterOptions = self.getFilterOptions(filter),\r\n\t\t\t\t\t\t\t\thasEmptyVal = false,\r\n\t\t\t\t\t\t\t\ti, j, _filter, disabled, valueCount;\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tfilter.values = filter.values.sort(filterOptions.fnSortValues);\r\n\t\t\t\t\t\t\tfor (i = 0; i < filter.values.length; i++) {\r\n\t\t\t\t\t\t\t\tif (filter.type === 'BOOLEAN') {\r\n\t\t\t\t\t\t\t\t\tif (filter.values[i].value == '0') {\r\n\t\t\t\t\t\t\t\t\t\tfilter.values[i].name = EBContext.resource('NE');\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tif (filter.values[i].value == '1') {\r\n\t\t\t\t\t\t\t\t\t\tfilter.values[i].name = EBContext.resource('ANO');\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (filter.values[i].value == '') {\r\n\t\t\t\t\t\t\t\t\thasEmptyVal = true;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (!hasEmptyVal) {\r\n\t\t\t\t\t\t\t\tfilter.values.push({\r\n\t\t\t\t\t\t\t\t\tcount: '',\r\n\t\t\t\t\t\t\t\t\tgroup: '',\r\n\t\t\t\t\t\t\t\t\tselected: true,\r\n\t\t\t\t\t\t\t\t\tvalue: '',\r\n\t\t\t\t\t\t\t\t\toid: '',\r\n\t\t\t\t\t\t\t\t\tname: EBContext.resource('NEFILTROVAT')\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (!self.filters.hasOwnProperty(filter.oid)) {\r\n\t\t\t\t\t\t\t\tself.filters[filter.oid] = filter;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t_filter = self.filters[filter.oid];\r\n\t\t\t\t\t\t\t_filter.selected = false;\r\n\r\n\t\t\t\t\t\t\tfor (i = 0; i < _filter.values.length; i++) {\r\n\t\t\t\t\t\t\t\tif (_filter.values[i].selected && (_filter.values[i].value || typeof _filter.values[i].value === 'number')) {\r\n\t\t\t\t\t\t\t\t\t_filter.selected = true;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tfor (i = 0; i < _filter.values.length; i++) {\r\n\t\t\t\t\t\t\t\tdisabled = !_filter.selected;\r\n\t\t\t\t\t\t\t\tvalueCount = 0;\r\n\r\n\t\t\t\t\t\t\t\t// pro enum naplnit vlastnost name - mo�nost do budoucna u typu COLOR jako name pos�lat i n�zev barvy\r\n\t\t\t\t\t\t\t\tif (filterOptions.valueProperty !== 'value' && _filter.values[i].value) _filter.values[i].name = _filter.values[i].value;\r\n\r\n\t\t\t\t\t\t\t\tif (!filter.disabled) {\r\n\t\t\t\t\t\t\t\t\tfor (j = 0; j < filter.values.length; j++) {\r\n\t\t\t\t\t\t\t\t\t\tif (_filter.values[i].value == filter.values[j].value) {\r\n\t\t\t\t\t\t\t\t\t\t\tdisabled = false;\r\n\t\t\t\t\t\t\t\t\t\t\tvalueCount = filter.values[j].count;\r\n\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t_filter.values[i].disabled = disabled;\r\n\t\t\t\t\t\t\t\t_filter.values[i].count = valueCount;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tMULTI_SELECT_SEARCH: {\r\n\t\t\t\t\t\tconfig: {\r\n\t\t\t\t\t\t\tactionsBox: true,\r\n\t\t\t\t\t\t\tliveSearch: true,\r\n\t\t\t\t\t\t\twidth: false,\r\n\t\t\t\t\t\t\t_multiple: true\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnGenerateFilterBody: function (filter, fnChange) {\r\n\t\t\t\t\t\t\tlet filterOptions = self.getFilterOptions(filter),\r\n\t\t\t\t\t\t\t\tfilterConfig = (filter.filterTypeConfig ? EBContext.utils.mergeObj(false, filterOptions.config, filter.filterTypeConfig) : filterOptions.config);\r\n\t\t\t\t\t\t\tlet filterDOM = EBContext.utils.template('<div><!--#selectEl--></div>', {\r\n\t\t\t\t\t\t\t\tselectEl: '<select<!--@isMultiple--> class=\"w-100\" id=\"filter_<!--~filter.oid-->\" name=\"filter_<!--~filter.oid-->\" aria-label=\"<!--~filter.name-->\" data-filter=\"<!--~filter.oid-->\"<!--!change@onChange-->><!--#optionEl;~filter.values--></select>',\r\n\t\t\t\t\t\t\t\toptionEl: '<option id=\"<!--@getValId-->\" value=\"<!--@getValValue-->\"></option>'\r\n\t\t\t\t\t\t\t}, {\r\n\t\t\t\t\t\t\t\tfilter: filter,\r\n\t\t\t\t\t\t\t\tfnChange: fnChange,\r\n\t\t\t\t\t\t\t\tfilterOptions: filterOptions,\r\n\t\t\t\t\t\t\t\tgetValId: val => self.getValId(filter.oid, val[filterOptions.valueProperty]),\r\n\t\t\t\t\t\t\t\tgetValValue: val => val[filterOptions.valueProperty] + (typeof val.value2 !== 'undefined' ? '~' + val.value2 : ''),\r\n\t\t\t\t\t\t\t\tonChange: (e, el, vars) => {\r\n\t\t\t\t\t\t\t\t\tlet filter = self.filters[el.getAttribute('data-filter')],\r\n\t\t\t\t\t\t\t\t\t\tfilterOptions = self.getFilterOptions(filter),\r\n\t\t\t\t\t\t\t\t\t\tvalues = [], i;\r\n\t\t\t\t\t\t\t\t\tfor (i = 0; i < el.selectedOptions.length; i++) {\r\n\t\t\t\t\t\t\t\t\t\tvalues.push(filterOptions.fnParseValue(el.selectedOptions[i].value));\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tif(fnChange(el.getAttribute('data-filter'), values, true)) self.submit();\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tisMultiple: vars=>(filterConfig._multiple ? ' multiple' : '')\r\n\t\t\t\t\t\t\t})[0];\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tfilterOptions.fnUpdateFilterValues(filter, filterDOM);\r\n\t\t\t\t\t\t\tself.selects[filter.oid] = {\r\n\t\t\t\t\t\t\t\telementId: 'filter_' + filter.oid,\r\n\t\t\t\t\t\t\t\toptions: filterConfig\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\treturn filterDOM;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnGenerateActive: function (filter, fnChange) {\r\n\t\t\t\t\t\t\tlet filterOptions = self.getFilterOptions(filter),\r\n\t\t\t\t\t\t\t\tactiveWrapEl = document.createElement('div'),\r\n\t\t\t\t\t\t\t\ti, valueWrapEl, valueTextEl, val1, val2, rmBtn;\r\n\t\t\t\t\t\t\tself.filters[filter.oid].active = false;\r\n\r\n\t\t\t\t\t\t\tfor (i = 0; i < filter.values.length; i++) {\r\n\t\t\t\t\t\t\t\tif (filter.values[i].selected && filter.values[i][filterOptions.valueProperty] !== '') {\r\n\t\t\t\t\t\t\t\t\tvalueWrapEl = document.createElement('div');\r\n\t\t\t\t\t\t\t\t\tvalueWrapEl.className = 'valueWrap';\r\n\t\t\t\t\t\t\t\t\tvalueTextEl = document.createElement('span');\r\n\t\t\t\t\t\t\t\t\tval1 = filter.values[i][filterOptions.valueProperty];\r\n\t\t\t\t\t\t\t\t\tval2 = filter.values[i].value2\r\n\t\t\t\t\t\t\t\t\tvalueTextEl.innerText = (filter.values[i].hasOwnProperty('name') ? filter.values[i].name : val1)\r\n\t\t\t\t\t\t\t\t\t\t + (val2 ? '~' + val2 : '')\r\n\t\t\t\t\t\t\t\t\t\t + (filter.unit && filter.values[i][filterOptions.valueProperty] !== '' ? ' ' + filter.unit : '')\r\n\t\t\t\t\t\t\t\t\t\t + (filter.values[i].count && self.options.showQuantity ? ' (' + filter.values[i].count + ')' : '');\r\n\t\t\t\t\t\t\t\t\tvalueWrapEl.appendChild(valueTextEl);\r\n\t\t\t\t\t\t\t\t\trmBtn = document.createElement('button');\r\n\t\t\t\t\t\t\t\t\trmBtn.innerHTML = '<i class=\"fas fa-fw fa-times\"></i>';\r\n\t\t\t\t\t\t\t\t\trmBtn.type = 'button';\r\n\t\t\t\t\t\t\t\t\trmBtn.className = 'px-2';\r\n\t\t\t\t\t\t\t\t\trmBtn.setAttribute('data-filter', filter.oid);\r\n\t\t\t\t\t\t\t\t\trmBtn.setAttribute('data-value', filter.values[i][filterOptions.valueProperty]);\r\n\t\t\t\t\t\t\t\t\trmBtn.addEventListener('click', function () { // jshint ignore:line\r\n\t\t\t\t\t\t\t\t\t\tlet filter = self.filters[this.getAttribute('data-filter')],\r\n\t\t\t\t\t\t\t\t\t\t\tfilterOptions = self.getFilterOptions(filter),\r\n\t\t\t\t\t\t\t\t\t\t\tactiveValues = [],\r\n\t\t\t\t\t\t\t\t\t\t\tvalue = this.getAttribute('data-value'),\r\n\t\t\t\t\t\t\t\t\t\t\ti;\r\n\t\t\t\t\t\t\t\t\t\tfor (i = 0; i < filter.values.length; i++) {\r\n\t\t\t\t\t\t\t\t\t\t\tif (filter.values[i].selected && filter.values[i].value !== filterOptions.fnParseValue(value)) activeValues.push(filter.values[i].value);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tif(fnChange(this.getAttribute('data-filter'), activeValues, true)) self.submit();\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\tvalueWrapEl.appendChild(rmBtn);\r\n\t\t\t\t\t\t\t\t\tactiveWrapEl.appendChild(valueWrapEl);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (activeWrapEl.children.length > 0) {\r\n\t\t\t\t\t\t\t\tactiveWrapEl.firstChild.before(EBContext.utils.template('<!--#label-->', {\r\n\t\t\t\t\t\t\t\t\tlabel: '<div class=\"filterLabel\"><!--#clearBtn--><!--$filter.name--></div>',\r\n\t\t\t\t\t\t\t\t\tclearBtn: '<button <!--!click@clearFilter--> class=\"text-danger\" data-filter=\"<!--$filter.oid-->\"><i class=\"fas fa-fw fa-trash\"></i></button>'\r\n\t\t\t\t\t\t\t\t}, {\r\n\t\t\t\t\t\t\t\t\tfilter: filter,\r\n\t\t\t\t\t\t\t\t\tclearFilter: (e,el,vars,params)=>{\r\n\t\t\t\t\t\t\t\t\t\tfilterOptions.fnClear(el.getAttribute('data-filter'));\r\n\t\t\t\t\t\t\t\t\t\tself.submit();\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t})[0]);\r\n\t\t\t\t\t\t\t\tself.filters[filter.oid].active = true;\r\n\t\t\t\t\t\t\t\treturn activeWrapEl;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnUpdateFilterValues: function (filter, scope) {\r\n\t\t\t\t\t\t\tscope = scope || document;\r\n\t\t\t\t\t\t\tfilter.selected = false;\r\n\t\t\t\t\t\t\tlet filterOptions = self.getFilterOptions(filter),\r\n\t\t\t\t\t\t\t\ti, optionEl, unit, val1, val2;\r\n\t\t\t\t\t\t\tfor (i = 0; i < filter.values.length; i++) {\r\n\t\t\t\t\t\t\t\toptionEl = scope.querySelector('#' + self.getValId(filter.oid, filter.values[i][filterOptions.valueProperty]));\r\n\t\t\t\t\t\t\t\tif (optionEl instanceof HTMLOptionElement) {\r\n\t\t\t\t\t\t\t\t\toptionEl.selected = filter.values[i].selected;\r\n\t\t\t\t\t\t\t\t\toptionEl.disabled = filter.values[i].disabled;\r\n\t\t\t\t\t\t\t\t\tfilter.selected = filter.selected || filter.values[i].selected;\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tunit = filter.values[i].unit || filter.unit;\r\n\t\t\t\t\t\t\t\t\tval1 = filter.values[i][filterOptions.valueProperty];\r\n\t\t\t\t\t\t\t\t\tval2 = filter.values[i].value2;\r\n\t\t\t\t\t\t\t\t\toptionEl.innerText = (filter.values[i].hasOwnProperty('name') ? filter.values[i].name : val1)\r\n\t\t\t\t\t\t\t\t\t\t + (val2 ? '~' + val2 : '')\r\n\t\t\t\t\t\t\t\t\t\t + (unit && (val1 || typeof val1 === 'number') ? ' ' + unit : '')\r\n\t\t\t\t\t\t\t\t\t\t + (filter.values[i].count && self.options.showQuantity ? ' (' + filter.values[i].count + ')' : '');\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\trequire(['jquery', 'bootstrap-select'], (jQuery)=>{\r\n\t\t\t\t\t\t\t\tjQuery('#' + self.selects[filter.oid].elementId).selectpicker('refresh');\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnChange: function (oid, values, selected) {\r\n\t\t\t\t\t\t\tlet changed = false,\r\n\t\t\t\t\t\t\t\tfilterOptions = self.getFilterOptions(self.filters[oid]),\r\n\t\t\t\t\t\t\t\ti, j;\r\n\t\t\t\t\t\t\tif (!Array.isArray(values)) values = [values];\r\n\t\t\t\t\t\t\tfor (i = 0; i < self.filters[oid].values.length; i++) {\r\n\t\t\t\t\t\t\t\tself.filters[oid].values[i].selected = false;\r\n\t\t\t\t\t\t\t\tfor (j = 0; j < values.length; j++) {\r\n\t\t\t\t\t\t\t\t\tif (self.filters[oid].values[i][filterOptions.valueProperty] === values[j]) {\r\n\t\t\t\t\t\t\t\t\t\tif(self.filters[oid].values[i].selected !== selected) changed = true;\r\n\t\t\t\t\t\t\t\t\t\tself.filters[oid].values[i].selected = selected;\r\n\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn changed;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tNUMBER_INPUTS: {\r\n\t\t\t\t\t\tfnGenerateFilterBody: function (filter, fnChange) {\r\n\t\t\t\t\t\t\tlet filterOptions = self.getFilterOptions(filter);\r\n\t\t\t\t\t\t\tlet filterDOM = EBContext.utils.template('<!--#filterWrapEl-->', {\r\n\t\t\t\t\t\t\t\tfilterWrapEl: '<div class=\"row form-inline\"><!--#inputMinWrap--><!--#inputMaxWrap--></div>',\r\n\t\t\t\t\t\t\t\tinputMinWrap: '<div class=\"col d-flex flex-grow-1\"><!--#labelMinEl--><!--#inputMinEl--><!--#labelMinUnitEl--></div>',\r\n\t\t\t\t\t\t\t\tlabelMinEl: '<label for=\"filter_<!--$filter.oid-->_min\" class=\"my-2 pe-1 col-form-label justify-content-end text-end\"><!--~resource.OD--></label>',\r\n\t\t\t\t\t\t\t\tinputMinEl: '<div class=\"d-flex flex-grow-1\"><input type=\"number\" id=\"filter_<!--$filter.oid-->_min\" data-filter=\"<!--$filter.oid-->\" min=\"<!--$filter.initMinValue-->\" max=\"<!--@getMaxValue-->\" class=\"form-control my-2 text-end nospinner d-flex flex-grow-1\" style=\"min-width: 10ch\" <!--!blur@onMinBlur--><!--!change@onInputChange-->></div>',\r\n\t\t\t\t\t\t\t\tlabelMinUnitEl: '<label for=\"filter_<!--$filter.oid-->_min\" class=\"col-auto my-2 ps-1 col-form-label justify-content-start text-start\"><!--$filter.unit--></label>',\r\n\t\t\t\t\t\t\t\tinputMaxWrap: '<div class=\"col d-flex flex-grow-1\"><!--#labelMaxEl--><!--#inputMaxEl--><!--#labelMaxUnitEl--></div>',\r\n\t\t\t\t\t\t\t\tlabelMaxEl: '<label for=\"filter_<!--$filter.oid-->_max\" class=\"my-2 pe-1 col-form-label justify-content-end text-end\"><!--~resource.DO--></label>',\r\n\t\t\t\t\t\t\t\tinputMaxEl: '<div class=\"d-flex flex-grow-1\"><input type=\"number\" id=\"filter_<!--$filter.oid-->_max\" data-filter=\"<!--$filter.oid-->\" min=\"<!--@getMinValue-->\" max=\"<!--$filter.initMaxValue-->\" class=\"form-control my-2 text-end nospinner d-flex flex-grow-1\" style=\"min-width: 10ch\" <!--!blur@onMaxBlur--><!--!change@onInputChange-->></div>',\r\n\t\t\t\t\t\t\t\tlabelMaxUnitEl: '<label for=\"filter_<!--$filter.oid-->_max\" class=\"col-auto my-2 ps-1 col-form-label justify-content-start text-start\"><!--$filter.unit--></label>'\r\n\t\t\t\t\t\t\t}, {\r\n\t\t\t\t\t\t\t\tfilter: filter,\r\n\t\t\t\t\t\t\t\tfnChange: fnChange,\r\n\t\t\t\t\t\t\t\tfilterOptions: filterOptions,\r\n\t\t\t\t\t\t\t\tgetMaxValue: filter=>(filter.maxValue !== null ? filter.maxValue : filter.initMaxValue),\r\n\t\t\t\t\t\t\t\tgetMinValue: filter=>(filter.minValue !== null ? filter.minValue : filter.initMinValue),\r\n\t\t\t\t\t\t\t\tonMinBlur: (e,el,vars)=>{\r\n\t\t\t\t\t\t\t\t\tif(vars.fnChange(el.getAttribute('data-filter'), el.value, null)) self.submit();\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tonMaxBlur: (e,el,vars)=>{\r\n\t\t\t\t\t\t\t\t\tif(vars.fnChange(el.getAttribute('data-filter'), null, el.value)) self.submit();\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tonInputChange: (e,el,vars)=>{\r\n\t\t\t\t\t\t\t\t\tif(self.sliders[el.getAttribute('data-filter')]){\r\n\t\t\t\t\t\t\t\t\t\tself.sliders[el.getAttribute('data-filter')].instanceObj.update({\r\n\t\t\t\t\t\t\t\t\t\t\tfrom: vars.filterOptions.fnParseValue(el.value)\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t})[0];\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tfilterOptions.fnUpdateFilterValues(filter, filterDOM);\r\n\t\t\t\t\t\t\treturn filterDOM;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnUpdateFilterValues: function (filter, scope) {\r\n\t\t\t\t\t\t\tscope = scope || document;\r\n\t\t\t\t\t\t\tfilter.selected = false;\r\n\t\t\t\t\t\t\tlet inputMinEl = scope.querySelector('#filter_' + filter.oid + '_min'),\r\n\t\t\t\t\t\t\t\tinputMaxEl = scope.querySelector('#filter_' + filter.oid + '_max');\r\n\t\t\t\t\t\t\tif (inputMinEl instanceof HTMLInputElement) {\r\n\t\t\t\t\t\t\t\tif (typeof filter.boundaryMinValue === 'number') {\r\n\t\t\t\t\t\t\t\t\tinputMinEl.placeholder = filter.boundaryMinValue;\r\n\t\t\t\t\t\t\t\t\tinputMinEl.removeAttribute('disabled');\r\n\t\t\t\t\t\t\t\t} else if(filter.minValue === null) {\r\n\t\t\t\t\t\t\t\t\tinputMinEl.placeholder = filter.initMinValue;\r\n\t\t\t\t\t\t\t\t\tinputMinEl.setAttribute('disabled', '');\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tinputMinEl.value = (typeof filter.minValue === 'number' ? filter.minValue : '');\r\n\t\t\t\t\t\t\t\tfilter.selected = filter.selected || (typeof filter.minValue === 'number');\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (inputMaxEl instanceof HTMLInputElement) {\r\n\t\t\t\t\t\t\t\tif (typeof filter.boundaryMaxValue === 'number') {\r\n\t\t\t\t\t\t\t\t\tinputMaxEl.placeholder = filter.boundaryMaxValue;\r\n\t\t\t\t\t\t\t\t\tinputMaxEl.removeAttribute('disabled');\r\n\t\t\t\t\t\t\t\t} else if(filter.maxValue === null) {\r\n\t\t\t\t\t\t\t\t\tinputMaxEl.placeholder = filter.initMaxValue;\r\n\t\t\t\t\t\t\t\t\tinputMaxEl.setAttribute('disabled', '');\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tinputMaxEl.value = (typeof filter.maxValue === 'number' ? filter.maxValue : '');\r\n\t\t\t\t\t\t\t\tfilter.selected = filter.selected || (typeof filter.maxValue === 'number');\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnGenerateActive: function (filter, fnChange) {\r\n\t\t\t\t\t\t\tlet activeWrapEl = document.createElement('div'),\r\n\t\t\t\t\t\t\t\tfilterOptions = self.getFilterOptions(filter),\r\n\t\t\t\t\t\t\t\tvalueWrapEl, valueTextEl, minVal, maxVal, minValUnit, maxValUnit, minValObj, maxValObj, rmBtn;\r\n\t\t\t\t\t\t\tself.filters[filter.oid].active = false;\r\n\r\n\t\t\t\t\t\t\tif (typeof filter.minValue === 'number' || typeof filter.maxValue === 'number') {\r\n\t\t\t\t\t\t\t\tvalueWrapEl = document.createElement('div');\r\n\t\t\t\t\t\t\t\tvalueWrapEl.className = 'valueWrap';\r\n\t\t\t\t\t\t\t\tvalueTextEl = document.createElement('span');\r\n minVal = filter.minValue;\r\n if(typeof minVal !== 'number') minVal = filter.boundaryMinValue;\r\n if(typeof minVal !== 'number') minVal = filter.initMinValue;\r\n maxVal = filter.maxValue;\r\n if(typeof maxVal !== 'number') maxVal = filter.boundaryMaxValue;\r\n if(typeof maxVal !== 'number') maxVal = filter.initMaxValue;\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tminValUnit = '';\r\n\t\t\t\t\t\t\t\tmaxValUnit = filter.unit;\r\n\t\t\t\t\t\t\t\tif(filterOptions.config._multiUnitActive){\r\n\t\t\t\t\t\t\t\t\tminValObj = filter.values.find(val=>(val.value===minVal));\r\n\t\t\t\t\t\t\t\t\tif (minValObj) {\r\n\t\t\t\t\t\t\t\t\t\tminVal = minVal * minValObj.koef;\r\n\t\t\t\t\t\t\t\t\t\tminValUnit = (minValObj.unit ? ' ' + minValObj.unit : '');\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tmaxValObj = filter.values.find(val=>(val.value===maxVal));\r\n\t\t\t\t\t\t\t\t\tif(maxValObj){\r\n\t\t\t\t\t\t\t\t\t\tmaxVal = maxVal * maxValObj.koef;\r\n\t\t\t\t\t\t\t\t\t\tmaxValUnit = maxValObj.unit || filter.unit;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tvalueTextEl.innerText = minVal + minValUnit + ' ~ ' + maxVal + (maxValUnit ? ' ' + maxValUnit : '');\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\trmBtn = document.createElement('button');\r\n\t\t\t\t\t\t\t\trmBtn.innerHTML = '<i class=\"fas fa-fw fa-times\"></i>';\r\n\t\t\t\t\t\t\t\trmBtn.type = 'button';\r\n\t\t\t\t\t\t\t\trmBtn.className = 'px-2';\r\n\t\t\t\t\t\t\t\trmBtn.setAttribute('data-filter', filter.oid);\r\n\t\t\t\t\t\t\t\trmBtn.addEventListener('click', function () {\r\n\t\t\t\t\t\t\t\t\tif(fnChange(this.getAttribute('data-filter'), '', '')) self.submit();\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\tvalueWrapEl.appendChild(valueTextEl);\r\n\t\t\t\t\t\t\t\tvalueWrapEl.appendChild(rmBtn);\r\n\t\t\t\t\t\t\t\tactiveWrapEl.appendChild(valueWrapEl);\r\n\t\t\t\t\t\t\t\tactiveWrapEl.firstChild.before(EBContext.utils.template('<!--#label-->', {\r\n\t\t\t\t\t\t\t\t\tlabel: '<div class=\"filterLabel\"><!--#clearBtn--><!--$filter.name--></div>',\r\n\t\t\t\t\t\t\t\t\tclearBtn: '<button <!--!click@clearFilter--> class=\"text-danger\" data-filter=\"<!--$filter.oid-->\"><i class=\"fas fa-fw fa-trash\"></i></button>'\r\n\t\t\t\t\t\t\t\t}, {\r\n\t\t\t\t\t\t\t\t\tfilter: filter,\r\n\t\t\t\t\t\t\t\t\tclearFilter: (e,el,vars,params)=>{\r\n\t\t\t\t\t\t\t\t\t\tfilterOptions.fnClear(el.getAttribute('data-filter'));\r\n\t\t\t\t\t\t\t\t\t\tself.submit();\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t})[0]);\r\n\t\t\t\t\t\t\t\tself.filters[filter.oid].active = true;\r\n\t\t\t\t\t\t\t\treturn activeWrapEl;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnChange: function (oid, min, max) {\r\n\t\t\t\t\t\t\tlet changed = false,\r\n\t\t\t\t\t\t\t\tfilterOptions = self.getFilterOptions(self.filters[oid]),\r\n\t\t\t\t\t\t\t\tpMin = filterOptions.fnParseValue(min),\r\n\t\t\t\t\t\t\t\tpMax = filterOptions.fnParseValue(max);\r\n\t\t\t\t\t\t\tif(isNaN(pMin)) pMin = null;\r\n\t\t\t\t\t\t\tif(isNaN(pMax)) pMax = null;\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif (min !== null && self.filters[oid].minValue != pMin) {\r\n\t\t\t\t\t\t\t\tself.filters[oid].minValue = pMin;\r\n\t\t\t\t\t\t\t\tchanged = true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (max !== null && self.filters[oid].maxValue != pMax) {\r\n\t\t\t\t\t\t\t\tself.filters[oid].maxValue = pMax;\r\n\t\t\t\t\t\t\t\tchanged = true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn changed;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnUpdate: function (filter) {\r\n\t\t\t\t\t\t\tlet filterOptions = self.getFilterOptions(filter),\r\n\t\t\t\t\t\t\t\t_filter, filterMin, filterMax, i, j, valueCount;\r\n\t\t\t\t\t\t\tfilter.values = filter.values.sort(filterOptions.fnSortValues);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t// Pokud hodnota n�hodou mezi p�vodn�mi filtry neexistuje (nap�. filtr se ji� na�etl zafiltrovan�), tak se p�id�\r\n\t\t\t\t\t\t\tif (!(self.filters.hasOwnProperty(filter.oid))) {\r\n\t\t\t\t\t\t\t\tself.filters[filter.oid] = filter;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t_filter = self.filters[filter.oid];\r\n\r\n\t\t\t\t\t\t\tfilterMin = null;\r\n\t\t\t\t\t\t\tfilterMax = null;\r\n\t\t\t\t\t\t\tfor (i = 0; i < _filter.values.length; i++) {\r\n\t\t\t\t\t\t\t\tvalueCount = 0;\r\n\t\t\t\t\t\t\t\tif (!filter.disabled) {\r\n\t\t\t\t\t\t\t\t\tfor (j = 0; j < filter.values.length; j++) {\r\n\t\t\t\t\t\t\t\t\t\tif (_filter.values[i].value == filter.values[j].value && _filter.values[i].value2 == filter.values[j].value2) {\r\n\t\t\t\t\t\t\t\t\t\t\tvalueCount = filter.values[j].count;\r\n\t\t\t\t\t\t\t\t\t\t\tif (filterMin === null || filter.values[j].value < filterMin) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tfilterMin = filter.values[j].value;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tif (filterMax === null || filter.values[j].value2 > filterMax) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tfilterMax = filter.values[j].value2;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tif (!filter.values[j].value2 && filter.values[j].value > filterMax) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tfilterMax = filter.values[j].value;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t// Nastaven� p�vodn� min/max hodnoty filtru\r\n\t\t\t\t\t\t\tif (!_filter.hasOwnProperty('initMinValue')) _filter.initMinValue = filterMin;\r\n\t\t\t\t\t\t\tif (!_filter.hasOwnProperty('initMaxValue')) _filter.initMaxValue = filterMax;\r\n\r\n\t\t\t\t\t\t\t_filter.boundaryMinValue = filterMin;\r\n\t\t\t\t\t\t\t_filter.boundaryMaxValue = filterMax;\r\n\r\n\t\t\t\t\t\t\tif (typeof _filter.minValue !== 'number') {\r\n\t\t\t\t\t\t\t\t_filter.minValue = (filterMin > _filter.boundaryMinValue ? filterMin : null);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (typeof _filter.maxValue !== 'number') {\r\n\t\t\t\t\t\t\t\t_filter.maxValue = (filterMax < _filter.boundaryMaxValue ? filterMax : null);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnStringify: function (filter) {\r\n\t\t\t\t\t\t\treturn filter.oid + ':::' + filter.type + ':::' + (typeof filter.minValue === 'number' ? filter.minValue.toString().replace(/\\./g, ',') : '') + '@@@' + (typeof filter.maxValue === 'number' ? filter.maxValue.toString().replace(/\\./g, ',') : '') + '###';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tSLIDER_INPUTS: {\r\n\t\t\t\t\t\tconfig: {\r\n\t\t\t\t\t\t\ttype: 'double',\r\n\t\t\t\t\t\t\tgrid: true,\r\n\t\t\t\t\t\t\tdrag_interval: true,\r\n\t\t\t\t\t\t\tdecorate_both: false,\r\n\t\t\t\t\t\t\tforce_edges: true\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnGenerateFilterBody: function (filter, fnChange) {\r\n\t\t\t\t\t\t\tlet filterOptions = self.getFilterOptions(filter),\r\n\t\t\t\t\t\t\t\tfilterConfig = (filter.filterTypeConfig ? EBContext.utils.mergeObj(false, filterOptions.config, filter.filterTypeConfig) : filterOptions.config);\r\n\t\t\t\t\t\t\tlet themeClass = filterOptions.fnGenerateFilterStyles(filter.filterType, filterConfig);\r\n\t\t\t\t\t\t\tlet filterDOM = EBContext.utils.template('<!--#filterWrapEl-->', {\r\n\t\t\t\t\t\t\t\tfilterWrapEl: '<div class=\"row form-inline <!--$themeClass-->\"><!--#sliderWrapEl--><!--#inputMinWrap--><!--#inputMaxWrap--></div>',\r\n\t\t\t\t\t\t\t\tsliderWrapEl: '<div class=\"col-12\"><input type=\"range\" id=\"filter_<!--$filter.oid-->_slider\" class=\"col-8 offset-2\" aria-label=\"<!--~filter.name-->\" data-filter=\"<!--$filter.oid-->\"></div>',\r\n\t\t\t\t\t\t\t\tinputMinWrap: '<div class=\"col d-flex flex-grow-1\"><!--#labelMinEl--><!--#inputMinEl--><!--#labelMinUnitEl--></div>',\r\n\t\t\t\t\t\t\t\tlabelMinEl: '<label for=\"filter_<!--$filter.oid-->_min\" class=\"my-2 pe-1 col-form-label justify-content-end text-end\"><!--~resource.OD--></label>',\r\n\t\t\t\t\t\t\t\tinputMinEl: '<div class=\"d-flex flex-grow-1\"><input type=\"number\" id=\"filter_<!--$filter.oid-->_min\" data-filter=\"<!--$filter.oid-->\" min=\"<!--$filter.initMinValue-->\" max=\"<!--@getMaxValue-->\" class=\"form-control my-2 text-end nospinner d-flex flex-grow-1\" style=\"min-width: 10ch\" <!--!blur@onMinBlur--><!--!change@onInputChange-->></div>',\r\n\t\t\t\t\t\t\t\tlabelMinUnitEl: '<label for=\"filter_<!--$filter.oid-->_min\" class=\"col-auto my-2 ps-1 col-form-label justify-content-start text-start\"><!--$filter.unit--></label>',\r\n\t\t\t\t\t\t\t\tinputMaxWrap: '<div class=\"col d-flex flex-grow-1\"><!--#labelMaxEl--><!--#inputMaxEl--><!--#labelMaxUnitEl--></div>',\r\n\t\t\t\t\t\t\t\tlabelMaxEl: '<label for=\"filter_<!--$filter.oid-->_max\" class=\"my-2 pe-1 col-form-label justify-content-end text-end\"><!--~resource.DO--></label>',\r\n\t\t\t\t\t\t\t\tinputMaxEl: '<div class=\"d-flex flex-grow-1\"><input type=\"number\" id=\"filter_<!--$filter.oid-->_max\" data-filter=\"<!--$filter.oid-->\" min=\"<!--@getMinValue-->\" max=\"<!--$filter.initMaxValue-->\" class=\"form-control my-2 text-end nospinner d-flex flex-grow-1\" style=\"min-width: 10ch\" <!--!blur@onMaxBlur--><!--!change@onInputChange-->></div>',\r\n\t\t\t\t\t\t\t\tlabelMaxUnitEl: '<label for=\"filter_<!--$filter.oid-->_max\" class=\"col-auto my-2 ps-1 col-form-label justify-content-start text-start\"><!--$filter.unit--></label>'\r\n\t\t\t\t\t\t\t}, {\r\n\t\t\t\t\t\t\t\tfilter: filter,\r\n\t\t\t\t\t\t\t\tfnChange: fnChange,\r\n\t\t\t\t\t\t\t\tthemeClass: themeClass,\r\n\t\t\t\t\t\t\t\tfilterOptions: filterOptions,\r\n\t\t\t\t\t\t\t\tgetMaxValue: filter=>(filter.maxValue !== null ? filter.maxValue : filter.initMaxValue),\r\n\t\t\t\t\t\t\t\tgetMinValue: filter=>(filter.minValue !== null ? filter.minValue : filter.initMinValue),\r\n\t\t\t\t\t\t\t\tonMinBlur: (e,el,vars)=>{\r\n\t\t\t\t\t\t\t\t\tif(vars.fnChange(el.getAttribute('data-filter'), el.value, null)) self.submit();\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tonMaxBlur: (e,el,vars)=>{\r\n\t\t\t\t\t\t\t\t\tif(vars.fnChange(el.getAttribute('data-filter'), null, el.value)) self.submit();\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tonInputChange: (e,el,vars)=>{\r\n\t\t\t\t\t\t\t\t\tif(self.sliders[el.getAttribute('data-filter')]){\r\n\t\t\t\t\t\t\t\t\t\tif(el.id.substr(-3)==='min'){\r\n\t\t\t\t\t\t\t\t\t\t\tself.sliders[el.getAttribute('data-filter')].instanceObj.update({\r\n\t\t\t\t\t\t\t\t\t\t\t\tfrom: vars.filterOptions.fnParseValue(el.value)\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t} else if(el.id.substr(-3)==='max'){\r\n\t\t\t\t\t\t\t\t\t\t\tself.sliders[el.getAttribute('data-filter')].instanceObj.update({\r\n\t\t\t\t\t\t\t\t\t\t\t\tto: vars.filterOptions.fnParseValue(el.value)\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t})[0];\r\n\r\n\t\t\t\t\t\t\tself.sliders[filter.oid] = {\r\n\t\t\t\t\t\t\t\telementId: 'filter_' + filter.oid + '_slider',\r\n\t\t\t\t\t\t\t\toptions: EBContext.utils.extendObj(false, {\r\n\t\t\t\t\t\t\t\t\tmin: filter.boundaryMinValue,\r\n\t\t\t\t\t\t\t\t\tmax: filter.boundaryMaxValue,\r\n\t\t\t\t\t\t\t\t\tfrom: (typeof filter.minValue === 'number' ? filter.minValue : (typeof filter.boundaryMinValue === 'number' ? filter.boundaryMinValue : filter.initMinValue)),\r\n\t\t\t\t\t\t\t\t\tto: (typeof filter.maxValue === 'number' ? filter.maxValue : (typeof filter.boundaryMaxValue === 'number' ? filter.boundaryMaxValue : filter.initMaxValue)),\r\n\t\t\t\t\t\t\t\t\tpostfix: (filter.unit ? ' ' + filter.unit : ''),\r\n\t\t\t\t\t\t\t\t\tonChange: function (data) {\r\n\t\t\t\t\t\t\t\t\t\tlet inputMinEl = document.getElementById('filter_' + filter.oid + '_min');\r\n\t\t\t\t\t\t\t\t\t\tif(inputMinEl) inputMinEl.value = data.from;\r\n\t\t\t\t\t\t\t\t\t\tlet inputMaxEl = document.getElementById('filter_' + filter.oid + '_max');\r\n\t\t\t\t\t\t\t\t\t\tif(inputMaxEl) inputMaxEl.value = data.to;\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\tonFinish: function (data) {\r\n\t\t\t\t\t\t\t\t\t\tif (data.from === data.min && data.to === data.max) {\r\n\t\t\t\t\t\t\t\t\t\t\tif(fnChange(filter.oid, null, null)) self.submit();\r\n\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\tif(fnChange(filter.oid, data.from, data.to)) self.submit();\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}, filterConfig)\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\tfilterOptions.fnUpdateFilterValues(filter, filterDOM);\r\n\t\t\t\t\t\t\treturn filterDOM;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnGenerateFilterStyles: generateSliderStyles,\r\n\t\t\t\t\t\tfnUpdateFilterValues: function (filter, scope) {\r\n\t\t\t\t\t\t\tscope = scope || document;\r\n\t\t\t\t\t\t\tlet inputMinEl = scope.querySelector('#filter_' + filter.oid + '_min'),\r\n\t\t\t\t\t\t\t\tinputMaxEl = scope.querySelector('#filter_' + filter.oid + '_max'),\r\n\t\t\t\t\t\t\t\tsliderObj = (self.sliders[filter.oid] ? self.sliders[filter.oid].instanceObj : null),\r\n\t\t\t\t\t\t\t\tboundaryMin = (typeof filter.boundaryMinValue === 'number' ? filter.boundaryMinValue : filter.initMinValue),\r\n\t\t\t\t\t\t\t\tboundaryMax = (typeof filter.boundaryMaxValue === 'number' ? filter.boundaryMaxValue : filter.initMaxValue),\r\n\t\t\t\t\t\t\t\tvalMin = (typeof filter.minValue === 'number' ? filter.minValue : boundaryMin),\r\n\t\t\t\t\t\t\t\tvalMax = (typeof filter.maxValue === 'number' ? filter.maxValue : boundaryMax),\r\n\t\t\t\t\t\t\t\tsliderUpdate = {\r\n\t\t\t\t\t\t\t\t\tmin: filter.initMinValue,\r\n\t\t\t\t\t\t\t\t\tmax: filter.initMaxValue,\r\n\t\t\t\t\t\t\t\t\tfrom: valMin,\r\n\t\t\t\t\t\t\t\t\tto: valMax,\r\n\t\t\t\t\t\t\t\t\tdisable: filter.disabled\r\n\t\t\t\t\t\t\t\t\t// from_min: (filter.selected ? filter.initMinValue : boundaryMin),\r\n\t\t\t\t\t\t\t\t\t// to_min: valMin,\r\n\t\t\t\t\t\t\t\t\t// from_max: valMax,\r\n\t\t\t\t\t\t\t\t\t// to_max: (filter.selected ? filter.initMaxValue : boundaryMax)\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif (sliderObj) {\r\n\t\t\t\t\t\t\t\tsliderObj.update(sliderUpdate);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tself.sliders[filter.oid].options = EBContext.utils.mergeObj(false, self.sliders[filter.oid].options, sliderUpdate);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (inputMinEl instanceof HTMLInputElement) {\r\n\t\t\t\t\t\t\t\tinputMinEl.placeholder = boundaryMin;\r\n\t\t\t\t\t\t\t\tif (typeof filter.boundaryMinValue === 'number') {\r\n\t\t\t\t\t\t\t\t\tinputMinEl.removeAttribute('disabled');\r\n\t\t\t\t\t\t\t\t} else if(filter.minValue === null) {\r\n\t\t\t\t\t\t\t\t\tinputMinEl.setAttribute('disabled', '');\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tinputMinEl.value = (typeof filter.minValue === 'number' ? filter.minValue : '');\r\n\t\t\t\t\t\t\t\tinputMinEl.setAttribute('max', (typeof filter.maxValue === 'number' ? filter.maxValue : (typeof filter.boundaryMaxValue === 'number' ? filter.boundaryMaxValue : filter.initMaxValue)));\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (inputMaxEl instanceof HTMLInputElement) {\r\n\t\t\t\t\t\t\t\tif (typeof filter.boundaryMaxValue === 'number') {\r\n\t\t\t\t\t\t\t\t\tinputMaxEl.placeholder = filter.boundaryMaxValue;\r\n\t\t\t\t\t\t\t\t\tinputMaxEl.removeAttribute('disabled');\r\n\t\t\t\t\t\t\t\t} else if(filter.maxValue === null) {\r\n\t\t\t\t\t\t\t\t\tinputMaxEl.placeholder = filter.initMaxValue;\r\n\t\t\t\t\t\t\t\t\tinputMaxEl.setAttribute('disabled', '');\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tinputMaxEl.value = (typeof filter.maxValue === 'number' ? filter.maxValue : '');\r\n\t\t\t\t\t\t\t\tinputMaxEl.setAttribute('min', (typeof filter.minValue === 'number' ? filter.minValue : (typeof filter.boundaryMinValue === 'number' ? filter.boundaryMinValue : filter.initMinValue)));\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tfilter.selected = (valMin !== boundaryMin || valMax !== boundaryMax);\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnGenerateActive: function (filter, fnChange) {\r\n\t\t\t\t\t\t\tlet activeWrapEl = document.createElement('div'),\r\n\t\t\t\t\t\t\t\tfilterOptions = self.getFilterOptions(filter),\r\n\t\t\t\t\t\t\t\tvalueWrapEl, valueTextEl, minVal, maxVal, minValUnit, maxValUnit, minValObj, maxValObj, rmBtn;\r\n self.filters[filter.oid].active = false;\r\n\r\n\t\t\t\t\t\t\tif (typeof filter.minValue === 'number' || typeof filter.maxValue === 'number') {\r\n\t\t\t\t\t\t\t\tvalueWrapEl = document.createElement('div');\r\n\t\t\t\t\t\t\t\tvalueWrapEl.className = 'valueWrap';\r\n\t\t\t\t\t\t\t\tvalueTextEl = document.createElement('span');\r\n\t\t\t\t\t\t\t\tminVal = filter.minValue;\r\n if(typeof minVal !== 'number') minVal = filter.boundaryMinValue;\r\n if(typeof minVal !== 'number') minVal = filter.initMinValue;\r\n maxVal = filter.maxValue;\r\n if(typeof maxVal !== 'number') maxVal = filter.boundaryMaxValue;\r\n if(typeof maxVal !== 'number') maxVal = filter.initMaxValue;\r\n\t\t\t\t\t\t\t\tminValUnit = '';\r\n\t\t\t\t\t\t\t\tmaxValUnit = filter.unit;\r\n\t\t\t\t\t\t\t\tif (filterOptions.config._multiUnitActive) {\r\n\t\t\t\t\t\t\t\t\tminValObj = filter.values.find(val => (val.value === minVal));\r\n\t\t\t\t\t\t\t\t\tif (minValObj) {\r\n\t\t\t\t\t\t\t\t\t\tminVal = minVal * minValObj.koef;\r\n\t\t\t\t\t\t\t\t\t\tminValUnit = (minValObj.unit ? ' ' + minValObj.unit : '');\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tmaxValObj = filter.values.find(val => (val.value === maxVal));\r\n\t\t\t\t\t\t\t\t\tif (maxValObj) {\r\n\t\t\t\t\t\t\t\t\t\tmaxVal = maxVal * maxValObj.koef;\r\n\t\t\t\t\t\t\t\t\t\tmaxValUnit = maxValObj.unit || filter.unit;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tvalueTextEl.innerText = minVal + minValUnit + ' ~ ' + maxVal + (maxValUnit ? ' ' + maxValUnit : '');\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\trmBtn = document.createElement('button');\r\n\t\t\t\t\t\t\t\trmBtn.innerHTML = '<i class=\"fas fa-fw fa-times\"></i>';\r\n\t\t\t\t\t\t\t\trmBtn.type = 'button';\r\n\t\t\t\t\t\t\t\trmBtn.className = 'px-2';\r\n\t\t\t\t\t\t\t\trmBtn.setAttribute('data-filter', filter.oid);\r\n\t\t\t\t\t\t\t\trmBtn.addEventListener('click', function () {\r\n\t\t\t\t\t\t\t\t\tfilterOptions.fnClear(this.getAttribute('data-filter'));\r\n\t\t\t\t\t\t\t\t\tself.submit();\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\tvalueWrapEl.appendChild(valueTextEl);\r\n\t\t\t\t\t\t\t\tvalueWrapEl.appendChild(rmBtn);\r\n\t\t\t\t\t\t\t\tactiveWrapEl.appendChild(valueWrapEl);\r\n\t\t\t\t\t\t\t\tactiveWrapEl.firstChild.before(EBContext.utils.template('<!--#label-->', {\r\n\t\t\t\t\t\t\t\t\tlabel: '<div class=\"filterLabel\"><!--#clearBtn--><!--$filter.name--></div>',\r\n\t\t\t\t\t\t\t\t\tclearBtn: '<button <!--!click@clearFilter--> class=\"text-danger\" data-filter=\"<!--$filter.oid-->\"><i class=\"fas fa-fw fa-trash\"></i></button>'\r\n\t\t\t\t\t\t\t\t}, {\r\n\t\t\t\t\t\t\t\t\tfilter: filter,\r\n\t\t\t\t\t\t\t\t\tclearFilter: (e,el,vars,params)=>{\r\n\t\t\t\t\t\t\t\t\t\tfilterOptions.fnClear(el.getAttribute('data-filter'));\r\n\t\t\t\t\t\t\t\t\t\tself.submit();\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t})[0]);\r\n\t\t\t\t\t\t\t\tself.filters[filter.oid].active = true;\r\n\t\t\t\t\t\t\t\treturn activeWrapEl;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnChange: function (oid, min, max) {\r\n\t\t\t\t\t\t\tlet changed = false,\r\n\t\t\t\t\t\t\t\tfilterOptions = self.getFilterOptions(self.filters[oid]),\r\n\t\t\t\t\t\t\t\tfilter = self.filters[oid];\r\n\r\n\t\t\t\t\t\t\tif(min===null && max===null){\r\n\t\t\t\t\t\t\t\tchanged = (min!==filter.minValue || max!==filter.maxValue);\r\n\t\t\t\t\t\t\t\tfilter.minValue = null;\r\n\t\t\t\t\t\t\t\tfilter.boundaryMinValue = null;\r\n\t\t\t\t\t\t\t\tfilter.maxValue = null;\r\n\t\t\t\t\t\t\t\tfilter.boundaryMaxValue = null;\r\n\t\t\t\t\t\t\t\treturn changed;\r\n\t\t\t\t\t\t\t}\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tmin = filterOptions.fnParseValue((min !== null ? min : filter.minValue));\r\n\t\t\t\t\t\t\tmax = filterOptions.fnParseValue((max !== null ? max : filter.maxValue));\r\n\t\t\t\t\t\t\tif (min === filter.initMinValue) min = null;\r\n\t\t\t\t\t\t\tif (max === filter.initMaxValue) max = null;\r\n\t\t\t\t\t\t\tif (filter.minValue === filter.initMinValue) {\r\n\t\t\t\t\t\t\t\tfilter.minValue = null;\r\n\t\t\t\t\t\t\t\tfilter.boundaryMinValue = null;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (filter.maxValue === filter.initMaxValue) {\r\n\t\t\t\t\t\t\t\tfilter.maxValue = null;\r\n\t\t\t\t\t\t\t\tfilter.boundaryMaxValue = null;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (filter.minValue != min && !(filter.minValue === null && min === filter.boundaryMinValue)) {\r\n\t\t\t\t\t\t\t\tfilter.minValue = min;\r\n\t\t\t\t\t\t\t\tchanged = true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (filter.maxValue != max && !(filter.maxValue === null && max === filter.boundaryMaxValue)) {\r\n\t\t\t\t\t\t\t\tfilter.maxValue = max;\r\n\t\t\t\t\t\t\t\tchanged = true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn changed;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnUpdate: function (filter) {\r\n\t\t\t\t\t\t\tlet filterOptions = self.getFilterOptions(filter),\r\n\t\t\t\t\t\t\t\t_filter, filterMin, filterMax, i, j, valueCount;\r\n\t\t\t\t\t\t\tfilter.values = filter.values.sort(filterOptions.fnSortValues);\r\n\t\t\t\t\t\t\t// Pokud hodnota n�hodou mezi p�vodn�mi filtry neexistuje (nap�. filtr se ji� na�etl zafiltrovan�), tak se p�id�\r\n\t\t\t\t\t\t\tif (!(self.filters.hasOwnProperty(filter.oid))) {\r\n\t\t\t\t\t\t\t\tself.filters[filter.oid] = filter;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t_filter = self.filters[filter.oid];\r\n\r\n\t\t\t\t\t\t\t// Je n�kter� hodnota (a tedy i filtr jako takov�) aktivn�/selected?\r\n\t\t\t\t\t\t\t_filter.selected = (typeof _filter.minValue === 'number' || typeof _filter.maxValue === 'number');\r\n\r\n\t\t\t\t\t\t\tfilterMin = null;\r\n\t\t\t\t\t\t\tfilterMax = null;\r\n\t\t\t\t\t\t\tfor (i = 0; i < _filter.values.length; i++) {\r\n\t\t\t\t\t\t\t\tvalueCount = 0;\r\n\t\t\t\t\t\t\t\tif (!filter.disabled) {\r\n\t\t\t\t\t\t\t\t\tfor (j = 0; j < filter.values.length; j++) {\r\n\t\t\t\t\t\t\t\t\t\tif (_filter.values[i].value == filter.values[j].value && _filter.values[i].value2 == filter.values[j].value2) {\r\n\t\t\t\t\t\t\t\t\t\t\tvalueCount = filter.values[j].count;\r\n\t\t\t\t\t\t\t\t\t\t\tif (filterMin === null || filter.values[j].value < filterMin) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tfilterMin = filter.values[j].value;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tif (filterMax === null || filter.values[j].value2 > filterMax) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tfilterMax = filter.values[j].value2;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tif (typeof filter.values[j].value2 !== 'number' || filter.values[j].value > filterMax) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tfilterMax = filter.values[j].value;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t// O�et�en� filtru ceny - nepos�l� v��et hodnot, ale jen krajn� hodnoty\r\n\t\t\t\t\t\t\tif(filterMin===filterMax && filter.values.length === 2){\r\n\t\t\t\t\t\t\t\tfilterMin = filter.values[0].value;\r\n\t\t\t\t\t\t\t\tfilterMax = filter.values[1].value2 || filter.values[1].value;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t// Nastaven� p�vodn� min/max hodnoty filtru\r\n\t\t\t\t\t\t\tif (!_filter.hasOwnProperty('initMinValue')) _filter.initMinValue = filterMin;\r\n\t\t\t\t\t\t\tif (!_filter.hasOwnProperty('initMaxValue')) _filter.initMaxValue = filterMax;\r\n\r\n\t\t\t\t\t\t\tif (!_filter.selected) {\r\n\t\t\t\t\t\t\t\t_filter.boundaryMinValue = filterMin;\r\n\t\t\t\t\t\t\t\t_filter.boundaryMaxValue = filterMax;\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t_filter.boundaryMinValue = _filter.initMinValue;\r\n\t\t\t\t\t\t\t\t_filter.boundaryMaxValue = _filter.initMaxValue;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (false && _filter.selected && typeof _filter.minValue !== 'number') {\r\n\t\t\t\t\t\t\t\t_filter.minValue = (filterMin > _filter.boundaryMinValue ? filterMin : null);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (false && _filter.selected && typeof _filter.maxValue !== 'number') {\r\n\t\t\t\t\t\t\t\t_filter.maxValue = (filterMax < _filter.boundaryMaxValue ? filterMax : null);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnStringify: function (filter) {\r\n\t\t\t\t\t\t\treturn filter.oid + ':::' + filter.type + ':::' + (typeof filter.minValue === 'number' ? filter.minValue.toString().replace(/\\./g, ',') : '') + '@@@' + (typeof filter.maxValue === 'number' ? filter.maxValue.toString().replace(/\\./g, ',') : '') + '###';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tSLIDER_STEPS: {\r\n\t\t\t\t\t\tconfig: {\r\n\t\t\t\t\t\t\ttype: 'double',\r\n\t\t\t\t\t\t\tgrid: true,\r\n\t\t\t\t\t\t\tdrag_interval: true,\r\n\t\t\t\t\t\t\tdecorate_both: false,\r\n\t\t\t\t\t\t\tforce_edges: true\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnGenerateFilterBody: function (filter, fnChange) {\r\n\t\t\t\t\t\t\tlet filterOptions = self.getFilterOptions(filter),\r\n\t\t\t\t\t\t\t\tfilterConfig = (filter.filterTypeConfig ? EBContext.utils.mergeObj(false, filterOptions.config, filter.filterTypeConfig) : filterOptions.config);\r\n\t\t\t\t\t\t\tlet themeClass = filterOptions.fnGenerateFilterStyles(filter.filterType, filterConfig);\r\n\t\t\t\t\t\t\tlet filterDOM = EBContext.utils.template('<!--#filterWrapEl-->', {\r\n\t\t\t\t\t\t\t\tfilterWrapEl: '<div class=\"row form-inline <!--$themeClass-->\"><!--#sliderWrapEl--></div>',\r\n\t\t\t\t\t\t\t\tsliderWrapEl: '<div class=\"col-12\"><input type=\"range\" id=\"filter_<!--$filter.oid-->_slider\" aria-label=\"<!--~filter.name-->\" class=\"col-8 offset-2\" data-filter=\"<!--$filter.oid-->\"></div>',\r\n\t\t\t\t\t\t\t}, {\r\n\t\t\t\t\t\t\t\tfilter: filter,\r\n\t\t\t\t\t\t\t\tthemeClass: themeClass\r\n\t\t\t\t\t\t\t})[0];\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tself.sliders[filter.oid] = {\r\n\t\t\t\t\t\t\t\telementId: 'filter_' + filter.oid + '_slider',\r\n\t\t\t\t\t\t\t\toptions: EBContext.utils.extendObj(false, {\r\n\t\t\t\t\t\t\t\t\tmin: filter.initMinIndex,\r\n\t\t\t\t\t\t\t\t\tmax: filter.initMaxIndex,\r\n\t\t\t\t\t\t\t\t\tfrom: (typeof filter.minIndex === 'number' ? filter.minIndex : (filter.boundaryMinIndex > -1 ? filter.boundaryMinIndex : 0)),\r\n\t\t\t\t\t\t\t\t\tto: (typeof filter.maxIndex === 'number' ? filter.maxIndex : (filter.boundaryMaxIndex > -1 ? filter.boundaryMaxIndex : filter.values.length)),\r\n\t\t\t\t\t\t\t\t\tvalues: filter.valuesArr,\r\n\t\t\t\t\t\t\t\t\tonFinish: function (data) {\r\n\t\t\t\t\t\t\t\t\t\tif (data.from === data.min && data.to === data.max) {\r\n\t\t\t\t\t\t\t\t\t\t\tif(fnChange(filter.oid, null, null)) self.submit();\r\n\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\tif(fnChange(filter.oid, filter.numValuesArr[data.from], filter.numValuesArr[data.to])) self.submit();\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}, filterConfig)\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\tfilterOptions.fnUpdateFilterValues(filter, filterDOM);\r\n\t\t\t\t\t\t\treturn filterDOM;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnGenerateFilterStyles: generateSliderStyles,\r\n\t\t\t\t\t\tfnUpdateFilterValues: function (filter, scope) {\r\n\t\t\t\t\t\t\tscope = scope || document;\r\n\t\t\t\t\t\t\tlet sliderObj = (self.sliders[filter.oid] ? self.sliders[filter.oid].instanceObj : null),\r\n\t\t\t\t\t\t\t\tboundaryMin = (typeof filter.boundaryMinValue === 'number' ? filter.boundaryMinValue : filter.initMinValue),\r\n\t\t\t\t\t\t\t\tboundaryMax = (typeof filter.boundaryMaxValue === 'number' ? filter.boundaryMaxValue : filter.initMaxValue),\r\n\t\t\t\t\t\t\t\tminIndex = (typeof filter.minIndex === 'number' ? filter.minIndex : filter.numValuesArr.indexOf(boundaryMin)),\r\n\t\t\t\t\t\t\t\tmaxIndex = (typeof filter.maxIndex === 'number' ? filter.maxIndex : filter.numValuesArr.indexOf(boundaryMax)),\r\n\t\t\t\t\t\t\t\tsliderUpdate = {\r\n\t\t\t\t\t\t\t\t\tmin: filter.initMinIndex,\r\n\t\t\t\t\t\t\t\t\tmax: filter.initMaxIndex,\r\n\t\t\t\t\t\t\t\t\tfrom: minIndex,\r\n\t\t\t\t\t\t\t\t\tto: maxIndex,\r\n\t\t\t\t\t\t\t\t\tdisable: filter.disabled\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif (sliderObj) {\r\n\t\t\t\t\t\t\t\tsliderObj.update(sliderUpdate);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tself.sliders[filter.oid].options = EBContext.utils.mergeObj(false, self.sliders[filter.oid].options, sliderUpdate);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnGenerateActive: function (filter, fnChange) {\r\n\t\t\t\t\t\t\tlet activeWrapEl = document.createElement('div'),\r\n\t\t\t\t\t\t\t\tvalueWrapEl, valueTextEl, minVal, maxVal, minValUnit, maxValUnit, minValObj, maxValObj, rmBtn;\r\n\t\t\t\t\t\t\tself.filters[filter.oid].active = false;\r\n\r\n\t\t\t\t\t\t\tif (filter.selected) {\r\n\t\t\t\t\t\t\t\tlet filterOptions = self.getFilterOptions(filter);\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tvalueWrapEl = document.createElement('div');\r\n\t\t\t\t\t\t\t\tvalueWrapEl.className = 'valueWrap';\r\n\t\t\t\t\t\t\t\tvalueTextEl = document.createElement('span');\r\n\t\t\t\t\t\t\t\tminVal = filter.minValue;\r\n if(typeof minVal !== 'number') minVal = filter.boundaryMinValue;\r\n if(typeof minVal !== 'number') minVal = filter.initMinValue;\r\n maxVal = filter.maxValue;\r\n if(typeof maxVal !== 'number') maxVal = filter.boundaryMaxValue;\r\n if(typeof maxVal !== 'number') maxVal = filter.initMaxValue;\r\n\t\t\t\t\t\t\t\tminValUnit = '';\r\n\t\t\t\t\t\t\t\tmaxValUnit = filter.unit;\r\n\t\t\t\t\t\t\t\tif (filterOptions.config._multiUnitActive) {\r\n\t\t\t\t\t\t\t\t\tminValObj = filter.values.find(val => (val.value === minVal));\r\n\t\t\t\t\t\t\t\t\tif (minValObj) {\r\n\t\t\t\t\t\t\t\t\t\tminVal = minVal * minValObj.koef;\r\n\t\t\t\t\t\t\t\t\t\tminValUnit = (minValObj.unit ? ' ' + minValObj.unit : '');\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tmaxValObj = filter.values.find(val => (val.value === maxVal));\r\n\t\t\t\t\t\t\t\t\tif (maxValObj) {\r\n\t\t\t\t\t\t\t\t\t\tmaxVal = maxVal * maxValObj.koef;\r\n\t\t\t\t\t\t\t\t\t\tmaxValUnit = maxValObj.unit || filter.unit;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tvalueTextEl.innerText = minVal + minValUnit + ' ~ ' + maxVal + (maxValUnit ? ' ' + maxValUnit : '');\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\trmBtn = document.createElement('button');\r\n\t\t\t\t\t\t\t\trmBtn.innerHTML = '<i class=\"fas fa-fw fa-times\"></i>';\r\n\t\t\t\t\t\t\t\trmBtn.type = 'button';\r\n\t\t\t\t\t\t\t\trmBtn.className = 'px-2';\r\n\t\t\t\t\t\t\t\trmBtn.setAttribute('data-filter', filter.oid);\r\n\t\t\t\t\t\t\t\trmBtn.addEventListener('click', function () {\r\n\t\t\t\t\t\t\t\t\tif(fnChange(this.getAttribute('data-filter'), null, null)) self.submit();\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\tvalueWrapEl.appendChild(valueTextEl);\r\n\t\t\t\t\t\t\t\tvalueWrapEl.appendChild(rmBtn);\r\n\t\t\t\t\t\t\t\tactiveWrapEl.appendChild(valueWrapEl);\r\n\t\t\t\t\t\t\t\tactiveWrapEl.firstChild.before(EBContext.utils.template('<!--#label-->', {\r\n\t\t\t\t\t\t\t\t\tlabel: '<div class=\"filterLabel\"><!--#clearBtn--><!--$filter.name--></div>',\r\n\t\t\t\t\t\t\t\t\tclearBtn: '<button <!--!click@clearFilter--> class=\"text-danger\" data-filter=\"<!--$filter.oid-->\"><i class=\"fas fa-fw fa-trash\"></i></button>'\r\n\t\t\t\t\t\t\t\t}, {\r\n\t\t\t\t\t\t\t\t\tfilter: filter,\r\n\t\t\t\t\t\t\t\t\tclearFilter: (e,el,vars,params)=>{\r\n\t\t\t\t\t\t\t\t\t\tfilterOptions.fnClear(el.getAttribute('data-filter'));\r\n\t\t\t\t\t\t\t\t\t\tself.submit();\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t})[0]);\r\n\t\t\t\t\t\t\t\tself.filters[filter.oid].active = true;\r\n\t\t\t\t\t\t\t\treturn activeWrapEl;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnChange: function (oid, min, max) {\r\n\t\t\t\t\t\t\tlet changed = false,\r\n\t\t\t\t\t\t\t\tfilterOptions = self.getFilterOptions(self.filters[oid]),\r\n\t\t\t\t\t\t\t\tfilter = self.filters[oid];\r\n\t\t\t\t\t\t\tmin = filterOptions.fnParseValue(min);\r\n\t\t\t\t\t\t\tmax = filterOptions.fnParseValue(max);\r\n\t\t\t\t\t\t\tif (min === filter.initMinValue) {\r\n\t\t\t\t\t\t\t\tfilter.minValue = null;\r\n\t\t\t\t\t\t\t\tfilter.minIndex = null;\r\n\t\t\t\t\t\t\t\tfilter.boundaryMinValue = null;\r\n\t\t\t\t\t\t\t\tfilter.boundaryMinIndex = null;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (max === filter.initMaxValue) {\r\n\t\t\t\t\t\t\t\tfilter.maxValue = null;\r\n\t\t\t\t\t\t\t\tfilter.maxIndex = null;\r\n\t\t\t\t\t\t\t\tfilter.boundaryMaxValue = null;\r\n\t\t\t\t\t\t\t\tfilter.boundaryMaxIndex = null;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (filter.minValue != filterOptions.fnParseValue(min)) {\r\n\t\t\t\t\t\t\t\tfilter.minValue = filterOptions.fnParseValue(min);\r\n\t\t\t\t\t\t\t\tfilter.minIndex = (filter.minValue === null ? null : filter.values.findIndex(i=>i.value===filter.minValue));\r\n\t\t\t\t\t\t\t\tchanged = true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (filter.maxValue != filterOptions.fnParseValue(max)) {\r\n\t\t\t\t\t\t\t\tfilter.maxValue = filterOptions.fnParseValue(max);\r\n\t\t\t\t\t\t\t\tfilter.maxIndex = (filter.maxValue === null ? null : filter.values.findIndex(i=>i.value===filter.maxValue));\r\n\t\t\t\t\t\t\t\tchanged = true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn changed;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnClear: function(oid) {\r\n\t\t\t\t\t\t\tlet filterOptions = self.getFilterOptions(self.filters[oid])\r\n\t\t\t\t\t\t\tfilterOptions.fnChange(oid, null, null);\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnUpdate: function (filter) {\r\n\t\t\t\t\t\t\tlet filterOptions = self.getFilterOptions(filter),\r\n\t\t\t\t\t\t\t\t_filter = self.filters[filter.oid],\r\n\t\t\t\t\t\t\t\ti, j, valFound, valExists, unit, val1, val2;\r\n\r\n\t\t\t\t\t\t\t// Pokud filtr n�hodou mezi p�vodn�mi filtry neexistuje (nap�. filtr se ji� na�etl zafiltrovan�), tak se p�id�\r\n\t\t\t\t\t\t\tif (_filter===undefined) {\r\n\t\t\t\t\t\t\t\tself.filters[filter.oid] = filter;\r\n\t\t\t\t\t\t\t\t_filter = filter;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t// Jinak se jen p�ekop�ruje aktu�ln� stav, dopln� se nov� hodnoty, a disabluj� se neaktu�ln�\r\n\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t// doplnit nov� hodnoty\r\n\t\t\t\t\t\t\t\tfilter.values.forEach(a=>{\r\n\t\t\t\t\t\t\t\t\tvalExists = (_filter.values.find(b=>(b[filterOptions.valueProperty] === a[filterOptions.valueProperty])) !== undefined);\r\n\t\t\t\t\t\t\t\t\tif(!valExists) _filter.values.push(a);\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t// disablovat nerelevantn� existuj�c� hodnoty\r\n\t\t\t\t\t\t\t\t_filter.values.forEach(a=>{\r\n\t\t\t\t\t\t\t\t\ta.disabled = (filter.values.find(b=>(b[filterOptions.valueProperty] === a[filterOptions.valueProperty])) === undefined);\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t_filter.selected = (typeof _filter.minValue === 'number' || typeof _filter.maxValue === 'number');\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t// Se�adit hodnoty filtru aby se nov� za�azen� hodnoty vkl�daly systematicky a ne v�dy na konec; zp�sob �azen� lze p�et�it vlastn� sort fn.\r\n\t\t\t\t\t\t\t_filter.values = _filter.values.sort(filterOptions.fnSortValues);\r\n\r\n\t\t\t\t\t\t\t// Napln� relevantn� hodnoty do ploch�ho pole pro slider\r\n\t\t\t\t\t\t\t_filter.valuesArr = [];\r\n\t\t\t\t\t\t\t_filter.numValuesArr = [];\r\n\t\t\t\t\t\t\tfor (i = 0; i < _filter.values.length; i++) {\r\n\t\t\t\t\t\t\t\tunit = _filter.values[i].unit || _filter.unit;\r\n\t\t\t\t\t\t\t\tval1 = _filter.values[i][filterOptions.valueProperty];\r\n\t\t\t\t\t\t\t\tval2 = _filter.values[i].value2;\r\n\t\t\t\t\t\t\t\t_filter.valuesArr.push((_filter.values[i].hasOwnProperty('name') ? _filter.values[i].name : val1) + (unit && (val1 || typeof val1 === 'number') ? ' ' + unit : ''));\r\n\t\t\t\t\t\t\t\t_filter.numValuesArr.push(val1);\r\n\t\t\t\t\t\t\t}\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t// Nastav� min/max povolenou hodnotu filtru\r\n\t\t\t\t\t\t\t_filter.boundaryMinIndex = _filter.values.findIndex(a=>!a.disabled);\r\n\t\t\t\t\t\t\t_filter.boundaryMaxIndex = EBContext.utils.array.findLastIndexOf(_filter.values, a=>!a.disabled);\r\n\t\t\t\t\t\t\t_filter.boundaryMinValue = _filter.values[_filter.boundaryMinIndex][filterOptions.valueProperty];\r\n\t\t\t\t\t\t\t_filter.boundaryMaxValue = _filter.values[_filter.boundaryMaxIndex][filterOptions.valueProperty];\r\n\r\n\t\t\t\t\t\t\t// Nastaven� v�choz� min/max hodnoty filtru\r\n\t\t\t\t\t\t\tif (_filter.initMinIndex === undefined) _filter.initMinIndex = _filter.boundaryMinIndex;\r\n\t\t\t\t\t\t\tif (_filter.initMaxIndex === undefined) _filter.initMaxIndex = _filter.boundaryMaxIndex;\r\n\t\t\t\t\t\t\tif (_filter.initMinValue === undefined) _filter.initMinValue = _filter.boundaryMinValue;\r\n\t\t\t\t\t\t\tif (_filter.initMaxValue === undefined) _filter.initMaxValue = _filter.boundaryMaxValue;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnStringify: function (filter) {\r\n\t\t\t\t\t\t\treturn filter.oid + ':::' + filter.type + ':::' + (typeof filter.minValue === 'number' ? filter.minValue.toString().replace(/\\./g, ',') : '') + '@@@' + (typeof filter.maxValue === 'number' ? filter.maxValue.toString().replace(/\\./g, ',') : '') + '###';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tSLIDER_ONLY: {\r\n\t\t\t\t\t\tconfig: {\r\n\t\t\t\t\t\t\ttype: 'double',\r\n\t\t\t\t\t\t\tgrid: true,\r\n\t\t\t\t\t\t\tdrag_interval: true,\r\n\t\t\t\t\t\t\tdecorate_both: false,\r\n\t\t\t\t\t\t\tforce_edges: true\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnGenerateFilterBody: function (filter, fnChange) {\r\n\t\t\t\t\t\t\tlet filterOptions = self.getFilterOptions(filter),\r\n\t\t\t\t\t\t\t\tfilterConfig = (filter.filterTypeConfig ? EBContext.utils.mergeObj(false, filterOptions.config, filter.filterTypeConfig) : filterOptions.config);\r\n\t\t\t\t\t\t\tlet themeClass = filterOptions.fnGenerateFilterStyles(filter.filterType, filterConfig);\r\n\t\t\t\t\t\t\tlet filterDOM = EBContext.utils.template('<!--#filterWrapEl-->', {\r\n\t\t\t\t\t\t\t\tfilterWrapEl: '<div class=\"row form-inline <!--$themeClass-->\"><!--#sliderWrapEl--></div>',\r\n\t\t\t\t\t\t\t\tsliderWrapEl: '<div class=\"col-12\"><input type=\"range\" aria-label=\"<!--~filter.name-->\" id=\"filter_<!--$filter.oid-->_slider\" class=\"col-8 offset-2\" data-filter=\"<!--$filter.oid-->\"></div>',\r\n\t\t\t\t\t\t\t}, {\r\n\t\t\t\t\t\t\t\tfilter: filter,\r\n\t\t\t\t\t\t\t\tthemeClass: themeClass\r\n\t\t\t\t\t\t\t})[0];\r\n\r\n\t\t\t\t\t\t\tself.sliders[filter.oid] = {\r\n\t\t\t\t\t\t\t\telementId: 'filter_' + filter.oid + '_slider',\r\n\t\t\t\t\t\t\t\toptions: EBContext.utils.extendObj(false, {\r\n\t\t\t\t\t\t\t\t\tmin: filter.boundaryMinValue,\r\n\t\t\t\t\t\t\t\t\tmax: filter.boundaryMaxValue,\r\n\t\t\t\t\t\t\t\t\tfrom: (typeof filter.minValue === 'number' ? filter.minValue : (typeof filter.boundaryMinValue === 'number' ? filter.boundaryMinValue : filter.initMinValue)),\r\n\t\t\t\t\t\t\t\t\tto: (typeof filter.maxValue === 'number' ? filter.maxValue : (typeof filter.boundaryMaxValue === 'number' ? filter.boundaryMaxValue : filter.initMaxValue)),\r\n\t\t\t\t\t\t\t\t\tpostfix: (filter.unit ? ' ' + filter.unit : ''),\r\n\t\t\t\t\t\t\t\t\tonFinish: function (data) {\r\n\t\t\t\t\t\t\t\t\t\tif (data.from === data.min && data.to === data.max) {\r\n\t\t\t\t\t\t\t\t\t\t\tif(fnChange(filter.oid, null, null)) self.submit();\r\n\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\tif(fnChange(filter.oid, data.from, data.to)) self.submit();\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}, filterConfig)\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\tfilterOptions.fnUpdateFilterValues(filter, filterDOM);\r\n\t\t\t\t\t\t\treturn filterDOM;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnGenerateFilterStyles: generateSliderStyles,\r\n\t\t\t\t\t\tfnUpdateFilterValues: function (filter, scope) {\r\n\t\t\t\t\t\t\tscope = scope || document;\r\n\t\t\t\t\t\t\tfilter.selected = false;\r\n\t\t\t\t\t\t\tlet sliderObj = (self.sliders[filter.oid] ? self.sliders[filter.oid].instanceObj : null),\r\n\t\t\t\t\t\t\t\tboundaryMin = (typeof filter.boundaryMinValue === 'number' ? filter.boundaryMinValue : filter.initMinValue),\r\n\t\t\t\t\t\t\t\tboundaryMax = (typeof filter.boundaryMaxValue === 'number' ? filter.boundaryMaxValue : filter.initMaxValue),\r\n\t\t\t\t\t\t\t\tvalMin = (typeof filter.minValue === 'number' ? filter.minValue : boundaryMin),\r\n\t\t\t\t\t\t\t\tvalMax = (typeof filter.maxValue === 'number' ? filter.maxValue : boundaryMax),\r\n\t\t\t\t\t\t\t\tsliderUpdate = {\r\n\t\t\t\t\t\t\t\t\tmin: filter.initMinValue,\r\n\t\t\t\t\t\t\t\t\tmax: filter.initMaxValue,\r\n\t\t\t\t\t\t\t\t\tfrom: valMin,\r\n\t\t\t\t\t\t\t\t\tto: valMax,\r\n\t\t\t\t\t\t\t\t\tdisable: filter.disabled\r\n\t\t\t\t\t\t\t\t\t// from_min: (filter.selected ? filter.initMinValue : boundaryMin),\r\n\t\t\t\t\t\t\t\t\t// to_min: valMin,\r\n\t\t\t\t\t\t\t\t\t// from_max: valMax,\r\n\t\t\t\t\t\t\t\t\t// to_max: (filter.selected ? filter.initMaxValue : boundaryMax)\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif (sliderObj) {\r\n\t\t\t\t\t\t\t\tsliderObj.update(sliderUpdate);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tself.sliders[filter.oid].options = EBContext.utils.mergeObj(false, self.sliders[filter.oid].options, sliderUpdate);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tfilter.selected = (valMin !== filter.initMinValue || valMax !== filter.initMaxValue);\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnGenerateActive: function (filter, fnChange) {\r\n\t\t\t\t\t\t\tlet activeWrapEl = document.createElement('div'),\r\n\t\t\t\t\t\t\t\tvalueWrapEl, valueTextEl, minVal, maxVal, minValUnit, maxValUnit, minValObj, maxValObj, rmBtn;\r\n\t\t\t\t\t\t\tself.filters[filter.oid].active = false;\r\n\r\n\t\t\t\t\t\t\tif (typeof filter.minValue === 'number' || typeof filter.maxValue === 'number') {\r\n\t\t\t\t\t\t\t\tvalueWrapEl = document.createElement('div');\r\n\t\t\t\t\t\t\t\tvalueWrapEl.className = 'valueWrap';\r\n\t\t\t\t\t\t\t\tvalueTextEl = document.createElement('span');\r\n\t\t\t\t\t\t\t\tminVal = filter.minValue;\r\n if(typeof minVal !== 'number') minVal = filter.boundaryMinValue;\r\n if(typeof minVal !== 'number') minVal = filter.initMinValue;\r\n maxVal = filter.maxValue;\r\n if(typeof maxVal !== 'number') maxVal = filter.boundaryMaxValue;\r\n if(typeof maxVal !== 'number') maxVal = filter.initMaxValue;\r\n\t\t\t\t\t\t\t\tminValUnit = '';\r\n\t\t\t\t\t\t\t\tmaxValUnit = filter.unit;\r\n\t\t\t\t\t\t\t\tif (filterOptions.config._multiUnitActive) {\r\n\t\t\t\t\t\t\t\t\tminValObj = filter.values.find(val => (val.value === minVal));\r\n\t\t\t\t\t\t\t\t\tif (minValObj) {\r\n\t\t\t\t\t\t\t\t\t\tminVal = minVal * minValObj.koef;\r\n\t\t\t\t\t\t\t\t\t\tminValUnit = (minValObj.unit ? ' ' + minValObj.unit : '');\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tmaxValObj = filter.values.find(val => (val.value === maxVal));\r\n\t\t\t\t\t\t\t\t\tif (maxValObj) {\r\n\t\t\t\t\t\t\t\t\t\tmaxVal = maxVal * maxValObj.koef;\r\n\t\t\t\t\t\t\t\t\t\tmaxValUnit = maxValObj.unit || filter.unit;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tvalueTextEl.innerText = minVal + minValUnit + ' ~ ' + maxVal + (maxValUnit ? ' ' + maxValUnit : '');\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\trmBtn = document.createElement('button');\r\n\t\t\t\t\t\t\t\trmBtn.innerHTML = '<i class=\"fas fa-fw fa-times\"></i>';\r\n\t\t\t\t\t\t\t\trmBtn.type = 'button';\r\n\t\t\t\t\t\t\t\trmBtn.className = 'px-2';\r\n\t\t\t\t\t\t\t\trmBtn.setAttribute('data-filter', filter.oid);\r\n\t\t\t\t\t\t\t\trmBtn.addEventListener('click', function () {\r\n\t\t\t\t\t\t\t\t\tif(fnChange(this.getAttribute('data-filter'), null, null)) self.submit();\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\tvalueWrapEl.appendChild(valueTextEl);\r\n\t\t\t\t\t\t\t\tvalueWrapEl.appendChild(rmBtn);\r\n\t\t\t\t\t\t\t\tactiveWrapEl.appendChild(valueWrapEl);\r\n\t\t\t\t\t\t\t\tactiveWrapEl.firstChild.before(EBContext.utils.template('<!--#label-->', {\r\n\t\t\t\t\t\t\t\t\tlabel: '<div class=\"filterLabel\"><!--#clearBtn--><!--$filter.name--></div>',\r\n\t\t\t\t\t\t\t\t\tclearBtn: '<button <!--!click@clearFilter--> class=\"text-danger\" data-filter=\"<!--$filter.oid-->\"><i class=\"fas fa-fw fa-trash\"></i></button>'\r\n\t\t\t\t\t\t\t\t}, {\r\n\t\t\t\t\t\t\t\t\tfilter: filter,\r\n\t\t\t\t\t\t\t\t\tclearFilter: (e,el,vars,params)=>{\r\n\t\t\t\t\t\t\t\t\t\tfilterOptions.fnClear(el.getAttribute('data-filter'));\r\n\t\t\t\t\t\t\t\t\t\tself.submit();\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t})[0]);\r\n\t\t\t\t\t\t\t\tself.filters[filter.oid].active = true;\r\n\t\t\t\t\t\t\t\treturn activeWrapEl;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnChange: function (oid, min, max) {\r\n\t\t\t\t\t\t\tlet changed = false,\r\n\t\t\t\t\t\t\t\tfilterOptions = self.getFilterOptions(self.filters[oid]),\r\n\t\t\t\t\t\t\t\tfilter = self.filters[oid];\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tmin = filterOptions.fnParseValue(min);\r\n\t\t\t\t\t\t\tmax = filterOptions.fnParseValue(max);\r\n\t\t\t\t\t\t\tif (min === filter.initMinValue) min = null;\r\n\t\t\t\t\t\t\tif (max === filter.initMaxValue) max = null;\r\n\t\t\t\t\t\t\tif (filter.minValue === filter.initMinValue) {\r\n\t\t\t\t\t\t\t\tfilter.minValue = null;\r\n\t\t\t\t\t\t\t\tfilter.boundaryMinValue = null;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (filter.maxValue === filter.initMaxValue) {\r\n\t\t\t\t\t\t\t\tfilter.maxValue = null;\r\n\t\t\t\t\t\t\t\tfilter.boundaryMaxValue = null;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (filter.minValue != min && !(filter.minValue === null && min === filter.boundaryMinValue)) {\r\n\t\t\t\t\t\t\t\tfilter.minValue = min;\r\n\t\t\t\t\t\t\t\tchanged = true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (filter.maxValue != max && !(filter.maxValue === null && max === filter.boundaryMaxValue)) {\r\n\t\t\t\t\t\t\t\tfilter.maxValue = max;\r\n\t\t\t\t\t\t\t\tchanged = true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn changed;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnUpdate: function (filter) {\r\n\t\t\t\t\t\t\tlet filterOptions = self.getFilterOptions(filter),\r\n\t\t\t\t\t\t\t\t_filter, filterMin, filterMax, i, j, valueCount;\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tfilter.values = filter.values.sort(filterOptions.fnSortValues);\r\n\t\t\t\t\t\t\t// Pokud hodnota n�hodou mezi p�vodn�mi filtry neexistuje (nap�. filtr se ji� na�etl zafiltrovan�), tak se p�id�\r\n\t\t\t\t\t\t\tif (!(self.filters.hasOwnProperty(filter.oid))) {\r\n\t\t\t\t\t\t\t\tself.filters[filter.oid] = filter;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t_filter = self.filters[filter.oid];\r\n\r\n\t\t\t\t\t\t\t// Je n�kter� hodnota (a tedy i filtr jako takov�) aktivn�/selected?\r\n\t\t\t\t\t\t\t_filter.selected = (typeof _filter.minValue === 'number' || typeof _filter.maxValue === 'number');\r\n\r\n\t\t\t\t\t\t\tfilterMin = null;\r\n\t\t\t\t\t\t\tfilterMax = null;\r\n\t\t\t\t\t\t\tfor (i = 0; i < _filter.values.length; i++) {\r\n\t\t\t\t\t\t\t\tvalueCount = 0;\r\n\t\t\t\t\t\t\t\tif (!filter.disabled) {\r\n\t\t\t\t\t\t\t\t\tfor (j = 0; j < filter.values.length; j++) {\r\n\t\t\t\t\t\t\t\t\t\tif (_filter.values[i].value == filter.values[j].value && _filter.values[i].value2 == filter.values[j].value2) {\r\n\t\t\t\t\t\t\t\t\t\t\tvalueCount = filter.values[j].count;\r\n\t\t\t\t\t\t\t\t\t\t\tif (filterMin === null || filter.values[j].value < filterMin) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tfilterMin = filter.values[j].value;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tif (filterMax === null || filter.values[j].value2 > filterMax) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tfilterMax = filter.values[j].value2;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tif (!filter.values[j].value2 || filter.values[j].value > filterMax) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tfilterMax = filter.values[j].value;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t// Nastaven� p�vodn� min/max hodnoty filtru\r\n\t\t\t\t\t\t\tif (!_filter.hasOwnProperty('initMinValue')) _filter.initMinValue = filterMin;\r\n\t\t\t\t\t\t\tif (!_filter.hasOwnProperty('initMaxValue')) _filter.initMaxValue = filterMax;\r\n\r\n\t\t\t\t\t\t\tif (!_filter.selected) {\r\n\t\t\t\t\t\t\t\t_filter.boundaryMinValue = filterMin;\r\n\t\t\t\t\t\t\t\t_filter.boundaryMaxValue = filterMax;\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t_filter.boundaryMinValue = _filter.initMinValue;\r\n\t\t\t\t\t\t\t\t_filter.boundaryMaxValue = _filter.initMaxValue;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (false && _filter.selected && typeof _filter.minValue !== 'number') {\r\n\t\t\t\t\t\t\t\t_filter.minValue = (filterMin > _filter.boundaryMinValue ? filterMin : null);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (false && _filter.selected && typeof _filter.maxValue !== 'number') {\r\n\t\t\t\t\t\t\t\t_filter.maxValue = (filterMax < _filter.boundaryMaxValue ? filterMax : null);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfnStringify: function (filter) {\r\n\t\t\t\t\t\t\treturn filter.oid + ':::' + filter.type + ':::' + (typeof filter.minValue === 'number' ? filter.minValue.toString().replace(/\\./g, ',') : '') + '@@@' + (typeof filter.maxValue === 'number' ? filter.maxValue.toString().replace(/\\./g, ',') : '') + '###';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tfnGenerateActive: function (filter, fnChange) {\r\n\t\t\t\t\tlet filterOptions = self.getFilterOptions(filter),\r\n\t\t\t\t\t\tactiveWrapEl = document.createElement('div'),\r\n\t\t\t\t\t\ti, valueWrapEl, valueTextEl, val1, val2, koef, unit, rmBtn;\r\n\t\t\t\t\tself.filters[filter.oid].active = false;\r\n\r\n\t\t\t\t\tfor (i = 0; i < filter.values.length; i++) {\r\n\t\t\t\t\t\tif (filter.values[i].selected) {\r\n\t\t\t\t\t\t\tvalueWrapEl = document.createElement('div');\r\n\t\t\t\t\t\t\tvalueWrapEl.className = 'valueWrap';\r\n\t\t\t\t\t\t\tvalueTextEl = document.createElement('span');\r\n\t\t\t\t\t\t\tval1 = filter.values[i][filterOptions.valueProperty];\r\n\t\t\t\t\t\t\tval2 = filter.values[i].value2;\r\n\t\t\t\t\t\t\tkoef = filter.values[i].koef;\r\n\t\t\t\t\t\t\tunit = filter.values[i].unit || filter.unit;\r\n\t\t\t\t\t\t\tif (koef && !filterOptions.config._multiUnitActive) {\r\n\t\t\t\t\t\t\t\tval1 = val1*koef;\r\n\t\t\t\t\t\t\t\tif(val2) val2 = val2*koef;\r\n\t\t\t\t\t\t\t\tunit = filter.unit;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tvalueTextEl.innerText = (filter.values[i].hasOwnProperty('name') ? filter.values[i].name : val1)\r\n\t\t\t\t\t\t\t\t + (val2 ? '~' + val2 : '')\r\n\t\t\t\t\t\t\t\t + (unit && (val1 || typeof val1 === 'number') ? ' ' + unit : '')\r\n\t\t\t\t\t\t\t\t + (filter.values[i].count && self.options.showQuantity ? ' (' + filter.values[i].count + ')' : '');\r\n\t\t\t\t\t\t\tvalueWrapEl.appendChild(valueTextEl);\r\n\t\t\t\t\t\t\trmBtn = document.createElement('button');\r\n\t\t\t\t\t\t\trmBtn.innerHTML = '<i class=\"fas fa-fw fa-times\"></i>';\r\n\t\t\t\t\t\t\trmBtn.type = 'button';\r\n\t\t\t\t\t\t\trmBtn.className = 'px-2';\r\n\t\t\t\t\t\t\trmBtn.setAttribute('data-filter', filter.oid);\r\n\t\t\t\t\t\t\trmBtn.setAttribute('data-value', filter.values[i][filterOptions.valueProperty]);\r\n\t\t\t\t\t\t\trmBtn.addEventListener('click', function () { // jshint ignore:line\r\n\t\t\t\t\t\t\t\tif(fnChange(this.getAttribute('data-filter'), this.getAttribute('data-value'), false)) self.submit();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tvalueWrapEl.appendChild(rmBtn);\r\n\t\t\t\t\t\t\tactiveWrapEl.appendChild(valueWrapEl);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (activeWrapEl.children.length > 0) {\r\n\t\t\t\t\t\tactiveWrapEl.firstChild.before(EBContext.utils.template('<!--#label-->', {\r\n\t\t\t\t\t\t\tlabel: '<div class=\"filterLabel\"><!--#clearBtn--><!--$filter.name--></div>',\r\n\t\t\t\t\t\t\tclearBtn: '<button <!--!click@clearFilter--> class=\"text-danger\" data-filter=\"<!--$filter.oid-->\"><i class=\"fas fa-fw fa-trash\"></i></button>'\r\n\t\t\t\t\t\t}, {\r\n\t\t\t\t\t\t\tfilter: filter,\r\n\t\t\t\t\t\t\tclearFilter: (e,el,vars,params)=>{\r\n\t\t\t\t\t\t\t\tfilterOptions.fnClear(el.getAttribute('data-filter'));\r\n\t\t\t\t\t\t\t\tself.submit();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})[0]);\t\t\t\t\t\r\n\t\t\t\t\t\tself.filters[filter.oid].active = true;\r\n\t\t\t\t\t\treturn activeWrapEl;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t},\r\n\t\t\t\tfnSortValues: function (a, b) {\r\n\t\t\t\t\tlet a_order = parseInt(a.order),\r\n\t\t\t\t\t\tb_order = parseInt(b.order);\r\n\t\t\t\t\treturn ((a_order < b_order) ? -1 : ((a_order > b_order) ? 1 : ((a.value < b.value) ? -1 : ((a.value > b.value) ? 1 : 0))));\r\n\t\t\t\t},\r\n\t\t\t\tfnParseValue: function (value) {\r\n\t\t\t\t\treturn value.toString().trim();\r\n\t\t\t\t},\r\n\t\t\t\tfnChange: function (oid, value, selected) {\r\n\t\t\t\t\tlet changed = false,\r\n\t\t\t\t\t\tfilterOptions = self.getFilterOptions(self.filters[oid]),\r\n\t\t\t\t\t\ti;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\tvalue = filterOptions.fnParseValue(value);\r\n\t\t\t\t\tfor (i = 0; i < self.filters[oid].values.length; i++) {\r\n\t\t\t\t\t\tif (self.filters[oid].values[i][filterOptions.valueProperty] == value) {\r\n\t\t\t\t\t\t\tif(self.filters[oid].values[i].selected !== selected) changed = true;\r\n\t\t\t\t\t\t\tself.filters[oid].values[i].selected = selected;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn changed;\r\n\t\t\t\t},\r\n\t\t\t\tfnClear: function(oid) {\r\n\t\t\t\t\tlet i;\r\n\t\t\t\t\tfor (i = 0; i < self.filters[oid].values.length; i++) {\r\n\t\t\t\t\t\tself.filters[oid].values[i].selected = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tself.filters[oid].minValue = null;\r\n\t\t\t\t\tself.filters[oid].maxValue = null;\r\n\t\t\t\t\tself.filters[oid].selected = false;\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t},\r\n\t\t\t\tfnUpdate: function (filter) {\r\n\r\n\t\t\t\t\t// Na�ten� funkc� dan�ho typu filtru\r\n\t\t\t\t\tlet filterOptions = self.getFilterOptions(filter),\r\n\t\t\t\t\t\t_filter, i, j, valueCount, disabled;\r\n\r\n\t\t\t\t\t// Se�azen� hodnot (pro p��pad na�ten� nov�ch)\r\n\t\t\t\t\tfilter.values = filter.values.sort(filterOptions.fnSortValues);\r\n\r\n\t\t\t\t\t// Pokud filtr dan� parametr je�t� nezn�, tak si ho ulo��\r\n\t\t\t\t\tif (!(self.filters.hasOwnProperty(filter.oid))) {\r\n\t\t\t\t\t\tself.filters[filter.oid] = filter;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t_filter = self.filters[filter.oid];\r\n\r\n\t\t\t\t\t// Je n�kter� hodnota (a tedy i filtr jako takov�) aktivn�/selected?\r\n\t\t\t\t\t_filter.selected = false;\r\n\t\t\t\t\tfor (i = 0; i < _filter.values.length; i++) {\r\n\t\t\t\t\t\tif (_filter.values[i].selected) {\r\n\t\t\t\t\t\t\t_filter.selected = true;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// pro ka�dou hodnotu ulo�en�ho parametru filtru\r\n\t\t\t\t\tfor (i = 0; i < _filter.values.length; i++) {\r\n\t\t\t\t\t\tvalueCount = 0;\r\n\t\t\t\t\t\tdisabled = !_filter.selected;\r\n\r\n\t\t\t\t\t\tif (_filter.type === 'BOOLEAN') {\r\n\t\t\t\t\t\t\tif (_filter.values[i].value == '0') {\r\n\t\t\t\t\t\t\t\t_filter.values[i].name = EBContext.resource('NE');\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (_filter.values[i].value == '1') {\r\n\t\t\t\t\t\t\t\t_filter.values[i].name = EBContext.resource('ANO');\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// pro enum naplnit vlastnost name - mo�nost do budoucna u typu COLOR jako name pos�lat i n�zev barvy\r\n\t\t\t\t\t\tif (filterOptions.valueProperty !== 'value') _filter.values[i].name = _filter.values[i].value;\r\n\r\n\t\t\t\t\t\t// Pokud se filtr na�etl, tak aktualizovat jeho hodnoty\r\n\t\t\t\t\t\tif (!filter.disabled) {\r\n\r\n\t\t\t\t\t\t\t// najdi odpov�daj�c� hodnotu\r\n\t\t\t\t\t\t\tfor (j = 0; j < filter.values.length; j++) {\r\n\t\t\t\t\t\t\t\tif (_filter.values[i][filterOptions.valueProperty] == filter.values[j][filterOptions.valueProperty] && _filter.values[i].value2 == filter.values[j].value2) {\r\n\r\n\t\t\t\t\t\t\t\t\t// pokud je odpov�daj�c� hodnota nalezena, tak ji povolit\r\n\t\t\t\t\t\t\t\t\tdisabled = false;\r\n\t\t\t\t\t\t\t\t\tvalueCount = filter.values[j].count;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t_filter.values[i].disabled = disabled;\r\n\t\t\t\t\t\t_filter.values[i].count = valueCount;\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tfnStringify: function (filter) {\r\n\t\t\t\t\tlet filterOptions = self.getFilterOptions(filter),\r\n\t\t\t\t\t\tvalues = '', i;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\tfor (i = 0; i < filter.values.length; i++) {\r\n\t\t\t\t\t\tif (filter.values[i].selected) {\r\n\t\t\t\t\t\t\tvalues += filter.values[i][filterOptions.valueProperty] + '@@@';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn filter.oid + ':::' + filter.type + ':::' + values + '###';\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tUNSUPPORTED: {\r\n\t\t\t\tvalueProperty: 'value',\r\n\t\t\t\tfnGenerateFilterBody: function (filter, fnChange) {\r\n\t\t\t\t\tlet filterWrap = document.createElement('div');\r\n\t\t\t\t\tfilterWrap.innerText = EBContext.resource('USR_unknownFilterType').replace(/#TYPE#/g, filter.type);\r\n\t\t\t\t\treturn filterWrap;\r\n\t\t\t\t},\r\n\t\t\t\tfnUpdateFilterValues: function (filter, scope) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t},\r\n\t\t\t\tfnGenerateActive: function (filter, fnChange) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t},\r\n\t\t\t\tfnSortValues: function (a, b) {\r\n\t\t\t\t\treturn ((a.value < b.value) ? -1 : ((a.value > b.value) ? 1 : 0));\r\n\t\t\t\t},\r\n\t\t\t\tfnParseValue: function (value) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t},\r\n\t\t\t\tfnChange: function (oid, value, selected) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t},\r\n\t\t\t\tfnClear: function(oid) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t},\r\n\t\t\t\tfnUpdate: function (filter) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t},\r\n\t\t\t\tfnStringify: function (filter) {\r\n\t\t\t\t\treturn '';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tfilterTypesFallback: {},\r\n\t\tparamsMap: {\r\n\t\t\t'_cenaoddo': {\r\n\t\t\t\tfilterTypeKod: 'SLIDER_INPUTS',\r\n\t\t\t\tfilterTypeConfig: {\r\n\t\t\t\t\ttype: 'double',\r\n\t\t\t\t\tgrid: false,\r\n\t\t\t\t\tdrag_interval: true,\r\n\t\t\t\t\tdecorate_both: false,\r\n\t\t\t\t\tforce_edges: true\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t'_cenaoddo2': {\r\n\t\t\t\tfilterTypeKod: 'SLIDER_INPUTS',\r\n\t\t\t\tfilterTypeConfig: {\r\n\t\t\t\t\ttype: 'double',\r\n\t\t\t\t\tgrid: false,\r\n\t\t\t\t\tdrag_interval: true,\r\n\t\t\t\t\tdecorate_both: false,\r\n\t\t\t\t\tforce_edges: true\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tfnSortFilters: function (a, b) {\r\n\t\t\tif(a.minPozice < b.minPozice) return -1;\r\n\t\t\tif(a.minPozice > b.minPozice) return 1;\r\n\t\t\tlet nameA = a.name.toLowerCase();\r\n\t\t\tlet nameB = b.name.toLowerCase();\r\n\t\t\tif(nameA < nameB) return -1;\r\n\t\t\tif(nameA > nameB) return 1;\r\n\t\t\treturn 0;\r\n\t\t},\r\n\t\tfnGenerateFilterHead: function (filter) {\r\n\t\t\tlet headWrap = document.createElement('div'),\r\n\t\t\t\theadingEl = document.createElement('div'),\r\n\t\t\t\trmWrap = document.createElement('div');\r\n\t\t\t\t\r\n\t\t\theadWrap.id = 'filter_' + filter.oid + '_head';\r\n\t\t\theadWrap.className = 'd-flex justify-content-between align-items-center mb-2';\r\n\r\n\t\t\theadingEl.className = 'd-flex';\r\n\t\t\theadingEl.innerText = filter.name;\r\n\t\t\t\r\n\t\t\trmWrap.className = 'd-flex filter_rmWrap';\r\n\t\t\trmWrap.id = 'filter_' + filter.oid + '_rmWrap';\r\n\t\t\t\r\n\t\t\theadWrap.appendChild(headingEl);\r\n\t\t\theadWrap.appendChild(rmWrap);\r\n\t\t\t\r\n\t\t\treturn headWrap;\r\n\t\t},\r\n\t\tfnUpdateFilterHead: function(filter){\r\n\t\t\tlet rmWrap = document.getElementById('filter_' + filter.oid + '_rmWrap'),\r\n\t\t\t\tfilterOptions, clearBtn;\r\n\t\t\t\t\r\n\t\t\tif(rmWrap){\r\n\t\t\t\tif(filter.selected){\r\n\t\t\t\t\tif(!document.getElementById('filter_' + filter.oid + '_clear')){\r\n\t\t\t\t\t\tfilterOptions = self.getFilterOptions(filter);\r\n\t\t\t\t\t\tclearBtn = document.createElement('button');\r\n\t\t\t\t\t\tclearBtn.type = 'button';\r\n\t\t\t\t\t\tclearBtn.className = 'filter_clear btn btn-sm btn-danger';\r\n\t\t\t\t\t\tclearBtn.id = 'filter_' + filter.oid + '_clear';\r\n\t\t\t\t\t\tclearBtn.innerText = EBContext.resource('NEFILTROVAT');\r\n\t\t\t\t\t\tclearBtn.setAttribute('data-filter', filter.oid);\r\n\t\t\t\t\t\tclearBtn.addEventListener('click', function(){\r\n\t\t\t\t\t\t\tfilterOptions.fnClear(this.getAttribute('data-filter'));\r\n\t\t\t\t\t\t\tself.submit();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\trmWrap.appendChild(clearBtn);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse{\r\n\t\t\t\t\trmWrap.innerHTML = '';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tfnGenerateFilters: function (filters, fnGenerateFilterHead, fnGenerateFilterBody) {\r\n\t\t\tlet resultEl = document.createElement('div'),\r\n\t\t\t\ti, filterBody;\r\n\t\t\t\t\r\n\t\t\t//resultEl.id = 'paramsMenu';\r\n\t\t\tfor (i = 0; i < filters.length; i++) {\r\n\t\t\t\tfilterBody = document.createElement('div');\r\n\t\t\t\tfilterBody.id = 'filter_' + filters[i].oid + '_body';\r\n\t\t\t\tfilterBody.className = 'pb-3';\r\n\t\t\t\tfilterBody.appendChild(fnGenerateFilterBody(filters[i]));\r\n\r\n\t\t\t\tresultEl.appendChild(fnGenerateFilterHead(filters[i]));\r\n\t\t\t\tresultEl.appendChild(filterBody);\r\n\t\t\t}\r\n\t\t\treturn resultEl;\r\n\t\t},\r\n\t\tfnGenerateActive: function (filters, wrapEl) {\r\n\t\t\tlet filterOptions, activeFilterEl, i;\r\n\t\t\twrapEl = wrapEl || self.activeWrapEl;\r\n\t\t\twhile (wrapEl.firstChild) wrapEl.removeChild(wrapEl.firstChild);\r\n\t\t\tfor (i = 0; i < filters.length; i++) {\r\n\t\t\t\tfilterOptions = self.getFilterOptions(filters[i]);\r\n\t\t\t\tactiveFilterEl = filterOptions.fnGenerateActive(filters[i], filterOptions.fnChange);\r\n\t\t\t\tif (activeFilterEl) wrapEl.appendChild(activeFilterEl);\r\n\t\t\t}\r\n\t\t\tif(wrapEl.children.length){\r\n\t\t\t\twrapEl.append(EBContext.utils.template('<div class=\"mt-2 me-0 d-flex justify-content-end\"><!--#btnRmAll--></div>', {\r\n\t\t\t\t\tbtnRmAll: '<button type=\"button\" class=\"btn btn-sm btn-danger\" <!--!click@rmAll--> ><!--~resource.VYMAZAT_FILTRY_PARAMETRU--></button>'\r\n\t\t\t\t}, {\r\n\t\t\t\t\trmAll: (e,el,vars,params)=>{\r\n\t\t\t\t\t\tfilters.forEach(f=>self.getFilterOptions(f).fnClear(f.oid));\r\n\t\t\t\t\t\tself.submit();\r\n\t\t\t\t\t}\r\n\t\t\t\t})[0]);\r\n\t\t\t}\r\n\t\t},\r\n\t\tfnToggleFilter: function (open) {\r\n\t\t\tself.filterWrapEl.style.display = (open ? '' : 'none');\r\n\t\t}\r\n\t}, options);\r\n\r\n\t//cache vygenerovan�ch options pro pou�it� kombinace filter.type a filter.filterTypeKod\r\n\tthis.optionsCache = {};\r\n\tself.loader = self.options.getLoader(self.filterWrapEl);\r\n\r\n\tthis.getValId = function(oid, value){\r\n\t\treturn 'filter_' + oid + '_' + value.toString().replace(/[\\.,#]/g, '_');\r\n\t};\r\n\r\n\t// Declare/Reset instance-specific data to initial values to prepare parametric filter to load a new set of filters (e.g. for different category)\r\n\tthis.reset = function () {\r\n\t\t// console.debug('%cParametric filter - reset','color:white;background:black;padding:.5em;border:2px solid red');\r\n\t\tthis.isRendered = false;\t\t// Je vyrenderov�no HTML?\r\n\t\tthis.isUpdated = false;\t\t\t// Na�ten� filtry jsou aktu�ln�?\r\n\t\tthis.isOpen = false;\t\t\t// Filtr je otev�en�?\r\n\t\tthis.activeWrapEl = null;\t\t// Reference na DOM element obaluj�c� aktivn� seznam vyfiltrovan�ch hodnot. Po reloadu str�nky se mus� setnout znovu.\r\n\t\tthis.filterWrapEl = null;\t\t// Reference na DOM element obaluj�c� seznam filtr�. Po reloadu str�nky se mus� setnout znovu.\r\n\t\tthis.priceWrapEl = null;\t\t// Reference na DOM element obaluj�c� filtr ceny. Po reloadu str�nky se mus� setnout znovu.\r\n\t\tthis.extendedFilterEl = null;\t// Reference na DOM element obaluj�c� roz���en� filtr (sklad. dostupnost, v�robci, dodavatel�, akce, atp.). Po reloadu str�nky se mus� setnout znovu.\r\n\t\tthis.priceParam = '';\t\t\t// Filtrovat dle ceny s DPH nebo bez? - \"_cenaoddo\" vs. \"_cenaoddo2\"\r\n\t\tthis.goodResult = '';\t\t\t// Seznam OID vyfiltrovan�ch produkt� k na�ten� relevantn�ch filtr�\r\n\t\tthis.filterStr = '';\t\t\t// String hodnot odeslan�ho filtru\r\n\t\tthis.resultParams = {};\t\t\t// Na��t� se z \"EBContext.pages.<this.options.resultPageName>.<this.options.resultBlockName>.params\", a obsahuje parametry se kter�mi se na str�nce pracuje\r\n\t\tthis.filters = {};\t\t\t\t// Objekt filtr�\r\n\t\tthis.sliders = {};\t\t\t\r\n\t\tthis.selects = {};\r\n\t\tthis.filterStylesEl = null;\r\n\t\tthis.filterStyles = {};\r\n\t};\r\n\t\r\n\t// Reset selected params values\r\n\tthis.clear = function (){\r\n\t\t// console.debug('%cParametric filter - clear','color:white;background:black;padding:.5em;border:2px solid red');\r\n\t\tlet filtersKeys = Object.keys(self.filters),\r\n\t\t\tfilter, filterOptions, i;\r\n\t\tfor (i = 0; i < filtersKeys.length; i++) {\r\n\t\t\tfilter = self.filters[filtersKeys[i]];\r\n\t\t\tfilterOptions = self.getFilterOptions(filter);\r\n\t\t\tfilterOptions.fnClear(filter.oid);\r\n\t\t}\r\n\t\treturn self.submit();\r\n\t};\r\n\r\n\t// Returns combination of filter options based on default filter and extended with options for filter.type and filter.filterTypeKod\r\n\tthis.getFilterOptions = function (filter) {\r\n\r\n\t\t// skip this parameteter - render it as unsupported - foolproof solution. If removed, filter will try to return absolute default options\r\n\t\tif (!self.options.useDefault && !self.options.paramsTypes.hasOwnProperty(filter.type)) {\r\n\t\t\treturn self.options.paramsTypes.UNSUPPORTED;\r\n\t\t}\r\n\t\t\r\n\t\t// extend system filters with custom options\r\n\t\tif(self.options.paramsMap.hasOwnProperty(filter.oid)) EBContext.utils.extendObj(false, self.options.paramsMap[filter.oid], filter);\r\n\r\n\t\t// if filterType is not set, try to set it to default filterType for this paramType, else set it to default filterType of default paramType\r\n\t\tfilter.filterTypeKod = filter.filterTypeKod || self.options.paramsTypes[filter.type].defaultFilterType || self.options.paramsTypes.DEFAULT.defaultFilterType;\r\n\r\n\t\tlet filterOptions;\r\n\t\t// if options for combination of this param type and filter type has already been generated, return cached options\r\n\t\tif (self.optionsCache.hasOwnProperty(filter.type + ':' + filter.filterTypeKod)) {\r\n\t\t\tfilterOptions = self.optionsCache[filter.type + ':' + filter.filterTypeKod];\r\n\t\t} else {\r\n\t\t\tfilterOptions = EBContext.utils.mergeObj(\r\n\t\t\t\tfalse,\r\n\t\t\t\tself.options.paramsTypes.DEFAULT, // DEFAULT param\r\n\t\t\t\tEBContext.utils.searchObj(self.options.paramsTypes.DEFAULT, ['filterTypes', filter.filterTypeKod]), // specified or DEFAULT type\r\n\t\t\t\tself.options.paramsTypes[filter.type], // specified param\r\n\t\t\t\tEBContext.utils.searchObj(self.options.paramsTypes, [filter.type, 'filterTypes', filter.filterTypeKod]) // specified type of specified param\r\n\t\t\t);\r\n\r\n\t\t\t// There is no use for another filterTypes and defaultFilterType within options for one specific filterType\r\n\t\t\tdelete filterOptions.filterTypes;\r\n\t\t\tdelete filterOptions.defaultFilterType;\r\n\r\n\t\t\t// save merged settings to optionsCache\r\n\t\t\tself.optionsCache[filter.type + ':' + filter.filterTypeKod] = filterOptions;\r\n\t\t}\r\n\t\tif (filter.filterTypeConfig) {\r\n\t\t\tfilterOptions.config = EBContext.utils.extendObj(false, {}, filterOptions.config, filter.filterTypeConfig);\r\n\t\t}\r\n\t\treturn filterOptions;\r\n\t};\r\n\r\n\t// Sets local references to DOM wrapping elements and restore filter state\r\n\tthis.init = function (options) {\r\n\t\tEBContext.utils.extendObj(false, self.options, options);\r\n\t\tconsole.debug('%c - inicializace param. filtru (po require EBContext_ParametricFilter)', 'background:red;color:white;padding:1em 2em', self);\r\n\t\tlet postData = window.history.state.postData,\r\n\t\t\tsavedElements = window.history.state.savedElements,\r\n\t\t\tfilterData = EBContext.utils.searchObj(window.history.state, ['pageData', 'paramFilter']),\r\n\t\t\tsubmitExFormEl, jenSkladEl, submitForm = ()=>submitExFormEl.click();\r\n\t\t\r\n\t\t// Pokud se z body ztrat� element filtru a nejsou odeslan� postData, tak filtr resetovat \r\n\t\tif (!document.body.contains(self.filterWrapEl) && !postData) {\r\n\t\t\tself.reset();\r\n\t\t// jinak obnovit stav input� roz���en�ho filtru\r\n\t\t} else if(savedElements){\r\n\t\t\tEBContext.ajaxNav.setElementsState(savedElements);\r\n\t\t}\r\n\t\tself.category = self.options.category || null;\r\n\t\tself.priceParam = (self.options.priceWithVAT ? '_cenaoddo' : '_cenaoddo2');\r\n\t\tself.priceWrapEl = document.getElementById(self.options.priceWrapId);\r\n\t\tself.filterWrapEl = document.getElementById(self.options.filterWrapId);\r\n\t\tself.activeWrapEl = document.getElementById(self.options.activeWrapId);\r\n\t\tself.extendedFilterEl = document.getElementById(self.options.extendedFilterId);\r\n\t\tself.resultParams = EBContext.utils.searchObj(EBContext, ['pages', self.options.resultPageName, self.options.resultBlockName, 'params']);\r\n\t\t// self.loader = self.options.getLoader(self.filterWrapEl);\r\n\t\tself.filterStr = self.resultParams.paramFilter;\r\n\t\tif(self.filterWrapEl) self.filterWrapEl.style.display = 'none';\r\n\t\tself.filterStylesEl = self.filterStylesEl || document.getElementById(self.options.filterWrapId + '_styles');\r\n\t\tif(!self.filterStylesEl || !document.body.contains(self.filterStylesEl)){\r\n\t\t\tself.filterStylesEl = document.createElement('style');\r\n\t\t\tself.filterStylesEl.id = self.options.filterWrapId + '_styles';\r\n\t\t\tself.filterWrapEl.before(self.filterStylesEl);\r\n\t\t}\r\n\t\t\r\n\t\t//pokud jsou v objektu historie ulo�ena data param. filtru, tak je na��st \r\n\t\tif (filterData) {\r\n\t\t\t\r\n\t\t\t//na��st ulo�en� stav param. filtr�\r\n\t\t\tif(filterData.filters) self.filters = filterData.filters;\r\n\t\t\t\r\n\t\t\t//obnovit stav filtru\r\n\t\t\tself.isOpen = filterData.open;\r\n\t\t\t\r\n\t\t\t//pokud nebyl vr�cen� paramFiltr v resultParams, ale dle history objektu bylo n�co filtrov�no, tak odeslat filtr (reload okna)\r\n\t\t\tif(filterData.filterStr && filterData.filterStr !== self.filterStr){\r\n\t\t\t\tself.filterStr = filterData.filterStr;\r\n\t\t\t\tself.isRendered = false;\r\n\t\t\t\treturn self.submit(true);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tsubmitExFormEl = self.extendedFilterEl.querySelector('input[type=\"submit\"]');\r\n\t\tif(!submitExFormEl){\r\n\t\t\tsubmitExFormEl = document.createElement('input');\r\n\t\t\tsubmitExFormEl.type = 'submit';\r\n\t\t\tsubmitExFormEl.style.visibility = 'hidden';\r\n\t\t\tsubmitExFormEl.style.height = '0px';\r\n\t\t\tself.extendedFilterEl.appendChild(submitExFormEl);\r\n\t\t}\r\n\t\t[self.filterWrapEl, self.priceWrapEl, self.extendedFilterEl].forEach(el=>{\r\n\t\t\tel.addEventListener('keydown', e=>{\r\n\t\t\t\tif(e.key === 'Enter'){\r\n\t\t\t\t\tdocument.activeElement.blur();\r\n\t\t\t\t\t// submitForm();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t\t[...self.extendedFilterEl.querySelectorAll('input[name]')].forEach(el=>el.onchange = submitForm);\r\n\t\tjenSkladEl = document.getElementById('jenskladSelect');\r\n\t\tif(jenSkladEl) jenSkladEl.onchange = evt=>{\r\n\t\t\tlet jensklad, provozovna, maloobchod, \r\n\t\t\t\tel = evt.target;\r\n\t\t\tif(el.value === 'true'){\r\n\t\t\t\tjensklad = '1';\r\n\t\t\t\tprovozovna = '';\r\n\t\t\t\tmaloobchod = '';\r\n\t\t\t}\r\n\t\t\telse if(el.value === 'false'){\r\n\t\t\t\tjensklad = '';\r\n\t\t\t\tprovozovna = '';\r\n\t\t\t\tmaloobchod = '';\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\tjensklad = '1';\r\n\t\t\t\tprovozovna = el.value;\r\n\t\t\t\tmaloobchod= '';\r\n\t\t\t}\r\n\t\t\tself.extendedFilterEl.querySelector('input[name=\"jensklad\"]').value = jensklad;\r\n\t\t\tself.extendedFilterEl.querySelector('input[name=\"maloobchod\"]').value = maloobchod;\r\n\t\t\tself.extendedFilterEl.querySelector('input[name=\"provozovna\"]').value = provozovna;\r\n\t\t\tsubmitForm();\r\n\t\t};\r\n\t\t\r\n\t\tself.extendedFilterEl.setAttribute('initialized', true);\r\n\t\t\r\n\t\tif(self.isOpen || self.options.alwaysOpen){\r\n\t\t\tself.toggle(true);\r\n\t\t}\r\n\t\tEBContext.async.finish('paramFilter-submit');\r\n\t\tdocument.addEventListener('EBContext.session.setCurrency', ()=>{\r\n\t\t\t// @TODO - upravit tak, aby se hodnoty p�epo��taly kurzem, a nemusely se resetovat\r\n\t\t\t// debugger;\r\n\t\t\t// let kkoef = EBContext.data.session.Cust_Kurz / EBContext.data.session.Cust_KurzPocet;\r\n\t\t\t// let priceFilter = self.filters[self.priceParam];\r\n\t\t\t// ['boundaryMaxValue','boundaryMinValue','initMaxValue','initMinValue'].forEach(prop=>{\r\n\t\t\t// \tpriceFilter[prop] = priceFilter[prop] * priceFilter.koef / kkoef;\r\n\t\t\t// });\r\n\t\t\t// priceFilter.values.forEach(val=>{\r\n\t\t\t// \t['value','value2'].forEach(prop=>{\r\n\t\t\t// \t\tval[prop] = val[prop] * priceFilter.koef / kkoef;\r\n\t\t\t// \t});\r\n\t\t\t// });\r\n\t\t\tdelete self.filters[self.priceParam];\r\n\t\t\tself.isRendered = false;\r\n\t\t\tself.isUpdated = false;\r\n\t\t\t// self.isOpen = false;\r\n\t\t\tself.filterStr = self.stringify();\r\n\t\t\tself.store(true);\r\n\t\t});\r\n\t};\r\n\t\r\n\t// If paramFilter is collapsible, this is to be toggling it's visibility\r\n\tthis.toggle = function (open) {\r\n\t\t// console.debug('%cParametric filter - toggle','color:white;background:black;padding:.5em;border:2px solid red');\r\n\t\t\r\n\t\t// Pokud nen� p�edan� po�adovan� stav, oto�it aktu�ln� stav\r\n\t\tself.isOpen = (typeof open !== 'undefined' ? open : !self.isOpen);\r\n\t\t\r\n\t\tlet hasParams = (Object.keys(self.filters).find(k=>(k[0]!=='_')));\r\n\t\t\r\n\t\t// Pokud m� b�t filtr otev�en�, ale nen� vyrenderovan�, tak vyrenderovat\r\n\t\tif (self.isOpen && (!self.isRendered || !self.isUpdated)){\r\n\t\t\tself.render();\r\n\t\t} else if(self.isOpen && hasParams){\r\n\t\t\tself.filterWrapEl.style.display = '';\r\n\t\t}\r\n\t\t\r\n\t\t// Otev��t/Zav��t filtr v DOM\r\n\t\tself.options.fnToggleFilter(self.isOpen);\r\n\r\n\t\t// Ulo�it stav filtru pro p��pad p�ena�ten�\r\n\t\tself.store();\r\n\t\treturn self.isOpen;\r\n\t};\r\n\t\r\n\t// render DOM elements of filters, according to filters object and options for each filter.type and filter.filterTypeKod\r\n\tthis.render = function () {\r\n\t\tif(!self.isUpdated){\r\n\t\t\treturn self.update(self.options.parameters);\r\n\t\t} else {\r\n\t\t\tlet i, filter, filterOptions, resultEl, filterBody, \r\n\t\t\t\tfiltersArr = [],\r\n\t\t\t\tfiltersKeys = Object.keys(self.filters);\r\n\t\t\t\t\r\n\t\t\tfor (i = 0; i < filtersKeys.length; i++) {\r\n\t\t\t\tif (filtersKeys[i][0] !== '_') {\r\n\t\t\t\t\tfiltersArr.push(self.filters[filtersKeys[i]]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tfiltersArr.sort(self.options.fnSortFilters);\r\n\t\t\tif (self.isRendered) {\r\n\t\t\t\tfor (i = 0; i < filtersArr.length; i++) {\r\n\t\t\t\t\tfilterOptions = self.getFilterOptions(filtersArr[i]);\r\n\t\t\t\t\tfilterOptions.fnUpdateFilterValues(filtersArr[i]);\r\n\t\t\t\t\tself.options.fnUpdateFilterHead(filtersArr[i]);\r\n\t\t\t\t}\r\n\t\t\t\tif (self.priceWrapEl && self.filters.hasOwnProperty(self.priceParam)) {\r\n\t\t\t\t\tfilter = self.filters[self.priceParam];\r\n\t\t\t\t\tfilterOptions = self.getFilterOptions(filter);\r\n\t\t\t\t\tfilterOptions.fnUpdateFilterValues(filter, self.priceWrapEl);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tself.filterWrapEl.innerHTML = '';\r\n\t\t\t\tresultEl = self.options.fnGenerateFilters(filtersArr, self.options.fnGenerateFilterHead, function (filter) {\r\n\t\t\t\t\tfilterOptions = self.getFilterOptions(filter);\r\n\t\t\t\t\tself.options.fnUpdateFilterHead(filter);\r\n\t\t\t\t\treturn filterOptions.fnGenerateFilterBody(filter, filterOptions.fnChange);\r\n\t\t\t\t});\r\n\t\t\t\tself.filterWrapEl.appendChild(resultEl);\r\n\t\t\t\t\r\n\t\t\t\tif (self.priceWrapEl && self.filters.hasOwnProperty(self.priceParam)) {\r\n\t\t\t\t\tfilter = self.filters[self.priceParam];\r\n\t\t\t\t\tfilterOptions = self.getFilterOptions(filter);\r\n\t\t\t\t\tfilterBody = filterOptions.fnGenerateFilterBody(filter, filterOptions.fnChange);\r\n\t\t\t\t\twhile (self.priceWrapEl.firstChild) self.priceWrapEl.removeChild(self.priceWrapEl.firstChild);\r\n\t\t\t\t\tself.priceWrapEl.appendChild(filterBody);\r\n\t\t\t\t}\r\n\t\r\n\t\t\t\tEBContext.ajaxNav.ready(self.initPlugins);\r\n\t\t\t\tself.isRendered = true;\r\n\t\t\t\t\r\n\t\t\t}\r\n\t\t\tif(filtersArr.length > 0) self.filterWrapEl.style.display = '';\r\n\t\t\t\r\n\t\t\tlet sheet = self.filterStylesEl.sheet;\r\n\t\t\twhile(sheet && sheet.rules && sheet.rules.length) sheet.deleteRule(0);\r\n\t\t\tObject.entries(self.filterStyles).forEach(fs=>fs[1].forEach(fc=>{\r\n\t\t\t\tlet mainSel = '#'+self.filterWrapEl.parentElement.id+' .'+fs[0]+' ';\r\n\t\t\t\tlet sArr = fc.split('{');\r\n\t\t\t\tlet selectors = mainSel+sArr[0].split(',').join(','+mainSel);\r\n\t\t\t\tlet rules = sArr[1].trim();\r\n\t\t\t\tif(rules.charAt(rules.length-1)==='}') rules = rules.slice(0,-1);\r\n\t\t\t\tsheet.addRule(selectors, rules);\r\n\t\t\t}));\r\n\t\t\t\r\n\t\t\tif(self.filters[self.priceParam]) filtersArr.push(self.filters[self.priceParam]);\r\n\t\t\tself.options.fnGenerateActive(filtersArr);\r\n\t\t\tself.store();\r\n\t\t\tif('function' === typeof prepareToggleMore) [...self.filterWrapEl.querySelectorAll('button.show-more')].forEach(el=>prepareToggleMore(el));\r\n\t\t}\r\n\t\tEBContext.async.finish('paramFilter-submit');\r\n\t};\r\n\r\n\t// Updates the filters object according to new filterData, then calls render()\r\n\tthis.update = function (filterData) {\r\n\t\tdelete self.options.parameters;\r\n\t\tif(!filterData) return self.fetch();\r\n\t\tconsole.debug('%c - aktualizovat hodnoty param. filtru', 'background:red;color:white;padding:1em 2em');\r\n\t\tlet i, j, filter, filterOptions, multiUnit, multiUnitFallback, tmp, filtersKeys, \r\n\t\t\tdataKeys = Object.keys(filterData);\r\n\t\t\t\r\n\t\tfor (i = 0; i < dataKeys.length; i++) {\r\n\t\t\tfilter = filterData[dataKeys[i]];\r\n\r\n\t\t\tfilter.disabled = false;\r\n\t\t\tif (filter.filterTypeConfig && typeof filter.filterTypeConfig !== 'object') {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tfilter.filterTypeConfig = JSON.parse(filter.filterTypeConfig);\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\tfilter.filterTypeConfig = {};\r\n\t\t\t\t\tconsole.error('Error parsing filterTypeConfig: ', e);\r\n\t\t\t\t}\r\n\t\t\t} else { filter.filterTypeConfig = {}; }\r\n\t\t\tmultiUnit = ([...new Set(filter.values.map(val => val.unit))].length > 1);\r\n\t\t\tmultiUnitFallback = self.options.filterTypesFallback[filter.filterTypeKod];\r\n\t\t\tif(multiUnit && multiUnitFallback) filter.filterTypeKod = multiUnitFallback;\r\n\t\t\t\r\n\t\t\tif(filter.oid===self.priceParam){\r\n\t\t\t\tfilter.koef = EBContext.data.session.Cust_Kurz / EBContext.data.session.Cust_KurzPocet\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tfilterOptions = self.getFilterOptions(filter);\r\n\t\t\tfor (j = 0; j < filter.values.length; j++) {\r\n\t\t\t\tfilter.values[j].value = filterOptions.fnParseValue(filter.values[j].value);\r\n\t\t\t\tif(filter.type === 'RANGE' && typeof filter.values[j].value2 === 'number' && filter.values[j].value2 < filter.values[j].value){\r\n\t\t\t\t\ttmp = filter.values[j].value;\r\n\t\t\t\t\tfilter.values[j].value = filter.values[j].value2;\r\n\t\t\t\t\tfilter.values[j].value2 = tmp;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (!(self.filters.hasOwnProperty(filter.oid))) {\r\n\t\t\t\tfilterOptions.fnUpdate(filter);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfiltersKeys = Object.keys(self.filters);\r\n\t\tfor (i = 0; i < filtersKeys.length; i++) {\r\n\t\t\tfilter = self.filters[filtersKeys[i]];\r\n\t\t\tfilter.disabled = (dataKeys.indexOf(filtersKeys[i]) < 0);\r\n\t\t\tfilterOptions = self.getFilterOptions(filter);\r\n\t\t\tfilterOptions.fnUpdate(filterData[filtersKeys[i]] || filter);\r\n\t\t}\r\n\t\tself.isUpdated = true;\r\n\t\tself.render();\r\n\t};\r\n\r\n\t// Retrieve filters data from server according to actual products OID list (goodResult)\r\n\tthis.fetch = function (dataCallback) {\r\n\t\t// console.debug('%cParametric filter - fetch','color:white;background:black;padding:.5em;border:2px solid red');\r\n\t\tlet goodResult = self.resultParams.goodResult || '';\r\n\t\tconsole.log('%cNa�ten� parametr� a hodnot filtru pro produkty: %O', 'background: LightGreen', goodResult.split(';'));\r\n\t\t\r\n\t\tEBContext.async.start('paramFilter-fetch');\r\n\t\tEBContext.ajaxNav.ajaxCall('/update.asp?ebPageItemCall=' + self.options.resultBlockName + '&ebPageItemMethod=getParameterFiltr&path=' + self.options.resultPagePath, function (response) {\r\n\t\t\tlet filterData = {};\r\n\t\t\ttry {\r\n\t\t\t\tif (typeof response === 'string') response = response.replace(/\"selected\"\\s*:\\s*\"false\"/gi, '\"selected\":false').replace(/\"selected\"\\s*:\\s*\"true\"/gi, '\"selected\":true');\r\n\t\t\t\tfilterData = JSON.parse(response);\r\n\t\t\t} catch (err) {\r\n\t\t\t\tconsole.error('%cError parsing fetched JSON!', EBContext.options.consoleStyles.errorMsg);\r\n\t\t\t\tconsole.groupCollapsed('%cJS error', EBContext.options.consoleStyles.errorBtn);\r\n\t\t\t\tconsole.error(err);\r\n\t\t\t\tconsole.groupEnd();\r\n\t\t\t\tconsole.groupCollapsed('%cShow code', EBContext.options.consoleStyles.errorBtn);\r\n\t\t\t\tconsole.error('%c' + response, EBContext.options.consoleStyles.code);\r\n\t\t\t\tconsole.groupEnd();\r\n\t\t\t}\r\n\t\t\tif('function' === typeof dataCallback) filterData = dataCallback(filterData);\r\n\t\t\tself.update(filterData);\r\n\t\t\tEBContext.async.finish('paramFilter-fetch');\r\n\t\t}, 'GoodResult=' + goodResult, {loader: self.loader});\r\n\t};\r\n\r\n\t//initializes all JS plugins (search-selects, sliders, etc...)\r\n\tthis.initPlugins = function () {\r\n\t\trequire(['jquery', 'bootstrap-select'], (jQuery)=>{\r\n\t\t\tlet keys, i;\r\n\t\t\tkeys = Object.keys(self.selects);\r\n\t\t\tfor (i = 0; i < keys.length; i++) {\r\n\t\t\t\tjQuery('#' + self.selects[keys[i]].elementId).selectpicker(self.selects[keys[i]].options);\r\n\t\t\t}\r\n\t\t});\r\n\t\trequire(['jquery', 'ion-rangeslider'], (jQuery)=>{\r\n\t\t\tlet keys, i, sliderEl;\r\n\t\t\tkeys = Object.keys(self.sliders);\r\n\t\t\tfor (i = 0; i < keys.length; i++) {\r\n\t\t\t\tsliderEl = jQuery('#' + self.sliders[keys[i]].elementId);\r\n\t\t\t\tsliderEl.ionRangeSlider(self.sliders[keys[i]].options);\r\n\t\t\t\tself.sliders[keys[i]].instanceObj = sliderEl.data('ionRangeSlider');\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\t// returns filters string to be send in postData\r\n\tthis.stringify = function () {\r\n\t\tlet stringifiedFilters = [],\r\n\t\t\tfiltersKeys = Object.keys(self.filters),\r\n\t\t\tfilter, filterOptions, i;\r\n\r\n\t\tfor (i = 0; i < filtersKeys.length; i++) {\r\n\t\t\tfilter = self.filters[filtersKeys[i]];\r\n\t\t\tfilterOptions = self.getFilterOptions(filter);\r\n\t\t\tstringifiedFilters.push(filterOptions.fnStringify(filter));\r\n\t\t}\r\n\t\treturn stringifiedFilters.join('');\r\n\t};\r\n\r\n\t// saves filter data to history object\r\n\tthis.store = function (override) {\r\n\t\tlet updateObj = {\r\n\t\t\tfilters: self.filters,\r\n\t\t\topen: self.isOpen,\r\n\t\t\tfilterStr: self.filterStr\r\n\t\t};\r\n\t\tif(override){\r\n\t\t\tEBContext.utils.setObj(EBContext, [\"ajaxNav\", \"currentState\", \"pageData\", \"paramFilter\"], updateObj);\r\n\t\t} else {\r\n\t\t\t// console.debug('%cParametric filter - store','color:white;background:black;padding:.5em;border:2px solid red');\r\n\t\t\tEBContext.utils.extendObj(false, EBContext.ajaxNav.currentState, {\r\n\t\t\t\tpageData: {\r\n\t\t\t\t\tparamFilter: updateObj\r\n\t\t\t\t},\r\n\t\t\t\tprocessPostData: 0\r\n\t\t\t});\r\n\t\t}\r\n\t\tEBContext.ajaxNav.saveState();\r\n\t};\r\n\r\n\t//submits parametric filter\r\n\tthis.submit = function (reload, url) {\r\n\t\tconsole.debug('%c - odeslat param. filtr (i s hodnotami ext. filtru)', 'background:red;color:white;padding:1em 2em');\r\n\t\treload = reload || false;\r\n\t\tEBContext.async.start('paramFilter-submit');\r\n\t\tlet urlParams = {}, postParams = {}, \r\n\t\t\tform = document.getElementById(self.options.extendedFilterId);\r\n\r\n\t\tif (window.history.state.postData){\r\n\t\t\tpostParams = EBContext.utils.paramsStrToObj(window.history.state.postData, true);\r\n\t\t}\r\n\t\tif (!reload){\r\n\t\t\tif (self.isOpen && form){\r\n\t\t\t\tif(form.method && form.method.toString().toLowerCase() === 'post'){\r\n\t\t\t\t\tpostParams = EBContext.utils.extendObj( postParams, EBContext.utils.serializeForm(form, true) );\r\n\t\t\t\t} else {\r\n\t\t\t\t\turlParams = EBContext.utils.serializeForm(form, true);\r\n\t\t\t\t}\r\n\t\t\t\tEBContext.ajaxNav.currentState.savedElements = EBContext.ajaxNav.createElementsState(self.filterWrapEl.parentElement);\r\n\t\t\t}\r\n\t\t\turlParams.page = '1';\t\r\n\t\t\tself.isUpdated = false;\r\n\t\t}\r\n\t\tself.filterStr = self.stringify();\r\n\t\tpostParams.params = self.filterStr;\r\n\t\tself.store();\r\n\t\turl = EBContext.utils.extendURL(url, urlParams);\r\n\t\tEBContext.ajaxNav.currentState.postData = EBContext.utils.paramsObjToStr(postParams);\r\n\t\tEBContext.ajaxNav.saveState();\r\n\t\tEBContext.ajaxNav.navigationTrigger(EBContext.utils.extendURL(null, (url+'?').split('?')[1]), null, postParams, {\r\n\t\t\treload: self.options.reloadBlock,\r\n\t\t\tnavigation: false,\r\n\t\t\tscrollTop: '',\r\n\t\t\tupdateURL: true,\r\n\t\t\textendQS: true\r\n\t\t});\r\n\t\treturn true;\r\n\t};\r\n\t\r\n\tthis.reset();\r\n\treturn this;\r\n};"]}