UNPKG

@gpa-gemstone/react-graph

Version:
159 lines 13.9 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 __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 __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 defaultStyle = { Opacity: 0.5, StrokeColor: "black" }; 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 () { // 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]); // Sort Values in ascending order yValues.sort(function (a, b) { return a - b; }); var newBars = []; for (var yIndex = 0; yIndex < yValues.length - 1; yIndex++) { // This looks backwards but isn't, asc in values === desc in pixels var yUpper = context.YTransformation(yValues[yIndex], axis); var yLower = context.YTransformation(yValues[yIndex + 1], axis); var style = props.GetBarStyle == null ? __assign(__assign({}, defaultStyle), { Color: props.Color }) : __assign(__assign(__assign({}, defaultStyle), { Color: props.Color }), props.GetBarStyle([yValues[yIndex], yValues[yIndex + 1]], yIndex)); var fillProp = void 0; switch (style.Fill) { default: case "Solid": fillProp = style.Color; break; case "Hatched": fillProp = "url(#".concat(guid, "_").concat(yIndex, ")"); newBars.push(React.createElement("pattern", { id: "".concat(guid, "_").concat(yIndex), width: "24", height: "24", patternUnits: "userSpaceOnUse", key: "hatch_".concat(yIndex) }, React.createElement("path", { d: "M -3 3 L 6 -6 M 0 24 L 24 0 M 21 27 L 30 18", strokeWidth: 6, stroke: style.Color }))); break; } newBars.push(React.createElement("rect", { key: yIndex, x: leftEdge, y: yLower, width: rightEdge - leftEdge, height: yUpper - yLower, fill: fillProp, opacity: style.Opacity, stroke: style.StrokeColor, strokeWidth: style.StrokeWidth })); } return newBars; }, [props, context]); return React.createElement("g", null, bars); }; exports.StackedBar = StackedBar; exports.default = exports.StackedBar; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0Jhci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHlHQUF5RztBQUN6RyxrQkFBa0I7QUFDbEIsRUFBRTtBQUNGLHFFQUFxRTtBQUNyRSxFQUFFO0FBQ0Ysd0dBQXdHO0FBQ3hHLHdHQUF3RztBQUN4RyxzR0FBc0c7QUFDdEcsd0ZBQXdGO0FBQ3hGLEVBQUU7QUFDRiwwQ0FBMEM7QUFDMUMsRUFBRTtBQUNGLHdHQUF3RztBQUN4Ryx3R0FBd0c7QUFDeEcsNEVBQTRFO0FBQzVFLEVBQUU7QUFDRiw4QkFBOEI7QUFDOUIsd0dBQXdHO0FBQ3hHLCtCQUErQjtBQUMvQixtREFBbUQ7QUFDbkQsRUFBRTtBQUNGLHlHQUF5Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXpHLDZCQUErQjtBQUMvQiwrQ0FBb0Y7QUFDcEYsMkNBQXNDO0FBaUV0QyxJQUFNLFlBQVksR0FBYztJQUM1QixPQUFPLEVBQUUsR0FBRztJQUNaLFdBQVcsRUFBRSxPQUFPO0NBQ3ZCLENBQUE7QUFFTSxJQUFNLFVBQVUsR0FBRyxVQUFDLEtBQWdCO0lBQ2pDLElBQUEsS0FBQSxPQUFrQixLQUFLLENBQUMsUUFBUSxDQUFtQixTQUFTLENBQUMsSUFBQSxFQUE1RCxJQUFJLFFBQUEsRUFBRSxPQUFPLFFBQStDLENBQUM7SUFDcEUsSUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQywyQkFBWSxDQUFDLENBQUM7SUFFL0MsSUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztRQUNuQyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksU0FBUyxJQUFJLElBQUksSUFBSSxJQUFJO1lBQ3pDLE9BQU8sU0FBUyxDQUFDO1FBRXJCLE9BQU8sb0JBQUMsb0JBQVUsSUFDZCxFQUFFLEVBQUUsSUFBSSxFQUNSLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxFQUNuQixLQUFL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