UNPKG

@gpa-gemstone/react-graph

Version:
117 lines 11.5 kB
"use strict"; // ****************************************************************************************************** // 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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