@deephaven/dashboard-core-plugins 0.5.2-matplotlib.2 → 0.6.1-fixed-deps.2
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/ChartPlugin.js +25 -22
- package/dist/ChartPlugin.js.map +1 -1
- package/dist/ConsolePlugin.d.ts.map +1 -1
- package/dist/ConsolePlugin.js +130 -134
- package/dist/ConsolePlugin.js.map +1 -1
- package/dist/FilterPlugin.d.ts.map +1 -1
- package/dist/FilterPlugin.js +114 -116
- package/dist/FilterPlugin.js.map +1 -1
- package/dist/GridPlugin.js +29 -26
- package/dist/GridPlugin.js.map +1 -1
- package/dist/LinkerPlugin.js +7 -5
- package/dist/LinkerPlugin.js.map +1 -1
- package/dist/MarkdownPlugin.js +44 -45
- package/dist/MarkdownPlugin.js.map +1 -1
- package/dist/PandasPlugin.d.ts +5 -2
- package/dist/PandasPlugin.d.ts.map +1 -1
- package/dist/PandasPlugin.js +12 -12
- package/dist/PandasPlugin.js.map +1 -1
- package/dist/controls/ControlType.d.ts +1 -0
- package/dist/controls/ControlType.d.ts.map +1 -1
- package/dist/controls/ControlType.js +3 -5
- package/dist/controls/ControlType.js.map +1 -1
- package/dist/controls/dropdown-filter/DropdownFilter.d.ts +6 -0
- package/dist/controls/dropdown-filter/DropdownFilter.d.ts.map +1 -1
- package/dist/controls/dropdown-filter/DropdownFilter.js +356 -394
- package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
- package/dist/controls/input-filter/InputFilter.d.ts +6 -0
- package/dist/controls/input-filter/InputFilter.d.ts.map +1 -1
- package/dist/controls/input-filter/InputFilter.js +256 -270
- package/dist/controls/input-filter/InputFilter.js.map +1 -1
- package/dist/controls/markdown/MarkdownContainer.js +18 -56
- package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
- package/dist/controls/markdown/MarkdownEditor.js +36 -75
- package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
- package/dist/controls/markdown/MarkdownStartPage.js +93 -133
- package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
- package/dist/controls/markdown/MarkdownUtils.js +17 -32
- package/dist/controls/markdown/MarkdownUtils.js.map +1 -1
- package/dist/events/ChartEvent.js +1 -5
- package/dist/events/ChartEvent.js.map +1 -1
- package/dist/events/ConsoleEvent.js +1 -5
- package/dist/events/ConsoleEvent.js.map +1 -1
- package/dist/events/ControlEvent.js +1 -5
- package/dist/events/ControlEvent.js.map +1 -1
- package/dist/events/InputFilterEvent.d.ts +2 -0
- package/dist/events/InputFilterEvent.d.ts.map +1 -1
- package/dist/events/InputFilterEvent.js +3 -5
- package/dist/events/InputFilterEvent.js.map +1 -1
- package/dist/events/IrisGridEvent.js +1 -5
- package/dist/events/IrisGridEvent.js.map +1 -1
- package/dist/events/NotebookEvent.js +1 -5
- package/dist/events/NotebookEvent.js.map +1 -1
- package/dist/events/PQEvent.js +1 -5
- package/dist/events/PQEvent.js.map +1 -1
- package/dist/events/PandasEvent.js +1 -5
- package/dist/events/PandasEvent.js.map +1 -1
- package/dist/events/TabEvent.js +1 -5
- package/dist/events/TabEvent.js.map +1 -1
- package/dist/events/index.d.ts +0 -1
- package/dist/events/index.js +9 -10
- package/dist/events/index.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -11
- package/dist/index.js.map +1 -1
- package/dist/linker/Linker.d.ts +1 -1
- package/dist/linker/Linker.js +594 -606
- package/dist/linker/Linker.js.map +1 -1
- package/dist/linker/LinkerLink.js +92 -126
- package/dist/linker/LinkerLink.js.map +1 -1
- package/dist/linker/LinkerOverlayContent.js +162 -220
- package/dist/linker/LinkerOverlayContent.js.map +1 -1
- package/dist/linker/LinkerUtils.js +105 -114
- package/dist/linker/LinkerUtils.js.map +1 -1
- package/dist/panels/ChartColumnSelectorOverlay.js +19 -25
- package/dist/panels/ChartColumnSelectorOverlay.js.map +1 -1
- package/dist/panels/ChartFilterOverlay.js +18 -24
- package/dist/panels/ChartFilterOverlay.js.map +1 -1
- package/dist/panels/ChartPanel.d.ts +3 -0
- package/dist/panels/ChartPanel.d.ts.map +1 -1
- package/dist/panels/ChartPanel.js +839 -873
- package/dist/panels/ChartPanel.js.map +1 -1
- package/dist/panels/CommandHistoryPanel.d.ts.map +1 -1
- package/dist/panels/CommandHistoryPanel.js +160 -186
- package/dist/panels/CommandHistoryPanel.js.map +1 -1
- package/dist/panels/ConsolePanel.d.ts +1 -1
- package/dist/panels/ConsolePanel.d.ts.map +1 -1
- package/dist/panels/ConsolePanel.js +327 -374
- package/dist/panels/ConsolePanel.js.map +1 -1
- package/dist/panels/DropdownFilterPanel.d.ts +6 -0
- package/dist/panels/DropdownFilterPanel.d.ts.map +1 -1
- package/dist/panels/DropdownFilterPanel.js +537 -566
- package/dist/panels/DropdownFilterPanel.js.map +1 -1
- package/dist/panels/FileExplorerPanel.d.ts +6 -1
- package/dist/panels/FileExplorerPanel.d.ts.map +1 -1
- package/dist/panels/FileExplorerPanel.js +208 -210
- package/dist/panels/FileExplorerPanel.js.map +1 -1
- package/dist/panels/FilterSetManager.css +111 -0
- package/dist/panels/FilterSetManager.css.map +1 -0
- package/dist/panels/FilterSetManager.d.ts +66 -0
- package/dist/panels/FilterSetManager.d.ts.map +1 -0
- package/dist/panels/FilterSetManager.js +732 -0
- package/dist/panels/FilterSetManager.js.map +1 -0
- package/dist/panels/FilterSetManagerPanel.css +33 -0
- package/dist/panels/FilterSetManagerPanel.css.map +1 -0
- package/dist/panels/FilterSetManagerPanel.d.ts +69 -0
- package/dist/panels/FilterSetManagerPanel.d.ts.map +1 -0
- package/dist/panels/FilterSetManagerPanel.js +383 -0
- package/dist/panels/FilterSetManagerPanel.js.map +1 -0
- package/dist/panels/InputFilterPanel.d.ts +7 -0
- package/dist/panels/InputFilterPanel.d.ts.map +1 -1
- package/dist/panels/InputFilterPanel.js +198 -206
- package/dist/panels/InputFilterPanel.js.map +1 -1
- package/dist/panels/IrisGridPanel.d.ts +11 -3
- package/dist/panels/IrisGridPanel.d.ts.map +1 -1
- package/dist/panels/IrisGridPanel.js +779 -771
- package/dist/panels/IrisGridPanel.js.map +1 -1
- package/dist/panels/LogPanel.js +80 -116
- package/dist/panels/LogPanel.js.map +1 -1
- package/dist/panels/MarkdownPanel.js +165 -199
- package/dist/panels/MarkdownPanel.js.map +1 -1
- package/dist/panels/NotebookPanel.d.ts +3 -1
- package/dist/panels/NotebookPanel.d.ts.map +1 -1
- package/dist/panels/NotebookPanel.js +870 -862
- package/dist/panels/NotebookPanel.js.map +1 -1
- package/dist/panels/PandasPanel.js +56 -90
- package/dist/panels/PandasPanel.js.map +1 -1
- package/dist/panels/Panel.js +282 -313
- package/dist/panels/Panel.js.map +1 -1
- package/dist/panels/PanelContextMenu.js +107 -158
- package/dist/panels/PanelContextMenu.js.map +1 -1
- package/dist/panels/RenameDialog.js +144 -172
- package/dist/panels/RenameDialog.js.map +1 -1
- package/dist/panels/Shortcuts.js +1 -1
- package/dist/panels/Shortcuts.js.map +1 -1
- package/dist/panels/WidgetPanel.js +133 -163
- package/dist/panels/WidgetPanel.js.map +1 -1
- package/dist/panels/WidgetPanelTooltip.js +7 -5
- package/dist/panels/WidgetPanelTooltip.js.map +1 -1
- package/dist/panels/index.d.ts +1 -1
- package/dist/panels/index.js +16 -16
- package/dist/panels/index.js.map +1 -1
- package/dist/prop-types/CommonPropTypes.js +4 -8
- package/dist/prop-types/CommonPropTypes.js.map +1 -1
- package/dist/prop-types/UIPropTypes.js +6 -6
- package/dist/prop-types/UIPropTypes.js.map +1 -1
- package/dist/prop-types/index.js +2 -2
- package/dist/prop-types/index.js.map +1 -1
- package/dist/redux/actions.d.ts +1 -0
- package/dist/redux/actions.d.ts.map +1 -1
- package/dist/redux/actions.js +33 -54
- package/dist/redux/actions.js.map +1 -1
- package/dist/redux/index.js +6 -21
- package/dist/redux/index.js.map +1 -1
- package/dist/redux/reducers/index.js +2 -2
- package/dist/redux/reducers/index.js.map +1 -1
- package/dist/redux/reducers/sessionWrapper.js +1 -1
- package/dist/redux/reducers/sessionWrapper.js.map +1 -1
- package/dist/redux/selectors.d.ts +1 -0
- package/dist/redux/selectors.d.ts.map +1 -1
- package/dist/redux/selectors.js +22 -18
- package/dist/redux/selectors.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +27 -54
- package/dist/MatPlotLibPlugin.d.ts +0 -5
- package/dist/MatPlotLibPlugin.d.ts.map +0 -1
- package/dist/MatPlotLibPlugin.js +0 -45
- package/dist/MatPlotLibPlugin.js.map +0 -1
- package/dist/events/MatPlotLibEvent.d.ts +0 -5
- package/dist/events/MatPlotLibEvent.d.ts.map +0 -1
- package/dist/events/MatPlotLibEvent.js +0 -12
- package/dist/events/MatPlotLibEvent.js.map +0 -1
- package/dist/panels/MatPlotLibPanel.d.ts +0 -22
- package/dist/panels/MatPlotLibPanel.d.ts.map +0 -1
- package/dist/panels/MatPlotLibPanel.js +0 -123
- package/dist/panels/MatPlotLibPanel.js.map +0 -1
|
@@ -1,25 +1,3 @@
|
|
|
1
|
-
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
2
|
-
|
|
3
|
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
4
|
-
|
|
5
|
-
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
6
|
-
|
|
7
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
8
|
-
|
|
9
|
-
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
10
|
-
|
|
11
|
-
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
12
|
-
|
|
13
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
14
|
-
|
|
15
|
-
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
|
|
16
|
-
|
|
17
|
-
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
18
|
-
|
|
19
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
20
|
-
|
|
21
|
-
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
22
|
-
|
|
23
1
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
24
2
|
|
|
25
3
|
/* eslint-disable jsx-a11y/click-events-have-key-events */
|
|
@@ -39,22 +17,15 @@ import "./InputFilter.css";
|
|
|
39
17
|
var log = Log.module('InputFilter');
|
|
40
18
|
var UPDATE_DEBOUNCE = 150;
|
|
41
19
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
var _super = _createSuper(InputFilter);
|
|
46
|
-
|
|
47
|
-
function InputFilter(props) {
|
|
48
|
-
var _this;
|
|
49
|
-
|
|
50
|
-
_classCallCheck(this, InputFilter);
|
|
51
|
-
|
|
52
|
-
_this = _super.call(this, props);
|
|
20
|
+
class InputFilter extends Component {
|
|
21
|
+
constructor(props) {
|
|
22
|
+
super(props);
|
|
53
23
|
|
|
54
|
-
_defineProperty(
|
|
55
|
-
var
|
|
56
|
-
|
|
57
|
-
|
|
24
|
+
_defineProperty(this, "getItemLabel", memoizee((columns, index) => {
|
|
25
|
+
var {
|
|
26
|
+
name,
|
|
27
|
+
type
|
|
28
|
+
} = columns[index];
|
|
58
29
|
|
|
59
30
|
if (index > 0 && columns[index - 1].name === name || index < columns.length - 1 && columns[index + 1].name === name) {
|
|
60
31
|
var shortType = type.substring(type.lastIndexOf('.') + 1);
|
|
@@ -64,258 +35,273 @@ var InputFilter = /*#__PURE__*/function (_Component) {
|
|
|
64
35
|
return name;
|
|
65
36
|
}));
|
|
66
37
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
var
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
38
|
+
this.handleColumnChange = this.handleColumnChange.bind(this);
|
|
39
|
+
this.handleInputKeyPress = this.handleInputKeyPress.bind(this);
|
|
40
|
+
this.handleValueChange = this.handleValueChange.bind(this);
|
|
41
|
+
this.handleSettingsCancel = this.handleSettingsCancel.bind(this);
|
|
42
|
+
this.handleSettingsClick = this.handleSettingsClick.bind(this);
|
|
43
|
+
this.handleSettingsSave = this.handleSettingsSave.bind(this);
|
|
44
|
+
this.handleBackgroundClick = this.handleBackgroundClick.bind(this);
|
|
45
|
+
this.sendUpdate = debounce(this.sendUpdate.bind(this), UPDATE_DEBOUNCE);
|
|
46
|
+
this.inputRef = /*#__PURE__*/React.createRef();
|
|
47
|
+
var {
|
|
48
|
+
column,
|
|
49
|
+
isValueShown,
|
|
50
|
+
value
|
|
51
|
+
} = props;
|
|
52
|
+
this.state = {
|
|
53
|
+
column,
|
|
81
54
|
selectedColumn: column,
|
|
82
|
-
value
|
|
83
|
-
isValueShown
|
|
55
|
+
value,
|
|
56
|
+
isValueShown
|
|
84
57
|
};
|
|
85
|
-
return _this;
|
|
86
58
|
}
|
|
87
59
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
column: propColumn,
|
|
101
|
-
selectedColumn: propColumn
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
if (isValueShown && isValueShown !== prevState.isValueShown) {
|
|
106
|
-
this.focusInput();
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
if (column !== prevState.column || value !== prevState.value || isValueShown !== prevState.isValueShown) {
|
|
110
|
-
this.sendUpdate();
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}, {
|
|
114
|
-
key: "componentWillUnmount",
|
|
115
|
-
value: function componentWillUnmount() {
|
|
116
|
-
this.sendUpdate.flush();
|
|
117
|
-
}
|
|
118
|
-
}, {
|
|
119
|
-
key: "handleColumnChange",
|
|
120
|
-
value: function handleColumnChange(event) {
|
|
121
|
-
var columns = this.props.columns;
|
|
122
|
-
var value = event.target.value;
|
|
123
|
-
var selectedColumn = columns[value];
|
|
124
|
-
log.debug2('handleColumnChange', selectedColumn);
|
|
60
|
+
componentDidUpdate(prevProps, prevState) {
|
|
61
|
+
var {
|
|
62
|
+
column: propColumn
|
|
63
|
+
} = this.props;
|
|
64
|
+
var {
|
|
65
|
+
column,
|
|
66
|
+
value,
|
|
67
|
+
isValueShown
|
|
68
|
+
} = this.state;
|
|
69
|
+
|
|
70
|
+
if (propColumn !== prevProps.column) {
|
|
71
|
+
// eslint-disable-next-line react/no-did-update-set-state
|
|
125
72
|
this.setState({
|
|
126
|
-
|
|
127
|
-
|
|
73
|
+
column: propColumn,
|
|
74
|
+
selectedColumn: propColumn
|
|
128
75
|
});
|
|
129
76
|
}
|
|
130
|
-
}, {
|
|
131
|
-
key: "handleInputKeyPress",
|
|
132
|
-
value: function handleInputKeyPress(event) {
|
|
133
|
-
var _this2 = this;
|
|
134
77
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
event.stopPropagation();
|
|
138
|
-
this.setState(function (_ref) {
|
|
139
|
-
var value = _ref.value;
|
|
140
|
-
return value == null ? {
|
|
141
|
-
value: ''
|
|
142
|
-
} : null;
|
|
143
|
-
}, function () {
|
|
144
|
-
_this2.sendUpdate();
|
|
145
|
-
|
|
146
|
-
_this2.sendUpdate.flush();
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
}, {
|
|
151
|
-
key: "handleValueChange",
|
|
152
|
-
value: function handleValueChange(event) {
|
|
153
|
-
var value = event.target.value;
|
|
154
|
-
log.debug2('handleValueChange', value);
|
|
155
|
-
this.setState({
|
|
156
|
-
value: value
|
|
157
|
-
});
|
|
78
|
+
if (isValueShown && isValueShown !== prevState.isValueShown) {
|
|
79
|
+
this.focusInput();
|
|
158
80
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
var column = this.state.column;
|
|
163
|
-
this.setState({
|
|
164
|
-
selectedColumn: column,
|
|
165
|
-
isValueShown: true
|
|
166
|
-
});
|
|
167
|
-
}
|
|
168
|
-
}, {
|
|
169
|
-
key: "handleSettingsSave",
|
|
170
|
-
value: function handleSettingsSave() {
|
|
171
|
-
var selectedColumn = this.state.selectedColumn;
|
|
172
|
-
this.setState({
|
|
173
|
-
column: selectedColumn,
|
|
174
|
-
isValueShown: true
|
|
175
|
-
});
|
|
81
|
+
|
|
82
|
+
if (column !== prevState.column || value !== prevState.value || isValueShown !== prevState.isValueShown) {
|
|
83
|
+
this.sendUpdate();
|
|
176
84
|
}
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
componentWillUnmount() {
|
|
88
|
+
this.sendUpdate.flush();
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
handleColumnChange(event) {
|
|
92
|
+
var {
|
|
93
|
+
columns
|
|
94
|
+
} = this.props;
|
|
95
|
+
var {
|
|
96
|
+
value
|
|
97
|
+
} = event.target;
|
|
98
|
+
var selectedColumn = columns[value];
|
|
99
|
+
log.debug2('handleColumnChange', selectedColumn);
|
|
100
|
+
this.setState({
|
|
101
|
+
selectedColumn,
|
|
102
|
+
value: null
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
handleInputKeyPress(event) {
|
|
107
|
+
if (event.key === 'Enter') {
|
|
108
|
+
event.preventDefault();
|
|
185
109
|
event.stopPropagation();
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
key: "focusInput",
|
|
197
|
-
value: function focusInput() {
|
|
198
|
-
if (this.inputRef.current !== null) {
|
|
199
|
-
this.inputRef.current.select();
|
|
200
|
-
this.inputRef.current.focus();
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
}, {
|
|
204
|
-
key: "clearFilter",
|
|
205
|
-
value: function clearFilter() {
|
|
206
|
-
this.setState({
|
|
207
|
-
value: ''
|
|
110
|
+
this.setState((_ref) => {
|
|
111
|
+
var {
|
|
112
|
+
value
|
|
113
|
+
} = _ref;
|
|
114
|
+
return value == null ? {
|
|
115
|
+
value: ''
|
|
116
|
+
} : null;
|
|
117
|
+
}, () => {
|
|
118
|
+
this.sendUpdate();
|
|
119
|
+
this.sendUpdate.flush();
|
|
208
120
|
});
|
|
209
121
|
}
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
handleValueChange(event) {
|
|
125
|
+
var {
|
|
126
|
+
value
|
|
127
|
+
} = event.target;
|
|
128
|
+
log.debug2('handleValueChange', value);
|
|
129
|
+
this.setState({
|
|
130
|
+
value
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
handleSettingsCancel() {
|
|
135
|
+
var {
|
|
136
|
+
column
|
|
137
|
+
} = this.state;
|
|
138
|
+
this.setState({
|
|
139
|
+
selectedColumn: column,
|
|
140
|
+
isValueShown: true
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
handleSettingsSave() {
|
|
145
|
+
var {
|
|
146
|
+
selectedColumn
|
|
147
|
+
} = this.state;
|
|
148
|
+
this.setState({
|
|
149
|
+
column: selectedColumn,
|
|
150
|
+
isValueShown: true
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
handleSettingsClick(event) {
|
|
155
|
+
var {
|
|
156
|
+
column
|
|
157
|
+
} = this.state;
|
|
158
|
+
this.setState({
|
|
159
|
+
selectedColumn: column,
|
|
160
|
+
isValueShown: false
|
|
161
|
+
});
|
|
162
|
+
event.stopPropagation();
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
handleBackgroundClick(event) {
|
|
166
|
+
// allow clicking anywhere in the background to select and focus the input
|
|
167
|
+
if (event.target !== this.inputRef.current) {
|
|
168
|
+
this.focusInput();
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
focusInput() {
|
|
173
|
+
if (this.inputRef.current !== null) {
|
|
174
|
+
this.inputRef.current.select();
|
|
175
|
+
this.inputRef.current.focus();
|
|
223
176
|
}
|
|
224
|
-
}
|
|
225
|
-
key: "render",
|
|
226
|
-
value: function render() {
|
|
227
|
-
var _this3 = this;
|
|
177
|
+
}
|
|
228
178
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
value = _this$state3.value;
|
|
235
|
-
var inputLength = value == null || value.length === 0 ? InputFilter.PLACEHOLDER.length : value.length;
|
|
236
|
-
var titleLabel = null;
|
|
179
|
+
clearFilter() {
|
|
180
|
+
this.setState({
|
|
181
|
+
value: ''
|
|
182
|
+
});
|
|
183
|
+
}
|
|
237
184
|
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
185
|
+
setFilterState(_ref2) {
|
|
186
|
+
var {
|
|
187
|
+
name,
|
|
188
|
+
type,
|
|
189
|
+
value,
|
|
190
|
+
isValueShown
|
|
191
|
+
} = _ref2;
|
|
192
|
+
var column = name != null && type != null ? {
|
|
193
|
+
name,
|
|
194
|
+
type
|
|
195
|
+
} : null;
|
|
196
|
+
this.setState({
|
|
197
|
+
column,
|
|
198
|
+
value,
|
|
199
|
+
isValueShown
|
|
200
|
+
});
|
|
201
|
+
}
|
|
244
202
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
}, "Cancel"), /*#__PURE__*/React.createElement("button", {
|
|
278
|
-
type: "button",
|
|
279
|
-
className: "btn btn-primary ml-2",
|
|
280
|
-
onClick: this.handleSettingsSave,
|
|
281
|
-
disabled: selectedColumn == null
|
|
282
|
-
}, "Save")))), /*#__PURE__*/React.createElement("div", {
|
|
283
|
-
className: "input-filter-value-card",
|
|
284
|
-
onClick: this.handleBackgroundClick
|
|
285
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
286
|
-
className: "input-filter-column"
|
|
287
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
288
|
-
className: "input-filter-column-title"
|
|
289
|
-
}, titleLabel, " Filter")), /*#__PURE__*/React.createElement("div", {
|
|
290
|
-
className: "d-flex justify-content-center align-items-center h-100 w-100"
|
|
291
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
292
|
-
className: "input-filter-value-input d-flex flex-column justify-content-center"
|
|
293
|
-
}, /*#__PURE__*/React.createElement("input", {
|
|
294
|
-
type: "text",
|
|
295
|
-
ref: this.inputRef,
|
|
296
|
-
placeholder: InputFilter.PLACEHOLDER,
|
|
297
|
-
value: value !== null && value !== void 0 ? value : '',
|
|
298
|
-
onChange: this.handleValueChange,
|
|
299
|
-
onKeyPress: this.handleInputKeyPress,
|
|
300
|
-
style: {
|
|
301
|
-
width: "".concat(inputLength + 3, "ch")
|
|
302
|
-
},
|
|
303
|
-
spellCheck: "false"
|
|
304
|
-
}))), /*#__PURE__*/React.createElement("div", {
|
|
305
|
-
className: "input-filter-menu"
|
|
306
|
-
}, /*#__PURE__*/React.createElement("button", {
|
|
307
|
-
type: "button",
|
|
308
|
-
className: "btn btn-link btn-link-icon m-2 px-2",
|
|
309
|
-
onClick: this.handleSettingsClick
|
|
310
|
-
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
311
|
-
icon: vsGear,
|
|
312
|
-
transform: "grow-4"
|
|
313
|
-
})))));
|
|
203
|
+
sendUpdate() {
|
|
204
|
+
var {
|
|
205
|
+
onChange
|
|
206
|
+
} = this.props;
|
|
207
|
+
var {
|
|
208
|
+
column,
|
|
209
|
+
value,
|
|
210
|
+
isValueShown
|
|
211
|
+
} = this.state;
|
|
212
|
+
onChange({
|
|
213
|
+
column,
|
|
214
|
+
isValueShown,
|
|
215
|
+
value
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
render() {
|
|
220
|
+
var {
|
|
221
|
+
columns
|
|
222
|
+
} = this.props;
|
|
223
|
+
var {
|
|
224
|
+
column,
|
|
225
|
+
isValueShown,
|
|
226
|
+
selectedColumn,
|
|
227
|
+
value
|
|
228
|
+
} = this.state;
|
|
229
|
+
var inputLength = value == null || value.length === 0 ? InputFilter.PLACEHOLDER.length : value.length;
|
|
230
|
+
var titleLabel = null;
|
|
231
|
+
|
|
232
|
+
if (column != null) {
|
|
233
|
+
var columnIndex = columns.findIndex(item => item.name === column.name && item.type === column.type);
|
|
234
|
+
titleLabel = columnIndex >= 0 ? this.getItemLabel(columns, columnIndex) : column.name;
|
|
314
235
|
}
|
|
315
|
-
}]);
|
|
316
236
|
|
|
317
|
-
|
|
318
|
-
|
|
237
|
+
return /*#__PURE__*/React.createElement(CardFlip, {
|
|
238
|
+
className: "input-filter fill-parent-absolute",
|
|
239
|
+
isFlipped: isValueShown
|
|
240
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
241
|
+
className: "input-filter-settings-card"
|
|
242
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
243
|
+
className: "input-filter-settings-content"
|
|
244
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
245
|
+
className: "input-filter-settings-grid"
|
|
246
|
+
}, /*#__PURE__*/React.createElement("label", null, "Filter Column"), /*#__PURE__*/React.createElement("select", {
|
|
247
|
+
value: columns.findIndex(item => item.name === (selectedColumn === null || selectedColumn === void 0 ? void 0 : selectedColumn.name) && item.type === (selectedColumn === null || selectedColumn === void 0 ? void 0 : selectedColumn.type)),
|
|
248
|
+
className: "custom-select",
|
|
249
|
+
onChange: this.handleColumnChange
|
|
250
|
+
}, columns.map((columnItem, index) => /*#__PURE__*/React.createElement("option", {
|
|
251
|
+
key: "".concat(columnItem.name, "/").concat(columnItem.type),
|
|
252
|
+
value: index
|
|
253
|
+
}, this.getItemLabel(columns, index))), columns.length === 0 && /*#__PURE__*/React.createElement("option", {
|
|
254
|
+
value: "-1",
|
|
255
|
+
disabled: true
|
|
256
|
+
}, "No Available Columns")), /*#__PURE__*/React.createElement("div", {
|
|
257
|
+
className: "text-muted small"
|
|
258
|
+
}, "Input filter control will apply its filter to all columns matching this name in this dashboard.")), /*#__PURE__*/React.createElement("div", {
|
|
259
|
+
className: "input-filter-settings-buttons"
|
|
260
|
+
}, /*#__PURE__*/React.createElement("button", {
|
|
261
|
+
type: "button",
|
|
262
|
+
className: "btn btn-outline-primary",
|
|
263
|
+
onClick: this.handleSettingsCancel,
|
|
264
|
+
disabled: column == null
|
|
265
|
+
}, "Cancel"), /*#__PURE__*/React.createElement("button", {
|
|
266
|
+
type: "button",
|
|
267
|
+
className: "btn btn-primary ml-2",
|
|
268
|
+
onClick: this.handleSettingsSave,
|
|
269
|
+
disabled: selectedColumn == null
|
|
270
|
+
}, "Save")))), /*#__PURE__*/React.createElement("div", {
|
|
271
|
+
className: "input-filter-value-card",
|
|
272
|
+
onClick: this.handleBackgroundClick
|
|
273
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
274
|
+
className: "input-filter-column"
|
|
275
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
276
|
+
className: "input-filter-column-title"
|
|
277
|
+
}, titleLabel, " Filter")), /*#__PURE__*/React.createElement("div", {
|
|
278
|
+
className: "d-flex justify-content-center align-items-center h-100 w-100"
|
|
279
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
280
|
+
className: "input-filter-value-input d-flex flex-column justify-content-center"
|
|
281
|
+
}, /*#__PURE__*/React.createElement("input", {
|
|
282
|
+
type: "text",
|
|
283
|
+
ref: this.inputRef,
|
|
284
|
+
placeholder: InputFilter.PLACEHOLDER,
|
|
285
|
+
value: value !== null && value !== void 0 ? value : '',
|
|
286
|
+
onChange: this.handleValueChange,
|
|
287
|
+
onKeyPress: this.handleInputKeyPress,
|
|
288
|
+
style: {
|
|
289
|
+
width: "".concat(inputLength + 3, "ch")
|
|
290
|
+
},
|
|
291
|
+
spellCheck: "false"
|
|
292
|
+
}))), /*#__PURE__*/React.createElement("div", {
|
|
293
|
+
className: "input-filter-menu"
|
|
294
|
+
}, /*#__PURE__*/React.createElement("button", {
|
|
295
|
+
type: "button",
|
|
296
|
+
className: "btn btn-link btn-link-icon m-2 px-2",
|
|
297
|
+
onClick: this.handleSettingsClick
|
|
298
|
+
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
299
|
+
icon: vsGear,
|
|
300
|
+
transform: "grow-4"
|
|
301
|
+
})))));
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
}
|
|
319
305
|
|
|
320
306
|
_defineProperty(InputFilter, "PLACEHOLDER", 'Enter value...');
|
|
321
307
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/controls/input-filter/InputFilter.jsx"],"names":["React","Component","PropTypes","CardFlip","FontAwesomeIcon","vsGear","APIPropTypes","memoizee","debounce","Log","log","module","UPDATE_DEBOUNCE","InputFilter","props","columns","index","name","type","length","shortType","substring","lastIndexOf","handleColumnChange","bind","handleInputKeyPress","handleValueChange","handleSettingsCancel","handleSettingsClick","handleSettingsSave","handleBackgroundClick","sendUpdate","inputRef","createRef","column","isValueShown","value","state","selectedColumn","prevProps","prevState","propColumn","setState","focusInput","flush","event","target","debug2","key","preventDefault","stopPropagation","current","select","focus","onChange","inputLength","PLACEHOLDER","titleLabel","columnIndex","findIndex","item","getItemLabel","map","columnItem","width","propTypes","arrayOf","Column","isRequired","bool","string","func","defaultProps"],"mappings":"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","sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n// background click is just a convience method, not an actual a11y issue\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { CardFlip } from '@deephaven/components';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsGear } from '@deephaven/icons';\nimport { PropTypes as APIPropTypes } from '@deephaven/jsapi-shim';\nimport memoizee from 'memoizee';\nimport debounce from 'lodash.debounce';\nimport Log from '@deephaven/log';\nimport './InputFilter.scss';\n\nconst log = Log.module('InputFilter');\nconst UPDATE_DEBOUNCE = 150;\n\nclass InputFilter extends Component {\n static PLACEHOLDER = 'Enter value...';\n\n constructor(props) {\n super(props);\n\n this.handleColumnChange = this.handleColumnChange.bind(this);\n this.handleInputKeyPress = this.handleInputKeyPress.bind(this);\n this.handleValueChange = this.handleValueChange.bind(this);\n this.handleSettingsCancel = this.handleSettingsCancel.bind(this);\n this.handleSettingsClick = this.handleSettingsClick.bind(this);\n this.handleSettingsSave = this.handleSettingsSave.bind(this);\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n this.sendUpdate = debounce(this.sendUpdate.bind(this), UPDATE_DEBOUNCE);\n\n this.inputRef = React.createRef();\n\n const { column, isValueShown, value } = props;\n this.state = {\n column,\n selectedColumn: column,\n value,\n isValueShown,\n };\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { column: propColumn } = this.props;\n const { column, value, isValueShown } = this.state;\n\n if (propColumn !== prevProps.column) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({ column: propColumn, selectedColumn: propColumn });\n }\n\n if (isValueShown && isValueShown !== prevState.isValueShown) {\n this.focusInput();\n }\n\n if (\n column !== prevState.column ||\n value !== prevState.value ||\n isValueShown !== prevState.isValueShown\n ) {\n this.sendUpdate();\n }\n }\n\n componentWillUnmount() {\n this.sendUpdate.flush();\n }\n\n getItemLabel = memoizee((columns, index) => {\n const { name, type } = columns[index];\n\n if (\n (index > 0 && columns[index - 1].name === name) ||\n (index < columns.length - 1 && columns[index + 1].name === name)\n ) {\n const shortType = type.substring(type.lastIndexOf('.') + 1);\n return `${name} (${shortType})`;\n }\n\n return name;\n });\n\n handleColumnChange(event) {\n const { columns } = this.props;\n const { value } = event.target;\n const selectedColumn = columns[value];\n\n log.debug2('handleColumnChange', selectedColumn);\n\n this.setState({ selectedColumn, value: null });\n }\n\n handleInputKeyPress(event) {\n if (event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation();\n this.setState(\n ({ value }) => (value == null ? { value: '' } : null),\n () => {\n this.sendUpdate();\n this.sendUpdate.flush();\n }\n );\n }\n }\n\n handleValueChange(event) {\n const { value } = event.target;\n\n log.debug2('handleValueChange', value);\n\n this.setState({ value });\n }\n\n handleSettingsCancel() {\n const { column } = this.state;\n this.setState({ selectedColumn: column, isValueShown: true });\n }\n\n handleSettingsSave() {\n const { selectedColumn } = this.state;\n this.setState({ column: selectedColumn, isValueShown: true });\n }\n\n handleSettingsClick(event) {\n const { column } = this.state;\n this.setState({ selectedColumn: column, isValueShown: false });\n event.stopPropagation();\n }\n\n handleBackgroundClick(event) {\n // allow clicking anywhere in the background to select and focus the input\n if (event.target !== this.inputRef.current) {\n this.focusInput();\n }\n }\n\n focusInput() {\n if (this.inputRef.current !== null) {\n this.inputRef.current.select();\n this.inputRef.current.focus();\n }\n }\n\n clearFilter() {\n this.setState({ value: '' });\n }\n\n sendUpdate() {\n const { onChange } = this.props;\n const { column, value, isValueShown } = this.state;\n onChange({ column, isValueShown, value });\n }\n\n render() {\n const { columns } = this.props;\n const { column, isValueShown, selectedColumn, value } = this.state;\n const inputLength =\n value == null || value.length === 0\n ? InputFilter.PLACEHOLDER.length\n : value.length;\n let titleLabel = null;\n if (column != null) {\n const columnIndex = columns.findIndex(\n item => item.name === column.name && item.type === column.type\n );\n titleLabel =\n columnIndex >= 0\n ? this.getItemLabel(columns, columnIndex)\n : column.name;\n }\n\n return (\n <CardFlip\n className=\"input-filter fill-parent-absolute\"\n isFlipped={isValueShown}\n >\n <div className=\"input-filter-settings-card\">\n <div className=\"input-filter-settings-content\">\n <div className=\"input-filter-settings-grid\">\n <label>Filter Column</label>\n <select\n value={columns.findIndex(\n item =>\n item.name === selectedColumn?.name &&\n item.type === selectedColumn?.type\n )}\n className=\"custom-select\"\n onChange={this.handleColumnChange}\n >\n {columns.map((columnItem, index) => (\n <option\n key={`${columnItem.name}/${columnItem.type}`}\n value={index}\n >\n {this.getItemLabel(columns, index)}\n </option>\n ))}\n {columns.length === 0 && (\n <option value=\"-1\" disabled>\n No Available Columns\n </option>\n )}\n </select>\n <div className=\"text-muted small\">\n Input filter control will apply its filter to all columns\n matching this name in this dashboard.\n </div>\n </div>\n <div className=\"input-filter-settings-buttons\">\n <button\n type=\"button\"\n className=\"btn btn-outline-primary\"\n onClick={this.handleSettingsCancel}\n disabled={column == null}\n >\n Cancel\n </button>\n <button\n type=\"button\"\n className=\"btn btn-primary ml-2\"\n onClick={this.handleSettingsSave}\n disabled={selectedColumn == null}\n >\n Save\n </button>\n </div>\n </div>\n </div>\n\n <div\n className=\"input-filter-value-card\"\n onClick={this.handleBackgroundClick}\n >\n <div className=\"input-filter-column\">\n <div className=\"input-filter-column-title\">{titleLabel} Filter</div>\n </div>\n <div className=\"d-flex justify-content-center align-items-center h-100 w-100\">\n <div className=\"input-filter-value-input d-flex flex-column justify-content-center\">\n <input\n type=\"text\"\n ref={this.inputRef}\n placeholder={InputFilter.PLACEHOLDER}\n value={value ?? ''}\n onChange={this.handleValueChange}\n onKeyPress={this.handleInputKeyPress}\n style={{ width: `${inputLength + 3}ch` }}\n spellCheck=\"false\"\n />\n </div>\n </div>\n <div className=\"input-filter-menu\">\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon m-2 px-2\"\n onClick={this.handleSettingsClick}\n >\n <FontAwesomeIcon icon={vsGear} transform=\"grow-4\" />\n </button>\n </div>\n </div>\n </CardFlip>\n );\n }\n}\n\nInputFilter.propTypes = {\n columns: PropTypes.arrayOf(APIPropTypes.Column).isRequired,\n column: APIPropTypes.Column,\n isValueShown: PropTypes.bool,\n value: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n};\n\nInputFilter.defaultProps = {\n column: null,\n isValueShown: false,\n value: null,\n};\n\nexport default InputFilter;\n"],"file":"InputFilter.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/controls/input-filter/InputFilter.jsx"],"names":["React","Component","PropTypes","CardFlip","FontAwesomeIcon","vsGear","APIPropTypes","memoizee","debounce","Log","log","module","UPDATE_DEBOUNCE","InputFilter","constructor","props","columns","index","name","type","length","shortType","substring","lastIndexOf","handleColumnChange","bind","handleInputKeyPress","handleValueChange","handleSettingsCancel","handleSettingsClick","handleSettingsSave","handleBackgroundClick","sendUpdate","inputRef","createRef","column","isValueShown","value","state","selectedColumn","componentDidUpdate","prevProps","prevState","propColumn","setState","focusInput","componentWillUnmount","flush","event","target","debug2","key","preventDefault","stopPropagation","current","select","focus","clearFilter","setFilterState","onChange","render","inputLength","PLACEHOLDER","titleLabel","columnIndex","findIndex","item","getItemLabel","map","columnItem","width","propTypes","arrayOf","Column","isRequired","bool","string","func","defaultProps"],"mappings":"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","sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n// background click is just a convience method, not an actual a11y issue\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { CardFlip } from '@deephaven/components';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsGear } from '@deephaven/icons';\nimport { PropTypes as APIPropTypes } from '@deephaven/jsapi-shim';\nimport memoizee from 'memoizee';\nimport debounce from 'lodash.debounce';\nimport Log from '@deephaven/log';\nimport './InputFilter.scss';\n\nconst log = Log.module('InputFilter');\nconst UPDATE_DEBOUNCE = 150;\n\nclass InputFilter extends Component {\n static PLACEHOLDER = 'Enter value...';\n\n constructor(props) {\n super(props);\n\n this.handleColumnChange = this.handleColumnChange.bind(this);\n this.handleInputKeyPress = this.handleInputKeyPress.bind(this);\n this.handleValueChange = this.handleValueChange.bind(this);\n this.handleSettingsCancel = this.handleSettingsCancel.bind(this);\n this.handleSettingsClick = this.handleSettingsClick.bind(this);\n this.handleSettingsSave = this.handleSettingsSave.bind(this);\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n this.sendUpdate = debounce(this.sendUpdate.bind(this), UPDATE_DEBOUNCE);\n\n this.inputRef = React.createRef();\n\n const { column, isValueShown, value } = props;\n this.state = {\n column,\n selectedColumn: column,\n value,\n isValueShown,\n };\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { column: propColumn } = this.props;\n const { column, value, isValueShown } = this.state;\n\n if (propColumn !== prevProps.column) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({ column: propColumn, selectedColumn: propColumn });\n }\n\n if (isValueShown && isValueShown !== prevState.isValueShown) {\n this.focusInput();\n }\n\n if (\n column !== prevState.column ||\n value !== prevState.value ||\n isValueShown !== prevState.isValueShown\n ) {\n this.sendUpdate();\n }\n }\n\n componentWillUnmount() {\n this.sendUpdate.flush();\n }\n\n getItemLabel = memoizee((columns, index) => {\n const { name, type } = columns[index];\n\n if (\n (index > 0 && columns[index - 1].name === name) ||\n (index < columns.length - 1 && columns[index + 1].name === name)\n ) {\n const shortType = type.substring(type.lastIndexOf('.') + 1);\n return `${name} (${shortType})`;\n }\n\n return name;\n });\n\n handleColumnChange(event) {\n const { columns } = this.props;\n const { value } = event.target;\n const selectedColumn = columns[value];\n\n log.debug2('handleColumnChange', selectedColumn);\n\n this.setState({ selectedColumn, value: null });\n }\n\n handleInputKeyPress(event) {\n if (event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation();\n this.setState(\n ({ value }) => (value == null ? { value: '' } : null),\n () => {\n this.sendUpdate();\n this.sendUpdate.flush();\n }\n );\n }\n }\n\n handleValueChange(event) {\n const { value } = event.target;\n\n log.debug2('handleValueChange', value);\n\n this.setState({ value });\n }\n\n handleSettingsCancel() {\n const { column } = this.state;\n this.setState({ selectedColumn: column, isValueShown: true });\n }\n\n handleSettingsSave() {\n const { selectedColumn } = this.state;\n this.setState({ column: selectedColumn, isValueShown: true });\n }\n\n handleSettingsClick(event) {\n const { column } = this.state;\n this.setState({ selectedColumn: column, isValueShown: false });\n event.stopPropagation();\n }\n\n handleBackgroundClick(event) {\n // allow clicking anywhere in the background to select and focus the input\n if (event.target !== this.inputRef.current) {\n this.focusInput();\n }\n }\n\n focusInput() {\n if (this.inputRef.current !== null) {\n this.inputRef.current.select();\n this.inputRef.current.focus();\n }\n }\n\n clearFilter() {\n this.setState({ value: '' });\n }\n\n setFilterState({ name, type, value, isValueShown }) {\n const column = name != null && type != null ? { name, type } : null;\n this.setState({ column, value, isValueShown });\n }\n\n sendUpdate() {\n const { onChange } = this.props;\n const { column, value, isValueShown } = this.state;\n onChange({ column, isValueShown, value });\n }\n\n render() {\n const { columns } = this.props;\n const { column, isValueShown, selectedColumn, value } = this.state;\n const inputLength =\n value == null || value.length === 0\n ? InputFilter.PLACEHOLDER.length\n : value.length;\n let titleLabel = null;\n if (column != null) {\n const columnIndex = columns.findIndex(\n item => item.name === column.name && item.type === column.type\n );\n titleLabel =\n columnIndex >= 0\n ? this.getItemLabel(columns, columnIndex)\n : column.name;\n }\n\n return (\n <CardFlip\n className=\"input-filter fill-parent-absolute\"\n isFlipped={isValueShown}\n >\n <div className=\"input-filter-settings-card\">\n <div className=\"input-filter-settings-content\">\n <div className=\"input-filter-settings-grid\">\n <label>Filter Column</label>\n <select\n value={columns.findIndex(\n item =>\n item.name === selectedColumn?.name &&\n item.type === selectedColumn?.type\n )}\n className=\"custom-select\"\n onChange={this.handleColumnChange}\n >\n {columns.map((columnItem, index) => (\n <option\n key={`${columnItem.name}/${columnItem.type}`}\n value={index}\n >\n {this.getItemLabel(columns, index)}\n </option>\n ))}\n {columns.length === 0 && (\n <option value=\"-1\" disabled>\n No Available Columns\n </option>\n )}\n </select>\n <div className=\"text-muted small\">\n Input filter control will apply its filter to all columns\n matching this name in this dashboard.\n </div>\n </div>\n <div className=\"input-filter-settings-buttons\">\n <button\n type=\"button\"\n className=\"btn btn-outline-primary\"\n onClick={this.handleSettingsCancel}\n disabled={column == null}\n >\n Cancel\n </button>\n <button\n type=\"button\"\n className=\"btn btn-primary ml-2\"\n onClick={this.handleSettingsSave}\n disabled={selectedColumn == null}\n >\n Save\n </button>\n </div>\n </div>\n </div>\n\n <div\n className=\"input-filter-value-card\"\n onClick={this.handleBackgroundClick}\n >\n <div className=\"input-filter-column\">\n <div className=\"input-filter-column-title\">{titleLabel} Filter</div>\n </div>\n <div className=\"d-flex justify-content-center align-items-center h-100 w-100\">\n <div className=\"input-filter-value-input d-flex flex-column justify-content-center\">\n <input\n type=\"text\"\n ref={this.inputRef}\n placeholder={InputFilter.PLACEHOLDER}\n value={value ?? ''}\n onChange={this.handleValueChange}\n onKeyPress={this.handleInputKeyPress}\n style={{ width: `${inputLength + 3}ch` }}\n spellCheck=\"false\"\n />\n </div>\n </div>\n <div className=\"input-filter-menu\">\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon m-2 px-2\"\n onClick={this.handleSettingsClick}\n >\n <FontAwesomeIcon icon={vsGear} transform=\"grow-4\" />\n </button>\n </div>\n </div>\n </CardFlip>\n );\n }\n}\n\nInputFilter.propTypes = {\n columns: PropTypes.arrayOf(APIPropTypes.Column).isRequired,\n column: APIPropTypes.Column,\n isValueShown: PropTypes.bool,\n value: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n};\n\nInputFilter.defaultProps = {\n column: null,\n isValueShown: false,\n value: null,\n};\n\nexport default InputFilter;\n"],"file":"InputFilter.js"}
|