@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: number;
24
- durationMax: number;
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([]), 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]);
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
- props.setEventFilters(characteristics, newTypeFilter);
59
- }, [newEventCharacteristicFilter, newTypeFilter]);
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 = 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)
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
- export { TimeFilter, EventTypeFilter, EventCharacteristicFilter, Setting, Note, ValueList, ByValueList, User, ByUser, DefaultSearch, SelectPopup, DefaultSelects, ErrorBoundary };
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.112",
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.74",
48
- "@gpa-gemstone/gpa-symbols": "0.0.39",
49
- "@gpa-gemstone/helper-functions": "0.0.32",
50
- "@gpa-gemstone/react-forms": "1.1.67",
51
- "@gpa-gemstone/react-interactive": "1.0.126",
52
- "@gpa-gemstone/react-table": "1.2.49",
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",