UNPKG

@true-directive/base

Version:

The set of base classes for the TrueDirective Grid

84 lines (83 loc) 2.92 kB
/** * Copyright (c) 2018-2019 Aleksey Melnikov, True Directive Company. * @link https://truedirective.com/ * @license MIT */ import { SortType } from '../classes/sort-info.class'; var SortPipe = /** @class */ (function () { function SortPipe() { } SortPipe.compare = function (v1, v2, sType) { if ((v1 === null || v1 === undefined) && (v2 === null || v2 === undefined)) { return 0; } if (v1 === null || v1 === undefined) { return sType === SortType.ASC ? -1 : 1; } if (v2 === null || v2 === undefined) { return sType === SortType.ASC ? 1 : -1; } if (v1 === v2) { return 0; } if (sType === SortType.ASC) { return v1 > v2 ? 1 : -1; } return v1 < v2 ? 1 : -1; }; SortPipe.prototype.transform = function (rows, sortings, groupedColumns) { if (groupedColumns === void 0) { groupedColumns = []; } if (!rows) { return []; } if (sortings === null || (sortings.length === 0 && groupedColumns.length === 0)) { return rows; } // Копируем массив и копию сортируем var rr = rows.concat().sort(function (a1, a2) { var r = 0; var _loop_1 = function (i) { var k = 1; var el = groupedColumns[i]; var sortInfo = sortings.find(function (s) { return s.fieldName === el.fieldName; }); if (sortInfo && sortInfo.sortType === SortType.DESC) { k = -1; } var v1 = a1[el.fieldName]; var v2 = a2[el.fieldName]; if ((v2 === null && v1 !== null) || v1 > v2) { r = 1 * k; return "break"; } else { if ((v1 === null && v2 !== null) || v1 < v2) { r = -1 * k; return "break"; } } }; for (var i = 0; i < groupedColumns.length; i++) { var state_1 = _loop_1(i); if (state_1 === "break") break; } if (r !== 0) { return r; } if (sortings.length === 0) { return 0; } for (var i = 0; i < sortings.length; i++) { var sortInfo = sortings[i]; var res = SortPipe.compare(a1[sortInfo.fieldName], a2[sortInfo.fieldName], sortInfo.sortType); if (res !== 0) { return res; } } return 0; }); return rr; }; return SortPipe; }()); export { SortPipe };