Skip to content
Snippets Groups Projects
ecolyo.7b9299e2d8450d97b35f.js 53.4 KiB
Newer Older
  • Learn to ignore specific revisions
  • (window["webpackJsonp"] = window["webpackJsonp"] || []).push([[7],{
    
    
    /***/ "1k9e":
    /***/ (function(module, exports, __webpack_require__) {
    
    exports = module.exports = __webpack_require__("JPst")(false);
    // Module
    exports.push([module.i, "/** BLACK **/\n/** RED **/\n/** YELLOW **/\n/** ORANGE **/\n/** BLUE **/\n/** GREEN **/\n/** WHITE **/\n/** GREY **/\n/** App colors **/\n/** TABS GRADIENT **/\n/** SCROLLBAR **/\n.date-navigator-format {\n  display: flex;\n  flex-direction: column;\n  min-width: 7.81rem;\n  text-align: center;\n  align-items: center;\n  align-self: center;\n}\n@media all and (max-width: 320px) {\n  .date-navigator-format {\n    min-width: 10.32rem;\n  }\n}\n.date-navigator-format .date-navigator-format-date {\n  color: #e0e0e0;\n}\n.date-navigator-format .date-navigator-format-date::first-letter {\n  text-transform: uppercase;\n}\n.date-navigator-format .date-navigator-format-date.timeRange {\n  white-space: normal;\n}", ""]);
    
    
    
    /***/ }),
    
    /***/ "2aqi":
    /***/ (function(module, exports, __webpack_require__) {
    
    
    var content = __webpack_require__("PU46");
    
    if(typeof content === 'string') content = [[module.i, content, '']];
    
    var transform;
    var insertInto;
    
    
    
    var options = {"hmr":true}
    
    options.transform = transform
    options.insertInto = undefined;
    
    var update = __webpack_require__("aET+")(content, options);
    
    if(content.locals) module.exports = content.locals;
    
    if(false) {}
    
    /***/ }),
    
    
    /***/ "CPpy":
    /***/ (function(module, exports, __webpack_require__) {
    
    "use strict";
    
    
    var _interopRequireDefault = __webpack_require__("TqRt");
    
    Object.defineProperty(exports, "__esModule", {
      value: true
    });
    exports.default = void 0;
    
    var _toConsumableArray2 = _interopRequireDefault(__webpack_require__("RIqP"));
    
    var _AxisBottom = _interopRequireDefault(__webpack_require__("ZUUJ"));
    
    var _AxisRight = _interopRequireDefault(__webpack_require__("0bt6"));
    
    var _Bar = _interopRequireDefault(__webpack_require__("qOdy"));
    
    var _d3Scale = __webpack_require__("ziQ1");
    
    
    Rémi PAILHAREY's avatar
    Rémi PAILHAREY committed
    var _enums = __webpack_require__("gnxY");
    
    
    var _luxon = __webpack_require__("ExVU");
    
    var _react = _interopRequireDefault(__webpack_require__("q1tI"));
    
    var BarChart = function BarChart(_ref) {
      var chartData = _ref.chartData,
          fluidType = _ref.fluidType,
          timeStep = _ref.timeStep,
    
    Rémi PAILHAREY's avatar
    Rémi PAILHAREY committed
          showCompare = _ref.showCompare,
    
          _ref$width = _ref.width,
          width = _ref$width === void 0 ? 600 : _ref$width,
          _ref$height = _ref.height,
          height = _ref$height === void 0 ? 400 : _ref$height,
          _ref$marginLeft = _ref.marginLeft,
          marginLeft = _ref$marginLeft === void 0 ? 10 : _ref$marginLeft,
          _ref$marginRight = _ref.marginRight,
          marginRight = _ref$marginRight === void 0 ? 55 : _ref$marginRight,
          _ref$marginTop = _ref.marginTop,
          marginTop = _ref$marginTop === void 0 ? 20 : _ref$marginTop,
          _ref$marginBottom = _ref.marginBottom,
          marginBottom = _ref$marginBottom === void 0 ? 50 : _ref$marginBottom,
          isSwitching = _ref.isSwitching,
          _ref$clickable = _ref.clickable,
          clickable = _ref$clickable === void 0 ? true : _ref$clickable;
    
      var getContentWidth = function getContentWidth() {
        return width - marginLeft - marginRight;
      };
    
      var getContentHeight = function getContentHeight() {
        return height - marginTop - marginBottom;
      };
    
      var getMaxLoad = function getMaxLoad() {
        var maxCompare = chartData.comparisonData ? Math.max.apply(Math, (0, _toConsumableArray2.default)(chartData.comparisonData.map(function (d) {
          return d.value;
        }))) : 0;
        var max = chartData.actualData ? Math.max.apply(Math, (0, _toConsumableArray2.default)(chartData.actualData.map(function (d) {
          return d.value;
        }))) : 0;
    
        if (showCompare) {
          if (max <= 0 && maxCompare <= 0) return 15;else return Math.max(max, maxCompare);
        } else {
          if (max <= 0) {
            return 15;
          } else return max;
        }
      };
    
      var xScale = (0, _d3Scale.scaleBand)().domain(chartData.actualData.map(function (d) {
        return d.date.toLocaleString(_luxon.DateTime.DATETIME_SHORT);
      })).range([0, getContentWidth()]).padding(0.2);
      var yScale = (0, _d3Scale.scaleLinear)().domain([0, getMaxLoad()]).range([getContentHeight(), 0]);
    
      var sum = chartData.actualData.reduce(function (a, b) {
        return a + b.value;
      }, 0);
      var averageConsumption = sum / chartData.actualData.length;
    
      return /*#__PURE__*/_react.default.createElement("svg", {
        width: width,
        height: height
      }, /*#__PURE__*/_react.default.createElement(_AxisRight.default, {
        fluidType: fluidType,
        yScale: yScale,
        width: width,
        marginRight: marginRight,
        marginTop: marginTop
      }), /*#__PURE__*/_react.default.createElement("g", {
        transform: "translate(".concat(marginLeft, ",").concat(marginTop, ")")
      }, chartData.actualData.map(function (d, index) {
        var _chartData$comparison;
    
        return /*#__PURE__*/_react.default.createElement(_Bar.default, {
          key: index,
          index: index,
          dataload: d,
          compareDataload: (_chartData$comparison = chartData.comparisonData) !== null && _chartData$comparison !== void 0 && _chartData$comparison[index] ? chartData.comparisonData[index] : null,
          fluidType: fluidType,
          timeStep: timeStep,
          compare: showCompare,
          xScale: xScale,
          yScale: yScale,
          height: getContentHeight(),
          isSwitching: isSwitching,
    
    Rémi PAILHAREY's avatar
    Rémi PAILHAREY committed
          isMultiMissingFluid: d.state === _enums.DataloadState.AGGREGATED_WITH_EMPTY || d.state === _enums.DataloadState.AGGREGATED_WITH_COMING || d.state === _enums.DataloadState.AGGREGATED_WITH_HOLE_OR_MISSING ? true : false,
    
          clickable: clickable,
          average: averageConsumption
    
        });
      })), /*#__PURE__*/_react.default.createElement(_AxisBottom.default, {
        data: chartData.actualData,
        timeStep: timeStep,
        xScale: xScale,
        height: height,
        marginLeft: marginLeft,
        marginBottom: marginBottom
      }));
    };
    
    var _default = BarChart;
    exports.default = _default;
    
    /***/ }),
    
    
    /***/ "CYAo":
    /***/ (function(module, __webpack_exports__, __webpack_require__) {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("4BeY");
    /* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);
    /* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("IaFt");
    /* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);
    
    
    var symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({
      "id": "chevron-down_026fbb69a109de87f559c6f930e3a4de",
      "use": "chevron-down_026fbb69a109de87f559c6f930e3a4de-usage",
      "viewBox": "0 0 14 8",
      "content": "<symbol viewBox=\"0 0 14 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" id=\"chevron-down_026fbb69a109de87f559c6f930e3a4de\">\n<path d=\"M2.5 0L7 5L11.5 0L14 0L7 8L0 0L2.5 0Z\" fill=\"currentColor\" />\n</symbol>"
    });
    var result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);
    /* harmony default export */ __webpack_exports__["default"] = (symbol);
    
    /***/ }),
    
    
    /***/ "Fb5D":
    /***/ (function(module, exports, __webpack_require__) {
    
    
    var content = __webpack_require__("flqf");
    
    if(typeof content === 'string') content = [[module.i, content, '']];
    
    var transform;
    var insertInto;
    
    
    
    var options = {"hmr":true}
    
    options.transform = transform
    options.insertInto = undefined;
    
    var update = __webpack_require__("aET+")(content, options);
    
    if(content.locals) module.exports = content.locals;
    
    if(false) {}
    
    /***/ }),
    
    
    /***/ "Hno1":
    /***/ (function(module, exports, __webpack_require__) {
    
    "use strict";
    
    
    var _interopRequireDefault = __webpack_require__("TqRt");
    
    Object.defineProperty(exports, "__esModule", {
      value: true
    });
    exports.default = void 0;
    
    var _defineProperty2 = _interopRequireDefault(__webpack_require__("lSNA"));
    
    var _IconButton = _interopRequireDefault(__webpack_require__("o6Jd"));
    
    var _leftArrow = _interopRequireDefault(__webpack_require__("bZGv"));
    
    var _rightArrow = _interopRequireDefault(__webpack_require__("fZGW"));
    
    var _classnames = _interopRequireDefault(__webpack_require__("TSYQ"));
    
    var _DateNavigatorFormat = _interopRequireDefault(__webpack_require__("ZpZG"));
    
    var _I18n = __webpack_require__("buk/");
    
    var _Icon = _interopRequireDefault(__webpack_require__("y6ex"));
    
    var _react = _interopRequireDefault(__webpack_require__("q1tI"));
    
    __webpack_require__("pBt2");
    
    var DateNavigator = function DateNavigator(_ref) {
    
    Rémi PAILHAREY's avatar
    Rémi PAILHAREY committed
      var disableNext = _ref.disableNext,
          disablePrev = _ref.disablePrev,
          handleNextDate = _ref.handleNextDate,
          handlePrevDate = _ref.handlePrevDate,
    
          _ref$inlineDateDispla = _ref.inlineDateDisplay,
    
    Rémi PAILHAREY's avatar
    Rémi PAILHAREY committed
          inlineDateDisplay = _ref$inlineDateDispla === void 0 ? false : _ref$inlineDateDispla,
          navigatorDate = _ref.navigatorDate,
          timeStep = _ref.timeStep;
    
    
      var _useI18n = (0, _I18n.useI18n)(),
          t = _useI18n.t;
    
      return /*#__PURE__*/_react.default.createElement("div", {
        className: "date-navigator"
    
    Rémi PAILHAREY's avatar
    Rémi PAILHAREY committed
      }, /*#__PURE__*/_react.default.createElement(_IconButton.default, {
        disabled: disablePrev,
        onClick: handlePrevDate,
        className: (0, _classnames.default)('date-navigator-button', (0, _defineProperty2.default)({}, 'disable', disablePrev)),
        "aria-label": t('consumption.accessibility.button_previous_value')
    
      }, /*#__PURE__*/_react.default.createElement(_Icon.default, {
        icon: _leftArrow.default,
        size: 16
    
    Rémi PAILHAREY's avatar
    Rémi PAILHAREY committed
      })), /*#__PURE__*/_react.default.createElement(_DateNavigatorFormat.default, {
        timeStep: timeStep,
        date: navigatorDate,
    
        inline: inlineDateDisplay
    
    Rémi PAILHAREY's avatar
    Rémi PAILHAREY committed
      }), /*#__PURE__*/_react.default.createElement(_IconButton.default, {
        disabled: disableNext,
        onClick: handleNextDate,
        className: (0, _classnames.default)('date-navigator-button', (0, _defineProperty2.default)({}, 'disable', disableNext)),
        "aria-label": t('consumption.accessibility.button_next_value')
    
      }, /*#__PURE__*/_react.default.createElement(_Icon.default, {
        icon: _rightArrow.default,
        size: 16
    
    Rémi PAILHAREY's avatar
    Rémi PAILHAREY committed
      })));
    
    };
    
    var _default = DateNavigator;
    exports.default = _default;
    
    /***/ }),
    
    /***/ "NEj4":
    /***/ (function(module, exports, __webpack_require__) {
    
    
    var content = __webpack_require__("1k9e");
    
    if(typeof content === 'string') content = [[module.i, content, '']];
    
    var transform;
    var insertInto;
    
    
    
    var options = {"hmr":true}
    
    options.transform = transform
    options.insertInto = undefined;
    
    var update = __webpack_require__("aET+")(content, options);
    
    if(content.locals) module.exports = content.locals;
    
    if(false) {}
    
    /***/ }),
    
    
    /***/ "Np/d":
    /***/ (function(module, exports, __webpack_require__) {
    
    "use strict";
    
    
    var _interopRequireDefault = __webpack_require__("TqRt");
    
    Object.defineProperty(exports, "__esModule", {
      value: true
    });
    exports.default = void 0;
    
    var _regenerator = _interopRequireDefault(__webpack_require__("o0o1"));
    
    var _defineProperty2 = _interopRequireDefault(__webpack_require__("lSNA"));
    
    var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__("yXPU"));
    
    var _classnames = _interopRequireDefault(__webpack_require__("TSYQ"));
    
    var _cozyClient = __webpack_require__("SH7X");
    
    var _I18n = __webpack_require__("buk/");
    
    var _Icon = _interopRequireDefault(__webpack_require__("y6ex"));
    
    
    Rémi PAILHAREY's avatar
    Rémi PAILHAREY committed
    var _enums = __webpack_require__("gnxY");
    
    
    var _react = _interopRequireWildcard(__webpack_require__("q1tI"));
    
    var _reactRouterDom = __webpack_require__("SOjZ");
    
    var _converter = _interopRequireDefault(__webpack_require__("LXmx"));
    
    
    Rémi PAILHAREY's avatar
    Rémi PAILHAREY committed
    var _usageEvent = _interopRequireDefault(__webpack_require__("dECN"));
    
    
    var _picto = __webpack_require__("6DBe");
    
    var _utils = __webpack_require__("c+yx");
    
    function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
    
    function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
    
    var DataloadSectionDetail = function DataloadSectionDetail(_ref) {
      var dataload = _ref.dataload,
          fluidType = _ref.fluidType,
          dataloadSectionType = _ref.dataloadSectionType;
      var client = (0, _cozyClient.useClient)();
    
      var _useI18n = (0, _I18n.useI18n)(),
          t = _useI18n.t;
    
      var converterService = new _converter.default();
      var emitNavEvent = (0, _react.useCallback)( /*#__PURE__*/function () {
        var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(targetPage) {
          return _regenerator.default.wrap(function _callee$(_context) {
            while (1) {
              switch (_context.prev = _context.next) {
                case 0:
                  _context.next = 2;
    
    Rémi PAILHAREY's avatar
    Rémi PAILHAREY committed
                  return _usageEvent.default.addEvent(client, {
                    type: _enums.UsageEventType.NAVIGATION_EVENT,
    
                    target: targetPage
                  });
    
                case 2:
                case "end":
                  return _context.stop();
              }
            }
          }, _callee);
        }));
    
        return function (_x) {
          return _ref2.apply(this, arguments);
        };
      }(), [client]);
    
    
    Rémi PAILHAREY's avatar
    Rémi PAILHAREY committed
      if (fluidType !== _enums.FluidType.MULTIFLUID) {
    
        var _classNames;
    
        return /*#__PURE__*/_react.default.createElement("div", {
    
    Rémi PAILHAREY's avatar
    Rémi PAILHAREY committed
          className: (0, _classnames.default)('dataloadvisualizer-euro text-16-normal', (_classNames = {}, (0, _defineProperty2.default)(_classNames, "".concat((0, _utils.getFluidName)(fluidType)), dataloadSectionType !== _enums.DataloadSectionType.LEFT), (0, _defineProperty2.default)(_classNames, "".concat((0, _utils.getFluidName)(fluidType), "-compare"), dataloadSectionType === _enums.DataloadSectionType.LEFT), _classNames))
    
        }, "".concat((0, _utils.formatNumberValues)(converterService.LoadToEuro(dataload.value, fluidType, dataload.price ? dataload.price : null)), " \u20AC"));
      }
    
    
    Rémi PAILHAREY's avatar
    Rémi PAILHAREY committed
      if (fluidType === _enums.FluidType.MULTIFLUID && dataloadSectionType !== _enums.DataloadSectionType.NO_COMPARE) {
    
        return /*#__PURE__*/_react.default.createElement("div", {
          className: "dataloadvisualizer-euro text-16-normal"
        });
      }
    
    
    Rémi PAILHAREY's avatar
    Rémi PAILHAREY committed
      if (fluidType === _enums.FluidType.MULTIFLUID && dataloadSectionType === _enums.DataloadSectionType.NO_COMPARE && dataload.valueDetail) {
    
        return /*#__PURE__*/_react.default.createElement("div", {
          className: "dataloadvisualizer-euro text-16-normal"
        }, dataload.valueDetail.map(function (valueDetail, index) {
          var _classNames2;
    
          return /*#__PURE__*/_react.default.createElement(_reactRouterDom.NavLink, {
            key: index,
    
    Rémi PAILHAREY's avatar
    Rémi PAILHAREY committed
            to: "/consumption/".concat(_enums.FluidType[index].toLowerCase()),
    
            className: "dataloadvisualizer-euro-link"
          }, /*#__PURE__*/_react.default.createElement("div", {
    
    Rémi PAILHAREY's avatar
    Rémi PAILHAREY committed
            className: (0, _classnames.default)('dataloadvisualizer-euro-fluid', (_classNames2 = {}, (0, _defineProperty2.default)(_classNames2, " ".concat(_enums.FluidType[index].toLowerCase()), valueDetail.state === _enums.DataloadState.VALID || valueDetail.state === _enums.DataloadState.UPCOMING || valueDetail.state === _enums.DataloadState.COMING || valueDetail.state === _enums.DataloadState.EMPTY || valueDetail.state === _enums.DataloadState.HOLE), (0, _defineProperty2.default)(_classNames2, " error", valueDetail.state === _enums.DataloadState.MISSING), _classNames2)),
    
            onClick: function onClick() {
    
    Rémi PAILHAREY's avatar
    Rémi PAILHAREY committed
              return emitNavEvent(_enums.FluidType[index].toLowerCase());
    
            }
          }, /*#__PURE__*/_react.default.createElement(_Icon.default, {
            className: "dataloadvisualizer-euro-fluid-icon",
            icon: (0, _picto.getNavPicto)(index, true, true),
            size: 22
    
    Rémi PAILHAREY's avatar
    Rémi PAILHAREY committed
          }), /*#__PURE__*/_react.default.createElement("div", null, valueDetail.state === _enums.DataloadState.VALID && "".concat((0, _utils.formatNumberValues)(valueDetail.value), " \u20AC"), (valueDetail.state === _enums.DataloadState.UPCOMING || valueDetail.state === _enums.DataloadState.COMING) && t('consumption_visualizer.data_to_come'), (valueDetail.state === _enums.DataloadState.EMPTY || valueDetail.state === _enums.DataloadState.HOLE) && t('consumption_visualizer.data_empty'), valueDetail.state === _enums.DataloadState.MISSING && t('consumption_visualizer.aie'))));
    
        }));
      }
    
      return /*#__PURE__*/_react.default.createElement("div", {
        className: "dataloadvisualizer-euro text-16-normal"
      }, /*#__PURE__*/_react.default.createElement(_reactRouterDom.NavLink, {
    
        to: "/consumption/".concat((0, _utils.getFluidName)(fluidType)),
    
        className: "dataloadvisualizer-euro-link"
      }, /*#__PURE__*/_react.default.createElement("div", {
    
        className: "dataloadvisualizer-euro-fluid ".concat((0, _utils.getFluidName)(fluidType))
    
      }, /*#__PURE__*/_react.default.createElement(_Icon.default, {
        className: "dataloadvisualizer-euro-fluid-icon",
        icon: (0, _picto.getNavPicto)(fluidType, true, true),
        size: 22
      }), /*#__PURE__*/_react.default.createElement("div", null, "".concat((0, _utils.formatNumberValues)(converterService.LoadToEuro(dataload.value, fluidType, dataload.price ? dataload.price : null)), " \u20AC")))));
    };
    
    var _default = DataloadSectionDetail;
    exports.default = _default;
    
    /***/ }),
    
    
    /***/ "PU46":
    /***/ (function(module, exports, __webpack_require__) {
    
    exports = module.exports = __webpack_require__("JPst")(false);
    // Module
    exports.push([module.i, "/** BLACK **/\n/** RED **/\n/** YELLOW **/\n/** ORANGE **/\n/** BLUE **/\n/** GREEN **/\n/** WHITE **/\n/** GREY **/\n/** App colors **/\n/** TABS GRADIENT **/\n/** SCROLLBAR **/\n.estimation-modal {\n  padding: 0.5rem;\n  color: #e0e0e0;\n}\n.estimation-modal .modal-title {\n  color: #e3b82a;\n  font-weight: bold;\n  text-align: center;\n  margin-bottom: 0.5rem;\n}\n.estimation-modal ul {\n  padding-left: 1rem;\n}\n.estimation-modal .electricity {\n  color: #d87b39;\n}\n.estimation-modal .water {\n  color: #3a98ec;\n}\n.estimation-modal .gas {\n  color: #45d1b8;\n}", ""]);
    
    
    
    /***/ }),
    
    /***/ "QNuF":
    /***/ (function(module, exports, __webpack_require__) {
    
    exports = module.exports = __webpack_require__("JPst")(false);
    // Module
    exports.push([module.i, "/** BLACK **/\n/** RED **/\n/** YELLOW **/\n/** ORANGE **/\n/** BLUE **/\n/** GREEN **/\n/** WHITE **/\n/** GREY **/\n/** App colors **/\n/** TABS GRADIENT **/\n/** SCROLLBAR **/\n.date-navigator {\n  display: flex;\n  flex-direction: row;\n  justify-content: space-around;\n  width: 100%;\n  margin: auto;\n  padding-bottom: 0.6rem;\n  max-width: 45.75rem;\n}\n.date-navigator .date-navigator-button {\n  border: none;\n  background: none;\n  color: #a0a0a0;\n  text-decoration: underline;\n}\n.date-navigator .date-navigator-button.disable {\n  opacity: 0.3;\n}\n.date-navigator .date-navigator-button.disable:hover {\n  cursor: default;\n}", ""]);
    
    
    
    
    474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939
    /***/ }),
    
    /***/ "VjcQ":
    /***/ (function(module, exports, __webpack_require__) {
    
    "use strict";
    
    
    var _interopRequireDefault = __webpack_require__("TqRt");
    
    Object.defineProperty(exports, "__esModule", {
      value: true
    });
    exports.default = void 0;
    
    var _regenerator = _interopRequireDefault(__webpack_require__("o0o1"));
    
    var _slicedToArray2 = _interopRequireDefault(__webpack_require__("J4zp"));
    
    var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__("yXPU"));
    
    var _classCallCheck2 = _interopRequireDefault(__webpack_require__("lwsE"));
    
    var _createClass2 = _interopRequireDefault(__webpack_require__("W8MJ"));
    
    var _defineProperty2 = _interopRequireDefault(__webpack_require__("lSNA"));
    
    var Sentry = _interopRequireWildcard(__webpack_require__("agHs"));
    
    var _cozyClient = __webpack_require__("SH7X");
    
    var _cozyLogger = _interopRequireDefault(__webpack_require__("Vggm"));
    
    var _doctypes = __webpack_require__("D2hQ");
    
    var _logger = _interopRequireDefault(__webpack_require__("gjtA"));
    
    var _fluidConfig = _interopRequireDefault(__webpack_require__("JIzA"));
    
    function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
    
    function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
    
    function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
    
    function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
    
    function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
    
    function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
    
    function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
    
    var logStack = _cozyLogger.default.namespace('fluidPricesService');
    
    var FluidPricesService = /*#__PURE__*/function () {
      function FluidPricesService(_client) {
        (0, _classCallCheck2.default)(this, FluidPricesService);
        (0, _defineProperty2.default)(this, "_client", void 0);
        this._client = _client;
      }
      /**
       * Get all prices available in database
       * @returns {FluidPrice[]}
       */
    
    
      (0, _createClass2.default)(FluidPricesService, [{
        key: "getAllPrices",
        value: function () {
          var _getAllPrices = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
            var query, _yield$this$_client$q, fluidsPrices;
    
            return _regenerator.default.wrap(function _callee$(_context) {
              while (1) {
                switch (_context.prev = _context.next) {
                  case 0:
                    query = (0, _cozyClient.Q)(_doctypes.FLUIDSPRICES_DOCTYPE).limitBy(900); // TODO : handle case of 1000+ entries in doctype
    
                    _context.next = 3;
                    return this._client.query(query);
    
                  case 3:
                    _yield$this$_client$q = _context.sent;
                    fluidsPrices = _yield$this$_client$q.data;
                    return _context.abrupt("return", fluidsPrices);
    
                  case 6:
                  case "end":
                    return _context.stop();
                }
              }
            }, _callee, this);
          }));
    
          function getAllPrices() {
            return _getAllPrices.apply(this, arguments);
          }
    
          return getAllPrices;
        }()
        /**
         * Get a price according to a fluidType and a data. This method return the nearest and valid price for the given date.
         * @param {FluidType} fluidType
         * @param {DateTime} date
         * @returns {FluidPrice}
         */
    
      }, {
        key: "getPrices",
        value: function () {
          var _getPrices = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(fluidType, date) {
            var query, _yield$this$_client$q2, fluidsPrices;
    
            return _regenerator.default.wrap(function _callee2$(_context2) {
              while (1) {
                switch (_context2.prev = _context2.next) {
                  case 0:
                    query = (0, _cozyClient.Q)(_doctypes.FLUIDSPRICES_DOCTYPE).where({
                      startDate: {
                        $lte: date.toISO({
                          suppressMilliseconds: true
                        }).toString()
                      },
                      fluidType: fluidType
                    }).indexFields(['startDate']).sortBy([{
                      startDate: 'desc'
                    }]).limitBy(1);
                    _context2.next = 3;
                    return this._client.query(query);
    
                  case 3:
                    _yield$this$_client$q2 = _context2.sent;
                    fluidsPrices = _yield$this$_client$q2.data;
                    return _context2.abrupt("return", fluidsPrices[0]);
    
                  case 6:
                  case "end":
                    return _context2.stop();
                }
              }
            }, _callee2, this);
          }));
    
          function getPrices(_x, _x2) {
            return _getPrices.apply(this, arguments);
          }
    
          return getPrices;
        }()
        /**
         * Get current prices for all fluidTypes.
         * @returns {FluidPrice[]}
         */
    
      }, {
        key: "getAllLastPrices",
        value: function () {
          var _getAllLastPrices = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
            var query, _yield$this$_client$q3, fluidsPrices, configService, fluidConfig, recoveredFluidsPrices;
    
            return _regenerator.default.wrap(function _callee3$(_context3) {
              while (1) {
                switch (_context3.prev = _context3.next) {
                  case 0:
                    query = (0, _cozyClient.Q)(_doctypes.FLUIDSPRICES_DOCTYPE).where({
                      endDate: {
                        $eq: ''
                      }
                    }).indexFields(['fluidType']).sortBy([{
                      fluidType: 'asc'
                    }]).limitBy(3);
                    _context3.next = 3;
                    return this._client.query(query);
    
                  case 3:
                    _yield$this$_client$q3 = _context3.sent;
                    fluidsPrices = _yield$this$_client$q3.data;
    
                    if (!(fluidsPrices.length !== 3)) {
                      _context3.next = 12;
                      break;
                    }
    
                    configService = new _fluidConfig.default();
                    fluidConfig = configService.getFluidConfig();
                    recoveredFluidsPrices = []; // Getting default fluid price
    
                    fluidConfig.forEach(function (config) {
                      recoveredFluidsPrices.push({
                        _id: '0',
                        fluidType: config.fluidTypeId,
                        price: config.coefficient,
                        startDate: config.startDate,
                        endDate: ''
                      });
                    }); // Replacing default prices if available
    
                    fluidsPrices.forEach(function (fluidPrice) {
                      recoveredFluidsPrices[fluidPrice.fluidType] = fluidPrice;
                    });
                    return _context3.abrupt("return", recoveredFluidsPrices);
    
                  case 12:
                    return _context3.abrupt("return", fluidsPrices);
    
                  case 13:
                  case "end":
                    return _context3.stop();
                }
              }
            }, _callee3, this);
          }));
    
          function getAllLastPrices() {
            return _getAllLastPrices.apply(this, arguments);
          }
    
          return getAllLastPrices;
        }()
        /**
         * Delete all fluidPrices entities from the db
         * @returns {boolean} - true when deleted with success
         * @throws {Error}
         */
    
      }, {
        key: "deleteAllFluidsPrices",
        value: function () {
          var _deleteAllFluidsPrices = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
            var fluidsPrices, _iterator, _step, price, errorMessage;
    
            return _regenerator.default.wrap(function _callee4$(_context4) {
              while (1) {
                switch (_context4.prev = _context4.next) {
                  case 0:
                    _context4.next = 2;
                    return this.getAllPrices();
    
                  case 2:
                    fluidsPrices = _context4.sent;
                    _context4.prev = 3;
                    _iterator = _createForOfIteratorHelper(fluidsPrices);
                    _context4.prev = 5;
    
                    _iterator.s();
    
                  case 7:
                    if ((_step = _iterator.n()).done) {
                      _context4.next = 13;
                      break;
                    }
    
                    price = _step.value;
                    _context4.next = 11;
                    return this._client.destroy(price);
    
                  case 11:
                    _context4.next = 7;
                    break;
    
                  case 13:
                    _context4.next = 18;
                    break;
    
                  case 15:
                    _context4.prev = 15;
                    _context4.t0 = _context4["catch"](5);
    
                    _iterator.e(_context4.t0);
    
                  case 18:
                    _context4.prev = 18;
    
                    _iterator.f();
    
                    return _context4.finish(18);
    
                  case 21:
                    return _context4.abrupt("return", true);
    
                  case 24:
                    _context4.prev = 24;
                    _context4.t1 = _context4["catch"](3);
                    errorMessage = "deleteAllFluidsPrices: ".concat(JSON.stringify(_context4.t1));
                    logStack('error', errorMessage);
    
                    _logger.default.error(errorMessage);
    
                    Sentry.captureException(errorMessage);
                    return _context4.abrupt("return", false);
    
                  case 31:
                  case "end":
                    return _context4.stop();
                }
              }
            }, _callee4, this, [[3, 24], [5, 15, 18, 21]]);
          }));
    
          function deleteAllFluidsPrices() {
            return _deleteAllFluidsPrices.apply(this, arguments);
          }
    
          return deleteAllFluidsPrices;
        }()
        /**
         * Check if a fluidprice exists in db
         * @param {FluidPrice} fluidPrice
         * @returns {FluidPrice | null} price or null
         */
    
      }, {
        key: "checkIfPriceExists",
        value: function () {
          var _checkIfPriceExists = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(fluidPrice) {
            var query, _yield$this$_client$q4, _yield$this$_client$q5, price;
    
            return _regenerator.default.wrap(function _callee5$(_context5) {
              while (1) {
                switch (_context5.prev = _context5.next) {
                  case 0:
                    query = (0, _cozyClient.Q)(_doctypes.FLUIDSPRICES_DOCTYPE).where({
                      startDate: {
                        $eq: fluidPrice.startDate
                      },
                      fluidType: {
                        $eq: fluidPrice.fluidType
                      }
                    });
                    _context5.next = 3;
                    return this._client.query(query);
    
                  case 3:
                    _yield$this$_client$q4 = _context5.sent;
                    _yield$this$_client$q5 = (0, _slicedToArray2.default)(_yield$this$_client$q4.data, 1);
                    price = _yield$this$_client$q5[0];
    
                    if (!price) {
                      _context5.next = 10;
                      break;
                    }
    
                    return _context5.abrupt("return", price);
    
                  case 10:
                    return _context5.abrupt("return", null);
    
                  case 11:
                  case "end":
                    return _context5.stop();
                }
              }
            }, _callee5, this);
          }));
    
          function checkIfPriceExists(_x3) {
            return _checkIfPriceExists.apply(this, arguments);
          }
    
          return checkIfPriceExists;
        }()
        /**
         * Creates a new fluidPrice
         * @param  {FluidPrice} fluidPrice
         * @returns  {FluidPrice | null}  price or null
         */
    
      }, {
        key: "createPrice",
        value: function () {
          var _createPrice = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(newPrice) {
            var _yield$this$_client$c, createdPrice, errorMessage;
    
            return _regenerator.default.wrap(function _callee6$(_context6) {
              while (1) {
                switch (_context6.prev = _context6.next) {
                  case 0:
                    _context6.prev = 0;
                    _context6.next = 3;
                    return this._client.create(_doctypes.FLUIDSPRICES_DOCTYPE, newPrice);
    
                  case 3:
                    _yield$this$_client$c = _context6.sent;
                    createdPrice = _yield$this$_client$c.data;
                    return _context6.abrupt("return", createdPrice);
    
                  case 8:
                    _context6.prev = 8;
                    _context6.t0 = _context6["catch"](0);
                    errorMessage = "'Error creating new createdPrice: ".concat(JSON.stringify(_context6.t0));
                    logStack('error', errorMessage);
    
                    _logger.default.error(errorMessage);
    
                    Sentry.captureException(errorMessage);
                    throw _context6.t0;
    
                  case 15:
                  case "end":
                    return _context6.stop();
                }
              }
            }, _callee6, this, [[0, 8]]);
          }));
    
          function createPrice(_x4) {
            return _createPrice.apply(this, arguments);
          }
    
          return createPrice;
        }()
        /**
         * Updates a price in db
         * @param  {FluidPrice} doc
         * @param  {Partial<FluidPrice>}  attributes
         * @returns  {FluidPrice | null}
         */
    
      }, {
        key: "updatePrice",
        value: function () {
          var _updatePrice = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(doc, attributes) {
            var _yield$this$_client$s, fluidPrice;
    
            return _regenerator.default.wrap(function _callee7$(_context7) {
              while (1) {
                switch (_context7.prev = _context7.next) {
                  case 0:
                    _context7.next = 2;
                    return this._client.save(_objectSpread(_objectSpread({}, doc), attributes));
    
                  case 2:
                    _yield$this$_client$s = _context7.sent;
                    fluidPrice = _yield$this$_client$s.data;
    
                    if (!fluidPrice) {
                      _context7.next = 6;
                      break;
                    }
    
                    return _context7.abrupt("return", fluidPrice);
    
                  case 6:
                    return _context7.abrupt("return", null);
    
                  case 7:
                  case "end":
                    return _context7.stop();
                }
              }
            }, _callee7, this);
          }));
    
          function updatePrice(_x5, _x6) {
            return _updatePrice.apply(this, arguments);
          }
    
          return updatePrice;
        }()
      }]);
      return FluidPricesService;
    }();
    
    exports.default = FluidPricesService;
    
    
    /***/ }),
    
    /***/ "ZpZG":
    /***/ (function(module, exports, __webpack_require__) {
    
    "use strict";
    
    
    var _interopRequireDefault = __webpack_require__("TqRt");
    
    Object.defineProperty(exports, "__esModule", {
      value: true
    });
    exports.default = void 0;
    
    
    Rémi PAILHAREY's avatar
    Rémi PAILHAREY committed
    var _enums = __webpack_require__("gnxY");
    
    
    var _luxon = __webpack_require__("ExVU");
    
    var _react = _interopRequireDefault(__webpack_require__("q1tI"));
    
    __webpack_require__("NEj4");
    
    var DateNavigatorFormat = function DateNavigatorFormat(_ref) {
      var timeStep = _ref.timeStep,
          date = _ref.date,
          inline = _ref.inline;
    
      var formatDate = function formatDate(_timeStep) {
        switch (_timeStep) {
    
    Rémi PAILHAREY's avatar
    Rémi PAILHAREY committed
          case _enums.TimeStep.YEAR:
    
            return [date.toLocaleString({
              year: 'numeric'
            }), ''];
    
    
    Rémi PAILHAREY's avatar
    Rémi PAILHAREY committed
          case _enums.TimeStep.MONTH:
    
            return [date.toLocaleString({
              month: 'long'
            }), date.toLocaleString({
              year: 'numeric'
            })];
    
    
    Rémi PAILHAREY's avatar
    Rémi PAILHAREY committed
          case _enums.TimeStep.DAY:
          case _enums.TimeStep.WEEK:
    
            return [date.toLocaleString({
              weekday: 'long',
              day: '2-digit'
            }), date.toLocaleString({
              month: 'long'
            })];
    
    
    Rémi PAILHAREY's avatar
    Rémi PAILHAREY committed
          case _enums.TimeStep.HALF_AN_HOUR:
    
            /**
             * Format date to range:
             * 9:00 - 9:30
             * Day 0X Month
             */
            return ["".concat(date.toLocaleString({
              hour: 'numeric',
              minute: 'numeric'
            }), " -\n         ").concat(date.plus({