UNPKG

@gpa-gemstone/react-graph

Version:
117 lines 13.7 kB
"use strict"; // ****************************************************************************************************** // Legend.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: // ---------------------------------------------------------------------------------------------------- // 03/19/2021 - C. lackner // 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 LegendContext_1 = require("./LegendContext"); var itemHeight = 25; var itemsWhenBottom = 3; function Legend(props) { var graphContext = React.useContext(GraphContext_1.GraphContext); var _a = __read(React.useState(props.location === 'bottom' ? props.graphWidth : props.width), 2), width = _a[0], setWidth = _a[1]; var _b = __read(React.useState(props.location === 'right' ? props.graphHeight : props.height), 2), height = _b[0], setHeight = _b[1]; var _c = __read(React.useState({ sm: 0, lg: 0 }), 2), nLegends = _c[0], setNLegends = _c[1]; var _d = __read(React.useState(false), 2), hasScroll = _d[0], setHasScroll = _d[1]; var _e = __read(React.useState(0), 2), leftPad = _e[0], setLeftPad = _e[1]; var legendContextValue = React.useMemo(function () { var scrollBarSpace = (hasScroll ? 6 : 0); var baseWidth = width - leftPad; var baseHeight = props.location === 'bottom' ? itemHeight : Math.max(height / (Math.max(nLegends.sm + nLegends.lg, 1)), itemHeight); return { SmWidth: (baseWidth / (props.location === 'bottom' ? itemsWhenBottom : 1)) - scrollBarSpace, LgWidth: baseWidth - scrollBarSpace, SmHeight: baseHeight, LgHeight: baseHeight * (props.location === 'bottom' ? 2 : 1), RequestLegendWidth: props.RequestLegendWidth, RequestLegendHeight: props.RequestLegendHeight }; }, [width, height, props.RequestLegendWidth, props.RequestLegendHeight, hasScroll, props.location, leftPad, nLegends]); React.useEffect(function () { var newWidth = props.location === 'bottom' ? props.graphWidth : props.width; if (newWidth !== width) setWidth(newWidth); }, [props.width, props.graphWidth, props.location]); React.useEffect(function () { var newHeight = props.location === 'right' ? props.graphHeight : props.height; if (newHeight !== height) setHeight(newHeight); }, [props.height, props.graphHeight, props.location]); React.useEffect(function () { var newNLegends = __spreadArray([], __read(graphContext.Data.current.values()), false).reduce(function (s, c) { var _a, _b, _c, _d, _e, _f; if (c.legend === undefined) return s; if (props.HideDisabled && !((_c = (_b = (_a = c.legend) === null || _a === void 0 ? void 0 : _a.props) === null || _b === void 0 ? void 0 : _b.enabled) !== null && _c !== void 0 ? _c : true)) return s; if (((_f = (_e = (_d = c.legend) === null || _d === void 0 ? void 0 : _d.props) === null || _e === void 0 ? void 0 : _e.size) !== null && _f !== void 0 ? _f : 'sm') === 'sm') s.sm = s.sm + 1; else s.lg = s.lg + 1; return s; }, { sm: 0, lg: 0 }); if (newNLegends.sm !== nLegends.sm || newNLegends.lg !== nLegends.lg) setNLegends(newNLegends); }, [graphContext.DataGuid, props.HideDisabled]); React.useEffect(function () { var requiredHeight = Math.ceil(nLegends.sm / (props.location === 'bottom' ? itemsWhenBottom : 1)) * legendContextValue.SmHeight + nLegends.lg * legendContextValue.LgHeight; if (props.RequestLegendHeight !== undefined && requiredHeight !== height) props.RequestLegendHeight(requiredHeight); setHasScroll(requiredHeight > height); }, [nLegends, props.location, height, props.RequestLegendHeight]); React.useEffect(function () { return setLeftPad(props.location === 'bottom' ? 39 : 0); }, [props.location]); return (React.createElement(LegendContext_1.LegendContext.Provider, { value: legendContextValue }, React.createElement("div", { style: { height: height, width: width, paddingLeft: "".concat(leftPad, "px"), position: (props.location === 'bottom' ? 'absolute' : 'relative'), float: props.location, display: 'flex', flexWrap: 'wrap', bottom: 0, overflowY: hasScroll ? 'scroll' : 'hidden', overflowX: hasScroll ? 'visible' : 'hidden', cursor: 'default' } }, __spreadArray([], __read(graphContext.Data.current.values()), false).map(function (series, index) { var _a, _b; return (series.legend !== undefined && (!props.HideDisabled || ((_a = series.legend.props.enabled) !== null && _a !== void 0 ? _a : true)) ? React.createElement("div", { key: index, "data-html2canvas-ignore": !((_b = series.legend.props.enabled) !== null && _b !== void 0 ? _b : true) }, series.legend) : null); })))); } exports.default = React.memo(Legend); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGVnZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0xlZ2VuZC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHlHQUF5RztBQUN6RyxxQkFBcUI7QUFDckIsRUFBRTtBQUNGLHFFQUFxRTtBQUNyRSxFQUFFO0FBQ0Ysd0dBQXdHO0FBQ3hHLHdHQUF3RztBQUN4RyxzR0FBc0c7QUFDdEcsd0ZBQXdGO0FBQ3hGLEVBQUU7QUFDRiwwQ0FBMEM7QUFDMUMsRUFBRTtBQUNGLHdHQUF3RztBQUN4Ryx3R0FBd0c7QUFDeEcsNEVBQTRFO0FBQzVFLEVBQUU7QUFDRiw4QkFBOEI7QUFDOUIsd0dBQXdHO0FBQ3hHLDJCQUEyQjtBQUMzQixtREFBbUQ7QUFDbkQsRUFBRTtBQUNGLHlHQUF5Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXpHLDZCQUErQjtBQUMvQiwrQ0FBNEM7QUFDNUMsaURBQWdFO0FBYWhFLElBQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztBQUN0QixJQUFNLGVBQWUsR0FBRyxDQUFDLENBQUM7QUFFMUIsU0FBUyxNQUFNLENBQUMsS0FBYTtJQUMzQixJQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLDJCQUFZLENBQUMsQ0FBQztJQUM5QyxJQUFBLEtBQUEsT0FBb0IsS0FBSyxDQUFDLFFBQVEsQ0FBUyxLQUFLLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQSxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFBLEVBQXRHLEtBQUssUUFBQSxFQUFFLFFBQVEsUUFBdUYsQ0FBQztJQUN4RyxJQUFBLEtBQUEsT0FBc0IsS0FBSyxDQUFDLFFBQVEsQ0FBUyxLQUFLLENBQUMsUUFBUSxLQUFLLE9BQU8sQ0FBQSxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFBLEVBQXpHLE1B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