@gpa-gemstone/react-graph
Version:
Interactive UI Components for GPA products
117 lines • 11.5 kB
JavaScript
;
// ******************************************************************************************************
// AggregatingCircles.tsx - Gbtc
//
// Copyright © 2023, Grid Protection Alliance. All Rights Reserved.
//
// Licensed to the Grid Protection Alliance (GPA) under one or more contributor license agreements. See
// the NOTICE file distributed with this work for additional information regarding copyright ownership.
// The GPA licenses this file to you under the MIT License (MIT), the "License"; you may not use this
// file except in compliance with the License. You may obtain a copy of the License at:
//
// http://opensource.org/licenses/MIT
//
// Unless agreed to in writing, the subject software distributed under the License is distributed on an
// "AS-IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. Refer to the
// License for the specific language governing permissions and limitations.
//
// Code Modification History:
// ----------------------------------------------------------------------------------------------------
// 11/11/2025 - G. Santos
// Generated original version of source code.
//
// ******************************************************************************************************
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
Object.defineProperty(exports, "__esModule", { value: true });
var React = require("react");
var GraphContext_1 = require("./GraphContext");
var Circle_1 = require("./Circle");
var DataLegend_1 = require("./DataLegend");
var CircleGroup = React.memo(function (props) {
var _a = __read(React.useState(undefined), 2), guid = _a[0], setGuid = _a[1];
var _b = __read(React.useState(true), 2), enabled = _b[0], setEnabled = _b[1];
var context = React.useContext(GraphContext_1.GraphContext);
var axis = GraphContext_1.AxisMap.get(props.Axis);
// cull points based on domain
// ToDo: This memoization of circles should NOT be neccessary,
// but circles change context which causes this to rerender.
var points = React.useMemo(function () {
return enabled ? // just skip calculation if not enabled, its not neccessary
props.Data.map(function (c, i) {
var _a, _b, _c;
if (c[0] < context.XDomain[0] ||
c[0] > context.XDomain[1] ||
c[1] < context.YDomain[axis][0] ||
c[1] > context.YDomain[axis][1])
return null;
var style = props.GetCircleStyle == null ? {} : props.GetCircleStyle(c, i);
return (React.createElement(Circle_1.default, { key: i, data: c, color: (_a = style.ColorOverride) !== null && _a !== void 0 ? _a : props.Color, radius: (_b = style.Radius) !== null && _b !== void 0 ? _b : 5, opacity: (_c = style.Opacity) !== null && _c !== void 0 ? _c : 1, axis: props.Axis, onClick: function () { return props.OnClick == null ? null : props.OnClick(c, i); }, borderColor: style.BorderColor }));
}).filter(function (item) { return item != null; }) : [];
}, [context.YDomain[axis], context.XDomain, props.GetCircleStyle, props.Axis, props.OnClick, props.Data, enabled]);
var createLegend = React.useCallback(function () {
if (props.Legend == null || guid == null)
return undefined;
return (React.createElement(DataLegend_1.default, { id: guid, label: props.Legend, color: props.Color, legendSymbol: 'circle', setEnabled: setEnabled, enabled: enabled, hasNoData: props.Data.length === 0 }));
}, [props.Color, props.Data, guid, enabled, props.Legend]);
var createContextData = React.useCallback(function () {
return ({
legend: createLegend(),
axis: props.Axis,
enabled: enabled,
getMax: function (t) {
return Math.max.apply(Math, __spreadArray([], __read(props.Data
.filter(function (point) { return point[0] >= t[0] && point[0] <= t[1]; })
.map(function (point) { return point[1]; })), false));
},
getMin: function (t) {
return Math.max.apply(Math, __spreadArray([], __read(props.Data
.filter(function (point) { return point[0] >= t[0] && point[0] <= t[1]; })
.map(function (point) { return point[1]; })), false));
},
});
}, [props.Axis, props.Data, createLegend, enabled]);
React.useEffect(function () {
if (guid == null)
return;
context.UpdateData(guid, createContextData());
}, [createContextData, guid]);
React.useEffect(function () {
if (guid == null)
return;
context.SetLegend(guid, createLegend());
}, [createLegend]);
React.useEffect(function () {
var id = context.AddData(createContextData());
setGuid(id);
return function () { context.RemoveData(id); };
}, []);
if (!enabled)
return null;
return (React.createElement("g", null, points));
});
exports.default = CircleGroup;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2lyY2xlR3JvdXBzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0NpcmNsZUdyb3Vwcy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHlHQUF5RztBQUN6RyxpQ0FBaUM7QUFDakMsRUFBRTtBQUNGLHFFQUFxRTtBQUNyRSxFQUFFO0FBQ0Ysd0dBQXdHO0FBQ3hHLHdHQUF3RztBQUN4RyxzR0FBc0c7QUFDdEcsd0ZBQXdGO0FBQ3hGLEVBQUU7QUFDRiwwQ0FBMEM7QUFDMUMsRUFBRTtBQUNGLHdHQUF3RztBQUN4Ryx3R0FBd0c7QUFDeEcsNEVBQTRFO0FBQzVFLEVBQUU7QUFDRiw4QkFBOEI7QUFDOUIsd0dBQXdHO0FBQ3hHLDBCQUEwQjtBQUMxQixtREFBbUQ7QUFDbkQsRUFBRTtBQUNGLHlHQUF5Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR3pHLDZCQUErQjtBQUMvQiwrQ0FBb0Y7QUFDcEYsbUNBQThCO0FBQzlCLDJDQUFzQztBQWtCdEMsSUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFDLEtBQWE7SUFDdEMsSUFBQSxLQUFBLE9BQWtCLEtBQUssQ0FBQyxRQUFRLENBQW1CLFNBQVMsQ0FBQyxJQUFBLEVBQTVELElBQUksUUFBQSxFQUFFLE9BQU8sUUFBK0MsQ0FBQztJQUM5RCxJQUFBLEtBQUEsT0FBd0IsS0FBSyxDQUFDLFFBQVEsQ0FBVSxJQUFJLENBQUMsSUFBQSxFQUFwRCxPQUFPLFFBQUEsRUFBRSxVQUFVLFFBQWlDLENBQUM7SUFFNUQsSUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQywyQkFBWSxDQUFDLENBQUM7SUFDL0MsSUFBTSxJQUFJLEdBQUcsc0JBQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXJDLDhCQUE4QjtJQUM5QiwrREFBK0Q7SUFDL0QsNERBQTREO0lBQzVELElBQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFP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