@gpa-gemstone/react-graph
Version:
Interactive UI Components for GPA products
131 lines • 11.5 kB
JavaScript
;
// ******************************************************************************************************
// 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0Jhci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHlHQUF5RztBQUN6RyxrQkFBa0I7QUFDbEIsRUFBRTtBQUNGLHFFQUFxRTtBQUNyRSxFQUFFO0FBQ0Ysd0dBQXdHO0FBQ3hHLHdHQUF3RztBQUN4RyxzR0FBc0c7QUFDdEcsd0ZBQXdGO0FBQ3hGLEVBQUU7QUFDRiwwQ0FBMEM7QUFDMUMsRUFBRTtBQUNGLHdHQUF3RztBQUN4Ryx3R0FBd0c7QUFDeEcsNEVBQTRFO0FBQzVFLEVBQUU7QUFDRiw4QkFBOEI7QUFDOUIsd0dBQXdHO0FBQ3hHLCtCQUErQjtBQUMvQixtREFBbUQ7QUFDbkQsRUFBRTtBQUNGLHlHQUF5Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV6Ryw2QkFBK0I7QUFDL0IsK0NBQW9GO0FBQ3BGLDJDQUFzQztBQThDL0IsSUFBTSxVQUFVLEdBQUcsVUFBQyxLQUFnQjtJQUNqQyxJQUFBLEtBQUEsT0FBa0IsS0FBSyxDQUFDLFFBQVEsQ0FBbUIsU0FBUyxDQUFDLElBQUEsRUFBNUQsSUFBSSxRQUFBLEVBQUUsT0FBTyxRQUErQyxDQUFDO0lBQ3BFLElBQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsMkJBQVksQ0FBQyxDQUFDO0lBRS9DLElBQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDbkMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxJQUFJLElBQUksSUFBSTtZQUMxQyxPQUFPLFNBQVMsQ0FBQztRQUVyQixPQUFPLG9CQUFDLG9CQUFVLElBQ2QsRUFBRSxFQUFFLElBQUksRUFDUixLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFDbkIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQ2xCLFlBQVksRUFBQyxRQUFRLEVBQ3JCLFVBQVUsRUFBRSxjQUFxQixDQUFDLEVBQ2xDLE9BQU8sRUFBRSxJQUFJLEVBQ2IsU0FBUyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsR0FBSSxDQUFDO0lBQy9DLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBRW5DLElBQU0saUJBQWlCLEdBQXNCLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDM0QsT0FBQSxDQUFDO1lBQ0csTUFBTSxFQUFFLFlBQVksRUFBRTtZQUN0QixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsT0FBTyxFQUFFLElBQUk7WUFDYixNQUFNLEVBQUUsVUFBQyxDQUFtQjtnQkFDeEIsT0FBQSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDeEUsU0FBUyxDQUFDLENBQUMsQ0FDWCxJQUFJLENBQUMsR0FBRyxPQUFSLElBQUksMkJBQVEsS0FBSyxDQUFDLElBQUksVUFBQztZQUYzQixDQUUyQjtZQUMvQixNQUFNLEVBQUUsVUFBQyxDQUFtQjtnQkFDeEIsT0FBQSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDeEUsU0FBUyxDQUFDLENBQUMsQ0FDWCxJQUFJLENBQUMsR0FBRyxPQUFSLElBQUksMkJBQVEsS0FBSyxDQUFDLElBQUksVUFBQztZQUYzQixDQUUyQjtTQUNsQixDQUFBO0lBWmpCLENBWWlCLEVBQ25CLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFFMUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUNaLElBQUksSUFBSSxJQUFJLElBQUk7WUFBRSxPQUFPO1FBQ3pCLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFLENBQUMsQ0FBQztJQUNsRCxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBRTlCLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDWixJQUFJLElBQUksSUFBSSxJQUFJO1lBQUUsT0FBTztRQUN6QixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFFbkIsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUNaLElBQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNaLE9BQU8sY0FBUSxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFBO0lBQzNDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUVQLElBQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7O1FBQ3ZCLDZCQUE2QjtRQUM3QixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPLHlDQUFLLENBQUM7UUFFMUMsSUFBSSxNQUFjLENBQUM7UUFDbkIsUUFBUSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDdkIsUUFBUTtZQUNSLEtBQUssTUFBTTtnQkFDUCxNQUFNLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztnQkFDekIsTUFBTTtZQUNWLEtBQUssT0FBTztnQkFDUixNQUFNLEdBQUcsS0FBSyxDQUFDLFNBQVMsR0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO2dCQUN4QyxNQUFNO1lBQ1YsS0FBSyxRQUFRO2dCQUNULE1BQU0sR0FBRyxLQUFLLENBQUMsU0FBUyxHQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO2dCQUM1QyxNQUFNO1FBQ2QsQ0FBQztRQUNELElBQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqRSxJQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pELElBQU0sSUFBSSxHQUFHLHNCQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxJQUFJLE9BQU8sNEJBQU8sS0FBSyxDQUFDLElBQUksU0FBQyxDQUFDO1FBQzlCLDhDQUE4QztRQUM5QyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUNwQixPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUzQyxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFBLElBQUk7WUFDdEIsT0FBQSxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUM7UUFBdkUsQ0FBdUUsQ0FDMUUsQ0FBQztRQUNGLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBQyxDQUFDLEVBQUMsQ0FBQyxJQUFLLE9BQUEsQ0FBQyxHQUFDLENBQUMsRUFBSCxDQUFHLENBQUMsQ0FBQztRQUUzQixJQUFNLE9BQU8sR0FBa0IsRUFBRSxDQUFDO1FBQ2xDLEtBQUksSUFBSSxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBQyxDQUFDO1lBQ3JELE9BQU8sQ0FBQyxJQUFJLENBQ1IsOEJBQ0ksR0FBRyxFQUFFLE1BQU0sRUFDWCxDQUFDLEVBQUUsUUFBUSxFQUNYLENBQUMsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQ2xCLEtBQUssRUFBRSxTQUFTLEdBQUMsUUFBUSxFQUN6QixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUMsR0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQ3pDLElBQUksRUFBRSxLQUFLLENBQUMsS0FBSyxFQUNqQixPQUFPLEVBQUUsTUFBQSxLQUFLLENBQUMsT0FBTyxtQ0FBSSxHQUFHLEVBQzdCLE1BQU0sRUFBRSxLQUFLLENBQUMsV0FBVyxFQUN6QixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsR0FDaEMsQ0FDTCxDQUFDO1FBQ04sQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBRXJCLE9BQU8sK0JBQUksSUFBSSxDQUFLLENBQUE7QUFDeEIsQ0FBQyxDQUFBO0FBcEdZLFFBQUEsVUFBVSxjQW9HdEI7QUFFRCxrQkFBZSxrQkFBVSxDQUFDIn0=