@gpa-gemstone/common-pages 0.0.182 → 0.0.184
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/lib/Gemstone/Hooks/useSearchData.d.ts +21 -0
- package/lib/Gemstone/Hooks/useSearchData.js +111 -0
- package/lib/HeartBeatCheck.d.ts +20 -0
- package/lib/HeartBeatCheck.js +82 -0
- package/lib/SearchBar.js +24 -6
- package/lib/TimeFilter/QuickSelects.d.ts +1 -2
- package/lib/TimeFilter/QuickSelects.js +3 -15
- package/lib/TimeFilter/StartEndFilter/DateFilter.js +2 -3
- package/lib/TimeFilter/StartEndFilter/DateTimeLocalFilter.js +5 -4
- package/lib/TimeFilter/StartEndFilter/TimeFilter.js +2 -2
- package/lib/TimeFilter/WindowFilter/WindowFilter.js +3 -4
- package/lib/TimeFilter/WindowFilter/WindowForm.js +1 -1
- package/lib/index.d.ts +3 -1
- package/lib/index.js +5 -1
- package/package.json +7 -7
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Application } from '@gpa-gemstone/application-typings';
|
|
2
|
+
import { Search } from '@gpa-gemstone/react-interactive';
|
|
3
|
+
import { Gemstone } from '../Gemstone';
|
|
4
|
+
/**
|
|
5
|
+
* Custom hook to fetch and paginate searchable data from a read-only controller endpoint.
|
|
6
|
+
* @typeParam T - The type of the records being searched.
|
|
7
|
+
* @param page - The current page number to fetch.
|
|
8
|
+
* @param sortField - The field to sort the results by.
|
|
9
|
+
* @param searchFilter - The search filters to apply to the query.
|
|
10
|
+
* @param ascending - Whether the results should be sorted in ascending order.
|
|
11
|
+
* @param controllerPath - The path to the read-only controller endpoint.
|
|
12
|
+
* @param ReFetchDataCounter - Optional counter that triggers a re-fetch whenever its value changes.
|
|
13
|
+
* @returns An object containing the search results, the search status, the pagination status and the pagination info.
|
|
14
|
+
*/
|
|
15
|
+
declare const useSearchData: <T>(page: number, sortField: keyof T, searchFilter: Search.IFilter<T>[], ascending: boolean, controllerPath: string, ReFetchDataCounter?: number) => {
|
|
16
|
+
SearchResults: T[];
|
|
17
|
+
SearchStatus: Application.Types.Status;
|
|
18
|
+
PaginationStatus: Application.Types.Status;
|
|
19
|
+
PageInfo: Gemstone.Types.IPageInfo;
|
|
20
|
+
};
|
|
21
|
+
export default useSearchData;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
//******************************************************************************************************
|
|
3
|
+
// useSearchData.tsx - Gbtc
|
|
4
|
+
//
|
|
5
|
+
// Copyright (c) 2024, Grid Protection Alliance. All Rights Reserved.
|
|
6
|
+
//
|
|
7
|
+
// Licensed to the Grid Protection Alliance (GPA) under one or more contributor license agreements. See
|
|
8
|
+
// the NOTICE file distributed with this work for additional information regarding copyright ownership.
|
|
9
|
+
// The GPA may license this file to you under the MIT License (MIT), the "License"; you may not use this
|
|
10
|
+
// file except in compliance with the License. You may obtain a copy of the License at:
|
|
11
|
+
//
|
|
12
|
+
// http://opensource.org/licenses/MIT
|
|
13
|
+
//
|
|
14
|
+
// Unless agreed to in writing, the subject software distributed under the License is distributed on an
|
|
15
|
+
// "AS-IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. Refer to the
|
|
16
|
+
// License for the specific language governing permissions and limitations.
|
|
17
|
+
//
|
|
18
|
+
// Code Modification History:
|
|
19
|
+
// ----------------------------------------------------------------------------------------------------
|
|
20
|
+
// 03/24/2025 - Preston Crawford
|
|
21
|
+
// Generated original version of source code.
|
|
22
|
+
//
|
|
23
|
+
//******************************************************************************************************
|
|
24
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
25
|
+
if (k2 === undefined) k2 = k;
|
|
26
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
27
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
28
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
29
|
+
}
|
|
30
|
+
Object.defineProperty(o, k2, desc);
|
|
31
|
+
}) : (function(o, m, k, k2) {
|
|
32
|
+
if (k2 === undefined) k2 = k;
|
|
33
|
+
o[k2] = m[k];
|
|
34
|
+
}));
|
|
35
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
36
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
37
|
+
}) : function(o, v) {
|
|
38
|
+
o["default"] = v;
|
|
39
|
+
});
|
|
40
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
41
|
+
if (mod && mod.__esModule) return mod;
|
|
42
|
+
var result = {};
|
|
43
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
44
|
+
__setModuleDefault(result, mod);
|
|
45
|
+
return result;
|
|
46
|
+
};
|
|
47
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
+
var React = __importStar(require("react"));
|
|
49
|
+
var ControllerFunctions_1 = require("../ControllerFunctions");
|
|
50
|
+
var Gemstone_1 = require("../Gemstone");
|
|
51
|
+
/**
|
|
52
|
+
* Custom hook to fetch and paginate searchable data from a read-only controller endpoint.
|
|
53
|
+
* @typeParam T - The type of the records being searched.
|
|
54
|
+
* @param page - The current page number to fetch.
|
|
55
|
+
* @param sortField - The field to sort the results by.
|
|
56
|
+
* @param searchFilter - The search filters to apply to the query.
|
|
57
|
+
* @param ascending - Whether the results should be sorted in ascending order.
|
|
58
|
+
* @param controllerPath - The path to the read-only controller endpoint.
|
|
59
|
+
* @param ReFetchDataCounter - Optional counter that triggers a re-fetch whenever its value changes.
|
|
60
|
+
* @returns An object containing the search results, the search status, the pagination status and the pagination info.
|
|
61
|
+
*/
|
|
62
|
+
var useSearchData = function (page, sortField, searchFilter, ascending, controllerPath, ReFetchDataCounter) {
|
|
63
|
+
var fetchHandle = React.useRef(null);
|
|
64
|
+
var paginationHandle = React.useRef(null);
|
|
65
|
+
var _a = React.useState([]), results = _a[0], setResults = _a[1];
|
|
66
|
+
var _b = React.useState('uninitiated'), searchStatus = _b[0], setSearchStatus = _b[1];
|
|
67
|
+
var _c = React.useState('uninitiated'), paginationStatus = _c[0], setPaginationStatus = _c[1];
|
|
68
|
+
var _d = React.useState({
|
|
69
|
+
TotalCount: 0,
|
|
70
|
+
PageCount: 0,
|
|
71
|
+
PageSize: 0
|
|
72
|
+
}), pageInfo = _d[0], setPageInfo = _d[1];
|
|
73
|
+
var Queries = React.useMemo(function () { return new ControllerFunctions_1.ReadOnlyControllerFunctions(controllerPath); }, [controllerPath]);
|
|
74
|
+
var stringifiedFilter = React.useMemo(function () { return JSON.stringify(searchFilter); }, [searchFilter]);
|
|
75
|
+
// Memoize the searchFilter to avoid unnecessary re-fetches.
|
|
76
|
+
var memoizedSearchFilter = React.useMemo(function () { return Gemstone_1.Gemstone.HelperFunctions.getSearchFilter(JSON.parse(stringifiedFilter)); }, [stringifiedFilter]);
|
|
77
|
+
var reFetchData = React.useCallback(function () {
|
|
78
|
+
setSearchStatus('loading');
|
|
79
|
+
setPaginationStatus('loading');
|
|
80
|
+
fetchHandle.current = Queries.SearchPage(page, sortField, ascending, memoizedSearchFilter).done(function (data) {
|
|
81
|
+
setResults(data);
|
|
82
|
+
setSearchStatus('idle');
|
|
83
|
+
}).fail(function () { return setSearchStatus('error'); });
|
|
84
|
+
paginationHandle.current = Queries.GetPageInfo(memoizedSearchFilter).done(function (d) {
|
|
85
|
+
setPageInfo(d);
|
|
86
|
+
setPaginationStatus('idle');
|
|
87
|
+
}).fail(function () { return setPaginationStatus('error'); });
|
|
88
|
+
var cleanup = function () {
|
|
89
|
+
var _a, _b;
|
|
90
|
+
if (((_a = fetchHandle.current) === null || _a === void 0 ? void 0 : _a.abort) != null)
|
|
91
|
+
fetchHandle.current.abort();
|
|
92
|
+
if (((_b = paginationHandle.current) === null || _b === void 0 ? void 0 : _b.abort) != null)
|
|
93
|
+
paginationHandle.current.abort();
|
|
94
|
+
};
|
|
95
|
+
return {
|
|
96
|
+
fetchHandle: fetchHandle.current,
|
|
97
|
+
cleanup: cleanup
|
|
98
|
+
};
|
|
99
|
+
}, [Queries, page, sortField, ascending, memoizedSearchFilter]);
|
|
100
|
+
React.useEffect(function () {
|
|
101
|
+
var cleanup = reFetchData().cleanup;
|
|
102
|
+
return cleanup;
|
|
103
|
+
}, [reFetchData, ReFetchDataCounter]);
|
|
104
|
+
return {
|
|
105
|
+
SearchResults: results,
|
|
106
|
+
SearchStatus: searchStatus,
|
|
107
|
+
PaginationStatus: paginationStatus,
|
|
108
|
+
PageInfo: pageInfo
|
|
109
|
+
};
|
|
110
|
+
};
|
|
111
|
+
exports.default = useSearchData;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Gemstone } from '@gpa-gemstone/application-typings';
|
|
2
|
+
interface IProps {
|
|
3
|
+
/**
|
|
4
|
+
* Function invoked on each interval to check whether the application can still
|
|
5
|
+
* reach the server. Should return an AbortablePromise that resolves when the
|
|
6
|
+
* server is reachable and rejects when it is not.
|
|
7
|
+
* */
|
|
8
|
+
HeartBeat: () => Gemstone.TSX.Interfaces.AbortablePromise<unknown>;
|
|
9
|
+
/**
|
|
10
|
+
* Interval, in milliseconds, between successive HeartBeat checks
|
|
11
|
+
* */
|
|
12
|
+
IntervalMS: number;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Periodically calls HeartBeat to verify connectivity to the server and, when a
|
|
16
|
+
* check fails, displays a blocking modal indicating the application is trying to
|
|
17
|
+
* reconnect. Renders nothing while the server is reachable.
|
|
18
|
+
*/
|
|
19
|
+
declare const HeartBeatCheck: (props: IProps) => JSX.Element | null;
|
|
20
|
+
export default HeartBeatCheck;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
//******************************************************************************************************
|
|
27
|
+
// HeartBeatCheck.tsx - Gbtc
|
|
28
|
+
//
|
|
29
|
+
// Copyright (c) 2024, Grid Protection Alliance. All Rights Reserved.
|
|
30
|
+
//
|
|
31
|
+
// Licensed to the Grid Protection Alliance (GPA) under one or more contributor license agreements. See
|
|
32
|
+
// the NOTICE file distributed with this work for additional information regarding copyright ownership.
|
|
33
|
+
// The GPA may license this file to you under the MIT License (MIT), the "License"; you may not use this
|
|
34
|
+
// file except in compliance with the License. You may obtain a copy of the License at:
|
|
35
|
+
//
|
|
36
|
+
// http://opensource.org/licenses/MIT
|
|
37
|
+
//
|
|
38
|
+
// Unless agreed to in writing, the subject software distributed under the License is distributed on an
|
|
39
|
+
// "AS-IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. Refer to the
|
|
40
|
+
// License for the specific language governing permissions and limitations.
|
|
41
|
+
//
|
|
42
|
+
// Code Modification History:
|
|
43
|
+
// ----------------------------------------------------------------------------------------------------
|
|
44
|
+
// 06/26/2026 - Preston Crawford
|
|
45
|
+
// Generated original version of source code.
|
|
46
|
+
//
|
|
47
|
+
//******************************************************************************************************
|
|
48
|
+
var React = __importStar(require("react"));
|
|
49
|
+
var react_interactive_1 = require("@gpa-gemstone/react-interactive");
|
|
50
|
+
/**
|
|
51
|
+
* Periodically calls HeartBeat to verify connectivity to the server and, when a
|
|
52
|
+
* check fails, displays a blocking modal indicating the application is trying to
|
|
53
|
+
* reconnect. Renders nothing while the server is reachable.
|
|
54
|
+
*/
|
|
55
|
+
var HeartBeatCheck = function (props) {
|
|
56
|
+
var _a = React.useState(false), showError = _a[0], setShowError = _a[1];
|
|
57
|
+
//Effect to call heartbeat on consumer defined interval
|
|
58
|
+
React.useEffect(function () {
|
|
59
|
+
var updateServiceStatus = null;
|
|
60
|
+
var checkServiceStatus = function () {
|
|
61
|
+
updateServiceStatus = props.HeartBeat();
|
|
62
|
+
updateServiceStatus.then(function () {
|
|
63
|
+
setShowError(false);
|
|
64
|
+
}, function () {
|
|
65
|
+
setShowError(true);
|
|
66
|
+
});
|
|
67
|
+
};
|
|
68
|
+
checkServiceStatus();
|
|
69
|
+
var interval = setInterval(checkServiceStatus, props.IntervalMS);
|
|
70
|
+
return function () {
|
|
71
|
+
clearInterval(interval);
|
|
72
|
+
if ((updateServiceStatus === null || updateServiceStatus === void 0 ? void 0 : updateServiceStatus.abort) != null)
|
|
73
|
+
updateServiceStatus.abort();
|
|
74
|
+
};
|
|
75
|
+
}, [props.HeartBeat, props.IntervalMS]);
|
|
76
|
+
if (!showError)
|
|
77
|
+
return null;
|
|
78
|
+
return (React.createElement(react_interactive_1.Modal, { Show: true, Title: "Error Communicating with Application", Size: 'sm', ShowCancel: false, ShowConfirm: false, ShowX: false, CallBack: function () { } },
|
|
79
|
+
React.createElement("p", null, " The application is trying to reconnect to the server..."),
|
|
80
|
+
React.createElement(react_interactive_1.LoadingIcon, { Show: true })));
|
|
81
|
+
};
|
|
82
|
+
exports.default = HeartBeatCheck;
|
package/lib/SearchBar.js
CHANGED
|
@@ -81,6 +81,9 @@ var DefaultSearch;
|
|
|
81
81
|
var sortField = (0, react_redux_1.useSelector)(props.Slice.SortField);
|
|
82
82
|
var ascending = (0, react_redux_1.useSelector)(props.Slice.Ascending);
|
|
83
83
|
var data = (0, react_redux_1.useSelector)(props.Slice.SearchResults);
|
|
84
|
+
var FilterEqualityOverride = React.useCallback(function (a, b) {
|
|
85
|
+
return searchStatus === 'uninitiated' ? false : (0, react_interactive_1.IsSearchBarFiltersEqual)(a, b);
|
|
86
|
+
}, [searchStatus]);
|
|
84
87
|
React.useEffect(function () {
|
|
85
88
|
return props.GetAddlFields(setAddlFieldCols);
|
|
86
89
|
}, []);
|
|
@@ -88,7 +91,7 @@ var DefaultSearch;
|
|
|
88
91
|
return dispatch(props.Slice.DBSearch({ filter: (addlFilters == null ? filters : __spreadArray(__spreadArray([], filters, true), addlFilters, true)), sortField: sortField, ascending: ascending }));
|
|
89
92
|
}, [sortField, ascending, addlFilters, props.Slice]);
|
|
90
93
|
var standardSearch = { label: 'Name', key: 'Name', type: 'string', isPivotField: false };
|
|
91
|
-
return React.createElement(react_interactive_1.SearchBar, { CollumnList: __spreadArray(__spreadArray([], defaultSearchcols, true), addlFieldCols, true), SetFilter: setFilters, Direction: 'left', defaultCollumn: standardSearch, Width: '50%', Label: 'Search', ShowLoading: searchStatus === 'loading', ResultNote: searchStatus === 'error' ? 'Could not complete Search' : 'Found ' + data.length + ' Meter(s)', GetEnum: props.GetEnum, StorageID: props.StorageID }, props.children);
|
|
94
|
+
return React.createElement(react_interactive_1.SearchBar, { CollumnList: __spreadArray(__spreadArray([], defaultSearchcols, true), addlFieldCols, true), SetFilter: setFilters, Direction: 'left', defaultCollumn: standardSearch, Width: '50%', Label: 'Search', ShowLoading: searchStatus === 'loading', ResultNote: searchStatus === 'error' ? 'Could not complete Search' : 'Found ' + data.length + ' Meter(s)', GetEnum: props.GetEnum, StorageID: props.StorageID, OverrideFilterEquality: FilterEqualityOverride }, props.children);
|
|
92
95
|
};
|
|
93
96
|
/** This Implements a standard Substation Search */
|
|
94
97
|
DefaultSearch.Location = function (props) {
|
|
@@ -109,13 +112,16 @@ var DefaultSearch;
|
|
|
109
112
|
{ label: 'Number of Meters', key: 'Meters', type: 'integer', isPivotField: false },
|
|
110
113
|
{ label: 'Description', key: 'Description', type: 'string', isPivotField: false },
|
|
111
114
|
];
|
|
115
|
+
var FilterEqualityOverride = React.useCallback(function (a, b) {
|
|
116
|
+
return searchStatus === 'uninitiated' ? false : (0, react_interactive_1.IsSearchBarFiltersEqual)(a, b);
|
|
117
|
+
}, [searchStatus]);
|
|
112
118
|
React.useEffect(function () {
|
|
113
119
|
return props.GetAddlFields(setAddlFieldCols);
|
|
114
120
|
}, []);
|
|
115
121
|
var setFilters = React.useCallback(function (filters) {
|
|
116
122
|
return dispatch(props.Slice.DBSearch({ filter: (addlFilters == null ? filters : __spreadArray(__spreadArray([], filters, true), addlFilters, true)), sortField: sortField, ascending: ascending }));
|
|
117
123
|
}, [sortField, ascending, addlFilters, props.Slice.DBSearch]);
|
|
118
|
-
return React.createElement(react_interactive_1.SearchBar, { CollumnList: __spreadArray(__spreadArray([], defaultSearchcols, true), addlFieldCols, true), SetFilter: setFilters, Direction: 'left', defaultCollumn: standardSearch, Width: '50%', Label: 'Search', ShowLoading: searchStatus === 'loading', ResultNote: searchStatus === 'error' ? 'Could not complete Search' : 'Found ' + data.length + ' Substation(s)', GetEnum: props.GetEnum, StorageID: props.StorageID }, props.children);
|
|
124
|
+
return React.createElement(react_interactive_1.SearchBar, { CollumnList: __spreadArray(__spreadArray([], defaultSearchcols, true), addlFieldCols, true), SetFilter: setFilters, Direction: 'left', defaultCollumn: standardSearch, Width: '50%', Label: 'Search', ShowLoading: searchStatus === 'loading', ResultNote: searchStatus === 'error' ? 'Could not complete Search' : 'Found ' + data.length + ' Substation(s)', GetEnum: props.GetEnum, StorageID: props.StorageID, OverrideFilterEquality: FilterEqualityOverride }, props.children);
|
|
119
125
|
};
|
|
120
126
|
/** This Implements a standard Transmission Asset Search */
|
|
121
127
|
DefaultSearch.Asset = function (props) {
|
|
@@ -138,13 +144,16 @@ var DefaultSearch;
|
|
|
138
144
|
{ label: 'Number of Substations', key: 'Locations', type: 'integer', isPivotField: false },
|
|
139
145
|
{ label: 'Description', key: 'Description', type: 'string', isPivotField: false },
|
|
140
146
|
];
|
|
147
|
+
var FilterEqualityOverride = React.useCallback(function (a, b) {
|
|
148
|
+
return searchStatus === 'uninitiated' ? false : (0, react_interactive_1.IsSearchBarFiltersEqual)(a, b);
|
|
149
|
+
}, [searchStatus]);
|
|
141
150
|
React.useEffect(function () {
|
|
142
151
|
return props.GetAddlFields(setAddlFieldCols);
|
|
143
152
|
}, []);
|
|
144
153
|
var setFilters = React.useCallback(function (filters) {
|
|
145
154
|
return dispatch(props.Slice.DBSearch({ filter: (addlFilters == null ? filters : __spreadArray(__spreadArray([], filters, true), addlFilters, true)), sortField: sortField, ascending: ascending }));
|
|
146
155
|
}, [sortField, ascending, addlFilters, props.Slice]);
|
|
147
|
-
return React.createElement(react_interactive_1.SearchBar, { CollumnList: __spreadArray(__spreadArray([], defaultSearchcols, true), addlFieldCols, true), SetFilter: setFilters, Direction: 'left', defaultCollumn: standardSearch, Width: '50%', Label: 'Search', ShowLoading: searchStatus === 'loading', ResultNote: searchStatus === 'error' ? 'Could not complete Search' : 'Found ' + data.length + ' Transmission Asset(s)', GetEnum: props.GetEnum, StorageID: props.StorageID }, props.children);
|
|
156
|
+
return React.createElement(react_interactive_1.SearchBar, { CollumnList: __spreadArray(__spreadArray([], defaultSearchcols, true), addlFieldCols, true), SetFilter: setFilters, Direction: 'left', defaultCollumn: standardSearch, Width: '50%', Label: 'Search', ShowLoading: searchStatus === 'loading', ResultNote: searchStatus === 'error' ? 'Could not complete Search' : 'Found ' + data.length + ' Transmission Asset(s)', GetEnum: props.GetEnum, StorageID: props.StorageID, OverrideFilterEquality: FilterEqualityOverride }, props.children);
|
|
148
157
|
};
|
|
149
158
|
/** This Implements a standard AssetGroup Search */
|
|
150
159
|
DefaultSearch.AssetGroup = function (props) {
|
|
@@ -164,13 +173,16 @@ var DefaultSearch;
|
|
|
164
173
|
{ label: 'Show in PQ Dashboard', key: 'DisplayDashboard', type: 'boolean', isPivotField: false },
|
|
165
174
|
{ label: 'Show in Email Subscription', key: 'DisplayEmail', type: 'boolean', isPivotField: false },
|
|
166
175
|
];
|
|
176
|
+
var FilterEqualityOverride = React.useCallback(function (a, b) {
|
|
177
|
+
return searchStatus === 'uninitiated' ? false : (0, react_interactive_1.IsSearchBarFiltersEqual)(a, b);
|
|
178
|
+
}, [searchStatus]);
|
|
167
179
|
React.useEffect(function () {
|
|
168
180
|
return props.GetAddlFields(setAddlFieldCols);
|
|
169
181
|
}, []);
|
|
170
182
|
var setFilters = React.useCallback(function (filters) {
|
|
171
183
|
return dispatch(props.Slice.DBSearch({ filter: (addlFilters == null ? filters : __spreadArray(__spreadArray([], filters, true), addlFilters, true)), sortField: sortField, ascending: ascending }));
|
|
172
184
|
}, [sortField, ascending, addlFilters, props.Slice]);
|
|
173
|
-
return React.createElement(react_interactive_1.SearchBar, { CollumnList: __spreadArray(__spreadArray([], defaultSearchcols, true), addlFieldCols, true), SetFilter: setFilters, Direction: 'left', defaultCollumn: standardSearch, Width: '50%', Label: 'Search', ShowLoading: searchStatus === 'loading', ResultNote: searchStatus === 'error' ? 'Could not complete Search' : 'Found ' + data.length + ' Asset Group(s)', GetEnum: props.GetEnum, StorageID: props.StorageID }, props.children);
|
|
185
|
+
return React.createElement(react_interactive_1.SearchBar, { CollumnList: __spreadArray(__spreadArray([], defaultSearchcols, true), addlFieldCols, true), SetFilter: setFilters, Direction: 'left', defaultCollumn: standardSearch, Width: '50%', Label: 'Search', ShowLoading: searchStatus === 'loading', ResultNote: searchStatus === 'error' ? 'Could not complete Search' : 'Found ' + data.length + ' Asset Group(s)', GetEnum: props.GetEnum, StorageID: props.StorageID, OverrideFilterEquality: FilterEqualityOverride }, props.children);
|
|
174
186
|
};
|
|
175
187
|
/** This Implements a standard User Search */
|
|
176
188
|
DefaultSearch.User = function (props) {
|
|
@@ -187,13 +199,16 @@ var DefaultSearch;
|
|
|
187
199
|
{ label: 'Last Name', key: 'LastName', type: 'string', isPivotField: false },
|
|
188
200
|
{ label: 'Email', key: 'Email', type: 'string', isPivotField: false },
|
|
189
201
|
];
|
|
202
|
+
var FilterEqualityOverride = React.useCallback(function (a, b) {
|
|
203
|
+
return searchStatus === 'uninitiated' ? false : (0, react_interactive_1.IsSearchBarFiltersEqual)(a, b);
|
|
204
|
+
}, [searchStatus]);
|
|
190
205
|
React.useEffect(function () {
|
|
191
206
|
return props.GetAddlFields(setAddlFieldCols);
|
|
192
207
|
}, []);
|
|
193
208
|
var setFilters = React.useCallback(function (filters) {
|
|
194
209
|
return dispatch(props.Slice.DBSearch({ filter: (addlFilters == null ? filters : __spreadArray(__spreadArray([], filters, true), addlFilters, true)), sortField: sortField, ascending: ascending }));
|
|
195
210
|
}, [sortField, ascending, addlFilters, props.Slice]);
|
|
196
|
-
return React.createElement(react_interactive_1.SearchBar, { CollumnList: __spreadArray(__spreadArray([], defaultSearchcols, true), addlFieldCols, true), SetFilter: setFilters, Direction: 'left', defaultCollumn: standardSearch, Width: '50%', Label: 'Search', ShowLoading: searchStatus === 'loading', ResultNote: searchStatus === 'error' ? 'Could not complete Search' : 'Found ' + data.length + ' User(s)', GetEnum: props.GetEnum, StorageID: props.StorageID }, props.children);
|
|
211
|
+
return React.createElement(react_interactive_1.SearchBar, { CollumnList: __spreadArray(__spreadArray([], defaultSearchcols, true), addlFieldCols, true), SetFilter: setFilters, Direction: 'left', defaultCollumn: standardSearch, Width: '50%', Label: 'Search', ShowLoading: searchStatus === 'loading', ResultNote: searchStatus === 'error' ? 'Could not complete Search' : 'Found ' + data.length + ' User(s)', GetEnum: props.GetEnum, StorageID: props.StorageID, OverrideFilterEquality: FilterEqualityOverride }, props.children);
|
|
197
212
|
};
|
|
198
213
|
/** This Implements a standard Customer Search */
|
|
199
214
|
DefaultSearch.Customer = function (props) {
|
|
@@ -211,12 +226,15 @@ var DefaultSearch;
|
|
|
211
226
|
var sortField = (0, react_redux_1.useSelector)(props.Slice.SortField);
|
|
212
227
|
var ascending = (0, react_redux_1.useSelector)(props.Slice.Ascending);
|
|
213
228
|
var data = (0, react_redux_1.useSelector)(props.Slice.SearchResults);
|
|
229
|
+
var FilterEqualityOverride = React.useCallback(function (a, b) {
|
|
230
|
+
return searchStatus === 'uninitiated' ? false : (0, react_interactive_1.IsSearchBarFiltersEqual)(a, b);
|
|
231
|
+
}, [searchStatus]);
|
|
214
232
|
React.useEffect(function () {
|
|
215
233
|
return props.GetAddlFields(setAddlFieldCols);
|
|
216
234
|
}, []);
|
|
217
235
|
var setFilters = React.useCallback(function (filters) {
|
|
218
236
|
return dispatch(props.Slice.DBSearch({ filter: (addlFilters == null ? filters : __spreadArray(__spreadArray([], filters, true), addlFilters, true)), sortField: sortField, ascending: ascending }));
|
|
219
237
|
}, [sortField, ascending, addlFilters, props.Slice]);
|
|
220
|
-
return React.createElement(react_interactive_1.SearchBar, { CollumnList: __spreadArray(__spreadArray([], defaultSearchcols, true), addlFieldCols, true), SetFilter: setFilters, Direction: 'left', defaultCollumn: standardSearch, Width: '50%', Label: 'Search', ShowLoading: searchStatus === 'loading', ResultNote: searchStatus === 'error' ? 'Could not complete Search' : 'Found ' + data.length + ' Customer(s)', GetEnum: props.GetEnum, StorageID: props.StorageID }, props.children);
|
|
238
|
+
return React.createElement(react_interactive_1.SearchBar, { CollumnList: __spreadArray(__spreadArray([], defaultSearchcols, true), addlFieldCols, true), SetFilter: setFilters, Direction: 'left', defaultCollumn: standardSearch, Width: '50%', Label: 'Search', ShowLoading: searchStatus === 'loading', ResultNote: searchStatus === 'error' ? 'Could not complete Search' : 'Found ' + data.length + ' Customer(s)', GetEnum: props.GetEnum, StorageID: props.StorageID, OverrideFilterEquality: FilterEqualityOverride }, props.children);
|
|
221
239
|
};
|
|
222
240
|
})(DefaultSearch || (exports.DefaultSearch = DefaultSearch = {}));
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ITimeFilter } from './TimeFilter';
|
|
2
2
|
import { Gemstone } from '@gpa-gemstone/application-typings';
|
|
3
3
|
import { TimeUnit } from './TimeWindowUtils';
|
|
4
4
|
interface IQuickSelect {
|
|
@@ -7,7 +7,6 @@ interface IQuickSelect {
|
|
|
7
7
|
createFilter: (timeZone: string, format?: Gemstone.TSX.Types.DateUnit) => ITimeFilter;
|
|
8
8
|
}
|
|
9
9
|
interface IProps {
|
|
10
|
-
DateTimeSetting: DateTimeSetting;
|
|
11
10
|
Format?: "YYYY-MM-DD" | "HH:mm:ss.SSS" | "MM/DD/YYYY HH:mm:ss.SSS";
|
|
12
11
|
DateUnit?: Gemstone.TSX.Types.DateUnit;
|
|
13
12
|
QuickSelectRange?: Gemstone.TSX.Types.QuickSelectRange;
|
|
@@ -63,9 +63,9 @@ var QuickSelects = function (props) {
|
|
|
63
63
|
var _a;
|
|
64
64
|
if (i % 3 !== 0)
|
|
65
65
|
return null;
|
|
66
|
-
return (React.createElement("div", { key: i, className:
|
|
67
|
-
paddingLeft:
|
|
68
|
-
paddingRight:
|
|
66
|
+
return (React.createElement("div", { key: i, className: ((_a = props.SplitSelects) !== null && _a !== void 0 ? _a : false) ? 'col-4' : 'col-2', style: {
|
|
67
|
+
paddingLeft: 0,
|
|
68
|
+
paddingRight: 2,
|
|
69
69
|
marginTop: 10
|
|
70
70
|
} },
|
|
71
71
|
React.createElement("ul", { className: "list-group", key: i },
|
|
@@ -107,18 +107,6 @@ function getQuickSelectRange(dateUnit) {
|
|
|
107
107
|
if (dateUnit === 'date')
|
|
108
108
|
return 'long';
|
|
109
109
|
}
|
|
110
|
-
var getColSize = function (dateTimeSetting, splitSelects) {
|
|
111
|
-
if (dateTimeSetting === 'startEnd') {
|
|
112
|
-
if (splitSelects)
|
|
113
|
-
return 'col-4';
|
|
114
|
-
else
|
|
115
|
-
return 'col-2';
|
|
116
|
-
}
|
|
117
|
-
if (splitSelects)
|
|
118
|
-
return 'col-8';
|
|
119
|
-
else
|
|
120
|
-
return 'col-4';
|
|
121
|
-
};
|
|
122
110
|
//update all quick selects to use new timefilters
|
|
123
111
|
exports.AvailableQuickSelects = [
|
|
124
112
|
{
|
|
@@ -51,7 +51,6 @@ var QuickSelects_1 = __importStar(require("../QuickSelects"));
|
|
|
51
51
|
var DateFilter = function (props) {
|
|
52
52
|
var _a, _b;
|
|
53
53
|
var FirstFallbackBreakpoint = 1050;
|
|
54
|
-
var SecondFallbackBreakpoint = 541;
|
|
55
54
|
var FirstFallbackBreakpointNoQS = 375;
|
|
56
55
|
var handleSetTimeWindowFilter = React.useCallback(function (record) {
|
|
57
56
|
var flt = (0, TimeFilter_1.getTimeWindowFromFilter)({ start: record.start, end: record.end }, props.Format);
|
|
@@ -80,7 +79,7 @@ var DateFilter = function (props) {
|
|
|
80
79
|
React.createElement(react_forms_1.DatePicker, { Record: props.TimeWindowFilter, Field: "end", Help: props.HelpMessage, Setter: handleSetTimeWindowFilter, Label: 'End', Type: props.DateUnit, Valid: function () { return true; }, Format: props.Format, Accuracy: props.Accuracy })),
|
|
81
80
|
props.ShowQuickSelects ?
|
|
82
81
|
React.createElement("div", { className: quickSelectClass },
|
|
83
|
-
React.createElement(QuickSelects_1.default, {
|
|
82
|
+
React.createElement(QuickSelects_1.default, { Timezone: props.Timezone, ActiveQP: props.ActiveQP, SetActiveQP: props.SetActiveQP, SetFilter: props.SetFilter, Format: props.Format, DateUnit: props.DateUnit, QuickSelectRange: (_a = props.QuickSelectRange) !== null && _a !== void 0 ? _a : (0, QuickSelects_1.getQuickSelectRange)(props.DateUnit) })) : null));
|
|
84
83
|
else
|
|
85
84
|
return (React.createElement(React.Fragment, null,
|
|
86
85
|
React.createElement("div", { className: 'row m-0' },
|
|
@@ -90,6 +89,6 @@ var DateFilter = function (props) {
|
|
|
90
89
|
React.createElement(react_forms_1.DatePicker, { Record: props.TimeWindowFilter, Field: "end", Help: props.HelpMessage, Setter: handleSetTimeWindowFilter, Label: 'End', Type: props.DateUnit, Valid: function () { return true; }, Format: props.Format, Accuracy: props.Accuracy }))),
|
|
91
90
|
props.ShowQuickSelects ?
|
|
92
91
|
React.createElement("div", { className: quickSelectClass },
|
|
93
|
-
React.createElement(QuickSelects_1.default, {
|
|
92
|
+
React.createElement(QuickSelects_1.default, { Timezone: props.Timezone, ActiveQP: props.ActiveQP, SetActiveQP: props.SetActiveQP, SetFilter: props.SetFilter, Format: props.Format, DateUnit: props.DateUnit, SplitSelects: true, QuickSelectRange: (_b = props.QuickSelectRange) !== null && _b !== void 0 ? _b : (0, QuickSelects_1.getQuickSelectRange)(props.DateUnit) })) : null));
|
|
94
93
|
};
|
|
95
94
|
exports.default = DateFilter;
|
|
@@ -53,6 +53,7 @@ var DateTimeLocalFilter = function (props) {
|
|
|
53
53
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
54
54
|
var FirstFallbackBreakpointQS = 1768;
|
|
55
55
|
var SecondFallbackBreakpointQS = 612, FirstFallbacKBreakpointNoQS = 612;
|
|
56
|
+
var ModalBreakpointQS = 450;
|
|
56
57
|
var _k = React.useState(false), showQuickPickModal = _k[0], setShowQuickPickModal = _k[1];
|
|
57
58
|
var handleSetTimeWindowFilter = React.useCallback(function (record) {
|
|
58
59
|
var flt = (0, TimeFilter_1.getTimeWindowFromFilter)({ start: record.start, end: record.end }, props.Format);
|
|
@@ -86,9 +87,9 @@ var DateTimeLocalFilter = function (props) {
|
|
|
86
87
|
React.createElement(react_forms_1.DatePicker, { Record: props.TimeWindowFilter, Field: "end", Help: props.HelpMessage, Setter: handleSetTimeWindowFilter, Label: 'End', Type: (_b = props.DateUnit) !== null && _b !== void 0 ? _b : 'datetime-local', Valid: function () { return true; }, Format: props.Format, Accuracy: props.Accuracy })),
|
|
87
88
|
props.ShowQuickSelects ?
|
|
88
89
|
React.createElement("div", { className: quickSelectCol },
|
|
89
|
-
React.createElement(QuickSelects_1.default, {
|
|
90
|
+
React.createElement(QuickSelects_1.default, { Timezone: props.Timezone, ActiveQP: props.ActiveQP, SetActiveQP: props.SetActiveQP, SetFilter: props.SetFilter, Format: props.Format, DateUnit: props.DateUnit, QuickSelectRange: (_c = props.QuickSelectRange) !== null && _c !== void 0 ? _c : (0, QuickSelects_1.getQuickSelectRange)(props.DateUnit) })) : null));
|
|
90
91
|
}
|
|
91
|
-
else if (props.ContainerWidth >
|
|
92
|
+
else if (props.ContainerWidth > ModalBreakpointQS) {
|
|
92
93
|
return (React.createElement("div", { className: 'row m-0' },
|
|
93
94
|
React.createElement("div", { className: startEndCol },
|
|
94
95
|
React.createElement(react_forms_1.DatePicker, { Record: props.TimeWindowFilter, Field: "start", Help: props.HelpMessage, Setter: handleSetTimeWindowFilter, Label: 'Start', Type: (_d = props.DateUnit) !== null && _d !== void 0 ? _d : 'datetime-local', Valid: function () { return true; }, Format: props.Format, Accuracy: props.Accuracy })),
|
|
@@ -96,7 +97,7 @@ var DateTimeLocalFilter = function (props) {
|
|
|
96
97
|
React.createElement(react_forms_1.DatePicker, { Record: props.TimeWindowFilter, Field: "end", Help: props.HelpMessage, Setter: handleSetTimeWindowFilter, Label: 'End', Type: (_e = props.DateUnit) !== null && _e !== void 0 ? _e : 'datetime-local', Valid: function () { return true; }, Format: props.Format, Accuracy: props.Accuracy })),
|
|
97
98
|
React.createElement("div", { className: 'row m-0 w-100' }, props.ShowQuickSelects ?
|
|
98
99
|
React.createElement("div", { className: quickSelectCol },
|
|
99
|
-
React.createElement(QuickSelects_1.default, {
|
|
100
|
+
React.createElement(QuickSelects_1.default, { SplitSelects: true, Timezone: props.Timezone, ActiveQP: props.ActiveQP, SetActiveQP: props.SetActiveQP, SetFilter: props.SetFilter, Format: props.Format, DateUnit: props.DateUnit, QuickSelectRange: (_f = props.QuickSelectRange) !== null && _f !== void 0 ? _f : (0, QuickSelects_1.getQuickSelectRange)(props.DateUnit) }))
|
|
100
101
|
: null)));
|
|
101
102
|
}
|
|
102
103
|
else {
|
|
@@ -111,7 +112,7 @@ var DateTimeLocalFilter = function (props) {
|
|
|
111
112
|
React.createElement("button", { className: 'btn btn-primary w-100', onClick: function () { return setShowQuickPickModal(true); } }, "Quick Selects")),
|
|
112
113
|
React.createElement(react_interactive_1.Modal, { Show: showQuickPickModal, Title: 'Quick Selects', CallBack: function () { return setShowQuickPickModal(false); }, ShowX: true, ShowCancel: false, ShowConfirm: false, Size: 'xlg' },
|
|
113
114
|
React.createElement("div", { className: quickSelectCol },
|
|
114
|
-
React.createElement(QuickSelects_1.default, {
|
|
115
|
+
React.createElement(QuickSelects_1.default, { SplitSelects: true, Timezone: props.Timezone, ActiveQP: props.ActiveQP, SetActiveQP: props.SetActiveQP, SetFilter: props.SetFilter, Format: props.Format, DateUnit: props.DateUnit, QuickSelectRange: (_j = props.QuickSelectRange) !== null && _j !== void 0 ? _j : (0, QuickSelects_1.getQuickSelectRange)(props.DateUnit) }))))
|
|
115
116
|
: null));
|
|
116
117
|
}
|
|
117
118
|
};
|
|
@@ -75,7 +75,7 @@ var TimeFilter = function (props) {
|
|
|
75
75
|
React.createElement("div", { className: startEndCol },
|
|
76
76
|
React.createElement(react_forms_1.DatePicker, { Record: props.TimeWindowFilter, Field: "end", Help: props.HelpMessage, Setter: handleSetTimeWindowFilter, Label: 'End', Type: props.DateUnit, Valid: function () { return true; }, Format: props.Format, Accuracy: props.Accuracy })),
|
|
77
77
|
props.ShowQuickSelects ?
|
|
78
|
-
React.createElement(QuickSelects_1.default, {
|
|
78
|
+
React.createElement(QuickSelects_1.default, { Timezone: props.Timezone, ActiveQP: props.ActiveQP, SetActiveQP: props.SetActiveQP, SetFilter: props.SetFilter, Format: props.Format, DateUnit: props.DateUnit, AddRowContainer: false, QuickSelectRange: (_a = props.QuickSelectRange) !== null && _a !== void 0 ? _a : (0, QuickSelects_1.getQuickSelectRange)(props.DateUnit) })
|
|
79
79
|
: null));
|
|
80
80
|
else
|
|
81
81
|
return (React.createElement(React.Fragment, null,
|
|
@@ -85,7 +85,7 @@ var TimeFilter = function (props) {
|
|
|
85
85
|
React.createElement("div", { className: startEndCol },
|
|
86
86
|
React.createElement(react_forms_1.DatePicker, { Record: props.TimeWindowFilter, Field: "end", Help: props.HelpMessage, Setter: handleSetTimeWindowFilter, Label: 'End', Type: props.DateUnit, Valid: function () { return true; }, Format: props.Format, Accuracy: props.Accuracy }))),
|
|
87
87
|
props.ShowQuickSelects ?
|
|
88
|
-
React.createElement(QuickSelects_1.default, {
|
|
88
|
+
React.createElement(QuickSelects_1.default, { Timezone: props.Timezone, ActiveQP: props.ActiveQP, SetActiveQP: props.SetActiveQP, SetFilter: props.SetFilter, Format: props.Format, DateUnit: props.DateUnit, SplitSelects: true, QuickSelectRange: (_b = props.QuickSelectRange) !== null && _b !== void 0 ? _b : (0, QuickSelects_1.getQuickSelectRange)(props.DateUnit) })
|
|
89
89
|
: null));
|
|
90
90
|
};
|
|
91
91
|
exports.default = TimeFilter;
|
|
@@ -58,7 +58,6 @@ var WindowFilter = function (props) {
|
|
|
58
58
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
59
59
|
var DatePickerField = props.Window;
|
|
60
60
|
var DatePickerLabel = props.Window.charAt(0).toUpperCase() + props.Window.slice(1);
|
|
61
|
-
var filterType = props.Window === 'start' ? 'startWindow' : 'endWindow';
|
|
62
61
|
var setter = React.useCallback(function (record) {
|
|
63
62
|
if (props.Window === 'start') {
|
|
64
63
|
var flt = (0, TimeFilter_1.getTimeWindowFromFilter)({ start: record.start, duration: record.duration, unit: record.unit }, props.Format);
|
|
@@ -83,7 +82,7 @@ var WindowFilter = function (props) {
|
|
|
83
82
|
React.createElement(react_forms_1.DatePicker, { Record: props.TimeWindowFilter, Field: DatePickerField, Help: props.HelpMessage, Setter: setter, Label: DatePickerLabel, Type: (_b = props.DateUnit) !== null && _b !== void 0 ? _b : 'datetime-local', Valid: function () { return true; }, Format: props.Format, Accuracy: props.Accuracy }),
|
|
84
83
|
React.createElement(WindowForm_1.default, { Filter: props.TimeWindowFilter, SetFilter: props.SetTimeWindowFilter, SetActiveQP: props.SetActiveQP, Format: props.Format, ShowQuickSelect: props.ShowQuickSelects, Window: props.Window })),
|
|
85
84
|
React.createElement("div", { className: 'col-8 pt-3' },
|
|
86
|
-
React.createElement(QuickSelects_1.default, {
|
|
85
|
+
React.createElement(QuickSelects_1.default, { SplitSelects: true, Timezone: props.Timezone, ActiveQP: props.ActiveQP, SetActiveQP: props.SetActiveQP, SetFilter: props.SetFilter, Format: props.Format, DateUnit: props.DateUnit, QuickSelectRange: (_c = props.QuickSelectRange) !== null && _c !== void 0 ? _c : (0, QuickSelects_1.getQuickSelectRange)(props.DateUnit) }))));
|
|
87
86
|
else if (props.ContainerWidth > WINDOW_SecondFallbackBreakpoint) {
|
|
88
87
|
return (React.createElement(React.Fragment, null,
|
|
89
88
|
React.createElement("div", { className: 'row m-0' },
|
|
@@ -93,7 +92,7 @@ var WindowFilter = function (props) {
|
|
|
93
92
|
React.createElement(WindowForm_1.default, { Filter: props.TimeWindowFilter, SetFilter: props.SetTimeWindowFilter, SetActiveQP: props.SetActiveQP, Format: props.Format, ShowQuickSelect: props.ShowQuickSelects, Window: props.Window }))),
|
|
94
93
|
React.createElement("div", { className: 'row m-0' },
|
|
95
94
|
React.createElement("div", { className: 'col-12' },
|
|
96
|
-
React.createElement(QuickSelects_1.default, {
|
|
95
|
+
React.createElement(QuickSelects_1.default, { SplitSelects: true, Timezone: props.Timezone, ActiveQP: props.ActiveQP, SetActiveQP: props.SetActiveQP, SetFilter: props.SetFilter, Format: props.Format, DateUnit: props.DateUnit, QuickSelectRange: (_e = props.QuickSelectRange) !== null && _e !== void 0 ? _e : (0, QuickSelects_1.getQuickSelectRange)(props.DateUnit) })))));
|
|
97
96
|
}
|
|
98
97
|
else {
|
|
99
98
|
return (React.createElement(React.Fragment, null,
|
|
@@ -105,7 +104,7 @@ var WindowFilter = function (props) {
|
|
|
105
104
|
React.createElement(WindowForm_1.default, { Filter: props.TimeWindowFilter, SetFilter: props.SetTimeWindowFilter, SetActiveQP: props.SetActiveQP, Format: props.Format, ShowQuickSelect: props.ShowQuickSelects, Window: props.Window }))),
|
|
106
105
|
React.createElement("div", { className: 'row m-0' },
|
|
107
106
|
React.createElement("div", { className: 'col-12' },
|
|
108
|
-
React.createElement(QuickSelects_1.default, {
|
|
107
|
+
React.createElement(QuickSelects_1.default, { SplitSelects: true, Timezone: props.Timezone, ActiveQP: props.ActiveQP, SetActiveQP: props.SetActiveQP, SetFilter: props.SetFilter, Format: props.Format, DateUnit: props.DateUnit, QuickSelectRange: (_g = props.QuickSelectRange) !== null && _g !== void 0 ? _g : (0, QuickSelects_1.getQuickSelectRange)(props.DateUnit) })))));
|
|
109
108
|
}
|
|
110
109
|
};
|
|
111
110
|
exports.default = WindowFilter;
|
|
@@ -59,7 +59,7 @@ var WindowForm = function (props) {
|
|
|
59
59
|
props.SetActiveQP(-1);
|
|
60
60
|
}
|
|
61
61
|
}, [props.Window, props.Format, props.SetActiveQP, props.SetActiveQP]);
|
|
62
|
-
return (React.createElement("div", { className: 'form-group' },
|
|
62
|
+
return (React.createElement("div", { className: 'form-group', style: { marginBottom: 0 } },
|
|
63
63
|
React.createElement("label", { style: { width: '100%', position: 'relative', float: "left" } },
|
|
64
64
|
"Span(",
|
|
65
65
|
props.Window === 'start' ? '+' : '-',
|
package/lib/index.d.ts
CHANGED
|
@@ -19,7 +19,9 @@ import ReadOnlyGenericSlice from './Gemstone/GenericSlices/ReadOnlyGenericSlice'
|
|
|
19
19
|
import ReadWriteGenericSlice from './Gemstone/GenericSlices/ReadWriteGenericSlice';
|
|
20
20
|
import { useInitializeWithFetch } from './Gemstone/GenericSlices/useInitializeData';
|
|
21
21
|
import { ReadOnlyControllerFunctions, ReadWriteControllerFunctions } from './Gemstone/ControllerFunctions';
|
|
22
|
+
import HeartBeatCheck from './HeartBeatCheck';
|
|
23
|
+
import useSearchData from './Gemstone/Hooks/useSearchData';
|
|
22
24
|
declare const Pipelines: {
|
|
23
25
|
CSV: typeof useCSVPipeline;
|
|
24
26
|
};
|
|
25
|
-
export { TimeFilter, TimeWindowUtils, EventTypeFilter, EventCharacteristicFilter, NavBarFilterButton, Note, DefaultSearch, SelectPopup, DefaultSelects, ErrorBoundary, Pipelines, useCSVFieldEditContext, CSVFieldEditContext, BulkUpload, RoleAccessErrorPage, ITimeFilter, IStartEnd, IStartDuration, IEndDuration, Gemstone, ReadOnlyGenericSlice as ReadOnlyGenericSlice_Gemstone, ReadWriteGenericSlice as ReadWriteGenericSlice_Gemstone, useInitializeWithFetch as useInitializeWithFetch_Gemstone, ReadOnlyControllerFunctions as ReadOnlyControllerFunctions_Gemstone, ReadWriteControllerFunctions as ReadWriteControllerFunctions_Gemstone };
|
|
27
|
+
export { TimeFilter, TimeWindowUtils, EventTypeFilter, EventCharacteristicFilter, NavBarFilterButton, Note, DefaultSearch, SelectPopup, DefaultSelects, ErrorBoundary, Pipelines, useCSVFieldEditContext, CSVFieldEditContext, BulkUpload, RoleAccessErrorPage, ITimeFilter, IStartEnd, IStartDuration, IEndDuration, Gemstone, HeartBeatCheck, ReadOnlyGenericSlice as ReadOnlyGenericSlice_Gemstone, ReadWriteGenericSlice as ReadWriteGenericSlice_Gemstone, useInitializeWithFetch as useInitializeWithFetch_Gemstone, ReadOnlyControllerFunctions as ReadOnlyControllerFunctions_Gemstone, ReadWriteControllerFunctions as ReadWriteControllerFunctions_Gemstone, useSearchData as useSearchData_Gemstone };
|
package/lib/index.js
CHANGED
|
@@ -48,7 +48,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
48
48
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
49
49
|
};
|
|
50
50
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
51
|
-
exports.ReadWriteControllerFunctions_Gemstone = exports.ReadOnlyControllerFunctions_Gemstone = exports.useInitializeWithFetch_Gemstone = exports.ReadWriteGenericSlice_Gemstone = exports.ReadOnlyGenericSlice_Gemstone = exports.Gemstone = exports.RoleAccessErrorPage = exports.BulkUpload = exports.CSVFieldEditContext = exports.useCSVFieldEditContext = exports.Pipelines = exports.ErrorBoundary = exports.DefaultSelects = exports.SelectPopup = exports.DefaultSearch = exports.Note = exports.NavBarFilterButton = exports.EventCharacteristicFilter = exports.EventTypeFilter = exports.TimeWindowUtils = exports.TimeFilter = void 0;
|
|
51
|
+
exports.useSearchData_Gemstone = exports.ReadWriteControllerFunctions_Gemstone = exports.ReadOnlyControllerFunctions_Gemstone = exports.useInitializeWithFetch_Gemstone = exports.ReadWriteGenericSlice_Gemstone = exports.ReadOnlyGenericSlice_Gemstone = exports.HeartBeatCheck = exports.Gemstone = exports.RoleAccessErrorPage = exports.BulkUpload = exports.CSVFieldEditContext = exports.useCSVFieldEditContext = exports.Pipelines = exports.ErrorBoundary = exports.DefaultSelects = exports.SelectPopup = exports.DefaultSearch = exports.Note = exports.NavBarFilterButton = exports.EventCharacteristicFilter = exports.EventTypeFilter = exports.TimeWindowUtils = exports.TimeFilter = void 0;
|
|
52
52
|
var Note_1 = __importDefault(require("./Note"));
|
|
53
53
|
exports.Note = Note_1.default;
|
|
54
54
|
var SearchBar_1 = require("./SearchBar");
|
|
@@ -88,6 +88,10 @@ Object.defineProperty(exports, "useInitializeWithFetch_Gemstone", { enumerable:
|
|
|
88
88
|
var ControllerFunctions_1 = require("./Gemstone/ControllerFunctions");
|
|
89
89
|
Object.defineProperty(exports, "ReadOnlyControllerFunctions_Gemstone", { enumerable: true, get: function () { return ControllerFunctions_1.ReadOnlyControllerFunctions; } });
|
|
90
90
|
Object.defineProperty(exports, "ReadWriteControllerFunctions_Gemstone", { enumerable: true, get: function () { return ControllerFunctions_1.ReadWriteControllerFunctions; } });
|
|
91
|
+
var HeartBeatCheck_1 = __importDefault(require("./HeartBeatCheck"));
|
|
92
|
+
exports.HeartBeatCheck = HeartBeatCheck_1.default;
|
|
93
|
+
var useSearchData_1 = __importDefault(require("./Gemstone/Hooks/useSearchData"));
|
|
94
|
+
exports.useSearchData_Gemstone = useSearchData_1.default;
|
|
91
95
|
var Pipelines = {
|
|
92
96
|
CSV: CSVPipeline_1.useCSVPipeline
|
|
93
97
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gpa-gemstone/common-pages",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.184",
|
|
4
4
|
"description": "Common UI pages for GPA products",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -47,12 +47,12 @@
|
|
|
47
47
|
"typescript": "5.5.3"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@gpa-gemstone/application-typings": "0.0.
|
|
51
|
-
"@gpa-gemstone/gpa-symbols": "0.0.
|
|
52
|
-
"@gpa-gemstone/helper-functions": "0.0.
|
|
53
|
-
"@gpa-gemstone/react-forms": "1.1.
|
|
54
|
-
"@gpa-gemstone/react-interactive": "1.0.
|
|
55
|
-
"@gpa-gemstone/react-table": "1.2.
|
|
50
|
+
"@gpa-gemstone/application-typings": "0.0.99",
|
|
51
|
+
"@gpa-gemstone/gpa-symbols": "0.0.64",
|
|
52
|
+
"@gpa-gemstone/helper-functions": "0.0.61",
|
|
53
|
+
"@gpa-gemstone/react-forms": "1.1.125",
|
|
54
|
+
"@gpa-gemstone/react-interactive": "1.0.193",
|
|
55
|
+
"@gpa-gemstone/react-table": "1.2.117",
|
|
56
56
|
"@reduxjs/toolkit": "1.8.3",
|
|
57
57
|
"crypto-js": "^4.2.0",
|
|
58
58
|
"moment": "^2.29.4",
|