@gpa-gemstone/common-pages 0.0.112 → 0.0.113
Sign up to get free protection for your applications and to get access to all the features.
@@ -20,8 +20,8 @@ interface IPhaseFilters {
|
|
20
20
|
ABCG: boolean;
|
21
21
|
}
|
22
22
|
interface IEventCharacteristicFilters {
|
23
|
-
durationMin
|
24
|
-
durationMax
|
23
|
+
durationMin?: number;
|
24
|
+
durationMax?: number;
|
25
25
|
phases: IPhaseFilters;
|
26
26
|
transientMin?: number;
|
27
27
|
transientMax?: number;
|
@@ -41,12 +41,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
41
|
//
|
42
42
|
//******************************************************************************************************
|
43
43
|
var react_1 = __importDefault(require("react"));
|
44
|
+
var lodash_1 = __importDefault(require("lodash"));
|
44
45
|
var react_forms_1 = require("@gpa-gemstone/react-forms");
|
45
46
|
var EventCharacteristicFilter = function (props) {
|
46
47
|
var _a = react_1.default.useState(props.eventCharacteristicFilter), newEventCharacteristicFilter = _a[0], setNewEventCharacteristicFilter = _a[1];
|
47
|
-
var _b = react_1.default.useState([]),
|
48
|
-
var _c = react_1.default.useState([]), newPhases = _c[0], setNewPhases = _c[1];
|
49
|
-
react_1.default.useEffect(function () { setNewTypeFilter(props.eventTypeFilter); }, [props.eventTypeFilter]);
|
48
|
+
var _b = react_1.default.useState([]), newPhases = _b[0], setNewPhases = _b[1];
|
50
49
|
react_1.default.useEffect(function () { setNewEventCharacteristicFilter(props.eventCharacteristicFilter); }, [props.eventCharacteristicFilter]);
|
51
50
|
react_1.default.useEffect(function () {
|
52
51
|
var setupPhases = [];
|
@@ -55,8 +54,9 @@ var EventCharacteristicFilter = function (props) {
|
|
55
54
|
}, []);
|
56
55
|
react_1.default.useEffect(function () {
|
57
56
|
var characteristics = validEventCharacteristicsFilter() ? newEventCharacteristicFilter : undefined;
|
58
|
-
|
59
|
-
|
57
|
+
if (!lodash_1.default.isEqual(characteristics, props.eventCharacteristicFilter))
|
58
|
+
props.setEventFilters(characteristics);
|
59
|
+
}, [newEventCharacteristicFilter]);
|
60
60
|
function validEventCharacteristicsFilter() {
|
61
61
|
var valid = newEventCharacteristicFilter != null;
|
62
62
|
if (!valid)
|
@@ -102,10 +102,10 @@ var EventCharacteristicFilter = function (props) {
|
|
102
102
|
(NullOrNaN(filter.transientMin) || filter.transientMax >= filter.transientMin));
|
103
103
|
return true;
|
104
104
|
}
|
105
|
-
var sagsSelected =
|
106
|
-
var swellsSelected =
|
107
|
-
var transientsSelected =
|
108
|
-
if (newEventCharacteristicFilter === null ||
|
105
|
+
var sagsSelected = props.eventTypeFilter.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 = props.eventTypeFilter.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 = props.eventTypeFilter.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 || props.eventTypeFilter === null)
|
109
109
|
return null;
|
110
110
|
return (react_1.default.createElement("fieldset", { className: "border", style: { padding: '10px', height: '100%' } },
|
111
111
|
react_1.default.createElement("legend", { className: "w-auto", style: { fontSize: 'large' } }, "Event Characteristics:"),
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import 'moment';
|
3
|
+
import { OpenXDA, SystemCenter } from '@gpa-gemstone/application-typings';
|
4
|
+
type S = SystemCenter.Types.DetailedMeter | SystemCenter.Types.DetailedAsset | SystemCenter.Types.DetailedLocation | OpenXDA.Types.AssetGroup;
|
5
|
+
interface IProps<S> {
|
6
|
+
Data: S[];
|
7
|
+
Type: ('Meter' | 'Asset' | 'AssetGroup' | 'Station');
|
8
|
+
OnClick: () => void;
|
9
|
+
AlternateColors?: {
|
10
|
+
normal: string;
|
11
|
+
selected: string;
|
12
|
+
};
|
13
|
+
}
|
14
|
+
declare function NavbarFilterButton(props: IProps<S>): React.JSX.Element;
|
15
|
+
export default NavbarFilterButton;
|
@@ -0,0 +1,140 @@
|
|
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
|
+
// NavBarFilterButton.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
|
+
// 08/07/2024 - G. Santos
|
36
|
+
// Generated original version of source code.
|
37
|
+
//
|
38
|
+
//******************************************************************************************************
|
39
|
+
var react_1 = __importDefault(require("react"));
|
40
|
+
require("moment");
|
41
|
+
function NavbarFilterButton(props) {
|
42
|
+
var _a = react_1.default.useState(false), hover = _a[0], setHover = _a[1];
|
43
|
+
var _b = react_1.default.useState([]), rows = _b[0], setRows = _b[1];
|
44
|
+
var _c = react_1.default.useState(null), header = _c[0], setHeader = _c[1];
|
45
|
+
var _d = react_1.default.useState({ marginBottom: 5 }), buttonStyle = _d[0], setButtonStyle = _d[1];
|
46
|
+
react_1.default.useEffect(function () {
|
47
|
+
switch (props.Type) {
|
48
|
+
case ('Meter'):
|
49
|
+
setHeader(react_1.default.createElement("tr", null,
|
50
|
+
react_1.default.createElement("th", null, "Name"),
|
51
|
+
react_1.default.createElement("th", null, "Key"),
|
52
|
+
react_1.default.createElement("th", null, "Substation"),
|
53
|
+
react_1.default.createElement("th", null, "Make"),
|
54
|
+
react_1.default.createElement("th", null, "Model")));
|
55
|
+
break;
|
56
|
+
case ('Asset'):
|
57
|
+
setHeader(react_1.default.createElement("tr", null,
|
58
|
+
react_1.default.createElement("th", null, "Key"),
|
59
|
+
react_1.default.createElement("th", null, "Name"),
|
60
|
+
react_1.default.createElement("th", null, "Asset Type"),
|
61
|
+
react_1.default.createElement("th", null, "Voltage (kV)")));
|
62
|
+
break;
|
63
|
+
case ('AssetGroup'):
|
64
|
+
setHeader(react_1.default.createElement("tr", null,
|
65
|
+
react_1.default.createElement("th", null, "Name"),
|
66
|
+
react_1.default.createElement("th", null, "Assets"),
|
67
|
+
react_1.default.createElement("th", null, "Meters")));
|
68
|
+
break;
|
69
|
+
default:
|
70
|
+
setHeader(react_1.default.createElement("tr", null,
|
71
|
+
react_1.default.createElement("th", null, "Name"),
|
72
|
+
react_1.default.createElement("th", null, "Key"),
|
73
|
+
react_1.default.createElement("th", null, "Meters"),
|
74
|
+
react_1.default.createElement("th", null, "Assets")));
|
75
|
+
}
|
76
|
+
}, [props.Type]);
|
77
|
+
react_1.default.useEffect(function () {
|
78
|
+
var _a, _b;
|
79
|
+
setButtonStyle(__assign(__assign({}, buttonStyle), { backgroundColor: (props.Data.length > 0 ? (_a = props.AlternateColors) === null || _a === void 0 ? void 0 : _a.selected : (_b = props.AlternateColors) === null || _b === void 0 ? void 0 : _b.normal) }));
|
80
|
+
}, [props.AlternateColors, props.Data.length]);
|
81
|
+
react_1.default.useEffect(function () {
|
82
|
+
switch (props.Type) {
|
83
|
+
case ('Meter'):
|
84
|
+
setRows(props.Data.filter(function (v, i) { return i < 10; }).map(function (d) { return react_1.default.createElement("tr", { key: d.ID },
|
85
|
+
react_1.default.createElement("td", null, d['Name']),
|
86
|
+
react_1.default.createElement("td", null, d['AssetKey']),
|
87
|
+
react_1.default.createElement("td", null, d['Location']),
|
88
|
+
react_1.default.createElement("td", null, d['Make']),
|
89
|
+
react_1.default.createElement("td", null, d['Model'])); }));
|
90
|
+
break;
|
91
|
+
case ('Asset'):
|
92
|
+
setRows(props.Data.filter(function (v, i) { return i < 10; }).map(function (d) { return react_1.default.createElement("tr", { key: d.ID },
|
93
|
+
react_1.default.createElement("td", null, d['AssetKey']),
|
94
|
+
react_1.default.createElement("td", null, d['AssetName']),
|
95
|
+
react_1.default.createElement("td", null, d['AssetType']),
|
96
|
+
react_1.default.createElement("td", null, d['VoltageKV'])); }));
|
97
|
+
break;
|
98
|
+
case ('AssetGroup'):
|
99
|
+
setRows(props.Data.filter(function (v, i) { return i < 10; }).map(function (d) { return react_1.default.createElement("tr", { key: d.ID },
|
100
|
+
react_1.default.createElement("td", null, d['Name']),
|
101
|
+
react_1.default.createElement("td", null, d['Assets']),
|
102
|
+
react_1.default.createElement("td", null, d['Meters'])); }));
|
103
|
+
break;
|
104
|
+
case ('Station'):
|
105
|
+
setRows(props.Data.filter(function (v, i) { return i < 10; }).map(function (d) { return react_1.default.createElement("tr", { key: d.ID },
|
106
|
+
react_1.default.createElement("td", null, d['Name']),
|
107
|
+
react_1.default.createElement("td", null, d['LocationKey']),
|
108
|
+
react_1.default.createElement("td", null, d['Meters']),
|
109
|
+
react_1.default.createElement("td", null, d['Assets'])); }));
|
110
|
+
break;
|
111
|
+
default:
|
112
|
+
setRows([]);
|
113
|
+
break;
|
114
|
+
}
|
115
|
+
}, [props.Data, props.Type]);
|
116
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
117
|
+
react_1.default.createElement("button", { className: "btn btn-block btn-sm btn-" + (props.Data.length > 0 ? "warning" : "primary"), style: buttonStyle, onClick: function (evt) { evt.preventDefault(); props.OnClick(); }, onMouseEnter: function () { return setHover(true); }, onMouseLeave: function () { return setHover(false); } },
|
118
|
+
typeToString(props.Type),
|
119
|
+
" ",
|
120
|
+
props.Data.length > 0 ? ('(' + props.Data.length + ')') : ''),
|
121
|
+
react_1.default.createElement("div", { style: { width: window.innerWidth / 3, display: hover ? 'block' : 'none', position: 'absolute', backgroundColor: '#f1f1f1', boxShadow: '0px 8px 16px 0px rgba(0,0,0,0.2)', zIndex: 1, right: 0 }, onMouseEnter: function () { return setHover(true); }, onMouseLeave: function () { return setHover(false); } },
|
122
|
+
react_1.default.createElement("table", { className: 'table' },
|
123
|
+
react_1.default.createElement("thead", null, header),
|
124
|
+
react_1.default.createElement("tbody", null, rows)))));
|
125
|
+
}
|
126
|
+
function typeToString(Type) {
|
127
|
+
switch (Type) {
|
128
|
+
case 'Meter':
|
129
|
+
return 'Meter';
|
130
|
+
case 'Asset':
|
131
|
+
return 'Asset';
|
132
|
+
case 'AssetGroup':
|
133
|
+
return 'Asset Group';
|
134
|
+
case 'Station':
|
135
|
+
return 'Substation';
|
136
|
+
default:
|
137
|
+
return Type;
|
138
|
+
}
|
139
|
+
}
|
140
|
+
exports.default = NavbarFilterButton;
|
package/lib/index.d.ts
CHANGED
@@ -11,4 +11,5 @@ import ErrorBoundary from './ErrorBoundary';
|
|
11
11
|
import TimeFilter from './TimeFilter';
|
12
12
|
import EventTypeFilter from './EventTypeFilter';
|
13
13
|
import EventCharacteristicFilter from './EventCharacteristicFilter';
|
14
|
-
|
14
|
+
import NavBarFilterButton from './NavBarFilterButton';
|
15
|
+
export { TimeFilter, EventTypeFilter, EventCharacteristicFilter, NavBarFilterButton, 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.Setting = exports.EventCharacteristicFilter = exports.EventTypeFilter = exports.TimeFilter = void 0;
|
28
|
+
exports.ErrorBoundary = exports.DefaultSelects = exports.SelectPopup = exports.DefaultSearch = exports.ByUser = exports.User = exports.ByValueList = exports.ValueList = exports.Note = exports.Setting = exports.NavBarFilterButton = 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"));
|
@@ -52,3 +52,5 @@ var EventTypeFilter_1 = __importDefault(require("./EventTypeFilter"));
|
|
52
52
|
exports.EventTypeFilter = EventTypeFilter_1.default;
|
53
53
|
var EventCharacteristicFilter_1 = __importDefault(require("./EventCharacteristicFilter"));
|
54
54
|
exports.EventCharacteristicFilter = EventCharacteristicFilter_1.default;
|
55
|
+
var NavBarFilterButton_1 = __importDefault(require("./NavBarFilterButton"));
|
56
|
+
exports.NavBarFilterButton = NavBarFilterButton_1.default;
|
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.113",
|
4
4
|
"description": "Common UI pages for GPA products",
|
5
5
|
"main": "lib/index.js",
|
6
6
|
"types": "lib/index.d.ts",
|
@@ -44,12 +44,12 @@
|
|
44
44
|
"typescript": "5.5.3"
|
45
45
|
},
|
46
46
|
"dependencies": {
|
47
|
-
"@gpa-gemstone/application-typings": "0.0.
|
48
|
-
"@gpa-gemstone/gpa-symbols": "0.0.
|
49
|
-
"@gpa-gemstone/helper-functions": "0.0.
|
50
|
-
"@gpa-gemstone/react-forms": "1.1.
|
51
|
-
"@gpa-gemstone/react-interactive": "1.0.
|
52
|
-
"@gpa-gemstone/react-table": "1.2.
|
47
|
+
"@gpa-gemstone/application-typings": "0.0.75",
|
48
|
+
"@gpa-gemstone/gpa-symbols": "0.0.40",
|
49
|
+
"@gpa-gemstone/helper-functions": "0.0.33",
|
50
|
+
"@gpa-gemstone/react-forms": "1.1.68",
|
51
|
+
"@gpa-gemstone/react-interactive": "1.0.127",
|
52
|
+
"@gpa-gemstone/react-table": "1.2.50",
|
53
53
|
"@reduxjs/toolkit": "1.8.3",
|
54
54
|
"crypto-js": "4.0.0",
|
55
55
|
"moment": "^2.29.4",
|