@gpa-gemstone/common-pages 0.0.109 → 0.0.110

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,40 @@
1
+ import React from 'react';
2
+ import { OpenXDA } from '@gpa-gemstone/application-typings';
3
+ interface IProps {
4
+ setEventFilters: (characteristics?: IEventCharacteristicFilters, types?: number[]) => void;
5
+ eventTypes: OpenXDA.Types.EventType[];
6
+ eventCharacteristicFilter: IEventCharacteristicFilters;
7
+ magDurCurves: OpenXDA.Types.MagDurCurve[];
8
+ eventTypeFilter: number[];
9
+ }
10
+ interface IPhaseFilters {
11
+ AN: boolean;
12
+ BN: boolean;
13
+ CN: boolean;
14
+ AB: boolean;
15
+ BC: boolean;
16
+ CA: boolean;
17
+ ABG: boolean;
18
+ BCG: boolean;
19
+ ABC: boolean;
20
+ ABCG: boolean;
21
+ }
22
+ interface IEventCharacteristicFilters {
23
+ durationMin: number;
24
+ durationMax: number;
25
+ phases: IPhaseFilters;
26
+ transientMin?: number;
27
+ transientMax?: number;
28
+ transientType: ('LL' | 'LN' | 'both');
29
+ sagMin?: number;
30
+ sagMax?: number;
31
+ sagType: ('LL' | 'LN' | 'both');
32
+ swellMin?: number;
33
+ swellMax?: number;
34
+ swellType: ('LL' | 'LN' | 'both');
35
+ curveID: number;
36
+ curveInside: boolean;
37
+ curveOutside: boolean;
38
+ }
39
+ declare const EventCharacteristicFilter: (props: IProps) => React.JSX.Element | null;
40
+ export default EventCharacteristicFilter;
@@ -0,0 +1,241 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ //******************************************************************************************************
18
+ // EventCharacteristicFilter.tsx - Gbtc
19
+ //
20
+ // Copyright © 2019, Grid Protection Alliance. All Rights Reserved.
21
+ //
22
+ // Licensed to the Grid Protection Alliance (GPA) under one or more contributor license agreements. See
23
+ // the NOTICE file distributed with this work for additional information regarding copyright ownership.
24
+ // The GPA licenses this file to you under the MIT License (MIT), the "License"; you may not use this
25
+ // file except in compliance with the License. You may obtain a copy of the License at:
26
+ //
27
+ // http://opensource.org/licenses/MIT
28
+ //
29
+ // Unless agreed to in writing, the subject software distributed under the License is distributed on an
30
+ // "AS-IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. Refer to the
31
+ // License for the specific language governing permissions and limitations.
32
+ //
33
+ // Code Modification History:
34
+ // ----------------------------------------------------------------------------------------------------
35
+ // 04/24/2019 - Billy Ernest
36
+ // Generated original version of source code.
37
+ // 08/22/2019 - Christoph Lackner
38
+ // Added Filter for Events with TCE.
39
+ // 06/20/2024 - Ali Karrar
40
+ // Moved EventCharacteristicFilter from SEBrowser to gemstone
41
+ //
42
+ //******************************************************************************************************
43
+ var react_1 = __importDefault(require("react"));
44
+ var react_forms_1 = require("@gpa-gemstone/react-forms");
45
+ var EventCharacteristicFilter = function (props) {
46
+ var _a = react_1.default.useState(props.eventCharacteristicFilter), newEventCharacteristicFilter = _a[0], setNewEventCharacteristicFilter = _a[1];
47
+ var _b = react_1.default.useState([]), newTypeFilter = _b[0], setNewTypeFilter = _b[1];
48
+ var _c = react_1.default.useState([]), newPhases = _c[0], setNewPhases = _c[1];
49
+ react_1.default.useEffect(function () { setNewTypeFilter(props.eventTypeFilter); }, [props.eventTypeFilter]);
50
+ react_1.default.useEffect(function () { setNewEventCharacteristicFilter(props.eventCharacteristicFilter); }, [props.eventCharacteristicFilter]);
51
+ react_1.default.useEffect(function () {
52
+ var setupPhases = [];
53
+ Object.keys(props.eventCharacteristicFilter.phases).forEach(function (key, index) { return setupPhases.push({ Value: index, Text: key, Selected: props.eventCharacteristicFilter.phases[key] }); });
54
+ setNewPhases(setupPhases);
55
+ }, []);
56
+ react_1.default.useEffect(function () {
57
+ var characteristics = validEventCharacteristicsFilter() ? newEventCharacteristicFilter : undefined;
58
+ props.setEventFilters(characteristics, newTypeFilter);
59
+ }, [newEventCharacteristicFilter, newTypeFilter]);
60
+ function validEventCharacteristicsFilter() {
61
+ var valid = newEventCharacteristicFilter != null;
62
+ if (!valid)
63
+ return valid;
64
+ valid = valid && validMinMax('durationMin');
65
+ valid = valid && validMinMax('durationMax');
66
+ valid = valid && validMinMax('sagMin');
67
+ valid = valid && validMinMax('sagMax');
68
+ valid = valid && validMinMax('swellMin');
69
+ valid = valid && validMinMax('swellMax');
70
+ valid = valid && validMinMax('transientMin');
71
+ valid = valid && validMinMax('transientMax');
72
+ return valid;
73
+ }
74
+ function NullOrNaN(val) {
75
+ return val == null || val == undefined || isNaN(val);
76
+ }
77
+ function validMinMax(field) {
78
+ var filter = newEventCharacteristicFilter;
79
+ if (field == 'durationMin')
80
+ return NullOrNaN(filter.durationMin) || (filter.durationMin >= 0 && filter.durationMin < 100 &&
81
+ (NullOrNaN(filter.durationMax) || filter.durationMax >= filter.durationMin));
82
+ if (field == 'durationMax')
83
+ return NullOrNaN(filter.durationMax) || (filter.durationMax >= 0 && filter.durationMax < 100 &&
84
+ (NullOrNaN(filter.durationMin) || filter.durationMax >= filter.durationMin));
85
+ if (field == 'sagMin')
86
+ return NullOrNaN(filter.sagMin) || (filter.sagMin >= 0 && filter.sagMin < 1 &&
87
+ (NullOrNaN(filter.sagMax) || filter.sagMax >= filter.sagMin));
88
+ if (field == 'sagMax')
89
+ return NullOrNaN(filter.sagMax) || (filter.sagMax >= 0 && filter.sagMax < 1 &&
90
+ (NullOrNaN(filter.sagMax) || filter.sagMax >= filter.sagMax));
91
+ if (field == 'swellMin')
92
+ return NullOrNaN(filter.swellMin) || (filter.swellMin >= 1 && filter.swellMin < 9999 &&
93
+ (NullOrNaN(filter.swellMax) || filter.swellMax >= filter.swellMin));
94
+ if (field == 'swellMax')
95
+ return NullOrNaN(filter.swellMax) || (filter.swellMax >= 1 && filter.swellMax < 9999 &&
96
+ (NullOrNaN(filter.swellMin) || filter.swellMax >= filter.swellMin));
97
+ if (field == 'transientMin')
98
+ return NullOrNaN(filter.transientMin) || (filter.transientMin >= 0 && filter.transientMin < 9999 &&
99
+ (NullOrNaN(filter.transientMax) || filter.transientMax >= filter.transientMin));
100
+ if (field == 'transientMax')
101
+ return NullOrNaN(filter.transientMax) || (filter.transientMax >= 0 && filter.transientMax < 9999 &&
102
+ (NullOrNaN(filter.transientMin) || filter.transientMax >= filter.transientMin));
103
+ return true;
104
+ }
105
+ var sagsSelected = newTypeFilter.find(function (i) { var _a, _b; return (_b = i == ((_a = props.eventTypes.find(function (item) { return item.Name == 'Sag'; })) === null || _a === void 0 ? void 0 : _a.ID)) !== null && _b !== void 0 ? _b : -1; }) != null;
106
+ var swellsSelected = newTypeFilter.find(function (i) { var _a, _b; return (_b = i == ((_a = props.eventTypes.find(function (item) { return item.Name == 'Swell'; })) === null || _a === void 0 ? void 0 : _a.ID)) !== null && _b !== void 0 ? _b : -1; }) != null;
107
+ var transientsSelected = newTypeFilter.find(function (i) { var _a, _b; return (_b = i == ((_a = props.eventTypes.find(function (item) { return item.Name == 'Transient'; })) === null || _a === void 0 ? void 0 : _a.ID)) !== null && _b !== void 0 ? _b : -1; }) != null;
108
+ if (newEventCharacteristicFilter === null || newTypeFilter === null)
109
+ return null;
110
+ return (react_1.default.createElement("fieldset", { className: "border", style: { padding: '10px', height: '100%' } },
111
+ react_1.default.createElement("legend", { className: "w-auto", style: { fontSize: 'large' } }, "Event Characteristics:"),
112
+ react_1.default.createElement("div", { className: "row" },
113
+ react_1.default.createElement("div", { className: "col-4" },
114
+ react_1.default.createElement("form", null,
115
+ react_1.default.createElement("div", { className: "form-group" },
116
+ react_1.default.createElement("div", { className: 'input-group input-group-sm', style: { width: '100%' } },
117
+ react_1.default.createElement(react_forms_1.Select, { Record: newEventCharacteristicFilter, Label: 'Mag-Dur:', Field: 'curveID', Setter: setNewEventCharacteristicFilter, Options: props.magDurCurves.map(function (v) { return ({ Value: v.ID.toString(), Label: v.Name }); }) })),
118
+ react_1.default.createElement("div", { className: 'form-check form-check-inline' },
119
+ react_1.default.createElement("input", { className: "form-check-input", type: "radio", onChange: function () {
120
+ setNewEventCharacteristicFilter(__assign(__assign({}, newEventCharacteristicFilter), { curveInside: true, curveOutside: false }));
121
+ }, checked: newEventCharacteristicFilter.curveInside && !props.eventCharacteristicFilter.curveOutside }),
122
+ react_1.default.createElement("label", { className: "form-check-label" }, "Inside")),
123
+ react_1.default.createElement("div", { className: 'form-check form-check-inline' },
124
+ react_1.default.createElement("input", { className: "form-check-input", type: "radio", onChange: function () {
125
+ setNewEventCharacteristicFilter(__assign(__assign({}, newEventCharacteristicFilter), { curveOutside: true, curveInside: false }));
126
+ }, checked: newEventCharacteristicFilter.curveOutside && !newEventCharacteristicFilter.curveInside }),
127
+ react_1.default.createElement("label", { className: "form-check-label" }, "Outside")),
128
+ react_1.default.createElement("div", { className: 'form-check form-check-inline' },
129
+ react_1.default.createElement("input", { className: "form-check-input", type: "radio", onChange: function () {
130
+ setNewEventCharacteristicFilter(__assign(__assign({}, newEventCharacteristicFilter), { curveOutside: true, curveInside: true }));
131
+ }, checked: newEventCharacteristicFilter.curveOutside && newEventCharacteristicFilter.curveInside }),
132
+ react_1.default.createElement("label", { className: "form-check-label" }, "Both"))))),
133
+ react_1.default.createElement("div", { className: "col-4" },
134
+ react_1.default.createElement("form", null,
135
+ react_1.default.createElement("label", { style: { margin: 0 } }, "Duration (cycle):"),
136
+ react_1.default.createElement("div", { className: "form-group" },
137
+ react_1.default.createElement("div", { className: 'input-group input-group-sm' },
138
+ react_1.default.createElement("div", { className: 'col', style: { width: '45%', paddingRight: 0, paddingLeft: 0 } },
139
+ react_1.default.createElement(react_forms_1.Input, { Record: newEventCharacteristicFilter, Label: '', Field: 'durationMin', Setter: setNewEventCharacteristicFilter, Valid: validMinMax, Feedback: 'Invalid Min', Type: 'number', Size: 'small', AllowNull: true })),
140
+ react_1.default.createElement("div", { className: "input-group-append", style: { height: '37px' } },
141
+ react_1.default.createElement("span", { className: "input-group-text" }, " to ")),
142
+ react_1.default.createElement("div", { className: 'col', style: { width: '45%', paddingLeft: 0, paddingRight: 0 } },
143
+ react_1.default.createElement(react_forms_1.Input, { Record: newEventCharacteristicFilter, Label: '', Field: 'durationMax', Setter: setNewEventCharacteristicFilter, Valid: validMinMax, Feedback: 'Invalid Max', Type: 'number', Size: 'small', AllowNull: true })))))),
144
+ react_1.default.createElement("div", { className: "col-4" },
145
+ react_1.default.createElement("form", null,
146
+ react_1.default.createElement("label", { style: { margin: 0 } }, "Sags (p.u.):"),
147
+ react_1.default.createElement("div", { className: "form-group" },
148
+ react_1.default.createElement("div", { className: "row", style: { width: '100%' } },
149
+ react_1.default.createElement("div", { className: 'input-group input-group-sm' },
150
+ react_1.default.createElement("div", { className: 'col', style: { width: '45%', paddingLeft: 0, paddingRight: 0 } },
151
+ react_1.default.createElement(react_forms_1.Input, { Record: newEventCharacteristicFilter, Label: '', Disabled: !sagsSelected, Field: 'sagMin', Setter: setNewEventCharacteristicFilter, Valid: validMinMax, Feedback: 'Invalid Min', Type: 'number', Size: 'small', AllowNull: true })),
152
+ react_1.default.createElement("div", { className: "input-group-append", style: { height: '37px' } },
153
+ react_1.default.createElement("span", { className: "input-group-text" }, " to ")),
154
+ react_1.default.createElement("div", { className: 'col', style: { width: '45%', paddingLeft: 0, paddingRight: 0 } },
155
+ react_1.default.createElement(react_forms_1.Input, { Record: newEventCharacteristicFilter, Label: '', Disabled: !sagsSelected, Field: 'sagMax', Setter: setNewEventCharacteristicFilter, Valid: validMinMax, Feedback: 'Invalid Max', Type: 'number', Size: 'small', AllowNull: true })))),
156
+ react_1.default.createElement("div", { className: "row justify-content-md-center" },
157
+ react_1.default.createElement("div", { className: 'form-check form-check-inline' },
158
+ react_1.default.createElement("input", { className: "form-check-input", type: "radio", onChange: function () {
159
+ setNewEventCharacteristicFilter(__assign(__assign({}, newEventCharacteristicFilter), { sagType: 'LL' }));
160
+ }, checked: newEventCharacteristicFilter.sagType == 'LL' }),
161
+ react_1.default.createElement("label", { className: "form-check-label" }, "LL")),
162
+ react_1.default.createElement("div", { className: 'form-check form-check-inline' },
163
+ react_1.default.createElement("input", { className: "form-check-input", type: "radio", onChange: function () {
164
+ setNewEventCharacteristicFilter(__assign(__assign({}, newEventCharacteristicFilter), { sagType: 'LN' }));
165
+ }, checked: newEventCharacteristicFilter.sagType == 'LN' }),
166
+ react_1.default.createElement("label", { className: "form-check-label" }, "LN")),
167
+ react_1.default.createElement("div", { className: 'form-check form-check-inline' },
168
+ react_1.default.createElement("input", { className: "form-check-input", type: "radio", onChange: function () {
169
+ setNewEventCharacteristicFilter(__assign(__assign({}, newEventCharacteristicFilter), { sagType: 'both' }));
170
+ }, checked: newEventCharacteristicFilter.sagType == 'both' }),
171
+ react_1.default.createElement("label", { className: "form-check-label" }, "Both")))))),
172
+ react_1.default.createElement("div", { className: "col-4" },
173
+ react_1.default.createElement(react_forms_1.MultiCheckBoxSelect, { Options: newPhases, Label: 'Phases', ItemTooltip: 'dark', OnChange: function (evt, Options) {
174
+ var phaseList = [];
175
+ var phaseFilter = __assign({}, newEventCharacteristicFilter.phases);
176
+ newPhases.forEach(function (phase) {
177
+ var phaseSelected = phase.Selected != (Options.findIndex(function (option) { return phase.Value === option.Value; }) > -1);
178
+ phaseList.push(__assign(__assign({}, phase), { Selected: phaseSelected }));
179
+ phaseFilter[phase.Text] = phaseSelected;
180
+ });
181
+ setNewPhases(phaseList);
182
+ setNewEventCharacteristicFilter(__assign(__assign({}, newEventCharacteristicFilter), { phases: phaseFilter }));
183
+ } })),
184
+ react_1.default.createElement("div", { className: "col-4" },
185
+ react_1.default.createElement("form", null,
186
+ react_1.default.createElement("label", { style: { margin: 0 } }, "Transients (p.u.):"),
187
+ react_1.default.createElement("div", { className: "form-group" },
188
+ react_1.default.createElement("div", { className: 'input-group input-group-sm' },
189
+ react_1.default.createElement("div", { className: "row", style: { width: '100%' } },
190
+ react_1.default.createElement("div", { className: 'col', style: { width: '45%', paddingLeft: 0, paddingRight: 0 } },
191
+ react_1.default.createElement(react_forms_1.Input, { Record: newEventCharacteristicFilter, Label: '', Disabled: !transientsSelected, Field: 'transientMin', Setter: setNewEventCharacteristicFilter, Valid: validMinMax, Feedback: 'Invalid Min', Type: 'number', Size: 'small', AllowNull: true })),
192
+ react_1.default.createElement("div", { className: "input-group-append", style: { height: '37px' } },
193
+ react_1.default.createElement("span", { className: "input-group-text" }, " to ")),
194
+ react_1.default.createElement("div", { className: 'col', style: { width: '45%', paddingLeft: 0, paddingRight: 0 } },
195
+ react_1.default.createElement(react_forms_1.Input, { Record: newEventCharacteristicFilter, Label: '', Disabled: !transientsSelected, Field: 'transientMax', Setter: setNewEventCharacteristicFilter, Valid: validMinMax, Feedback: 'Invalid Max', Size: 'small', AllowNull: true, Type: 'number' })))),
196
+ react_1.default.createElement("div", { className: "row justify-content-md-center" },
197
+ react_1.default.createElement("div", { className: 'form-check form-check-inline' },
198
+ react_1.default.createElement("input", { className: "form-check-input", type: "radio", onChange: function () {
199
+ setNewEventCharacteristicFilter(__assign(__assign({}, newEventCharacteristicFilter), { transientType: 'LL' }));
200
+ }, checked: newEventCharacteristicFilter.transientType == 'LL' }),
201
+ react_1.default.createElement("label", { className: "form-check-label" }, "LL")),
202
+ react_1.default.createElement("div", { className: 'form-check form-check-inline' },
203
+ react_1.default.createElement("input", { className: "form-check-input", type: "radio", onChange: function () {
204
+ setNewEventCharacteristicFilter(__assign(__assign({}, newEventCharacteristicFilter), { transientType: 'LN' }));
205
+ }, checked: newEventCharacteristicFilter.transientType == 'LN' }),
206
+ react_1.default.createElement("label", { className: "form-check-label" }, "LN")),
207
+ react_1.default.createElement("div", { className: 'form-check form-check-inline' },
208
+ react_1.default.createElement("input", { className: "form-check-input", type: "radio", onChange: function () {
209
+ setNewEventCharacteristicFilter(__assign(__assign({}, newEventCharacteristicFilter), { transientType: 'both' }));
210
+ }, checked: newEventCharacteristicFilter.transientType == 'both' }),
211
+ react_1.default.createElement("label", { className: "form-check-label" }, "Both")))))),
212
+ react_1.default.createElement("div", { className: "col-4" },
213
+ react_1.default.createElement("form", null,
214
+ react_1.default.createElement("label", { style: { margin: 0 } }, "Swells (p.u.):"),
215
+ react_1.default.createElement("div", { className: "form-group" },
216
+ react_1.default.createElement("div", { className: "row", style: { width: '100%' } },
217
+ react_1.default.createElement("div", { className: 'input-group input-group-sm' },
218
+ react_1.default.createElement("div", { className: 'col', style: { width: '45%', paddingLeft: 0, paddingRight: 0 } },
219
+ react_1.default.createElement(react_forms_1.Input, { Record: newEventCharacteristicFilter, Label: '', Disabled: !swellsSelected, Field: 'swellMin', Setter: setNewEventCharacteristicFilter, Valid: validMinMax, Feedback: 'Invalid Min', Type: 'number', Size: 'small', AllowNull: true })),
220
+ react_1.default.createElement("div", { className: "input-group-append", style: { height: '37px' } },
221
+ react_1.default.createElement("span", { className: "input-group-text" }, " to ")),
222
+ react_1.default.createElement("div", { className: 'col', style: { width: '45%', paddingLeft: 0, paddingRight: 0 } },
223
+ react_1.default.createElement(react_forms_1.Input, { Record: newEventCharacteristicFilter, Label: '', Disabled: !swellsSelected, Field: 'swellMax', Setter: setNewEventCharacteristicFilter, Valid: validMinMax, Feedback: 'Invalid Max', Type: 'number', Size: 'small', AllowNull: true })))),
224
+ react_1.default.createElement("div", { className: "row justify-content-md-center" },
225
+ react_1.default.createElement("div", { className: 'form-check form-check-inline' },
226
+ react_1.default.createElement("input", { className: "form-check-input", type: "radio", onChange: function () {
227
+ setNewEventCharacteristicFilter(__assign(__assign({}, newEventCharacteristicFilter), { swellType: 'LL' }));
228
+ }, checked: newEventCharacteristicFilter.swellType == 'LL' }),
229
+ react_1.default.createElement("label", { className: "form-check-label" }, "LL")),
230
+ react_1.default.createElement("div", { className: 'form-check form-check-inline' },
231
+ react_1.default.createElement("input", { className: "form-check-input", type: "radio", onChange: function () {
232
+ setNewEventCharacteristicFilter(__assign(__assign({}, newEventCharacteristicFilter), { swellType: 'LN' }));
233
+ }, checked: newEventCharacteristicFilter.swellType == 'LN' }),
234
+ react_1.default.createElement("label", { className: "form-check-label" }, "LN")),
235
+ react_1.default.createElement("div", { className: 'form-check form-check-inline' },
236
+ react_1.default.createElement("input", { className: "form-check-input", type: "radio", onChange: function () {
237
+ setNewEventCharacteristicFilter(__assign(__assign({}, newEventCharacteristicFilter), { swellType: 'both' }));
238
+ }, checked: newEventCharacteristicFilter.swellType == 'both' }),
239
+ react_1.default.createElement("label", { className: "form-check-label" }, "Both")))))))));
240
+ };
241
+ exports.default = EventCharacteristicFilter;
@@ -101,7 +101,7 @@ var EventTypeFilter = function (props) {
101
101
  else {
102
102
  flts = evtTypeCategories;
103
103
  }
104
- return react_1.default.createElement("li", { className: "nav-item", style: { width: (20 / nCol).toFixed(0) + '%', paddingRight: 10, height: evtTypeCategories.some(function (c) { return c.height == 0; }) ? 5 : '100%', overflow: 'hidden' } }, flts.map(function (c) { return (react_1.default.createElement(EventSearchTypeCategory, { key: c.label, Label: c.label, SelectedID: props.SelectedTypeID, SelectAll: function (selected) {
104
+ return react_1.default.createElement("li", { className: "nav-item", style: { width: (100 / nCol).toFixed(0) + '%', height: evtTypeCategories.some(function (c) { return c.height == 0; }) ? 5 : '100%', overflow: 'hidden' } }, flts.map(function (c) { return (react_1.default.createElement(EventSearchTypeCategory, { key: c.label, Label: c.label, SelectedID: props.SelectedTypeID, SelectAll: function (selected) {
105
105
  props.SetSelectedTypeIDs(selected ? props.SelectedTypeID.filter(function (id) { return props.EventTypes.find(function (t) { var _a; return id == t.ID && ((_a = t.Category) !== null && _a !== void 0 ? _a : '') == c.label; }) == null; })
106
106
  : lodash_1.default.uniq(__spreadArray(__spreadArray([], props.SelectedTypeID, true), props.EventTypes.filter(function (t) { var _a; return ((_a = t.Category) !== null && _a !== void 0 ? _a : '') == c.label; }).map(function (i) { return i.ID; }), true)));
107
107
  }, Data: props.EventTypes.filter(function (et) { var _a; return ((_a = et.Category) !== null && _a !== void 0 ? _a : '') == c.label; }), OnChange: function (record, selected) {
@@ -117,7 +117,7 @@ var EventTypeFilter = function (props) {
117
117
  return u;
118
118
  });
119
119
  }
120
- return (react_1.default.createElement(react_1.default.Fragment, null, Array.from({ length: nCol }, function (_, i) { return i; }).map(function (c) { return generateCollumn(c); })));
120
+ return (react_1.default.createElement("ul", { className: "navbar-nav mr-auto", style: { width: "100%" } }, Array.from({ length: nCol }, function (_, i) { return i; }).map(function (c) { return generateCollumn(c); })));
121
121
  };
122
122
  var EventSearchTypeCategory = function (props) {
123
123
  var formRef = react_1.default.useRef(null);
package/lib/Note.js CHANGED
@@ -185,7 +185,7 @@ function Note(props) {
185
185
  return (React.createElement("div", { style: { width: '100%', height: '100%' } },
186
186
  React.createElement("div", { style: { height: '40px', margin: 'auto', marginTop: 'calc(50% - 20 px)' } },
187
187
  React.createElement(react_interactive_1.ServerErrorIcon, { Show: true, Size: 40 }))));
188
- return (React.createElement("div", { className: showCard ? "card" : "", style: { marginBottom: 10, maxHeight: props.MaxHeight, width: '100%' } },
188
+ return (React.createElement("div", { className: showCard ? "card" : "", style: { border: '0px', maxHeight: props.MaxHeight, width: '100%' } },
189
189
  React.createElement(react_interactive_1.LoadingScreen, { Show: dataStatus === 'loading' }),
190
190
  React.createElement("div", { className: props.ShowCard === undefined || props.ShowCard ? "card-header" : "" },
191
191
  React.createElement("div", { className: "row" },
@@ -1,7 +1,10 @@
1
1
  import { ITimeFilter } from '../TimeFilter';
2
+ export type DateUnit = ('datetime-local' | 'date' | 'time');
2
3
  interface IQuickSelect {
3
4
  label: string;
4
- createFilter: (timeZone: string) => ITimeFilter;
5
+ hideQuickPick: (format?: DateUnit) => boolean;
6
+ createFilter: (timeZone: string, format?: DateUnit) => ITimeFilter;
5
7
  }
8
+ export declare function getFormat(format?: DateUnit): "MM/DD/YYYY HH:mm:ss.SSS" | "YYYY-MM-DD" | "HH:mm:ss.SSS";
6
9
  export declare const AvailableQuickSelects: IQuickSelect[];
7
10
  export {};
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  //******************************************************************************************************
3
- // TimeFilter.tsx - Gbtc
3
+ // QuickSelects.tsx - Gbtc
4
4
  //
5
5
  // Copyright © 2020, Grid Protection Alliance. All Rights Reserved.
6
6
  //
@@ -27,146 +27,191 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.AvailableQuickSelects = void 0;
30
+ exports.getFormat = getFormat;
30
31
  var moment_1 = __importDefault(require("moment"));
31
32
  var moment_timezone_1 = __importDefault(require("moment-timezone"));
33
+ function getFormat(format) {
34
+ if (format == 'date')
35
+ return 'YYYY-MM-DD';
36
+ else if (format == "time")
37
+ return 'HH:mm:ss.SSS';
38
+ else
39
+ return 'MM/DD/YYYY HH:mm:ss.SSS'; // default format
40
+ }
32
41
  //update all quick selects to use new timefilters
33
42
  exports.AvailableQuickSelects = [
34
43
  {
35
- label: 'This Hour', createFilter: function (tz) {
44
+ label: 'This Hour', createFilter: function (tz, format) {
36
45
  var offset = moment_timezone_1.default.tz(moment_1.default.utc().startOf('hour').format('YYYY-MM-DDTHH:mm:ss.SSSSS'), tz).utcOffset();
37
46
  var t = moment_1.default.utc().add(offset, 'minutes').startOf('hour');
38
47
  return {
39
- start: t.format('MM/DD/YYYY HH:mm:ss.SSS'),
48
+ start: t.format(getFormat(format)),
40
49
  unit: 'm',
41
50
  duration: 60,
42
51
  };
52
+ },
53
+ hideQuickPick: function (f) {
54
+ return f == 'date';
43
55
  }
44
56
  },
45
57
  {
46
- label: 'Last Hour', createFilter: function (tz) {
58
+ label: 'Last Hour', createFilter: function (tz, format) {
47
59
  var offset = moment_timezone_1.default.tz(moment_1.default.utc().startOf('hour').subtract(1, 'hour').format('YYYY-MM-DDTHH:mm:ss.SSSSS'), tz).utcOffset();
48
60
  var t = moment_1.default.utc().add(offset, 'minutes').startOf('hour');
49
61
  return {
50
- end: t.format('MM/DD/YYYY HH:mm:ss.SSS'),
62
+ end: t.format(getFormat(format)),
51
63
  unit: 'm',
52
64
  duration: 60,
53
65
  };
66
+ },
67
+ hideQuickPick: function (f) {
68
+ return f == 'date';
54
69
  }
55
70
  },
56
71
  {
57
- label: 'Last 60 Minutes', createFilter: function (tz) {
72
+ label: 'Last 60 Minutes', createFilter: function (tz, format) {
58
73
  var offset = moment_timezone_1.default.tz(moment_1.default.utc().startOf('minute').subtract(1, 'hour').format('YYYY-MM-DDTHH:mm:ss.SSSSS'), tz).utcOffset();
59
74
  var t = moment_1.default.utc().add(offset, 'minutes').startOf('minute');
60
75
  return {
61
- end: t.format('MM/DD/YYYY HH:mm:ss.SSS'),
76
+ end: t.format(getFormat(format)),
62
77
  unit: 'm',
63
78
  duration: 60,
64
79
  };
80
+ },
81
+ hideQuickPick: function (f) {
82
+ return f == 'date';
65
83
  }
66
84
  },
67
85
  {
68
- label: 'Today', createFilter: function (tz) {
86
+ label: 'Today', createFilter: function (tz, format) {
69
87
  var offset = moment_timezone_1.default.tz(moment_1.default.utc().startOf('day').format('YYYY-MM-DDTHH:mm:ss.SSSSS'), tz).utcOffset();
70
88
  var t = moment_1.default.utc().add(offset, 'minutes').startOf('day');
71
89
  return {
72
- start: t.format('MM/DD/YYYY HH:mm:ss.SSS'),
90
+ start: t.format(getFormat(format)),
73
91
  unit: 'h',
74
92
  duration: 24,
75
93
  };
94
+ },
95
+ hideQuickPick: function (f) {
96
+ return f == 'time';
76
97
  }
77
98
  },
78
99
  {
79
- label: 'Yesterday', createFilter: function (tz) {
100
+ label: 'Yesterday', createFilter: function (tz, format) {
80
101
  var offset = moment_timezone_1.default.tz(moment_1.default.utc().startOf('day').subtract(1, 'days').format('YYYY-MM-DDTHH:mm:ss.SSSSS'), tz).utcOffset();
81
102
  var t = moment_1.default.utc().add(offset, 'minutes').startOf('day');
82
103
  return {
83
- end: t.format('MM/DD/YYYY HH:mm:ss.SSS'),
104
+ end: t.format(getFormat(format)),
84
105
  unit: 'h',
85
106
  duration: 24,
86
107
  };
108
+ },
109
+ hideQuickPick: function (f) {
110
+ return f == 'time';
87
111
  }
88
112
  },
89
113
  {
90
- label: 'Last 24 Hours', createFilter: function (tz) {
114
+ label: 'Last 24 Hours', createFilter: function (tz, format) {
91
115
  var offset = moment_timezone_1.default.tz(moment_1.default.utc().startOf('hour').subtract(24, 'hours').format('YYYY-MM-DDTHH:mm:ss.SSSSS'), tz).utcOffset();
92
116
  var t = moment_1.default.utc().add(offset, 'minutes');
93
117
  return {
94
- end: t.format('MM/DD/YYYY HH:mm:ss.SSS'),
118
+ end: t.format(getFormat(format)),
95
119
  unit: 'h',
96
120
  duration: 24,
97
121
  };
122
+ },
123
+ hideQuickPick: function (f) {
124
+ return f == 'date' || f == 'time';
98
125
  }
99
126
  },
100
127
  {
101
- label: 'This Week', createFilter: function (tz) {
128
+ label: 'This Week', createFilter: function (tz, format) {
102
129
  var offset = moment_timezone_1.default.tz(moment_1.default.utc().startOf('week').format('YYYY-MM-DDTHH:mm:ss.SSSSS'), tz).utcOffset();
103
130
  var t = moment_1.default.utc().add(offset, 'minutes').startOf('week');
104
131
  return {
105
- start: t.format('MM/DD/YYYY HH:mm:ss.SSS'),
132
+ start: t.format(getFormat(format)),
106
133
  unit: 'h',
107
134
  duration: 7 * 24,
108
135
  };
136
+ },
137
+ hideQuickPick: function (f) {
138
+ return f == 'time';
109
139
  }
110
140
  },
111
141
  {
112
- label: 'Last Week', createFilter: function (tz) {
142
+ label: 'Last Week', createFilter: function (tz, format) {
113
143
  var offset = moment_timezone_1.default.tz(moment_1.default.utc().startOf('week').format('YYYY-MM-DDTHH:mm:ss.SSSSS'), tz).utcOffset();
114
144
  var t = moment_1.default.utc().add(offset, 'minutes').startOf('week');
115
145
  return {
116
- end: t.format('MM/DD/YYYY HH:mm:ss.SSS'),
146
+ end: t.format(getFormat(format)),
117
147
  unit: 'h',
118
148
  duration: 7 * 24,
119
149
  };
150
+ },
151
+ hideQuickPick: function (f) {
152
+ return f == 'time';
120
153
  }
121
154
  },
122
155
  {
123
- label: 'Last 7 Days', createFilter: function (tz) {
156
+ label: 'Last 7 Days', createFilter: function (tz, format) {
124
157
  var offset = moment_timezone_1.default.tz(moment_1.default.utc().startOf('day').format('YYYY-MM-DDTHH:mm:ss.SSSSS'), tz).utcOffset();
125
158
  var t = moment_1.default.utc().add(offset, 'minutes').startOf('day');
126
159
  return {
127
- end: t.format('MM/DD/YYYY HH:mm:ss.SSS'),
160
+ end: t.format(getFormat(format)),
128
161
  unit: 'h',
129
162
  duration: 7 * 24,
130
163
  };
164
+ },
165
+ hideQuickPick: function (f) {
166
+ return f == 'time';
131
167
  }
132
168
  },
133
169
  {
134
- label: 'This Month', createFilter: function (tz) {
170
+ label: 'This Month', createFilter: function (tz, format) {
135
171
  var offset = moment_timezone_1.default.tz(moment_1.default.utc().startOf('month').format('YYYY-MM-DDTHH:mm:ss.SSSSS'), tz).utcOffset();
136
172
  var t = moment_1.default.utc().add(offset, 'minutes').startOf('month');
137
173
  var window = (t.daysInMonth() * 24);
138
174
  return {
139
- start: t.format('MM/DD/YYYY HH:mm:ss.SSS'),
175
+ start: t.format(getFormat(format)),
140
176
  unit: 'h',
141
177
  duration: window,
142
178
  };
179
+ },
180
+ hideQuickPick: function (f) {
181
+ return f == 'time';
143
182
  }
144
183
  },
145
184
  {
146
- label: 'Last Month', createFilter: function (tz) {
185
+ label: 'Last Month', createFilter: function (tz, format) {
147
186
  var offset = moment_timezone_1.default.tz(moment_1.default.utc().startOf('month').subtract(1, 'month').format('YYYY-MM-DDTHH:mm:ss.SSSSS'), tz).utcOffset();
148
187
  var t = moment_1.default.utc().add(offset, 'minutes').startOf('month').subtract(1, 'month');
149
188
  var window = (t.daysInMonth() * 24);
150
189
  return {
151
- start: t.format('MM/DD/YYYY HH:mm:ss.SSS'),
190
+ start: t.format(getFormat(format)),
152
191
  unit: 'h',
153
192
  duration: window,
154
193
  };
194
+ },
195
+ hideQuickPick: function (f) {
196
+ return f == 'time';
155
197
  }
156
198
  },
157
199
  {
158
- label: 'Last 30 Days', createFilter: function (tz) {
200
+ label: 'Last 30 Days', createFilter: function (tz, format) {
159
201
  var offset = moment_timezone_1.default.tz(moment_1.default.utc().startOf('day').format('YYYY-MM-DDTHH:mm:ss.SSSSS'), tz).utcOffset();
160
202
  var t = moment_1.default.utc().add(offset, 'minutes').startOf('day');
161
203
  return {
162
- end: t.format('MM/DD/YYYY HH:mm:ss.SSS'),
204
+ end: t.format(getFormat(format)),
163
205
  unit: 'd',
164
206
  duration: 30,
165
207
  };
208
+ },
209
+ hideQuickPick: function (f) {
210
+ return f == 'time';
166
211
  }
167
212
  },
168
213
  {
169
- label: 'This Quarter', createFilter: function (tz) {
214
+ label: 'This Quarter', createFilter: function (tz, format) {
170
215
  var offset = moment_timezone_1.default.tz(moment_1.default.utc().startOf('quarter').add(1, 'quarter').format('YYYY-MM-DDTHH:mm:ss.SSSSS'), tz).utcOffset();
171
216
  var offset_tend = moment_timezone_1.default.tz(moment_1.default.utc().startOf('quarter').format('YYYY-MM-DDTHH:mm:ss.SSSSS'), tz).utcOffset();
172
217
  var t = moment_1.default.utc().add(offset, 'minutes').startOf('quarter');
@@ -174,14 +219,17 @@ exports.AvailableQuickSelects = [
174
219
  tend.add(1, 'quarter');
175
220
  var h = moment_1.default.duration(tend.diff(t)).asDays();
176
221
  return {
177
- start: t.format('MM/DD/YYYY HH:mm:ss.SSS'),
222
+ start: t.format(getFormat(format)),
178
223
  unit: 'd',
179
224
  duration: h,
180
225
  };
226
+ },
227
+ hideQuickPick: function (f) {
228
+ return f == 'time';
181
229
  }
182
230
  },
183
231
  {
184
- label: 'Last Quarter', createFilter: function (tz) {
232
+ label: 'Last Quarter', createFilter: function (tz, format) {
185
233
  var offset = moment_timezone_1.default.tz(moment_1.default.utc().startOf('quarter').subtract(1, 'quarter').format('YYYY-MM-DDTHH:mm:ss.SSSSS'), tz).utcOffset();
186
234
  var offset_tend = moment_timezone_1.default.tz(moment_1.default.utc().startOf('quarter').format('YYYY-MM-DDTHH:mm:ss.SSSSS'), tz).utcOffset();
187
235
  var t = moment_1.default.utc().add(offset, 'minutes').startOf('quarter');
@@ -189,52 +237,67 @@ exports.AvailableQuickSelects = [
189
237
  t.subtract(1, 'quarter');
190
238
  var h = moment_1.default.duration(tend.diff(t)).asDays();
191
239
  return {
192
- start: t.format('MM/DD/YYYY HH:mm:ss.SSS'),
240
+ start: t.format(getFormat(format)),
193
241
  unit: 'd',
194
242
  duration: h,
195
243
  };
244
+ },
245
+ hideQuickPick: function (f) {
246
+ return f == 'time';
196
247
  }
197
248
  },
198
249
  {
199
- label: 'Last 90 Days', createFilter: function (tz) {
250
+ label: 'Last 90 Days', createFilter: function (tz, format) {
200
251
  var offset = moment_timezone_1.default.tz(moment_1.default.utc().startOf('day').subtract(45, 'days').format('YYYY-MM-DDTHH:mm:ss.SSSSS'), tz).utcOffset();
201
252
  var t = moment_1.default.utc().add(offset, 'minutes').startOf('day');
202
253
  return {
203
- end: t.format('MM/DD/YYYY HH:mm:ss.SSS'),
254
+ end: t.format(getFormat(format)),
204
255
  unit: 'd',
205
256
  duration: 90,
206
257
  };
258
+ },
259
+ hideQuickPick: function (f) {
260
+ return f == 'time';
207
261
  }
208
262
  },
209
263
  {
210
- label: 'This Year', createFilter: function (tz) {
264
+ label: 'This Year', createFilter: function (tz, format) {
211
265
  var offset = moment_timezone_1.default.tz(moment_1.default.utc().startOf('year').format('YYYY-MM-DDTHH:mm:ss.SSSSS'), tz).utcOffset();
212
266
  var t = moment_1.default.utc().add(offset, 'minutes').startOf('year');
213
267
  return {
214
- start: t.format('MM/DD/YYYY HH:mm:ss.SSS'),
215
- end: t.endOf('year').format('MM/DD/YYYY HH:mm:ss.SSS')
268
+ start: t.format(getFormat(format)),
269
+ end: t.endOf('year').format(getFormat(format))
216
270
  };
271
+ },
272
+ hideQuickPick: function (f) {
273
+ return f == 'time';
217
274
  }
218
275
  },
219
276
  {
220
- label: 'Last Year', createFilter: function (tz) {
277
+ label: 'Last Year', createFilter: function (tz, format) {
221
278
  var offset = moment_timezone_1.default.tz(moment_1.default.utc().startOf('year').subtract(1, 'year').format('YYYY-MM-DDTHH:mm:ss.SSSSS'), tz).utcOffset();
222
279
  var t = moment_1.default.utc().add(offset, 'minute').startOf('year').subtract(1, 'year');
223
280
  return {
224
- start: t.format('MM/DD/YYYY HH:mm:ss.SSS'),
225
- end: t.endOf('year').format('MM/DD/YYYY HH:mm:ss.SSS'),
281
+ start: t.format(getFormat(format)),
282
+ end: t.endOf('year').format(getFormat(format)),
226
283
  };
284
+ },
285
+ hideQuickPick: function (f) {
286
+ return f == 'time';
227
287
  }
228
288
  },
229
289
  {
230
- label: 'Last 365 Days', createFilter: function (tz) {
290
+ label: 'Last 365 Days', createFilter: function (tz, format) {
231
291
  var offset = moment_timezone_1.default.tz(moment_1.default.utc().startOf('day').subtract(182.5, 'days').format('YYYY-MM-DDTHH:mm:ss.SSSSS'), tz).utcOffset();
232
292
  var t = moment_1.default.utc().add(offset, 'minute').startOf('day');
233
293
  return {
234
- end: t.format('MM/DD/YYYY HH:mm:ss.SSS'),
294
+ end: t.format(getFormat(format)),
235
295
  unit: 'd',
236
296
  duration: 365,
237
297
  };
298
+ },
299
+ hideQuickPick: function (f) {
300
+ return f == 'time';
238
301
  }
239
302
  }
240
303
  ];
@@ -1,7 +1,8 @@
1
1
  import * as React from 'react';
2
2
  import { IStartEnd, IStartDuration, IEndDuration, ICenterDuration, TimeUnit } from './TimeWindowUtils';
3
+ import { DateUnit } from './TimeFilter/QuickSelects';
3
4
  export type ITimeFilter = IStartEnd | IStartDuration | IEndDuration | ICenterDuration;
4
- export declare function getTimeWindow(flt: ITimeFilter): {
5
+ export declare function getTimeWindow(flt: ITimeFilter, format?: string): {
5
6
  center: string;
6
7
  start: string;
7
8
  end: string;
@@ -21,6 +22,7 @@ interface IProps {
21
22
  dateTimeSetting: 'center' | 'startWindow' | 'endWindow' | 'startEnd';
22
23
  timeZone: string;
23
24
  isHorizontal: boolean;
25
+ format?: DateUnit;
24
26
  }
25
27
  declare const TimeFilter: (props: IProps) => React.JSX.Element;
26
28
  export default TimeFilter;
package/lib/TimeFilter.js CHANGED
@@ -67,19 +67,19 @@ var react_forms_1 = require("@gpa-gemstone/react-forms");
67
67
  var TimeWindowUtils_1 = require("./TimeWindowUtils");
68
68
  var QuickSelects_1 = require("./TimeFilter/QuickSelects");
69
69
  // Converts ITimeFilter to an ITimeWindow filter
70
- function getTimeWindow(flt) {
70
+ function getTimeWindow(flt, format) {
71
71
  var _a, _b;
72
72
  var _c, _d, _e;
73
73
  var center, start, end, unit, duration, halfDuration;
74
- if ((0, TimeWindowUtils_1.isCenterDuration)(flt)) {
75
- center = (0, TimeWindowUtils_1.getMoment)(flt.center);
74
+ if ('center' in flt && 'halfDuration' in flt) { // type is ICenterDuration
75
+ center = (0, TimeWindowUtils_1.getMoment)(flt.center, format);
76
76
  _a = (0, TimeWindowUtils_1.getStartEndTime)(center, flt.halfDuration, flt.unit), start = _a[0], end = _a[1];
77
77
  unit = flt.unit;
78
78
  halfDuration = flt.halfDuration;
79
79
  duration = halfDuration * 2;
80
80
  }
81
- else if ((0, TimeWindowUtils_1.isStartDuration)(flt)) {
82
- start = (0, TimeWindowUtils_1.getMoment)(flt.start);
81
+ else if ('start' in flt && 'duration' in flt) { // type is IStartDuration
82
+ start = (0, TimeWindowUtils_1.getMoment)(flt.start, format);
83
83
  var d = moment_1.default.duration(flt.duration / 2.0, flt.unit);
84
84
  center = start.clone().add(d);
85
85
  end = center.clone().add(d);
@@ -87,8 +87,8 @@ function getTimeWindow(flt) {
87
87
  duration = flt.duration,
88
88
  halfDuration = duration / 2.0;
89
89
  }
90
- else if ((0, TimeWindowUtils_1.isEndDuration)(flt)) {
91
- end = (0, TimeWindowUtils_1.getMoment)(flt.end);
90
+ else if ('end' in flt && 'duration' in flt) { // type is IEndDuration
91
+ end = (0, TimeWindowUtils_1.getMoment)(flt.end, format);
92
92
  var d = moment_1.default.duration(flt.duration / 2.0, flt.unit);
93
93
  center = end.clone().subtract(d);
94
94
  start = center.clone().subtract(d);
@@ -96,103 +96,106 @@ function getTimeWindow(flt) {
96
96
  duration = flt.duration,
97
97
  halfDuration = duration / 2.0;
98
98
  }
99
- else if ((0, TimeWindowUtils_1.isStartEnd)(flt)) {
100
- start = (0, TimeWindowUtils_1.getMoment)(flt.start);
101
- end = (0, TimeWindowUtils_1.getMoment)(flt.end);
102
- _b = (0, TimeWindowUtils_1.findAppropriateUnit)(start, (0, TimeWindowUtils_1.getMoment)(flt.end), undefined, true), unit = _b[0], halfDuration = _b[1];
99
+ else if ('start' in flt && 'end' in flt) { // type is IStartEnd
100
+ start = (0, TimeWindowUtils_1.getMoment)(flt.start, format);
101
+ end = (0, TimeWindowUtils_1.getMoment)(flt.end, format);
102
+ _b = (0, TimeWindowUtils_1.findAppropriateUnit)(start, end, undefined, true), unit = _b[0], halfDuration = _b[1];
103
103
  var d = moment_1.default.duration(halfDuration, unit);
104
104
  center = start.clone().add(d);
105
105
  duration = halfDuration * 2;
106
106
  }
107
- return { center: (_c = center === null || center === void 0 ? void 0 : center.format('MM/DD/YYYY HH:mm:ss.SSS')) !== null && _c !== void 0 ? _c : '',
108
- start: (_d = start === null || start === void 0 ? void 0 : start.format('MM/DD/YYYY HH:mm:ss.SSS')) !== null && _d !== void 0 ? _d : '',
109
- end: (_e = end === null || end === void 0 ? void 0 : end.format('MM/DD/YYYY HH:mm:ss.SSS')) !== null && _e !== void 0 ? _e : '',
107
+ return { center: (_c = center === null || center === void 0 ? void 0 : center.format(format)) !== null && _c !== void 0 ? _c : '',
108
+ start: (_d = start === null || start === void 0 ? void 0 : start.format(format)) !== null && _d !== void 0 ? _d : '',
109
+ end: (_e = end === null || end === void 0 ? void 0 : end.format(format)) !== null && _e !== void 0 ? _e : '',
110
110
  unit: unit !== null && unit !== void 0 ? unit : 'ms',
111
111
  duration: duration !== null && duration !== void 0 ? duration : 0,
112
112
  halfDuration: halfDuration !== null && halfDuration !== void 0 ? halfDuration : 0 };
113
113
  }
114
114
  // Returns a row div element with props as children of row
115
115
  function Row(props) {
116
+ var _a;
116
117
  if (props.addRow) {
117
- return React.createElement("div", { className: 'row' }, props.children);
118
+ return React.createElement("div", { className: "row ".concat((_a = props.class) !== null && _a !== void 0 ? _a : '') }, props.children);
118
119
  }
119
120
  return React.createElement(React.Fragment, null, props.children);
120
121
  }
121
122
  var TimeFilter = function (props) {
122
- var _a = React.useState(-1), activeQP = _a[0], setActiveQP = _a[1];
123
- var _b = React.useState(getTimeWindow(props.filter)), filter = _b[0], setFilter = _b[1];
123
+ var _a, _b, _c;
124
+ var format = (0, QuickSelects_1.getFormat)(props.format);
125
+ var QuickSelects = React.useMemo(function () { return QuickSelects_1.AvailableQuickSelects.filter(function (qs) { return !qs.hideQuickPick(props.format); }); }, [props.format]);
126
+ var _d = React.useState(-1), activeQP = _d[0], setActiveQP = _d[1];
127
+ var _e = React.useState(getTimeWindow(props.filter, format)), filter = _e[0], setFilter = _e[1];
124
128
  React.useEffect(function () {
125
- if (isEqual(filter, props.filter))
126
- return;
127
- props.setFilter(filter.center, filter.start, filter.end, filter.unit, filter.duration);
129
+ if (!isEqual(filter, props.filter))
130
+ props.setFilter(filter.center, filter.start, filter.end, filter.unit, filter.duration);
128
131
  }, [filter]);
129
132
  //Checks typing of ITimeFilter and then compares to ITimeWindow
130
133
  function isEqual(flt1, flt2) {
131
- var flt = getTimeWindow(flt2);
134
+ var flt = getTimeWindow(flt2, format);
132
135
  return flt1.center == flt.center &&
133
136
  flt1.unit == flt.unit &&
134
137
  flt1.duration == flt.duration;
135
138
  }
136
139
  React.useEffect(function () {
137
- if (isEqual(filter, props.filter))
138
- return;
139
- var flt = getTimeWindow(props.filter);
140
- setFilter(flt);
140
+ if (!isEqual(filter, props.filter)) {
141
+ var flt = getTimeWindow(props.filter, format);
142
+ setFilter(flt);
143
+ }
141
144
  }, [props.filter]);
142
145
  return (React.createElement("fieldset", { className: "border", style: { padding: '10px', height: '100%' } },
143
146
  React.createElement("legend", { className: "w-auto", style: { fontSize: 'large' } }, "Date/Time Filter:"),
144
147
  React.createElement(Row, { addRow: props.isHorizontal },
145
148
  props.dateTimeSetting === 'center' ?
146
149
  React.createElement(Row, { addRow: !props.isHorizontal },
147
- React.createElement("div", { className: props.isHorizontal ? (props.showQuickSelect ? 'col-4' : 'col-6') : 'col-12' },
150
+ React.createElement("div", { className: props.isHorizontal ? (props.showQuickSelect ? 'col-2' : 'col-6') : 'col-12' },
148
151
  React.createElement(react_forms_1.DatePicker, { Record: filter, Field: "center", Help: "All times are in system time. System time is currently set to ".concat(props.timeZone, ". "), Setter: function (r) {
149
152
  setFilter(function (prevFilter) { return (__assign(__assign({}, prevFilter), { center: r.center, start: r.start, end: r.end })); });
150
153
  setActiveQP(-1);
151
- }, Label: 'Time Window Center:', Type: 'datetime-local', Valid: function () { return true; }, Format: TimeWindowUtils_1.momentDateFormat + ' ' + TimeWindowUtils_1.momentTimeFormat })))
154
+ }, Label: 'Time Window Center:', Type: (_a = props.format) !== null && _a !== void 0 ? _a : 'datetime-local', Valid: function () { return true; }, Format: format })))
152
155
  : null,
153
156
  props.dateTimeSetting === 'startWindow' || props.dateTimeSetting === 'startEnd' ?
154
157
  React.createElement(Row, { addRow: !props.isHorizontal },
155
- React.createElement("div", { className: props.isHorizontal ? (props.showQuickSelect ? 'col-4' : 'col-6') : 'col-12' },
158
+ React.createElement("div", { className: props.isHorizontal ? (props.showQuickSelect ? 'col-2' : 'col-6') : 'col-12' },
156
159
  React.createElement(react_forms_1.DatePicker, { Record: filter, Field: "start", Help: "All times are in system time. System time is currently set to ".concat(props.timeZone, ". "), Setter: function (r) {
157
160
  var _a;
158
161
  var halfDur = filter.halfDuration;
159
162
  var unit = filter.unit;
160
163
  if (props.dateTimeSetting === 'startEnd') {
161
- _a = (0, TimeWindowUtils_1.findAppropriateUnit)((0, TimeWindowUtils_1.getMoment)(r.start), (0, TimeWindowUtils_1.getMoment)(filter.end), undefined, true), unit = _a[0], halfDur = _a[1];
164
+ _a = (0, TimeWindowUtils_1.findAppropriateUnit)((0, TimeWindowUtils_1.getMoment)(r.start, format), (0, TimeWindowUtils_1.getMoment)(filter.end, format), undefined, true), unit = _a[0], halfDur = _a[1];
162
165
  }
163
- var flt = getTimeWindow({ start: r.start, duration: halfDur * 2, unit: unit });
166
+ var flt = getTimeWindow({ start: r.start, duration: halfDur * 2, unit: unit }, format);
164
167
  setFilter(flt);
165
168
  setActiveQP(-1);
166
- }, Label: 'Start of Time Window:', Type: 'datetime-local', Valid: function () { return true; }, Format: TimeWindowUtils_1.momentDateFormat + ' ' + TimeWindowUtils_1.momentTimeFormat })))
169
+ }, Label: 'Start of Time Window:', Type: (_b = props.format) !== null && _b !== void 0 ? _b : 'datetime-local', Valid: function () { return true; }, Format: format })))
167
170
  : null,
168
171
  props.dateTimeSetting === 'endWindow' || props.dateTimeSetting === 'startEnd' ?
169
172
  React.createElement(Row, { addRow: !props.isHorizontal },
170
- React.createElement("div", { className: props.isHorizontal ? (props.showQuickSelect ? 'col-4' : 'col-6') : 'col-12' },
173
+ React.createElement("div", { className: props.isHorizontal ? (props.showQuickSelect ? 'col-2' : 'col-6') : 'col-12' },
171
174
  React.createElement(react_forms_1.DatePicker, { Record: filter, Field: "end", Help: "All times are in system time. System time is currently set to ".concat(props.timeZone, ". "), Setter: function (r) {
172
175
  var _a;
173
176
  var halfDur = filter.halfDuration;
174
177
  var unit = filter.unit;
175
178
  if (props.dateTimeSetting === 'startEnd') {
176
- _a = (0, TimeWindowUtils_1.findAppropriateUnit)((0, TimeWindowUtils_1.getMoment)(filter.start), (0, TimeWindowUtils_1.getMoment)(r.end), undefined, true), unit = _a[0], halfDur = _a[1];
179
+ _a = (0, TimeWindowUtils_1.findAppropriateUnit)((0, TimeWindowUtils_1.getMoment)(filter.start, format), (0, TimeWindowUtils_1.getMoment)(r.end, format), undefined, true), unit = _a[0], halfDur = _a[1];
177
180
  }
178
- var flt = getTimeWindow({ end: r.end, duration: halfDur * 2, unit: unit });
181
+ var flt = getTimeWindow({ end: r.end, duration: halfDur * 2, unit: unit }, format);
179
182
  setFilter(flt);
180
183
  setActiveQP(-1);
181
- }, Label: 'End of Time Window :', Type: 'datetime-local', Valid: function () { return true; }, Format: TimeWindowUtils_1.momentDateFormat + ' ' + TimeWindowUtils_1.momentTimeFormat })))
184
+ }, Label: 'End of Time Window :', Type: (_c = props.format) !== null && _c !== void 0 ? _c : 'datetime-local', Valid: function () { return true; }, Format: format })))
182
185
  : null,
183
186
  props.dateTimeSetting === 'center' ?
184
187
  React.createElement(React.Fragment, null,
185
188
  React.createElement("label", { style: { width: '100%', position: 'relative', float: "left" } }, "Time Window(+/-): "),
186
189
  React.createElement(Row, { addRow: !props.isHorizontal },
187
- React.createElement("div", { className: props.isHorizontal ? (props.showQuickSelect ? 'col-2' : 'col-3') : 'col-6' },
190
+ React.createElement("div", { className: props.isHorizontal ? (props.showQuickSelect ? 'col-1' : 'col-3') : 'col-6' },
188
191
  React.createElement(react_forms_1.Input, { Record: filter, Field: 'halfDuration', Setter: function (r) {
189
- var flt = getTimeWindow({ center: filter.center, halfDuration: r.halfDuration, unit: filter.unit });
192
+ var flt = getTimeWindow({ center: filter.center, halfDuration: r.halfDuration, unit: filter.unit }, format);
190
193
  setFilter(function (prevFilter) { return (__assign(__assign({}, prevFilter), { duration: r.duration, halfDuration: r.halfDuration, start: flt.start, end: flt.end })); });
191
194
  setActiveQP(-1);
192
195
  }, Label: '', Valid: function () { return true; }, Type: 'number' })),
193
- React.createElement("div", { className: props.isHorizontal ? (props.showQuickSelect ? 'col-2' : 'col-3') : 'col-6' },
196
+ React.createElement("div", { className: props.isHorizontal ? (props.showQuickSelect ? 'col-1' : 'col-3') : 'col-6' },
194
197
  React.createElement(react_forms_1.Select, { Record: filter, Label: '', Field: 'unit', Setter: function (r) {
195
- var flt = getTimeWindow({ center: filter.center, halfDuration: filter.halfDuration, unit: r.unit });
198
+ var flt = getTimeWindow({ center: filter.center, halfDuration: filter.halfDuration, unit: r.unit }, format);
196
199
  setFilter(function (prevFilter) { return (__assign(__assign({}, prevFilter), { unit: r.unit, start: flt.start, end: flt.end })); });
197
200
  setActiveQP(-1);
198
201
  }, Options: TimeWindowUtils_1.units.map(function (unit) { return ({
@@ -204,15 +207,15 @@ var TimeFilter = function (props) {
204
207
  React.createElement(React.Fragment, null,
205
208
  React.createElement("label", { style: { width: '100%', position: 'relative', float: "left" } }, "Time Window(+): "),
206
209
  React.createElement(Row, { addRow: !props.isHorizontal },
207
- React.createElement("div", { className: props.isHorizontal ? (props.showQuickSelect ? 'col-2' : 'col-3') : 'col-6' },
210
+ React.createElement("div", { className: props.isHorizontal ? (props.showQuickSelect ? 'col-1' : 'col-3') : 'col-6' },
208
211
  React.createElement(react_forms_1.Input, { Record: filter, Field: 'duration', Setter: function (r) {
209
- var flt = getTimeWindow({ start: filter.start, duration: r.duration, unit: filter.unit });
212
+ var flt = getTimeWindow({ start: filter.start, duration: r.duration, unit: filter.unit }, format);
210
213
  setFilter(function (prevFilter) { return (__assign(__assign({}, prevFilter), { duration: r.duration, halfDuration: r.halfDuration, center: flt.center, end: flt.end })); });
211
214
  setActiveQP(-1);
212
215
  }, Label: '', Valid: function () { return true; }, Type: 'number' })),
213
- React.createElement("div", { className: props.isHorizontal ? (props.showQuickSelect ? 'col-2' : 'col-3') : 'col-6' },
216
+ React.createElement("div", { className: props.isHorizontal ? (props.showQuickSelect ? 'col-1' : 'col-3') : 'col-6' },
214
217
  React.createElement(react_forms_1.Select, { Record: filter, Label: '', Field: 'unit', Setter: function (r) {
215
- var flt = getTimeWindow({ start: filter.start, duration: filter.duration, unit: r.unit });
218
+ var flt = getTimeWindow({ start: filter.start, duration: filter.duration, unit: r.unit }, format);
216
219
  setFilter(function (prevFilter) { return (__assign(__assign({}, prevFilter), { unit: r.unit, center: flt.center, end: flt.end })); });
217
220
  setActiveQP(-1);
218
221
  }, Options: TimeWindowUtils_1.units.map(function (unit) { return ({
@@ -224,15 +227,15 @@ var TimeFilter = function (props) {
224
227
  React.createElement(React.Fragment, null,
225
228
  React.createElement("label", { style: { width: '100%', position: 'relative', float: "left" } }, "Time Window(-): "),
226
229
  React.createElement(Row, { addRow: !props.isHorizontal },
227
- React.createElement("div", { className: props.isHorizontal ? (props.showQuickSelect ? 'col-2' : 'col-3') : 'col-6' },
230
+ React.createElement("div", { className: props.isHorizontal ? (props.showQuickSelect ? 'col-1' : 'col-3') : 'col-6' },
228
231
  React.createElement(react_forms_1.Input, { Record: filter, Field: 'duration', Setter: function (r) {
229
- var flt = getTimeWindow({ end: filter.end, duration: r.duration, unit: filter.unit });
232
+ var flt = getTimeWindow({ end: filter.end, duration: r.duration, unit: filter.unit }, format);
230
233
  setFilter(function (prevFilter) { return (__assign(__assign({}, prevFilter), { duration: r.duration, halfDuration: r.halfDuration, center: flt.center, start: flt.start })); });
231
234
  setActiveQP(-1);
232
235
  }, Label: '', Valid: function () { return true; }, Type: 'number' })),
233
- React.createElement("div", { className: props.isHorizontal ? (props.showQuickSelect ? 'col-2' : 'col-3') : 'col-6' },
236
+ React.createElement("div", { className: props.isHorizontal ? (props.showQuickSelect ? 'col-1' : 'col-3') : 'col-6' },
234
237
  React.createElement(react_forms_1.Select, { Record: filter, Label: '', Field: 'unit', Setter: function (r) {
235
- var flt = getTimeWindow({ end: filter.end, duration: filter.duration, unit: r.unit });
238
+ var flt = getTimeWindow({ end: filter.end, duration: filter.duration, unit: r.unit }, format);
236
239
  setFilter(function (prevFilter) { return (__assign(__assign({}, prevFilter), { unit: r.unit, center: flt.center, start: flt.start })); });
237
240
  setActiveQP(-1);
238
241
  }, Options: TimeWindowUtils_1.units.map(function (unit) { return ({
@@ -241,29 +244,29 @@ var TimeFilter = function (props) {
241
244
  }); }) }))))
242
245
  : null,
243
246
  props.showQuickSelect ?
244
- React.createElement("div", { className: props.isHorizontal ? 'col-4' : 'row' },
245
- React.createElement(Row, { addRow: props.isHorizontal }, QuickSelects_1.AvailableQuickSelects.map(function (qs, i) {
247
+ React.createElement("div", { className: props.isHorizontal ? 'col-8' : 'row' },
248
+ React.createElement(Row, { addRow: props.isHorizontal, class: "justify-content-center" }, QuickSelects.map(function (qs, i) {
246
249
  if (i % 3 !== 0)
247
250
  return null;
248
- return (React.createElement("div", { key: i, className: "col-4", style: { paddingLeft: (props.isHorizontal ? 0 : (i % 9 == 0 ? 15 : 0)), paddingRight: (props.isHorizontal ? 2 : ((i % 18 == 6 || i % 18 == 15) ? 15 : 2)), marginTop: 10 } },
251
+ return (React.createElement("div", { key: i, className: props.isHorizontal ? 'col-2' : "col-4", style: { paddingLeft: (props.isHorizontal ? 0 : (i % 9 == 0 ? 15 : 0)), paddingRight: (props.isHorizontal ? 2 : ((i % 18 == 6 || i % 18 == 15) ? 15 : 2)), marginTop: 10 } },
249
252
  React.createElement("ul", { className: "list-group", key: i },
250
253
  React.createElement("li", { key: i, style: { cursor: 'pointer' }, onClick: function () {
251
- var flt = getTimeWindow(QuickSelects_1.AvailableQuickSelects[i].createFilter(props.timeZone));
254
+ var flt = getTimeWindow(QuickSelects[i].createFilter(props.timeZone, props.format), format);
252
255
  props.setFilter(flt.center, flt.start, flt.end, flt.unit, flt.duration);
253
256
  setActiveQP(i);
254
- }, className: "item badge badge-" + (i == activeQP ? "primary" : "secondary") }, QuickSelects_1.AvailableQuickSelects[i].label),
255
- i + 1 < QuickSelects_1.AvailableQuickSelects.length ?
257
+ }, className: "item badge badge-" + (i == activeQP ? "primary" : "secondary") }, QuickSelects[i].label),
258
+ i + 1 < QuickSelects.length ?
256
259
  React.createElement("li", { key: i + 1, style: { marginTop: 3, cursor: 'pointer' }, className: "item badge badge-" + (i + 1 == activeQP ? "primary" : "secondary"), onClick: function () {
257
- var flt = getTimeWindow(QuickSelects_1.AvailableQuickSelects[i + 1].createFilter(props.timeZone));
260
+ var flt = getTimeWindow(QuickSelects[i + 1].createFilter(props.timeZone, props.format), format);
258
261
  props.setFilter(flt.center, flt.start, flt.end, flt.unit, flt.duration);
259
262
  setActiveQP(i + 1);
260
- } }, QuickSelects_1.AvailableQuickSelects[i + 1].label) : null,
261
- i + 2 < QuickSelects_1.AvailableQuickSelects.length ?
263
+ } }, QuickSelects[i + 1].label) : null,
264
+ i + 2 < QuickSelects.length ?
262
265
  React.createElement("li", { key: i + 2, style: { marginTop: 3, cursor: 'pointer' }, className: "item badge badge-" + (i + 2 == activeQP ? "primary" : "secondary"), onClick: function () {
263
- var flt = getTimeWindow(QuickSelects_1.AvailableQuickSelects[i + 2].createFilter(props.timeZone));
266
+ var flt = getTimeWindow(QuickSelects[i + 2].createFilter(props.timeZone, props.format), format);
264
267
  props.setFilter(flt.center, flt.start, flt.end, flt.unit, flt.duration);
265
268
  setActiveQP(i + 2);
266
- } }, QuickSelects_1.AvailableQuickSelects[i + 2].label) : null)));
269
+ } }, QuickSelects[i + 2].label) : null)));
267
270
  })))
268
271
  : null)));
269
272
  };
@@ -1,5 +1,4 @@
1
1
  import moment from 'moment';
2
- import { ITimeFilter } from './TimeFilter';
3
2
  export interface IStartEnd {
4
3
  start: string;
5
4
  end: string;
@@ -21,13 +20,7 @@ export interface ICenterDuration {
21
20
  }
22
21
  export type TimeUnit = 'y' | 'M' | 'w' | 'd' | 'h' | 'm' | 's' | 'ms';
23
22
  export declare const units: TimeUnit[];
24
- export declare const momentDateFormat = "MM/DD/YYYY";
25
- export declare const momentTimeFormat = "HH:mm:ss.SSS";
26
- export declare const isStartEnd: (filter: ITimeFilter) => filter is IStartEnd;
27
- export declare const isStartDuration: (filter: ITimeFilter) => filter is IStartDuration;
28
- export declare const isEndDuration: (filter: ITimeFilter) => filter is IEndDuration;
29
- export declare const isCenterDuration: (filter: ITimeFilter) => filter is ICenterDuration;
30
23
  export declare function findAppropriateUnit(startTime: moment.Moment, endTime: moment.Moment, unit?: TimeUnit, useHalfWindow?: boolean): [TimeUnit, number];
31
24
  export declare function getStartEndTime(center: moment.Moment, duration: number, unit: TimeUnit): [moment.Moment, moment.Moment];
32
- export declare function getMoment(date: string, time?: string): moment.Moment;
25
+ export declare function getMoment(date: string, format?: string, time?: string): moment.Moment;
33
26
  export declare function readableUnit(unit: TimeUnit): "Year(s)" | "Month(s)" | "Week(s)" | "Day(s)" | "Hour(s)" | "Minute(s)" | "Second(s)" | "Millisecond(s)";
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.isCenterDuration = exports.isEndDuration = exports.isStartDuration = exports.isStartEnd = exports.momentTimeFormat = exports.momentDateFormat = exports.units = void 0;
6
+ exports.units = void 0;
7
7
  exports.findAppropriateUnit = findAppropriateUnit;
8
8
  exports.getStartEndTime = getStartEndTime;
9
9
  exports.getMoment = getMoment;
@@ -33,17 +33,6 @@ exports.readableUnit = readableUnit;
33
33
  //******************************************************************************************************
34
34
  var moment_1 = __importDefault(require("moment"));
35
35
  exports.units = ['ms', 's', 'm', 'h', 'd', 'w', 'M', 'y'];
36
- exports.momentDateFormat = "MM/DD/YYYY";
37
- exports.momentTimeFormat = "HH:mm:ss.SSS"; // Also is the gemstone format
38
- // Takes ITimeFilter as input and returns type
39
- var isStartEnd = function (filter) { return 'start' in filter && 'end' in filter; };
40
- exports.isStartEnd = isStartEnd;
41
- var isStartDuration = function (filter) { return 'start' in filter && 'duration' in filter; };
42
- exports.isStartDuration = isStartDuration;
43
- var isEndDuration = function (filter) { return 'end' in filter && 'duration' in filter; };
44
- exports.isEndDuration = isEndDuration;
45
- var isCenterDuration = function (filter) { return 'center' in filter && 'halfDuration' in filter; };
46
- exports.isCenterDuration = isCenterDuration;
47
36
  /*
48
37
  * A Function to determine the most appropriate unit for a window of time specified by start and end time
49
38
  */
@@ -87,9 +76,9 @@ function getStartEndTime(center, duration, unit) {
87
76
  /*
88
77
  * Returns a formatted version of date and time provided
89
78
  */
90
- function getMoment(date, time) {
79
+ function getMoment(date, format, time) {
91
80
  if (time === undefined)
92
- return (0, moment_1.default)(date, 'MM/DD/YYYY HH:mm:ss.SSS');
81
+ return (0, moment_1.default)(date, format !== null && format !== void 0 ? format : 'MM/DD/YYYY HH:mm:ss.SSS');
93
82
  return (0, moment_1.default)(date + ' ' + time, 'MM/DD/YYYY HH:mm:ss.SSS');
94
83
  }
95
84
  /*
package/lib/index.d.ts CHANGED
@@ -10,4 +10,5 @@ import { DefaultSelects } from './SelectionPopup';
10
10
  import ErrorBoundary from './ErrorBoundary';
11
11
  import TimeFilter from './TimeFilter';
12
12
  import EventTypeFilter from './EventTypeFilter';
13
- export { EventTypeFilter, Setting, TimeFilter, Note, ValueList, ByValueList, User, ByUser, DefaultSearch, SelectPopup, DefaultSelects, ErrorBoundary };
13
+ import EventCharacteristicFilter from './EventCharacteristicFilter';
14
+ export { TimeFilter, EventTypeFilter, EventCharacteristicFilter, Setting, Note, ValueList, ByValueList, User, ByUser, DefaultSearch, SelectPopup, DefaultSelects, ErrorBoundary };
package/lib/index.js CHANGED
@@ -25,7 +25,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
25
25
  return (mod && mod.__esModule) ? mod : { "default": mod };
26
26
  };
27
27
  Object.defineProperty(exports, "__esModule", { value: true });
28
- exports.ErrorBoundary = exports.DefaultSelects = exports.SelectPopup = exports.DefaultSearch = exports.ByUser = exports.User = exports.ByValueList = exports.ValueList = exports.Note = exports.TimeFilter = exports.Setting = exports.EventTypeFilter = void 0;
28
+ exports.ErrorBoundary = exports.DefaultSelects = exports.SelectPopup = exports.DefaultSearch = exports.ByUser = exports.User = exports.ByValueList = exports.ValueList = exports.Note = exports.Setting = exports.EventCharacteristicFilter = exports.EventTypeFilter = exports.TimeFilter = void 0;
29
29
  var Setting_1 = __importDefault(require("./Setting"));
30
30
  exports.Setting = Setting_1.default;
31
31
  var Note_1 = __importDefault(require("./Note"));
@@ -50,3 +50,5 @@ var TimeFilter_1 = __importDefault(require("./TimeFilter"));
50
50
  exports.TimeFilter = TimeFilter_1.default;
51
51
  var EventTypeFilter_1 = __importDefault(require("./EventTypeFilter"));
52
52
  exports.EventTypeFilter = EventTypeFilter_1.default;
53
+ var EventCharacteristicFilter_1 = __importDefault(require("./EventCharacteristicFilter"));
54
+ exports.EventCharacteristicFilter = EventCharacteristicFilter_1.default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gpa-gemstone/common-pages",
3
- "version": "0.0.109",
3
+ "version": "0.0.110",
4
4
  "description": "Common UI pages for GPA products",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -47,8 +47,8 @@
47
47
  "@gpa-gemstone/application-typings": "0.0.72",
48
48
  "@gpa-gemstone/gpa-symbols": "0.0.38",
49
49
  "@gpa-gemstone/helper-functions": "0.0.32",
50
- "@gpa-gemstone/react-forms": "1.1.64",
51
- "@gpa-gemstone/react-interactive": "1.0.123",
50
+ "@gpa-gemstone/react-forms": "1.1.65",
51
+ "@gpa-gemstone/react-interactive": "1.0.124",
52
52
  "@gpa-gemstone/react-table": "1.2.48",
53
53
  "@reduxjs/toolkit": "1.8.3",
54
54
  "crypto-js": "4.0.0",