UNPKG

@gpa-gemstone/react-graph

Version:
184 lines 19.1 kB
"use strict"; // ****************************************************************************************************** // Line.tsx - Gbtc // // Copyright © 2020, 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: // ---------------------------------------------------------------------------------------------------- // 03/18/2021 - C Lackner // Generated original version of source code. // // ****************************************************************************************************** var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; 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 __values = (this && this.__values) || function(o) { var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; if (m) return m.call(o); if (o && typeof o.length === "number") return { next: function () { if (o && i >= o.length) o = void 0; return { value: o && o[i++], done: !o }; } }; throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.InternalLine = void 0; var React = require("react"); var GraphContext_1 = require("./GraphContext"); var moment = require("moment"); var PointNode_1 = require("./PointNode"); var LineLegend_1 = require("./LineLegend"); exports.InternalLine = React.forwardRef(function (props, ref) { var _a, _b; /* Single Line with ability to turn off and on. */ var _c = __read(React.useState(""), 2), guid = _c[0], setGuid = _c[1]; var _d = __read(React.useState([NaN, NaN]), 2), highlight = _d[0], setHighlight = _d[1]; var _e = __read(React.useState(true), 2), enabled = _e[0], setEnabled = _e[1]; var _f = __read(React.useState(null), 2), data = _f[0], setData = _f[1]; var context = React.useContext(GraphContext_1.GraphContext); var showPoints = React.useMemo(function () { var _a, _b, _c; return ((_a = props.showPoints) !== null && _a !== void 0 ? _a : false) || (((_b = props.autoShowPoints) !== null && _b !== void 0 ? _b : true) && ((_c = data === null || data === void 0 ? void 0 : data.GetCount(context.XDomain[0], context.XDomain[1])) !== null && _c !== void 0 ? _c : 1000) <= 100); }, [props.showPoints, props.autoShowPoints, data, context.XDomain]); var points = (_a = data === null || data === void 0 ? void 0 : data.GetData(context.XDomain[0], context.XDomain[1], true)) !== null && _a !== void 0 ? _a : []; React.useImperativeHandle(ref, function () { return data; }, [data]); var createLegend = React.useCallback(function () { var _a; if (props.legend === undefined || guid === "") return undefined; var txt = props.legend; if (((_a = props.highlightHover) !== null && _a !== void 0 ? _a : false) && !isNaN(highlight[0]) && !isNaN(highlight[1])) txt = txt + " (".concat(moment.utc(highlight[0]).format('MM/DD/YY hh:mm:ss'), ": ").concat(highlight[1].toPrecision(6), ")"); return React.createElement(LineLegend_1.default, { id: guid, label: txt, color: props.color, lineStyle: props.lineStyle, setEnabled: setEnabled, enabled: enabled, hasNoData: data == null }); }, [props.color, props.lineStyle, enabled, data, props.legend, guid]); var createContextData = React.useCallback(function () { return { legend: createLegend(), axis: props.axis, enabled: enabled, getMax: function (t) { return (data == null || !enabled ? -Infinity : data.GetLimits(t[0], t[1])[1]); }, getMin: function (t) { return (data == null || !enabled ? Infinity : data.GetLimits(t[0], t[1])[0]); }, getPoints: function (t, n) { return (data == null || !enabled ? NaN : data.GetPoints(t, n !== null && n !== void 0 ? n : 1)); } }; }, [props.axis, enabled, data, createLegend, props.reRender]); React.useEffect(function () { if (guid === "") return; context.UpdateData(guid, createContextData()); }, [createContextData]); React.useEffect(function () { if (data == null || props.data == null || props.data.length === 0 || isNaN(context.XHover)) setHighlight([NaN, NaN]); else { try { var point = data.GetPoint(context.XHover); if (point != null) setHighlight(point); } catch (_a) { setHighlight([NaN, NaN]); } } }, [data, context.XHover]); React.useEffect(function () { if (context.MassEnableCommand.command === "enable-all") setEnabled(true); else if (context.MassEnableCommand.command === "disable-others") setEnabled(guid === context.MassEnableCommand.requester); }, [context.MassEnableCommand]); React.useEffect(function () { if (props.data == null) setData(null); else setData(new PointNode_1.PointNode(props.data)); }, [props.data]); React.useEffect(function () { if (guid === "") return; context.SetLegend(guid, createLegend()); }, [highlight, enabled]); React.useEffect(function () { var id = context.AddData(createContextData()); setGuid(id); return function () { context.RemoveData(id); }; }, []); var generateData = React.useCallback(function (pointsToDraw) { var e_1, _a; if (pointsToDraw.length === 0) return ""; var result = "M "; var parts = []; try { for (var pointsToDraw_1 = __values(pointsToDraw), pointsToDraw_1_1 = pointsToDraw_1.next(); !pointsToDraw_1_1.done; pointsToDraw_1_1 = pointsToDraw_1.next()) { var _b = __read(pointsToDraw_1_1.value, 2), xVal = _b[0], yVal = _b[1]; if (isNaN(xVal) || isNaN(yVal)) continue; var x = context.XTransformation(xVal); var y = context.YTransformation(yVal, GraphContext_1.AxisMap.get(props.axis)); parts.push("".concat(x, ",").concat(y)); } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (pointsToDraw_1_1 && !pointsToDraw_1_1.done && (_a = pointsToDraw_1.return)) _a.call(pointsToDraw_1); } finally { if (e_1) throw e_1.error; } } result += parts.join(" L "); return result; }, [context.XTransformation, context.YTransformation, props.axis]); return (enabled ? React.createElement("g", null, React.createElement("path", { d: generateData(points), style: { fill: 'none', strokeWidth: props.width === undefined ? 3 : props.width, stroke: props.color }, strokeDasharray: GraphContext_1.LineMap.get(props.lineStyle) }), showPoints && data != null ? points.map(function (pt, i) { if (isNaN(pt[0]) || isNaN(pt[1])) return null; return (React.createElement("circle", { key: i, r: 3, cx: context.XTransformation(pt[0]), cy: context.YTransformation(pt[1], GraphContext_1.AxisMap.get(props.axis)), fill: props.color, stroke: 'currentColor', style: { opacity: 0.8 /*, transition: 'cx 0.5s,cy 0.5s'*/ } })); }) : null, ((_b = props.highlightHover) !== null && _b !== void 0 ? _b : false) && !isNaN(highlight[0]) && !isNaN(highlight[1]) ? React.createElement("circle", { r: 5, cx: context.XTransformation(highlight[0]), cy: context.YTransformation(highlight[1], GraphContext_1.AxisMap.get(props.axis)), fill: props.color, stroke: 'currentColor', style: { opacity: 0.8 /*, transition: 'cx 0.5s,cy 0.5s'*/ } }) : null) : null); }); var Line = function (props) { return React.createElement(exports.InternalLine, __assign({}, props)); }; exports.default = Line; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9MaW5lLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEseUdBQXlHO0FBQ3pHLG1CQUFtQjtBQUNuQixFQUFFO0FBQ0YscUVBQXFFO0FBQ3JFLEVBQUU7QUFDRix3R0FBd0c7QUFDeEcsd0dBQXdHO0FBQ3hHLHNHQUFzRztBQUN0Ryx3RkFBd0Y7QUFDeEYsRUFBRTtBQUNGLDBDQUEwQztBQUMxQyxFQUFFO0FBQ0Ysd0dBQXdHO0FBQ3hHLHdHQUF3RztBQUN4Ryw0RUFBNEU7QUFDNUUsRUFBRTtBQUNGLDhCQUE4QjtBQUM5Qix3R0FBd0c7QUFDeEcsMEJBQTBCO0FBQzFCLG1EQUFtRDtBQUNuRCxFQUFFO0FBQ0YseUdBQXlHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV6Ryw2QkFBK0I7QUFDL0IsK0NBQXdHO0FBQ3hHLCtCQUFpQztBQUNqQyx5Q0FBd0M7QUFDeEMsMkNBQXNDO0FBa0J6QixRQUFBLFlBQVksR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFrQyxVQUFDLEtBQUssRUFBRSxHQUFHOztJQUNyRjs7TUFFRTtJQUNJLElBQUEsS0FBQSxPQUFrQixLQUFLLENBQUMsUUFBUSxDQUFTLEVBQUUsQ0FBQyxJQUFBLEVBQTNDLElBQUksUUFBQSxFQUFFLE9BQU8sUUFBOEIsQ0FBQztJQUM3QyxJQUFBLEtBQUEsT0FBNEIsS0FBSyxDQUFDLFFBQVEsQ0FBbUIsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBQSxFQUF2RSxTQUFTLFFBQUEsRUFBRSxZQUFZLFFBQWdELENBQUM7SUFDekUsSUFBQSxLQUFBLE9BQXdCLEtBQUssQ0FBQyxRQUFRLENBQVUsSUFBSSxDQUFDLElBQUEsRUFBcEQsT0FBTyxRQUFBLEVBQUUsVUFBVSxRQUFpQyxDQUFDO0lBQ3RELElBQUEsS0FBQSxPQUFrQixLQUFLLENBQUMsUUFBUSxDQUFtQixJQUFJLENB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