UNPKG

@gpa-gemstone/react-graph

Version:
131 lines 11.5 kB
"use strict"; // ****************************************************************************************************** // Bar.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: // ---------------------------------------------------------------------------------------------------- // 11/04/2025 - Gabriel 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 }); exports.StackedBar = void 0; var React = require("react"); var GraphContext_1 = require("./GraphContext"); var DataLegend_1 = require("./DataLegend"); var StackedBar = function (props) { var _a = __read(React.useState(undefined), 2), guid = _a[0], setGuid = _a[1]; var context = React.useContext(GraphContext_1.GraphContext); var createLegend = React.useCallback(function () { if (props.Legend === undefined || guid == null) return undefined; return React.createElement(DataLegend_1.default, { id: guid, label: props.Legend, color: props.Color, legendSymbol: 'square', setEnabled: function () { }, enabled: true, hasNoData: props.Data.length === 0 }); }, [props.Color, props.Data, guid]); var createContextData = React.useCallback(function () { return ({ legend: createLegend(), axis: props.Axis, enabled: true, getMax: function (t) { return props.Data.length <= 1 || props.BarOrigin < t[0] || props.BarOrigin > t[1] ? undefined : Math.max.apply(Math, __spreadArray([], __read(props.Data), false)); }, getMin: function (t) { return props.Data.length <= 1 || props.BarOrigin < t[0] || props.BarOrigin > t[1] ? undefined : Math.min.apply(Math, __spreadArray([], __read(props.Data), false)); }, }); }, [props.Axis, props.Data, createLegend]); 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); }; }, []); var bars = React.useMemo(function () { var _a; // not enough data to display if (props.Data.length === 0) return React.createElement(React.Fragment, null); var xValue; switch (props.XBarOrigin) { default: case 'left': xValue = props.BarOrigin; break; case 'right': xValue = props.BarOrigin - props.BarWidth; break; case 'center': xValue = props.BarOrigin - props.BarWidth / 2; break; } var rightEdge = context.XTransformation(xValue + props.BarWidth); var leftEdge = context.XTransformation(xValue); var axis = GraphContext_1.AxisMap.get(props.Axis); var yValues = __spreadArray([], __read(props.Data), false); // Insert bottom of bar if only 1 value exists if (yValues.length === 1) yValues.push(context.YDomain[axis][0]); yValues = yValues.map(function (yVal) { return context.YTransformation(Math.min(yVal, context.YDomain[axis][1]), axis); }); yValues.sort(function (a, b) { return a - b; }); var newBars = []; for (var yIndex = 0; yIndex < yValues.length - 1; yIndex++) { newBars.push(React.createElement("rect", { key: yIndex, x: leftEdge, y: yValues[yIndex], width: rightEdge - leftEdge, height: yValues[yIndex + 1] - yValues[yIndex], fill: props.Color, opacity: (_a = props.Opacity) !== null && _a !== void 0 ? _a : 0.5, stroke: props.StrokeColor, strokeWidth: props.StrokeWidth })); } return newBars; }, [props, context]); return React.createElement("g", null, bars); }; exports.StackedBar = StackedBar; exports.default = exports.StackedBar; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0Jhci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHlHQUF5RztBQUN6RyxrQkFBa0I7QUFDbEIsRUFBRTtBQUNGLHFFQUFxRTtBQUNyRSxFQUFFO0FBQ0Ysd0dBQXdHO0FBQ3hHLHdHQUF3RztBQUN4RyxzR0FBc0c7QUFDdEcsd0ZBQXdGO0FBQ3hGLEVBQUU7QUFDRiwwQ0FBMEM7QUFDMUMsRUFBRTtBQUNGLHdHQUF3RztBQUN4Ryx3R0FBd0c7QUFDeEcsNEVBQTRFO0FBQzVFLEVBQUU7QUFDRiw4QkFBOEI7QUFDOUIsd0dBQXdHO0FBQ3hHLCtCQUErQjtBQUMvQixtREFBbUQ7QUFDbkQsRUFBRTtBQUNGLHlHQUF5Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV6Ryw2QkFBK0I7QUFDL0IsK0NBQW9GO0FBQ3BGLDJDQUFzQztBQThDL0IsSUFBTSxVQUFVLEdBQUcsVUFBQyxLQUFnQjtJQUNqQyxJQUFBLEtBQUEsT0FBa0IsS0FBSyxDQUFDLFFBQVEsQ0FBbUIsU0FBUyxDQUFDLElBQUEsRUFBNUQsSUFBSSxRQUFBLEVBQUUsT0FBTyxRQUErQyxDQUFDO0lBQ3BFLElBQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsMkJBQVksQ0FBQyxDQUFDO0lBRS9DLElBQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDbkMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxJQUFJLElBQUksSUFBSTtZQUMxQyxPQUFPLFNBQVMsQ0FBQztRQUVyQixPQUFPLG9CQUFDLG9CQUFVLElBQ2QsRUFBRSxFQUFFLElBQUksRUFDUixLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFDbkIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQ2xCLFlBQVksRUFBQyxRQUFRLEVBQ3JCLFVBQVUsRUFBRSxjQUFxQixDQUFDLEVBQ2xDLE9BQU8sRUFB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