UNPKG

@gpa-gemstone/react-graph

Version:
132 lines 15.9 kB
"use strict"; // ****************************************************************************************************** // XValueAxis.tsx - Gbtc // // Copyright © 2021, 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: // ---------------------------------------------------------------------------------------------------- // 10/22/2024 - Preston Crawford // 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 helper_functions_1 = require("@gpa-gemstone/helper-functions"); function XValueAxis(props) { var _a, _b, _c, _d, _e; var context = React.useContext(GraphContext_1.GraphContext); var _f = __read(React.useState([]), 2), tick = _f[0], setTick = _f[1]; var _g = __read(React.useState(0), 2), hLabel = _g[0], setHlabel = _g[1]; var _h = __read(React.useState(0), 2), hAxis = _h[0], setHAxis = _h[1]; var _j = __read(React.useState(props.label), 2), title = _j[0], setTitle = _j[1]; var _k = __read(React.useState(0), 2), decimalPlaces = _k[0], setDecimalPlaces = _k[1]; // Adjust space for X Axis labels React.useEffect(function () { setHlabel(title != null ? (0, helper_functions_1.GetTextHeight)('Segoe UI', '1em', title) : 0); }, [title]); // Adjust axis title React.useEffect(function () { var _a; setTitle((_a = props.label) !== null && _a !== void 0 ? _a : ''); }, [props.label]); //Calculate ticks React.useEffect(function () { var deltaX = context.XDomain[1] - context.XDomain[0]; if (deltaX === 0) return; var _a = calculateTickInterval(context.XDomain[0], context.XDomain[1]), tickInterval = _a.tickInterval, decimalPlaces = _a.decimalPlaces; var startTick = Math.ceil(context.XDomain[0] / tickInterval) * tickInterval; var endTick = context.XDomain[1]; var newTicks = []; for (var t = startTick; t <= endTick; t += tickInterval) { newTicks.push(t); } setTick(newTicks); setDecimalPlaces(decimalPlaces); }, [context.XDomain]); //Adjust spacing for tick labels React.useEffect(function () { var maxLabelHeight = Math.max.apply(Math, __spreadArray([], __read(tick.map(function (t) { return (0, helper_functions_1.GetTextHeight)('Segoe UI', '1em', formatNumber(t, decimalPlaces)); })), false)); var dX = (isFinite(maxLabelHeight) ? maxLabelHeight : 0) + 12; setHAxis(dX); }, [tick, decimalPlaces]); //Adjust axis height React.useEffect(function () { if (hAxis + hLabel !== props.heightAxis) props.setHeight(hAxis + hLabel); }, [hAxis, hLabel, props.heightAxis]); return (React.createElement("g", null, React.createElement("path", { stroke: "currentColor", style: { strokeWidth: 1 }, d: "M ".concat(props.offsetLeft - (((_a = props.showLeftMostTick) !== null && _a !== void 0 ? _a : true) ? 0 : 8), " ").concat(props.height - props.offsetBottom, " H ").concat(props.width - props.offsetRight + (((_b = props.showRightMostTick) !== null && _b !== void 0 ? _b : true) ? 0 : 8)) }), ((_c = props.showLeftMostTick) !== null && _c !== void 0 ? _c : true) ? (React.createElement("path", { stroke: "currentColor", style: { strokeWidth: 1 }, d: "M ".concat(props.offsetLeft, " ").concat(props.height - props.offsetBottom, " v 8") })) : null, ((_d = props.showRightMostTick) !== null && _d !== void 0 ? _d : true) ? (React.createElement("path", { stroke: "currentColor", style: { strokeWidth: 1 }, d: "M ".concat(props.width - props.offsetRight, " ").concat(props.height - props.offsetBottom, " v 8") })) : null, (React.createElement(React.Fragment, null, tick.map(function (l, i) { return (React.createElement("path", { key: i, stroke: "currentColor", style: { strokeWidth: 1, transition: 'd 0.5s' }, d: "M ".concat(context.XTransformation(l), " ").concat(props.height - props.offsetBottom + 6, " v -6") })); }), tick.map(function (l, i) { return (React.createElement("text", { fill: "currentColor", key: i, style: { fontSize: '1em', textAnchor: 'middle', dominantBaseline: 'hanging', transition: 'x 0.5s, y 0.5s', }, y: props.height - props.offsetBottom + 8, x: context.XTransformation(l) }, formatNumber(l, decimalPlaces))); }), ((_e = props.showGrid) !== null && _e !== void 0 ? _e : false) ? tick.map(function (l, i) { return React.createElement("path", { key: (l.toFixed(50)), stroke: 'lightgrey', strokeOpacity: '0.8', style: { strokeWidth: 1, transition: 'd 0.5s' }, d: "M ".concat(context.XTransformation(l), " ").concat(props.height - props.offsetBottom, " V ").concat(props.offsetTop) }); }) : React.createElement(React.Fragment, null))), title != null ? (React.createElement("text", { fill: "currentColor", style: { fontSize: '1em', textAnchor: 'middle', dominantBaseline: 'middle' }, x: props.offsetLeft + (props.width - props.offsetLeft - props.offsetRight) / 2, y: props.height - props.offsetBottom + hAxis }, title)) : null)); } //helper functions var formatNumber = function (value, decimalPlaces) { return value.toFixed(decimalPlaces); }; var calculateTickInterval = function (min, max) { var range = max - min; var desiredTicks = 7; var rawTickInterval = range / desiredTicks; var exponent = Math.floor(Math.log10(rawTickInterval)); var fraction = rawTickInterval / Math.pow(10, exponent); var niceFraction; if (fraction <= 1) niceFraction = 1; else if (fraction <= 2) niceFraction = 2; else if (fraction <= 5) niceFraction = 5; else niceFraction = 10; var tickInterval = niceFraction * Math.pow(10, exponent); var decimalPlaces = Math.max(0, -Math.floor(Math.log10(tickInterval))); return { tickInterval: tickInterval, decimalPlaces: decimalPlaces }; }; exports.default = React.memo(XValueAxis); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWFZhbHVlQXhpcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9YVmFsdWVBeGlzLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEseUdBQXlHO0FBQ3pHLHlCQUF5QjtBQUN6QixFQUFFO0FBQ0YscUVBQXFFO0FBQ3JFLEVBQUU7QUFDRix3R0FBd0c7QUFDeEcsd0dBQXdHO0FBQ3hHLHNHQUFzRztBQUN0Ryx3RkFBd0Y7QUFDeEYsRUFBRTtBQUNGLDBDQUEwQztBQUMxQyxFQUFFO0FBQ0Ysd0dBQXdHO0FBQ3hHLHdHQUF3RztBQUN4Ryw0RUFBNEU7QUFDNUUsRUFBRTtBQUNGLDhCQUE4QjtBQUM5Qix3R0FBd0c7QUFDeEcsaUNBQWlDO0FBQ2pDLG1EQUFtRDtBQUNuRCxFQUFFO0FBQ0YseUdBQXlHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFekcsNkJBQStCO0FBQy9CLCtDQUE4QztBQUM5QyxtRUFBK0Q7QUFpQi9ELFNBQVMsVUFBVSxDQUFDLEtBQWE7O0lBQzdCLElBQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsMkJBQVksQ0FBQyxDQUFDO0lBQ3pDLElBQUEsS0FBQSxPQUFrQixLQUFLLENBQUMsUUFBUSxDQUFXLEVBQUUsQ0FBQyxJQUFBLEVBQTdDLElBQUksUUFBQSxFQUFFLE9BQU8sUUFBZ0MsQ0FBQztJQUMvQyxJQUFBLEtBQUEsT0FBc0IsS0FBSyxDQUFDLFFBQVEsQ0FBUyxDQUFDLENBQUMsSUFBQSxFQUE5QyxNQUFNLFFBQUEsRUFBRSxTQUFTLFFBQTZCLENBQUM7SUFDaEQsSUFBQSxLQUFBLE9BQW9CLEtBQUssQ0FBQyxRQUFRLENBQVMsQ0FBQyxDQUFDLElBQUEsRUFBNUMsS0FBSyxRQUFBLEVBQUUsUUFBUSxRQUE2QixDQUFDO0lBQzlDLElBQUEsS0FBQSxPQUFvQixLQUFLLENBQUMsUUFBUSxDQUFxQixLQUFLLENBQUMsS0FBSyxDQUFDLElBQUEsRUFBbEUsS0FBSyxRQUFBLEVBQUUs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