From cd5d0a80be80699eb5aa50e28492facdd4679d2d Mon Sep 17 00:00:00 2001 From: koalyptus Date: Sat, 9 Jun 2018 22:30:35 +1000 Subject: [PATCH] Delete tf-0-c51522970c2299de9dd8.js.map --- tablefilter/tf-0-c51522970c2299de9dd8.js.map | 1 - 1 file changed, 1 deletion(-) delete mode 100644 tablefilter/tf-0-c51522970c2299de9dd8.js.map diff --git a/tablefilter/tf-0-c51522970c2299de9dd8.js.map b/tablefilter/tf-0-c51522970c2299de9dd8.js.map deleted file mode 100644 index 2997c94a..00000000 --- a/tablefilter/tf-0-c51522970c2299de9dd8.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src sync ^\\.\\/.*$","webpack:///./src/extensions/sort/adapterSortabletable.js","webpack:///./src/extensions/advancedGrid/adapterEzEditTable.js","webpack:///./src/extensions/sort/sort.js","webpack:///./src/extensions/filtersVisibility/filtersVisibility.js","webpack:///./src/extensions/colsVisibility/colsVisibility.js","webpack:///./src/extensions/colOps/colOps.js","webpack:///./src/extensions/advancedGrid/advancedGrid.js","webpack:///./libs/sortabletable.js","webpack:///./node_modules/script-loader/addScript.js","webpack:///./libs/sortabletable.js?8203","webpack:///./node_modules/format-number/index.js"],"names":["map","./array","./array.js","./const","./const.js","./cookie","./cookie.js","./dom","./dom.js","./emitter","./emitter.js","./event","./event.js","./extensions/advancedGrid/adapterEzEditTable","./extensions/advancedGrid/adapterEzEditTable.js","./extensions/advancedGrid/advancedGrid","./extensions/advancedGrid/advancedGrid.js","./extensions/colOps/colOps","./extensions/colOps/colOps.js","./extensions/colsVisibility/colsVisibility","./extensions/colsVisibility/colsVisibility.js","./extensions/filtersVisibility/filtersVisibility","./extensions/filtersVisibility/filtersVisibility.js","./extensions/sort/adapterSortabletable","./extensions/sort/adapterSortabletable.js","./extensions/sort/sort","./extensions/sort/sort.js","./feature","./feature.js","./modules/alternateRows","./modules/alternateRows.js","./modules/baseDropdown","./modules/baseDropdown.js","./modules/checkList","./modules/checkList.js","./modules/clearButton","./modules/clearButton.js","./modules/dateType","./modules/dateType.js","./modules/dropdown","./modules/dropdown.js","./modules/gridLayout","./modules/gridLayout.js","./modules/hash","./modules/hash.js","./modules/help","./modules/help.js","./modules/highlightKeywords","./modules/highlightKeywords.js","./modules/loader","./modules/loader.js","./modules/markActiveColumns","./modules/markActiveColumns.js","./modules/noResults","./modules/noResults.js","./modules/paging","./modules/paging.js","./modules/popupFilter","./modules/popupFilter.js","./modules/rowsCounter","./modules/rowsCounter.js","./modules/state","./modules/state.js","./modules/statusBar","./modules/statusBar.js","./modules/storage","./modules/storage.js","./modules/toolbar","./modules/toolbar.js","./number","./number.js","./root","./root.js","./settings","./settings.js","./sort","./sort.js","./string","./string.js","./tablefilter","./tablefilter.js","./types","./types.js","webpackContext","req","id","webpackContextResolve","__webpack_require__","e","Error","code","keys","Object","resolve","module","exports","_feature","_types","_dom","_event","_number","_const","_settings","AdapterSortableTable","tf","opts","_classCallCheck","this","_this","_possibleConstructorReturn","__proto__","getPrototypeOf","call","name","desc","defaultsStr","description","sorted","sortTypes","defaultsArr","types","colTypes","sortColAtStart","sort_col_at_start","asyncSort","Boolean","async_sort","triggerIds","trigger_ids","imgPath","images_path","themesPath","imgBlank","image_blank","imgClassName","image_class_name","imgAscClassName","image_asc_class_name","imgDescClassName","image_desc_class_name","customKey","custom_key","onSortLoaded","defaultsFn","on_sort_loaded","EMPTY_FN","onBeforeSort","on_before_sort","onAfterSort","on_after_sort","stt","enable","_this2","initialized","adpt","isUndef","SortableTable","emitter","emit","overrideSortableTable","setSortTypes","onbeforesort","sortColumn","paging","feature","disable","onsort","paginator","getValidRows","setPage","getPage","descending","sort","on","colIdx","sortByColumnIndex","prototype","headerOnclick","evt","el","target","srcElement","tagName","CELL_TAG","HEADER_TAG","parentNode","msie","getCellIndex","cellIndex","oTd","cells","l","length","i","initHeader","oSortTypes","tHead","gridLayout","headTbl","headersRow","rows","img","c","style","cursor","createElm","appendChild","setAttribute","addEvt","_headerOnclick","_sortType","updateHeaderArrows","triggers","j","push","elm","cell","cellAttr","getAttribute","lastChild","nodeName","toLowerCase","className","getRowValue","oRow","sType","nColumn","sortTypeInfo","_sortTypeInfo","s","getInnerText","getValueFromString","oNode","getText","_len","arguments","args","Array","_key","caster","sorter","addSortType","_this3","_sortTypes","eachCol","colType","isObj","type","DATE","_addDateType","FORMATTED_NUMBER","decimal","decimalSeparator","_addNumberType","toUpperCase","STRING","IP_ADDRESS","ipAddress","sortIP","dom","trigger","indexOf","colIndex","dateType","locale","getOptions","value","parsedDate","parse","isNaN","Date","_this4","off","destroy","ids","getFiltersId","idx","header","getHeaderElement","tag","removeChild","vals","split","x","val","join","a","b","aa","bb","_root","AdapterEzEditTable","cfg","filename","vendorPath","vendor_path","loadStylesheet","load_stylesheet","stylesheet","stylesheetName","stylesheet_name","scroll_into_view","_ezEditTable","root","EditTable","_setAdvancedGrid","path","import","isImported","_toggleForInputFilter","startRow","undefined","refRow","base_path","basePath","editable","selectable","selection","default_selection","active_cell_css","_lastValidRowIndex","_lastRowIndex","onAfterSelection","et","selectedElm","slc","Selection","doSelect","nextRowIndex","defaultSelection","SelectRowByIndex","ClearSelections","row","SelectCell","validRowsIndex","getRowsNb","r","scrollIntoView","getCellsNb","tblCont","scrollLeft","validIndexes","validIdxLen","keyCode","Event","GetKey","isRowValid","rowIndex","d","pageLength","nbRowsPerPage","calcRowIndex","v","onBeforeSelection","nbPages","pagingEndRow","parseInt","startPagingRow","currentPageNb","onAfterChangePage","extension","GetActiveRow","GetActiveCell","fnB","on_before_selected_row","fnA","on_after_selected_row","fnD","on_before_selected_cell","fnC","on_after_selected_cell","fnE","on_added_dom_row","nbFilterableRows","reset","alternateRows","init","actions","fnF","on_after_submit","Init","INSTANTIATION_ERROR","ezEditTable","Set","Editable","Remove","getActiveFilterId","getColumnIndexFromFilterId","getFilterType","filterType","toggle","_adapterSortabletable","_toolbar","FiltersVisibility","f","icnExpand","expand_icon_name","icnCollapse","collapse_icon_name","contEl","btnEl","icnExpandHtml","icnCollapseHtml","defaultText","targetId","target_id","enableIcon","defaultsBool","enable_icon","btnText","btn_text","collapseBtnHtml","expandBtnHtml","btnHtml","btn_html","btnCssClass","btn_css_class","contCssClass","cont_css_class","filtersRowIndex","defaultsNb","filters_row_index","getFiltersRowIndex","visibleAtStart","visible_at_start","toolbarPosition","toolbar_position","RIGHT","onBeforeShow","on_before_show","onAfterShow","on_after_show","onBeforeHide","on_before_hide","onAfterHide","on_after_hide","getStylePath","isNull","buildUI","visible","show","span","targetEl","container","firstChild","insertBefore","btn","innerHTML","title","isDisplayed","display","fltRow","removeElm","ColsVisibility","config","spanEl","tickToHide","tick_to_hide","manager","headersTbl","headers_table","headersIndex","headers_index","contElTgtId","container_target_id","headersText","headers_text","btnTgtId","btn_target_id","btnCloseText","btn_close_text","btnCloseHtml","btn_close_html","btnCloseCssClass","btn_close_css_class","spanCssClass","span_css_class","listCssClass","list_css_class","listItemCssClass","checklist_item_css_class","listSlcItemCssClass","checklist_selected_item_css_class","text","atStart","at_start","enableHover","enable_hover","enableTickAll","enable_tick_all","tickAllText","tick_all_text","hiddenCols","boundMouseup","onLoaded","on_loaded","onBeforeOpen","on_before_open","onAfterOpen","on_after_open","onBeforeClose","on_before_close","onAfterClose","on_after_close","onBeforeColHidden","on_before_col_hidden","onAfterColHidden","on_after_col_hidden","onBeforeColDisplayed","on_before_col_displayed","onAfterColDisplayed","on_after_col_displayed","targetElm","targetEvt","removeEvt","contDisplay","NONE","lbl","li","isChecked","checked","addClass","removeClass","hide","setHidden","hideCol","buildBtn","buildManager","onMouseup","bind","_hideAtStart","colVisEl","extNameLabel","ul","tbl","headerIndex","getHeadersRowIndex","headerRow","createCheckItem","check","h","itm","click","cellText","_getHeaderText","liElm","checkItem","p","_hideElements","itemIndex","splice","isColHidden","showCol","_this5","hasChildNodes","childNodes","n","nodeType","nodeValue","_hideCells","_hideCol","colElms","_this6","forEach","_sort","_formatNumber","EVENTS","ColOps","onBeforeOperation","on_before_operation","onAfterOperation","on_after_operation","labelIds","colIndexes","col","operations","operation","outputTypes","write_method","formatResults","format_result","totRowIndexes","tot_row_index","excludeRows","exclude_row","decimalPrecisions","decimal_precision","calcAll","isInitialized","colOperations","uIndexes","nbCols","colValues","u","getVisibleColumnData","curValues","result","precisions","labels","writeType","formatResult","k","isArray","configureFormat","Number","calc","writeResult","totRow","precision","sortColumnValues","numSortAsc","calcMean","calcSum","calcMin","calcMax","calcMedian","calcQ1","calcQ3","isEmpty","toFixed","values","reduce","y","Math","max","apply","min","nbValues","aux","floor","posa","posb","label","format","labelElm","isFinite","_formatNumber2","default","oldNode","txtNode","createText","replaceChild","hasType","thousands","integerSeparator","_adapterEzEditTable","src","log","error","console","execScript","attachEvent","addEventListener","eval","formatter","options","negativeType","negative","negativeLeftSymbol","negativeRightSymbol","number","overrideOptions","output","charAt","replace","negativeLeftOut","noUnits","prefix","round","places","decim","slice","substr","leadingzeros","substring","truncate","padLeft","padding","buf","padRight","noSeparator","separator","rgx","test","addDecimalSeparators","decimalsSeparator","addIntegerSeparators","negativeRightOut","suffix","unformat","allowedSeparators","newNumber","negativeOut","separate"],"mappings":"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","file":"tf-0-c51522970c2299de9dd8.js","sourcesContent":["var map = {\n\t\"./array\": 69,\n\t\"./array.js\": 69,\n\t\"./const\": 15,\n\t\"./const.js\": 15,\n\t\"./cookie\": 120,\n\t\"./cookie.js\": 120,\n\t\"./dom\": 10,\n\t\"./dom.js\": 10,\n\t\"./emitter\": 127,\n\t\"./emitter.js\": 127,\n\t\"./event\": 19,\n\t\"./event.js\": 19,\n\t\"./extensions/advancedGrid/adapterEzEditTable\": 442,\n\t\"./extensions/advancedGrid/adapterEzEditTable.js\": 442,\n\t\"./extensions/advancedGrid/advancedGrid\": 447,\n\t\"./extensions/advancedGrid/advancedGrid.js\": 447,\n\t\"./extensions/colOps/colOps\": 446,\n\t\"./extensions/colOps/colOps.js\": 446,\n\t\"./extensions/colsVisibility/colsVisibility\": 445,\n\t\"./extensions/colsVisibility/colsVisibility.js\": 445,\n\t\"./extensions/filtersVisibility/filtersVisibility\": 444,\n\t\"./extensions/filtersVisibility/filtersVisibility.js\": 444,\n\t\"./extensions/sort/adapterSortabletable\": 441,\n\t\"./extensions/sort/adapterSortabletable.js\": 441,\n\t\"./extensions/sort/sort\": 443,\n\t\"./extensions/sort/sort.js\": 443,\n\t\"./feature\": 11,\n\t\"./feature.js\": 11,\n\t\"./modules/alternateRows\": 111,\n\t\"./modules/alternateRows.js\": 111,\n\t\"./modules/baseDropdown\": 70,\n\t\"./modules/baseDropdown.js\": 70,\n\t\"./modules/checkList\": 108,\n\t\"./modules/checkList.js\": 108,\n\t\"./modules/clearButton\": 112,\n\t\"./modules/clearButton.js\": 112,\n\t\"./modules/dateType\": 125,\n\t\"./modules/dateType.js\": 125,\n\t\"./modules/dropdown\": 126,\n\t\"./modules/dropdown.js\": 126,\n\t\"./modules/gridLayout\": 119,\n\t\"./modules/gridLayout.js\": 119,\n\t\"./modules/hash\": 122,\n\t\"./modules/hash.js\": 122,\n\t\"./modules/help\": 124,\n\t\"./modules/help.js\": 124,\n\t\"./modules/highlightKeywords\": 117,\n\t\"./modules/highlightKeywords.js\": 117,\n\t\"./modules/loader\": 118,\n\t\"./modules/loader.js\": 118,\n\t\"./modules/markActiveColumns\": 115,\n\t\"./modules/markActiveColumns.js\": 115,\n\t\"./modules/noResults\": 110,\n\t\"./modules/noResults.js\": 110,\n\t\"./modules/paging\": 109,\n\t\"./modules/paging.js\": 109,\n\t\"./modules/popupFilter\": 116,\n\t\"./modules/popupFilter.js\": 116,\n\t\"./modules/rowsCounter\": 114,\n\t\"./modules/rowsCounter.js\": 114,\n\t\"./modules/state\": 123,\n\t\"./modules/state.js\": 123,\n\t\"./modules/statusBar\": 113,\n\t\"./modules/statusBar.js\": 113,\n\t\"./modules/storage\": 121,\n\t\"./modules/storage.js\": 121,\n\t\"./modules/toolbar\": 33,\n\t\"./modules/toolbar.js\": 33,\n\t\"./number\": 68,\n\t\"./number.js\": 68,\n\t\"./root\": 16,\n\t\"./root.js\": 16,\n\t\"./settings\": 7,\n\t\"./settings.js\": 7,\n\t\"./sort\": 107,\n\t\"./sort.js\": 107,\n\t\"./string\": 21,\n\t\"./string.js\": 21,\n\t\"./tablefilter\": 128,\n\t\"./tablefilter.js\": 128,\n\t\"./types\": 3,\n\t\"./types.js\": 3\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\tvar module = __webpack_require__(id);\n\treturn module;\n}\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) { // check for number or string\n\t\tvar e = new Error('Cannot find module \"' + req + '\".');\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn id;\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 440;","import {Feature} from '../../feature';\nimport {isUndef, isObj, EMPTY_FN} from '../../types';\nimport {createElm, elm, getText, tag} from '../../dom';\nimport {addEvt} from '../../event';\nimport {parse as parseNb} from '../../number';\nimport {\n NONE, CELL_TAG, HEADER_TAG, STRING, NUMBER, DATE, FORMATTED_NUMBER,\n IP_ADDRESS\n} from '../../const';\nimport {defaultsStr, defaultsFn, defaultsArr} from '../../settings';\n\n/**\n * SortableTable Adapter module\n */\nexport default class AdapterSortableTable extends Feature {\n\n /**\n * Creates an instance of AdapterSortableTable\n * @param {TableFilter} tf TableFilter instance\n * @param {Object} opts Configuration object\n */\n constructor(tf, opts) {\n super(tf, opts.name);\n\n /**\n * Module name\n * @type {String}\n */\n this.name = opts.name;\n\n /**\n * Module description\n * @type {String}\n */\n this.desc = defaultsStr(opts.description, 'Sortable table');\n\n /**\n * Indicate whether table previously sorted\n * @type {Boolean}\n * @private\n */\n this.sorted = false;\n\n /**\n * List of sort type per column basis\n * @type {Array}\n */\n this.sortTypes = defaultsArr(opts.types, tf.colTypes);\n\n /**\n * Column to be sorted at initialization, ie:\n * sort_col_at_start: [1, true]\n * @type {Array}\n */\n this.sortColAtStart = defaultsArr(opts.sort_col_at_start, null);\n\n /**\n * Enable asynchronous sort, if triggers are external\n * @type {Boolean}\n */\n this.asyncSort = Boolean(opts.async_sort);\n\n /**\n * List of element IDs triggering sort on a per column basis\n * @type {Array}\n */\n this.triggerIds = defaultsArr(opts.trigger_ids, []);\n\n // edit .sort-arrow.descending / .sort-arrow.ascending in\n // tablefilter.css to reflect any path change\n /**\n * Path to images\n * @type {String}\n */\n this.imgPath = defaultsStr(opts.images_path, tf.themesPath);\n\n /**\n * Blank image file name\n * @type {String}\n */\n this.imgBlank = defaultsStr(opts.image_blank, 'blank.png');\n\n /**\n * Css class for sort indicator image\n * @type {String}\n */\n this.imgClassName = defaultsStr(opts.image_class_name, 'sort-arrow');\n\n /**\n * Css class for ascending sort indicator image\n * @type {String}\n */\n this.imgAscClassName = defaultsStr(opts.image_asc_class_name,\n 'ascending');\n\n /**\n * Css class for descending sort indicator image\n * @type {String}\n */\n this.imgDescClassName = defaultsStr(opts.image_desc_class_name,\n 'descending');\n\n /**\n * Cell attribute key storing custom value used for sorting\n * @type {String}\n */\n this.customKey = defaultsStr(opts.custom_key, 'data-tf-sortKey');\n\n /**\n * Callback fired when sort extension is instanciated\n * @type {Function}\n */\n this.onSortLoaded = defaultsFn(opts.on_sort_loaded, EMPTY_FN);\n\n /**\n * Callback fired before a table column is sorted\n * @type {Function}\n */\n this.onBeforeSort = defaultsFn(opts.on_before_sort, EMPTY_FN);\n\n /**\n * Callback fired after a table column is sorted\n * @type {Function}\n */\n this.onAfterSort = defaultsFn(opts.on_after_sort, EMPTY_FN);\n\n /**\n * SortableTable instance\n * @private\n */\n this.stt = null;\n\n this.enable();\n }\n\n /**\n * Initializes AdapterSortableTable instance\n */\n init() {\n if (this.initialized) {\n return;\n }\n let tf = this.tf;\n let adpt = this;\n\n // SortableTable class sanity check (sortabletable.js)\n if (isUndef(SortableTable)) {\n throw new Error('SortableTable class not found.');\n }\n\n // Add any date format if needed\n this.emitter.emit('add-date-type-formats', this.tf, this.sortTypes);\n\n this.overrideSortableTable();\n this.setSortTypes();\n\n this.onSortLoaded(tf, this);\n\n /*** SortableTable callbacks ***/\n this.stt.onbeforesort = function () {\n adpt.onBeforeSort(tf, adpt.stt.sortColumn);\n\n /*** sort behaviour for paging ***/\n if (tf.paging) {\n tf.feature('paging').disable();\n }\n };\n\n this.stt.onsort = function () {\n adpt.sorted = true;\n\n //sort behaviour for paging\n if (tf.paging) {\n let paginator = tf.feature('paging');\n // recalculate valid rows index as sorting may have change it\n tf.getValidRows(true);\n paginator.enable();\n paginator.setPage(paginator.getPage());\n }\n\n adpt.onAfterSort(tf, adpt.stt.sortColumn, adpt.stt.descending);\n adpt.emitter.emit('column-sorted', tf, adpt.stt.sortColumn,\n adpt.stt.descending);\n };\n\n // Column sort at start\n let sortColAtStart = adpt.sortColAtStart;\n if (sortColAtStart) {\n this.stt.sort(sortColAtStart[0], sortColAtStart[1]);\n }\n\n this.emitter.on(['sort'],\n (tf, colIdx, desc) => this.sortByColumnIndex(colIdx, desc));\n\n /** @inherited */\n this.initialized = true;\n\n this.emitter.emit('sort-initialized', tf, this);\n }\n\n /**\n * Sort specified column\n * @param {Number} colIdx Column index\n * @param {Boolean} desc Optional: descending manner\n */\n sortByColumnIndex(colIdx, desc) {\n this.stt.sort(colIdx, desc);\n }\n\n /**\n * Set SortableTable overrides for TableFilter integration\n */\n overrideSortableTable() {\n let adpt = this,\n tf = this.tf;\n\n /**\n * Overrides headerOnclick method in order to handle th event\n * @param {Object} e [description]\n */\n SortableTable.prototype.headerOnclick = function (evt) {\n if (!adpt.initialized) {\n return;\n }\n\n // find Header element\n let el = evt.target || evt.srcElement;\n\n while (el.tagName !== CELL_TAG && el.tagName !== HEADER_TAG) {\n el = el.parentNode;\n }\n\n this.sort(\n SortableTable.msie ?\n SortableTable.getCellIndex(el) : el.cellIndex\n );\n };\n\n /**\n * Overrides getCellIndex IE returns wrong cellIndex when columns are\n * hidden\n * @param {Object} oTd TD element\n * @return {Number} Cell index\n */\n SortableTable.getCellIndex = function (oTd) {\n let cells = oTd.parentNode.cells,\n l = cells.length, i;\n for (i = 0; cells[i] !== oTd && i < l; i++) { }\n return i;\n };\n\n /**\n * Overrides initHeader in order to handle filters row position\n * @param {Array} oSortTypes\n */\n SortableTable.prototype.initHeader = function (oSortTypes) {\n let stt = this;\n if (!stt.tHead) {\n if (tf.gridLayout) {\n stt.tHead = tf.feature('gridLayout').headTbl.tHead;\n } else {\n return;\n }\n }\n\n stt.headersRow = tf.headersRow;\n let cells = stt.tHead.rows[stt.headersRow].cells;\n stt.sortTypes = oSortTypes || [];\n let l = cells.length;\n let img, c;\n\n for (let i = 0; i < l; i++) {\n c = cells[i];\n if (stt.sortTypes[i] !== null && stt.sortTypes[i] !== 'None') {\n c.style.cursor = 'pointer';\n img = createElm('img',\n ['src', adpt.imgPath + adpt.imgBlank]);\n c.appendChild(img);\n if (stt.sortTypes[i] !== null) {\n c.setAttribute('_sortType', stt.sortTypes[i]);\n }\n addEvt(c, 'click', stt._headerOnclick);\n } else {\n c.setAttribute('_sortType', oSortTypes[i]);\n c._sortType = 'None';\n }\n }\n stt.updateHeaderArrows();\n };\n\n /**\n * Overrides updateHeaderArrows in order to handle arrows indicators\n */\n SortableTable.prototype.updateHeaderArrows = function () {\n let stt = this;\n let cells, l, img;\n\n // external headers\n if (adpt.asyncSort && adpt.triggerIds.length > 0) {\n let triggers = adpt.triggerIds;\n cells = [];\n l = triggers.length;\n for (let j = 0; j < l; j++) {\n cells.push(elm(triggers[j]));\n }\n } else {\n if (!this.tHead) {\n return;\n }\n cells = stt.tHead.rows[stt.headersRow].cells;\n l = cells.length;\n }\n for (let i = 0; i < l; i++) {\n let cell = cells[i];\n if (!cell) {\n continue;\n }\n let cellAttr = cell.getAttribute('_sortType');\n if (cellAttr !== null && cellAttr !== 'None') {\n img = cell.lastChild || cell;\n if (img.nodeName.toLowerCase() !== 'img') {\n img = createElm('img',\n ['src', adpt.imgPath + adpt.imgBlank]);\n cell.appendChild(img);\n }\n if (i === stt.sortColumn) {\n img.className = adpt.imgClassName + ' ' +\n (this.descending ?\n adpt.imgDescClassName :\n adpt.imgAscClassName);\n } else {\n img.className = adpt.imgClassName;\n }\n }\n }\n };\n\n /**\n * Overrides getRowValue for custom key value feature\n * @param {Object} oRow Row element\n * @param {String} sType\n * @param {Number} nColumn\n * @return {String}\n */\n SortableTable.prototype.getRowValue = function (oRow, sType, nColumn) {\n let stt = this;\n // if we have defined a custom getRowValue use that\n let sortTypeInfo = stt._sortTypeInfo[sType];\n if (sortTypeInfo && sortTypeInfo.getRowValue) {\n return sortTypeInfo.getRowValue(oRow, nColumn);\n }\n let c = oRow.cells[nColumn];\n let s = SortableTable.getInnerText(c);\n return stt.getValueFromString(s, sType);\n };\n\n /**\n * Overrides getInnerText in order to avoid Firefox unexpected sorting\n * behaviour with untrimmed text elements\n * @param {Object} oNode DOM element\n * @return {String} DOM element inner text\n */\n SortableTable.getInnerText = function (oNode) {\n if (!oNode) {\n return;\n }\n if (oNode.getAttribute(adpt.customKey)) {\n return oNode.getAttribute(adpt.customKey);\n } else {\n return getText(oNode);\n }\n };\n }\n\n /**\n * Adds a sort type\n */\n addSortType(...args) {\n // Extract the arguments\n let [id, caster, sorter] = args;\n SortableTable.prototype.addSortType(id, caster, sorter);\n }\n\n /**\n * Sets the sort types on a column basis\n * @private\n */\n setSortTypes() {\n let tf = this.tf,\n sortTypes = this.sortTypes,\n _sortTypes = [];\n\n tf.eachCol((i) => {\n let colType;\n if (sortTypes[i]) {\n colType = sortTypes[i];\n if (isObj(colType)) {\n if (colType.type === DATE) {\n colType = this._addDateType(i, sortTypes);\n }\n else if (colType.type === FORMATTED_NUMBER) {\n let decimal = colType.decimal || tf.decimalSeparator;\n colType = this._addNumberType(i, decimal);\n }\n } else {\n colType = colType.toLowerCase();\n if (colType === DATE) {\n colType = this._addDateType(i, sortTypes);\n }\n else if (colType === FORMATTED_NUMBER ||\n colType === NUMBER) {\n colType = this._addNumberType(i, tf.decimalSeparator);\n }\n else if (colType === NONE) {\n // TODO: normalise 'none' vs 'None'\n colType = 'None';\n }\n }\n } else {\n colType = STRING;\n }\n _sortTypes.push(colType);\n });\n\n //Public TF method to add sort type\n\n //Custom sort types\n this.addSortType('caseinsensitivestring', SortableTable.toUpperCase);\n this.addSortType(STRING);\n this.addSortType(IP_ADDRESS, ipAddress, sortIP);\n\n this.stt = new SortableTable(tf.dom(), _sortTypes);\n\n /*** external table headers adapter ***/\n if (this.asyncSort && this.triggerIds.length > 0) {\n let triggers = this.triggerIds;\n for (let j = 0; j < triggers.length; j++) {\n if (triggers[j] === null) {\n continue;\n }\n let trigger = elm(triggers[j]);\n if (trigger) {\n trigger.style.cursor = 'pointer';\n\n addEvt(trigger, 'click', (evt) => {\n let elm = evt.target;\n if (!this.tf.sort) {\n return;\n }\n this.stt.asyncSort(triggers.indexOf(elm.id));\n });\n trigger.setAttribute('_sortType', _sortTypes[j]);\n }\n }\n }\n }\n\n _addDateType(colIndex, types) {\n let tf = this.tf;\n let dateType = tf.feature('dateType');\n let locale = dateType.getOptions(colIndex, types).locale || tf.locale;\n let colType = `${DATE}-${locale}`;\n\n this.addSortType(colType, (value) => {\n let parsedDate = dateType.parse(value, locale);\n // Invalid date defaults to Wed Feb 04 -768 11:00:00\n return isNaN(+parsedDate) ? new Date(-86400000000000) : parsedDate;\n });\n return colType;\n }\n\n _addNumberType(colIndex, decimal) {\n let colType = `${FORMATTED_NUMBER}${decimal === '.' ? '' : '-custom'}`;\n\n this.addSortType(colType, (value) => {\n return parseNb(value, decimal);\n });\n return colType;\n }\n\n /**\n * Remove extension\n */\n destroy() {\n if (!this.initialized) {\n return;\n }\n let tf = this.tf;\n this.emitter.off(['sort'],\n (tf, colIdx, desc) => this.sortByColumnIndex(colIdx, desc));\n this.sorted = false;\n this.stt.destroy();\n\n let ids = tf.getFiltersId();\n for (let idx = 0; idx < ids.length; idx++) {\n let header = tf.getHeaderElement(idx);\n let img = tag(header, 'img');\n\n if (img.length === 1) {\n header.removeChild(img[0]);\n }\n }\n this.initialized = false;\n }\n\n}\n\n//Converters\nfunction ipAddress(value) {\n let vals = value.split('.');\n for (let x in vals) {\n let val = vals[x];\n while (3 > val.length) {\n val = '0' + val;\n }\n vals[x] = val;\n }\n return vals.join('.');\n}\n\nfunction sortIP(a, b) {\n let aa = ipAddress(a.value.toLowerCase());\n let bb = ipAddress(b.value.toLowerCase());\n if (aa === bb) {\n return 0;\n } else if (aa < bb) {\n return -1;\n } else {\n return 1;\n }\n}\n","import {Feature} from '../../feature';\nimport {tag} from '../../dom';\nimport {INPUT} from '../../const';\nimport {defaultsStr} from '../../settings';\nimport {root} from '../../root';\n\nconst INSTANTIATION_ERROR = `Failed to instantiate EditTable object.\n \\n\"ezEditTable\" dependency not found.`;\n\n/**\n * Adapter module for ezEditTable, an external library providing advanced\n * grid features (selection and edition):\n * http://codecanyon.net/item/ezedittable-enhance-html-tables/2425123?ref=koalyptus\n */\nexport default class AdapterEzEditTable extends Feature {\n\n /**\n * Creates an instance of AdapterEzEditTable\n *\n * @param {TableFilter} tf TableFilter instance\n * @param {Object} cfg Configuration options for ezEditTable library\n */\n constructor(tf, cfg) {\n super(tf, cfg.name);\n\n /**\n * Module description\n * @type {String}\n */\n this.desc = defaultsStr(cfg.description, 'ezEditTable adapter');\n\n /**\n * Filename of ezEditTable library\n * @type {String}\n */\n this.filename = defaultsStr(cfg.filename, 'ezEditTable.js');\n\n /**\n * Path to ezEditTable library\n * @type {String}\n */\n this.vendorPath = cfg.vendor_path;\n\n /**\n * Load ezEditTable stylesheet\n * @type {Boolean}\n */\n this.loadStylesheet = Boolean(cfg.load_stylesheet);\n\n /**\n * Path to ezEditTable stylesheet\n * @type {String}\n */\n this.stylesheet = defaultsStr(cfg.stylesheet,\n this.vendorPath + 'ezEditTable.css');\n\n /**\n * Name of ezEditTable stylesheet\n * @type {String}\n */\n this.stylesheetName = defaultsStr(cfg.stylesheet_name,\n 'ezEditTableCss');\n\n // Enable the ezEditTable's scroll into view behaviour if grid layout on\n cfg.scroll_into_view = cfg.scroll_into_view === false ?\n false : tf.gridLayout;\n\n /**\n * ezEditTable instance\n * @type {EditTable}\n * @private\n */\n this._ezEditTable = null;\n\n /**\n * ezEditTable configuration\n * @private\n */\n this.cfg = cfg;\n\n this.enable();\n }\n\n /**\n * Conditionally load ezEditTable library and set advanced grid\n */\n init() {\n if (this.initialized) {\n return;\n }\n let tf = this.tf;\n if (root.EditTable) {\n this._setAdvancedGrid();\n } else {\n let path = this.vendorPath + this.filename;\n tf.import(this.filename, path, () => this._setAdvancedGrid());\n }\n if (this.loadStylesheet && !tf.isImported(this.stylesheet, 'link')) {\n tf.import(this.stylesheetName, this.stylesheet, null, 'link');\n }\n\n // TODO: hack to prevent ezEditTable enter key event hijaking.\n // Needs to be fixed in the vendor's library\n this.emitter.on(['filter-focus', 'filter-blur'],\n () => this._toggleForInputFilter());\n\n /**\n * @inherited\n */\n this.initialized = true;\n }\n\n /**\n * Instantiate ezEditTable component for advanced grid features\n * @private\n */\n _setAdvancedGrid() {\n let tf = this.tf;\n\n //start row for EditTable constructor needs to be calculated\n let startRow,\n cfg = this.cfg,\n thead = tag(tf.dom(), 'thead');\n\n //if thead exists and startRow not specified, startRow is calculated\n //automatically by EditTable\n if (thead.length > 0 && !cfg.startRow) {\n startRow = undefined;\n }\n //otherwise startRow config property if any or TableFilter refRow\n else {\n startRow = cfg.startRow || tf.refRow;\n }\n\n cfg.base_path = cfg.base_path || tf.basePath + 'ezEditTable/';\n let editable = cfg.editable;\n let selectable = cfg.selection;\n\n if (selectable) {\n cfg.default_selection = cfg.default_selection || 'row';\n }\n //CSS Styles\n cfg.active_cell_css = cfg.active_cell_css || 'ezETSelectedCell';\n\n let _lastValidRowIndex = 0;\n let _lastRowIndex = 0;\n\n if (selectable) {\n //Row navigation needs to be calculated according to TableFilter's\n //validRowsIndex array\n let onAfterSelection = function (et, selectedElm, e) {\n let slc = et.Selection;\n //Next valid filtered row needs to be selected\n let doSelect = function (nextRowIndex) {\n if (et.defaultSelection === 'row') {\n /* eslint-disable */\n slc.SelectRowByIndex(nextRowIndex);\n /* eslint-enable */\n } else {\n /* eslint-disable */\n et.ClearSelections();\n /* eslint-enable */\n let cellIndex = selectedElm.cellIndex,\n row = tf.dom().rows[nextRowIndex];\n if (et.defaultSelection === 'both') {\n /* eslint-disable */\n slc.SelectRowByIndex(nextRowIndex);\n /* eslint-enable */\n }\n if (row) {\n /* eslint-disable */\n slc.SelectCell(row.cells[cellIndex]);\n /* eslint-enable */\n }\n }\n //Table is filtered\n if (tf.validRowsIndex.length !== tf.getRowsNb()) {\n let r = tf.dom().rows[nextRowIndex];\n if (r) {\n r.scrollIntoView(false);\n }\n if (cell) {\n if (cell.cellIndex === (tf.getCellsNb() - 1) &&\n tf.gridLayout) {\n tf.tblCont.scrollLeft = 100000000;\n }\n else if (cell.cellIndex === 0 && tf.gridLayout) {\n tf.tblCont.scrollLeft = 0;\n } else {\n cell.scrollIntoView(false);\n }\n }\n }\n };\n\n //table is not filtered\n if (!tf.validRowsIndex) {\n return;\n }\n let validIndexes = tf.validRowsIndex,\n validIdxLen = validIndexes.length,\n row = et.defaultSelection !== 'row' ?\n selectedElm.parentNode : selectedElm,\n //cell for default_selection = 'both' or 'cell'\n cell = selectedElm.nodeName === 'TD' ? selectedElm : null,\n /* eslint-disable */\n keyCode = e !== undefined ? et.Event.GetKey(e) : 0,\n /* eslint-enable */\n isRowValid = validIndexes.indexOf(row.rowIndex) !== -1,\n nextRowIndex,\n paging = tf.feature('paging'),\n //pgup/pgdown keys\n d = keyCode === 34 || keyCode === 33 ?\n (paging && paging.pageLength || et.nbRowsPerPage) :\n 1;\n\n //If next row is not valid, next valid filtered row needs to be\n //calculated\n if (!isRowValid) {\n //Selection direction up/down\n if (row.rowIndex > _lastRowIndex) {\n //last row\n if (row.rowIndex >= validIndexes[validIdxLen - 1]) {\n nextRowIndex = validIndexes[validIdxLen - 1];\n } else {\n let calcRowIndex = (_lastValidRowIndex + d);\n if (calcRowIndex > (validIdxLen - 1)) {\n nextRowIndex = validIndexes[validIdxLen - 1];\n } else {\n nextRowIndex = validIndexes[calcRowIndex];\n }\n }\n } else {\n //first row\n if (row.rowIndex <= validIndexes[0]) {\n nextRowIndex = validIndexes[0];\n } else {\n let v = validIndexes[_lastValidRowIndex - d];\n nextRowIndex = v ? v : validIndexes[0];\n }\n }\n _lastRowIndex = row.rowIndex;\n doSelect(nextRowIndex);\n } else {\n //If filtered row is valid, special calculation for\n //pgup/pgdown keys\n if (keyCode !== 34 && keyCode !== 33) {\n _lastValidRowIndex = validIndexes.indexOf(row.rowIndex);\n _lastRowIndex = row.rowIndex;\n } else {\n if (keyCode === 34) { //pgdown\n //last row\n if ((_lastValidRowIndex + d) <= (validIdxLen - 1)) {\n nextRowIndex = validIndexes[\n _lastValidRowIndex + d];\n } else {\n nextRowIndex = [validIdxLen - 1];\n }\n } else { //pgup\n //first row\n if ((_lastValidRowIndex - d) <= validIndexes[0]) {\n nextRowIndex = validIndexes[0];\n } else {\n nextRowIndex = validIndexes[\n _lastValidRowIndex - d];\n }\n }\n _lastRowIndex = nextRowIndex;\n _lastValidRowIndex = validIndexes.indexOf(nextRowIndex);\n doSelect(nextRowIndex);\n }\n }\n };\n\n //Page navigation has to be enforced whenever selected row is out of\n //the current page range\n let onBeforeSelection = function (et, selectedElm) {\n let row = et.defaultSelection !== 'row' ?\n selectedElm.parentNode : selectedElm;\n if (tf.paging) {\n if (tf.feature('paging').nbPages > 1) {\n let paging = tf.feature('paging');\n //page length is re-assigned in case it has changed\n et.nbRowsPerPage = paging.pageLength;\n let validIndexes = tf.validRowsIndex,\n validIdxLen = validIndexes.length,\n pagingEndRow = parseInt(paging.startPagingRow, 10) +\n parseInt(paging.pageLength, 10);\n let rowIndex = row.rowIndex;\n\n if ((rowIndex === validIndexes[validIdxLen - 1]) &&\n paging.currentPageNb !== paging.nbPages) {\n paging.setPage('last');\n }\n else if ((rowIndex === validIndexes[0]) &&\n paging.currentPageNb !== 1) {\n paging.setPage('first');\n }\n else if (rowIndex > validIndexes[pagingEndRow - 1] &&\n rowIndex < validIndexes[validIdxLen - 1]) {\n paging.setPage('next');\n }\n else if (\n rowIndex < validIndexes[paging.startPagingRow] &&\n rowIndex > validIndexes[0]) {\n paging.setPage('previous');\n }\n }\n }\n };\n\n //Selected row needs to be visible when paging is activated\n if (tf.paging) {\n tf.feature('paging').onAfterChangePage = function (paging) {\n let advGrid = paging.tf.extension('advancedGrid');\n let et = advGrid._ezEditTable;\n let slc = et.Selection;\n /* eslint-disable */\n let row = slc.GetActiveRow();\n /* eslint-enable */\n if (row) {\n row.scrollIntoView(false);\n }\n /* eslint-disable */\n let cell = slc.GetActiveCell();\n /* eslint-enable */\n if (cell) {\n cell.scrollIntoView(false);\n }\n };\n }\n\n //Rows navigation when rows are filtered is performed with the\n //EditTable row selection callback events\n if (cfg.default_selection === 'row') {\n let fnB = cfg.on_before_selected_row;\n cfg.on_before_selected_row = function () {\n var args = arguments;\n onBeforeSelection(args[0], args[1], args[2]);\n if (fnB) {\n fnB.call(null, args[0], args[1], args[2]);\n }\n };\n let fnA = cfg.on_after_selected_row;\n cfg.on_after_selected_row = function () {\n var args = arguments;\n onAfterSelection(args[0], args[1], args[2]);\n if (fnA) {\n fnA.call(null, args[0], args[1], args[2]);\n }\n };\n } else {\n let fnD = cfg.on_before_selected_cell;\n cfg.on_before_selected_cell = function () {\n var args = arguments;\n onBeforeSelection(args[0], args[1], args[2]);\n if (fnD) {\n fnD.call(null, args[0], args[1], args[2]);\n }\n };\n let fnC = cfg.on_after_selected_cell;\n cfg.on_after_selected_cell = function () {\n var args = arguments;\n onAfterSelection(args[0], args[1], args[2]);\n if (fnC) {\n fnC.call(null, args[0], args[1], args[2]);\n }\n };\n }\n }\n if (editable) {\n //Added or removed rows, TF rows number needs to be re-calculated\n let fnE = cfg.on_added_dom_row;\n cfg.on_added_dom_row = function () {\n var args = arguments;\n tf.nbFilterableRows++;\n if (!tf.paging) {\n tf.emitter.emit('rows-changed', tf, this);\n } else {\n tf.nbFilterableRows++;\n tf.paging = false;\n tf.feature('paging').destroy();\n tf.feature('paging').reset();\n }\n if (tf.alternateRows) {\n tf.feature('alternateRows').init();\n }\n if (fnE) {\n fnE.call(null, args[0], args[1], args[2]);\n }\n };\n if (cfg.actions && cfg.actions['delete']) {\n let fnF = cfg.actions['delete'].on_after_submit;\n cfg.actions['delete'].on_after_submit = function () {\n var args = arguments;\n tf.nbFilterableRows--;\n if (!tf.paging) {\n tf.emitter.emit('rows-changed', tf, this);\n } else {\n tf.nbFilterableRows--;\n tf.paging = false;\n tf.feature('paging').destroy();\n tf.feature('paging').reset(false);\n }\n if (tf.alternateRows) {\n tf.feature('alternateRows').init();\n }\n if (fnF) {\n fnF.call(null, args[0], args[1]);\n }\n };\n }\n }\n\n try {\n /* eslint-disable */\n this._ezEditTable = new EditTable(tf.id, cfg, startRow);\n this._ezEditTable.Init();\n /* eslint-enable */\n } catch (e) { throw new Error(INSTANTIATION_ERROR); }\n\n this.initialized = true;\n }\n\n /**\n * Reset advanced grid when previously removed\n */\n reset() {\n let ezEditTable = this._ezEditTable;\n if (ezEditTable) {\n if (this.cfg.selection) {\n /* eslint-disable */\n ezEditTable.Selection.Set();\n /* eslint-enable */\n }\n if (this.cfg.editable) {\n /* eslint-disable */\n ezEditTable.Editable.Set();\n /* eslint-enable */\n }\n }\n }\n\n /**\n * Toggle behaviour\n */\n toggle() {\n let ezEditTable = this._ezEditTable;\n if (ezEditTable.editable) {\n /* eslint-disable */\n ezEditTable.Editable.Remove();\n /* eslint-enable */\n } else {\n /* eslint-disable */\n ezEditTable.Editable.Set();\n /* eslint-enable */\n }\n if (ezEditTable.selection) {\n /* eslint-disable */\n ezEditTable.Selection.Remove();\n /* eslint-enable */\n } else {\n /* eslint-disable */\n ezEditTable.Selection.Set();\n /* eslint-enable */\n }\n }\n\n _toggleForInputFilter() {\n let tf = this.tf;\n if (!tf.getActiveFilterId()) {\n return;\n }\n let colIndex = tf.getColumnIndexFromFilterId(tf.getActiveFilterId());\n let filterType = tf.getFilterType(colIndex);\n if (filterType === INPUT) {\n this.toggle();\n }\n }\n\n /**\n * Remove advanced grid\n */\n destroy() {\n if (!this.initialized) {\n return;\n }\n let ezEditTable = this._ezEditTable;\n if (ezEditTable) {\n if (this.cfg.selection) {\n /* eslint-disable */\n ezEditTable.Selection.ClearSelections();\n ezEditTable.Selection.Remove();\n /* eslint-enable */\n }\n if (this.cfg.editable) {\n /* eslint-disable */\n ezEditTable.Editable.Remove();\n /* eslint-enable */\n }\n }\n\n this.emitter.off(['filter-focus', 'filter-blur'],\n () => this._toggleForInputFilter());\n this.initialized = false;\n }\n}\n","import AdapterSortableTable from './adapterSortabletable';\nimport {root} from '../../root';\n\nif (!root.SortableTable) {\n require('script-loader!sortabletable');\n}\n\nexport default AdapterSortableTable;\n","import {Feature} from '../../feature';\nimport {createElm, removeElm, elm} from '../../dom';\nimport {EMPTY_FN, isNull} from '../../types';\nimport {addEvt} from '../../event';\nimport {\n defaultsBool, defaultsStr, defaultsFn, defaultsNb,\n} from '../../settings';\nimport {RIGHT} from '../../modules/toolbar';\n\n/**\n * Filters Visibility extension\n */\nexport default class FiltersVisibility extends Feature {\n\n /**\n * Creates an instance of FiltersVisibility\n * @param {TableFilter} tf TableFilter instance\n * @param {Object} Configuration object\n */\n constructor(tf, f) {\n super(tf, f.name);\n\n /**\n * Module name\n * @type {String}\n */\n this.name = f.name;\n\n /**\n * Module description\n * @type {String}\n */\n this.desc = defaultsStr(f.description,\n 'Filters row visibility manager');\n\n /**\n * Extension's stylesheet filename\n * @type {String}\n */\n this.stylesheet = defaultsStr(f.stylesheet , 'filtersVisibility.css');\n\n /**\n * Expand icon filename\n * @type {String}\n */\n this.icnExpand = defaultsStr(f.expand_icon_name, 'icn_exp.png');\n\n /**\n * Collapse icon filename\n * @type {String}\n */\n this.icnCollapse = defaultsStr(f.collapse_icon_name, 'icn_clp.png');\n\n /**\n * Main container element\n * @private\n */\n this.contEl = null;\n\n /**\n * Button element\n * @private\n */\n this.btnEl = null;\n\n /**\n * Expand icon HTML\n * @private\n */\n this.icnExpandHtml = '\"Expand';\n\n /**\n * Collapse icon HTML\n * @private\n */\n this.icnCollapseHtml = '\"Collapse';\n\n /**\n * Default text\n * @private\n */\n this.defaultText = 'Toggle filters';\n\n /**\n * ID of main container element\n * @type {String}\n */\n this.targetId = f.target_id || null;\n\n /**\n * Enable expand/collapse icon, defaults to true\n * @type {Boolean}\n */\n this.enableIcon = defaultsBool(f.enable_icon, true);\n\n /**\n * Custom text for button\n * @type {String}\n */\n this.btnText = defaultsStr(f.btn_text, '');\n\n /**\n * Collapse button HTML\n * @private\n */\n this.collapseBtnHtml = this.enableIcon ?\n this.icnCollapseHtml + this.btnText :\n this.btnText || this.defaultText;\n\n /**\n * Expand button HTML\n * @private\n */\n this.expandBtnHtml = this.enableIcon ?\n this.icnExpandHtml + this.btnText :\n this.btnText || this.defaultText;\n\n /**\n * Button's custom HTML\n * @type {String}\n */\n this.btnHtml = defaultsStr(f.btn_html, null);\n\n /**\n * Css class for expand/collapse filters button\n * @type {String}\n */\n this.btnCssClass = defaultsStr(f.btn_css_class, 'btnExpClpFlt');\n\n /**\n * Css class for main container\n * @type {String}\n */\n this.contCssClass = defaultsStr(f.cont_css_class, 'expClpFlt');\n\n /**\n * Filters row index\n * @type {Number}\n */\n this.filtersRowIndex = defaultsNb(f.filters_row_index,\n tf.getFiltersRowIndex());\n\n /**\n * Make filters visible at initialization, defaults to true\n * @type {Boolean}\n */\n this.visibleAtStart = defaultsNb(f.visible_at_start, true);\n\n /**\n * Default position in toolbar ('left'|'center'|'right')\n * @type {String}\n */\n this.toolbarPosition = defaultsStr(f.toolbar_position, RIGHT);\n\n /**\n * Callback fired before filters row is shown\n * @type {Function}\n */\n this.onBeforeShow = defaultsFn(f.on_before_show, EMPTY_FN);\n\n /**\n * Callback fired after filters row is shown\n * @type {Function}\n */\n this.onAfterShow = defaultsFn(f.on_after_show, EMPTY_FN);\n\n /**\n * Callback fired before filters row is hidden\n * @type {Function}\n */\n this.onBeforeHide = defaultsFn(f.on_before_hide, EMPTY_FN);\n\n /**\n * Callback fired after filters row is hidden\n * @type {Function}\n */\n this.onAfterHide = defaultsFn(f.on_after_hide, EMPTY_FN);\n\n //Import extension's stylesheet\n tf.import(f.name + 'Style', tf.getStylePath() + this.stylesheet, null,\n 'link');\n\n this.enable();\n }\n\n /**\n * Initialise extension\n */\n init() {\n if (this.initialized) {\n return;\n }\n\n this.emitter.emit('initializing-extension', this,\n !isNull(this.targetId));\n\n this.buildUI();\n\n /** @inherited */\n this.initialized = true;\n\n this.emitter.on(['show-filters'], (tf, visible) => this.show(visible));\n this.emitter.emit('filters-visibility-initialized', this.tf, this);\n this.emitter.emit('extension-initialized', this);\n }\n\n /**\n * Build UI elements\n */\n buildUI() {\n let tf = this.tf;\n let span = createElm('span');\n span.className = this.contCssClass;\n\n // Container element (rdiv or custom element)\n let targetEl = !this.targetId ?\n tf.feature('toolbar').container(this.toolbarPosition) :\n elm(this.targetId);\n\n if (!this.targetId) {\n let firstChild = targetEl.firstChild;\n firstChild.parentNode.insertBefore(span, firstChild);\n } else {\n targetEl.appendChild(span);\n }\n\n let btn;\n if (!this.btnHtml) {\n btn = createElm('a', ['href', 'javascript:void(0);']);\n btn.className = this.btnCssClass;\n btn.title = this.btnText || this.defaultText;\n btn.innerHTML = this.collapseBtnHtml;\n span.appendChild(btn);\n } else { // Custom html\n span.innerHTML = this.btnHtml;\n btn = span.firstChild;\n }\n\n addEvt(btn, 'click', () => this.toggle());\n\n this.contEl = span;\n this.btnEl = btn;\n\n if (!this.visibleAtStart) {\n this.toggle();\n }\n }\n\n /**\n * Toggle filters visibility\n */\n toggle() {\n let tf = this.tf;\n let tbl = tf.gridLayout ? tf.feature('gridLayout').headTbl : tf.dom();\n let fltRow = tbl.rows[this.filtersRowIndex];\n let isDisplayed = fltRow.style.display === '';\n\n this.show(!isDisplayed);\n }\n\n /**\n * Show or hide filters\n *\n * @param {boolean} [visible=true] Visibility flag\n */\n show(visible = true) {\n let tf = this.tf;\n let tbl = tf.gridLayout ? tf.feature('gridLayout').headTbl : tf.dom();\n let fltRow = tbl.rows[this.filtersRowIndex];\n\n if (visible) {\n this.onBeforeShow(this);\n }\n if (!visible) {\n this.onBeforeHide(this);\n }\n\n fltRow.style.display = visible ? '' : 'none';\n if (this.enableIcon && !this.btnHtml) {\n this.btnEl.innerHTML = visible ?\n this.collapseBtnHtml : this.expandBtnHtml;\n }\n\n if (visible) {\n this.onAfterShow(this);\n }\n if (!visible) {\n this.onAfterHide(this);\n }\n\n this.emitter.emit('filters-toggled', tf, this, visible);\n }\n\n /**\n * Destroy the UI\n */\n destroy() {\n if (!this.initialized) {\n return;\n }\n\n this.emitter.off(['show-filters'], (tf, visible) => this.show(visible));\n\n this.btnEl.innerHTML = '';\n removeElm(this.btnEl);\n this.btnEl = null;\n\n this.contEl.innerHTML = '';\n removeElm(this.contEl);\n this.contEl = null;\n this.initialized = false;\n }\n\n}\n","import {Feature} from '../../feature';\nimport {\n addClass, removeClass, createCheckItem, createElm, elm, removeElm,\n getText, tag\n} from '../../dom';\nimport {isUndef, EMPTY_FN, isNull} from '../../types';\nimport {addEvt, targetEvt, removeEvt} from '../../event';\nimport {root} from '../../root';\nimport {NONE} from '../../const';\nimport {\n defaultsBool, defaultsStr, defaultsFn, defaultsNb, defaultsArr\n} from '../../settings';\nimport {RIGHT} from '../../modules/toolbar';\n\n/**\n * Columns Visibility extension\n */\nexport default class ColsVisibility extends Feature {\n\n /**\n * Creates an instance of ColsVisibility\n * @param {TableFilter} tf TableFilter instance\n * @param {Object} Configuration object\n */\n constructor(tf, f) {\n super(tf, f.name);\n\n // Configuration object\n let cfg = this.config;\n\n /**\n * Module name\n * @type {String}\n */\n this.name = f.name;\n\n /**\n * Module description\n * @type {String}\n */\n this.desc = defaultsStr(f.description, 'Columns visibility manager');\n\n /**\n * show/hide columns container element\n * @private\n */\n this.spanEl = null;\n\n /**\n * show/hide columns button element\n * @private\n */\n this.btnEl = null;\n\n /**\n * show/hide columns main container element\n * @private\n */\n this.contEl = null;\n\n /**\n * Enable tick to hide a column, defaults to true\n * @type {Boolean}\n */\n this.tickToHide = defaultsBool(f.tick_to_hide, true);\n\n /**\n * Enable columns manager UI, defaults to true\n * @type {Boolean}\n */\n this.manager = defaultsBool(f.manager, true);\n\n /**\n * Headers HTML table reference only if headers are external\n * @type {DOMElement}\n */\n this.headersTbl = f.headers_table || null;\n\n /**\n * Headers row index only if headers are external\n * @type {Number}\n */\n this.headersIndex = defaultsNb(f.headers_index, 1);\n\n /**\n * ID of main container element\n * @type {String}\n */\n this.contElTgtId = defaultsStr(f.container_target_id, null);\n\n /**\n * Alternative text for column headers in column manager UI\n * @type {Array}\n */\n this.headersText = defaultsArr(f.headers_text, []);\n\n /**\n * ID of button's container element\n * @type {String}\n */\n this.btnTgtId = defaultsStr(f.btn_target_id, null);\n\n /**\n * Button's text, defaults to Columns▼\n * @type {String}\n */\n this.btnText = defaultsStr(f.btn_text, 'Columns▼');\n\n /**\n * Button's inner HTML\n * @type {String}\n */\n this.btnHtml = defaultsStr(f.btn_html, null);\n\n /**\n * Css class for button\n * @type {String}\n */\n this.btnCssClass = defaultsStr(f.btn_css_class, 'colVis');\n\n /**\n * Columns manager UI close link text, defaults to 'Close'\n * @type {String}\n */\n this.btnCloseText = defaultsStr(f.btn_close_text, 'Close');\n\n /**\n * Columns manager UI close link HTML\n * @type {String}\n */\n this.btnCloseHtml = defaultsStr(f.btn_close_html, null);\n\n /**\n * Css for columns manager UI close link\n * @type {String}\n */\n this.btnCloseCssClass = defaultsStr(f.btn_close_css_class,\n this.btnCssClass);\n\n /**\n * Extension's stylesheet filename\n * @type {String}\n */\n this.stylesheet = defaultsStr(f.stylesheet, 'colsVisibility.css');\n\n /**\n * Css for columns manager UI span\n * @type {String}\n */\n this.spanCssClass = defaultsStr(f.span_css_class, 'colVisSpan');\n\n /**\n * Css for columns manager UI main container\n * @type {String}\n */\n this.contCssClass = defaultsStr(f.cont_css_class, 'colVisCont');\n\n /**\n * Css for columns manager UI checklist (ul)\n * @type {String}\n */\n this.listCssClass = defaultsStr(cfg.list_css_class, 'cols_checklist');\n\n /**\n * Css for columns manager UI checklist item (li)\n * @type {String}\n */\n this.listItemCssClass = defaultsStr(cfg.checklist_item_css_class,\n 'cols_checklist_item');\n\n /**\n * Css for columns manager UI checklist item selected state (li)\n * @type {String}\n */\n this.listSlcItemCssClass = defaultsStr(\n cfg.checklist_selected_item_css_class,\n 'cols_checklist_slc_item'\n );\n\n /**\n * Text preceding the columns list, defaults to 'Hide' or 'Show'\n * depending on tick mode (tick_to_hide option)\n * @type {String}\n */\n this.text = defaultsStr(f.text, this.tickToHide ? 'Hide: ' : 'Show: ');\n\n /**\n * List of columns indexes to be hidden at initialization\n * @type {Array}\n */\n this.atStart = defaultsArr(f.at_start, []);\n\n /**\n * Enable hover behaviour on columns manager button/link\n * @type {Boolean}\n */\n this.enableHover = Boolean(f.enable_hover);\n\n /**\n * Enable select all option, disabled by default\n * @type {Boolean}\n */\n this.enableTickAll = Boolean(f.enable_tick_all);\n\n /**\n * Text for select all option, defaults to 'Select all:'\n * @type {String}\n */\n this.tickAllText = defaultsStr(f.tick_all_text, 'Select all:');\n\n /**\n * Default position in toolbar ('left'|'center'|'right')\n * @type {String}\n */\n this.toolbarPosition = defaultsStr(f.toolbar_position, RIGHT);\n\n /**\n * List of indexes of hidden columns\n * @private\n */\n this.hiddenCols = [];\n\n /**\n * Bound mouseup wrapper\n * @private\n */\n this.boundMouseup = null;\n\n /**\n * Callback fired when the extension is initialized\n * @type {Function}\n */\n this.onLoaded = defaultsFn(f.on_loaded, EMPTY_FN);\n\n /**\n * Callback fired before the columns manager is opened\n * @type {Function}\n */\n this.onBeforeOpen = defaultsFn(f.on_before_open, EMPTY_FN);\n\n /**\n * Callback fired after the columns manager is opened\n * @type {Function}\n */\n this.onAfterOpen = defaultsFn(f.on_after_open, EMPTY_FN);\n\n /**\n * Callback fired before the columns manager is closed\n * @type {Function}\n */\n this.onBeforeClose = defaultsFn(f.on_before_close, EMPTY_FN);\n\n /**\n * Callback fired after the columns manager is closed\n * @type {Function}\n */\n this.onAfterClose = defaultsFn(f.on_after_close, EMPTY_FN);\n\n /**\n * Callback fired before a column is hidden\n * @type {Function}\n */\n this.onBeforeColHidden = defaultsFn(f.on_before_col_hidden, EMPTY_FN);\n\n /**\n * Callback fired after a column is hidden\n * @type {Function}\n */\n this.onAfterColHidden = defaultsFn(f.on_after_col_hidden, EMPTY_FN);\n\n /**\n * Callback fired before a column is displayed\n * @type {Function}\n */\n this.onBeforeColDisplayed = defaultsFn(f.on_before_col_displayed,\n EMPTY_FN);\n\n /**\n * Callback fired after a column is displayed\n * @type {Function}\n */\n this.onAfterColDisplayed = defaultsFn(f.on_after_col_displayed,\n EMPTY_FN);\n\n //Grid layout support\n if (tf.gridLayout) {\n this.headersTbl = tf.feature('gridLayout').headTbl; //headers table\n this.headersIndex = 0; //headers index\n }\n\n //Loads extension stylesheet\n tf.import(f.name + 'Style', tf.getStylePath() + this.stylesheet, null,\n 'link');\n\n this.enable();\n }\n\n /**\n * Mouse-up event handler handling popup auto-close behaviour\n * @private\n */\n onMouseup(evt) {\n let targetElm = targetEvt(evt);\n\n while (targetElm && targetElm !== this.contEl\n && targetElm !== this.btnEl) {\n targetElm = targetElm.parentNode;\n }\n\n if (targetElm !== this.contEl && targetElm !== this.btnEl) {\n this.toggle();\n }\n\n return;\n }\n\n /**\n * Toggle columns manager UI\n */\n toggle() {\n // ensure mouseup event handler is removed\n removeEvt(root, 'mouseup', this.boundMouseup);\n\n let contDisplay = this.contEl.style.display;\n\n if (contDisplay !== 'inline') {\n this.onBeforeOpen(this);\n }\n if (contDisplay === 'inline') {\n this.onBeforeClose(this);\n }\n\n this.contEl.style.display = contDisplay === 'inline' ?\n NONE : 'inline';\n\n if (contDisplay !== 'inline') {\n this.onAfterOpen(this);\n addEvt(root, 'mouseup', this.boundMouseup);\n }\n if (contDisplay === 'inline') {\n this.onAfterClose(this);\n }\n }\n\n /**\n * Check an item in columns manager UI\n * @private\n */\n checkItem(lbl) {\n let li = lbl.parentNode;\n if (!li || !lbl) {\n return;\n }\n let isChecked = lbl.firstChild.checked;\n let colIndex = lbl.firstChild.getAttribute('id').split('_')[1];\n colIndex = parseInt(colIndex, 10);\n if (isChecked) {\n addClass(li, this.listSlcItemCssClass);\n } else {\n removeClass(li, this.listSlcItemCssClass);\n }\n\n let hide = false;\n if ((this.tickToHide && isChecked) ||\n (!this.tickToHide && !isChecked)) {\n hide = true;\n }\n this.setHidden(colIndex, hide);\n }\n\n /**\n * Initializes ColsVisibility instance\n */\n init() {\n if (this.initialized || !this.manager) {\n return;\n }\n\n this.emitter.emit('initializing-extension', this,\n !isNull(this.btnTgtId));\n\n this.emitter.on(['hide-column'],\n (tf, colIndex) => this.hideCol(colIndex));\n\n this.buildBtn();\n this.buildManager();\n\n /** @inherited */\n this.initialized = true;\n\n this.boundMouseup = this.onMouseup.bind(this);\n\n this.emitter.emit('columns-visibility-initialized', this.tf, this);\n this.emitter.emit('extension-initialized', this);\n\n // Hide columns at start at very end of initialization, do not move\n // as order is important\n this._hideAtStart();\n }\n\n /**\n * Build main button UI\n */\n buildBtn() {\n if (this.btnEl) {\n return;\n }\n let tf = this.tf;\n let span = createElm('span');\n span.className = this.spanCssClass;\n\n // Container element (rdiv or custom element)\n let targetEl = !this.btnTgtId ?\n tf.feature('toolbar').container(this.toolbarPosition) :\n elm(this.btnTgtId);\n\n if (!this.btnTgtId) {\n let firstChild = targetEl.firstChild;\n firstChild.parentNode.insertBefore(span, firstChild);\n } else {\n targetEl.appendChild(span);\n }\n\n if (!this.btnHtml) {\n let btn = createElm('a', ['href', 'javascript:;']);\n btn.className = this.btnCssClass;\n btn.title = this.desc;\n\n btn.innerHTML = this.btnText;\n span.appendChild(btn);\n if (!this.enableHover) {\n addEvt(btn, 'click', (evt) => this.toggle(evt));\n } else {\n addEvt(btn, 'mouseover', (evt) => this.toggle(evt));\n }\n } else { // Custom html\n span.innerHTML = this.btnHtml;\n let colVisEl = span.firstChild;\n if (!this.enableHover) {\n addEvt(colVisEl, 'click', (evt) => this.toggle(evt));\n } else {\n addEvt(colVisEl, 'mouseover', (evt) => this.toggle(evt));\n }\n }\n\n this.spanEl = span;\n this.btnEl = this.spanEl.firstChild;\n\n this.onLoaded(this);\n }\n\n /**\n * Build columns manager UI\n */\n buildManager() {\n let tf = this.tf;\n\n let container = !this.contElTgtId ?\n createElm('div') :\n elm(this.contElTgtId);\n container.className = this.contCssClass;\n\n //Extension description\n let extNameLabel = createElm('p');\n extNameLabel.innerHTML = this.text;\n container.appendChild(extNameLabel);\n\n //Headers list\n let ul = createElm('ul');\n ul.className = this.listCssClass;\n\n let tbl = this.headersTbl || tf.dom();\n let headerIndex = this.headersTbl ?\n this.headersIndex : tf.getHeadersRowIndex();\n let headerRow = tbl.rows[headerIndex];\n\n //Tick all option\n if (this.enableTickAll) {\n let li = createCheckItem('col__' + tf.id, this.tickAllText,\n this.tickAllText);\n addClass(li, this.listItemCssClass);\n ul.appendChild(li);\n li.check.checked = !this.tickToHide;\n\n addEvt(li.check, 'click', () => {\n for (let h = 0; h < headerRow.cells.length; h++) {\n let itm = elm('col_' + h + '_' + tf.id);\n if (itm && li.check.checked !== itm.checked) {\n itm.click();\n itm.checked = li.check.checked;\n }\n }\n });\n }\n\n for (let i = 0; i < headerRow.cells.length; i++) {\n let cell = headerRow.cells[i];\n let cellText = this.headersText[i] || this._getHeaderText(cell);\n let liElm = createCheckItem('col_' + i + '_' + tf.id, cellText,\n cellText);\n addClass(liElm, this.listItemCssClass);\n if (!this.tickToHide) {\n addClass(liElm, this.listSlcItemCssClass);\n }\n ul.appendChild(liElm);\n if (!this.tickToHide) {\n liElm.check.checked = true;\n }\n\n addEvt(liElm.check, 'click', (evt) => {\n let elm = targetEvt(evt);\n let lbl = elm.parentNode;\n this.checkItem(lbl);\n });\n }\n\n //separator\n let p = createElm('p', ['align', 'center']);\n let btn;\n //Close link\n if (!this.btnCloseHtml) {\n btn = createElm('a', ['href', 'javascript:;']);\n btn.className = this.btnCloseCssClass;\n btn.innerHTML = this.btnCloseText;\n addEvt(btn, 'click', (evt) => this.toggle(evt));\n p.appendChild(btn);\n } else {\n p.innerHTML = this.btnCloseHtml;\n btn = p.firstChild;\n addEvt(btn, 'click', (evt) => this.toggle(evt));\n }\n\n container.appendChild(ul);\n container.appendChild(p);\n\n this.btnEl.parentNode.insertBefore(container, this.btnEl);\n this.contEl = container;\n }\n\n /**\n * Hide or show specified columns\n * @param {Number} colIndex Column index\n * @param {Boolean} hide Hide column if true or show if false\n */\n setHidden(colIndex, hide) {\n let tf = this.tf;\n let tbl = tf.dom();\n\n if (hide) {\n this.onBeforeColHidden(this, colIndex);\n } else {\n this.onBeforeColDisplayed(this, colIndex);\n }\n\n this._hideElements(tbl, colIndex, hide);\n if (this.headersTbl) {\n this._hideElements(this.headersTbl, colIndex, hide);\n }\n\n let hiddenCols = this.hiddenCols;\n let itemIndex = hiddenCols.indexOf(colIndex);\n if (hide) {\n if (itemIndex === -1) {\n this.hiddenCols.push(colIndex);\n }\n } else {\n if (itemIndex !== -1) {\n this.hiddenCols.splice(itemIndex, 1);\n }\n }\n\n if (hide) {\n this.onAfterColHidden(this, colIndex);\n this.emitter.emit('column-hidden', tf, this, colIndex,\n this.hiddenCols);\n } else {\n this.onAfterColDisplayed(this, colIndex);\n this.emitter.emit('column-shown', tf, this, colIndex,\n this.hiddenCols);\n }\n }\n\n /**\n * Show specified column\n * @param {Number} colIndex Column index\n */\n showCol(colIndex) {\n if (isUndef(colIndex) || !this.isColHidden(colIndex)) {\n return;\n }\n if (this.manager && this.contEl) {\n let itm = elm('col_' + colIndex + '_' + this.tf.id);\n if (itm) {\n itm.click();\n }\n } else {\n this.setHidden(colIndex, false);\n }\n }\n\n /**\n * Hide specified column\n * @param {Number} colIndex Column index\n */\n hideCol(colIndex) {\n if (isUndef(colIndex) || this.isColHidden(colIndex)) {\n return;\n }\n if (this.manager && this.contEl) {\n let itm = elm('col_' + colIndex + '_' + this.tf.id);\n if (itm) {\n itm.click();\n }\n } else {\n this.setHidden(colIndex, true);\n }\n }\n\n /**\n * Determine if specified column is hidden\n * @param {Number} colIndex Column index\n */\n isColHidden(colIndex) {\n if (this.hiddenCols.indexOf(colIndex) !== -1) {\n return true;\n }\n return false;\n }\n\n /**\n * Toggle visibility of specified column\n * @param {Number} colIndex Column index\n */\n toggleCol(colIndex) {\n if (isUndef(colIndex) || this.isColHidden(colIndex)) {\n this.showCol(colIndex);\n } else {\n this.hideCol(colIndex);\n }\n }\n\n /**\n * Return the indexes of the columns currently hidden\n * @return {Array} column indexes\n */\n getHiddenCols() {\n return this.hiddenCols;\n }\n\n /**\n * Remove the columns manager\n */\n destroy() {\n if (!this.initialized) {\n return;\n }\n if (elm(this.contElTgtId)) {\n elm(this.contElTgtId).innerHTML = '';\n } else {\n this.contEl.innerHTML = '';\n removeElm(this.contEl);\n this.contEl = null;\n }\n this.btnEl.innerHTML = '';\n removeElm(this.btnEl);\n this.btnEl = null;\n\n this.emitter.off(['hide-column'],\n (tf, colIndex) => this.hideCol(colIndex));\n\n this.boundMouseup = null;\n\n this.initialized = false;\n }\n\n _getHeaderText(cell) {\n if (!cell.hasChildNodes) {\n return '';\n }\n\n for (let i = 0; i < cell.childNodes.length; i++) {\n let n = cell.childNodes[i];\n if (n.nodeType === 3) {\n return n.nodeValue;\n } else if (n.nodeType === 1) {\n if (n.id && n.id.indexOf('popUp') !== -1) {\n continue;\n } else {\n return getText(n);\n }\n }\n continue;\n }\n return '';\n }\n\n _hideElements(tbl, colIdx, hide) {\n this._hideCells(tbl, colIdx, hide);\n this._hideCol(tbl, colIdx, hide);\n }\n\n _hideCells(tbl, colIdx, hide) {\n for (let i = 0; i < tbl.rows.length; i++) {\n let row = tbl.rows[i];\n let cell = row.cells[colIdx];\n if (cell) {\n cell.style.display = hide ? NONE : '';\n }\n }\n }\n\n _hideCol(tbl, colIdx, hide) {\n let colElms = tag(this.tf.dom(), 'col');\n if (colElms.length === 0) {\n return;\n }\n colElms[colIdx].style.display = hide ? NONE : '';\n }\n\n _hideAtStart() {\n this.atStart.forEach((colIdx) => {\n this.hideCol(colIdx);\n });\n }\n}\n","import {Feature} from '../../feature';\nimport {createText, elm} from '../../dom';\nimport {isArray, isEmpty, EMPTY_FN} from '../../types';\nimport {numSortAsc} from '../../sort';\nimport {FORMATTED_NUMBER} from '../../const';\nimport formatNumber from 'format-number';\nimport {defaultsFn, defaultsArr} from '../../settings';\n\nconst EVENTS = [\n 'after-filtering',\n 'after-page-change',\n 'after-page-length-change'\n];\n\nconst SUM = 'sum';\nconst MEAN = 'mean';\nconst MIN = 'min';\nconst MAX = 'max';\nconst MEDIAN = 'median';\nconst Q1 = 'q1';\nconst Q3 = 'q3';\n\n/**\n * Column calculations extension\n */\nexport default class ColOps extends Feature {\n\n /**\n * Creates an instance of ColOps\n *\n * @param {TableFilter} tf TableFilter instance\n * @param {Object} opts Configuration object\n */\n constructor(tf, opts) {\n super(tf, opts.name);\n\n /**\n * Callback fired before columns operations start\n * @type {Function}\n */\n this.onBeforeOperation = defaultsFn(opts.on_before_operation, EMPTY_FN);\n\n /**\n * Callback fired after columns operations are completed\n * @type {Function}\n */\n this.onAfterOperation = defaultsFn(opts.on_after_operation, EMPTY_FN);\n\n /**\n * Configuration options\n * @type {Object}\n */\n this.opts = opts;\n\n /**\n * List of DOM element IDs containing column's calculation result\n * @type {Array}\n */\n this.labelIds = defaultsArr(opts.id, []);\n\n /**\n * List of columns' indexes for calculations\n * @type {Array}\n */\n this.colIndexes = defaultsArr(opts.col, []);\n\n /**\n * List of operations - possible values: 'sum', 'mean', 'min', 'max',\n * 'median', 'q1', 'q3'\n * @type {Array}\n */\n this.operations = defaultsArr(opts.operation, []);\n\n /**\n * List of write methods used to write the result - possible values:\n * 'innerHTML', 'setValue', 'createTextNode'\n * @type {Array}\n */\n this.outputTypes = defaultsArr(opts.write_method, []);\n\n /**\n * List of format objects used for formatting the result -\n * refer to https://github.com/componitable/format-number to check\n * configuration options\n * @type {Array}\n */\n this.formatResults = defaultsArr(opts.format_result, []);\n\n /**\n * List of row indexes displaying the results\n * @type {Array}\n */\n this.totRowIndexes = defaultsArr(opts.tot_row_index, []);\n\n /**\n * List of row indexes excluded from calculations\n * @type {Array}\n */\n this.excludeRows = defaultsArr(opts.exclude_row, []);\n\n /**\n * List of decimal precision for calculation results\n * @type {Array}\n */\n this.decimalPrecisions = defaultsArr(opts.decimal_precision, 2);\n\n this.enable();\n }\n\n /**\n * Initializes ColOps instance\n */\n init() {\n if (this.initialized) {\n return;\n }\n // subscribe to events\n this.emitter.on(EVENTS, () => this.calcAll());\n\n this.calcAll();\n\n /** @inherited */\n this.initialized = true;\n }\n\n /**\n * Calculates columns' values\n * Configuration options are stored in 'opts' property\n * - 'id' contains ids of elements showing result (array)\n * - 'col' contains the columns' indexes (array)\n * - 'operation' contains operation type (array, values: 'sum', 'mean',\n * 'min', 'max', 'median', 'q1', 'q3')\n * - 'write_method' array defines which method to use for displaying the\n * result (innerHTML, setValue, createTextNode) - default: 'innerHTML'\n * - 'tot_row_index' defines in which row results are displayed\n * (integers array)\n *\n * - changes made by Nuovella:\n * (1) optimized the routine (now it will only process each column once),\n * (2) added calculations for the median, lower and upper quartile.\n */\n calcAll() {\n let tf = this.tf;\n if (!tf.isInitialized()) {\n return;\n }\n\n this.onBeforeOperation(tf, this);\n this.emitter.emit('before-column-operation', tf, this);\n\n let { colIndexes, operations: colOperations, outputTypes,\n totRowIndexes, excludeRows, formatResults,\n decimalPrecisions } = this;\n\n //nuovella: determine unique list of columns to operate on\n let uIndexes = [];\n colIndexes.forEach((val) => {\n if (uIndexes.indexOf(val) === -1) {\n uIndexes.push(val);\n }\n });\n\n let nbCols = uIndexes.length,\n rows = tf.dom().rows,\n colValues = [];\n\n for (let u = 0; u < nbCols; u++) {\n //this retrieves col values\n //use uIndexes because we only want to pass through this loop\n //once for each column get the values in this unique column\n colValues.push(\n tf.getVisibleColumnData(uIndexes[u], false, excludeRows)\n );\n\n let curValues = colValues[u];\n\n //next: calculate all operations for this column\n let result = 0,\n operations = [],\n precisions = [],\n labels = [],\n writeType,\n formatResult = [],\n idx = 0;\n\n for (let k = 0; k < colIndexes.length; k++) {\n if (colIndexes[k] !== uIndexes[u]) {\n continue;\n }\n operations[idx] = (colOperations[k] || 'sum').toLowerCase();\n precisions[idx] = decimalPrecisions[k];\n labels[idx] = this.labelIds[k];\n writeType = isArray(outputTypes) ? outputTypes[k] : null;\n formatResult[idx] =\n this.configureFormat(uIndexes[u], formatResults[k]);\n idx++;\n }\n\n for (let i = 0; i < idx; i++) {\n // emit values before column calculation\n this.emitter.emit(\n 'before-column-calc',\n tf,\n this,\n uIndexes[u],\n curValues,\n operations[i],\n precisions[i]\n );\n\n result = Number(this.calc(curValues, operations[i], null));\n\n // emit column calculation result\n this.emitter.emit(\n 'column-calc',\n tf,\n this,\n uIndexes[u],\n result,\n operations[i],\n precisions[i]\n );\n\n // write result in expected DOM element\n this.writeResult(\n result,\n labels[i],\n writeType,\n precisions[i],\n formatResult[i]\n );\n\n }//for i\n\n // row(s) with result are always visible\n let totRow = totRowIndexes && totRowIndexes[u] ?\n rows[totRowIndexes[u]] : null;\n if (totRow) {\n totRow.style.display = '';\n }\n }//for u\n\n this.onAfterOperation(tf, this);\n this.emitter.emit('after-column-operation', tf, this);\n }\n\n /**\n * Make desired calculation on specified column.\n * @param {Number} colIndex Column index\n * @param {String} [operation=SUM] Operation type\n * @param {Number} precision Decimal precision\n * @returns {Number}\n */\n columnCalc(colIndex, operation = SUM, precision) {\n let excludeRows = this.excludeRows || [];\n let colValues = tf.getVisibleColumnData(colIndex, false, excludeRows);\n\n return Number(this.calc(colValues, operation, precision));\n }\n\n /**\n * Make calculation on passed values.\n * @param {Array} values List of values\n * @param {String} [operation=SUM] Optional operation type\n * @param {Number} precision Optional result precision\n * @returns {Number}\n * @private\n */\n calc(colValues, operation = SUM, precision) {\n let result = 0;\n\n if (operation === Q1 || operation === Q3 || operation === MEDIAN) {\n colValues = this.sortColumnValues(colValues, numSortAsc);\n }\n\n switch (operation) {\n case MEAN:\n result = this.calcMean(colValues);\n break;\n case SUM:\n result = this.calcSum(colValues);\n break;\n case MIN:\n result = this.calcMin(colValues);\n break;\n case MAX:\n result = this.calcMax(colValues);\n break;\n case MEDIAN:\n result = this.calcMedian(colValues);\n break;\n case Q1:\n result = this.calcQ1(colValues);\n break;\n case Q3:\n result = this.calcQ3(colValues);\n break;\n }\n\n return isEmpty(precision) ? result : result.toFixed(precision);\n }\n\n /**\n * Calculate the sum of passed values.\n * @param {Array} [values=[]] List of values\n * @returns {Number}\n */\n calcSum(values = []) {\n if (isEmpty(values)) {\n return 0;\n }\n let result = values.reduce((x, y) => Number(x) + Number(y));\n return result;\n }\n\n /**\n * Calculate the mean of passed values.\n * @param {Array} [values=[]] List of values\n * @returns {Number}\n */\n calcMean(values = []) {\n let result = this.calcSum(values) / values.length;\n return Number(result);\n }\n\n /**\n * Calculate the max value of passed values.\n * @param {Array} [values=[]] List of values\n * @returns {Number}\n */\n calcMax(values = []) {\n return Math.max.apply(null, values);\n }\n\n /**\n * Calculate the min value of passed values.\n * @param {Array} [values=[]] List of values\n * @returns {Number}\n */\n calcMin(values = []) {\n return Math.min.apply(null, values);\n }\n\n /**\n * Calculate the median of passed values.\n * @param {Array} [values=[]] List of values\n * @returns {Number}\n */\n calcMedian(values = []) {\n let nbValues = values.length;\n let aux = 0;\n if (nbValues % 2 === 1) {\n aux = Math.floor(nbValues / 2);\n return Number(values[aux]);\n }\n return (Number(values[nbValues / 2]) +\n Number(values[((nbValues / 2) - 1)])) / 2;\n }\n\n /**\n * Calculate the lower quartile of passed values.\n * @param {Array} [values=[]] List of values\n * @returns {Number}\n */\n calcQ1(values = []) {\n let nbValues = values.length;\n let posa = 0.0;\n posa = Math.floor(nbValues / 4);\n if (4 * posa === nbValues) {\n return (Number(values[posa - 1]) +\n Number(values[posa])) / 2;\n }\n return Number(values[posa]);\n }\n\n /**\n * Calculate the upper quartile of passed values.\n * @param {Array} [values=[]] List of values\n * @returns {Number}\n */\n calcQ3(values = []) {\n let nbValues = values.length;\n let posa = 0.0;\n let posb = 0.0;\n posa = Math.floor(nbValues / 4);\n if (4 * posa === nbValues) {\n posb = 3 * posa;\n return (Number(values[posb]) +\n Number(values[posb - 1])) / 2;\n }\n return Number(values[nbValues - posa - 1]);\n }\n\n /**\n * Sort passed values with supplied sorter function.\n * @param {Array} [values=[]] List of values to be sorted\n * @param {Function} sorter Sorter function\n * @returns {Array}\n */\n sortColumnValues(values = [], sorter) {\n return values.sort(sorter);\n }\n\n /**\n * Write calculation result in passed DOM element with supplied write method\n * and decimal precision.\n * @param {Number} [result=0] Calculation result\n * @param {DOMElement} label DOM element\n * @param {String} [writeType='innerhtml'] Write method\n * @param {Number} [precision=2] Applied decimal precision\n * @private\n */\n writeResult(result = 0, label, writeType = 'innerhtml',\n precision = 2, format = {}) {\n let labelElm = elm(label);\n\n if (!labelElm) {\n return;\n }\n\n result = result.toFixed(precision);\n if (isNaN(result) || !isFinite(result)) {\n result = '';\n } else {\n result = formatNumber(format)(result);\n }\n\n switch (writeType.toLowerCase()) {\n case 'innerhtml':\n labelElm.innerHTML = result;\n break;\n case 'setvalue':\n labelElm.value = result;\n break;\n case 'createtextnode':\n let oldNode = labelElm.firstChild;\n let txtNode = createText(result);\n labelElm.replaceChild(txtNode, oldNode);\n break;\n }\n }\n\n /**\n * Configure the format options used to format the operation result based\n * on column type.\n * @param {Number} colIndex Column index\n * @param {Object} [format={}] Format object\n * @returns {Object}\n * @private\n */\n configureFormat(colIndex, format = {}) {\n let tf = this.tf;\n if (tf.hasType(colIndex, [FORMATTED_NUMBER])) {\n let colType = tf.colTypes[colIndex];\n if (colType.decimal && !format.decimal) {\n format.decimal = colType.decimal;\n }\n if (colType.thousands && !format.integerSeparator) {\n format.integerSeparator = colType.thousands;\n }\n } else {\n format.decimal = format.decimal || '';\n format.integerSeparator = format.integerSeparator || '';\n }\n return format;\n }\n\n /** Remove extension */\n destroy() {\n if (!this.initialized) {\n return;\n }\n // unsubscribe to events\n this.emitter.off(EVENTS, () => this.calcAll());\n\n this.initialized = false;\n }\n\n}\n","import AdapterEzEditTable from './adapterEzEditTable';\n\nexport default AdapterEzEditTable;","module.exports = \"/*----------------------------------------------------------------------------\\\\\\n| Sortable Table 1.12 |\\n|-----------------------------------------------------------------------------|\\n| Created by Erik Arvidsson |\\n| (http://webfx.eae.net/contact.html#erik) |\\n| For WebFX (http://webfx.eae.net/) |\\n|-----------------------------------------------------------------------------|\\n| A DOM 1 based script that allows an ordinary HTML table to be sortable. |\\n|-----------------------------------------------------------------------------|\\n| Copyright (c) 1998 - 2006 Erik Arvidsson |\\n|-----------------------------------------------------------------------------|\\n| Licensed under the Apache License, Version 2.0 (the \\\"License\\\"); you may not |\\n| use this file except in compliance with the License. You may obtain a copy |\\n| of the License at http://www.apache.org/licenses/LICENSE-2.0 |\\n| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |\\n| Unless required by applicable law or agreed to in writing, software |\\n| distributed under the License is distributed on an \\\"AS IS\\\" BASIS, WITHOUT |\\n| WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |\\n| License for the specific language governing permissions and limitations |\\n| under the License. |\\n|-----------------------------------------------------------------------------|\\n| 2003-01-10 | First version |\\n| 2003-01-19 | Minor changes to the date parsing |\\n| 2003-01-28 | JScript 5.0 fixes (no support for 'in' operator) |\\n| 2003-02-01 | Sloppy typo like error fixed in getInnerText |\\n| 2003-07-04 | Added workaround for IE cellIndex bug. |\\n| 2003-11-09 | The bDescending argument to sort was not correctly working |\\n| | Using onclick DOM0 event if no support for addEventListener |\\n| | or attachEvent |\\n| 2004-01-13 | Adding addSortType and removeSortType which makes it a lot |\\n| | easier to add new, custom sort types. |\\n| 2004-01-27 | Switch to use descending = false as the default sort order. |\\n| | Change defaultDescending to suit your needs. |\\n| 2004-03-14 | Improved sort type None look and feel a bit |\\n| 2004-08-26 | Made the handling of tBody and tHead more flexible. Now you |\\n| | can use another tHead or no tHead, and you can chose some |\\n| | other tBody. |\\n| 2006-04-25 | Changed license to Apache Software License 2.0 |\\n|-----------------------------------------------------------------------------|\\n| Created 2003-01-10 | All changes are in the log above. | Updated 2006-04-25 |\\n\\\\----------------------------------------------------------------------------*/\\n\\n\\nfunction SortableTable(oTable, oSortTypes) {\\n\\n\\tthis.sortTypes = oSortTypes || [];\\n\\n\\tthis.sortColumn = null;\\n\\tthis.descending = null;\\n\\n\\tvar oThis = this;\\n\\tthis._headerOnclick = function (e) {\\n\\t\\toThis.headerOnclick(e);\\n\\t};\\n\\n\\tif (oTable) {\\n\\t\\tthis.setTable( oTable );\\n\\t\\tthis.document = oTable.ownerDocument || oTable.document;\\n\\t}\\n\\telse {\\n\\t\\tthis.document = document;\\n\\t}\\n\\n\\n\\t// only IE needs this\\n\\tvar win = this.document.defaultView || this.document.parentWindow;\\n\\tthis._onunload = function () {\\n\\t\\toThis.destroy();\\n\\t};\\n\\tif (win && typeof win.attachEvent != \\\"undefined\\\") {\\n\\t\\twin.attachEvent(\\\"onunload\\\", this._onunload);\\n\\t}\\n}\\n\\nSortableTable.gecko = navigator.product == \\\"Gecko\\\";\\nSortableTable.msie = /msie/i.test(navigator.userAgent);\\n// Mozilla is faster when doing the DOM manipulations on\\n// an orphaned element. MSIE is not\\nSortableTable.removeBeforeSort = SortableTable.gecko;\\n\\nSortableTable.prototype.onsort = function () {};\\n\\n// default sort order. true -> descending, false -> ascending\\nSortableTable.prototype.defaultDescending = false;\\n\\n// shared between all instances. This is intentional to allow external files\\n// to modify the prototype\\nSortableTable.prototype._sortTypeInfo = {};\\n\\nSortableTable.prototype.setTable = function (oTable) {\\n\\tif ( this.tHead )\\n\\t\\tthis.uninitHeader();\\n\\tthis.element = oTable;\\n\\tthis.setTHead( oTable.tHead );\\n\\tthis.setTBody( oTable.tBodies[0] );\\n};\\n\\nSortableTable.prototype.setTHead = function (oTHead) {\\n\\tif (this.tHead && this.tHead != oTHead )\\n\\t\\tthis.uninitHeader();\\n\\tthis.tHead = oTHead;\\n\\tthis.initHeader( this.sortTypes );\\n};\\n\\nSortableTable.prototype.setTBody = function (oTBody) {\\n\\tthis.tBody = oTBody;\\n};\\n\\nSortableTable.prototype.setSortTypes = function ( oSortTypes ) {\\n\\tif ( this.tHead )\\n\\t\\tthis.uninitHeader();\\n\\tthis.sortTypes = oSortTypes || [];\\n\\tif ( this.tHead )\\n\\t\\tthis.initHeader( this.sortTypes );\\n};\\n\\n// adds arrow containers and events\\n// also binds sort type to the header cells so that reordering columns does\\n// not break the sort types\\nSortableTable.prototype.initHeader = function (oSortTypes) {\\n\\tif (!this.tHead) return;\\n\\tvar cells = this.tHead.rows[0].cells;\\n\\tvar doc = this.tHead.ownerDocument || this.tHead.document;\\n\\tthis.sortTypes = oSortTypes || [];\\n\\tvar l = cells.length;\\n\\tvar img, c;\\n\\tfor (var i = 0; i < l; i++) {\\n\\t\\tc = cells[i];\\n\\t\\tif (this.sortTypes[i] != null && this.sortTypes[i] != \\\"None\\\") {\\n\\t\\t\\timg = doc.createElement(\\\"IMG\\\");\\n\\t\\t\\timg.src = \\\"images/blank.png\\\";\\n\\t\\t\\tc.appendChild(img);\\n\\t\\t\\tif (this.sortTypes[i] != null)\\n\\t\\t\\t\\tc._sortType = this.sortTypes[i];\\n\\t\\t\\tif (typeof c.addEventListener != \\\"undefined\\\")\\n\\t\\t\\t\\tc.addEventListener(\\\"click\\\", this._headerOnclick, false);\\n\\t\\t\\telse if (typeof c.attachEvent != \\\"undefined\\\")\\n\\t\\t\\t\\tc.attachEvent(\\\"onclick\\\", this._headerOnclick);\\n\\t\\t\\telse\\n\\t\\t\\t\\tc.onclick = this._headerOnclick;\\n\\t\\t}\\n\\t\\telse\\n\\t\\t{\\n\\t\\t\\tc.setAttribute( \\\"_sortType\\\", oSortTypes[i] );\\n\\t\\t\\tc._sortType = \\\"None\\\";\\n\\t\\t}\\n\\t}\\n\\tthis.updateHeaderArrows();\\n};\\n\\n// remove arrows and events\\nSortableTable.prototype.uninitHeader = function () {\\n\\tif (!this.tHead) return;\\n\\tvar cells = this.tHead.rows[0].cells;\\n\\tvar l = cells.length;\\n\\tvar c;\\n\\tfor (var i = 0; i < l; i++) {\\n\\t\\tc = cells[i];\\n\\t\\tif (c._sortType != null && c._sortType != \\\"None\\\") {\\n\\t\\t\\tc.removeChild(c.lastChild);\\n\\t\\t\\tif (typeof c.removeEventListener != \\\"undefined\\\")\\n\\t\\t\\t\\tc.removeEventListener(\\\"click\\\", this._headerOnclick, false);\\n\\t\\t\\telse if (typeof c.detachEvent != \\\"undefined\\\")\\n\\t\\t\\t\\tc.detachEvent(\\\"onclick\\\", this._headerOnclick);\\n\\t\\t\\tc._sortType = null;\\n\\t\\t\\tc.removeAttribute( \\\"_sortType\\\" );\\n\\t\\t}\\n\\t}\\n};\\n\\nSortableTable.prototype.updateHeaderArrows = function () {\\n\\tif (!this.tHead) return;\\n\\tvar cells = this.tHead.rows[0].cells;\\n\\tvar l = cells.length;\\n\\tvar img;\\n\\tfor (var i = 0; i < l; i++) {\\n\\t\\tif (cells[i]._sortType != null && cells[i]._sortType != \\\"None\\\") {\\n\\t\\t\\timg = cells[i].lastChild;\\n\\t\\t\\tif (i == this.sortColumn)\\n\\t\\t\\t\\timg.className = \\\"sort-arrow \\\" + (this.descending ? \\\"descending\\\" : \\\"ascending\\\");\\n\\t\\t\\telse\\n\\t\\t\\t\\timg.className = \\\"sort-arrow\\\";\\n\\t\\t}\\n\\t}\\n};\\n\\nSortableTable.prototype.headerOnclick = function (e) {\\n\\t// find TD element\\n\\tvar el = e.target || e.srcElement;\\n\\twhile (el.tagName != \\\"TD\\\")\\n\\t\\tel = el.parentNode;\\n\\n\\tthis.sort(SortableTable.msie ? SortableTable.getCellIndex(el) : el.cellIndex);\\n};\\n\\n// IE returns wrong cellIndex when columns are hidden\\nSortableTable.getCellIndex = function (oTd) {\\n\\tvar cells = oTd.parentNode.childNodes\\n\\tvar l = cells.length;\\n\\tvar i;\\n\\tfor (i = 0; cells[i] != oTd && i < l; i++)\\n\\t\\t;\\n\\treturn i;\\n};\\n\\nSortableTable.prototype.getSortType = function (nColumn) {\\n\\treturn this.sortTypes[nColumn] || \\\"String\\\";\\n};\\n\\n// only nColumn is required\\n// if bDescending is left out the old value is taken into account\\n// if sSortType is left out the sort type is found from the sortTypes array\\n\\nSortableTable.prototype.sort = function (nColumn, bDescending, sSortType) {\\n\\tif (!this.tBody) return;\\n\\tif (sSortType == null)\\n\\t\\tsSortType = this.getSortType(nColumn);\\n\\n\\t// exit if None\\n\\tif (sSortType == \\\"None\\\")\\n\\t\\treturn;\\n\\n\\tif (bDescending == null) {\\n\\t\\tif (this.sortColumn != nColumn)\\n\\t\\t\\tthis.descending = this.defaultDescending;\\n\\t\\telse\\n\\t\\t\\tthis.descending = !this.descending;\\n\\t}\\n\\telse\\n\\t\\tthis.descending = bDescending;\\n\\n\\tthis.sortColumn = nColumn;\\n\\n\\tif (typeof this.onbeforesort == \\\"function\\\")\\n\\t\\tthis.onbeforesort();\\n\\n\\tvar f = this.getSortFunction(sSortType, nColumn);\\n\\tvar a = this.getCache(sSortType, nColumn);\\n\\tvar tBody = this.tBody;\\n\\n\\ta.sort(f);\\n\\n\\tif (this.descending)\\n\\t\\ta.reverse();\\n\\n\\tif (SortableTable.removeBeforeSort) {\\n\\t\\t// remove from doc\\n\\t\\tvar nextSibling = tBody.nextSibling;\\n\\t\\tvar p = tBody.parentNode;\\n\\t\\tp.removeChild(tBody);\\n\\t}\\n\\n\\t// insert in the new order\\n\\tvar l = a.length;\\n\\tfor (var i = 0; i < l; i++)\\n\\t\\ttBody.appendChild(a[i].element);\\n\\n\\tif (SortableTable.removeBeforeSort) {\\n\\t\\t// insert into doc\\n\\t\\tp.insertBefore(tBody, nextSibling);\\n\\t}\\n\\n\\tthis.updateHeaderArrows();\\n\\n\\tthis.destroyCache(a);\\n\\n\\tif (typeof this.onsort == \\\"function\\\")\\n\\t\\tthis.onsort();\\n};\\n\\nSortableTable.prototype.asyncSort = function (nColumn, bDescending, sSortType) {\\n\\tvar oThis = this;\\n\\tthis._asyncsort = function () {\\n\\t\\toThis.sort(nColumn, bDescending, sSortType);\\n\\t};\\n\\twindow.setTimeout(this._asyncsort, 1);\\n};\\n\\nSortableTable.prototype.getCache = function (sType, nColumn) {\\n\\tif (!this.tBody) return [];\\n\\tvar rows = this.tBody.rows;\\n\\tvar l = rows.length;\\n\\tvar a = new Array(l);\\n\\tvar r;\\n\\tfor (var i = 0; i < l; i++) {\\n\\t\\tr = rows[i];\\n\\t\\ta[i] = {\\n\\t\\t\\tvalue:\\t\\tthis.getRowValue(r, sType, nColumn),\\n\\t\\t\\telement:\\tr\\n\\t\\t};\\n\\t};\\n\\treturn a;\\n};\\n\\nSortableTable.prototype.destroyCache = function (oArray) {\\n\\tvar l = oArray.length;\\n\\tfor (var i = 0; i < l; i++) {\\n\\t\\toArray[i].value = null;\\n\\t\\toArray[i].element = null;\\n\\t\\toArray[i] = null;\\n\\t}\\n};\\n\\nSortableTable.prototype.getRowValue = function (oRow, sType, nColumn) {\\n\\t// if we have defined a custom getRowValue use that\\n\\tif (this._sortTypeInfo[sType] && this._sortTypeInfo[sType].getRowValue)\\n\\t\\treturn this._sortTypeInfo[sType].getRowValue(oRow, nColumn);\\n\\n\\tvar s;\\n\\tvar c = oRow.cells[nColumn];\\n\\tif (typeof c.innerText != \\\"undefined\\\")\\n\\t\\ts = c.innerText;\\n\\telse\\n\\t\\ts = SortableTable.getInnerText(c);\\n\\treturn this.getValueFromString(s, sType);\\n};\\n\\nSortableTable.getInnerText = function (oNode) {\\n\\tvar s = \\\"\\\";\\n\\tvar cs = oNode.childNodes;\\n\\tvar l = cs.length;\\n\\tfor (var i = 0; i < l; i++) {\\n\\t\\tswitch (cs[i].nodeType) {\\n\\t\\t\\tcase 1: //ELEMENT_NODE\\n\\t\\t\\t\\ts += SortableTable.getInnerText(cs[i]);\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\tcase 3:\\t//TEXT_NODE\\n\\t\\t\\t\\ts += cs[i].nodeValue;\\n\\t\\t\\t\\tbreak;\\n\\t\\t}\\n\\t}\\n\\treturn s;\\n};\\n\\nSortableTable.prototype.getValueFromString = function (sText, sType) {\\n\\tif (this._sortTypeInfo[sType])\\n\\t\\treturn this._sortTypeInfo[sType].getValueFromString( sText );\\n\\treturn sText;\\n\\t/*\\n\\tswitch (sType) {\\n\\t\\tcase \\\"Number\\\":\\n\\t\\t\\treturn Number(sText);\\n\\t\\tcase \\\"CaseInsensitiveString\\\":\\n\\t\\t\\treturn sText.toUpperCase();\\n\\t\\tcase \\\"Date\\\":\\n\\t\\t\\tvar parts = sText.split(\\\"-\\\");\\n\\t\\t\\tvar d = new Date(0);\\n\\t\\t\\td.setFullYear(parts[0]);\\n\\t\\t\\td.setDate(parts[2]);\\n\\t\\t\\td.setMonth(parts[1] - 1);\\n\\t\\t\\treturn d.valueOf();\\n\\t}\\n\\treturn sText;\\n\\t*/\\n\\t};\\n\\nSortableTable.prototype.getSortFunction = function (sType, nColumn) {\\n\\tif (this._sortTypeInfo[sType])\\n\\t\\treturn this._sortTypeInfo[sType].compare;\\n\\treturn SortableTable.basicCompare;\\n};\\n\\nSortableTable.prototype.destroy = function () {\\n\\tthis.uninitHeader();\\n\\tvar win = this.document.parentWindow;\\n\\tif (win && typeof win.detachEvent != \\\"undefined\\\") {\\t// only IE needs this\\n\\t\\twin.detachEvent(\\\"onunload\\\", this._onunload);\\n\\t}\\n\\tthis._onunload = null;\\n\\tthis.element = null;\\n\\tthis.tHead = null;\\n\\tthis.tBody = null;\\n\\tthis.document = null;\\n\\tthis._headerOnclick = null;\\n\\tthis.sortTypes = null;\\n\\tthis._asyncsort = null;\\n\\tthis.onsort = null;\\n};\\n\\n// Adds a sort type to all instance of SortableTable\\n// sType : String - the identifier of the sort type\\n// fGetValueFromString : function ( s : string ) : T - A function that takes a\\n// string and casts it to a desired format. If left out the string is just\\n// returned\\n// fCompareFunction : function ( n1 : T, n2 : T ) : Number - A normal JS sort\\n// compare function. Takes two values and compares them. If left out less than,\\n// <, compare is used\\n// fGetRowValue : function( oRow : HTMLTRElement, nColumn : int ) : T - A function\\n// that takes the row and the column index and returns the value used to compare.\\n// If left out then the innerText is first taken for the cell and then the\\n// fGetValueFromString is used to convert that string the desired value and type\\n\\nSortableTable.prototype.addSortType = function (sType, fGetValueFromString, fCompareFunction, fGetRowValue) {\\n\\tthis._sortTypeInfo[sType] = {\\n\\t\\ttype:\\t\\t\\t\\tsType,\\n\\t\\tgetValueFromString:\\tfGetValueFromString || SortableTable.idFunction,\\n\\t\\tcompare:\\t\\t\\tfCompareFunction || SortableTable.basicCompare,\\n\\t\\tgetRowValue:\\t\\tfGetRowValue\\n\\t};\\n};\\n\\n// this removes the sort type from all instances of SortableTable\\nSortableTable.prototype.removeSortType = function (sType) {\\n\\tdelete this._sortTypeInfo[sType];\\n};\\n\\nSortableTable.basicCompare = function compare(n1, n2) {\\n\\tif (n1.value < n2.value)\\n\\t\\treturn -1;\\n\\tif (n2.value < n1.value)\\n\\t\\treturn 1;\\n\\treturn 0;\\n};\\n\\nSortableTable.idFunction = function (x) {\\n\\treturn x;\\n};\\n\\nSortableTable.toUpperCase = function (s) {\\n\\treturn s.toUpperCase();\\n};\\n\\nSortableTable.toDate = function (s) {\\n\\tvar parts = s.split(\\\"-\\\");\\n\\tvar d = new Date(0);\\n\\td.setFullYear(parts[0]);\\n\\td.setDate(parts[2]);\\n\\td.setMonth(parts[1] - 1);\\n\\treturn d.valueOf();\\n};\\n\\n\\n// add sort types\\nSortableTable.prototype.addSortType(\\\"Number\\\", Number);\\nSortableTable.prototype.addSortType(\\\"CaseInsensitiveString\\\", SortableTable.toUpperCase);\\nSortableTable.prototype.addSortType(\\\"Date\\\", SortableTable.toDate);\\nSortableTable.prototype.addSortType(\\\"String\\\");\\n// None is a special case\\n\"","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\nmodule.exports = function(src) {\n\tfunction log(error) {\n\t\t(typeof console !== \"undefined\")\n\t\t&& (console.error || console.log)(\"[Script Loader]\", error);\n\t}\n\n\t// Check for IE =< 8\n\tfunction isIE() {\n\t\treturn typeof attachEvent !== \"undefined\" && typeof addEventListener === \"undefined\";\n\t}\n\n\ttry {\n\t\tif (typeof execScript !== \"undefined\" && isIE()) {\n\t\t\texecScript(src);\n\t\t} else if (typeof eval !== \"undefined\") {\n\t\t\teval.call(null, src);\n\t\t} else {\n\t\t\tlog(\"EvalError: No eval function available\");\n\t\t}\n\t} catch (error) {\n\t\tlog(error);\n\t}\n}\n","require(\"!!/home/travis/build/koalyptus/TableFilter/node_modules/script-loader/addScript.js\")(require(\"!!/home/travis/build/koalyptus/TableFilter/node_modules/raw-loader/index.js!/home/travis/build/koalyptus/TableFilter/libs/sortabletable.js\"))","\nmodule.exports = formatter;\nmodule.exports.default = formatter;\n\nfunction formatter(options) {\n options = options || {};\n\n\n // *********************************************************************************************\n // Set defaults for negatives\n // options.negative, options.negativeOut, options.separator retained for backward compatibility\n // *********************************************************************************************\n\n // type of negative; default left\n options.negativeType = options.negativeType || (options.negative === 'R' ? 'right' : 'left')\n\n // negative symbols '-' or '()'\n if (typeof options.negativeLeftSymbol !== 'string') {\n switch (options.negativeType) {\n case 'left':\n options.negativeLeftSymbol = '-';\n break;\n case 'brackets':\n options.negativeLeftSymbol = '(';\n break;\n default:\n options.negativeLeftSymbol = '';\n }\n }\n if (typeof options.negativeRightSymbol !== 'string') {\n switch (options.negativeType) {\n case 'right':\n options.negativeRightSymbol = '-';\n break;\n case 'brackets':\n options.negativeRightSymbol = ')';\n break;\n default:\n options.negativeRightSymbol = '';\n }\n }\n\n // whether negative symbol should be inside/outside prefix and suffix\n\n if (typeof options.negativeLeftOut !== \"boolean\") {\n options.negativeLeftOut = (options.negativeOut === false ? false : true);\n }\n if (typeof options.negativeRightOut !== \"boolean\") {\n options.negativeRightOut = (options.negativeOut === false ? false : true);\n }\n\n //prefix and suffix\n options.prefix = options.prefix || '';\n options.suffix = options.suffix || '';\n\n //separators\n if (typeof options.integerSeparator !== 'string') {\n options.integerSeparator = (typeof options.separator === 'string' ? options.separator : ',');\n }\n options.decimalsSeparator = typeof options.decimalsSeparator === 'string' ? options.decimalsSeparator : '';\n options.decimal = options.decimal || '.';\n\n //padders\n options.padLeft = options.padLeft || -1 //default no padding\n options.padRight = options.padRight || -1 //default no padding\n\n function format(number, overrideOptions) {\n overrideOptions = overrideOptions || {};\n\n if (number || number === 0) {\n number = '' + number;//convert number to string if it isn't already\n } else {\n return '';\n }\n\n //identify a negative number and make it absolute\n var output = [];\n var negative = number.charAt(0) === '-';\n number = number.replace(/^\\-/g, '');\n\n //Prepare output with left hand negative and/or prefix\n if (!options.negativeLeftOut && !overrideOptions.noUnits) {\n output.push(options.prefix);\n }\n if (negative) {\n output.push(options.negativeLeftSymbol);\n }\n if (options.negativeLeftOut && !overrideOptions.noUnits) {\n output.push(options.prefix);\n }\n\n //Format core number\n number = number.split('.');\n if (options.round != null) round(number, options.round);\n if (options.truncate != null) number[1] = truncate(number[1], options.truncate);\n if (options.padLeft > 0) number[0] = padLeft(number[0], options.padLeft);\n if (options.padRight > 0) number[1] = padRight(number[1], options.padRight);\n if (!overrideOptions.noSeparator && number[1]) number[1] = addDecimalSeparators(number[1], options.decimalsSeparator);\n if (!overrideOptions.noSeparator && number[0]) number[0] = addIntegerSeparators(number[0], options.integerSeparator);\n output.push(number[0]);\n if (number[1]) {\n output.push(options.decimal);\n output.push(number[1]);\n }\n\n //Prepare output with right hand negative and/or prefix\n if (options.negativeRightOut && !overrideOptions.noUnits) {\n output.push(options.suffix);\n }\n if (negative) {\n output.push(options.negativeRightSymbol);\n }\n if (!options.negativeRightOut && !overrideOptions.noUnits) {\n output.push(options.suffix);\n }\n\n //join output and return\n return output.join('');\n }\n\n format.negative = options.negative;\n format.negativeOut = options.negativeOut;\n format.negativeType = options.negativeType;\n format.negativeLeftOut = options.negativeLeftOut;\n format.negativeLeftSymbol = options.negativeLeftSymbol;\n format.negativeRightOut = options.negativeRightOut;\n format.negativeRightSymbol = options.negativeRightSymbol;\n format.prefix = options.prefix;\n format.suffix = options.suffix;\n format.separate = options.separate;\n format.integerSeparator = options.integerSeparator;\n format.decimalsSeparator = options.decimalsSeparator;\n format.decimal = options.decimal;\n format.padLeft = options.padLeft;\n format.padRight = options.padRight;\n format.truncate = options.truncate;\n format.round = options.round;\n\n function unformat(number, allowedSeparators) {\n allowedSeparators = allowedSeparators || [];\n if (options.allowedSeparators) {\n options.allowedSeparators.forEach(function (s) { allowedSeparators.push (s); });\n }\n allowedSeparators.push(options.integerSeparator);\n allowedSeparators.push(options.decimalsSeparator);\n number = number.replace(options.prefix, '');\n number = number.replace(options.suffix, '');\n var newNumber = number;\n do {\n number = newNumber;\n for (var i = 0; i < allowedSeparators.length; i++) {\n newNumber = newNumber.replace(allowedSeparators[i], '');\n }\n } while (newNumber != number);\n return number;\n }\n format.unformat = unformat;\n\n function validate(number, allowedSeparators) {\n number = unformat(number, allowedSeparators);\n number = number.split(options.decimal);\n if (number.length > 2) {\n return false;\n } else if (options.truncate != null && number[1] && number[1].length > options.truncate) {\n return false;\n } else if (options.round != null && number[1] && number[1].length > options.round) {\n return false;\n } else {\n return /^-?\\d+\\.?\\d*$/.test(number);\n }\n }\n return format;\n}\n\n//where x is already the integer part of the number\nfunction addIntegerSeparators(x, separator) {\n x += '';\n if (!separator) return x;\n var rgx = /(\\d+)(\\d{3})/;\n while (rgx.test(x)) {\n x = x.replace(rgx, '$1' + separator + '$2');\n }\n return x;\n}\n\n//where x is already the decimal part of the number\nfunction addDecimalSeparators(x, separator) {\n x += '';\n if (!separator) return x;\n var rgx = /(\\d{3})(\\d+)/;\n while (rgx.test(x)) {\n x = x.replace(rgx, '$1' + separator + '$2');\n }\n return x;\n}\n\n//where x is the integer part of the number\nfunction padLeft(x, padding) {\n x = x + '';\n var buf = [];\n while (buf.length + x.length < padding) {\n buf.push('0');\n }\n return buf.join('') + x;\n}\n\n//where x is the decimals part of the number\nfunction padRight(x, padding) {\n if (x) {\n x += '';\n } else {\n x = '';\n }\n var buf = [];\n while (buf.length + x.length < padding) {\n buf.push('0');\n }\n return x + buf.join('');\n}\nfunction truncate(x, length) {\n if (x) {\n x += '';\n }\n if (x && x.length > length) {\n return x.substr(0, length);\n } else {\n return x;\n }\n}\n\n//where number is an array with 0th item as integer string and 1st item as decimal string (no negatives)\nfunction round(number, places) {\n if (number[1] && places >= 0 && number[1].length > places) {\n //truncate to correct number of decimal places\n var decim = number[1].slice(0, places);\n //if next digit was >= 5 we need to round up\n if (+(number[1].substr(places, 1)) >= 5) {\n //But first count leading zeros as converting to a number will loose them\n var leadingzeros = \"\";\n while (decim.charAt(0)===\"0\") {\n leadingzeros = leadingzeros + \"0\";\n decim = decim.substr(1);\n }\n //Then we can change decim to a number and add 1 before replacing leading zeros\n decim = (+decim + 1) + '';\n decim = leadingzeros + decim;\n if (decim.length > places) {\n //adding one has made it longer\n number[0] = (+number[0]+ +decim.charAt(0)) + ''; //add value of firstchar to the integer part\n decim = decim.substring(1); //ignore the 1st char at the beginning which is the carry to the integer part\n }\n }\n number[1] = decim;\n }\n return number;\n}\n"],"sourceRoot":""} \ No newline at end of file