@omegagrid/grid-core 0.10.65 → 0.10.67
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sortingModel.d.ts","sourceRoot":"","sources":["../../src/model/sortingModel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,oBAAY,SAAS;IACpB,GAAG,IAAI;IACP,IAAI,KAAK;CACT;AAED,MAAM,MAAM,YAAY,GAAG;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,GAAG,EAAE,SAAS,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACd,CAAC;
|
|
1
|
+
{"version":3,"file":"sortingModel.d.ts","sourceRoot":"","sources":["../../src/model/sortingModel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,oBAAY,SAAS;IACpB,GAAG,IAAI;IACP,IAAI,KAAK;CACT;AAED,MAAM,MAAM,YAAY,GAAG;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,GAAG,EAAE,SAAS,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACd,CAAC;AAoCF;;GAEG;AACH,qBAAa,YAAY;aAiBP,KAAK,EAAE,SAAS;IAfjC,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,SAAS,CAAsB;IAEvC,IAAI,QAAQ,IACI,YAAY,EAAE,GAAC,IAAI,CADK;IACxC,IAAI,QAAQ,CAAC,CAAC,EAAE,YAAY,EAAE,GAAC,IAAI,EAQlC;gBAGgB,KAAK,EAAE,SAAS,EAChC,SAAS,GAAE,YAAY,EAAE,GAAC,IAAW;IAKtC;;;OAGG;IACH,GAAG,CAAC,CAAC,EAAE,MAAM;IAIb;;;;;OAKG;IACH,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,GAAE,SAAgB,EAAE,MAAM,UAAQ,GAAG,YAAY;IAuCpE;;OAEG;IACH,SAAS;IAuCT;;OAEG;IACH,SAAS;IAOT;;OAEG;IACH,WAAW;CAIX"}
|
|
@@ -4,15 +4,18 @@ export var SortOrder;
|
|
|
4
4
|
SortOrder[SortOrder["Asc"] = 1] = "Asc";
|
|
5
5
|
SortOrder[SortOrder["Desc"] = -1] = "Desc";
|
|
6
6
|
})(SortOrder || (SortOrder = {}));
|
|
7
|
+
// date/datetime/time cell values may be Date instances or numbers (the cell value handler
|
|
8
|
+
// coerces 'd' strings to serial date numbers); anything else sorts as 0
|
|
9
|
+
const dateSortValue = (v) => v instanceof Date ? v.getTime() : (typeof v === 'number' ? v : 0);
|
|
7
10
|
const ascComparers = {
|
|
8
11
|
'g': (a, b) => a.value == b.value ? 0 : (a.value > b.value ? 1 : -1),
|
|
9
12
|
't': (a, b) => (a.value || '').toString().localeCompare((b.value || '').toString()),
|
|
10
13
|
's': (a, b) => a.value == b.value ? 0 : (a.value > b.value ? 1 : -1),
|
|
11
14
|
'm': (a, b) => a.value == b.value ? 0 : (a.value > b.value ? 1 : -1),
|
|
12
15
|
'n': (a, b) => a.value - b.value,
|
|
13
|
-
'd': (a, b) => (a.value
|
|
14
|
-
'tm': (a, b) => (a.value
|
|
15
|
-
'dt': (a, b) => (a.value
|
|
16
|
+
'd': (a, b) => dateSortValue(a.value) - dateSortValue(b.value),
|
|
17
|
+
'tm': (a, b) => dateSortValue(a.value) - dateSortValue(b.value),
|
|
18
|
+
'dt': (a, b) => dateSortValue(a.value) - dateSortValue(b.value),
|
|
16
19
|
'b': (a, b) => a.value - b.value,
|
|
17
20
|
'h': (a, b) => (a.value || '').localeCompare(b.value),
|
|
18
21
|
'a': () => 0
|
|
@@ -23,9 +26,9 @@ const descComparers = {
|
|
|
23
26
|
's': (b, a) => a.value == b.value ? 0 : (a.value > b.value ? 1 : -1),
|
|
24
27
|
'm': (b, a) => a.value == b.value ? 0 : (a.value > b.value ? 1 : -1),
|
|
25
28
|
'n': (b, a) => a.value - b.value,
|
|
26
|
-
'd': (b, a) => (a.value
|
|
27
|
-
'tm': (b, a) => (a.value
|
|
28
|
-
'dt': (b, a) => (a.value
|
|
29
|
+
'd': (b, a) => dateSortValue(a.value) - dateSortValue(b.value),
|
|
30
|
+
'tm': (b, a) => dateSortValue(a.value) - dateSortValue(b.value),
|
|
31
|
+
'dt': (b, a) => dateSortValue(a.value) - dateSortValue(b.value),
|
|
29
32
|
'b': (b, a) => a.value - b.value,
|
|
30
33
|
'h': (b, a) => (a.value || '').localeCompare(b.value),
|
|
31
34
|
'a': () => 0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sortingModel.js","sourceRoot":"","sources":["../../src/model/sortingModel.ts"],"names":[],"mappings":"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","sourcesContent":["import { UIValueType, log } from \"@omegagrid/core\";\nimport { AditionalUIValueType, Comparer } from \"../types\";\nimport { CellModel } from \"./cellModel\";\nimport { GridModel } from \"./gridModel\";\nimport { RowModel } from \"./rowModel\";\n\nexport enum SortOrder {\n\tAsc = 1,\n\tDesc = -1\n}\n\nexport type SortSettings = {\n\tc: number,\n\tord: SortOrder,\n\tindex?: number\n};\n\nconst ascComparers: Record<UIValueType|AditionalUIValueType, Comparer> = {\n\t'g': (a: CellModel, b: CellModel) => a.value == b.value ? 0 : (a.value > b.value ? 1 : -1),\n\t't': (a: CellModel, b: CellModel) => (a.value as string || '').toString().localeCompare((b.value as string || '').toString()),\n\t's': (a: CellModel, b: CellModel) => a.value == b.value ? 0 : (a.value > b.value ? 1 : -1),\n\t'm': (a: CellModel, b: CellModel) => a.value == b.value ? 0 : (a.value > b.value ? 1 : -1),\n\t'n': (a: CellModel, b: CellModel) => (a.value as number) - (b.value as number),\n\t'd': (a: CellModel, b: CellModel) => (a.value instanceof Date ? a.value.getTime() : 0) - (b.value instanceof Date ? b.value.getTime() : 0),\n\t'tm': (a: CellModel, b: CellModel) => (a.value instanceof Date ? a.value.getTime() : 0) - (b.value instanceof Date ? b.value.getTime() : 0),\n\t'dt': (a: CellModel, b: CellModel) => (a.value instanceof Date ? a.value.getTime() : 0) - (b.value instanceof Date ? b.value.getTime() : 0),\n\t'b': (a: CellModel, b: CellModel) => (a.value as number) - (b.value as number),\n\t'h': (a: CellModel, b: CellModel) => ((a.value as string) || '').localeCompare(b.value as string),\n\t'a': () => 0\n};\n\nconst descComparers: Record<UIValueType|AditionalUIValueType, Comparer> = {\n\t'g': (b: CellModel, a: CellModel) => a.value == b.value ? 0 : (a.value > b.value ? 1 : -1),\n\t't': (b: CellModel, a: CellModel) => (a.value as string || '').toString().localeCompare((b.value as string || '').toString()),\n\t's': (b: CellModel, a: CellModel) => a.value == b.value ? 0 : (a.value > b.value ? 1 : -1),\n\t'm': (b: CellModel, a: CellModel) => a.value == b.value ? 0 : (a.value > b.value ? 1 : -1),\n\t'n': (b: CellModel, a: CellModel) => (a.value as number) - (b.value as number),\n\t'd': (b: CellModel, a: CellModel) => (a.value instanceof Date ? a.value.getTime() : 0) - (b.value instanceof Date ? b.value.getTime() : 0),\n\t'tm': (b: CellModel, a: CellModel) => (a.value instanceof Date ? a.value.getTime() : 0) - (b.value instanceof Date ? b.value.getTime() : 0),\n\t'dt': (b: CellModel, a: CellModel) => (a.value instanceof Date ? a.value.getTime() : 0) - (b.value instanceof Date ? b.value.getTime() : 0),\n\t'b': (b: CellModel, a: CellModel) => (a.value as number) - (b.value as number),\n\t'h': (b: CellModel, a: CellModel) => ((a.value as string) || '').localeCompare(b.value as string),\n\t'a': () => 0\n};\n\nconst origComparer = (a: RowModel, b: RowModel) => a.origIndex - b.origIndex;\n\n/**\n * Class for sorting rows by columns sort settings\n */\nexport class SortingModel {\n\n\tprivate colMap = new Map<number, number>();\n\tprivate _settings: SortSettings[] = [];\n\n\tget settings() { return this._settings }\n\tset settings(v: SortSettings[]|null) {\n\t\tthis._settings = v || [];\n\t\tthis.colMap.clear();\n\t\tif (this.settings.length > 0) {\n\t\t\tthis.settings.forEach((s, i) => this.colMap.set(s.c, i));\n\t\t\tthis.applySort();\n\t\t\tlog.getLogger().info(`sorting applied: ${JSON.stringify(this.settings)}`);\n\t\t}\n\t}\n\t\n\tconstructor(\n\t\tpublic readonly model: GridModel,\n\t\t_settings: SortSettings[]|null = null\n\t) {\n\t\tthis.settings = _settings;\n\t}\n\n\t/**\n\t * Get sorting settings for specified column\n\t * @param c column index\n\t */\n\tget(c: number) {\n\t\treturn this.colMap.has(c) ? this.settings[this.colMap.get(c)] : null;\n\t}\n\n\t/**\n\t * Add sorting settings for specified column\n\t * @param c column index\n\t * @param ord sorting order\n\t * @param custom if true, sorting will not be automaticaly applied\n\t */\n\tsort(c: number, ord: SortOrder = null, custom = false): SortSettings {\n\t\tlet sortSetting: SortSettings = this.get(c);\n\t\tif (sortSetting && sortSetting.ord == SortOrder.Desc && ord === null) {\n\t\t\tthis.settings.splice(this.colMap.get(c), 1);\n\t\t\tsortSetting = null;\n\t\t} else if (sortSetting) {\n\t\t\tsortSetting.ord = SortOrder.Desc;\n\t\t\tthis.settings.splice(this.colMap.get(c), 1);\n\t\t} else {\n\t\t\tsortSetting = {c: c, ord: SortOrder.Asc};\n\t\t}\n\t\t\n\t\tif (sortSetting) {\n\t\t\tif (ord !== null) sortSetting.ord = ord;\n\t\t\tthis.colMap.set(c, 0);\n\t\t\tthis.settings.unshift(sortSetting);\n\t\t}\n\t\t\n\t\tif (this.settings.length > this.model.options.maxSortingColumns) {\n\t\t\tthis.settings.pop();\n\t\t}\n\n\t\tthis.colMap.clear();\n\t\tthis.settings.forEach((s, i) => {\n\t\t\ts.index = i;\n\t\t\tthis.colMap.set(s.c, i);\n\t\t});\n\n\t\tif (!custom) {\n\t\t\tif (this.settings.length > 0) {\n\t\t\t\tthis.applySort();\n\t\t\t} else {\n\t\t\t\tthis.resetSort();\n\t\t\t}\n\t\t}\n\n\t\treturn sortSetting;\n\t}\n\n\t/**\n\t * Apply current sorting settings to rows\n\t */\n\tapplySort() {\n\t\tconst m = this.model;\n\t\tconst cellComparers = this.settings.map(s => {\n\t\t\tconst column = m.columns[s.c];\n\t\t\tif (!column) {\n\t\t\t\tlog.getLogger().warn(`Column sorting: Column with index ${s.c} not found`);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t\n\t\t\tif (column.comparer) return s.ord == SortOrder.Asc \n\t\t\t\t? column.comparer\n\t\t\t\t: (a: CellModel, b: CellModel) => -column.comparer(a, b);\n\n\t\t\treturn s.ord == SortOrder.Asc\n\t\t\t\t? ascComparers[column.type ?? 't']\n\t\t\t\t: descComparers[column.type ?? 't'];\n\t\t}).filter(c => c);\n\n\t\tconst len = cellComparers.length;\n\t\tlet ord: number, i: number, c: number;\n\n\t\tconst rowComparer = (a: RowModel, b: RowModel) => {\n\t\t\tif (a.sortable === false || b.sortable === false) {\n\t\t\t\t// if sorting for one of the rows is disabled, use original index for comparison\n\t\t\t\treturn a.origIndex - b.origIndex;\n\t\t\t}\n\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tc = this.settings[i].c;\n\t\t\t\tord = cellComparers[i](a.cell(c), b.cell(c));\n\t\t\t\tif (ord != 0) return ord;\n\t\t\t}\n\t\t\treturn 0;\n\t\t};\n\n\t\tm.rowRoot.sort(rowComparer);\n\t\tm.indexRowsByTree();\n\t}\n\n\t/**\n\t * Reset row order to default state\n\t */\n\tresetSort() {\n\t\tthis.settings = [];\n\t\tthis.colMap.clear();\n\t\tthis.model.rowRoot.sort(origComparer);\n\t\tthis.model.indexRowsByTree();\n\t}\n\n\t/**\n\t * Use current sorting settings as default row order\n\t */\n\tpersistSort() {\n\t\tthis.model.rows.forEach((r, i) => r.origIndex = i);\n\t}\n\n}"]}
|
|
1
|
+
{"version":3,"file":"sortingModel.js","sourceRoot":"","sources":["../../src/model/sortingModel.ts"],"names":[],"mappings":"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","sourcesContent":["import { UIValueType, log } from \"@omegagrid/core\";\nimport { AditionalUIValueType, Comparer } from \"../types\";\nimport { CellModel } from \"./cellModel\";\nimport { GridModel } from \"./gridModel\";\nimport { RowModel } from \"./rowModel\";\n\nexport enum SortOrder {\n\tAsc = 1,\n\tDesc = -1\n}\n\nexport type SortSettings = {\n\tc: number,\n\tord: SortOrder,\n\tindex?: number\n};\n\n// date/datetime/time cell values may be Date instances or numbers (the cell value handler\n// coerces 'd' strings to serial date numbers); anything else sorts as 0\nconst dateSortValue = (v: unknown): number => v instanceof Date ? v.getTime() : (typeof v === 'number' ? v : 0);\n\nconst ascComparers: Record<UIValueType|AditionalUIValueType, Comparer> = {\n\t'g': (a: CellModel, b: CellModel) => a.value == b.value ? 0 : (a.value > b.value ? 1 : -1),\n\t't': (a: CellModel, b: CellModel) => (a.value as string || '').toString().localeCompare((b.value as string || '').toString()),\n\t's': (a: CellModel, b: CellModel) => a.value == b.value ? 0 : (a.value > b.value ? 1 : -1),\n\t'm': (a: CellModel, b: CellModel) => a.value == b.value ? 0 : (a.value > b.value ? 1 : -1),\n\t'n': (a: CellModel, b: CellModel) => (a.value as number) - (b.value as number),\n\t'd': (a: CellModel, b: CellModel) => dateSortValue(a.value) - dateSortValue(b.value),\n\t'tm': (a: CellModel, b: CellModel) => dateSortValue(a.value) - dateSortValue(b.value),\n\t'dt': (a: CellModel, b: CellModel) => dateSortValue(a.value) - dateSortValue(b.value),\n\t'b': (a: CellModel, b: CellModel) => (a.value as number) - (b.value as number),\n\t'h': (a: CellModel, b: CellModel) => ((a.value as string) || '').localeCompare(b.value as string),\n\t'a': () => 0\n};\n\nconst descComparers: Record<UIValueType|AditionalUIValueType, Comparer> = {\n\t'g': (b: CellModel, a: CellModel) => a.value == b.value ? 0 : (a.value > b.value ? 1 : -1),\n\t't': (b: CellModel, a: CellModel) => (a.value as string || '').toString().localeCompare((b.value as string || '').toString()),\n\t's': (b: CellModel, a: CellModel) => a.value == b.value ? 0 : (a.value > b.value ? 1 : -1),\n\t'm': (b: CellModel, a: CellModel) => a.value == b.value ? 0 : (a.value > b.value ? 1 : -1),\n\t'n': (b: CellModel, a: CellModel) => (a.value as number) - (b.value as number),\n\t'd': (b: CellModel, a: CellModel) => dateSortValue(a.value) - dateSortValue(b.value),\n\t'tm': (b: CellModel, a: CellModel) => dateSortValue(a.value) - dateSortValue(b.value),\n\t'dt': (b: CellModel, a: CellModel) => dateSortValue(a.value) - dateSortValue(b.value),\n\t'b': (b: CellModel, a: CellModel) => (a.value as number) - (b.value as number),\n\t'h': (b: CellModel, a: CellModel) => ((a.value as string) || '').localeCompare(b.value as string),\n\t'a': () => 0\n};\n\nconst origComparer = (a: RowModel, b: RowModel) => a.origIndex - b.origIndex;\n\n/**\n * Class for sorting rows by columns sort settings\n */\nexport class SortingModel {\n\n\tprivate colMap = new Map<number, number>();\n\tprivate _settings: SortSettings[] = [];\n\n\tget settings() { return this._settings }\n\tset settings(v: SortSettings[]|null) {\n\t\tthis._settings = v || [];\n\t\tthis.colMap.clear();\n\t\tif (this.settings.length > 0) {\n\t\t\tthis.settings.forEach((s, i) => this.colMap.set(s.c, i));\n\t\t\tthis.applySort();\n\t\t\tlog.getLogger().info(`sorting applied: ${JSON.stringify(this.settings)}`);\n\t\t}\n\t}\n\t\n\tconstructor(\n\t\tpublic readonly model: GridModel,\n\t\t_settings: SortSettings[]|null = null\n\t) {\n\t\tthis.settings = _settings;\n\t}\n\n\t/**\n\t * Get sorting settings for specified column\n\t * @param c column index\n\t */\n\tget(c: number) {\n\t\treturn this.colMap.has(c) ? this.settings[this.colMap.get(c)] : null;\n\t}\n\n\t/**\n\t * Add sorting settings for specified column\n\t * @param c column index\n\t * @param ord sorting order\n\t * @param custom if true, sorting will not be automaticaly applied\n\t */\n\tsort(c: number, ord: SortOrder = null, custom = false): SortSettings {\n\t\tlet sortSetting: SortSettings = this.get(c);\n\t\tif (sortSetting && sortSetting.ord == SortOrder.Desc && ord === null) {\n\t\t\tthis.settings.splice(this.colMap.get(c), 1);\n\t\t\tsortSetting = null;\n\t\t} else if (sortSetting) {\n\t\t\tsortSetting.ord = SortOrder.Desc;\n\t\t\tthis.settings.splice(this.colMap.get(c), 1);\n\t\t} else {\n\t\t\tsortSetting = {c: c, ord: SortOrder.Asc};\n\t\t}\n\t\t\n\t\tif (sortSetting) {\n\t\t\tif (ord !== null) sortSetting.ord = ord;\n\t\t\tthis.colMap.set(c, 0);\n\t\t\tthis.settings.unshift(sortSetting);\n\t\t}\n\t\t\n\t\tif (this.settings.length > this.model.options.maxSortingColumns) {\n\t\t\tthis.settings.pop();\n\t\t}\n\n\t\tthis.colMap.clear();\n\t\tthis.settings.forEach((s, i) => {\n\t\t\ts.index = i;\n\t\t\tthis.colMap.set(s.c, i);\n\t\t});\n\n\t\tif (!custom) {\n\t\t\tif (this.settings.length > 0) {\n\t\t\t\tthis.applySort();\n\t\t\t} else {\n\t\t\t\tthis.resetSort();\n\t\t\t}\n\t\t}\n\n\t\treturn sortSetting;\n\t}\n\n\t/**\n\t * Apply current sorting settings to rows\n\t */\n\tapplySort() {\n\t\tconst m = this.model;\n\t\tconst cellComparers = this.settings.map(s => {\n\t\t\tconst column = m.columns[s.c];\n\t\t\tif (!column) {\n\t\t\t\tlog.getLogger().warn(`Column sorting: Column with index ${s.c} not found`);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t\n\t\t\tif (column.comparer) return s.ord == SortOrder.Asc \n\t\t\t\t? column.comparer\n\t\t\t\t: (a: CellModel, b: CellModel) => -column.comparer(a, b);\n\n\t\t\treturn s.ord == SortOrder.Asc\n\t\t\t\t? ascComparers[column.type ?? 't']\n\t\t\t\t: descComparers[column.type ?? 't'];\n\t\t}).filter(c => c);\n\n\t\tconst len = cellComparers.length;\n\t\tlet ord: number, i: number, c: number;\n\n\t\tconst rowComparer = (a: RowModel, b: RowModel) => {\n\t\t\tif (a.sortable === false || b.sortable === false) {\n\t\t\t\t// if sorting for one of the rows is disabled, use original index for comparison\n\t\t\t\treturn a.origIndex - b.origIndex;\n\t\t\t}\n\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tc = this.settings[i].c;\n\t\t\t\tord = cellComparers[i](a.cell(c), b.cell(c));\n\t\t\t\tif (ord != 0) return ord;\n\t\t\t}\n\t\t\treturn 0;\n\t\t};\n\n\t\tm.rowRoot.sort(rowComparer);\n\t\tm.indexRowsByTree();\n\t}\n\n\t/**\n\t * Reset row order to default state\n\t */\n\tresetSort() {\n\t\tthis.settings = [];\n\t\tthis.colMap.clear();\n\t\tthis.model.rowRoot.sort(origComparer);\n\t\tthis.model.indexRowsByTree();\n\t}\n\n\t/**\n\t * Use current sorting settings as default row order\n\t */\n\tpersistSort() {\n\t\tthis.model.rows.forEach((r, i) => r.origIndex = i);\n\t}\n\n}"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@omegagrid/grid-core",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.67",
|
|
4
4
|
"license": "UNLICENSED",
|
|
5
5
|
"description": "Grid model, no ui components",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
"generate-functions-docs": "node ./scripts/generate-functions-docs.cjs"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@omegagrid/core": "^0.10.
|
|
32
|
-
"@omegagrid/localize": "^0.10.
|
|
31
|
+
"@omegagrid/core": "^0.10.67",
|
|
32
|
+
"@omegagrid/localize": "^0.10.67",
|
|
33
33
|
"@stdlib/stats": "^0.0.13",
|
|
34
34
|
"color": "^4.2.3",
|
|
35
35
|
"date-fns": "^3.2.0",
|