@gpa-gemstone/react-graph
Version:
Interactive UI Components for GPA products
110 lines • 10.5 kB
JavaScript
;
// ******************************************************************************************************
// HorizontalMarker.tsx - Gbtc
//
// Copyright © 2022, 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:
// ----------------------------------------------------------------------------------------------------
// 04/29/2022 - 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;
};
Object.defineProperty(exports, "__esModule", { value: true });
var React = require("react");
var GraphContext_1 = require("./GraphContext");
function HorizontalMarker(props) {
/*
Marks a Y Value horizontally as a line.
*/
var context = React.useContext(GraphContext_1.GraphContext);
var _a = __read(React.useState(props.Value), 2), value = _a[0], setValue = _a[1];
var _b = __read(React.useState(false), 2), isSelected = _b[0], setSelected = _b[1];
var _c = __read(React.useState(""), 2), guid = _c[0], setGuid = _c[1];
function generateData(v) {
var axis = GraphContext_1.AxisMap.get(props.axis);
var x1 = (props.start === undefined ? context.XDomain[0] : props.start);
var x2 = (props.end === undefined ? context.XDomain[1] : props.end);
return "M ".concat(context.XTransformation(x1), " ").concat(context.YTransformation(v, axis), " L ").concat(context.XTransformation(x2), " ").concat(context.YTransformation(v, axis));
}
var onClick = React.useCallback(function (_, y) {
var axis = GraphContext_1.AxisMap.get(props.axis);
var yP = context.YTransformation(props.Value, axis);
var yT = context.YTransformation(y, axis);
if (yT <= yP + (props.width / 2) && yT >= yP - (props.width / 2))
setSelected(true);
}, [props.width, props.Value, props.axis, context.YTransformation]);
React.useEffect(function () {
var id = context.RegisterSelect({
axis: props.axis,
allowSnapping: false,
onClick: onClick,
onRelease: function (_) { return setSelected(false); },
onPlotLeave: function (_) { return setSelected(false); }
});
setGuid(id);
return function () { context.RemoveSelect(id); };
}, []);
React.useEffect(function () {
if (guid === "")
return;
context.UpdateSelect(guid, {
axis: props.axis,
allowSnapping: false,
onClick: onClick,
onRelease: function (_) { return setSelected(false); },
onPlotLeave: function (_) { return setSelected(false); }
});
}, [onClick]);
React.useEffect(function () {
setValue(props.Value);
}, [props.Value]);
React.useEffect(function () {
if (props.setValue === undefined)
return;
if (!isSelected && props.Value !== value)
props.setValue(value);
}, [isSelected, value]);
React.useEffect(function () {
if (context.CurrentMode !== 'select')
setSelected(false);
}, [context.CurrentMode]);
React.useEffect(function () {
if (isSelected)
setValue(context.YHoverSnap[GraphContext_1.AxisMap.get(props.axis)]);
}, [context.YHoverSnap, props.axis]);
return (React.createElement("g", null,
React.createElement("path", { d: generateData(props.Value), style: { fill: 'none', strokeWidth: props.width, stroke: props.color }, strokeDasharray: GraphContext_1.LineMap.get(props.lineStyle) }),
props.setValue !== undefined && props.Value !== value && isSelected ?
React.createElement("path", { d: generateData(value), style: { fill: 'none', strokeWidth: props.width, stroke: props.color, opacity: 0.5 }, strokeDasharray: GraphContext_1.LineMap.get(props.lineStyle) })
: null));
}
exports.default = HorizontalMarker;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSG9yaXpvbnRhbE1hcmtlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9Ib3Jpem9udGFsTWFya2VyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEseUdBQXlHO0FBQ3pHLCtCQUErQjtBQUMvQixFQUFFO0FBQ0YscUVBQXFFO0FBQ3JFLEVBQUU7QUFDRix3R0FBd0c7QUFDeEcsd0dBQXdHO0FBQ3hHLHNHQUFzRztBQUN0Ryx3RkFBd0Y7QUFDeEYsRUFBRTtBQUNGLDBDQUEwQztBQUMxQyxFQUFFO0FBQ0Ysd0dBQXdHO0FBQ3hHLHdHQUF3RztBQUN4Ryw0RUFBNEU7QUFDNUUsRUFBRTtBQUNGLDhCQUE4QjtBQUM5Qix3R0FBd0c7QUFDeEcsMEJBQTBCO0FBQzFCLG1EQUFtRDtBQUNuRCxFQUFFO0FBQ0YseUdBQXlHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHekcsNkJBQStCO0FBQy9CLCtDQUFvRztBQWFwRyxTQUFTLGdCQUFnQixDQUFDLEtBQWE7SUFDckM7O01BRUU7SUFDRixJQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLDJCQUFZLENBQUMsQ0FBQTtJQUN4QyxJQUFBLEtBQUEsT0FBb0IsS0FBSyxDQUFDLFFBQVEsQ0FBUyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUEsRUFBdEQsS0FBSyxRQUFBLEVBQUUsUUFBUSxRQUF1QyxDQUFDO0lBQ3hELElBQUEsS0FBQSxPQUE0QixLQUFLLENBQUMsUUFBUSxDQUFVLEtBQUssQ0FBQyxJQUFBLEVBQXpELFVBQVUsUUFBQSxFQUFFLFdBQVcsUUFBa0MsQ0FBQztJQUMzRCxJQUFBLEtBQUEsT0FBa0IsS0FBSyxDQUFDLFFBQVEsQ0FBUyxFQUFFLENBQUMsSUFBQSxFQUEzQyxJQUFJLFFBQUEsRUFBRSxPQUFPLFFBQThCLENBQUM7SUFFbkQsU0FBUyxZQUFZLENBQUMsQ0FBUztRQUM3QixJQUFNLElBQUksR0FBRyxzQkFBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMs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