UNPKG

devexpress-reporting

Version:

DevExpress Reporting provides the capability to develop a reporting application to create and customize reports.

92 lines (91 loc) 3.94 kB
/** * DevExpress HTML/JS Reporting (viewer\internal\_sortingProcessor.js) * Version: 20.2.13 * Build date: Apr 10, 2023 * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED * License: https://www.devexpress.com/Support/EULAs/universal.xml */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _previewRequestWrapper_1 = require("./_previewRequestWrapper"); var SortingProcessor = (function () { function SortingProcessor(_getSortingStage) { this._getSortingStage = _getSortingStage; } SortingProcessor.prototype.doSorting = function (sortData, shiftKey, ctrlKey) { if (!sortData) return; if (ctrlKey) { if (this._detachSorting(sortData)) return; } else if (shiftKey) this._appendSorting(sortData); else this._applySorting(sortData); return true; }; SortingProcessor.prototype._applySorting = function (sortData) { var sortingStage = this._getSortingStage(); for (var i = 0; i < sortingStage.length; i++) { if (sortingStage[i] && sortingStage[i].Key === sortData.target) { var value = sortingStage[i].Value || []; for (var index = 0; index < value.length; index++) { if (value[index] && (value[index].fieldName === sortData.field)) { if (index != 0) { var x = value.splice(index, 1)[0]; this._changeSortOrder(x); value.unshift(x); } else this._changeSortOrder(value[index]); } else value[index].sortOrder = _previewRequestWrapper_1.ColumnSortOrder.None; } return; } } }; SortingProcessor.prototype._appendSorting = function (sortData) { var sortingStage = this._getSortingStage(); for (var i = 0; i < sortingStage.length; i++) { if (sortingStage[i] && sortingStage[i].Key === sortData.target) { var value = sortingStage[i].Value || []; for (var index = 0; index < value.length; index++) { if (value[index] && (value[index].fieldName === sortData.field)) { if (index != value.length - 1) { var x = value.splice(index, 1)[0]; this._changeSortOrder(x); value.push(x); return; } this._changeSortOrder(value[index]); return; } } } } }; SortingProcessor.prototype._detachSorting = function (sortData) { var skipProcessing = false; var sortingStage = this._getSortingStage(); for (var i = 0; i < sortingStage.length; i++) { if (sortingStage[i] && sortingStage[i].Key === sortData.target) { (sortingStage[i].Value || []).forEach(function (f) { if (f.sortOrder === _previewRequestWrapper_1.ColumnSortOrder.None) skipProcessing = true; else f.sortOrder = _previewRequestWrapper_1.ColumnSortOrder.None; }); return; } } return skipProcessing; }; SortingProcessor.prototype._changeSortOrder = function (fieldInfo) { fieldInfo.sortOrder = fieldInfo.sortOrder === _previewRequestWrapper_1.ColumnSortOrder.Ascending ? _previewRequestWrapper_1.ColumnSortOrder.Descending : _previewRequestWrapper_1.ColumnSortOrder.Ascending; }; return SortingProcessor; }()); exports.SortingProcessor = SortingProcessor;