UNPKG

react-meteo-chart

Version:

pre alpha of meteo chart

516 lines (459 loc) 20.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _react = _interopRequireWildcard(require("react")); var _BasicChart = _interopRequireWildcard(require("../BasicChart")); var _LeBasicChart = _interopRequireDefault(require("../LeBasicChart")); var _Candlestick = _interopRequireDefault(require("../Candlestick")); var _reactSizeme = _interopRequireDefault(require("react-sizeme")); var _AmsLegend = require("./AmsLegend"); var _AmsCrossFormat = require("./AmsCrossFormat"); var _GridDates = _interopRequireWildcard(require("../GridDates")); var _reactVis = require("react-vis"); var _moment = _interopRequireDefault(require("moment")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var MiddleVerticalRectSeries = /*#__PURE__*/ function (_VerticalRectSeries) { _inherits(MiddleVerticalRectSeries, _VerticalRectSeries); function MiddleVerticalRectSeries() { var _getPrototypeOf2; var _this; _classCallCheck(this, MiddleVerticalRectSeries); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(MiddleVerticalRectSeries)).call.apply(_getPrototypeOf2, [this].concat(args))); _defineProperty(_assertThisInitialized(_this), "_handleNearestX", function (event) { var _props3 = this.props, onNearestX = _props3.onNearestX, data = _props3.data; var minDistance = -Number.POSITIVE_INFINITY; var value = null; var valueIndex = null; var coordinate = this._getXYCoordinateInContainer(event); var xScaleFn = this._getAttributeFunctor("x"); data.forEach(function (item, i) { var currentCoordinate = xScaleFn(item); var newDistance = coordinate.x - currentCoordinate; if (newDistance <= 0 && newDistance > minDistance) { minDistance = newDistance; value = item; valueIndex = i; } }); if (!value) { return; } onNearestX(value, { innerX: xScaleFn(value), index: valueIndex, event: event.nativeEvent }); }); return _this; } return MiddleVerticalRectSeries; }(_reactVis.VerticalRectSeries); var AmsChart = /*#__PURE__*/ function (_PureComponent) { _inherits(AmsChart, _PureComponent); function AmsChart(props) { var _this2; _classCallCheck(this, AmsChart); _this2 = _possibleConstructorReturn(this, _getPrototypeOf(AmsChart).call(this, props)); _defineProperty(_assertThisInitialized(_this2), "setTooltip", function (value, crossName) { var superArr = _this2.props.superArr; var xx = superArr.map(function (d) { return Math.max.apply(Math, d.filter(function (s) { return s.y !== null; }).map(function (x) { return x.x; }).filter(function (x) { return x <= value.x; })); }); var cress = superArr.map(function (d, indx) { return d.filter(function (asd, id) { return asd.x == xx[indx]; }); }); // if (cress[3] && cress[3].length > 1) // cress[3].sort((a, b) => b.y - a.y)[0].y; _this2.setState(_defineProperty({ cross: superArr.map(function (d, indx) { return { x: value.x, y: cress[indx][0] ? indx == 4 ? cress[indx][0].z : cress[indx][0].y : null }; }) }, crossName, true)); }); _this2.state = { cross: [], showcross: false, showSpeedCross: false, showTempCross: false, showBarometricCross: false, showPrecipCross: false, showPressCross: false, wind: true, temp: true, tendency: true, precipit: true, normalPress: true, press: true, width: 0 }; return _this2; } _createClass(AmsChart, [{ key: "componentWillUnmount", value: function componentWillUnmount() {// window.removeEventListener("resizedir", e => // this.setState({ width: document.getElementById("dirwind").clientWidth }) // ); } }, { key: "render", value: function render() { var _this3 = this; var width = this.props.size.width; var _this$props = this.props, superArr = _this$props.superArr, dateFrom = _this$props.dateFrom, dateTo = _this$props.dateTo, _this$props$plotHeigh = _this$props.plotHeight, plotHeight = _this$props$plotHeigh === void 0 ? 270 : _this$props$plotHeigh, _this$props$plotWidth = _this$props.plotWidth, plotWidth = _this$props$plotWidth === void 0 ? width : _this$props$plotWidth; var domainFrom = (0, _moment["default"])(_moment["default"].utc(dateFrom).local().format("YYYY-MM-DDTHH:mm")); var domainTo = (0, _moment["default"])(_moment["default"].utc(dateTo).local().format("YYYY-MM-DD:HH:mm")); var gridDates = (0, _GridDates["default"])(dateFrom, dateTo); var setVal = function setVal(data, name) { _this3.setState(_defineProperty({}, name, !data)); }; if (this.props.arrows) { var arrowsArr = superArr[4].filter(function (e, i) { return i % Math.trunc(150 * superArr[4].length / width) === 0; }); } var _this$state = this.state, cross = _this$state.cross, showcross = _this$state.showcross, showSpeedCross = _this$state.showSpeedCross, showTempCross = _this$state.showTempCross, showBarometricCross = _this$state.showBarometricCross, showPrecipCross = _this$state.showPrecipCross, showPressCross = _this$state.showPressCross, wind = _this$state.wind, temp = _this$state.temp, tendency = _this$state.tendency, precipit = _this$state.precipit, normalPress = _this$state.normalPress, press = _this$state.press; var isAdmin = this.props.isAdmin; var animated = this.props.animated; return _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(_BasicChart["default"], { opacity: this.props.opacity, superArr: superArr, dateFrom: dateFrom, dateTo: dateTo, plotHeight: plotHeight > 130 ? plotHeight : 130, plotWidth: plotWidth }, _react["default"].createElement(_reactVis.FlexibleXYPlot // width={plotWidth} , { height: plotHeight > 130 ? plotHeight : 130, className: "mainPlot" // yPadding={35} , margin: { left: 65 }, xDomain: [domainFrom, domainTo], onMouseLeave: function onMouseLeave() { _this3.setState({ showPressCross: false }); } }, _react["default"].createElement(_reactVis.YAxis, { left: 0, tickTotal: 5, tickFormat: function tickFormat(v) { return v !== null ? "".concat(v, " \u0433\u041F\u0430") : ""; } }), _react["default"].createElement(_reactVis.HorizontalGridLines, null), superArr[6] && normalPress && _react["default"].createElement(_reactVis.LineMarkSeries, { getNull: function getNull(d) { return d.y !== null; }, data: superArr[6], stroke: "".concat(_AmsLegend.COLORS.normalizedPressureColor), size: "1", curve: "curveMonotoneX", onNearestX: function onNearestX(value, _ref) { var index = _ref.index; _this3.setTooltip(value, "showPressCross"); } }), superArr[5] && press && _react["default"].createElement(_reactVis.LineMarkSeries, { getNull: function getNull(d) { return d.y !== null; }, data: superArr[5], stroke: "".concat(_AmsLegend.COLORS.pressureColor), size: "1", curve: "curveMonotoneX" }), superArr[2] && superArr[2].length > 0 && press && _react["default"].createElement(_Candlestick["default"], { className: "mainPlot", getNull: function getNull(d) { return d.y !== null; }, colorType: "literal", opacityType: "literal", stroke: "#000000" // fill="#ff0000" , data: superArr[2] }), !animated && _react["default"].createElement(_reactVis.Crosshair, { values: cross }, showPressCross && !animated ? _react["default"].createElement(_AmsCrossFormat.AmsCrossFormat, { superArr: superArr, cross: cross }) : _react["default"].createElement(_AmsCrossFormat.EmptyCrossFormat, null))), isAdmin && _react["default"].createElement(_AmsLegend.PressureLegend, { setVal: setVal, isAdmin: isAdmin })), _react["default"].createElement(_BasicChart["default"], { opacity: this.props.opacity, superArr: superArr, dateFrom: dateFrom, dateTo: dateTo // extremum={extremumArr[0]} , plotHeight: plotHeight > 180 ? plotHeight : 180, plotWidth: plotWidth }, _react["default"].createElement(_reactVis.FlexibleXYPlot // width={plotWidth} , { height: plotHeight > 180 ? plotHeight : 180, className: "mainPlot", xDomain: [domainFrom, domainTo], margin: { left: 65 }, yPadding: 15 // getY={e => console.log(e)} , onMouseLeave: function onMouseLeave() { _this3.setState({ showSpeedCross: false }); } }, _react["default"].createElement(_reactVis.YAxis, { left: 0, tickFormat: function tickFormat(v) { return v !== null && v >= 0 ? "".concat(v, " \u043C/\u0441") : ""; } }), _react["default"].createElement(_reactVis.HorizontalGridLines, null), superArr[0] && wind && _react["default"].createElement(_reactVis.CustomSVGSeries, { className: "directionPlot", data: arrowsArr ? arrowsArr : superArr[4], getNull: function getNull(d) { return d.y !== null; } }), superArr[0] && wind && _react["default"].createElement(_reactVis.LineMarkSeries, { ref: function ref(lms) { _this3.lms = lms; }, getNull: function getNull(d) { return d.y !== null; }, data: superArr[0], curve: "linear" //find solution , stroke: "".concat(_AmsLegend.COLORS.widSpeedColor), size: "1", onNearestX: function onNearestX(value, _ref2) { var index = _ref2.index; _this3.setTooltip(value, "showSpeedCross"); } }), !animated && _react["default"].createElement(_reactVis.Crosshair, { values: cross }, showSpeedCross && !animated ? _react["default"].createElement(_AmsCrossFormat.AmsCrossFormat, { superArr: superArr, cross: cross }) : _react["default"].createElement(_AmsCrossFormat.EmptyCrossFormat, null))), isAdmin && _react["default"].createElement(_AmsLegend.WindSpeedLegend, { setVal: setVal, isAdmin: true })), _react["default"].createElement(_BasicChart["default"], { opacity: this.props.opacity, superArr: superArr, dateFrom: dateFrom, dateTo: dateTo, plotHeight: plotHeight > 130 ? plotHeight : 130, plotWidth: plotWidth }, _react["default"].createElement(_reactVis.FlexibleXYPlot // width={plotWidth} // height={plotHeight > 120 ? plotHeight : 120} , { className: "mainPlot", margin: { left: 65 }, yPadding: 20, xDomain: [domainFrom, domainTo], onMouseLeave: function onMouseLeave() { _this3.setState({ showTempCross: false }); } }, _react["default"].createElement(_reactVis.YAxis, { left: 0, tickTotal: 5, tickFormat: function tickFormat(v) { return v !== null ? "".concat(v, " C\xB0") : ""; } }), _react["default"].createElement(_reactVis.HorizontalGridLines, null), superArr[1] && temp && _react["default"].createElement(_reactVis.LineMarkSeries, { getNull: function getNull(d) { return d.y !== null; }, data: superArr[1], style: { strokeWidth: "3" }, stroke: "".concat(_AmsLegend.COLORS.temperatureColor), size: "1" // onSeriesMouseOver={onNearestX} , onNearestX: function onNearestX(value, _ref3) { var index = _ref3.index; _this3.setTooltip(value, "showTempCross"); } }), !animated && _react["default"].createElement(_reactVis.Crosshair, { values: cross }, showTempCross ? _react["default"].createElement(_AmsCrossFormat.AmsCrossFormat, { superArr: superArr, cross: cross }) : _react["default"].createElement(_AmsCrossFormat.EmptyCrossFormat, null))), isAdmin && _react["default"].createElement(_AmsLegend.TempLegend, { setVal: setVal, isAdmin: true }), isAdmin && _react["default"].createElement(_AmsLegend.PrecipLegend, { setVal: setVal, isAdmin: true })), superArr[3] !== undefined && superArr[3].length > 0 && precipit ? _react["default"].createElement("div", { style: { // border: "1px solid #7d9cb8", backgroundColor: (0, _BasicChart.rgbToHex)(255, 255, 255, this.props.opacity) } }, _react["default"].createElement(_reactVis.FlexibleXYPlot // width={plotWidth} , { margin: { left: 65 }, height: plotHeight > 130 ? plotHeight : 130, className: "precipitationPlot", xDomain: [domainFrom, domainTo], xType: "time", yDomain: superArr[3].length > 0 ? Math.max.apply(Math, superArr[3].map(function (d) { return d.y; })) == 0 ? [0, 5] : [0, Math.max.apply(Math, superArr[3].map(function (d) { return d.y; }))] : [0, 5] // scale="1" // dontCheckIfEmpty={true} , onMouseLeave: function onMouseLeave() { _this3.setState({ showPrecipCross: false }); } }, _react["default"].createElement(_reactVis.YAxis, { left: 0 // tickTotal={5} , tickFormat: function tickFormat(v) { return v >= 0 ? "".concat(v, " \u043C\u043C") : ""; } }), _react["default"].createElement(_reactVis.XAxis, { tickFormat: function tickFormat(d) { return (0, _moment["default"])(d).format("HH:mm") == "00:00" ? "" : "".concat((0, _moment["default"])(d).format("HH:mm")); }, tickTotal: width * 0.01 }), _react["default"].createElement(_reactVis.XAxis, { tickFormat: function tickFormat(d) { return (0, _moment["default"])(d).format("HH:mm") == "00:00" ? "".concat((0, _moment["default"])(d).format("D.MM")) : ""; }, style: { line: { stroke: "#ADDDE1" }, ticks: { stroke: "#ADDDE1" }, text: { stroke: "none", fill: "#000000", fontWeight: 750, fontSize: 12 } }, tickTotal: width * 0.01 }), _react["default"].createElement(_reactVis.VerticalGridLines, null), _react["default"].createElement(_reactVis.HorizontalGridLines, null), _react["default"].createElement(MiddleVerticalRectSeries, { className: "precipitBars", getNull: function getNull(d) { return d.y !== null; }, data: superArr[3], fill: "".concat(_AmsLegend.COLORS.precipitationColor), stroke: "#000000" // scale="2" , style: {// strokeWidth: 10 }, onNearestX: function onNearestX(value, _ref4) { var index = _ref4.index; _this3.setTooltip(value, "showPrecipCross"); } }), gridDates.map(function (date) { return _react["default"].createElement(_reactVis.DecorativeAxis, { key: "".concat(date, "-axis"), className: "decaxis", axisDomain: [], axisStart: { x: (0, _moment["default"])(date.format("YYYY-MM-DD")), y: 0 }, axisEnd: { x: (0, _moment["default"])(date.format("YYYY-MM-DD")), y: 1 }, tickTotal: 0, style: { ticks: { display: "none" }, text: { display: "none" } } }); }), !animated && _react["default"].createElement(_reactVis.Crosshair, { values: cross }, showPrecipCross ? _react["default"].createElement(_AmsCrossFormat.AmsCrossFormat, { superArr: superArr, cross: cross }) : _react["default"].createElement(_AmsCrossFormat.EmptyCrossFormat, null)))) : _react["default"].createElement(_BasicChart["default"], { opacity: this.props.opacity, superArr: superArr, dateFrom: dateFrom, dateTo: dateTo, plotHeight: plotHeight > 130 ? plotHeight : 130, plotWidth: plotWidth }), !isAdmin && _react["default"].createElement(_AmsLegend.FlexAmsLegend, { setVal: setVal })); } }]); return AmsChart; }(_react.PureComponent); var _default = (0, _reactSizeme["default"])()(AmsChart); exports["default"] = _default;