dtable-utils 0.0.2 → 0.0.3-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -2
- package/dist/index.js +1 -1
- package/es/cell-value-get/cell-value.js +227 -19
- package/es/cell-value-get/collaborator.js +9 -3
- package/es/cell-value-get/digital-sign.js +1 -1
- package/es/cell-value-get/geolocation.js +29 -5
- package/es/cell-value-get/long-text.js +1 -1
- package/es/cell-value-get/number.js +42 -18
- package/es/cell-value-get/option.js +17 -7
- package/es/cell-value-get/rate.js +6 -0
- package/es/cell-value-set/date.js +20 -0
- package/es/cell-value-set/number.js +53 -1
- package/es/color/gradient-color.js +100 -0
- package/es/column/color.js +415 -0
- package/es/column/{common.js → core.js} +3 -15
- package/es/column/date.js +2 -3
- package/es/column/number.js +3 -5
- package/es/column/option.js +115 -0
- package/es/common.js +10 -1
- package/es/constants/color.js +16 -0
- package/es/constants/column-permission.js +7 -0
- package/es/constants/column.js +127 -2
- package/es/constants/filter/index.js +5 -1
- package/es/constants/grid-header.js +6 -0
- package/es/constants/group.js +23 -0
- package/es/constants/limit.js +3 -0
- package/es/constants/reg.js +4 -0
- package/es/constants/row-color.js +11 -0
- package/es/constants/sort.js +11 -0
- package/es/date.js +1 -1
- package/es/filter/core.js +287 -0
- package/es/filter/filter-column/array.js +82 -0
- package/es/filter/filter-column/checkbox.js +8 -0
- package/es/filter/filter-column/collaborator.js +67 -0
- package/es/filter/filter-column/creator.js +50 -0
- package/es/filter/filter-column/date.js +59 -0
- package/es/filter/filter-column/digital-sign.js +26 -0
- package/es/filter/filter-column/file.js +24 -0
- package/es/filter/filter-column/formula.js +49 -0
- package/es/filter/filter-column/geolocation.js +53 -0
- package/es/filter/filter-column/link.js +12 -0
- package/es/filter/filter-column/long-text.js +25 -0
- package/es/filter/filter-column/multiple-select.js +60 -0
- package/es/filter/filter-column/number.js +93 -0
- package/es/filter/filter-column/single-select.js +41 -0
- package/es/filter/filter-column/text.js +55 -0
- package/es/filter/filter-row.js +198 -0
- package/es/group/core.js +107 -0
- package/es/group/group-row.js +366 -0
- package/es/index.js +62 -10
- package/es/link/core.js +78 -0
- package/es/number.js +13 -0
- package/es/row/color.js +278 -0
- package/es/row/core.js +161 -0
- package/es/sort/core.js +32 -0
- package/es/sort/sort-column/array.js +63 -0
- package/es/sort/sort-column/checkbox.js +15 -0
- package/es/sort/sort-column/collaborator.js +9 -0
- package/es/sort/sort-column/date.js +25 -0
- package/es/sort/sort-column/formula.js +40 -0
- package/es/sort/sort-column/link.js +23 -0
- package/es/sort/sort-column/multiple-select.js +45 -0
- package/es/sort/sort-column/number.js +18 -0
- package/es/sort/sort-column/single-select.js +22 -0
- package/es/sort/sort-column/text.js +47 -0
- package/es/sort/sort-row.js +126 -0
- package/es/table/column.js +27 -0
- package/es/table/core.js +14 -0
- package/es/table/index.js +14 -0
- package/es/table/row.js +25 -0
- package/es/validate/filter.js +1 -1
- package/es/validate/geolocation.js +5 -0
- package/es/view/core.js +135 -0
- package/es/view/formula.js +143 -0
- package/es/view/group.js +32 -0
- package/es/view/summaries.js +179 -0
- package/lib/cell-value-get/cell-value.js +231 -18
- package/lib/cell-value-get/collaborator.js +9 -2
- package/lib/cell-value-get/digital-sign.js +1 -1
- package/lib/cell-value-get/geolocation.js +30 -5
- package/lib/cell-value-get/long-text.js +1 -1
- package/lib/cell-value-get/number.js +42 -17
- package/lib/cell-value-get/option.js +18 -6
- package/lib/cell-value-get/rate.js +10 -0
- package/lib/cell-value-set/date.js +24 -0
- package/lib/cell-value-set/number.js +53 -0
- package/lib/color/gradient-color.js +110 -0
- package/lib/column/color.js +424 -0
- package/lib/column/{common.js → core.js} +3 -16
- package/lib/column/date.js +2 -3
- package/lib/column/number.js +3 -5
- package/lib/column/option.js +123 -0
- package/lib/common.js +14 -0
- package/lib/constants/color.js +20 -0
- package/lib/constants/column-permission.js +11 -0
- package/lib/constants/column.js +134 -1
- package/lib/constants/filter/index.js +5 -0
- package/lib/constants/grid-header.js +10 -0
- package/lib/constants/group.js +36 -0
- package/lib/constants/limit.js +7 -0
- package/lib/constants/reg.js +9 -0
- package/lib/constants/row-color.js +17 -0
- package/lib/constants/sort.js +18 -0
- package/lib/filter/core.js +301 -0
- package/lib/filter/filter-column/array.js +86 -0
- package/lib/filter/filter-column/checkbox.js +12 -0
- package/lib/filter/filter-column/collaborator.js +75 -0
- package/lib/filter/filter-column/creator.js +54 -0
- package/lib/filter/filter-column/date.js +63 -0
- package/lib/filter/filter-column/digital-sign.js +30 -0
- package/lib/filter/filter-column/file.js +28 -0
- package/lib/filter/filter-column/formula.js +53 -0
- package/lib/filter/filter-column/geolocation.js +57 -0
- package/lib/filter/filter-column/link.js +16 -0
- package/lib/filter/filter-column/long-text.js +29 -0
- package/lib/filter/filter-column/multiple-select.js +68 -0
- package/lib/filter/filter-column/number.js +97 -0
- package/lib/filter/filter-column/single-select.js +45 -0
- package/lib/filter/filter-column/text.js +59 -0
- package/lib/filter/filter-row.js +204 -0
- package/lib/group/core.js +117 -0
- package/lib/group/group-row.js +377 -0
- package/lib/index.js +176 -6
- package/lib/link/core.js +90 -0
- package/lib/number.js +18 -0
- package/lib/row/color.js +286 -0
- package/lib/row/core.js +170 -0
- package/lib/sort/core.js +37 -0
- package/lib/sort/sort-column/array.js +67 -0
- package/lib/sort/sort-column/checkbox.js +19 -0
- package/lib/sort/sort-column/collaborator.js +13 -0
- package/lib/sort/sort-column/date.js +29 -0
- package/lib/sort/sort-column/formula.js +44 -0
- package/lib/sort/sort-column/link.js +27 -0
- package/lib/sort/sort-column/multiple-select.js +50 -0
- package/lib/sort/sort-column/number.js +22 -0
- package/lib/sort/sort-column/single-select.js +26 -0
- package/lib/sort/sort-column/text.js +52 -0
- package/lib/sort/sort-row.js +136 -0
- package/lib/table/column.js +32 -0
- package/lib/table/core.js +18 -0
- package/lib/table/index.js +18 -0
- package/lib/table/row.js +30 -0
- package/lib/validate/filter.js +3 -3
- package/lib/validate/geolocation.js +9 -0
- package/lib/view/core.js +144 -0
- package/lib/view/formula.js +150 -0
- package/lib/view/group.js +36 -0
- package/lib/view/summaries.js +185 -0
- package/package.json +4 -2
package/es/index.js
CHANGED
|
@@ -1,26 +1,78 @@
|
|
|
1
1
|
export { CellType } from './constants/cell-type.js';
|
|
2
|
-
export { COLLABORATOR_COLUMN_TYPES, COLUMNS_ICON_CONFIG, DATE_COLUMN_OPTIONS, DEFAULT_DATE_FORMAT, DEFAULT_NUMBER_FORMAT, DURATION_DECIMAL_DIGITS, DURATION_FORMATS, DURATION_FORMATS_MAP, DURATION_ZERO_DISPLAY, NUMERIC_COLUMNS_TYPES } from './constants/column.js';
|
|
3
|
-
export { FILTER_ERR_MSG } from './constants/filter/index.js';
|
|
2
|
+
export { COLLABORATOR_COLUMN_TYPES, COLUMNS_ICON_CONFIG, COLUMN_OPTIONS, DATE_COLUMN_OPTIONS, DATE_DEFAULT_TYPES, DATE_FORMAT_MAP, DATE_UNIT, DEFAULT_DATE_FORMAT, DEFAULT_NUMBER_FORMAT, DURATION_DECIMAL_DIGITS, DURATION_FORMATS, DURATION_FORMATS_MAP, DURATION_ZERO_DISPLAY, FILL_DEFAULT_VALUE_COLUMNS_TYPE, MULTIPLE_CELL_VALUE_COLUMN_TYPE_MAP, NOT_SUPPORT_EDIT_COLUMN_TYPE_MAP, NUMERIC_COLUMNS_TYPES, SINGLE_CELL_VALUE_COLUMN_TYPE_MAP, UTC_FORMAT_DEFAULT } from './constants/column.js';
|
|
3
|
+
export { FILTER_CONJUNCTION_TYPE, FILTER_ERR_MSG } from './constants/filter/index.js';
|
|
4
4
|
export { FORMULA_COLUMN_TYPES_MAP, FORMULA_RESULT_TYPE } from './constants/formula.js';
|
|
5
5
|
export { HIGHLIGHT_COLORS, SELECT_OPTION_COLORS } from './constants/select-option.js';
|
|
6
|
-
export {
|
|
6
|
+
export { NUMBER_SORTER_COLUMN_TYPES, SORT_COLUMN_OPTIONS, SORT_TYPE, TEXT_SORTER_COLUMN_TYPES } from './constants/sort.js';
|
|
7
|
+
export { DISPLAY_GROUP_DATE_GRANULARITY, DISPLAY_GROUP_GEOLOCATION_GRANULARITY, GROUP_DATE_GRANULARITY, GROUP_GEOLOCATION_GRANULARITY, MAX_GROUP_LEVEL, SUPPORT_GROUP_COLUMN_TYPES } from './constants/group.js';
|
|
8
|
+
export { COLUMN_PERMISSION_TYPE } from './constants/column-permission.js';
|
|
9
|
+
export { REG_NUMBER_DIGIT, REG_STRING_NUMBER_PARTS } from './constants/reg.js';
|
|
10
|
+
export { COLOR_GRADATION_OPTIONS } from './constants/color.js';
|
|
11
|
+
export { HEADER_HEIGHT_TYPE } from './constants/grid-header.js';
|
|
12
|
+
export { generatorBase64Code, isEmpty } from './common.js';
|
|
13
|
+
export { getTableById } from './table/index.js';
|
|
14
|
+
export { convertRow, isTableRows } from './row/core.js';
|
|
15
|
+
export { default as RowColorUtils } from './row/color.js';
|
|
16
|
+
export { getLinkColumnsUsedInFilters, getViewById, isDefaultView, isFilterView, isGroupView, isSortView } from './view/core.js';
|
|
17
|
+
export { getSummaries, getSummariesWithSubgroups, updateGroupSummaries } from './view/summaries.js';
|
|
18
|
+
export { getFormulaColumnsContainLinks, getSortedFormulaColumns, getSortedFormulaColumnsContainLinks, transLink2LinkFormula } from './view/formula.js';
|
|
19
|
+
export { getGroupByPath } from './view/group.js';
|
|
20
|
+
export { getLinkById, getLinkCellValue, getLinkTableID, getLinkedTableID, isValidLink } from './link/core.js';
|
|
7
21
|
export { getDateDisplayString } from './cell-value-get/date.js';
|
|
8
22
|
export { getDurationDisplayString } from './cell-value-get/duration.js';
|
|
9
|
-
export { getNumberDisplayString, replaceNumberNotAllowInput } from './cell-value-get/number.js';
|
|
10
|
-
export { getMultipleOptionName, getOptionName } from './cell-value-get/option.js';
|
|
11
|
-
export { getCollaboratorsName, getCollaboratorsNames } from './cell-value-get/collaborator.js';
|
|
12
|
-
export { getGeolocationDisplayString } from './cell-value-get/geolocation.js';
|
|
23
|
+
export { getNumberDisplayString, getPrecisionNumber, replaceNumberNotAllowInput } from './cell-value-get/number.js';
|
|
24
|
+
export { getColumnOptionNameById, getMultipleOptionName, getOption, getOptionName } from './cell-value-get/option.js';
|
|
25
|
+
export { getCollaborator, getCollaboratorsName, getCollaboratorsNames } from './cell-value-get/collaborator.js';
|
|
26
|
+
export { getGeolocationByGranularity, getGeolocationDisplayString } from './cell-value-get/geolocation.js';
|
|
13
27
|
export { getDigitalSignImageUrl } from './cell-value-get/digital-sign.js';
|
|
14
28
|
export { getLongtextDisplayString } from './cell-value-get/long-text.js';
|
|
15
|
-
export { getCellValueDisplayString, getFormulaDisplayString } from './cell-value-get/cell-value.js';
|
|
16
|
-
export {
|
|
17
|
-
export {
|
|
29
|
+
export { getCellValueDisplayString, getCellValueStringResult, getFormulaDisplayString } from './cell-value-get/cell-value.js';
|
|
30
|
+
export { getRateDisplayString } from './cell-value-get/rate.js';
|
|
31
|
+
export { formatDurationToNumber, formatStringToNumber, getFloatNumber } from './cell-value-set/number.js';
|
|
32
|
+
export { formatTextToDate } from './cell-value-set/date.js';
|
|
33
|
+
export { createOption, generateOptionID, generatorCellOption, generatorCellOptions, getColumnOptions } from './column/option.js';
|
|
18
34
|
export { isDateColumn } from './column/date.js';
|
|
19
35
|
export { isNumberColumn, isNumericColumn } from './column/number.js';
|
|
36
|
+
export { default as ColumnColorUtils } from './column/color.js';
|
|
20
37
|
export { DateUtils } from './date.js';
|
|
38
|
+
export { isNumber, isNumberEqual } from './number.js';
|
|
21
39
|
export { ValidateFilter } from './validate/filter.js';
|
|
22
40
|
export { isValidEmail } from './validate/email.js';
|
|
41
|
+
export { isValidPosition } from './validate/geolocation.js';
|
|
42
|
+
export { deleteInvalidFilter, getFormattedFilter, getFormattedFilterOtherDate, getFormattedFilters, getValidFilters, getValidFiltersWithoutError, otherDate } from './filter/core.js';
|
|
43
|
+
export { checkboxFilter } from './filter/filter-column/checkbox.js';
|
|
44
|
+
export { collaboratorFilter } from './filter/filter-column/collaborator.js';
|
|
45
|
+
export { creatorFilter } from './filter/filter-column/creator.js';
|
|
46
|
+
export { dateFilter } from './filter/filter-column/date.js';
|
|
47
|
+
export { digitalSignFilter } from './filter/filter-column/digital-sign.js';
|
|
48
|
+
export { fileFilter } from './filter/filter-column/file.js';
|
|
49
|
+
export { formulaFilter } from './filter/filter-column/formula.js';
|
|
50
|
+
export { geolocationFilter } from './filter/filter-column/geolocation.js';
|
|
51
|
+
export { textFilter } from './filter/filter-column/text.js';
|
|
52
|
+
export { longTextFilter } from './filter/filter-column/long-text.js';
|
|
53
|
+
export { multipleSelectFilter } from './filter/filter-column/multiple-select.js';
|
|
54
|
+
export { numberFilter } from './filter/filter-column/number.js';
|
|
55
|
+
export { singleSelectFilter } from './filter/filter-column/single-select.js';
|
|
56
|
+
export { linkFilter } from './filter/filter-column/link.js';
|
|
57
|
+
export { filterRow, filterRows, getFilteredRowsWithoutFormulaCalculation } from './filter/filter-row.js';
|
|
58
|
+
export { getValidSorts, isValidSort } from './sort/core.js';
|
|
59
|
+
export { sortCheckbox } from './sort/sort-column/checkbox.js';
|
|
60
|
+
export { sortCollaborator } from './sort/sort-column/collaborator.js';
|
|
61
|
+
export { sortDate } from './sort/sort-column/date.js';
|
|
62
|
+
export { sortByArrayType } from './sort/sort-column/array.js';
|
|
63
|
+
export { sortFormula } from './sort/sort-column/formula.js';
|
|
64
|
+
export { sortLink } from './sort/sort-column/link.js';
|
|
65
|
+
export { getMultipleIndexesOrderbyOptions, sortMultipleSelect } from './sort/sort-column/multiple-select.js';
|
|
66
|
+
export { sortNumber } from './sort/sort-column/number.js';
|
|
67
|
+
export { sortSingleSelect } from './sort/sort-column/single-select.js';
|
|
68
|
+
export { compareString, sortText } from './sort/sort-column/text.js';
|
|
69
|
+
export { deleteInvalidSort, sortRowsWithMultiSorts, sortTableRows } from './sort/sort-row.js';
|
|
70
|
+
export { deleteInvalidGroupby, getValidGroupbys, isValidGroupby } from './group/core.js';
|
|
71
|
+
export { getGroupedRowsWithoutFormulaCalculation, groupTableRows, groupViewRows } from './group/group-row.js';
|
|
72
|
+
export { default as GradientColorUtils } from './color/gradient-color.js';
|
|
23
73
|
export { FILTER_COLUMN_OPTIONS } from './constants/filter/filter-column-options.js';
|
|
24
74
|
export { FILTER_TERM_MODIFIER_SHOW, FILTER_TERM_MODIFIER_TYPE } from './constants/filter/filter-modifier.js';
|
|
25
75
|
export { FILTER_PREDICATE_SHOW, FILTER_PREDICATE_TYPE } from './constants/filter/filter-predicate.js';
|
|
26
76
|
export { filterTermModifierIsWithin, filterTermModifierNotWithin } from './constants/filter/filter-is-within.js';
|
|
77
|
+
export { getTableColumnByKey, getTableColumnByName } from './table/column.js';
|
|
78
|
+
export { getRowById, getRowsByIds } from './table/row.js';
|
package/es/link/core.js
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* get link by id
|
|
5
|
+
* @param {array} links [{ _id, ... }]
|
|
6
|
+
* @param {string} linkId
|
|
7
|
+
* @returns object
|
|
8
|
+
*/
|
|
9
|
+
var getLinkById = function getLinkById(links, linkId) {
|
|
10
|
+
if (!Array.isArray(links) || !linkId) return null;
|
|
11
|
+
return links.find(function (link) {
|
|
12
|
+
return link._id === linkId;
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* check is valid link by link column's data
|
|
18
|
+
* @param {object} columnData
|
|
19
|
+
* @returns boolean
|
|
20
|
+
*/
|
|
21
|
+
var isValidLink = function isValidLink(linkColumnData) {
|
|
22
|
+
if (!linkColumnData) return false;
|
|
23
|
+
var link_id = linkColumnData.link_id,
|
|
24
|
+
table_id = linkColumnData.table_id,
|
|
25
|
+
other_table_id = linkColumnData.other_table_id,
|
|
26
|
+
display_column_key = linkColumnData.display_column_key;
|
|
27
|
+
return !!(link_id && table_id && other_table_id && display_column_key);
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* get current table's id
|
|
32
|
+
* @param {string} currentTableID
|
|
33
|
+
* @param {string} tableID
|
|
34
|
+
* @param {string} otherTableID
|
|
35
|
+
* @returns string
|
|
36
|
+
*/
|
|
37
|
+
var getLinkTableID = function getLinkTableID(currentTableID, tableID, otherTableID) {
|
|
38
|
+
return currentTableID === tableID ? tableID : otherTableID;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* get linked table's id
|
|
43
|
+
* @param {string} currentTableID
|
|
44
|
+
* @param {string} tableID
|
|
45
|
+
* @param {string} otherTableID
|
|
46
|
+
* @returns string
|
|
47
|
+
*/
|
|
48
|
+
var getLinkedTableID = function getLinkedTableID(currentTableID, tableID, otherTableID) {
|
|
49
|
+
return currentTableID === tableID ? otherTableID : tableID;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* get linked rows ids of the row id
|
|
54
|
+
* @param {array} links [ { _id: '', table1_id, table2_id: '', table1_table2_map: {}, table2_table1_map: {} }, ... ]
|
|
55
|
+
* @param {string} link_id
|
|
56
|
+
* @param {string} table1Id
|
|
57
|
+
* @param {string} table2Id
|
|
58
|
+
* @param {string} rowId
|
|
59
|
+
* @returns array, linked rows ids
|
|
60
|
+
*/
|
|
61
|
+
var getLinkCellValue = function getLinkCellValue(links, linkId, table1Id, table2Id, rowId) {
|
|
62
|
+
if (!Array.isArray(links) || links.length === 0 || !table1Id || !table2Id || !rowId) return [];
|
|
63
|
+
var linkBetween2Tables = getLinkById(links, linkId);
|
|
64
|
+
if (!linkBetween2Tables) return [];
|
|
65
|
+
var linkMap = {};
|
|
66
|
+
if (table1Id === table2Id) {
|
|
67
|
+
linkMap = linkBetween2Tables.table2_table1_map;
|
|
68
|
+
} else {
|
|
69
|
+
linkMap = linkBetween2Tables.table1_id === table1Id ? linkBetween2Tables.table1_table2_map : linkBetween2Tables.table2_table1_map;
|
|
70
|
+
}
|
|
71
|
+
var linkedRowIds = linkMap[rowId];
|
|
72
|
+
if (!linkedRowIds) {
|
|
73
|
+
return [];
|
|
74
|
+
}
|
|
75
|
+
return _toConsumableArray(linkedRowIds);
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
export { getLinkById, getLinkCellValue, getLinkTableID, getLinkedTableID, isValidLink };
|
package/es/number.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* check whether is number
|
|
3
|
+
* @param {number} number
|
|
4
|
+
* @returns boolean
|
|
5
|
+
*/
|
|
6
|
+
var isNumber = function isNumber(number) {
|
|
7
|
+
return (number || number === 0) && Object.prototype.toString.call(number) === '[object Number]';
|
|
8
|
+
};
|
|
9
|
+
var isNumberEqual = function isNumberEqual(number1, number2) {
|
|
10
|
+
return number1 === number2 || Math.abs(number1 - number2) < 0.00001;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export { isNumber, isNumberEqual };
|
package/es/row/color.js
ADDED
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
2
|
+
import { getTableColumnByKey } from '../table/column.js';
|
|
3
|
+
import { getRowsByIds } from '../table/row.js';
|
|
4
|
+
import { isTableRows } from './core.js';
|
|
5
|
+
import { getColumnOptions } from '../column/option.js';
|
|
6
|
+
import { getGeolocationDisplayString } from '../cell-value-get/geolocation.js';
|
|
7
|
+
import { ValidateFilter } from '../validate/filter.js';
|
|
8
|
+
import { deleteInvalidFilter, getFormattedFilters } from '../filter/core.js';
|
|
9
|
+
import { filterRow } from '../filter/filter-row.js';
|
|
10
|
+
import { ROW_COLOR_TYPE, ROW_COLOR_FOR_DUPLICATE_VALUES, SUPPORT_CHECKING_DUPLICATE_COLUMNS_TYPES } from '../constants/row-color.js';
|
|
11
|
+
import { CellType } from '../constants/cell-type.js';
|
|
12
|
+
|
|
13
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
14
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
15
|
+
var isValidRowColorRule = function isValidRowColorRule(rule, columns) {
|
|
16
|
+
var filters = rule.filters;
|
|
17
|
+
if (!filters || filters.length === 0) return false;
|
|
18
|
+
return filters.some(function (filter) {
|
|
19
|
+
return !ValidateFilter.validate(filter, columns).error_message;
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
var getValidRowColorRules = function getValidRowColorRules(colorRules, columns) {
|
|
23
|
+
return colorRules.filter(function (colorRule) {
|
|
24
|
+
return isValidRowColorRule(colorRule, columns);
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
var getOptionIdMap = function getOptionIdMap(options) {
|
|
28
|
+
if (!Array.isArray(options) || options.length === 0) return {};
|
|
29
|
+
var optionsMap = {};
|
|
30
|
+
options.forEach(function (option) {
|
|
31
|
+
optionsMap[option.id] = true;
|
|
32
|
+
});
|
|
33
|
+
return optionsMap;
|
|
34
|
+
};
|
|
35
|
+
var getFormattedDuplicateColumns = function getFormattedDuplicateColumns(columns, duplicateColumnKeys, _ref) {
|
|
36
|
+
var collaborators = _ref.collaborators;
|
|
37
|
+
var formattedColumns = [];
|
|
38
|
+
var _loop = function _loop() {
|
|
39
|
+
var key = duplicateColumnKeys[i];
|
|
40
|
+
var currColumn = columns.find(function (column) {
|
|
41
|
+
return column.key === key;
|
|
42
|
+
});
|
|
43
|
+
if (!currColumn) return "continue";
|
|
44
|
+
var type = currColumn.type,
|
|
45
|
+
data = currColumn.data;
|
|
46
|
+
var formattedColumnData = data;
|
|
47
|
+
if (!SUPPORT_CHECKING_DUPLICATE_COLUMNS_TYPES.includes(type)) return "continue";
|
|
48
|
+
if (type === CellType.SINGLE_SELECT || type === CellType.MULTIPLE_SELECT) {
|
|
49
|
+
var options = getColumnOptions(currColumn);
|
|
50
|
+
formattedColumnData = getOptionIdMap(options);
|
|
51
|
+
} else if (type === CellType.COLLABORATOR) {
|
|
52
|
+
var optionsMap = {};
|
|
53
|
+
if (Array.isArray(collaborators)) {
|
|
54
|
+
collaborators.forEach(function (collaborator) {
|
|
55
|
+
optionsMap[collaborator.email] = true;
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
formattedColumnData = optionsMap;
|
|
59
|
+
}
|
|
60
|
+
formattedColumns.push({
|
|
61
|
+
key: key,
|
|
62
|
+
type: type,
|
|
63
|
+
data: formattedColumnData
|
|
64
|
+
});
|
|
65
|
+
};
|
|
66
|
+
for (var i = 0; i < duplicateColumnKeys.length; i++) {
|
|
67
|
+
var _ret = _loop();
|
|
68
|
+
if (_ret === "continue") continue;
|
|
69
|
+
}
|
|
70
|
+
return formattedColumns;
|
|
71
|
+
};
|
|
72
|
+
var getDuplicateRowValue = function getDuplicateRowValue(row, columns, formulaRow) {
|
|
73
|
+
if (!row) return '';
|
|
74
|
+
var rowValue = columns.map(function (column) {
|
|
75
|
+
var type = column.type,
|
|
76
|
+
data = column.data,
|
|
77
|
+
key = column.key;
|
|
78
|
+
var cellValue = row[key];
|
|
79
|
+
switch (type) {
|
|
80
|
+
case CellType.SINGLE_SELECT:
|
|
81
|
+
{
|
|
82
|
+
return data[cellValue] ? cellValue : '';
|
|
83
|
+
}
|
|
84
|
+
case CellType.MULTIPLE_SELECT:
|
|
85
|
+
case CellType.COLLABORATOR:
|
|
86
|
+
{
|
|
87
|
+
if (!Array.isArray(cellValue) || cellValue.length === 0) return '';
|
|
88
|
+
return cellValue.filter(function (item) {
|
|
89
|
+
return data[item];
|
|
90
|
+
}).sort().join('');
|
|
91
|
+
}
|
|
92
|
+
case CellType.GEOLOCATION:
|
|
93
|
+
{
|
|
94
|
+
if (!cellValue) return '';
|
|
95
|
+
return getGeolocationDisplayString(cellValue, data) || '';
|
|
96
|
+
}
|
|
97
|
+
case CellType.NUMBER:
|
|
98
|
+
{
|
|
99
|
+
if (!cellValue && cellValue !== 0) return '';
|
|
100
|
+
return cellValue;
|
|
101
|
+
}
|
|
102
|
+
case CellType.FORMULA:
|
|
103
|
+
{
|
|
104
|
+
if (!formulaRow) return '';
|
|
105
|
+
cellValue = formulaRow[key];
|
|
106
|
+
return cellValue;
|
|
107
|
+
}
|
|
108
|
+
default:
|
|
109
|
+
{
|
|
110
|
+
return cellValue || '';
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}).join('_seatable_join_key_');
|
|
114
|
+
if (!rowValue) return '';
|
|
115
|
+
if (typeof ''.replaceAll !== 'function') {
|
|
116
|
+
// eslint-disable-next-line
|
|
117
|
+
String.prototype.replaceAll = function (s1, s2) {
|
|
118
|
+
return this.replace(new RegExp(s1, 'gm'), s2);
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
if (!rowValue.replaceAll('_seatable_join_key_', '')) return '';
|
|
122
|
+
return rowValue;
|
|
123
|
+
};
|
|
124
|
+
var getRowsColorBySingleSelectColumn = function getRowsColorBySingleSelectColumn(rows, columnKey, table) {
|
|
125
|
+
var colors = {};
|
|
126
|
+
var column = getTableColumnByKey(table, columnKey);
|
|
127
|
+
var options = getColumnOptions(column);
|
|
128
|
+
if (!Array.isArray(options) || options.length === 0) return {};
|
|
129
|
+
var option_id_color_map = {};
|
|
130
|
+
options.forEach(function (option) {
|
|
131
|
+
option_id_color_map[option.id] = option.color;
|
|
132
|
+
});
|
|
133
|
+
rows.forEach(function (row) {
|
|
134
|
+
var optionId = row[columnKey];
|
|
135
|
+
var color = optionId ? option_id_color_map[optionId] : '';
|
|
136
|
+
if (color) {
|
|
137
|
+
colors[row._id] = color;
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
return colors;
|
|
141
|
+
};
|
|
142
|
+
var getRowsColorByRules = function getRowsColorByRules(rows, view, table) {
|
|
143
|
+
var _ref2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},
|
|
144
|
+
username = _ref2.username,
|
|
145
|
+
userId = _ref2.userId;
|
|
146
|
+
var formula_rows = view.formula_rows,
|
|
147
|
+
colorbys = view.colorbys;
|
|
148
|
+
var _ref3 = colorbys || {},
|
|
149
|
+
type = _ref3.type,
|
|
150
|
+
color_by_rules = _ref3.color_by_rules;
|
|
151
|
+
if (type !== ROW_COLOR_TYPE.BY_RULES) return {};
|
|
152
|
+
var columns = table.columns;
|
|
153
|
+
var validColorRules = getValidRowColorRules(color_by_rules, columns);
|
|
154
|
+
var colorRulesLen = validColorRules.length;
|
|
155
|
+
var colors = {};
|
|
156
|
+
if (colorRulesLen === 0) return {};
|
|
157
|
+
validColorRules = validColorRules.map(function (colorRule) {
|
|
158
|
+
var filters = colorRule.filters;
|
|
159
|
+
var validFilters;
|
|
160
|
+
try {
|
|
161
|
+
validFilters = deleteInvalidFilter(filters, columns);
|
|
162
|
+
} catch (err) {
|
|
163
|
+
validFilters = [];
|
|
164
|
+
}
|
|
165
|
+
validFilters = getFormattedFilters(validFilters);
|
|
166
|
+
return _objectSpread(_objectSpread({}, colorRule), {}, {
|
|
167
|
+
filters: validFilters
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
rows.forEach(function (row) {
|
|
171
|
+
var rowId = row._id;
|
|
172
|
+
var formulaRow = formula_rows && formula_rows[rowId] || {};
|
|
173
|
+
for (var i = 0; i < colorRulesLen; i++) {
|
|
174
|
+
var colorRule = validColorRules[i];
|
|
175
|
+
var color = colorRule.color,
|
|
176
|
+
filter_conjunction = colorRule.filter_conjunction,
|
|
177
|
+
filters = colorRule.filters;
|
|
178
|
+
if (filterRow(row, filter_conjunction, filters, {
|
|
179
|
+
formulaRow: formulaRow,
|
|
180
|
+
username: username,
|
|
181
|
+
userId: userId
|
|
182
|
+
})) {
|
|
183
|
+
colors[rowId] = color;
|
|
184
|
+
break;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
return colors;
|
|
189
|
+
};
|
|
190
|
+
var getRowsColorByDuplicateValues = function getRowsColorByDuplicateValues(rows, view, table, _ref4) {
|
|
191
|
+
var collaborators = _ref4.collaborators;
|
|
192
|
+
var colorbys = view.colorbys,
|
|
193
|
+
formula_rows = view.formula_rows;
|
|
194
|
+
var color_by_duplicate_column_keys = colorbys.color_by_duplicate_column_keys;
|
|
195
|
+
if (!Array.isArray(color_by_duplicate_column_keys) || color_by_duplicate_column_keys.length === 0) return {};
|
|
196
|
+
var columns = table.columns;
|
|
197
|
+
var formattedColumns = getFormattedDuplicateColumns(columns, color_by_duplicate_column_keys, {
|
|
198
|
+
collaborators: collaborators
|
|
199
|
+
});
|
|
200
|
+
if (formattedColumns.length === 0) return {};
|
|
201
|
+
var colors = {};
|
|
202
|
+
var duplicate_rows_ids_map = {}; // row value: [ row_id ]
|
|
203
|
+
for (var i = 0; i < rows.length; i++) {
|
|
204
|
+
var row = rows[i];
|
|
205
|
+
var rowId = row._id;
|
|
206
|
+
var formulaRow = formula_rows && formula_rows[rowId];
|
|
207
|
+
var rowValue = getDuplicateRowValue(row, formattedColumns, formulaRow);
|
|
208
|
+
if (!rowValue) continue;
|
|
209
|
+
var validRowIds = duplicate_rows_ids_map[rowValue];
|
|
210
|
+
if (validRowIds && validRowIds.length > 0) {
|
|
211
|
+
colors[rowId] = ROW_COLOR_FOR_DUPLICATE_VALUES;
|
|
212
|
+
validRowIds.push(rowId);
|
|
213
|
+
var firstDuplicateRowId = validRowIds[0];
|
|
214
|
+
if (!colors[firstDuplicateRowId]) {
|
|
215
|
+
colors[firstDuplicateRowId] = ROW_COLOR_FOR_DUPLICATE_VALUES;
|
|
216
|
+
}
|
|
217
|
+
} else {
|
|
218
|
+
duplicate_rows_ids_map[rowValue] = [rowId];
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
return {
|
|
222
|
+
colors: colors,
|
|
223
|
+
duplicate_rows_ids_map: duplicate_rows_ids_map
|
|
224
|
+
};
|
|
225
|
+
};
|
|
226
|
+
var getRowsColor = function getRowsColor(rows, view, table, value) {
|
|
227
|
+
var _ref5 = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {},
|
|
228
|
+
username = _ref5.username,
|
|
229
|
+
userId = _ref5.userId;
|
|
230
|
+
var colorbys = view.colorbys;
|
|
231
|
+
if (!colorbys) return {};
|
|
232
|
+
var tableRows = isTableRows(rows) ? rows : getRowsByIds(table, rows);
|
|
233
|
+
if (tableRows.length === 0) return {};
|
|
234
|
+
var type = colorbys.type,
|
|
235
|
+
color_by_column = colorbys.color_by_column;
|
|
236
|
+
switch (type) {
|
|
237
|
+
case ROW_COLOR_TYPE.BY_COLUMN:
|
|
238
|
+
{
|
|
239
|
+
return {
|
|
240
|
+
colors: getRowsColorBySingleSelectColumn(tableRows, color_by_column, table)
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
case ROW_COLOR_TYPE.BY_RULES:
|
|
244
|
+
{
|
|
245
|
+
return {
|
|
246
|
+
colors: getRowsColorByRules(tableRows, view, table, {
|
|
247
|
+
username: username,
|
|
248
|
+
userId: userId
|
|
249
|
+
})
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
case ROW_COLOR_TYPE.BY_DUPLICATE_VALUES:
|
|
253
|
+
{
|
|
254
|
+
var _ref6 = value || {},
|
|
255
|
+
_ref6$collaborators = _ref6.collaborators,
|
|
256
|
+
collaborators = _ref6$collaborators === void 0 ? [] : _ref6$collaborators;
|
|
257
|
+
return getRowsColorByDuplicateValues(tableRows, view, table, {
|
|
258
|
+
collaborators: collaborators
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
default:
|
|
262
|
+
{
|
|
263
|
+
return {};
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
};
|
|
267
|
+
var RowColorUtils = {
|
|
268
|
+
isValidRowColorRule: isValidRowColorRule,
|
|
269
|
+
getValidRowColorRules: getValidRowColorRules,
|
|
270
|
+
getRowsColor: getRowsColor,
|
|
271
|
+
getFormattedDuplicateColumns: getFormattedDuplicateColumns,
|
|
272
|
+
getDuplicateRowValue: getDuplicateRowValue,
|
|
273
|
+
getRowsColorBySingleSelectColumn: getRowsColorBySingleSelectColumn,
|
|
274
|
+
getRowsColorByRules: getRowsColorByRules,
|
|
275
|
+
getRowsColorByDuplicateValues: getRowsColorByDuplicateValues
|
|
276
|
+
};
|
|
277
|
+
|
|
278
|
+
export { RowColorUtils as default };
|
package/es/row/core.js
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import _typeof from '@babel/runtime/helpers/typeof';
|
|
2
|
+
import { getFormulaDisplayString } from '../cell-value-get/cell-value.js';
|
|
3
|
+
import 'dayjs';
|
|
4
|
+
import '../constants/column.js';
|
|
5
|
+
import { getColumnOptionNameById } from '../cell-value-get/option.js';
|
|
6
|
+
import '../constants/group.js';
|
|
7
|
+
import { getLinkCellValue } from '../link/core.js';
|
|
8
|
+
import { isEmpty } from '../common.js';
|
|
9
|
+
import { CellType } from '../constants/cell-type.js';
|
|
10
|
+
import { CONVERT_ROW_COLUMNS_LIMIT } from '../constants/limit.js';
|
|
11
|
+
|
|
12
|
+
var isTableRows = function isTableRows(rows) {
|
|
13
|
+
return Array.isArray(rows) && _typeof(rows[0]) === 'object';
|
|
14
|
+
};
|
|
15
|
+
var convertRow = function convertRow(row, value, table, view, formulaResults, convertLinkID) {
|
|
16
|
+
var _ref = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {},
|
|
17
|
+
debug = _ref.debug;
|
|
18
|
+
var result = {};
|
|
19
|
+
// eslint-disable-next-line
|
|
20
|
+
if (row.hasOwnProperty('_id')) {
|
|
21
|
+
result._id = row._id;
|
|
22
|
+
}
|
|
23
|
+
// eslint-disable-next-line
|
|
24
|
+
if (row.hasOwnProperty('_mtime')) {
|
|
25
|
+
result._mtime = row._mtime;
|
|
26
|
+
}
|
|
27
|
+
// eslint-disable-next-line
|
|
28
|
+
if (row.hasOwnProperty('_ctime')) {
|
|
29
|
+
result._ctime = row._ctime;
|
|
30
|
+
}
|
|
31
|
+
var columns = table.columns;
|
|
32
|
+
if (columns.length > CONVERT_ROW_COLUMNS_LIMIT) {
|
|
33
|
+
columns = columns.slice(0, CONVERT_ROW_COLUMNS_LIMIT);
|
|
34
|
+
}
|
|
35
|
+
var hiddenColumns = view ? view.hidden_columns : null;
|
|
36
|
+
for (var i = 0; i < columns.length; i++) {
|
|
37
|
+
var column = columns[i];
|
|
38
|
+
var key = column.key,
|
|
39
|
+
type = column.type,
|
|
40
|
+
columnName = column.name;
|
|
41
|
+
if (hiddenColumns && hiddenColumns.includes(key)) {
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
var cellValue = row[key];
|
|
45
|
+
switch (type) {
|
|
46
|
+
case CellType.SINGLE_SELECT:
|
|
47
|
+
{
|
|
48
|
+
if (!column.data) {
|
|
49
|
+
if (debug) {
|
|
50
|
+
debug('No options found');
|
|
51
|
+
}
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
result[columnName] = getColumnOptionNameById(column, cellValue);
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
case CellType.MULTIPLE_SELECT:
|
|
58
|
+
{
|
|
59
|
+
if (!column.data) {
|
|
60
|
+
if (debug) {
|
|
61
|
+
debug('No options found');
|
|
62
|
+
}
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
if (!Array.isArray(cellValue)) {
|
|
66
|
+
result[columnName] = '';
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
var optionNames = [];
|
|
70
|
+
for (var optionIndex = 0; optionIndex < cellValue.length; optionIndex++) {
|
|
71
|
+
var optionName = getColumnOptionNameById(column, cellValue[optionIndex]);
|
|
72
|
+
if (optionName) {
|
|
73
|
+
optionNames.push(optionName);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
result[columnName] = optionNames;
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
case CellType.LONG_TEXT:
|
|
80
|
+
{
|
|
81
|
+
result[columnName] = cellValue ? cellValue.text : '';
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
case CellType.LINK:
|
|
85
|
+
{
|
|
86
|
+
if (!column.data) {
|
|
87
|
+
if (debug) {
|
|
88
|
+
debug('No links found');
|
|
89
|
+
}
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
// convertLinkID to display value
|
|
93
|
+
if (convertLinkID) {
|
|
94
|
+
// get values form formulaResults
|
|
95
|
+
var formulaRow = formulaResults && formulaResults[row._id];
|
|
96
|
+
var cellResult = formulaRow && formulaRow[key];
|
|
97
|
+
if (!cellResult || !Array.isArray(cellResult) || cellResult.length === 0) {
|
|
98
|
+
result[columnName] = null;
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
// linked with common column:
|
|
102
|
+
// cellResult
|
|
103
|
+
// [
|
|
104
|
+
// {row_id: '', displayValue: ''},
|
|
105
|
+
// {row_id: '', displayValue: ''},
|
|
106
|
+
// ]
|
|
107
|
+
|
|
108
|
+
// linked with formula column and formula result is array
|
|
109
|
+
// cellResult
|
|
110
|
+
// [
|
|
111
|
+
// {row_id: '', display_value: []},
|
|
112
|
+
// {row_id: '', display_value: []},
|
|
113
|
+
// ]
|
|
114
|
+
result[columnName] = cellResult;
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
var tableID = table._id;
|
|
118
|
+
var _column$data = column.data,
|
|
119
|
+
link_id = _column$data.link_id,
|
|
120
|
+
table_id = _column$data.table_id,
|
|
121
|
+
other_table_id = _column$data.other_table_id;
|
|
122
|
+
var otherTableID = tableID === table_id ? other_table_id : table_id;
|
|
123
|
+
var links = value.links;
|
|
124
|
+
result[columnName] = getLinkCellValue(links, link_id, tableID, otherTableID, row._id);
|
|
125
|
+
break;
|
|
126
|
+
}
|
|
127
|
+
case CellType.FORMULA:
|
|
128
|
+
case CellType.LINK_FORMULA:
|
|
129
|
+
{
|
|
130
|
+
if (!column.data || !formulaResults) {
|
|
131
|
+
if (debug) {
|
|
132
|
+
debug('No formula found');
|
|
133
|
+
}
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
var _formulaRow = formulaResults[row._id] || {};
|
|
137
|
+
result[columnName] = getFormulaDisplayString(_formulaRow[key], column.data);
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
default:
|
|
141
|
+
{
|
|
142
|
+
// text/email/url/auto-number/
|
|
143
|
+
// check/
|
|
144
|
+
// rate/duration/
|
|
145
|
+
// file/image/button/
|
|
146
|
+
// translate in dtable-events
|
|
147
|
+
// number/
|
|
148
|
+
// date/ctime/mtime/
|
|
149
|
+
// geolocation/
|
|
150
|
+
// collaborator/creator/last-modifier/
|
|
151
|
+
result[columnName] = cellValue;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
if (isEmpty(result[columnName])) {
|
|
155
|
+
delete result[columnName];
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return result;
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
export { convertRow, isTableRows };
|
package/es/sort/core.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { SORT_COLUMN_OPTIONS } from '../constants/sort.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* check is valid sort
|
|
5
|
+
* @param {object} sort e.g. { column_key: '', sort_type: '' }
|
|
6
|
+
* @param {array} columns
|
|
7
|
+
* @returns boolean
|
|
8
|
+
*/
|
|
9
|
+
var isValidSort = function isValidSort(sort, columns) {
|
|
10
|
+
var sortByColumn = sort && columns.find(function (column) {
|
|
11
|
+
return column.key === sort.column_key;
|
|
12
|
+
});
|
|
13
|
+
if (!sortByColumn) return false;
|
|
14
|
+
return SORT_COLUMN_OPTIONS.includes(sortByColumn.type);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* get valid sorts
|
|
19
|
+
* 1. sort column is exist or not
|
|
20
|
+
* 2. valid sort type
|
|
21
|
+
* @param {array} sorts
|
|
22
|
+
* @param {array} columns
|
|
23
|
+
* @returns array
|
|
24
|
+
*/
|
|
25
|
+
var getValidSorts = function getValidSorts(sorts, columns) {
|
|
26
|
+
if (!Array.isArray(sorts) || !Array.isArray(columns)) return [];
|
|
27
|
+
return sorts.filter(function (sort) {
|
|
28
|
+
return isValidSort(sort, columns);
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export { getValidSorts, isValidSort };
|