@deephaven/iris-grid 0.21.2-dhe-vite.5 → 0.22.1-beta.0
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/AdvancedFilterCreator.d.ts +1 -1
- package/dist/AdvancedFilterCreator.d.ts.map +1 -1
- package/dist/AdvancedFilterCreator.js +56 -58
- package/dist/AdvancedFilterCreator.js.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.js +8 -9
- package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.js +5 -6
- package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
- package/dist/ColumnStatistics.js +12 -11
- package/dist/ColumnStatistics.js.map +1 -1
- package/dist/FilterInputField.d.ts.map +1 -1
- package/dist/FilterInputField.js +4 -3
- package/dist/FilterInputField.js.map +1 -1
- package/dist/IrisGrid.d.ts +1 -1
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +30 -22
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridCopyHandler.d.ts.map +1 -1
- package/dist/IrisGridCopyHandler.js +4 -6
- package/dist/IrisGridCopyHandler.js.map +1 -1
- package/dist/IrisGridShortcuts.js +1 -1
- package/dist/IrisGridShortcuts.js.map +1 -1
- package/dist/sidebar/ChartBuilder.js +19 -19
- package/dist/sidebar/ChartBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.d.ts.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.js +14 -17
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnInput.d.ts.map +1 -1
- package/dist/sidebar/CustomColumnInput.js +8 -8
- package/dist/sidebar/CustomColumnInput.js.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.d.ts.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.js +16 -15
- package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
- package/dist/sidebar/TableCsvExporter.d.ts.map +1 -1
- package/dist/sidebar/TableCsvExporter.js +4 -4
- package/dist/sidebar/TableCsvExporter.js.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.d.ts.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.js +48 -41
- package/dist/sidebar/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +7 -7
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
- package/package.json +17 -25
|
@@ -56,7 +56,7 @@ declare class AdvancedFilterCreator extends PureComponent<AdvancedFilterCreatorP
|
|
|
56
56
|
handleFocusTrapStart(): void;
|
|
57
57
|
handleAddAnd(): void;
|
|
58
58
|
handleAddOr(): void;
|
|
59
|
-
handleChangeFilterOperator(
|
|
59
|
+
handleChangeFilterOperator(index: number, operator: string): void;
|
|
60
60
|
handleFilterChange(filterIndex: number, selectedType: FilterTypeValue, value: string): void;
|
|
61
61
|
handleFilterDelete(filterIndex: number): void;
|
|
62
62
|
handleSelectValueChange(selectedValues: unknown[], invertSelection: boolean): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdvancedFilterCreator.d.ts","sourceRoot":"","sources":["../src/AdvancedFilterCreator.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAI7C,OAAO,EAEL,aAAa,IAAI,mBAAmB,EACpC,SAAS,IAAI,eAAe,EAE7B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,SAAS,EAET,aAAa,EAEd,MAAM,wBAAwB,CAAC;AAGhC,OAAO,
|
|
1
|
+
{"version":3,"file":"AdvancedFilterCreator.d.ts","sourceRoot":"","sources":["../src/AdvancedFilterCreator.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAI7C,OAAO,EAEL,aAAa,IAAI,mBAAmB,EACpC,SAAS,IAAI,eAAe,EAE7B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,SAAS,EAET,aAAa,EAEd,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,iBAAiB,EAAgB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAIvE,OAAO,8BAA8B,CAAC;AACtC,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAItD,aAAK,mBAAmB,GAAG,CACzB,YAAY,EAAE,eAAe,EAC7B,KAAK,EAAE,MAAM,KACV,IAAI,CAAC;AAEV,UAAU,0BAA0B;IAClC,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,CACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,eAAe,GAAG,IAAI,EAC9B,OAAO,EAAE,qBAAqB,KAC3B,IAAI,CAAC;IACV,YAAY,EAAE,CACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,aAAa,EACxB,aAAa,CAAC,EAAE,OAAO,KACpB,IAAI,CAAC;IACV,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,qBAAqB,CAAC;IAC/B,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,SAAS,CAAC;CACtB;AAED,UAAU,kBAAkB;IAC1B,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;AAED,UAAU,0BAA0B;IAElC,WAAW,EAAE,kBAAkB,EAAE,CAAC;IAGlC,eAAe,EAAE,mBAAmB,EAAE,CAAC;IAEvC,eAAe,EAAE,OAAO,CAAC;IAEzB,cAAc,EAAE,OAAO,EAAE,CAAC;IAE1B,gBAAgB,EAAE,IAAI,CAAC;IACvB,WAAW,CAAC,EAAE,KAAK,CAAC;CACrB;AAED,cAAM,qBAAsB,SAAQ,aAAa,CAC/C,0BAA0B,EAC1B,0BAA0B,CAC3B;IACC,MAAM,CAAC,oBAAoB,SAAO;IAElC,MAAM,CAAC,YAAY;;;;;;;;MAQjB;IAEF,MAAM,CAAC,cAAc,IAAI,kBAAkB;gBAI/B,KAAK,EAAE,0BAA0B;IA6D7C,iBAAiB,IAAI,IAAI;IAIzB,oBAAoB,IAAI,IAAI;IAU5B,kBAAkB,EAAE,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAErD,eAAe,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IAEhD,kBAAkB,CAAC,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAE9C,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB;IAI1D,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,IAAI;IAIjD,cAAc,eAAwB,MAAM,KAAG,eAAe,EAAE,CAE9D;IAEF,eAAe,IAAI,IAAI;IA2BvB,kBAAkB,IAAI,IAAI;IAM1B,oBAAoB,IAAI,IAAI;IAU5B,YAAY,IAAI,IAAI;IAOpB,WAAW,IAAI,IAAI;IAOnB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAajE,kBAAkB,CAChB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,eAAe,EAC7B,KAAK,EAAE,MAAM,GACZ,IAAI;IAWP,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAwB7C,uBAAuB,CACrB,cAAc,EAAE,OAAO,EAAE,EACzB,eAAe,EAAE,OAAO,GACvB,IAAI;IAMP,WAAW,IAAI,IAAI;IAanB,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAKhE,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAK9D,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,GAAG,IAAI;IAQ3D,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAW5D,mBAAmB,IAAI,IAAI;IAK3B;;;;OAIG;IACH,mBAAmB,IAAI,OAAO;IAiB9B;;;;OAIG;IACH,SAAS,CAAC,SAAS,EAAE,aAAa,EAAE,aAAa,UAAQ,GAAG,IAAI;IAKhE,gBAAgB,IAAI,IAAI;IASxB,eAAe,IAAI,IAAI;IAOvB,UAAU,IAAI,IAAI;IA0ClB,MAAM,IAAI,GAAG,CAAC,OAAO;CA4KtB;AAED,eAAe,qBAAqB,CAAC"}
|
|
@@ -9,9 +9,9 @@ import memoize from 'memoize-one';
|
|
|
9
9
|
import { Operator as FilterOperator, assertOperatorValue as assertFilterOperatorValue } from '@deephaven/filters';
|
|
10
10
|
import { dhSortAmountDown, dhNewCircleLargeFilled } from '@deephaven/icons';
|
|
11
11
|
import { TableUtils } from '@deephaven/jsapi-utils';
|
|
12
|
-
import {
|
|
12
|
+
import { Button, ContextActionUtils } from '@deephaven/components';
|
|
13
13
|
import Log from '@deephaven/log';
|
|
14
|
-
import { PromiseUtils
|
|
14
|
+
import { PromiseUtils } from '@deephaven/utils';
|
|
15
15
|
import shortid from 'shortid';
|
|
16
16
|
import AdvancedFilterCreatorFilterItem from "./AdvancedFilterCreatorFilterItem.js";
|
|
17
17
|
import AdvancedFilterCreatorSelectValue from "./AdvancedFilterCreatorSelectValue.js";
|
|
@@ -198,14 +198,7 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
198
198
|
});
|
|
199
199
|
}
|
|
200
200
|
|
|
201
|
-
handleChangeFilterOperator(
|
|
202
|
-
var target = event.currentTarget;
|
|
203
|
-
var {
|
|
204
|
-
operator,
|
|
205
|
-
index: strIndex
|
|
206
|
-
} = target.dataset;
|
|
207
|
-
assertNotNull(strIndex);
|
|
208
|
-
var index = parseInt(strIndex, 10);
|
|
201
|
+
handleChangeFilterOperator(index, operator) {
|
|
209
202
|
var {
|
|
210
203
|
filterOperators
|
|
211
204
|
} = this.state;
|
|
@@ -404,6 +397,8 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
404
397
|
}
|
|
405
398
|
|
|
406
399
|
render() {
|
|
400
|
+
var _this = this;
|
|
401
|
+
|
|
407
402
|
var {
|
|
408
403
|
column,
|
|
409
404
|
model,
|
|
@@ -428,21 +423,21 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
428
423
|
var filterItemElements = [];
|
|
429
424
|
|
|
430
425
|
if (!isBoolean && filterTypes.length) {
|
|
431
|
-
|
|
426
|
+
var _loop = function _loop(i) {
|
|
432
427
|
var filterItem = filterItems[i];
|
|
433
428
|
var {
|
|
434
429
|
key,
|
|
435
|
-
selectedType
|
|
436
|
-
value
|
|
430
|
+
selectedType,
|
|
431
|
+
value
|
|
437
432
|
} = filterItem;
|
|
438
433
|
var element = /*#__PURE__*/React.createElement(AdvancedFilterCreatorFilterItem, {
|
|
439
434
|
key: key,
|
|
440
435
|
column: column,
|
|
441
436
|
filterTypes: filterTypes,
|
|
442
|
-
onChange:
|
|
443
|
-
onDelete:
|
|
444
|
-
selectedType:
|
|
445
|
-
value:
|
|
437
|
+
onChange: _this.getFilterChangeHandler(i),
|
|
438
|
+
onDelete: _this.getFilterDeleteHandler(i),
|
|
439
|
+
selectedType: selectedType,
|
|
440
|
+
value: value,
|
|
446
441
|
formatter: formatter
|
|
447
442
|
});
|
|
448
443
|
filterItemElements.push(element);
|
|
@@ -453,25 +448,25 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
453
448
|
var operatorElement = /*#__PURE__*/React.createElement("div", {
|
|
454
449
|
key: "filterOperator".concat(key),
|
|
455
450
|
className: "form-row justify-content-end advanced-filter-creator-filter-operator"
|
|
456
|
-
}, /*#__PURE__*/React.createElement(
|
|
457
|
-
|
|
458
|
-
className: classNames('
|
|
451
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
|
452
|
+
kind: "ghost",
|
|
453
|
+
className: classNames('filter-operator', {
|
|
459
454
|
active: isAndFilter
|
|
460
455
|
}),
|
|
461
|
-
onClick:
|
|
462
|
-
|
|
463
|
-
"
|
|
464
|
-
|
|
465
|
-
type: "button",
|
|
466
|
-
className: classNames('btn btn-link filter-operator', {
|
|
456
|
+
onClick: () => _this.handleChangeFilterOperator(i, FilterOperator.and)
|
|
457
|
+
}, "AND"), /*#__PURE__*/React.createElement(Button, {
|
|
458
|
+
kind: "ghost",
|
|
459
|
+
className: classNames('filter-operator', {
|
|
467
460
|
active: !isAndFilter
|
|
468
461
|
}),
|
|
469
|
-
onClick:
|
|
470
|
-
"data-index": i,
|
|
471
|
-
"data-operator": FilterOperator.or
|
|
462
|
+
onClick: () => _this.handleChangeFilterOperator(i, FilterOperator.or)
|
|
472
463
|
}, "OR"));
|
|
473
464
|
filterItemElements.push(operatorElement);
|
|
474
465
|
}
|
|
466
|
+
};
|
|
467
|
+
|
|
468
|
+
for (var i = 0; i < filterItems.length; i += 1) {
|
|
469
|
+
_loop(i);
|
|
475
470
|
}
|
|
476
471
|
}
|
|
477
472
|
|
|
@@ -485,17 +480,19 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
485
480
|
className: "text-muted"
|
|
486
481
|
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
487
482
|
icon: dhNewCircleLargeFilled
|
|
488
|
-
})), /*#__PURE__*/React.createElement(
|
|
489
|
-
|
|
490
|
-
className: "btn
|
|
483
|
+
})), /*#__PURE__*/React.createElement(Button, {
|
|
484
|
+
kind: "ghost",
|
|
485
|
+
className: "btn-filter-item",
|
|
491
486
|
onClick: this.handleAddAnd,
|
|
492
|
-
disabled: !showAddFilterItem
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
487
|
+
disabled: !showAddFilterItem,
|
|
488
|
+
tooltip: "Add filter with AND"
|
|
489
|
+
}, "AND"), /*#__PURE__*/React.createElement(Button, {
|
|
490
|
+
kind: "ghost",
|
|
491
|
+
className: "btn-filter-item",
|
|
496
492
|
onClick: this.handleAddOr,
|
|
497
|
-
disabled: !showAddFilterItem
|
|
498
|
-
|
|
493
|
+
disabled: !showAddFilterItem,
|
|
494
|
+
tooltip: "Add filter with OR"
|
|
495
|
+
}, "OR"));
|
|
499
496
|
filterItemElements.push(addFilterItem);
|
|
500
497
|
return /*#__PURE__*/React.createElement("div", {
|
|
501
498
|
className: "advanced-filter-creator",
|
|
@@ -512,24 +509,26 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
512
509
|
className: "advanced-filter-title"
|
|
513
510
|
}, "Advanced Filters"), /*#__PURE__*/React.createElement("div", {
|
|
514
511
|
className: "advanced-filter-menu-buttons"
|
|
515
|
-
}, /*#__PURE__*/React.createElement(
|
|
516
|
-
|
|
517
|
-
className: classNames('
|
|
512
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
|
513
|
+
kind: "ghost",
|
|
514
|
+
className: classNames('sort-operator', {
|
|
518
515
|
active: sortDirection === TableUtils.sortDirection.descending
|
|
519
516
|
}),
|
|
520
|
-
onClick: this.handleSortDown
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
}), /*#__PURE__*/React.createElement(
|
|
524
|
-
|
|
525
|
-
className: classNames('
|
|
517
|
+
onClick: this.handleSortDown,
|
|
518
|
+
icon: dhSortAmountDown,
|
|
519
|
+
tooltip: "Sort ".concat(column.name, " Descending")
|
|
520
|
+
}), /*#__PURE__*/React.createElement(Button, {
|
|
521
|
+
kind: "ghost",
|
|
522
|
+
className: classNames('sort-operator', {
|
|
526
523
|
active: sortDirection === TableUtils.sortDirection.ascending
|
|
527
524
|
}),
|
|
528
|
-
onClick: this.handleSortUp
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
525
|
+
onClick: this.handleSortUp,
|
|
526
|
+
icon: /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
527
|
+
icon: dhSortAmountDown,
|
|
528
|
+
rotation: 180
|
|
529
|
+
}),
|
|
530
|
+
tooltip: "Sort ".concat(column.name, " Ascending")
|
|
531
|
+
}))), /*#__PURE__*/React.createElement("hr", null), /*#__PURE__*/React.createElement("div", {
|
|
533
532
|
className: "advanced-filter-column-name"
|
|
534
533
|
}, column.name, "\xA0", /*#__PURE__*/React.createElement("span", {
|
|
535
534
|
className: "column-type"
|
|
@@ -545,13 +544,12 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
545
544
|
timeZone: formatter.timeZone
|
|
546
545
|
}))), /*#__PURE__*/React.createElement("div", {
|
|
547
546
|
className: "form-row justify-content-end"
|
|
548
|
-
}, /*#__PURE__*/React.createElement(
|
|
549
|
-
|
|
550
|
-
className: "
|
|
547
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
|
548
|
+
kind: "secondary",
|
|
549
|
+
className: "mr-2",
|
|
551
550
|
onClick: this.handleReset
|
|
552
|
-
}, "Reset"), /*#__PURE__*/React.createElement(
|
|
553
|
-
|
|
554
|
-
className: "btn btn-primary",
|
|
551
|
+
}, "Reset"), /*#__PURE__*/React.createElement(Button, {
|
|
552
|
+
kind: "primary",
|
|
555
553
|
onClick: this.handleDone
|
|
556
554
|
}, "Done"))), /*#__PURE__*/React.createElement("div", {
|
|
557
555
|
tabIndex: 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdvancedFilterCreator.js","names":["React","PureComponent","classNames","FontAwesomeIcon","memoize","Operator","FilterOperator","assertOperatorValue","assertFilterOperatorValue","dhSortAmountDown","dhNewCircleLargeFilled","TableUtils","ContextActionUtils","Tooltip","Log","PromiseUtils","assertNotNull","shortid","AdvancedFilterCreatorFilterItem","AdvancedFilterCreatorSelectValue","log","module","AdvancedFilterCreator","makeFilterItem","key","constructor","props","columnType","getFilterTypes","handleAddAnd","bind","handleAddOr","handleChangeFilterOperator","handleDone","handleFilterChange","handleFilterDelete","handleSelectValueChange","handleReset","handleSortDown","handleSortUp","handleSubmit","handleFocusTrapStart","handleFocusTrapEnd","handleUpdateTimeout","focusTrapContainer","createRef","options","filterOperators","invertSelection","selectedValues","filterItems","map","selectedType","value","length","push","state","valuesTableError","valuesTable","undefined","componentDidMount","initValuesTable","componentWillUnmount","debounceTimeout","clearTimeout","sendUpdate","valuesTablePromise","cancel","getFilterChangeHandler","index","getFilterDeleteHandler","model","column","isValuesTableAvailable","debug","makeCancelableTablePromise","then","sort","columns","asc","applySort","setState","catch","error","isCanceled","current","querySelector","focus","inputs","querySelectorAll","element","concat","and","or","event","target","currentTarget","operator","strIndex","dataset","parseInt","startUpdateTimer","filterIndex","splice","addToExisting","isModifierKeyDown","sortTable","sortDirection","descending","ascending","stopUpdateTimer","preventDefault","onDone","shouldShowAddFilter","filterItem","direction","onSortChange","setTimeout","debounceFilterUpdate","onFilterChange","formatter","items","filter","operators","i","slice","makeAdvancedFilter","timeZone","render","isBoolean","isBooleanType","type","isDateType","filterTypes","substring","lastIndexOf","filterItemElements","filterOperator","isAndFilter","operatorElement","active","showAddFilterItem","addFilterItem","hidden","name"],"sources":["../src/AdvancedFilterCreator.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n// disabled for tab-index on focus traps, which are intentionally non-interactive\n\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport memoize from 'memoize-one';\nimport {\n Operator as FilterOperator,\n OperatorValue as FilterOperatorValue,\n TypeValue as FilterTypeValue,\n assertOperatorValue as assertFilterOperatorValue,\n} from '@deephaven/filters';\nimport { dhSortAmountDown, dhNewCircleLargeFilled } from '@deephaven/icons';\nimport {\n Formatter,\n TableUtils,\n SortDirection,\n FilterItem,\n} from '@deephaven/jsapi-utils';\nimport { ContextActionUtils, Tooltip } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport {\n CancelablePromise,\n PromiseUtils,\n assertNotNull,\n} from '@deephaven/utils';\nimport { Column, FilterCondition, Table } from '@deephaven/jsapi-shim';\nimport shortid from 'shortid';\nimport AdvancedFilterCreatorFilterItem from './AdvancedFilterCreatorFilterItem';\nimport AdvancedFilterCreatorSelectValue from './AdvancedFilterCreatorSelectValue';\nimport './AdvancedFilterCreator.scss';\nimport IrisGridModel from './IrisGridModel';\nimport { AdvancedFilterOptions } from './CommonTypes';\n\nconst log = Log.module('AdvancedFilterCreator');\n\ntype FilterChangeHandler = (\n selectedType: FilterTypeValue,\n value: string\n) => void;\n\ninterface AdvancedFilterCreatorProps {\n model: IrisGridModel;\n column: Column;\n onFilterChange: (\n column: Column,\n filter: FilterCondition | null,\n options: AdvancedFilterOptions\n ) => void;\n onSortChange: (\n column: Column,\n direction: SortDirection,\n addToExisting?: boolean\n ) => void;\n onDone: () => void;\n options: AdvancedFilterOptions;\n sortDirection: SortDirection;\n formatter: Formatter;\n}\n\ninterface AdvancedFilterItem {\n selectedType?: FilterTypeValue;\n value?: string;\n key: string;\n}\n\ninterface AdvancedFilterCreatorState {\n // Filter items\n filterItems: AdvancedFilterItem[];\n\n // And/Or between the filter items\n filterOperators: FilterOperatorValue[];\n\n invertSelection: boolean;\n\n selectedValues: unknown[];\n\n valuesTableError: null;\n valuesTable?: Table;\n}\n\nclass AdvancedFilterCreator extends PureComponent<\n AdvancedFilterCreatorProps,\n AdvancedFilterCreatorState\n> {\n static debounceFilterUpdate = 250;\n\n static defaultProps = {\n options: {\n filterItems: null,\n filterOperators: null,\n invertSelection: true,\n selectedValues: [],\n },\n sortDirection: null,\n };\n\n static makeFilterItem(): AdvancedFilterItem {\n return { key: shortid() };\n }\n\n constructor(props: AdvancedFilterCreatorProps) {\n super(props);\n\n this.handleAddAnd = this.handleAddAnd.bind(this);\n this.handleAddOr = this.handleAddOr.bind(this);\n this.handleChangeFilterOperator = this.handleChangeFilterOperator.bind(\n this\n );\n this.handleDone = this.handleDone.bind(this);\n this.handleFilterChange = this.handleFilterChange.bind(this);\n this.handleFilterDelete = this.handleFilterDelete.bind(this);\n this.handleSelectValueChange = this.handleSelectValueChange.bind(this);\n this.handleReset = this.handleReset.bind(this);\n this.handleSortDown = this.handleSortDown.bind(this);\n this.handleSortUp = this.handleSortUp.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleFocusTrapStart = this.handleFocusTrapStart.bind(this);\n this.handleFocusTrapEnd = this.handleFocusTrapEnd.bind(this);\n this.handleUpdateTimeout = this.handleUpdateTimeout.bind(this);\n\n this.focusTrapContainer = React.createRef();\n\n const { options } = props;\n let { filterOperators, invertSelection, selectedValues } = options;\n\n // can be null or an empty array\n const filterItems: AdvancedFilterItem[] =\n options.filterItems?.map(({ selectedType, value }) => ({\n selectedType,\n value,\n key: shortid(),\n })) ?? [];\n if (filterItems.length === 0) {\n filterItems.push(AdvancedFilterCreator.makeFilterItem());\n }\n if (filterOperators == null) {\n filterOperators = [];\n }\n if (invertSelection == null) {\n invertSelection = true;\n }\n if (selectedValues == null) {\n selectedValues = [];\n }\n\n this.state = {\n // Filter items\n filterItems,\n\n // And/Or between the filter items\n filterOperators,\n\n invertSelection,\n\n selectedValues,\n\n valuesTableError: null,\n valuesTable: undefined,\n };\n }\n\n componentDidMount(): void {\n this.initValuesTable();\n }\n\n componentWillUnmount(): void {\n if (this.debounceTimeout != null) {\n clearTimeout(this.debounceTimeout);\n this.sendUpdate();\n }\n if (this.valuesTablePromise != null) {\n this.valuesTablePromise.cancel();\n }\n }\n\n focusTrapContainer: React.RefObject<HTMLFormElement>;\n\n debounceTimeout?: ReturnType<typeof setTimeout>;\n\n valuesTablePromise?: CancelablePromise<Table>;\n\n getFilterChangeHandler(index: number): FilterChangeHandler {\n return this.handleFilterChange.bind(this, index);\n }\n\n getFilterDeleteHandler(index: number): () => void {\n return this.handleFilterDelete.bind(this, index);\n }\n\n getFilterTypes = memoize((columnType: string): FilterTypeValue[] =>\n TableUtils.getFilterTypes(columnType)\n );\n\n initValuesTable(): void {\n const { model, column } = this.props;\n if (!model.isValuesTableAvailable) {\n log.debug('No values table for this model, just ignore');\n return;\n }\n\n this.valuesTablePromise = TableUtils.makeCancelableTablePromise(\n model.valuesTable(column)\n );\n this.valuesTablePromise\n .then(valuesTable => {\n const sort = valuesTable.columns[0].sort().asc();\n valuesTable.applySort([sort]);\n\n this.setState({ valuesTable });\n })\n .catch(error => {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n log.error('Unable to open values table', error);\n this.setState({ valuesTableError: error });\n });\n }\n\n handleFocusTrapEnd(): void {\n (this.focusTrapContainer?.current?.querySelector(\n 'button,select,input,textarea'\n ) as HTMLElement).focus();\n }\n\n handleFocusTrapStart(): void {\n const inputs = this.focusTrapContainer?.current?.querySelectorAll(\n 'button,select,input,textarea'\n );\n if (inputs && inputs.length > 0) {\n const element = inputs[inputs.length - 1] as HTMLElement;\n element.focus();\n }\n }\n\n handleAddAnd(): void {\n let { filterItems, filterOperators } = this.state;\n filterItems = filterItems.concat(AdvancedFilterCreator.makeFilterItem());\n filterOperators = filterOperators.concat(FilterOperator.and);\n this.setState({ filterItems, filterOperators });\n }\n\n handleAddOr(): void {\n let { filterItems, filterOperators } = this.state;\n filterItems = filterItems.concat(AdvancedFilterCreator.makeFilterItem());\n filterOperators = filterOperators.concat(FilterOperator.or);\n this.setState({ filterItems, filterOperators });\n }\n\n handleChangeFilterOperator(event: React.MouseEvent<HTMLButtonElement>): void {\n const target = event.currentTarget;\n\n const { operator, index: strIndex } = target.dataset;\n assertNotNull(strIndex);\n const index = parseInt(strIndex, 10);\n\n let { filterOperators } = this.state;\n filterOperators = [...filterOperators];\n\n assertFilterOperatorValue(operator);\n\n filterOperators[index] = operator;\n\n this.setState({ filterOperators });\n\n this.startUpdateTimer();\n }\n\n handleFilterChange(\n filterIndex: number,\n selectedType: FilterTypeValue,\n value: string\n ): void {\n let { filterItems } = this.state;\n filterItems = [...filterItems];\n const { key } = filterItems[filterIndex];\n filterItems[filterIndex] = { key, selectedType, value };\n\n this.setState({ filterItems });\n\n this.startUpdateTimer();\n }\n\n handleFilterDelete(filterIndex: number): void {\n let { filterItems, filterOperators } = this.state;\n filterItems = [...filterItems];\n filterOperators = [...filterOperators];\n if (filterIndex < filterItems.length) {\n filterItems.splice(filterIndex, 1);\n }\n\n if (filterIndex < filterOperators.length) {\n filterOperators.splice(filterIndex, 1);\n } else if (filterIndex === filterOperators.length) {\n // When deleting the last filter item, we also need to remove the last filter operator\n filterOperators.splice(filterOperators.length - 1, 1);\n }\n\n if (filterItems.length === 0) {\n filterItems.push(AdvancedFilterCreator.makeFilterItem());\n }\n\n this.setState({ filterItems, filterOperators });\n\n this.startUpdateTimer();\n }\n\n handleSelectValueChange(\n selectedValues: unknown[],\n invertSelection: boolean\n ): void {\n this.setState({ selectedValues, invertSelection });\n\n this.startUpdateTimer();\n }\n\n handleReset(): void {\n log.debug('Resetting Advanced Filter');\n\n this.setState({\n filterItems: [AdvancedFilterCreator.makeFilterItem()],\n filterOperators: [],\n selectedValues: [],\n invertSelection: true,\n });\n\n this.startUpdateTimer();\n }\n\n handleSortDown(event: React.MouseEvent<HTMLButtonElement>): void {\n const addToExisting = ContextActionUtils.isModifierKeyDown(event);\n this.sortTable(TableUtils.sortDirection.descending, addToExisting);\n }\n\n handleSortUp(event: React.MouseEvent<HTMLButtonElement>): void {\n const addToExisting = ContextActionUtils.isModifierKeyDown(event);\n this.sortTable(TableUtils.sortDirection.ascending, addToExisting);\n }\n\n handleSubmit(event: React.FormEvent<HTMLFormElement>): void {\n log.debug('Submitting Advanced Filter');\n this.stopUpdateTimer();\n this.sendUpdate();\n\n event.preventDefault();\n }\n\n handleDone(event: React.MouseEvent<HTMLButtonElement>): void {\n log.debug('Submitting and Closing Advanced Filter');\n this.stopUpdateTimer();\n this.sendUpdate();\n\n const { onDone } = this.props;\n onDone();\n\n event.preventDefault();\n }\n\n handleUpdateTimeout(): void {\n this.debounceTimeout = undefined;\n this.sendUpdate();\n }\n\n /**\n * Convenience function to check if the previous filter has been inputted, and\n * we should show the add filter buttons (+ AND OR)\n * @returns true If the add filter buttons should be shown, false otherwise\n */\n shouldShowAddFilter(): boolean {\n const { filterItems } = this.state;\n if (filterItems.length === 0) {\n return false;\n }\n\n const filterItem = filterItems[filterItems.length - 1];\n const { selectedType, value } = filterItem;\n\n return (\n selectedType != null &&\n selectedType.length > 0 &&\n value != null &&\n value.length > 0\n );\n }\n\n /**\n * Sorts the table in the specified direction. If already sorted in that direction, remove it.\n * @param direction The sort direction, ASC or DESC\n * @param addToExisting Add to the existing sort, or replace the existing table sort\n */\n sortTable(direction: SortDirection, addToExisting = false): void {\n const { column, onSortChange } = this.props;\n onSortChange(column, direction, addToExisting);\n }\n\n startUpdateTimer(): void {\n this.stopUpdateTimer();\n\n this.debounceTimeout = setTimeout(\n this.handleUpdateTimeout,\n AdvancedFilterCreator.debounceFilterUpdate\n );\n }\n\n stopUpdateTimer(): void {\n if (this.debounceTimeout !== undefined) {\n clearTimeout(this.debounceTimeout);\n this.debounceTimeout = undefined;\n }\n }\n\n sendUpdate(): void {\n const {\n filterItems,\n filterOperators,\n invertSelection,\n selectedValues,\n } = this.state;\n const { column, onFilterChange, model } = this.props;\n const { formatter } = model;\n\n const items = filterItems.filter(\n ({ selectedType, value }) =>\n selectedType != null && value != null && value !== ''\n ) as FilterItem[];\n\n const operators = filterOperators\n .filter(\n (operator, i) =>\n operator != null &&\n filterItems[i].selectedType != null &&\n filterItems[i].value != null &&\n filterItems[i].value !== ''\n )\n .slice(0, items.length - 1);\n // slice last operator, user may have set an operator but not a value\n\n const options = {\n filterItems: items,\n filterOperators: operators,\n invertSelection,\n selectedValues,\n };\n\n const filter = TableUtils.makeAdvancedFilter(\n column,\n options,\n formatter.timeZone\n );\n\n onFilterChange(column, filter, options);\n }\n\n render(): JSX.Element {\n const { column, model, sortDirection, formatter } = this.props;\n const {\n filterItems,\n filterOperators,\n invertSelection,\n selectedValues,\n valuesTable,\n valuesTableError,\n } = this.state;\n const { isValuesTableAvailable } = model;\n const isBoolean = TableUtils.isBooleanType(column.type);\n const isDateType = TableUtils.isDateType(column.type);\n const filterTypes = this.getFilterTypes(column.type);\n const columnType = column.type.substring(column.type.lastIndexOf('.') + 1);\n const filterItemElements = [];\n if (!isBoolean && filterTypes.length) {\n for (let i = 0; i < filterItems.length; i += 1) {\n const filterItem = filterItems[i];\n const { key, selectedType, value } = filterItem;\n\n const element = (\n <AdvancedFilterCreatorFilterItem\n key={key}\n column={column}\n filterTypes={filterTypes}\n onChange={this.getFilterChangeHandler(i)}\n onDelete={this.getFilterDeleteHandler(i)}\n selectedType={selectedType}\n value={value}\n formatter={formatter}\n />\n );\n filterItemElements.push(element);\n\n if (i < filterOperators.length) {\n const filterOperator = filterOperators[i];\n const isAndFilter = filterOperator === FilterOperator.and;\n const operatorElement = (\n <div\n key={`filterOperator${key}`}\n className=\"form-row justify-content-end advanced-filter-creator-filter-operator\"\n >\n <button\n type=\"button\"\n className={classNames('btn btn-link filter-operator', {\n active: isAndFilter,\n })}\n onClick={this.handleChangeFilterOperator}\n data-index={i}\n data-operator={FilterOperator.and}\n >\n AND\n </button>\n <button\n type=\"button\"\n className={classNames('btn btn-link filter-operator', {\n active: !isAndFilter,\n })}\n onClick={this.handleChangeFilterOperator}\n data-index={i}\n data-operator={FilterOperator.or}\n >\n OR\n </button>\n </div>\n );\n filterItemElements.push(operatorElement);\n }\n }\n }\n const showAddFilterItem = this.shouldShowAddFilter();\n const addFilterItem = (\n <div\n key=\"addFilterItem\"\n className={classNames('form-row justify-content-end add-filter-item', {\n hidden: !showAddFilterItem,\n })}\n >\n <span className=\"text-muted\">\n <FontAwesomeIcon icon={dhNewCircleLargeFilled} />\n </span>\n <button\n type=\"button\"\n className=\"btn btn-link btn-filter-item\"\n onClick={this.handleAddAnd}\n disabled={!showAddFilterItem}\n >\n AND\n <Tooltip>Add filter with AND</Tooltip>\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link btn-filter-item\"\n onClick={this.handleAddOr}\n disabled={!showAddFilterItem}\n >\n OR\n <Tooltip>Add filter with OR</Tooltip>\n </button>\n </div>\n );\n filterItemElements.push(addFilterItem);\n\n return (\n <div className=\"advanced-filter-creator\" role=\"presentation\">\n <div tabIndex={0} onFocus={this.handleFocusTrapStart} />\n <form onSubmit={this.handleSubmit} ref={this.focusTrapContainer}>\n <div className=\"title-bar\">\n <h6 className=\"advanced-filter-title\">Advanced Filters</h6>\n <div className=\"advanced-filter-menu-buttons\">\n <button\n type=\"button\"\n className={classNames(\n 'btn btn-link btn-link-icon sort-operator',\n {\n active:\n sortDirection === TableUtils.sortDirection.descending,\n }\n )}\n onClick={this.handleSortDown}\n >\n <FontAwesomeIcon icon={dhSortAmountDown} />\n <Tooltip>Sort {column.name} Descending</Tooltip>\n </button>\n <button\n type=\"button\"\n className={classNames(\n 'btn btn-link btn-link-icon sort-operator',\n {\n active:\n sortDirection === TableUtils.sortDirection.ascending,\n }\n )}\n onClick={this.handleSortUp}\n >\n <FontAwesomeIcon rotation={180} icon={dhSortAmountDown} />\n <Tooltip>Sort {column.name} Ascending</Tooltip>\n </button>\n </div>\n </div>\n <hr />\n <div className=\"advanced-filter-column-name\">\n {column.name} \n <span className=\"column-type\">({columnType})</span>\n </div>\n {filterItemElements}\n {isValuesTableAvailable && valuesTableError == null && (\n <>\n {!isBoolean && <hr />}\n <div className=\"form-group\">\n <AdvancedFilterCreatorSelectValue<unknown>\n table={valuesTable}\n onChange={this.handleSelectValueChange}\n invertSelection={invertSelection}\n selectedValues={selectedValues}\n formatter={formatter}\n showSearch={!isDateType}\n timeZone={formatter.timeZone}\n />\n </div>\n </>\n )}\n <div className=\"form-row justify-content-end\">\n <button\n type=\"button\"\n className=\"btn btn-outline-primary mr-2\"\n onClick={this.handleReset}\n >\n Reset\n </button>\n <button\n type=\"button\"\n className=\"btn btn-primary\"\n onClick={this.handleDone}\n >\n Done\n </button>\n </div>\n </form>\n <div tabIndex={0} onFocus={this.handleFocusTrapEnd} />\n </div>\n );\n }\n}\n\nexport default AdvancedFilterCreator;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AdvancedFilterCreator.js","names":["React","PureComponent","classNames","FontAwesomeIcon","memoize","Operator","FilterOperator","assertOperatorValue","assertFilterOperatorValue","dhSortAmountDown","dhNewCircleLargeFilled","TableUtils","Button","ContextActionUtils","Log","PromiseUtils","shortid","AdvancedFilterCreatorFilterItem","AdvancedFilterCreatorSelectValue","log","module","AdvancedFilterCreator","makeFilterItem","key","constructor","props","columnType","getFilterTypes","handleAddAnd","bind","handleAddOr","handleChangeFilterOperator","handleDone","handleFilterChange","handleFilterDelete","handleSelectValueChange","handleReset","handleSortDown","handleSortUp","handleSubmit","handleFocusTrapStart","handleFocusTrapEnd","handleUpdateTimeout","focusTrapContainer","createRef","options","filterOperators","invertSelection","selectedValues","filterItems","map","selectedType","value","length","push","state","valuesTableError","valuesTable","undefined","componentDidMount","initValuesTable","componentWillUnmount","debounceTimeout","clearTimeout","sendUpdate","valuesTablePromise","cancel","getFilterChangeHandler","index","getFilterDeleteHandler","model","column","isValuesTableAvailable","debug","makeCancelableTablePromise","then","sort","columns","asc","applySort","setState","catch","error","isCanceled","current","querySelector","focus","inputs","querySelectorAll","element","concat","and","or","operator","startUpdateTimer","filterIndex","splice","event","addToExisting","isModifierKeyDown","sortTable","sortDirection","descending","ascending","stopUpdateTimer","preventDefault","onDone","shouldShowAddFilter","filterItem","direction","onSortChange","setTimeout","debounceFilterUpdate","onFilterChange","formatter","items","filter","operators","i","slice","makeAdvancedFilter","timeZone","render","isBoolean","isBooleanType","type","isDateType","filterTypes","substring","lastIndexOf","filterItemElements","filterOperator","isAndFilter","operatorElement","active","showAddFilterItem","addFilterItem","hidden","name"],"sources":["../src/AdvancedFilterCreator.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n// disabled for tab-index on focus traps, which are intentionally non-interactive\n\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport memoize from 'memoize-one';\nimport {\n Operator as FilterOperator,\n OperatorValue as FilterOperatorValue,\n TypeValue as FilterTypeValue,\n assertOperatorValue as assertFilterOperatorValue,\n} from '@deephaven/filters';\nimport { dhSortAmountDown, dhNewCircleLargeFilled } from '@deephaven/icons';\nimport {\n Formatter,\n TableUtils,\n SortDirection,\n FilterItem,\n} from '@deephaven/jsapi-utils';\nimport { Button, ContextActionUtils } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { CancelablePromise, PromiseUtils } from '@deephaven/utils';\nimport { Column, FilterCondition, Table } from '@deephaven/jsapi-shim';\nimport shortid from 'shortid';\nimport AdvancedFilterCreatorFilterItem from './AdvancedFilterCreatorFilterItem';\nimport AdvancedFilterCreatorSelectValue from './AdvancedFilterCreatorSelectValue';\nimport './AdvancedFilterCreator.scss';\nimport IrisGridModel from './IrisGridModel';\nimport { AdvancedFilterOptions } from './CommonTypes';\n\nconst log = Log.module('AdvancedFilterCreator');\n\ntype FilterChangeHandler = (\n selectedType: FilterTypeValue,\n value: string\n) => void;\n\ninterface AdvancedFilterCreatorProps {\n model: IrisGridModel;\n column: Column;\n onFilterChange: (\n column: Column,\n filter: FilterCondition | null,\n options: AdvancedFilterOptions\n ) => void;\n onSortChange: (\n column: Column,\n direction: SortDirection,\n addToExisting?: boolean\n ) => void;\n onDone: () => void;\n options: AdvancedFilterOptions;\n sortDirection: SortDirection;\n formatter: Formatter;\n}\n\ninterface AdvancedFilterItem {\n selectedType?: FilterTypeValue;\n value?: string;\n key: string;\n}\n\ninterface AdvancedFilterCreatorState {\n // Filter items\n filterItems: AdvancedFilterItem[];\n\n // And/Or between the filter items\n filterOperators: FilterOperatorValue[];\n\n invertSelection: boolean;\n\n selectedValues: unknown[];\n\n valuesTableError: null;\n valuesTable?: Table;\n}\n\nclass AdvancedFilterCreator extends PureComponent<\n AdvancedFilterCreatorProps,\n AdvancedFilterCreatorState\n> {\n static debounceFilterUpdate = 250;\n\n static defaultProps = {\n options: {\n filterItems: null,\n filterOperators: null,\n invertSelection: true,\n selectedValues: [],\n },\n sortDirection: null,\n };\n\n static makeFilterItem(): AdvancedFilterItem {\n return { key: shortid() };\n }\n\n constructor(props: AdvancedFilterCreatorProps) {\n super(props);\n\n this.handleAddAnd = this.handleAddAnd.bind(this);\n this.handleAddOr = this.handleAddOr.bind(this);\n this.handleChangeFilterOperator = this.handleChangeFilterOperator.bind(\n this\n );\n this.handleDone = this.handleDone.bind(this);\n this.handleFilterChange = this.handleFilterChange.bind(this);\n this.handleFilterDelete = this.handleFilterDelete.bind(this);\n this.handleSelectValueChange = this.handleSelectValueChange.bind(this);\n this.handleReset = this.handleReset.bind(this);\n this.handleSortDown = this.handleSortDown.bind(this);\n this.handleSortUp = this.handleSortUp.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleFocusTrapStart = this.handleFocusTrapStart.bind(this);\n this.handleFocusTrapEnd = this.handleFocusTrapEnd.bind(this);\n this.handleUpdateTimeout = this.handleUpdateTimeout.bind(this);\n\n this.focusTrapContainer = React.createRef();\n\n const { options } = props;\n let { filterOperators, invertSelection, selectedValues } = options;\n\n // can be null or an empty array\n const filterItems: AdvancedFilterItem[] =\n options.filterItems?.map(({ selectedType, value }) => ({\n selectedType,\n value,\n key: shortid(),\n })) ?? [];\n if (filterItems.length === 0) {\n filterItems.push(AdvancedFilterCreator.makeFilterItem());\n }\n if (filterOperators == null) {\n filterOperators = [];\n }\n if (invertSelection == null) {\n invertSelection = true;\n }\n if (selectedValues == null) {\n selectedValues = [];\n }\n\n this.state = {\n // Filter items\n filterItems,\n\n // And/Or between the filter items\n filterOperators,\n\n invertSelection,\n\n selectedValues,\n\n valuesTableError: null,\n valuesTable: undefined,\n };\n }\n\n componentDidMount(): void {\n this.initValuesTable();\n }\n\n componentWillUnmount(): void {\n if (this.debounceTimeout != null) {\n clearTimeout(this.debounceTimeout);\n this.sendUpdate();\n }\n if (this.valuesTablePromise != null) {\n this.valuesTablePromise.cancel();\n }\n }\n\n focusTrapContainer: React.RefObject<HTMLFormElement>;\n\n debounceTimeout?: ReturnType<typeof setTimeout>;\n\n valuesTablePromise?: CancelablePromise<Table>;\n\n getFilterChangeHandler(index: number): FilterChangeHandler {\n return this.handleFilterChange.bind(this, index);\n }\n\n getFilterDeleteHandler(index: number): () => void {\n return this.handleFilterDelete.bind(this, index);\n }\n\n getFilterTypes = memoize((columnType: string): FilterTypeValue[] =>\n TableUtils.getFilterTypes(columnType)\n );\n\n initValuesTable(): void {\n const { model, column } = this.props;\n if (!model.isValuesTableAvailable) {\n log.debug('No values table for this model, just ignore');\n return;\n }\n\n this.valuesTablePromise = TableUtils.makeCancelableTablePromise(\n model.valuesTable(column)\n );\n this.valuesTablePromise\n .then(valuesTable => {\n const sort = valuesTable.columns[0].sort().asc();\n valuesTable.applySort([sort]);\n\n this.setState({ valuesTable });\n })\n .catch(error => {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n log.error('Unable to open values table', error);\n this.setState({ valuesTableError: error });\n });\n }\n\n handleFocusTrapEnd(): void {\n (this.focusTrapContainer?.current?.querySelector(\n 'button,select,input,textarea'\n ) as HTMLElement).focus();\n }\n\n handleFocusTrapStart(): void {\n const inputs = this.focusTrapContainer?.current?.querySelectorAll(\n 'button,select,input,textarea'\n );\n if (inputs && inputs.length > 0) {\n const element = inputs[inputs.length - 1] as HTMLElement;\n element.focus();\n }\n }\n\n handleAddAnd(): void {\n let { filterItems, filterOperators } = this.state;\n filterItems = filterItems.concat(AdvancedFilterCreator.makeFilterItem());\n filterOperators = filterOperators.concat(FilterOperator.and);\n this.setState({ filterItems, filterOperators });\n }\n\n handleAddOr(): void {\n let { filterItems, filterOperators } = this.state;\n filterItems = filterItems.concat(AdvancedFilterCreator.makeFilterItem());\n filterOperators = filterOperators.concat(FilterOperator.or);\n this.setState({ filterItems, filterOperators });\n }\n\n handleChangeFilterOperator(index: number, operator: string): void {\n let { filterOperators } = this.state;\n filterOperators = [...filterOperators];\n\n assertFilterOperatorValue(operator);\n\n filterOperators[index] = operator;\n\n this.setState({ filterOperators });\n\n this.startUpdateTimer();\n }\n\n handleFilterChange(\n filterIndex: number,\n selectedType: FilterTypeValue,\n value: string\n ): void {\n let { filterItems } = this.state;\n filterItems = [...filterItems];\n const { key } = filterItems[filterIndex];\n filterItems[filterIndex] = { key, selectedType, value };\n\n this.setState({ filterItems });\n\n this.startUpdateTimer();\n }\n\n handleFilterDelete(filterIndex: number): void {\n let { filterItems, filterOperators } = this.state;\n filterItems = [...filterItems];\n filterOperators = [...filterOperators];\n if (filterIndex < filterItems.length) {\n filterItems.splice(filterIndex, 1);\n }\n\n if (filterIndex < filterOperators.length) {\n filterOperators.splice(filterIndex, 1);\n } else if (filterIndex === filterOperators.length) {\n // When deleting the last filter item, we also need to remove the last filter operator\n filterOperators.splice(filterOperators.length - 1, 1);\n }\n\n if (filterItems.length === 0) {\n filterItems.push(AdvancedFilterCreator.makeFilterItem());\n }\n\n this.setState({ filterItems, filterOperators });\n\n this.startUpdateTimer();\n }\n\n handleSelectValueChange(\n selectedValues: unknown[],\n invertSelection: boolean\n ): void {\n this.setState({ selectedValues, invertSelection });\n\n this.startUpdateTimer();\n }\n\n handleReset(): void {\n log.debug('Resetting Advanced Filter');\n\n this.setState({\n filterItems: [AdvancedFilterCreator.makeFilterItem()],\n filterOperators: [],\n selectedValues: [],\n invertSelection: true,\n });\n\n this.startUpdateTimer();\n }\n\n handleSortDown(event: React.MouseEvent<HTMLButtonElement>): void {\n const addToExisting = ContextActionUtils.isModifierKeyDown(event);\n this.sortTable(TableUtils.sortDirection.descending, addToExisting);\n }\n\n handleSortUp(event: React.MouseEvent<HTMLButtonElement>): void {\n const addToExisting = ContextActionUtils.isModifierKeyDown(event);\n this.sortTable(TableUtils.sortDirection.ascending, addToExisting);\n }\n\n handleSubmit(event: React.FormEvent<HTMLFormElement>): void {\n log.debug('Submitting Advanced Filter');\n this.stopUpdateTimer();\n this.sendUpdate();\n\n event.preventDefault();\n }\n\n handleDone(event: React.MouseEvent<HTMLButtonElement>): void {\n log.debug('Submitting and Closing Advanced Filter');\n this.stopUpdateTimer();\n this.sendUpdate();\n\n const { onDone } = this.props;\n onDone();\n\n event.preventDefault();\n }\n\n handleUpdateTimeout(): void {\n this.debounceTimeout = undefined;\n this.sendUpdate();\n }\n\n /**\n * Convenience function to check if the previous filter has been inputted, and\n * we should show the add filter buttons (+ AND OR)\n * @returns true If the add filter buttons should be shown, false otherwise\n */\n shouldShowAddFilter(): boolean {\n const { filterItems } = this.state;\n if (filterItems.length === 0) {\n return false;\n }\n\n const filterItem = filterItems[filterItems.length - 1];\n const { selectedType, value } = filterItem;\n\n return (\n selectedType != null &&\n selectedType.length > 0 &&\n value != null &&\n value.length > 0\n );\n }\n\n /**\n * Sorts the table in the specified direction. If already sorted in that direction, remove it.\n * @param direction The sort direction, ASC or DESC\n * @param addToExisting Add to the existing sort, or replace the existing table sort\n */\n sortTable(direction: SortDirection, addToExisting = false): void {\n const { column, onSortChange } = this.props;\n onSortChange(column, direction, addToExisting);\n }\n\n startUpdateTimer(): void {\n this.stopUpdateTimer();\n\n this.debounceTimeout = setTimeout(\n this.handleUpdateTimeout,\n AdvancedFilterCreator.debounceFilterUpdate\n );\n }\n\n stopUpdateTimer(): void {\n if (this.debounceTimeout !== undefined) {\n clearTimeout(this.debounceTimeout);\n this.debounceTimeout = undefined;\n }\n }\n\n sendUpdate(): void {\n const {\n filterItems,\n filterOperators,\n invertSelection,\n selectedValues,\n } = this.state;\n const { column, onFilterChange, model } = this.props;\n const { formatter } = model;\n\n const items = filterItems.filter(\n ({ selectedType, value }) =>\n selectedType != null && value != null && value !== ''\n ) as FilterItem[];\n\n const operators = filterOperators\n .filter(\n (operator, i) =>\n operator != null &&\n filterItems[i].selectedType != null &&\n filterItems[i].value != null &&\n filterItems[i].value !== ''\n )\n .slice(0, items.length - 1);\n // slice last operator, user may have set an operator but not a value\n\n const options = {\n filterItems: items,\n filterOperators: operators,\n invertSelection,\n selectedValues,\n };\n\n const filter = TableUtils.makeAdvancedFilter(\n column,\n options,\n formatter.timeZone\n );\n\n onFilterChange(column, filter, options);\n }\n\n render(): JSX.Element {\n const { column, model, sortDirection, formatter } = this.props;\n const {\n filterItems,\n filterOperators,\n invertSelection,\n selectedValues,\n valuesTable,\n valuesTableError,\n } = this.state;\n const { isValuesTableAvailable } = model;\n const isBoolean = TableUtils.isBooleanType(column.type);\n const isDateType = TableUtils.isDateType(column.type);\n const filterTypes = this.getFilterTypes(column.type);\n const columnType = column.type.substring(column.type.lastIndexOf('.') + 1);\n const filterItemElements = [];\n if (!isBoolean && filterTypes.length) {\n for (let i = 0; i < filterItems.length; i += 1) {\n const filterItem = filterItems[i];\n const { key, selectedType, value } = filterItem;\n\n const element = (\n <AdvancedFilterCreatorFilterItem\n key={key}\n column={column}\n filterTypes={filterTypes}\n onChange={this.getFilterChangeHandler(i)}\n onDelete={this.getFilterDeleteHandler(i)}\n selectedType={selectedType}\n value={value}\n formatter={formatter}\n />\n );\n filterItemElements.push(element);\n\n if (i < filterOperators.length) {\n const filterOperator = filterOperators[i];\n const isAndFilter = filterOperator === FilterOperator.and;\n const operatorElement = (\n <div\n key={`filterOperator${key}`}\n className=\"form-row justify-content-end advanced-filter-creator-filter-operator\"\n >\n <Button\n kind=\"ghost\"\n className={classNames('filter-operator', {\n active: isAndFilter,\n })}\n onClick={() =>\n this.handleChangeFilterOperator(i, FilterOperator.and)\n }\n >\n AND\n </Button>\n <Button\n kind=\"ghost\"\n className={classNames('filter-operator', {\n active: !isAndFilter,\n })}\n onClick={() =>\n this.handleChangeFilterOperator(i, FilterOperator.or)\n }\n >\n OR\n </Button>\n </div>\n );\n filterItemElements.push(operatorElement);\n }\n }\n }\n const showAddFilterItem = this.shouldShowAddFilter();\n const addFilterItem = (\n <div\n key=\"addFilterItem\"\n className={classNames('form-row justify-content-end add-filter-item', {\n hidden: !showAddFilterItem,\n })}\n >\n <span className=\"text-muted\">\n <FontAwesomeIcon icon={dhNewCircleLargeFilled} />\n </span>\n <Button\n kind=\"ghost\"\n className=\"btn-filter-item\"\n onClick={this.handleAddAnd}\n disabled={!showAddFilterItem}\n tooltip=\"Add filter with AND\"\n >\n AND\n </Button>\n <Button\n kind=\"ghost\"\n className=\"btn-filter-item\"\n onClick={this.handleAddOr}\n disabled={!showAddFilterItem}\n tooltip=\"Add filter with OR\"\n >\n OR\n </Button>\n </div>\n );\n filterItemElements.push(addFilterItem);\n\n return (\n <div className=\"advanced-filter-creator\" role=\"presentation\">\n <div tabIndex={0} onFocus={this.handleFocusTrapStart} />\n <form onSubmit={this.handleSubmit} ref={this.focusTrapContainer}>\n <div className=\"title-bar\">\n <h6 className=\"advanced-filter-title\">Advanced Filters</h6>\n <div className=\"advanced-filter-menu-buttons\">\n <Button\n kind=\"ghost\"\n className={classNames('sort-operator', {\n active: sortDirection === TableUtils.sortDirection.descending,\n })}\n onClick={this.handleSortDown}\n icon={dhSortAmountDown}\n tooltip={`Sort ${column.name} Descending`}\n />\n <Button\n kind=\"ghost\"\n className={classNames('sort-operator', {\n active: sortDirection === TableUtils.sortDirection.ascending,\n })}\n onClick={this.handleSortUp}\n icon={\n <FontAwesomeIcon icon={dhSortAmountDown} rotation={180} />\n }\n tooltip={`Sort ${column.name} Ascending`}\n />\n </div>\n </div>\n <hr />\n <div className=\"advanced-filter-column-name\">\n {column.name} \n <span className=\"column-type\">({columnType})</span>\n </div>\n {filterItemElements}\n {isValuesTableAvailable && valuesTableError == null && (\n <>\n {!isBoolean && <hr />}\n <div className=\"form-group\">\n <AdvancedFilterCreatorSelectValue<unknown>\n table={valuesTable}\n onChange={this.handleSelectValueChange}\n invertSelection={invertSelection}\n selectedValues={selectedValues}\n formatter={formatter}\n showSearch={!isDateType}\n timeZone={formatter.timeZone}\n />\n </div>\n </>\n )}\n <div className=\"form-row justify-content-end\">\n <Button\n kind=\"secondary\"\n className=\"mr-2\"\n onClick={this.handleReset}\n >\n Reset\n </Button>\n <Button kind=\"primary\" onClick={this.handleDone}>\n Done\n </Button>\n </div>\n </form>\n <div tabIndex={0} onFocus={this.handleFocusTrapEnd} />\n </div>\n );\n }\n}\n\nexport default AdvancedFilterCreator;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdvancedFilterCreatorFilterItem.d.ts","sourceRoot":"","sources":["../src/AdvancedFilterCreatorFilterItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"AdvancedFilterCreatorFilterItem.d.ts","sourceRoot":"","sources":["../src/AdvancedFilterCreatorFilterItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE7C,OAAO,EAKL,SAAS,IAAI,eAAe,EAC7B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EACL,sBAAsB,EACtB,SAAS,EAEV,MAAM,wBAAwB,CAAC;AAIhC,OAAO,wCAAwC,CAAC;AAIhD,MAAM,WAAW,oCAAoC;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrD,QAAQ,IAAI,IAAI,CAAC;IACjB,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;CACtB;AAED,oBAAY,oCAAoC,GAAG,sBAAsB,CAAC;AAE1E,qBAAa,+BAAgC,SAAQ,aAAa,CAChE,oCAAoC,EACpC,oCAAoC,CACrC;IACC,MAAM,CAAC,iBAAiB,CACtB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,eAAe,GAC1B,MAAM;gBAwBG,KAAK,EAAE,oCAAoC;IAgBvD,iBAAiB,IAAI,IAAI;IAIzB,kBAAkB,CAAC,SAAS,EAAE,oCAAoC,GAAG,IAAI;IAUzE,YAAY,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAEvC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAanE,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAanE,YAAY,IAAI,IAAI;IAOpB,gBAAgB,WAEJ,MAAM,aACH,eAAe,SACnB,MAAM,YACH,MAAM,KACf,OAAO,CAgBV;IAEF,MAAM,IAAI,GAAG,CAAC,OAAO;CAkEtB;AAED,eAAe,+BAA+B,CAAC"}
|
|
@@ -2,8 +2,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
|
|
|
2
2
|
|
|
3
3
|
/* eslint react/no-did-update-set-state: "off" */
|
|
4
4
|
import React, { PureComponent } from 'react';
|
|
5
|
-
import {
|
|
6
|
-
import { Tooltip } from '@deephaven/components';
|
|
5
|
+
import { Button } from '@deephaven/components';
|
|
7
6
|
import { getLabelForBooleanFilter, getLabelForDateFilter, getLabelForNumberFilter, getLabelForTextFilter } from '@deephaven/filters';
|
|
8
7
|
import { vsTrash } from '@deephaven/icons';
|
|
9
8
|
import { TableUtils } from '@deephaven/jsapi-utils';
|
|
@@ -191,13 +190,13 @@ export class AdvancedFilterCreatorFilterItem extends PureComponent {
|
|
|
191
190
|
onChange: this.handleValueChange
|
|
192
191
|
}))), /*#__PURE__*/React.createElement("div", {
|
|
193
192
|
className: "form-group col-1 px-0"
|
|
194
|
-
}, /*#__PURE__*/React.createElement(
|
|
195
|
-
|
|
196
|
-
className: "
|
|
197
|
-
onClick: this.handleDelete
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
})
|
|
193
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
|
194
|
+
kind: "ghost",
|
|
195
|
+
className: "w-100 h-100 p-0 m-0",
|
|
196
|
+
onClick: this.handleDelete,
|
|
197
|
+
icon: vsTrash,
|
|
198
|
+
tooltip: "Remove Filter"
|
|
199
|
+
}))));
|
|
201
200
|
}
|
|
202
201
|
|
|
203
202
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdvancedFilterCreatorFilterItem.js","names":["React","PureComponent","FontAwesomeIcon","Tooltip","getLabelForBooleanFilter","getLabelForDateFilter","getLabelForNumberFilter","getLabelForTextFilter","vsTrash","TableUtils","Log","classNames","memoizeOne","log","module","AdvancedFilterCreatorFilterItem","getLabelForFilter","columnType","filterType","isNumberType","isCharType","isTextType","isDateType","isBooleanType","Error","e","warn","constructor","props","column","operation","value","timeZone","makeAdvancedValueFilter","handleDelete","bind","handleTypeChange","handleValueChange","typeDropdown","filterTypes","selectedType","state","componentDidMount","focus","componentDidUpdate","prevProps","undefined","setState","event","target","debug2","onChange","length","debug","onDelete","render","formatter","showValueInput","type","typeOptionElements","isValid","getCachedIsValid","i","label","element","push","error"],"sources":["../src/AdvancedFilterCreatorFilterItem.tsx"],"sourcesContent":["/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Tooltip } from '@deephaven/components';\nimport {\n getLabelForBooleanFilter,\n getLabelForDateFilter,\n getLabelForNumberFilter,\n getLabelForTextFilter,\n TypeValue as FilterTypeValue,\n} from '@deephaven/filters';\nimport { vsTrash } from '@deephaven/icons';\nimport { Column } from '@deephaven/jsapi-shim';\nimport {\n AdvancedFilterItemType,\n Formatter,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport classNames from 'classnames';\nimport memoizeOne from 'memoize-one';\nimport './AdvancedFilterCreatorFilterItem.scss';\n\nconst log = Log.module('AdvancedFilterCreatorFilterItem');\n\nexport interface AdvancedFilterCreatorFilterItemProps {\n column: Column;\n filterTypes: FilterTypeValue[];\n onChange(type: FilterTypeValue, value: string): void;\n onDelete(): void;\n selectedType?: FilterTypeValue;\n value?: string;\n formatter: Formatter;\n}\n\nexport type AdvancedFilterCreatorFilterItemState = AdvancedFilterItemType;\n\nexport class AdvancedFilterCreatorFilterItem extends PureComponent<\n AdvancedFilterCreatorFilterItemProps,\n AdvancedFilterCreatorFilterItemState\n> {\n static getLabelForFilter(\n columnType: string,\n filterType: FilterTypeValue\n ): string {\n try {\n if (\n TableUtils.isNumberType(columnType) ||\n TableUtils.isCharType(columnType)\n ) {\n return getLabelForNumberFilter(filterType);\n }\n if (TableUtils.isTextType(columnType)) {\n return getLabelForTextFilter(filterType);\n }\n if (TableUtils.isDateType(columnType)) {\n return getLabelForDateFilter(filterType);\n }\n if (TableUtils.isBooleanType(columnType)) {\n return getLabelForBooleanFilter(filterType);\n }\n throw new Error(`Unrecognized column type: ${columnType}`);\n } catch (e) {\n log.warn(e);\n return '';\n }\n }\n\n constructor(props: AdvancedFilterCreatorFilterItemProps) {\n super(props);\n\n this.handleDelete = this.handleDelete.bind(this);\n this.handleTypeChange = this.handleTypeChange.bind(this);\n this.handleValueChange = this.handleValueChange.bind(this);\n this.typeDropdown = null;\n\n const { value = '', filterTypes, selectedType = filterTypes[0] } = props;\n\n this.state = {\n selectedType,\n value,\n };\n }\n\n componentDidMount(): void {\n this.typeDropdown?.focus();\n }\n\n componentDidUpdate(prevProps: AdvancedFilterCreatorFilterItemProps): void {\n const { value, selectedType } = this.props;\n if (selectedType !== undefined && prevProps.selectedType !== selectedType) {\n this.setState({ selectedType });\n }\n if (value !== undefined && prevProps.value !== value) {\n this.setState({ value });\n }\n }\n\n typeDropdown: HTMLSelectElement | null;\n\n handleTypeChange(event: React.ChangeEvent<HTMLSelectElement>): void {\n const selectedType = event.target.value as FilterTypeValue;\n log.debug2('typeChange', selectedType);\n this.setState({ selectedType });\n\n const { onChange } = this.props;\n const { value } = this.state;\n if (value != null && value.length > 0) {\n // Don't send an update unless there's already a value entered\n onChange(selectedType, value);\n }\n }\n\n handleValueChange(event: React.ChangeEvent<HTMLInputElement>): void {\n log.debug2('valueChange');\n const { value } = event.target;\n this.setState({ value });\n\n const { onChange } = this.props;\n const { selectedType } = this.state;\n if (selectedType != null) {\n // Don't send an update unless they've already selected a type\n onChange(selectedType, value);\n }\n }\n\n handleDelete(): void {\n log.debug('delete');\n\n const { onDelete } = this.props;\n onDelete();\n }\n\n getCachedIsValid = memoizeOne(\n (\n column: Column,\n operation: FilterTypeValue,\n value: string,\n timeZone: string\n ): boolean => {\n try {\n // We don't want to show an error for an empty value\n return (\n !value ||\n TableUtils.makeAdvancedValueFilter(\n column,\n operation,\n value,\n timeZone\n ) != null\n );\n } catch (e) {\n return false;\n }\n }\n );\n\n render(): JSX.Element {\n const { column, filterTypes, formatter } = this.props;\n const { selectedType, value } = this.state;\n const showValueInput = !TableUtils.isBooleanType(column.type);\n const typeOptionElements = [];\n const isValid = this.getCachedIsValid(\n column,\n selectedType,\n value,\n formatter.timeZone\n );\n for (let i = 0; i < filterTypes.length; i += 1) {\n const type = filterTypes[i];\n const label = AdvancedFilterCreatorFilterItem.getLabelForFilter(\n column.type,\n type\n );\n const element = (\n <option key={type} value={type}>\n {label}\n </option>\n );\n typeOptionElements.push(element);\n }\n\n return (\n <div className=\"advanced-filter-creator-filter-item\">\n <div className=\"form-row\">\n <div className=\"form-group col\">\n <select\n className=\"form-control custom-select\"\n value={selectedType}\n onChange={this.handleTypeChange}\n ref={typeDropdown => {\n this.typeDropdown = typeDropdown;\n }}\n >\n {typeOptionElements}\n </select>\n </div>\n {showValueInput && (\n <div className=\"form-group col\">\n <div className=\"input-group\">\n <input\n type=\"text\"\n className={classNames('form-control', { error: !isValid })}\n placeholder=\"Enter value\"\n value={value}\n onChange={this.handleValueChange}\n />\n </div>\n </div>\n )}\n <div className=\"form-group col-1 px-0\">\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon w-100 h-100 p-0 m-0\"\n onClick={this.handleDelete}\n >\n <FontAwesomeIcon icon={vsTrash} />\n <Tooltip>Remove Filter</Tooltip>\n </button>\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default AdvancedFilterCreatorFilterItem;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AdvancedFilterCreatorFilterItem.js","names":["React","PureComponent","Button","getLabelForBooleanFilter","getLabelForDateFilter","getLabelForNumberFilter","getLabelForTextFilter","vsTrash","TableUtils","Log","classNames","memoizeOne","log","module","AdvancedFilterCreatorFilterItem","getLabelForFilter","columnType","filterType","isNumberType","isCharType","isTextType","isDateType","isBooleanType","Error","e","warn","constructor","props","column","operation","value","timeZone","makeAdvancedValueFilter","handleDelete","bind","handleTypeChange","handleValueChange","typeDropdown","filterTypes","selectedType","state","componentDidMount","focus","componentDidUpdate","prevProps","undefined","setState","event","target","debug2","onChange","length","debug","onDelete","render","formatter","showValueInput","type","typeOptionElements","isValid","getCachedIsValid","i","label","element","push","error"],"sources":["../src/AdvancedFilterCreatorFilterItem.tsx"],"sourcesContent":["/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport { Button } from '@deephaven/components';\nimport {\n getLabelForBooleanFilter,\n getLabelForDateFilter,\n getLabelForNumberFilter,\n getLabelForTextFilter,\n TypeValue as FilterTypeValue,\n} from '@deephaven/filters';\nimport { vsTrash } from '@deephaven/icons';\nimport { Column } from '@deephaven/jsapi-shim';\nimport {\n AdvancedFilterItemType,\n Formatter,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport classNames from 'classnames';\nimport memoizeOne from 'memoize-one';\nimport './AdvancedFilterCreatorFilterItem.scss';\n\nconst log = Log.module('AdvancedFilterCreatorFilterItem');\n\nexport interface AdvancedFilterCreatorFilterItemProps {\n column: Column;\n filterTypes: FilterTypeValue[];\n onChange(type: FilterTypeValue, value: string): void;\n onDelete(): void;\n selectedType?: FilterTypeValue;\n value?: string;\n formatter: Formatter;\n}\n\nexport type AdvancedFilterCreatorFilterItemState = AdvancedFilterItemType;\n\nexport class AdvancedFilterCreatorFilterItem extends PureComponent<\n AdvancedFilterCreatorFilterItemProps,\n AdvancedFilterCreatorFilterItemState\n> {\n static getLabelForFilter(\n columnType: string,\n filterType: FilterTypeValue\n ): string {\n try {\n if (\n TableUtils.isNumberType(columnType) ||\n TableUtils.isCharType(columnType)\n ) {\n return getLabelForNumberFilter(filterType);\n }\n if (TableUtils.isTextType(columnType)) {\n return getLabelForTextFilter(filterType);\n }\n if (TableUtils.isDateType(columnType)) {\n return getLabelForDateFilter(filterType);\n }\n if (TableUtils.isBooleanType(columnType)) {\n return getLabelForBooleanFilter(filterType);\n }\n throw new Error(`Unrecognized column type: ${columnType}`);\n } catch (e) {\n log.warn(e);\n return '';\n }\n }\n\n constructor(props: AdvancedFilterCreatorFilterItemProps) {\n super(props);\n\n this.handleDelete = this.handleDelete.bind(this);\n this.handleTypeChange = this.handleTypeChange.bind(this);\n this.handleValueChange = this.handleValueChange.bind(this);\n this.typeDropdown = null;\n\n const { value = '', filterTypes, selectedType = filterTypes[0] } = props;\n\n this.state = {\n selectedType,\n value,\n };\n }\n\n componentDidMount(): void {\n this.typeDropdown?.focus();\n }\n\n componentDidUpdate(prevProps: AdvancedFilterCreatorFilterItemProps): void {\n const { value, selectedType } = this.props;\n if (selectedType !== undefined && prevProps.selectedType !== selectedType) {\n this.setState({ selectedType });\n }\n if (value !== undefined && prevProps.value !== value) {\n this.setState({ value });\n }\n }\n\n typeDropdown: HTMLSelectElement | null;\n\n handleTypeChange(event: React.ChangeEvent<HTMLSelectElement>): void {\n const selectedType = event.target.value as FilterTypeValue;\n log.debug2('typeChange', selectedType);\n this.setState({ selectedType });\n\n const { onChange } = this.props;\n const { value } = this.state;\n if (value != null && value.length > 0) {\n // Don't send an update unless there's already a value entered\n onChange(selectedType, value);\n }\n }\n\n handleValueChange(event: React.ChangeEvent<HTMLInputElement>): void {\n log.debug2('valueChange');\n const { value } = event.target;\n this.setState({ value });\n\n const { onChange } = this.props;\n const { selectedType } = this.state;\n if (selectedType != null) {\n // Don't send an update unless they've already selected a type\n onChange(selectedType, value);\n }\n }\n\n handleDelete(): void {\n log.debug('delete');\n\n const { onDelete } = this.props;\n onDelete();\n }\n\n getCachedIsValid = memoizeOne(\n (\n column: Column,\n operation: FilterTypeValue,\n value: string,\n timeZone: string\n ): boolean => {\n try {\n // We don't want to show an error for an empty value\n return (\n !value ||\n TableUtils.makeAdvancedValueFilter(\n column,\n operation,\n value,\n timeZone\n ) != null\n );\n } catch (e) {\n return false;\n }\n }\n );\n\n render(): JSX.Element {\n const { column, filterTypes, formatter } = this.props;\n const { selectedType, value } = this.state;\n const showValueInput = !TableUtils.isBooleanType(column.type);\n const typeOptionElements = [];\n const isValid = this.getCachedIsValid(\n column,\n selectedType,\n value,\n formatter.timeZone\n );\n for (let i = 0; i < filterTypes.length; i += 1) {\n const type = filterTypes[i];\n const label = AdvancedFilterCreatorFilterItem.getLabelForFilter(\n column.type,\n type\n );\n const element = (\n <option key={type} value={type}>\n {label}\n </option>\n );\n typeOptionElements.push(element);\n }\n\n return (\n <div className=\"advanced-filter-creator-filter-item\">\n <div className=\"form-row\">\n <div className=\"form-group col\">\n <select\n className=\"form-control custom-select\"\n value={selectedType}\n onChange={this.handleTypeChange}\n ref={typeDropdown => {\n this.typeDropdown = typeDropdown;\n }}\n >\n {typeOptionElements}\n </select>\n </div>\n {showValueInput && (\n <div className=\"form-group col\">\n <div className=\"input-group\">\n <input\n type=\"text\"\n className={classNames('form-control', { error: !isValid })}\n placeholder=\"Enter value\"\n value={value}\n onChange={this.handleValueChange}\n />\n </div>\n </div>\n )}\n <div className=\"form-group col-1 px-0\">\n <Button\n kind=\"ghost\"\n className=\"w-100 h-100 p-0 m-0\"\n onClick={this.handleDelete}\n icon={vsTrash}\n tooltip=\"Remove Filter\"\n />\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default AdvancedFilterCreatorFilterItem;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdvancedFilterCreatorSelectValue.d.ts","sourceRoot":"","sources":["../src/AdvancedFilterCreatorSelectValue.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG7C,OAAO,EAAE,SAAS,EAAc,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"AdvancedFilterCreatorSelectValue.d.ts","sourceRoot":"","sources":["../src/AdvancedFilterCreatorSelectValue.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG7C,OAAO,EAAE,SAAS,EAAc,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAG/D,OAAO,yCAAyC,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,UAAU,qCAAqC,CAAC,CAAC;IAC/C,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,CAAC,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,eAAe,EAAE,OAAO,KAAK,IAAI,CAAC;IAClE,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,qCAAqC,CAAC,CAAC;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,CAAC,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,cAAM,gCAAgC,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,aAAa,CACvE,qCAAqC,CAAC,CAAC,CAAC,EACxC,qCAAqC,CAAC,CAAC,CAAC,CACzC;IACC,MAAM,CAAC,kBAAkB,SAAO;IAEhC,MAAM,CAAC,YAAY;;;wBAGH,IAAI;;MAElB;gBAEU,KAAK,EAAE,qCAAqC,CAAC,CAAC,CAAC;IAmB3D,iBAAiB,IAAI,IAAI;IAIzB,kBAAkB,CAChB,SAAS,EAAE,qCAAqC,CAAC,CAAC,CAAC,EACnD,SAAS,EAAE,qCAAqC,CAAC,CAAC,CAAC,GAClD,IAAI;IA8BP,oBAAoB,IAAI,IAAI;IAU5B,kBAAkB,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAEpC,iBAAiB,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IAElD,aAAa,IAAI,UAAU;IAQ3B,uBAAuB,IAAI,MAAM,GAAG,IAAI;IAYxC,qBAAqB,IAAI,MAAM,GAAG,IAAI;IAqBtC,eAAe,IAAI,IAAI;IAkBvB,gBAAgB,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,eAAe,EAAE,OAAO,GAAG,IAAI;IAOrE,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAKpE,oBAAoB,IAAI,IAAI;IAI5B,mBAAmB,IAAI,IAAI;IAI3B,yBAAyB,IAAI,IAAI;IAKjC,cAAc,CAAC,eAAe,EAAE,OAAO,GAAG,IAAI;IAS9C,sBAAsB,IAAI,IAAI;IAS9B,qBAAqB,IAAI,IAAI;IAO7B,iBAAiB,IAAI,IAAI;IAqCzB,MAAM,IAAI,KAAK,CAAC,YAAY;CA+D7B;AAED,eAAe,gCAAgC,CAAC"}
|
|
@@ -5,6 +5,7 @@ import React, { PureComponent } from 'react';
|
|
|
5
5
|
import { CSSTransition } from 'react-transition-group';
|
|
6
6
|
import classNames from 'classnames';
|
|
7
7
|
import { TableUtils } from '@deephaven/jsapi-utils';
|
|
8
|
+
import { Button } from '@deephaven/components';
|
|
8
9
|
import AdvancedFilterCreatorSelectValueList from "./AdvancedFilterCreatorSelectValueList.js";
|
|
9
10
|
import "./AdvancedFilterCreatorSelectValue.css";
|
|
10
11
|
|
|
@@ -310,13 +311,11 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
|
|
|
310
311
|
onChange: this.handleListChange
|
|
311
312
|
}), /*#__PURE__*/React.createElement("div", {
|
|
312
313
|
className: "advanced-filter-creator-select-meta-row"
|
|
313
|
-
}, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(
|
|
314
|
-
|
|
315
|
-
className: "btn btn-link",
|
|
314
|
+
}, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Button, {
|
|
315
|
+
kind: "ghost",
|
|
316
316
|
onClick: this.handleSelectAllClick
|
|
317
|
-
}, "Select All"), /*#__PURE__*/React.createElement(
|
|
318
|
-
|
|
319
|
-
className: "btn btn-link",
|
|
317
|
+
}, "Select All"), /*#__PURE__*/React.createElement(Button, {
|
|
318
|
+
kind: "ghost",
|
|
320
319
|
onClick: this.handleClearAllClick
|
|
321
320
|
}, "Clear")), /*#__PURE__*/React.createElement(CSSTransition, {
|
|
322
321
|
in: displayedValuesText != null,
|