@deephaven/iris-grid 0.28.1-beta.0 → 0.28.1-beta.3
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/dist/ColumnHeaderGroup.d.ts +1 -1
- package/dist/ColumnHeaderGroup.d.ts.map +1 -1
- package/dist/ColumnHeaderGroup.js.map +1 -1
- package/dist/CommonTypes.d.ts +9 -3
- package/dist/CommonTypes.d.ts.map +1 -1
- package/dist/CommonTypes.js.map +1 -1
- package/dist/CrossColumnSearch.d.ts +5 -5
- package/dist/CrossColumnSearch.d.ts.map +1 -1
- package/dist/CrossColumnSearch.js.map +1 -1
- package/dist/IrisGrid.d.ts +87 -87
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +25 -25
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridCopyHandler.d.ts +2 -2
- package/dist/IrisGridCopyHandler.d.ts.map +1 -1
- package/dist/IrisGridCopyHandler.js.map +1 -1
- package/dist/IrisGridModel.d.ts +28 -30
- package/dist/IrisGridModel.d.ts.map +1 -1
- package/dist/IrisGridModel.js +5 -6
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridModelUpdater.d.ts +13 -13
- package/dist/IrisGridModelUpdater.d.ts.map +1 -1
- package/dist/IrisGridModelUpdater.js +3 -2
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridProxyModel.d.ts +23 -23
- package/dist/IrisGridProxyModel.d.ts.map +1 -1
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridRenderer.d.ts +3 -3
- package/dist/IrisGridRenderer.d.ts.map +1 -1
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridTableModelTemplate.d.ts +3 -3
- package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
- package/dist/IrisGridTableModelTemplate.js.map +1 -1
- package/dist/IrisGridUtils.d.ts +74 -98
- package/dist/IrisGridUtils.d.ts.map +1 -1
- package/dist/IrisGridUtils.js +7 -7
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/PendingDataBottomBar.d.ts +2 -2
- package/dist/PendingDataBottomBar.d.ts.map +1 -1
- package/dist/PendingDataBottomBar.js.map +1 -1
- package/dist/sidebar/ChartBuilder.d.ts +3 -3
- package/dist/sidebar/ChartBuilder.d.ts.map +1 -1
- package/dist/sidebar/ChartBuilder.js +6 -6
- package/dist/sidebar/ChartBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.d.ts +6 -6
- package/dist/sidebar/CustomColumnBuilder.d.ts.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
- package/dist/sidebar/RollupRows.d.ts +4 -4
- package/dist/sidebar/RollupRows.d.ts.map +1 -1
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.d.ts +4 -4
- package/dist/sidebar/SelectDistinctBuilder.d.ts.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
- package/dist/sidebar/TableCsvExporter.d.ts +4 -4
- package/dist/sidebar/TableCsvExporter.d.ts.map +1 -1
- package/dist/sidebar/TableCsvExporter.js.map +1 -1
- package/dist/sidebar/TableSaver.d.ts +4 -4
- package/dist/sidebar/TableSaver.d.ts.map +1 -1
- package/dist/sidebar/TableSaver.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.d.ts +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.d.ts.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.d.ts +4 -4
- package/dist/sidebar/aggregations/AggregationUtils.d.ts.map +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.d.ts +2 -2
- package/dist/sidebar/aggregations/Aggregations.d.ts.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts +2 -2
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts +13 -13
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.d.ts +4 -4
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.d.ts +1 -0
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts +6 -5
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -1
- package/package.json +15 -15
|
@@ -16,7 +16,7 @@ export default class ColumnHeaderGroup implements IColumnHeaderGroup {
|
|
|
16
16
|
childIndexes: ModelIndex[];
|
|
17
17
|
parent?: string;
|
|
18
18
|
});
|
|
19
|
-
getVisibleRange: (movedItems: MoveOperation[]) => BoundedAxisRange;
|
|
19
|
+
getVisibleRange: (movedItems: readonly MoveOperation[]) => BoundedAxisRange;
|
|
20
20
|
setParent(parent: string | undefined): void;
|
|
21
21
|
addChildren(children: string[]): void;
|
|
22
22
|
removeChildren(children: string[]): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnHeaderGroup.d.ts","sourceRoot":"","sources":["../src/ColumnHeaderGroup.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAEb,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AAMzB,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,iBAAiB,CAEtE;AAED,MAAM,CAAC,OAAO,OAAO,iBAAkB,YAAW,kBAAkB;IAClE,MAAM,CAAC,gBAAgB,SAAe;IAEtC,IAAI,EAAE,MAAM,CAAC;IAEb,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB,KAAK,EAAE,MAAM,CAAC;IAEd,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,YAAY,EAAE,UAAU,EAAE,CAAC;gBAEf,EACV,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,KAAK,EACL,YAAY,EACZ,MAAM,GACP,EAAE;QACD,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,UAAU,EAAE,CAAC;QAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB;IASD,eAAe,eACA,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"ColumnHeaderGroup.d.ts","sourceRoot":"","sources":["../src/ColumnHeaderGroup.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAEb,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AAMzB,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,iBAAiB,CAEtE;AAED,MAAM,CAAC,OAAO,OAAO,iBAAkB,YAAW,kBAAkB;IAClE,MAAM,CAAC,gBAAgB,SAAe;IAEtC,IAAI,EAAE,MAAM,CAAC;IAEb,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB,KAAK,EAAE,MAAM,CAAC;IAEd,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,YAAY,EAAE,UAAU,EAAE,CAAC;gBAEf,EACV,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,KAAK,EACL,YAAY,EACZ,MAAM,GACP,EAAE;QACD,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,UAAU,EAAE,CAAC;QAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB;IASD,eAAe,eACA,SAAS,aAAa,EAAE,sBAgBrC;IAEF,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAI3C,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAKrC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAMxC,IAAI,KAAK,IAAI,OAAO,CAEnB;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnHeaderGroup.js","names":["GridUtils","memoizeOne","Log","log","module","isColumnHeaderGroup","x","ColumnHeaderGroup","constructor","name","children","color","depth","childIndexes","parent","movedItems","flattenedIndexes","flat","visibleIndexes","getVisibleIndexes","start","Math","min","end","max","length","warn","setParent","addChildren","newChildren","Set","concat","removeChildren","forEach","delete","isNew","startsWith","NEW_GROUP_PREFIX"],"sources":["../src/ColumnHeaderGroup.ts"],"sourcesContent":["import {\n MoveOperation,\n GridUtils,\n ModelIndex,\n BoundedAxisRange,\n IColumnHeaderGroup,\n} from '@deephaven/grid';\nimport memoizeOne from 'memoize-one';\nimport Log from '@deephaven/log';\n\nconst log = Log.module('ColumnHeaderGroup');\n\nexport function isColumnHeaderGroup(x: unknown): x is ColumnHeaderGroup {\n return x instanceof ColumnHeaderGroup;\n}\n\nexport default class ColumnHeaderGroup implements IColumnHeaderGroup {\n static NEW_GROUP_PREFIX = ':newGroup';\n\n name: string;\n\n children: string[];\n\n depth: number;\n\n parent?: string;\n\n color?: string;\n\n childIndexes: ModelIndex[];\n\n constructor({\n name,\n children,\n color,\n depth,\n childIndexes,\n parent,\n }: {\n name: string;\n children: string[];\n color?: string;\n depth: number;\n childIndexes: ModelIndex[];\n parent?: string;\n }) {\n this.name = name;\n this.children = children;\n this.color = color;\n this.depth = depth;\n this.childIndexes = childIndexes;\n this.parent = parent;\n }\n\n getVisibleRange = memoizeOne(\n (movedItems: MoveOperation[]): BoundedAxisRange => {\n const flattenedIndexes = this.childIndexes.flat();\n const visibleIndexes = GridUtils.getVisibleIndexes(\n flattenedIndexes,\n movedItems\n );\n\n const start = Math.min(...visibleIndexes);\n const end = Math.max(...visibleIndexes);\n\n if (end - start !== flattenedIndexes.length - 1) {\n log.warn(`Column header group ${this.name} is not contiguous`);\n }\n\n return [start, end];\n }\n );\n\n setParent(parent: string | undefined): void {\n this.parent = parent;\n }\n\n addChildren(children: string[]): void {\n const newChildren = new Set(this.children.concat(children));\n this.children = [...newChildren];\n }\n\n removeChildren(children: string[]): void {\n const newChildren = new Set(this.children);\n children.forEach(name => newChildren.delete(name));\n this.children = [...newChildren];\n }\n\n get isNew(): boolean {\n return this.name.startsWith(ColumnHeaderGroup.NEW_GROUP_PREFIX);\n }\n}\n"],"mappings":";;;AAAA,SAEEA,SAAS,QAIJ,iBAAiB;AACxB,OAAOC,UAAU,MAAM,aAAa;AACpC,OAAOC,GAAG,MAAM,gBAAgB;AAEhC,IAAMC,GAAG,GAAGD,GAAG,CAACE,MAAM,CAAC,mBAAmB,CAAC;AAE3C,OAAO,SAASC,mBAAmB,CAACC,CAAU,EAA0B;EACtE,OAAOA,CAAC,YAAYC,iBAAiB;AACvC;AAEA,eAAe,MAAMA,iBAAiB,CAA+B;EAenEC,WAAW,OAcR;IAAA,IAdS;MACVC,IAAI;MACJC,QAAQ;MACRC,KAAK;MACLC,KAAK;MACLC,YAAY;MACZC;IAQF,CAAC;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA,yCASiBb,UAAU,CACzBc,
|
|
1
|
+
{"version":3,"file":"ColumnHeaderGroup.js","names":["GridUtils","memoizeOne","Log","log","module","isColumnHeaderGroup","x","ColumnHeaderGroup","constructor","name","children","color","depth","childIndexes","parent","movedItems","flattenedIndexes","flat","visibleIndexes","getVisibleIndexes","start","Math","min","end","max","length","warn","setParent","addChildren","newChildren","Set","concat","removeChildren","forEach","delete","isNew","startsWith","NEW_GROUP_PREFIX"],"sources":["../src/ColumnHeaderGroup.ts"],"sourcesContent":["import {\n MoveOperation,\n GridUtils,\n ModelIndex,\n BoundedAxisRange,\n IColumnHeaderGroup,\n} from '@deephaven/grid';\nimport memoizeOne from 'memoize-one';\nimport Log from '@deephaven/log';\n\nconst log = Log.module('ColumnHeaderGroup');\n\nexport function isColumnHeaderGroup(x: unknown): x is ColumnHeaderGroup {\n return x instanceof ColumnHeaderGroup;\n}\n\nexport default class ColumnHeaderGroup implements IColumnHeaderGroup {\n static NEW_GROUP_PREFIX = ':newGroup';\n\n name: string;\n\n children: string[];\n\n depth: number;\n\n parent?: string;\n\n color?: string;\n\n childIndexes: ModelIndex[];\n\n constructor({\n name,\n children,\n color,\n depth,\n childIndexes,\n parent,\n }: {\n name: string;\n children: string[];\n color?: string;\n depth: number;\n childIndexes: ModelIndex[];\n parent?: string;\n }) {\n this.name = name;\n this.children = children;\n this.color = color;\n this.depth = depth;\n this.childIndexes = childIndexes;\n this.parent = parent;\n }\n\n getVisibleRange = memoizeOne(\n (movedItems: readonly MoveOperation[]): BoundedAxisRange => {\n const flattenedIndexes = this.childIndexes.flat();\n const visibleIndexes = GridUtils.getVisibleIndexes(\n flattenedIndexes,\n movedItems\n );\n\n const start = Math.min(...visibleIndexes);\n const end = Math.max(...visibleIndexes);\n\n if (end - start !== flattenedIndexes.length - 1) {\n log.warn(`Column header group ${this.name} is not contiguous`);\n }\n\n return [start, end];\n }\n );\n\n setParent(parent: string | undefined): void {\n this.parent = parent;\n }\n\n addChildren(children: string[]): void {\n const newChildren = new Set(this.children.concat(children));\n this.children = [...newChildren];\n }\n\n removeChildren(children: string[]): void {\n const newChildren = new Set(this.children);\n children.forEach(name => newChildren.delete(name));\n this.children = [...newChildren];\n }\n\n get isNew(): boolean {\n return this.name.startsWith(ColumnHeaderGroup.NEW_GROUP_PREFIX);\n }\n}\n"],"mappings":";;;AAAA,SAEEA,SAAS,QAIJ,iBAAiB;AACxB,OAAOC,UAAU,MAAM,aAAa;AACpC,OAAOC,GAAG,MAAM,gBAAgB;AAEhC,IAAMC,GAAG,GAAGD,GAAG,CAACE,MAAM,CAAC,mBAAmB,CAAC;AAE3C,OAAO,SAASC,mBAAmB,CAACC,CAAU,EAA0B;EACtE,OAAOA,CAAC,YAAYC,iBAAiB;AACvC;AAEA,eAAe,MAAMA,iBAAiB,CAA+B;EAenEC,WAAW,OAcR;IAAA,IAdS;MACVC,IAAI;MACJC,QAAQ;MACRC,KAAK;MACLC,KAAK;MACLC,YAAY;MACZC;IAQF,CAAC;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA,yCASiBb,UAAU,CACzBc,UAAoC,IAAuB;MAC1D,IAAMC,gBAAgB,GAAG,IAAI,CAACH,YAAY,CAACI,IAAI,EAAE;MACjD,IAAMC,cAAc,GAAGlB,SAAS,CAACmB,iBAAiB,CAChDH,gBAAgB,EAChBD,UAAU,CACX;MAED,IAAMK,KAAK,GAAGC,IAAI,CAACC,GAAG,CAAC,GAAGJ,cAAc,CAAC;MACzC,IAAMK,GAAG,GAAGF,IAAI,CAACG,GAAG,CAAC,GAAGN,cAAc,CAAC;MAEvC,IAAIK,GAAG,GAAGH,KAAK,KAAKJ,gBAAgB,CAACS,MAAM,GAAG,CAAC,EAAE;QAC/CtB,GAAG,CAACuB,IAAI,+BAAwB,IAAI,CAACjB,IAAI,wBAAqB;MAChE;MAEA,OAAO,CAACW,KAAK,EAAEG,GAAG,CAAC;IACrB,CAAC,CACF;IAzBC,IAAI,CAACd,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACC,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,YAAY,GAAGA,YAAY;IAChC,IAAI,CAACC,MAAM,GAAGA,MAAM;EACtB;EAqBAa,SAAS,CAACb,MAA0B,EAAQ;IAC1C,IAAI,CAACA,MAAM,GAAGA,MAAM;EACtB;EAEAc,WAAW,CAAClB,QAAkB,EAAQ;IACpC,IAAMmB,WAAW,GAAG,IAAIC,GAAG,CAAC,IAAI,CAACpB,QAAQ,CAACqB,MAAM,CAACrB,QAAQ,CAAC,CAAC;IAC3D,IAAI,CAACA,QAAQ,GAAG,CAAC,GAAGmB,WAAW,CAAC;EAClC;EAEAG,cAAc,CAACtB,QAAkB,EAAQ;IACvC,IAAMmB,WAAW,GAAG,IAAIC,GAAG,CAAC,IAAI,CAACpB,QAAQ,CAAC;IAC1CA,QAAQ,CAACuB,OAAO,CAACxB,IAAI,IAAIoB,WAAW,CAACK,MAAM,CAACzB,IAAI,CAAC,CAAC;IAClD,IAAI,CAACC,QAAQ,GAAG,CAAC,GAAGmB,WAAW,CAAC;EAClC;EAEA,IAAIM,KAAK,GAAY;IACnB,OAAO,IAAI,CAAC1B,IAAI,CAAC2B,UAAU,CAAC7B,iBAAiB,CAAC8B,gBAAgB,CAAC;EACjE;AACF;AAAC,gBA3EoB9B,iBAAiB,sBACV,WAAW"}
|
package/dist/CommonTypes.d.ts
CHANGED
|
@@ -5,12 +5,16 @@ import { Shortcut } from '@deephaven/components';
|
|
|
5
5
|
import { IconDefinition } from '@deephaven/icons';
|
|
6
6
|
import AggregationOperation from './sidebar/aggregations/AggregationOperation';
|
|
7
7
|
import { OptionType } from './sidebar';
|
|
8
|
+
export type RowIndex = ModelIndex;
|
|
8
9
|
export type { AdvancedFilterOptions };
|
|
9
10
|
export type ColumnName = string;
|
|
10
11
|
export type AdvancedFilterMap = Map<ModelIndex, AdvancedFilter>;
|
|
11
12
|
export type QuickFilterMap = Map<ModelIndex, QuickFilter>;
|
|
12
|
-
export type
|
|
13
|
-
export type
|
|
13
|
+
export type ReadonlyAdvancedFilterMap = ReadonlyMap<ModelIndex, AdvancedFilter>;
|
|
14
|
+
export type ReadonlyQuickFilterMap = ReadonlyMap<ModelIndex, QuickFilter>;
|
|
15
|
+
export type ReadonlyAggregationMap = Readonly<Record<AggregationOperation, readonly ColumnName[]>>;
|
|
16
|
+
export type OperationMap = Record<ColumnName, readonly AggregationOperation[]>;
|
|
17
|
+
export type ReadonlyOperationMap = Readonly<Record<ColumnName, readonly AggregationOperation[]>>;
|
|
14
18
|
export type QuickFilter = {
|
|
15
19
|
text: string;
|
|
16
20
|
filter: FilterCondition | null;
|
|
@@ -55,5 +59,7 @@ export type CellData = {
|
|
|
55
59
|
value: unknown;
|
|
56
60
|
format?: Format;
|
|
57
61
|
};
|
|
58
|
-
export type PendingDataMap<R extends UIRow = UIRow> =
|
|
62
|
+
export type PendingDataMap<R extends UIRow = UIRow> = ReadonlyMap<RowIndex, R>;
|
|
63
|
+
/** Maps from a row index to the errors for that row */
|
|
64
|
+
export type PendingDataErrorMap<T extends Error = Error> = ReadonlyMap<RowIndex, readonly T[]>;
|
|
59
65
|
//# sourceMappingURL=CommonTypes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommonTypes.d.ts","sourceRoot":"","sources":["../src/CommonTypes.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,MAAM,EACP,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,oBAAoB,MAAM,6CAA6C,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,YAAY,EAAE,qBAAqB,EAAE,CAAC;AACtC,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAChC,MAAM,MAAM,iBAAiB,GAAG,GAAG,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;AAChE,MAAM,MAAM,cAAc,GAAG,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAC1D,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,oBAAoB,EAAE,UAAU,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"CommonTypes.d.ts","sourceRoot":"","sources":["../src/CommonTypes.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,MAAM,EACP,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,oBAAoB,MAAM,6CAA6C,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC;AAElC,YAAY,EAAE,qBAAqB,EAAE,CAAC;AACtC,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAChC,MAAM,MAAM,iBAAiB,GAAG,GAAG,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;AAChE,MAAM,MAAM,cAAc,GAAG,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAC1D,MAAM,MAAM,yBAAyB,GAAG,WAAW,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;AAChF,MAAM,MAAM,sBAAsB,GAAG,WAAW,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAC1E,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAC3C,MAAM,CAAC,oBAAoB,EAAE,SAAS,UAAU,EAAE,CAAC,CACpD,CAAC;AACF,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,EAAE,SAAS,oBAAoB,EAAE,CAAC,CAAC;AAC/E,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CACzC,MAAM,CAAC,UAAU,EAAE,SAAS,oBAAoB,EAAE,CAAC,CACpD,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/B,OAAO,EAAE,qBAAqB,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF,MAAM,WAAW,mBAAoB,SAAQ,iBAAiB;IAC5D,cAAc,EAAE,oBAAoB,EAAE,CAAC;IACvC,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC;CACzC,CAAC;AAEF,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;CACjC;AAED,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,IAAI;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,CAAC,EAAE,CAAC;CACX,CAAC;AACF,MAAM,MAAM,OAAO,CAAC,CAAC,GAAG,OAAO,IAAI,GAAG,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,CAAC,CAAA;CAAE,CAAC,CAAC;AAE7D,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AACF,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAE/E,uDAAuD;AACvD,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,IAAI,WAAW,CACpE,QAAQ,EACR,SAAS,CAAC,EAAE,CACb,CAAC"}
|
package/dist/CommonTypes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommonTypes.js","names":[],"sources":["../src/CommonTypes.tsx"],"sourcesContent":["import { AdvancedFilterOptions } from '@deephaven/jsapi-utils';\nimport { ModelIndex } from '@deephaven/grid';\nimport {\n TotalsTableConfig,\n FilterCondition,\n Format,\n} from '@deephaven/jsapi-shim';\nimport { Shortcut } from '@deephaven/components';\nimport { IconDefinition } from '@deephaven/icons';\nimport AggregationOperation from './sidebar/aggregations/AggregationOperation';\nimport { OptionType } from './sidebar';\n\nexport type { AdvancedFilterOptions };\nexport type ColumnName = string;\nexport type AdvancedFilterMap = Map<ModelIndex, AdvancedFilter>;\nexport type QuickFilterMap = Map<ModelIndex, QuickFilter>;\nexport type
|
|
1
|
+
{"version":3,"file":"CommonTypes.js","names":[],"sources":["../src/CommonTypes.tsx"],"sourcesContent":["import { AdvancedFilterOptions } from '@deephaven/jsapi-utils';\nimport { ModelIndex } from '@deephaven/grid';\nimport {\n TotalsTableConfig,\n FilterCondition,\n Format,\n} from '@deephaven/jsapi-shim';\nimport { Shortcut } from '@deephaven/components';\nimport { IconDefinition } from '@deephaven/icons';\nimport AggregationOperation from './sidebar/aggregations/AggregationOperation';\nimport { OptionType } from './sidebar';\n\nexport type RowIndex = ModelIndex;\n\nexport type { AdvancedFilterOptions };\nexport type ColumnName = string;\nexport type AdvancedFilterMap = Map<ModelIndex, AdvancedFilter>;\nexport type QuickFilterMap = Map<ModelIndex, QuickFilter>;\nexport type ReadonlyAdvancedFilterMap = ReadonlyMap<ModelIndex, AdvancedFilter>;\nexport type ReadonlyQuickFilterMap = ReadonlyMap<ModelIndex, QuickFilter>;\nexport type ReadonlyAggregationMap = Readonly<\n Record<AggregationOperation, readonly ColumnName[]>\n>;\nexport type OperationMap = Record<ColumnName, readonly AggregationOperation[]>;\nexport type ReadonlyOperationMap = Readonly<\n Record<ColumnName, readonly AggregationOperation[]>\n>;\n\nexport type QuickFilter = {\n text: string;\n filter: FilterCondition | null;\n};\n\nexport type AdvancedFilter = {\n filter: FilterCondition | null;\n options: AdvancedFilterOptions;\n};\n\nexport type Action = {\n action: () => void;\n shortcut: Shortcut;\n};\n\nexport type OptionItem = {\n type: OptionType;\n title: string;\n subtitle?: string;\n icon?: IconDefinition;\n isOn?: boolean;\n onChange?: () => void;\n};\n\nexport interface UITotalsTableConfig extends TotalsTableConfig {\n operationOrder: AggregationOperation[];\n showOnTop: boolean;\n}\n\nexport type InputFilter = {\n name: string;\n type: string;\n value: string;\n excludePanelIds?: (string | string[])[];\n};\n\nexport interface UIRow {\n data: Map<ModelIndex, CellData>;\n}\n\nexport type UIViewportData<R extends UIRow = UIRow> = {\n offset: number;\n rows: R[];\n};\nexport type RowData<T = unknown> = Map<number, { value: T }>;\n\nexport type CellData = {\n value: unknown;\n format?: Format;\n};\nexport type PendingDataMap<R extends UIRow = UIRow> = ReadonlyMap<RowIndex, R>;\n\n/** Maps from a row index to the errors for that row */\nexport type PendingDataErrorMap<T extends Error = Error> = ReadonlyMap<\n RowIndex,\n readonly T[]\n>;\n"],"mappings":""}
|
|
@@ -5,21 +5,21 @@ import './CrossColumnSearch.scss';
|
|
|
5
5
|
import { ColumnName } from './CommonTypes';
|
|
6
6
|
interface CrossColumnSearchProps {
|
|
7
7
|
value: string;
|
|
8
|
-
selectedColumns: ColumnName[];
|
|
8
|
+
selectedColumns: readonly ColumnName[];
|
|
9
9
|
invertSelection: boolean;
|
|
10
|
-
onChange: (value: string, selectedColumns: ColumnName[], invertSelection: boolean) => void;
|
|
11
|
-
columns: Column[];
|
|
10
|
+
onChange: (value: string, selectedColumns: readonly ColumnName[], invertSelection: boolean) => void;
|
|
11
|
+
columns: readonly Column[];
|
|
12
12
|
}
|
|
13
13
|
interface CrossColumnSearchState {
|
|
14
14
|
isConfigureColumnsShown: boolean;
|
|
15
15
|
}
|
|
16
16
|
declare class CrossColumnSearch extends PureComponent<CrossColumnSearchProps, CrossColumnSearchState> {
|
|
17
|
-
static createSearchFilter(searchValue: string, selectedColumns: ColumnName[], columns: Column[], invertSelection: boolean): FilterCondition | undefined;
|
|
17
|
+
static createSearchFilter(searchValue: string, selectedColumns: readonly ColumnName[], columns: readonly Column[], invertSelection: boolean): FilterCondition | undefined;
|
|
18
18
|
constructor(props: CrossColumnSearchProps);
|
|
19
19
|
searchField: React.RefObject<SearchInput>;
|
|
20
20
|
focus(): void;
|
|
21
21
|
handleSearchValueChange(event: React.ChangeEvent<HTMLInputElement>): void;
|
|
22
|
-
sendColumnChange(selectedColumns: ColumnName[], invertSelection: boolean): void;
|
|
22
|
+
sendColumnChange(selectedColumns: readonly ColumnName[], invertSelection: boolean): void;
|
|
23
23
|
setInvertSelection(invertSelection: boolean): void;
|
|
24
24
|
toggleColumn(name: string): void;
|
|
25
25
|
selectAll(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CrossColumnSearch.d.ts","sourceRoot":"","sources":["../src/CrossColumnSearch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE7C,OAAO,EAAoB,WAAW,EAAW,MAAM,uBAAuB,CAAC;AAS/E,OAAW,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEpE,OAAO,0BAA0B,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,UAAU,sBAAsB;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,UAAU,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"CrossColumnSearch.d.ts","sourceRoot":"","sources":["../src/CrossColumnSearch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE7C,OAAO,EAAoB,WAAW,EAAW,MAAM,uBAAuB,CAAC;AAS/E,OAAW,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEpE,OAAO,0BAA0B,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,UAAU,sBAAsB;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC,eAAe,EAAE,OAAO,CAAC;IACzB,QAAQ,EAAE,CACR,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,SAAS,UAAU,EAAE,EACtC,eAAe,EAAE,OAAO,KACrB,IAAI,CAAC;IACV,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AAED,UAAU,sBAAsB;IAC9B,uBAAuB,EAAE,OAAO,CAAC;CAClC;AACD,cAAM,iBAAkB,SAAQ,aAAa,CAC3C,sBAAsB,EACtB,sBAAsB,CACvB;IACC,MAAM,CAAC,kBAAkB,CACvB,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,SAAS,UAAU,EAAE,EACtC,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,eAAe,EAAE,OAAO,GACvB,eAAe,GAAG,SAAS;gBAsBlB,KAAK,EAAE,sBAAsB;IAezC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAE1C,KAAK,IAAI,IAAI;IAIb,uBAAuB,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAKzE,gBAAgB,CACd,eAAe,EAAE,SAAS,UAAU,EAAE,EACtC,eAAe,EAAE,OAAO,GACvB,IAAI;IAKP,kBAAkB,CAAC,eAAe,EAAE,OAAO,GAAG,IAAI;IAKlD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAchC,SAAS,IAAI,IAAI;IAIjB,KAAK,IAAI,IAAI;IAIb,aAAa,IAAI,IAAI;IAUrB,MAAM,IAAI,KAAK,CAAC,YAAY;CAqJ7B;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CrossColumnSearch.js","names":["React","PureComponent","FontAwesomeIcon","Checkbox","Popper","SearchInput","Tooltip","dhGearFilled","dhCheckSquare","dhSquareFilled","dhRemoveSquareFilled","dhWarningCircleFilled","vsCircleLargeFilled","dh","TableUtils","CrossColumnSearch","createSearchFilter","searchValue","selectedColumns","columns","invertSelection","filterColumns","filter","column","includes","name","map","length","filterValue","FilterValue","ofString","searchFilter","FilterCondition","search","undefined","constructor","props","handleSearchValueChange","bind","toggleColumn","selectAll","clear","selectNumbers","searchField","createRef","state","isConfigureColumnsShown","focus","current","event","onChange","target","value","sendColumnChange","setInvertSelection","c","update","slice","push","isNumberType","type","render","hasAllColumnsSelected","hasNoColumnsSelected","icon","setState","substring","lastIndexOf"],"sources":["../src/CrossColumnSearch.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Checkbox, Popper, SearchInput, Tooltip } from '@deephaven/components';\nimport {\n dhGearFilled,\n dhCheckSquare,\n dhSquareFilled,\n dhRemoveSquareFilled,\n dhWarningCircleFilled,\n vsCircleLargeFilled,\n} from '@deephaven/icons';\nimport dh, { Column, FilterCondition } from '@deephaven/jsapi-shim';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport './CrossColumnSearch.scss';\nimport { ColumnName } from './CommonTypes';\n\ninterface CrossColumnSearchProps {\n value: string;\n selectedColumns: ColumnName[];\n invertSelection: boolean;\n onChange: (\n value: string,\n selectedColumns: ColumnName[],\n invertSelection: boolean\n ) => void;\n columns: Column[];\n}\n\ninterface CrossColumnSearchState {\n isConfigureColumnsShown: boolean;\n}\nclass CrossColumnSearch extends PureComponent<\n CrossColumnSearchProps,\n CrossColumnSearchState\n> {\n static createSearchFilter(\n searchValue: string,\n selectedColumns: ColumnName[],\n columns: Column[],\n invertSelection: boolean\n ): FilterCondition | undefined {\n const filterColumns = invertSelection\n ? columns\n .filter(column => !selectedColumns.includes(column.name))\n .map(column => column.name)\n : selectedColumns;\n if (searchValue && filterColumns.length > 0) {\n const filterValue = dh.FilterValue.ofString(searchValue);\n const searchFilter =\n filterColumns.length === columns.length\n ? dh.FilterCondition.search(filterValue)\n : dh.FilterCondition.search(\n filterValue,\n columns\n .filter(column => filterColumns.includes(column.name))\n .map(column => column.filter())\n );\n return searchFilter;\n }\n return undefined;\n }\n\n constructor(props: CrossColumnSearchProps) {\n super(props);\n this.handleSearchValueChange = this.handleSearchValueChange.bind(this);\n this.toggleColumn = this.toggleColumn.bind(this);\n this.selectAll = this.selectAll.bind(this);\n this.clear = this.clear.bind(this);\n this.selectNumbers = this.selectNumbers.bind(this);\n\n this.searchField = React.createRef();\n\n this.state = {\n isConfigureColumnsShown: false,\n };\n }\n\n searchField: React.RefObject<SearchInput>;\n\n focus(): void {\n this.searchField.current?.focus();\n }\n\n handleSearchValueChange(event: React.ChangeEvent<HTMLInputElement>): void {\n const { onChange, selectedColumns, invertSelection } = this.props;\n onChange(event.target.value, selectedColumns, invertSelection);\n }\n\n sendColumnChange(\n selectedColumns: ColumnName[],\n invertSelection: boolean\n ): void {\n const { onChange, value } = this.props;\n onChange(value, selectedColumns, invertSelection);\n }\n\n setInvertSelection(invertSelection: boolean): void {\n const { onChange, value } = this.props;\n onChange(value, [], invertSelection);\n }\n\n toggleColumn(name: string): void {\n const { selectedColumns, invertSelection } = this.props;\n if (selectedColumns.includes(name)) {\n this.sendColumnChange(\n selectedColumns.filter(c => c !== name),\n invertSelection\n );\n } else {\n const update = selectedColumns.slice();\n update.push(name);\n this.sendColumnChange(update, invertSelection);\n }\n }\n\n selectAll(): void {\n this.setInvertSelection(true);\n }\n\n clear(): void {\n this.setInvertSelection(false);\n }\n\n selectNumbers(): void {\n const { columns } = this.props;\n this.sendColumnChange(\n columns\n .filter(c => TableUtils.isNumberType(c.type))\n .map(column => column.name),\n false\n );\n }\n\n render(): React.ReactElement {\n const { value, selectedColumns, invertSelection, columns } = this.props;\n const { isConfigureColumnsShown } = this.state;\n const hasAllColumnsSelected =\n (selectedColumns.length === 0 && invertSelection === true) ||\n (selectedColumns.length === columns.length && invertSelection === false);\n const hasNoColumnsSelected =\n (selectedColumns.length === 0 && invertSelection === false) ||\n (selectedColumns.length === columns.length && invertSelection === true);\n\n // set icon layers\n let icon;\n if (hasAllColumnsSelected) {\n // icon if all columns selected for search\n icon = (\n <>\n <FontAwesomeIcon\n icon={dhSquareFilled}\n mask={dhGearFilled}\n transform=\"shrink-2 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhCheckSquare}\n className=\"text-primary\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n } else if (hasNoColumnsSelected) {\n // icon error, no columns selected for searching\n icon = (\n <>\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={dhGearFilled}\n transform=\"shrink-1 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhWarningCircleFilled}\n className=\"text-danger\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n } else {\n // icon if some columns selected, but not all\n icon = (\n <>\n <FontAwesomeIcon\n icon={dhSquareFilled}\n mask={dhGearFilled}\n transform=\"shrink-2 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhRemoveSquareFilled}\n className=\"text-primary\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n }\n\n return (\n <div className=\"cross-column-container\">\n <SearchInput\n className=\"cross-column-search\"\n placeholder=\"Search Data...\"\n value={value}\n onChange={this.handleSearchValueChange}\n ref={this.searchField}\n />\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon px-2\"\n onClick={() => {\n if (isConfigureColumnsShown) {\n this.setState({ isConfigureColumnsShown: false });\n } else {\n this.setState({ isConfigureColumnsShown: true });\n }\n }}\n >\n <div className=\"fa-layers\">{icon}</div>\n <Tooltip>Configure Columns</Tooltip>\n <Popper\n isShown={isConfigureColumnsShown}\n className=\"cross-column-popper\"\n onExited={() => {\n this.setState({ isConfigureColumnsShown: false });\n }}\n closeOnBlur\n interactive\n >\n <div className=\"cross-column-popup\">\n Searched Columns\n <div className=\"cross-column-scroll\">\n {columns.map(column => (\n <React.Fragment key={column.name}>\n <Checkbox\n className=\"cross-column-checkbox\"\n checked={\n invertSelection\n ? !selectedColumns.includes(column.name)\n : selectedColumns.includes(column.name)\n }\n onChange={() => this.toggleColumn(column.name)}\n >\n {column.name}\n </Checkbox>\n\n {column.type.substring(column.type.lastIndexOf('.') + 1)}\n </React.Fragment>\n ))}\n </div>\n <div className=\"cross-column-button-bar\">\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.selectAll}\n >\n Select All\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.clear}\n >\n Clear\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.selectNumbers}\n >\n Numbers Only\n </button>\n </div>\n {hasNoColumnsSelected && (\n <p className=\"text-danger\">\n <FontAwesomeIcon icon={dhWarningCircleFilled} /> Select at\n least one column to search.\n </p>\n )}\n </div>\n </Popper>\n </button>\n </div>\n );\n }\n}\n\nexport default CrossColumnSearch;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CrossColumnSearch.js","names":["React","PureComponent","FontAwesomeIcon","Checkbox","Popper","SearchInput","Tooltip","dhGearFilled","dhCheckSquare","dhSquareFilled","dhRemoveSquareFilled","dhWarningCircleFilled","vsCircleLargeFilled","dh","TableUtils","CrossColumnSearch","createSearchFilter","searchValue","selectedColumns","columns","invertSelection","filterColumns","filter","column","includes","name","map","length","filterValue","FilterValue","ofString","searchFilter","FilterCondition","search","undefined","constructor","props","handleSearchValueChange","bind","toggleColumn","selectAll","clear","selectNumbers","searchField","createRef","state","isConfigureColumnsShown","focus","current","event","onChange","target","value","sendColumnChange","setInvertSelection","c","update","slice","push","isNumberType","type","render","hasAllColumnsSelected","hasNoColumnsSelected","icon","setState","substring","lastIndexOf"],"sources":["../src/CrossColumnSearch.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Checkbox, Popper, SearchInput, Tooltip } from '@deephaven/components';\nimport {\n dhGearFilled,\n dhCheckSquare,\n dhSquareFilled,\n dhRemoveSquareFilled,\n dhWarningCircleFilled,\n vsCircleLargeFilled,\n} from '@deephaven/icons';\nimport dh, { Column, FilterCondition } from '@deephaven/jsapi-shim';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport './CrossColumnSearch.scss';\nimport { ColumnName } from './CommonTypes';\n\ninterface CrossColumnSearchProps {\n value: string;\n selectedColumns: readonly ColumnName[];\n invertSelection: boolean;\n onChange: (\n value: string,\n selectedColumns: readonly ColumnName[],\n invertSelection: boolean\n ) => void;\n columns: readonly Column[];\n}\n\ninterface CrossColumnSearchState {\n isConfigureColumnsShown: boolean;\n}\nclass CrossColumnSearch extends PureComponent<\n CrossColumnSearchProps,\n CrossColumnSearchState\n> {\n static createSearchFilter(\n searchValue: string,\n selectedColumns: readonly ColumnName[],\n columns: readonly Column[],\n invertSelection: boolean\n ): FilterCondition | undefined {\n const filterColumns = invertSelection\n ? columns\n .filter(column => !selectedColumns.includes(column.name))\n .map(column => column.name)\n : selectedColumns;\n if (searchValue && filterColumns.length > 0) {\n const filterValue = dh.FilterValue.ofString(searchValue);\n const searchFilter =\n filterColumns.length === columns.length\n ? dh.FilterCondition.search(filterValue)\n : dh.FilterCondition.search(\n filterValue,\n columns\n .filter(column => filterColumns.includes(column.name))\n .map(column => column.filter())\n );\n return searchFilter;\n }\n return undefined;\n }\n\n constructor(props: CrossColumnSearchProps) {\n super(props);\n this.handleSearchValueChange = this.handleSearchValueChange.bind(this);\n this.toggleColumn = this.toggleColumn.bind(this);\n this.selectAll = this.selectAll.bind(this);\n this.clear = this.clear.bind(this);\n this.selectNumbers = this.selectNumbers.bind(this);\n\n this.searchField = React.createRef();\n\n this.state = {\n isConfigureColumnsShown: false,\n };\n }\n\n searchField: React.RefObject<SearchInput>;\n\n focus(): void {\n this.searchField.current?.focus();\n }\n\n handleSearchValueChange(event: React.ChangeEvent<HTMLInputElement>): void {\n const { onChange, selectedColumns, invertSelection } = this.props;\n onChange(event.target.value, selectedColumns, invertSelection);\n }\n\n sendColumnChange(\n selectedColumns: readonly ColumnName[],\n invertSelection: boolean\n ): void {\n const { onChange, value } = this.props;\n onChange(value, selectedColumns, invertSelection);\n }\n\n setInvertSelection(invertSelection: boolean): void {\n const { onChange, value } = this.props;\n onChange(value, [], invertSelection);\n }\n\n toggleColumn(name: string): void {\n const { selectedColumns, invertSelection } = this.props;\n if (selectedColumns.includes(name)) {\n this.sendColumnChange(\n selectedColumns.filter(c => c !== name),\n invertSelection\n );\n } else {\n const update = selectedColumns.slice();\n update.push(name);\n this.sendColumnChange(update, invertSelection);\n }\n }\n\n selectAll(): void {\n this.setInvertSelection(true);\n }\n\n clear(): void {\n this.setInvertSelection(false);\n }\n\n selectNumbers(): void {\n const { columns } = this.props;\n this.sendColumnChange(\n columns\n .filter(c => TableUtils.isNumberType(c.type))\n .map(column => column.name),\n false\n );\n }\n\n render(): React.ReactElement {\n const { value, selectedColumns, invertSelection, columns } = this.props;\n const { isConfigureColumnsShown } = this.state;\n const hasAllColumnsSelected =\n (selectedColumns.length === 0 && invertSelection === true) ||\n (selectedColumns.length === columns.length && invertSelection === false);\n const hasNoColumnsSelected =\n (selectedColumns.length === 0 && invertSelection === false) ||\n (selectedColumns.length === columns.length && invertSelection === true);\n\n // set icon layers\n let icon;\n if (hasAllColumnsSelected) {\n // icon if all columns selected for search\n icon = (\n <>\n <FontAwesomeIcon\n icon={dhSquareFilled}\n mask={dhGearFilled}\n transform=\"shrink-2 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhCheckSquare}\n className=\"text-primary\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n } else if (hasNoColumnsSelected) {\n // icon error, no columns selected for searching\n icon = (\n <>\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={dhGearFilled}\n transform=\"shrink-1 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhWarningCircleFilled}\n className=\"text-danger\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n } else {\n // icon if some columns selected, but not all\n icon = (\n <>\n <FontAwesomeIcon\n icon={dhSquareFilled}\n mask={dhGearFilled}\n transform=\"shrink-2 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhRemoveSquareFilled}\n className=\"text-primary\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n }\n\n return (\n <div className=\"cross-column-container\">\n <SearchInput\n className=\"cross-column-search\"\n placeholder=\"Search Data...\"\n value={value}\n onChange={this.handleSearchValueChange}\n ref={this.searchField}\n />\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon px-2\"\n onClick={() => {\n if (isConfigureColumnsShown) {\n this.setState({ isConfigureColumnsShown: false });\n } else {\n this.setState({ isConfigureColumnsShown: true });\n }\n }}\n >\n <div className=\"fa-layers\">{icon}</div>\n <Tooltip>Configure Columns</Tooltip>\n <Popper\n isShown={isConfigureColumnsShown}\n className=\"cross-column-popper\"\n onExited={() => {\n this.setState({ isConfigureColumnsShown: false });\n }}\n closeOnBlur\n interactive\n >\n <div className=\"cross-column-popup\">\n Searched Columns\n <div className=\"cross-column-scroll\">\n {columns.map(column => (\n <React.Fragment key={column.name}>\n <Checkbox\n className=\"cross-column-checkbox\"\n checked={\n invertSelection\n ? !selectedColumns.includes(column.name)\n : selectedColumns.includes(column.name)\n }\n onChange={() => this.toggleColumn(column.name)}\n >\n {column.name}\n </Checkbox>\n\n {column.type.substring(column.type.lastIndexOf('.') + 1)}\n </React.Fragment>\n ))}\n </div>\n <div className=\"cross-column-button-bar\">\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.selectAll}\n >\n Select All\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.clear}\n >\n Clear\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.selectNumbers}\n >\n Numbers Only\n </button>\n </div>\n {hasNoColumnsSelected && (\n <p className=\"text-danger\">\n <FontAwesomeIcon icon={dhWarningCircleFilled} /> Select at\n least one column to search.\n </p>\n )}\n </div>\n </Popper>\n </button>\n </div>\n );\n }\n}\n\nexport default CrossColumnSearch;\n"],"mappings":"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"}
|