@gpa-gemstone/react-graph
Version:
Interactive UI Components for GPA products
97 lines • 11 kB
JavaScript
"use strict";
// ******************************************************************************************************
// HeatLegend.tsx - Gbtc
//
// Copyright © 2023, 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/21/2023 - G. 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;
};
Object.defineProperty(exports, "__esModule", { value: true });
var React = require("react");
var LegendContext_1 = require("./LegendContext");
var SvgStyle = {
fill: 'none',
userSelect: 'none',
WebkitTouchCallout: 'none',
WebkitUserSelect: 'none',
KhtmlUserSelect: 'none',
MozUserSelect: 'none',
msUserSelect: 'none',
pointerEvents: 'none',
};
var TextStyle = {
fontSize: '1em',
textAnchor: 'middle',
dominantBaseline: 'hanging',
transition: 'x 0.5s, y 0.5s'
};
function HeatLegend(props) {
var _a = __read(React.useState(1), 2), nDigits = _a[0], setNdigits = _a[1];
var context = React.useContext(LegendContext_1.LegendContext);
var hLegend = context.LgHeight;
var wLegend = context.LgWidth;
// Determine the number of decimal digits to display based on the value range
React.useEffect(function () {
var delta = props.maxValue - props.minValue;
if (delta === 0)
delta = Math.abs(props.minValue);
if (delta >= 15)
setNdigits(0);
if (delta < 15 && delta >= 1.5)
setNdigits(1);
if (delta < 1.5 && delta >= 0.15)
setNdigits(2);
if (delta < 0.15)
setNdigits(3);
if (delta < 0.015)
setNdigits(4);
if (delta < 0.0015)
setNdigits(5);
if (delta === 0)
setNdigits(2);
}, [props.maxValue, props.minValue]);
return (React.createElement("div", { style: { height: hLegend, width: wLegend } },
React.createElement("div", { style: { width: '100%', display: 'flex', alignItems: 'center', marginRight: '5px', height: '100%' } },
React.createElement("svg", { style: SvgStyle, viewBox: "0 0 ".concat(wLegend, " ").concat(hLegend) },
React.createElement("linearGradient", { id: props.id, x1: "0", x2: "".concat(wLegend < hLegend ? 0 : 1), y1: "0", y2: "".concat(wLegend < hLegend ? 1 : 0) },
React.createElement("stop", { offset: "5%", stopColor: props.minColor }),
React.createElement("stop", { offset: "95%", stopColor: props.maxColor })),
React.createElement("path", { stroke: 'currentColor', fill: "url(#".concat(props.id, ")"), style: { strokeWidth: 1, transition: 'd 0.5s' }, d: wLegend < hLegend ?
"M ".concat(0.05 * wLegend, " ").concat(0.1 * hLegend, " H ").concat(0.5 * wLegend, " V ").concat(0.9 * hLegend, " H ").concat(0.05 * wLegend, " V ").concat(0.1 * hLegend) :
"M ".concat(0.1 * wLegend, " ").concat(0.05 * hLegend, " H ").concat(0.9 * wLegend, " V ").concat(0.5 * hLegend, " H ").concat(0.1 * wLegend, " V ").concat(0.05 * hLegend) }),
React.createElement("text", { fill: 'currentColor', style: TextStyle, x: wLegend * (wLegend < hLegend ? 0.5 : 0.1), y: hLegend * (wLegend < hLegend ? 0.1 : 0.5), transform: "rotate(".concat(wLegend < hLegend ? 270 : 0, ",").concat(wLegend * (wLegend < hLegend ? 0.5 : 0.1), ",").concat(hLegend * (wLegend < hLegend ? 0.1 : 0.5), ")") }, "".concat(props.minValue.toFixed(nDigits)).concat(props.unitLabel !== undefined ? "".concat(props.unitLabel) : '')),
React.createElement("text", { fill: 'currentColor', style: TextStyle, x: wLegend * (wLegend < hLegend ? 0.5 : 0.9), y: hLegend * (wLegend < hLegend ? 0.9 : 0.5), transform: "rotate(".concat(wLegend < hLegend ? 270 : 0, ",").concat(wLegend * (wLegend < hLegend ? 0.5 : 0.9), ",").concat(hLegend * (wLegend < hLegend ? 0.9 : 0.5), ")") }, "".concat(props.maxValue.toFixed(nDigits)).concat(props.unitLabel !== undefined ? "".concat(props.unitLabel) : ''))))));
}
exports.default = HeatLegend;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGVhdExlZ2VuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9IZWF0TGVnZW5kLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEseUdBQXlHO0FBQ3pHLHlCQUF5QjtBQUN6QixFQUFFO0FBQ0YscUVBQXFFO0FBQ3JFLEVBQUU7QUFDRix3R0FBd0c7QUFDeEcsd0dBQXdHO0FBQ3hHLHNHQUFzRztBQUN0Ryx3RkFBd0Y7QUFDeEYsRUFBRTtBQUNGLDBDQUEwQztBQUMxQyxFQUFFO0FBQ0Ysd0dBQXdHO0FBQ3hHLHdHQUF3RztBQUN4Ryw0RUFBNEU7QUFDNUUsRUFBRTtBQUNGLDhCQUE4QjtBQUM5Qix3R0FBd0c7QUFDeEcsMEJBQTBCO0FBQzFCLG1EQUFtRDtBQUNuRCxFQUFFO0FBQ0YseUdBQXlHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHekcsNkJBQStCO0FBQy9CLGlEQUFzRTtBQVl0RSxJQUFNLFFBQVEsR0FBd0I7SUFDcEMsSUFBSSxFQUFFLE1BQU07SUFDWixVQUFVLEVBQUUsTUFBTTtJQUNsQixrQkFBa0IsRUFBRSxNQUFNO0lBQzFCLGdCQUFnQixFQUFFLE1BQU07SUFDeEIsZUFBZSxFQUFFLE1BQU07SUFDdkIsYUFBYSxFQUFFLE1BQU07SUFDckIsWUFBWSxFQUFFLE1BQU07SUFDcEIsYUFBYSxFQUFFLE1BQU07Q0FDdEIsQ0FBQztBQUVGLElBQU0sU0FBUyxHQUF3QjtJQUNyQyxRQUFRLEVBQUUsS0FBSztJQUNmLFVBQVUsRUFBRSxRQUFRO0lBQ3BCLGdCQUFnQixFQUFFLFNBQVM7SUFDM0IsVUFBVSxFQUFFLGdCQUFnQjtDQUM3QixDQUFDO0FBRUYsU0FBUyxVQUFVLENBQUMsS0FBYTtJQUN6QixJQUFBLEtBQUEsT0FBd0IsS0FBSyxDQUFDLFFBQVEsQ0FBUyxDQUFDLENBQUMsSUFBQSxFQUFoRCxPQUFPLFFBQUEsRUFBRSxVQUFVLFFBQTZCLENBQUM7SUFDeEQsSUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyw2QkFBYSxDQUFDLENBQUM7SUFDaEQsSUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUNqQyxJQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBRWhDLDZFQUE2RTtJQUM3RSxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQ2QsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQzVDLElBQUksS0FBSyxLQUFLLENBQUM7WUFDYixLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFbkMsSUFBSSxLQUFLLElBQUksRUFBRTtZQUNYLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQixJQUFJLEtBQUssR0FBRyxFQUFFLElBQUksS0FBSyxJQUFJLEdBQUc7WUFDMUIsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xCLElBQUksS0FBSyxHQUFHLEdBQUcsSUFBSSxLQUFLLElBQUksSUFBSTtZQUM1QixVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEIsSUFBSSxLQUFLLEdBQUcsSUFBSTtZQUNaLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNqQixJQUFJLEtBQUssR0FBRyxLQUFLO1lBQ2YsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2YsSUFBSSxLQUFLLEdBQUcsTUFBTTtZQUNoQixVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEIsSUFBSSxLQUFLLEtBQUssQ0FBQztZQUNiLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVsQixDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBRXJDLE9BQU8sQ0FDTCw2QkFBSyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7UUFDN0MsNkJBQUssS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxFQUFFO1lBQ3JHLDZCQUFLLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLGNBQU8sT0FBTyxjQUFJLE9BQU8sQ0FBRTtnQkFFMUQsd0NBQWdCLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFFLFVBQUcsT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUUsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBRSxVQUFHLE9BQU8sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFFO29CQUM5Ryw4QkFBTSxNQUFNLEVBQUMsSUFBSSxFQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsUUFBUSxHQUFJO29CQUMvQyw4QkFBTSxNQUFNLEVBQUMsS0FBSyxFQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsUUFBUSxHQUFJLENBQ2pDO2dCQUduQiw4QkFDRSxNQUFNLEVBQUMsY0FBYyxFQUNyQixJQUFJLEVBQUUsZUFBUSxLQUFLLENBQUMsRUFBRSxNQUFHLEVBQ3pCLEtBQUssRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxFQUM3QyxDQUFDLEVBQUUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDO3dCQUNwQixZQUFLLElBQUksR0FBQyxPQUFPLGNBQUksR0FBRyxHQUFDLE9BQU8sZ0JBQU0sR0FBRyxHQUFDLE9BQU8sZ0JBQU0sR0FBRyxHQUFDLE9BQU8sZ0JBQU0sSUFBSSxHQUFDLE9BQU8sZ0JBQU0sR0FBRyxHQUFDLE9BQU8sQ0FBRSxDQUFDLENBQUM7d0JBQ3pHLFlBQUssR0FBRyxHQUFDLE9BQU8sY0FBSSxJQUFJLEdBQUMsT0FBTyxnQkFBTSxHQUFHLEdBQUMsT0FBTyxnQkFBTSxHQUFHLEdBQUMsT0FBTyxnQkFBTSxHQUFHLEdBQUMsT0FBTyxnQkFBTSxJQUFJLEdBQUMsT0FBTyxDQUFFLEdBQzNHO2dCQUdGLDhCQUFNLElBQUksRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxHQUFDLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxHQUFDLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFDbEksU0FBUyxFQUFFLGlCQUFVLE9BQU8sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFJLE9BQU8sR0FBQyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGNBQUksT0FBTyxHQUFDLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBRyxJQUN0SSxVQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFHLEtBQUssQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxVQUFHLEtBQUssQ0FBQyxTQUFTLENBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFFLENBQzVGO2dCQUVULDhCQUFNLElBQUksRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxHQUFDLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxHQUFDLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFDbEksU0FBUyxFQUFFLGlCQUFVLE9BQU8sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFJLE9BQU8sR0FBQyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGNBQUksT0FBTyxHQUFDLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBRyxJQUN0SSxVQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFHLEtBQUssQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxVQUFHLEtBQUssQ0FBQyxTQUFTLENBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFFLENBQzVGLENBQ0gsQ0FDRixDQUNGLENBQ1AsQ0FBQztBQUNKLENBQUM7QUFFRCxrQkFBZSxVQUFVLENBQUMifQ==