From 7e57d87150fa8b3f64d1b4bc7a444f584865b3a1 Mon Sep 17 00:00:00 2001 From: "Marko B. Ludolph" Date: Wed, 1 Feb 2023 16:34:10 +0100 Subject: [PATCH] Removed TreeColumns and unused variables --- slick.core.js | 175 ------------------------------------------- slick.grid.js | 200 +------------------------------------------------- 2 files changed, 4 insertions(+), 371 deletions(-) diff --git a/slick.core.js b/slick.core.js index ab230a88..8f29058c 100644 --- a/slick.core.js +++ b/slick.core.js @@ -495,180 +495,6 @@ }; } - /** - * - * @param {Array} treeColumns Array com levels of columns - * @returns {{hasDepth: 'hasDepth', getTreeColumns: 'getTreeColumns', extractColumns: 'extractColumns', getDepth: 'getDepth', getColumnsInDepth: 'getColumnsInDepth', getColumnsInGroup: 'getColumnsInGroup', visibleColumns: 'visibleColumns', filter: 'filter', reOrder: reOrder}} - * @constructor - */ - function TreeColumns(treeColumns) { - - var columnsById = {}; - - function init() { - mapToId(treeColumns); - } - - function mapToId(columns) { - columns - .forEach(function (column) { - columnsById[column.id] = column; - - if (column.columns) - mapToId(column.columns); - }); - } - - function filter(node, condition) { - - return node.filter(function (column) { - - var valid = condition.call(column); - - if (valid && column.columns) - column.columns = filter(column.columns, condition); - - return valid && (!column.columns || column.columns.length); - }); - - } - - function sort(columns, grid) { - columns - .sort(function (a, b) { - var indexA = getOrDefault(grid.getColumnIndex(a.id)), - indexB = getOrDefault(grid.getColumnIndex(b.id)); - - return indexA - indexB; - }) - .forEach(function (column) { - if (column.columns) - sort(column.columns, grid); - }); - } - - function getOrDefault(value) { - return typeof value === 'undefined' ? -1 : value; - } - - function getDepth(node) { - if (node.length) - for (var i in node) - return getDepth(node[i]); - else if (node.columns) - return 1 + getDepth(node.columns); - else - return 1; - } - - function getColumnsInDepth(node, depth, current) { - var columns = []; - current = current || 0; - - if (depth == current) { - - if (node.length) - node.forEach(function(n) { - if (n.columns) - n.extractColumns = function() { - return extractColumns(n); - }; - }); - - return node; - } else - for (var i in node) - if (node[i].columns) { - columns = columns.concat(getColumnsInDepth(node[i].columns, depth, current + 1)); - } - - return columns; - } - - function extractColumns(node) { - var result = []; - - if (node.hasOwnProperty('length')) { - - for (var i = 0; i < node.length; i++) - result = result.concat(extractColumns(node[i])); - - } else { - - if (node.hasOwnProperty('columns')) - - result = result.concat(extractColumns(node.columns)); - - else - return node; - - } - - return result; - } - - function cloneTreeColumns() { - return extend([], treeColumns); - } - - init(); - - this.hasDepth = function () { - - for (var i in treeColumns) - { - if (treeColumns[i].hasOwnProperty('columns')) - return true; - } - - return false; - }; - - this.getTreeColumns = function () { - return treeColumns; - }; - - this.extractColumns = function () { - return this.hasDepth()? extractColumns(treeColumns): treeColumns; - }; - - this.getDepth = function () { - return getDepth(treeColumns); - }; - - this.getColumnsInDepth = function (depth) { - return getColumnsInDepth(treeColumns, depth); - }; - - this.getColumnsInGroup = function (groups) { - return extractColumns(groups); - }; - - this.visibleColumns = function () { - return filter(cloneTreeColumns(), function () { - return this.visible; - }); - }; - - this.filter = function (condition) { - return filter(cloneTreeColumns(), condition); - }; - - this.reOrder = function (grid) { - return sort(treeColumns, grid); - }; - - this.getById = function (id) { - return columnsById[id]; - }; - - this.getInIds = function (ids) { - return ids.map(function (id) { - return columnsById[id]; - }); - }; - } - /*** * Polyfill for Map to support old browsers but * benefit of the Map speed in modern browsers. @@ -1011,7 +837,6 @@ * @constructor */ "GlobalEditorLock": new EditorLock(), - "TreeColumns": TreeColumns, "keyCode": { SPACE: 8, diff --git a/slick.grid.js b/slick.grid.js index bb8dfacc..228d60ff 100644 --- a/slick.grid.js +++ b/slick.grid.js @@ -165,7 +165,6 @@ if (typeof Slick === "undefined") { var uid = "slickgrid_" + Math.round(1000000 * Math.random()); var self = this; var _focusSink, _focusSink2; - var _groupHeaders = []; var _headerScroller = []; var _headers = []; var _headerRows, _headerRowScroller, _headerRowSpacerL, _headerRowSpacerR; @@ -178,13 +177,12 @@ if (typeof Slick === "undefined") { var _canvas; var _style; var _boundAncestors = []; - var treeColumns; var stylesheet, columnCssRulesL, columnCssRulesR; var viewportH, viewportW; var canvasWidth, canvasWidthL, canvasWidthR; var headersWidth, headersWidthL, headersWidthR; var viewportHasHScroll, viewportHasVScroll; - var headerColumnWidthDiff = 0, headerColumnHeightDiff = 0, // border+padding + var headerColumnWidthDiff = 0, cellWidthDiff = 0, cellHeightDiff = 0; var absoluteColumnMinWidth; var hasFrozenRows = false; @@ -193,7 +191,6 @@ if (typeof Slick === "undefined") { var paneTopH = 0; var paneBottomH = 0; var viewportTopH = 0; - var viewportBottomH = 0; var topPanelH = 0; var headerRowH = 0; var footerRowH = 0; @@ -262,9 +259,6 @@ if (typeof Slick === "undefined") { var _headerL; var _headerR; - var _groupHeadersL; - var _groupHeadersR; - var _headerRowScrollerL; var _headerRowScrollerR; @@ -332,9 +326,6 @@ if (typeof Slick === "undefined") { if (!options.suppressCssChangesOnHiddenInit) { cacheCssForHiddenInit(); } - treeColumns = new Slick.TreeColumns(columns); - columns = treeColumns.extractColumns(); - updateColumnProps(); // validate loaded JavaScript modules against requested options @@ -390,17 +381,6 @@ if (typeof Slick === "undefined") { _headerScroller.push(_headerScrollerL); _headerScroller.push(_headerScrollerR); - if (treeColumns.hasDepth()) { - _groupHeadersL = []; - _groupHeadersR = []; - for (var index = 0; index < treeColumns.getDepth() - 1; index++) { - _groupHeadersL[index] = u.template("
", _headerScrollerL); - _groupHeadersR[index] = u.template("
", _headerScrollerR); - } - - _groupHeaders = [_groupHeadersL, _groupHeadersR]; - } - // Append the columnn containers to the headers _headerL = u.template("
", _headerScrollerL); _headerR = u.template("
", _headerScrollerR); @@ -564,7 +544,6 @@ if (typeof Slick === "undefined") { updateColumnCaches(); createColumnHeaders(); - createColumnGroupHeaders(); createColumnFooter(); setupColumnSort(); createCssRules(); @@ -1196,48 +1175,6 @@ if (typeof Slick === "undefined") { } } - function createColumnGroupHeaders() { - var columnsLength = 0; - var frozenColumnsValid = false; - - if (!treeColumns.hasDepth()) - return; - - for (var index = 0; index < _groupHeadersL.length; index++) { - - _groupHeadersL[index].replaceChildren(); - _groupHeadersR[index].replaceChildren(); - - var groupColumns = treeColumns.getColumnsInDepth(index); - - for (var indexGroup in groupColumns) { - var m = groupColumns[indexGroup]; - - columnsLength += m.extractColumns().length; - - if (hasFrozenColumns() && index === 0 && (columnsLength-1) === options.frozenColumn) - frozenColumnsValid = true; - - const el = u.template("
", hasFrozenColumns() && (columnsLength - 1) > options.frozenColumn ? _groupHeadersR[index]: _groupHeadersL[index]); - el.innerHTML = "" + m.name + ""; - el.setAttribute("id", "" + uid + m.id); - el.setAttribute("title", m.toolTip || ""); - el.classList.add(m.headerCssClass || "") - el.classList.add(hasFrozenColumns() && (columnsLength - 1) > options.frozenColumn? 'frozen': ''); - u.storage.put(el, "column", m); - } - - if (hasFrozenColumns() && index === 0 && !frozenColumnsValid) { - _groupHeadersL[index].replaceChildren(); - _groupHeadersR[index].replaceChildren(); - alert("All columns of group should to be grouped!"); - break; - } - } - - applyColumnGroupHeaderWidths(); - } - function handleHeaderMouseHoverOn(e) { e.target.classList.add("ui-state-hover"); } @@ -1509,75 +1446,6 @@ if (typeof Slick === "undefined") { }); } - function currentPositionInHeader(id) { - let currentPosition = 0; - let searching = true; - _headers.every((header) => { - const columns = header.querySelectorAll(".slick-header-column") - columns.every((column) => { - if(column.id == id) { - currentPosition = i; - searching = false; - } - return searching; - }); - return searching; - }); - - return currentPosition; - } - - function limitPositionInGroup(idColumn) { - var groupColumnOfPreviousPosition, - startLimit = 0, - endLimit = 0; - - treeColumns - .getColumnsInDepth(_groupHeadersL.length - 1) - .some(function (groupColumn) { - startLimit = endLimit; - endLimit += groupColumn.columns.length; - - groupColumn.columns.some(function (column) { - - if (column.id === idColumn) - groupColumnOfPreviousPosition = groupColumn; - - return groupColumnOfPreviousPosition; - }); - - return groupColumnOfPreviousPosition; - }); - - endLimit--; - - return { - start: startLimit, - end: endLimit, - group: groupColumnOfPreviousPosition - }; - } - - function remove(arr, elem) { - var index = arr.lastIndexOf(elem); - if(index > -1) { - arr.splice(index, 1); - remove(arr, elem); - } - } - - function columnPositionValidInGroup(item) { - var currentPosition = currentPositionInHeader(item.id); - var limit = limitPositionInGroup(u.storage.get(item, "column").id); - var positionValid = limit.start <= currentPosition && currentPosition <= limit.end; - - return { - limit: limit, - valid: positionValid, - message: positionValid ? '' : 'Column "'.concat(item.textContent, '" can be reordered only within the "', limit.group.name, '" group!') - }; - } - function setupColumnReorder() { if (sortableSideLeftInstance) { sortableSideLeftInstance.destroy(); @@ -1628,17 +1496,6 @@ if (typeof Slick === "undefined") { columnScrollTimer = null; var limit = null; - if (treeColumns.hasDepth()) { - var validPositionInGroup = columnPositionValidInGroup(e.item); - limit = validPositionInGroup.limit; - - cancel = !validPositionInGroup.valid; - - if (cancel) { - alert(validPositionInGroup.message); - } - } - if (cancel || !getEditorLock().commitCurrentEdit()) { return; } @@ -1960,7 +1817,6 @@ if (typeof Slick === "undefined") { } applyColumnHeaderWidths(); - applyColumnGroupHeaderWidths(); if (options.syncColumnCellResize) { applyColumnWidths(); } @@ -1975,7 +1831,6 @@ if (typeof Slick === "undefined") { var triggeredByColumn = resizeElms.resizeableElement.id.replace(uid, ""); if (trigger(self.onBeforeColumnsResize, { triggeredByColumn: triggeredByColumn }).getReturnValue() === true) { applyColumnHeaderWidths(); - applyColumnGroupHeaderWidths(); } var newWidth; for (j = 0; j < columns.length; j++) { @@ -2112,7 +1967,7 @@ if (typeof Slick === "undefined") { const v = ["borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom"]; const header = _headers[0]; - headerColumnWidthDiff = headerColumnHeightDiff = 0; + headerColumnWidthDiff = 0; cellWidthDiff = cellHeightDiff = 0; let el = u.template("", header); @@ -2120,9 +1975,6 @@ if (typeof Slick === "undefined") { h.forEach((val) => { headerColumnWidthDiff += u.toFloat(style[val]); }); - v.forEach((val) => { - headerColumnHeightDiff += u.toFloat(style[val]); - }) el.remove(); const r = u.template("
", _canvas[0]); @@ -2325,8 +2177,6 @@ if (typeof Slick === "undefined") { _focusSink = null; _focusSink2 = null; _groupHeaders = null; - _groupHeadersL = null; - _groupHeadersR = null; _headerL = null; _headerR = null; _headers = null; @@ -2900,7 +2750,6 @@ if (typeof Slick === "undefined") { function reRenderColumns(reRender) { applyColumnHeaderWidths(); - applyColumnGroupHeaderWidths(); updateCanvasWidth(true); trigger(self.onAutosizeColumns, { "columns": columns}); @@ -2934,38 +2783,6 @@ if (typeof Slick === "undefined") { return columnsById[id]; } - function applyColumnGroupHeaderWidths() { - if (!treeColumns.hasDepth()) - return; - - for (var depth = _groupHeadersL.length - 1; depth >= 0; depth--) { - - var groupColumns = treeColumns.getColumnsInDepth(depth); - - const groupHeaders = [_groupHeadersL[depth], _groupHeadersR[depth]]; - groupHeaders.forEach((groupHeader) => { - - var currentColumnIndex = 0; - - u.width(groupHeader, i === 0 ? getHeadersWidthL() : getHeadersWidthR()); - - groupHeader.children.forEach((groupHeaderColumn) => { - - var m = u.storage.get(groupHeaderColumn, "column"); - - m.width = 0; - - m.columns.forEach(function() { - const headerColumn = groupHeader.nextElementSibling.children[currentColumnIndex++]; - m.width += headerColumn.offsetWidth; - }); - - u.width(groupHeaderColumn, m.width - headerColumnWidthDiff); - }); - }); - } - } - function applyColumnHeaderWidths() { if (!initialized) @@ -3162,13 +2979,7 @@ if (typeof Slick === "undefined") { function setColumns(columnDefinitions) { trigger(self.onBeforeSetColumns, { previousColumns: columns, newColumns: columnDefinitions, grid: self }); - var _treeColumns = new Slick.TreeColumns(columnDefinitions); - if (_treeColumns.hasDepth()) { - treeColumns = _treeColumns; - columns = treeColumns.extractColumns(); - } else { - columns = columnDefinitions; - } + columns = columnDefinitions; updateColumnProps(); updateColumnCaches(); @@ -3179,13 +2990,11 @@ if (typeof Slick === "undefined") { invalidateAllRows(); createColumnHeaders(); - createColumnGroupHeaders(); createColumnFooter(); removeCssRules(); createCssRules(); resizeCanvas(); updateCanvasWidth(); - applyColumnHeaderWidths(); applyColumnWidths(); handleScroll(); if (getSelectionModel() && getSelectionModel().refreshSelections) { getSelectionModel().refreshSelections(); } @@ -3231,7 +3040,7 @@ if (typeof Slick === "undefined") { } if (!suppressColumnSet) { - setColumns(treeColumns.extractColumns()); + setColumns(columns); } if (options.enableMouseWheelScrollHandler && _viewport && (!slickMouseWheelInstances || slickMouseWheelInstances.length === 0)) { @@ -3797,7 +3606,6 @@ if (typeof Slick === "undefined") { paneTopH = 0; paneBottomH = 0; viewportTopH = 0; - viewportBottomH = 0; getViewportWidth(); getViewportHeight();