@gpa-gemstone/react-graph
Version:
Interactive UI Components for GPA products
119 lines • 13 kB
JavaScript
;
// ******************************************************************************************************
// HeatMapChart.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:
// ----------------------------------------------------------------------------------------------------
// 09/05/2021 - 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 helper_functions_1 = require("@gpa-gemstone/helper-functions");
var GraphContext_1 = require("./GraphContext");
var PointNode_1 = require("./PointNode");
var HeatLegend_1 = require("./HeatLegend");
function HeatMapChart(props) {
/*
Single Line with ability to turn off and on.
*/
var _a = __read(React.useState(""), 2), guid = _a[0], setGuid = _a[1];
var _b = __read(React.useState(null), 2), data = _b[0], setData = _b[1];
var _c = __read(React.useState(0), 2), barWidth = _c[0], setBarWidth = _c[1];
var context = React.useContext(GraphContext_1.GraphContext);
var allBarBottoms = React.useMemo(function () { return context.YTransformation(context.YDomain[GraphContext_1.AxisMap.get(props.axis)][0], GraphContext_1.AxisMap.get(props.axis)); }, [context.YTransformation, context.YDomain, props.axis]);
var zLimits = React.useMemo(function () {
if (data == null)
return [0, 1];
return data.GetLimits(context.XDomain[0], context.XDomain[1], 1);
}, [data, context.XDomain]);
function getAllBarOffset() {
switch (props.barAlign) {
case 'left':
return 0;
case 'center':
return 0.5 * barWidth;
case 'right':
return barWidth;
}
return 0;
}
var allBarOffset = getAllBarOffset();
React.useEffect(function () {
if (data == null || guid === "")
return;
if (props.sampleMs !== undefined) {
setBarWidth(context.XTransformation(data.minT + props.sampleMs) - context.XTransformation(data.minT));
return;
}
setBarWidth((context.XTransformation(data.maxT) - context.XTransformation(data.minT)) / data.GetFullData().length);
}, [data, context.XTransformation, props.sampleMs]);
var createLegend = React.useCallback(function () {
return React.createElement(HeatLegend_1.default, { id: guid, unitLabel: props.legendUnit, enabled: true, minColor: (0, helper_functions_1.HsvToHex)(props.hue, props.saturation, 1), maxColor: (0, helper_functions_1.HsvToHex)(props.hue, props.saturation, 0), minValue: zLimits[0], maxValue: zLimits[1] });
}, [props.legendUnit, zLimits, props.hue, props.saturation, guid]);
React.useEffect(function () {
setData(new PointNode_1.PointNode(props.data));
}, [props.data]);
React.useEffect(function () {
if (guid === "")
return;
context.UpdateData(guid, {
axis: props.axis,
legend: createLegend(),
enabled: true,
getMax: function (t) { return (data == null ? -Infinity : data.GetLimits(t[0], t[1], 0)[1]); },
getMin: function (t) { return (data == null ? Infinity : data.GetLimits(t[0], t[1], 0)[0]); },
});
}, [props, data, createLegend]);
React.useEffect(function () {
var id = context.AddData({
axis: props.axis,
legend: createLegend(),
enabled: false,
getMax: function (t) { return (data == null ? -Infinity : data.GetLimits(t[0], t[1], 0)[1]); },
getMin: function (t) { return (data == null ? Infinity : data.GetLimits(t[0], t[1], 0)[0]); },
});
setGuid(id);
return function () { context.RemoveData(id); };
}, []);
return (React.createElement("g", null, data == null ? null :
data.GetFullData().map(function (pt, i) {
var _a;
var barTop = context.YTransformation(pt[1] + ((_a = props.binSize) !== null && _a !== void 0 ? _a : 0), GraphContext_1.AxisMap.get(props.axis));
var value = 1 - (pt[2] - zLimits[0]) / (zLimits[1] - zLimits[0]);
var color = (0, helper_functions_1.HsvToHex)(props.hue, props.saturation, value);
return React.createElement("rect", { key: i, x: context.XTransformation(pt[0]) - allBarOffset, y: barTop, width: barWidth, height: Math.abs(barTop - (props.binSize !== undefined ? context.YTransformation(pt[1], GraphContext_1.AxisMap.get(props.axis)) : allBarBottoms)), fill: color, stroke: color });
})));
}
exports.default = HeatMapChart;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGVhdE1hcENoYXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0hlYXRNYXBDaGFydC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHlHQUF5RztBQUN6RywyQkFBMkI7QUFDM0IsRUFBRTtBQUNGLHFFQUFxRTtBQUNyRSxFQUFFO0FBQ0Ysd0dBQXdHO0FBQ3hHLHdHQUF3RztBQUN4RyxzR0FBc0c7QUFDdEcsd0ZBQXdGO0FBQ3hGLEVBQUU7QUFDRiwwQ0FBMEM7QUFDMUMsRUFBRTtBQUNGLHdHQUF3RztBQUN4Ryx3R0FBd0c7QUFDeEcsNEVBQTRFO0FBQzVFLEVBQUU7QUFDRiw4QkFBOEI7QUFDOUIsd0dBQXdHO0FBQ3hHLDBCQUEwQjtBQUMxQixtREFBbUQ7QUFDbkQsRUFBRTtBQUNGLHlHQUF5Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR3pHLDZCQUErQjtBQUMvQixtRUFBd0Q7QUFDeEQsK0NBQTZGO0FBQzdGLHlDQUFzQztBQUN0QywyQ0FBc0M7QUFrQnRDLFNBQVMsWUFBWSxDQUFDLEtBQWE7SUFDL0I7O01BRUU7SUFDSSxJQUFBLEtBQUEsT0FBa0IsS0FBSyxDQUFDLFFBQVEsQ0FBUyxFQUFFLENBQUMsSUFBQSxFQUEzQyxJQUFJLFFBQUEsRUFBRSxPQUFPLFFBQThCLENBQUM7SUFDN0MsSUFBQSxLQUFBLE9BQWtCLEtBQUssQ0FBQyxRQUFRLENBQWlCLElBQUksQ0FBQyxJQUFBLEVBQXJELElBQUksUUFBQSxFQUFFLE9BQU8sUUFBd0MsQ0FBQztJQUN2RCxJQUFBLEtBQUEsT0FBMEIsS0FBSyxDQUFDLFFBQVEsQ0FBUyxDQUFDLENBQUMsSUFBQSxFQUFsRCxRQUFRLFFBQUEsRUFBRSxXQUFXLFFBQTZCLENBQUM7SUFDMUQsSUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQywyQkFBWSxDQUFDLENBQUM7SUFFL0MsSUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBUyxjQUFNLE9BQUEsT0FBTyxD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