diff --git a/1/ecolyo.415fd625cd64389d9c8d.js b/1/ecolyo.c44aefc530d1de68ee3f.js similarity index 93% rename from 1/ecolyo.415fd625cd64389d9c8d.js rename to 1/ecolyo.c44aefc530d1de68ee3f.js index c1d79fbcdcb06ab4d695541b8cbb2aa02d65dbba..f6a583e4cdf3aa070ea4f6365d979fff387176db 100644 --- a/1/ecolyo.415fd625cd64389d9c8d.js +++ b/1/ecolyo.c44aefc530d1de68ee3f.js @@ -35,15 +35,18 @@ var GCUView = function GCUView() { headerHeight = _useState2[0], setHeaderHeight = _useState2[1]; + var defineHeaderHeight = (0, _react.useCallback)(function (height) { + setHeaderHeight(height); + }, []); return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_CozyBar.default, { titleKey: 'common.title_gcu', displayBackArrow: true }), /*#__PURE__*/_react.default.createElement(_Header.default, { - setHeaderHeight: setHeaderHeight, + setHeaderHeight: defineHeaderHeight, desktopTitleKey: 'common.title_gcu', displayBackArrow: true }), /*#__PURE__*/_react.default.createElement(_Content.default, { - heightOffset: headerHeight + height: headerHeight }, /*#__PURE__*/_react.default.createElement(_GCUContent.default, null))); }; diff --git a/10/ecolyo.24e1a14cab96b50d3fbd.js b/10/ecolyo.e8a00fc8bc16cb5a9dfd.js similarity index 93% rename from 10/ecolyo.24e1a14cab96b50d3fbd.js rename to 10/ecolyo.e8a00fc8bc16cb5a9dfd.js index 6c98aebaddad93dc72d58c16774f305c42fd7150..ecaf24682c92605bf21c5f7bc81ef4997c2629dd 100644 --- a/10/ecolyo.24e1a14cab96b50d3fbd.js +++ b/10/ecolyo.e8a00fc8bc16cb5a9dfd.js @@ -37,15 +37,18 @@ var LegalNoticeView = function LegalNoticeView() { headerHeight = _useState2[0], setHeaderHeight = _useState2[1]; + var defineHeaderHeight = (0, _react.useCallback)(function (height) { + setHeaderHeight(height); + }, []); return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_CozyBar.default, { titleKey: 'common.title_legal_notice', displayBackArrow: true }), /*#__PURE__*/_react.default.createElement(_Header.default, { - setHeaderHeight: setHeaderHeight, + setHeaderHeight: defineHeaderHeight, desktopTitleKey: 'common.title_legal_notice', displayBackArrow: true }), /*#__PURE__*/_react.default.createElement(_Content.default, { - heightOffset: headerHeight + height: headerHeight }, /*#__PURE__*/_react.default.createElement(_LegalNoticeContent.default, null))); }; diff --git a/3/ecolyo.69bb5ef59bba3ab8f904.js b/3/ecolyo.dc7b4fa6e755df72417e.js similarity index 81% rename from 3/ecolyo.69bb5ef59bba3ab8f904.js rename to 3/ecolyo.dc7b4fa6e755df72417e.js index 65b861956402c6f8fcf52426664574056d265493..bed6ed37fb0774f1fda30f9f57ab1c62917128b3 100644 --- a/3/ecolyo.69bb5ef59bba3ab8f904.js +++ b/3/ecolyo.dc7b4fa6e755df72417e.js @@ -1,21 +1,10 @@ (window["webpackJsonp"] = window["webpackJsonp"] || []).push([[3],{ -/***/ "/AJG": -/***/ (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.special-elec-container {\n color: white;\n}\n.special-elec-container .elec-icon {\n margin: auto;\n display: block;\n}\n.special-elec-container .title {\n text-align: center;\n margin-top: 1rem;\n color: #e0e0e0;\n}\n.special-elec-container .navigator {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n text-align: center;\n margin: 1rem 0;\n}\n.special-elec-container .navigator .text-1 {\n color: #e0e0e0;\n}\n.special-elec-container .navigator .week {\n color: #e2bca1;\n}\n.special-elec-container .navigator .weekend {\n color: #ffd597;\n}\n.special-elec-container .minIcon {\n margin: auto 0.8rem auto 0;\n}\n.special-elec-container .activation-text {\n margin: 1rem 0 0.7rem 0;\n}\n.special-elec-container .oauthform-button-content {\n display: flex;\n padding: 0.5rem;\n}\n.special-elec-container .oauthform-button-text {\n text-align: left;\n margin-left: 1rem;\n}\n.special-elec-container .container {\n margin-bottom: 1rem;\n padding: 1rem;\n border: 1px solid #e0e0e0;\n border-radius: 10px;\n display: flex;\n}\n.special-elec-container .container .min {\n max-width: 150px;\n}\n.special-elec-container .container .text {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n}\n.special-elec-container .container .value {\n margin-left: auto;\n display: flex;\n flex-direction: column;\n align-items: self-end;\n min-width: 80px;\n justify-content: space-between;\n}\n.special-elec-container .container .kvAval {\n margin: auto 0 auto auto;\n}\n.special-elec-container .consomin {\n min-height: 100px;\n}\n.special-elec-container .no_data {\n text-align: center;\n color: white;\n}\n.special-elec-container .showmodal {\n cursor: pointer;\n margin: 1.5rem 0 0.5rem;\n text-align: center;\n color: #e0e0e0;\n text-decoration: underline;\n}\n\n.graph-elec-half-hour {\n height: 12rem;\n margin-top: 2rem;\n}", ""]); - - - -/***/ }), - -/***/ "/Maf": +/***/ "/Sqe": /***/ (function(module, exports, __webpack_require__) { -var content = __webpack_require__("FfVf"); +var content = __webpack_require__("DGgM"); if(typeof content === 'string') content = [[module.i, content, '']]; @@ -37,11 +26,11 @@ if(false) {} /***/ }), -/***/ "/Sqe": +/***/ "0oKQ": /***/ (function(module, exports, __webpack_require__) { -var content = __webpack_require__("DGgM"); +var content = __webpack_require__("vjLb"); if(typeof content === 'string') content = [[module.i, content, '']]; @@ -63,7 +52,29 @@ if(false) {} /***/ }), -/***/ "1FYC": +/***/ "3/0l": +/***/ (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.analysis-root {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: space-around;\n padding: 1rem 1rem 1.5rem;\n gap: 1rem;\n}\n.analysis-root.black {\n background: var(--darkLight2);\n}\n@media only screen and (max-width : 768px) {\n .analysis-root {\n margin-bottom: 0;\n }\n}\n.analysis-root .analysis-content {\n width: 45.75rem;\n}\n@media only screen and (max-width : 768px) {\n .analysis-root .analysis-content {\n width: 100%;\n }\n}\n.analysis-root .status-header {\n display: grid;\n grid-template-columns: 1fr 1fr 1fr;\n grid-gap: 0.5rem;\n justify-content: end;\n color: #e0e0e0 !important;\n}\n.analysis-root .status-header div {\n align-items: center;\n display: flex;\n flex-direction: column;\n grid-column: 2;\n}\n.analysis-root .status-header button {\n grid-column: 3;\n display: flex;\n justify-self: end;\n}\n.analysis-root .status-header button.btn-secondary-negative {\n min-width: 40px;\n width: 40px;\n height: 40px;\n padding: 0;\n margin: 0;\n}\n\n.analysis-container-spinner {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n text-align: center;\n}", ""]); + + + +/***/ }), + +/***/ "69HH": +/***/ (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.consumption-multifluid,\n.consumption-electricity,\n.consumption-water,\n.consumption-gas {\n display: flex;\n margin-bottom: 1rem;\n}\n.consumption-multifluid .user-graph .graph,\n.consumption-electricity .user-graph .graph,\n.consumption-water .user-graph .graph,\n.consumption-gas .user-graph .graph {\n border-radius: 0.35rem 0 0 0.35rem;\n}\n.consumption-multifluid .user-graph .price.not-connected,\n.consumption-electricity .user-graph .price.not-connected,\n.consumption-water .user-graph .price.not-connected,\n.consumption-gas .user-graph .price.not-connected {\n color: #a0a0a0;\n height: 2rem;\n width: 100%;\n align-items: center;\n display: flex;\n}\n.consumption-multifluid .average-graph,\n.consumption-electricity .average-graph,\n.consumption-water .average-graph,\n.consumption-gas .average-graph {\n color: #bfcce4;\n}\n.consumption-multifluid .average-graph .price,\n.consumption-electricity .average-graph .price,\n.consumption-water .average-graph .price,\n.consumption-gas .average-graph .price {\n text-align: right;\n}\n.consumption-multifluid .average-graph .price.not-connected,\n.consumption-electricity .average-graph .price.not-connected,\n.consumption-water .average-graph .price.not-connected,\n.consumption-gas .average-graph .price.not-connected {\n opacity: 0.55;\n}\n.consumption-multifluid .average-graph .graph,\n.consumption-electricity .average-graph .graph,\n.consumption-water .average-graph .graph,\n.consumption-gas .average-graph .graph {\n background-color: #bfcce4;\n}\n\n.consumption-sep {\n border-top: 1px solid #7b7b7b;\n margin: 1rem 0;\n}\n\n.user-graph,\n.average-graph {\n display: flex;\n justify-content: space-between;\n flex-basis: 45%;\n align-items: center;\n}\n\n.consumption-multifluid .user-graph {\n color: #e3b82a;\n}\n.consumption-multifluid .user-graph .graph {\n background-color: #e3b82a;\n}\n\n.consumption-electricity .user-graph {\n color: #d87b39;\n}\n.consumption-electricity .user-graph .graph {\n background-color: #d87b39;\n}\n\n.consumption-water .user-graph {\n color: #3a98ec;\n}\n.consumption-water .user-graph .graph {\n background-color: #3a98ec;\n}\n\n.consumption-gas .user-graph {\n color: #45d1b8;\n}\n.consumption-gas .user-graph .graph {\n background-color: #45d1b8;\n}\n\n.analysisRow .icon-container {\n flex-basis: 10%;\n display: flex;\n justify-content: center;\n}\n.analysisRow .icon-container svg {\n align-self: center;\n width: 40px;\n}\n\n.container-graph {\n flex-basis: 50%;\n display: flex;\n}\n\n.user-graph .container-graph {\n justify-content: flex-end;\n}\n\n.price {\n min-width: 5.25rem;\n}\n\n.graph {\n border-radius: 0 0.35rem 0.35rem 0;\n padding-left: 0.25rem;\n height: 2rem;\n}", ""]); + + + +/***/ }), + +/***/ "6ISt": /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -82,21 +93,19 @@ var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__("yXPU")); var _slicedToArray2 = _interopRequireDefault(__webpack_require__("J4zp")); -var _IconButton = _interopRequireDefault(__webpack_require__("o6Jd")); - -var _graphIcon = _interopRequireDefault(__webpack_require__("bIeq")); +var _core = __webpack_require__("TTf+"); -var _leftArrow = _interopRequireDefault(__webpack_require__("bZGv")); +var _Button = _interopRequireDefault(__webpack_require__("FtsS")); -var _rightArrow = _interopRequireDefault(__webpack_require__("fZGW")); +var _chevronDown = _interopRequireDefault(__webpack_require__("CYAo")); -var _BarChart = _interopRequireDefault(__webpack_require__("CPpy")); +var _profileEdit = _interopRequireDefault(__webpack_require__("vdp4")); -var _StyledIcon = _interopRequireDefault(__webpack_require__("I07j")); +var _analysis = _interopRequireDefault(__webpack_require__("jSRn")); -var _DataloadSection = _interopRequireDefault(__webpack_require__("nGEn")); +var _noProfilePlaceholder = _interopRequireDefault(__webpack_require__("tM5S")); -var _useChartResize2 = __webpack_require__("tWvI"); +var _StyledIcon = _interopRequireDefault(__webpack_require__("I07j")); var _Loader = _interopRequireDefault(__webpack_require__("Ra/y")); @@ -106,139 +115,161 @@ var _I18n = __webpack_require__("buk/"); var _Icon = _interopRequireDefault(__webpack_require__("y6ex")); -var _dataload = __webpack_require__("D5WE"); - var _fluid = __webpack_require__("5Wkc"); -var _timeStep = __webpack_require__("cKQ8"); - var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _consumption = _interopRequireDefault(__webpack_require__("AVq/")); +var _reactRedux = __webpack_require__("/MKj"); -var _chart = __webpack_require__("idK9"); +var _reactRouterDom = __webpack_require__("SOjZ"); + +var _profileType = _interopRequireDefault(__webpack_require__("7e12")); + +var _profileTypeEntity = _interopRequireDefault(__webpack_require__("aypK")); -var _hooks = __webpack_require__("Zlw4"); +var _AnalysisConsumptionRow = _interopRequireDefault(__webpack_require__("lZiS")); -__webpack_require__("Dswe"); +__webpack_require__("u5Ob"); 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 MaxConsumptionCard = function MaxConsumptionCard(_ref) { - var fluidsWithData = _ref.fluidsWithData; +var AnalysisConsumption = function AnalysisConsumption(_ref) { + var aggregatedPerformanceIndicator = _ref.aggregatedPerformanceIndicator, + performanceIndicators = _ref.performanceIndicators; var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; + var navigate = (0, _reactRouterDom.useNavigate)(); var client = (0, _cozyClient.useClient)(); - var dispatch = (0, _hooks.useAppDispatch)(); + var userPriceConsumption = aggregatedPerformanceIndicator.value || 0; - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { - return state.ecolyo.analysis; + var _useSelector = (0, _reactRedux.useSelector)(function (state) { + return state.ecolyo; }), - analysisMonth = _useAppSelector.analysisMonth; + analysisMonth = _useSelector.analysis.analysisMonth, + fluidTypes = _useSelector.global.fluidTypes, + profile = _useSelector.profile; - var _useState = (0, _react.useState)(false), + var _useState = (0, _react.useState)(0), _useState2 = (0, _slicedToArray2.default)(_useState, 2), - isLoading = _useState2[0], - setIsLoading = _useState2[1]; + homePriceConsumption = _useState2[0], + setHomePriceConsumption = _useState2[1]; var _useState3 = (0, _react.useState)(null), _useState4 = (0, _slicedToArray2.default)(_useState3, 2), - maxDayData = _useState4[0], - setMaxDayData = _useState4[1]; + forecast = _useState4[0], + setForecast = _useState4[1]; - var _useState5 = (0, _react.useState)({ - actualData: [], - comparisonData: null - }), + var _useState5 = (0, _react.useState)(true), _useState6 = (0, _slicedToArray2.default)(_useState5, 2), - chartData = _useState6[0], - setChartData = _useState6[1]; + isLoading = _useState6[0], + setIsLoading = _useState6[1]; - var containerRef = (0, _react.useRef)(null); + var _useState7 = (0, _react.useState)(false), + _useState8 = (0, _slicedToArray2.default)(_useState7, 2), + activeAverageHome = _useState8[0], + setActiveAverageHome = _useState8[1]; - var _useChartResize = (0, _useChartResize2.useChartResize)(containerRef, isLoading, 250, 940), - height = _useChartResize.height, - width = _useChartResize.width; + var toggleAccordion = function toggleAccordion() { + setActiveAverageHome(function (prev) { + return !prev; + }); - var _useState7 = (0, _react.useState)(), - _useState8 = (0, _slicedToArray2.default)(_useState7, 2), - currentFluid = _useState8[0], - setCurrentFluid = _useState8[1]; + if (!activeAverageHome) { + setTimeout(function () { + var content = document.querySelector('.consumption-electricity'); - (0, _react.useEffect)(function () { - setCurrentFluid(fluidsWithData[0]); - }, [fluidsWithData]); - var currentFluidSlug = _fluid.FluidType[currentFluid || 0]; + if (content) { + content.scrollIntoView({ + behavior: 'smooth', + block: 'start' + }); + } + }, 300); + } + }; // Disconnected + empty fluids to show in AnalysisConsumptionRow - var handleFluidChange = function handleFluidChange(direction) { - if (currentFluid === undefined) return; - setIsLoading(true); - var newIndex = fluidsWithData.indexOf(currentFluid) + direction; - if (newIndex >= fluidsWithData.length) { - newIndex = 0; - } else if (newIndex < 0) { - newIndex = fluidsWithData.length - 1; + var disconnectedFluidTypes = [_fluid.FluidType.ELECTRICITY, _fluid.FluidType.WATER, _fluid.FluidType.GAS].filter(function (fluidType) { + return !fluidTypes.includes(fluidType); + }); + var emptyFluidTypes = []; + + for (var i = 0; i < performanceIndicators.length; i++) { + var _performanceIndicator; + + if (!((_performanceIndicator = performanceIndicators[i]) !== null && _performanceIndicator !== void 0 && _performanceIndicator.value) && fluidTypes[i]) { + emptyFluidTypes.push(fluidTypes[i]); + } + } + + var getTotalValueWithConnectedFluids = (0, _react.useCallback)(function (monthlyForecast) { + if (fluidTypes.length === 3) { + setHomePriceConsumption(monthlyForecast.totalValue); + } else { + var totalPrice = 0; + fluidTypes.forEach(function (fluid) { + if (monthlyForecast.fluidForecast[fluid].value) totalPrice += monthlyForecast.fluidForecast[fluid].value; + }); + setHomePriceConsumption(totalPrice); } + }, [fluidTypes]); - setCurrentFluid(fluidsWithData[newIndex]); + var goToForm = function goToForm() { + navigate('/profileType'); }; (0, _react.useEffect)(function () { var subscribed = true; - function getMaxLoadData() { - return _getMaxLoadData.apply(this, arguments); + function loadAverageConsumption() { + return _loadAverageConsumption.apply(this, arguments); } - function _getMaxLoadData() { - _getMaxLoadData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { - var timePeriod, consumptionService, monthlyData, maxDay; + function _loadAverageConsumption() { + _loadAverageConsumption = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { + var profileTypeEntityService, profileType, profileTypeService, monthlyForecast; return _regenerator.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: - if (!(currentFluid === undefined)) { - _context.next = 2; + profileTypeEntityService = new _profileTypeEntity.default(client); + _context.next = 3; + return profileTypeEntityService.getProfileType(analysisMonth.minus({ + month: 1 + }).startOf('month')); + + case 3: + profileType = _context.sent; + + if (!(profileType !== null)) { + _context.next = 10; break; } - return _context.abrupt("return"); - - case 2: - setIsLoading(true); - timePeriod = { - startDate: analysisMonth.minus({ - month: 1 - }).startOf('month'), - endDate: analysisMonth.minus({ - month: 1 - }).endOf('month') - }; - consumptionService = new _consumption.default(client); - _context.next = 7; - return consumptionService.getGraphData(timePeriod, _timeStep.TimeStep.DAY, [currentFluid]); + profileTypeService = new _profileType.default(profileType, client, analysisMonth.minus({ + month: 1 + }).year); + _context.next = 8; + return profileTypeService.getMonthlyForecast(analysisMonth.minus({ + month: 1 + }).startOf('month').month); - case 7: - monthlyData = _context.sent; + case 8: + monthlyForecast = _context.sent; - if (monthlyData && (monthlyData === null || monthlyData === void 0 ? void 0 : monthlyData.actualData.length) > 0) { - setChartData(monthlyData); - maxDay = getMaxConsumptionDay(monthlyData.actualData); + if (subscribed) { + setForecast(monthlyForecast); - if (maxDay) { - setMaxDayData(maxDay); - dispatch((0, _chart.setSelectedDate)(maxDay.date)); - } else { - setMaxDayData(null); + if (monthlyForecast) { + getTotalValueWithConnectedFluids(monthlyForecast); } - } - setIsLoading(false); + setIsLoading(false); + } case 10: case "end": @@ -247,511 +278,497 @@ var MaxConsumptionCard = function MaxConsumptionCard(_ref) { } }, _callee); })); - return _getMaxLoadData.apply(this, arguments); - } - - if (subscribed) { - getMaxLoadData(); + return _loadAverageConsumption.apply(this, arguments); } + loadAverageConsumption(); return function () { subscribed = false; }; - }, [analysisMonth, client, fluidsWithData, currentFluid, dispatch]); + }, [profile.monthlyAnalysisDate.month, getTotalValueWithConnectedFluids, client, analysisMonth.month, analysisMonth]); - var getMaxConsumptionDay = function getMaxConsumptionDay(dataload) { - var maxIndex = -1; - var maxValue = -1; - dataload.forEach(function (day, index) { - if (day.value > 0 && day.value > maxValue) { - maxValue = day.value; - maxIndex = index; - } - }); - if (maxIndex === -1) return null; - return dataload[maxIndex]; - }; + var profileNotCompleted = /*#__PURE__*/_react.default.createElement("div", { + className: "no-profile" + }, /*#__PURE__*/_react.default.createElement("div", { + className: "text-16-normal" + }, t('analysis.approximative_description')), /*#__PURE__*/_react.default.createElement(_Button.default, { + "aria-label": t('analysis.accessibility.button_go_to_profil'), + onClick: goToForm, + classes: { + root: 'btn-highlight', + label: 'text-18-bold' + } + }, t('analysis.accessibility.button_go_to_profil')), /*#__PURE__*/_react.default.createElement(_Icon.default, { + icon: _noProfilePlaceholder.default, + width: "100%", + height: "60%", + alt: "pas de profil remplis" + })); - var buttonPrev = function buttonPrev() { - return /*#__PURE__*/_react.default.createElement(_IconButton.default, { - "aria-label": t('consumption.accessibility.button_previous_value'), - onClick: function onClick() { - return handleFluidChange(-1); - }, - className: "arrow-prev" - }, /*#__PURE__*/_react.default.createElement(_Icon.default, { - icon: _leftArrow.default, - size: 24 - })); - }; + var Consumption = /*#__PURE__*/_react.default.createElement("div", { + className: "analysis-graph" + }, isLoading ? /*#__PURE__*/_react.default.createElement("div", { + className: "loader-container" + }, /*#__PURE__*/_react.default.createElement(_Loader.default, { + color: "elec" + })) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", { + className: "consumption-title text-20-bold" + }, /*#__PURE__*/_react.default.createElement("div", { + className: "user-title" + }, t('analysis.user_consumption')), /*#__PURE__*/_react.default.createElement("div", { + className: "average-title" + }, t("analysis.comparison"))), /*#__PURE__*/_react.default.createElement("div", { + className: "consumption-price" + }, /*#__PURE__*/_react.default.createElement(_AnalysisConsumptionRow.default, { + fluid: _fluid.FluidType.MULTIFLUID, + userPriceConsumption: userPriceConsumption, + homePriceConsumption: homePriceConsumption, + performanceValue: null, + forecast: forecast, + connected: fluidTypes.length > 0, + noData: false + })), fluidTypes.map(function (fluid) { + var _performanceIndicator2; - var buttonNext = function buttonNext() { - return /*#__PURE__*/_react.default.createElement(_IconButton.default, { - "aria-label": t('consumption.accessibility.button_next_value'), - onClick: function onClick() { - return handleFluidChange(1); - }, - className: "arrow-next" - }, /*#__PURE__*/_react.default.createElement(_Icon.default, { - icon: _rightArrow.default, - size: 24 - })); - }; + return Boolean((_performanceIndicator2 = performanceIndicators[fluid]) === null || _performanceIndicator2 === void 0 ? void 0 : _performanceIndicator2.value) && /*#__PURE__*/_react.default.createElement(_AnalysisConsumptionRow.default, { + key: fluid, + fluid: fluid, + userPriceConsumption: userPriceConsumption, + homePriceConsumption: homePriceConsumption, + performanceValue: performanceIndicators[fluid].value, + forecast: forecast, + connected: true, + noData: false + }); + }), fluidTypes.length < 3 && /*#__PURE__*/_react.default.createElement("hr", { + className: "consumption-sep" + }), disconnectedFluidTypes.map(function (fluid) { + return /*#__PURE__*/_react.default.createElement(_AnalysisConsumptionRow.default, { + key: fluid, + fluid: fluid, + userPriceConsumption: userPriceConsumption, + homePriceConsumption: homePriceConsumption, + performanceValue: null, + forecast: forecast, + connected: false, + noData: false + }); + }), emptyFluidTypes.map(function (fluid) { + return /*#__PURE__*/_react.default.createElement(_AnalysisConsumptionRow.default, { + key: fluid, + fluid: fluid, + userPriceConsumption: userPriceConsumption, + homePriceConsumption: homePriceConsumption, + performanceValue: null, + forecast: forecast, + connected: false, + noData: true + }); + }), /*#__PURE__*/_react.default.createElement(_core.Accordion, { + expanded: activeAverageHome, + onChange: toggleAccordion, + classes: { + root: 'expansion-panel-root' + } + }, /*#__PURE__*/_react.default.createElement(_core.AccordionSummary, { + "aria-label": t('profile_type.accessibility.button_toggle_average_home'), + expandIcon: /*#__PURE__*/_react.default.createElement(_Icon.default, { + icon: _chevronDown.default, + size: 16, + className: "accordion-icon" + }), + classes: { + root: 'expansion-panel-summary', + content: 'expansion-panel-content' + } + }, /*#__PURE__*/_react.default.createElement("div", { + className: "accordion-title accordion-title" + }, t('analysis.average_home'))), /*#__PURE__*/_react.default.createElement(_core.AccordionDetails, { + classes: { + root: 'expansion-panel-details' + } + }, /*#__PURE__*/_react.default.createElement("span", { + className: "accordion-desc text-16-normal" + }, t('analysis.average_home_description')))))); - return /*#__PURE__*/_react.default.createElement("div", { - className: "max-consumption-container", - ref: containerRef - }, /*#__PURE__*/_react.default.createElement(_StyledIcon.default, { - icon: _graphIcon.default, - size: 38 - }), /*#__PURE__*/_react.default.createElement("div", { - className: "text-16-normal title" - }, t('analysis.max_day')), /*#__PURE__*/_react.default.createElement("div", { - className: "fluid-navigation" - }, fluidsWithData.length > 1 && buttonPrev(), /*#__PURE__*/_react.default.createElement("div", { - className: "text-20-bold fluid ".concat(currentFluidSlug.toLowerCase()) - }, t("FLUID.".concat(currentFluidSlug, ".LABEL"))), fluidsWithData.length > 1 && buttonNext()), /*#__PURE__*/_react.default.createElement("div", { - className: "data-container" - }, isLoading && /*#__PURE__*/_react.default.createElement("div", { - className: "loaderContainer" - }, /*#__PURE__*/_react.default.createElement(_Loader.default, { - fluidType: currentFluid - })), !isLoading && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, !maxDayData && /*#__PURE__*/_react.default.createElement("p", { - className: "text-20-bold no_data" - }, t('analysis.no_data')), maxDayData && currentFluid !== undefined && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", { - className: "text-24-bold maxDay-date" - }, maxDayData.date.setLocale('fr').toFormat('cccc dd LLLL')), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_DataloadSection.default, { - dataload: maxDayData, - fluidType: currentFluid, - dataloadSectionType: _dataload.DataloadSectionType.NO_COMPARE, - toggleEstimationModal: function toggleEstimationModal() { - return null; + return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", { + className: "status-header" + }, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_StyledIcon.default, { + icon: _analysis.default, + size: 44 + }), /*#__PURE__*/_react.default.createElement("p", { + className: "text-16-normal" + }, t('analysis.compare.title'))), profile.isProfileTypeCompleted && /*#__PURE__*/_react.default.createElement(_Button.default, { + "aria-label": t('analysis.accessibility.button_go_to_profil'), + onClick: goToForm, + classes: { + root: 'btn-secondary-negative', + label: 'text-16-normal' } - })), /*#__PURE__*/_react.default.createElement(_BarChart.default, { - chartData: chartData, - fluidType: currentFluid, - timeStep: _timeStep.TimeStep.DAY, - showCompare: false, - height: height, - width: width, - isSwitching: false, - clickable: false - }))))); + }, /*#__PURE__*/_react.default.createElement(_StyledIcon.default, { + icon: _profileEdit.default, + size: 40 + }))), /*#__PURE__*/_react.default.createElement("div", { + className: "analysis-graph" + }, !profile.isProfileTypeCompleted && profileNotCompleted, profile.isProfileTypeCompleted && Consumption)); }; -var _default = MaxConsumptionCard; +var _default = AnalysisConsumption; exports.default = _default; /***/ }), -/***/ "3/0l": +/***/ "6az+": /***/ (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.analysis-root {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 1rem 1rem 1.5rem;\n gap: 1rem;\n}\n.analysis-root .analysis-content {\n width: 45.75rem;\n}\n@media only screen and (max-width : 768px) {\n .analysis-root .analysis-content {\n width: 100%;\n }\n}\n.analysis-root .status-header {\n display: grid;\n grid-template-columns: 1fr 1fr 1fr;\n grid-gap: 0.5rem;\n justify-content: end;\n color: #e0e0e0 !important;\n}\n.analysis-root .status-header div {\n align-items: center;\n display: flex;\n flex-direction: column;\n grid-column: 2;\n}\n.analysis-root .status-header button {\n grid-column: 3;\n display: flex;\n justify-self: end;\n}\n.analysis-root .status-header button.btn-secondary-negative {\n min-width: 40px;\n width: 40px;\n height: 40px;\n padding: 0;\n margin: 0;\n}", ""]); - - - -/***/ }), - -/***/ "BQYg": -/***/ (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": "maxPower_a32511543057af4db9e35ce24c2782e7", - "use": "maxPower_a32511543057af4db9e35ce24c2782e7-usage", - "viewBox": "0 0 40 40", - "content": "<symbol viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" id=\"maxPower_a32511543057af4db9e35ce24c2782e7\">\n<rect x=\"7\" y=\"6\" width=\"25\" height=\"2\" rx=\"1\" fill=\"white\" />\n<path d=\"M17 14C17 12.8954 17.8954 12 19 12H20C21.1046 12 22 12.8954 22 14V33H17V14Z\" fill=\"#D87B39\" />\n<path d=\"M9 24C9 22.8954 9.89543 22 11 22H12C13.1046 22 14 22.8954 14 24V33H9V24Z\" fill=\"#D87B39\" />\n<path d=\"M25 28C25 26.8954 25.8954 26 27 26H28C29.1046 26 30 26.8954 30 28V33H25V28Z\" fill=\"#D87B39\" />\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); - -/***/ }), - -/***/ "BVQw": -/***/ (function(module, exports, __webpack_require__) { -"use strict"; +var _interopRequireDefault = __webpack_require__("TqRt"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; -var d3 = _interopRequireWildcard(__webpack_require__("VphZ")); - -var _react = _interopRequireWildcard(__webpack_require__("q1tI")); - -__webpack_require__("ir/a"); +var _regenerator = _interopRequireDefault(__webpack_require__("o0o1")); -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); } +var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__("yXPU")); -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 _slicedToArray2 = _interopRequireDefault(__webpack_require__("J4zp")); -var PieChart = function PieChart(_ref) { - var innerRadius = _ref.innerRadius, - outerRadius = _ref.outerRadius, - dataloadValueDetailArray = _ref.dataloadValueDetailArray, - radius = _ref.radius, - children = _ref.children; - var ref = (0, _react.useRef)(null); - var createPie = d3.pie().sort(null); - var arcWidth = outerRadius - innerRadius; - (0, _react.useEffect)(function () { - var dataloadArray = dataloadValueDetailArray.map(function (dataload) { - return dataload.value; - }); - var data = createPie(dataloadArray); - var group = d3.select(ref.current); - var groupWithData = group.selectAll('g.arc').data(data); - var colors = ['#D87B39', '#3A98EC', '#45D1B8']; - var createArc = d3.arc().innerRadius(innerRadius).outerRadius(outerRadius); - groupWithData.exit().remove(); - var groupWithUpdate = groupWithData.enter().append('g').attr('class', 'arc').attr('filter', 'url(#glow)'); - var path = groupWithUpdate.append('path').merge(groupWithData.select('path.arc')); - path.attr('class', 'arc').attr('d', createArc).attr('fill', function (_d, i) { - return colors[i]; - }); - }, [createPie, dataloadValueDetailArray, innerRadius, outerRadius]); - return /*#__PURE__*/_react.default.createElement("div", { - className: "pie-container", - style: { - width: radius, - height: radius - } - }, /*#__PURE__*/_react.default.createElement("svg", { - width: radius, - height: radius - }, /*#__PURE__*/_react.default.createElement("defs", null, /*#__PURE__*/_react.default.createElement("filter", { - id: "glow", - height: "300%", - width: "300%", - x: "-75%", - y: "-75%" - }, /*#__PURE__*/_react.default.createElement("feGaussianBlur", { - stdDeviation: "10", - result: "coloredBlur" - }), /*#__PURE__*/_react.default.createElement("feMerge", null, /*#__PURE__*/_react.default.createElement("feMergeNode", { - in: "coloredBlur" - }), /*#__PURE__*/_react.default.createElement("feMergeNode", { - in: "SourceGraphic" - })))), /*#__PURE__*/_react.default.createElement("g", { - ref: ref, - transform: "translate(".concat(outerRadius, " ").concat(outerRadius, ")") - })), /*#__PURE__*/_react.default.createElement("div", { - className: "pie-center", - style: { - width: radius - arcWidth, - height: radius - arcWidth, - top: arcWidth / 2, - left: arcWidth - arcWidth / 2 - } - }, children, /*#__PURE__*/_react.default.createElement("div", { - className: "circle", - style: { - width: radius - arcWidth * 2, - height: radius - arcWidth * 2, - top: arcWidth / 2, - left: arcWidth - arcWidth / 2 - } - }))); -}; +var _core = __webpack_require__("TTf+"); -var _default = PieChart; -exports.default = _default; +var _Loader = _interopRequireDefault(__webpack_require__("Ra/y")); -/***/ }), +var _FluidPerformanceIndicator = _interopRequireDefault(__webpack_require__("uqkh")); -/***/ "CmP6": -/***/ (function(module, exports, __webpack_require__) { +var _cozyClient = __webpack_require__("SH7X"); -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.fi-root {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 0.5rem 1.5rem;\n}\n@media only screen and (max-width : 768px) {\n .fi-root {\n margin-bottom: 0;\n }\n}\n.fi-root .fi-content {\n min-height: 23.875rem;\n width: 45.75rem;\n}\n@media only screen and (max-width : 768px) {\n .fi-root .fi-content {\n width: 100%;\n }\n}\n.fi-root .fi-content .fi-header {\n margin-top: 1rem;\n margin-bottom: 1.25rem;\n color: #e0e0e0;\n font-size: 1rem;\n}\n\n.fpi {\n display: flex;\n flex-direction: row;\n border: 1px solid #7b7b7b;\n border-radius: 4px;\n padding: 16px 22px;\n gap: 1rem;\n align-items: center;\n box-shadow: 0px 4px 16px 0px rgba(0, 0, 0, 0.5490196078);\n}\n.fpi .fpi-content .fpi-value .fpi-load {\n font-size: 1.75rem;\n font-weight: 900;\n margin-right: 4px;\n color: #ffffff;\n}\n.fpi .fpi-content .fpi-value .fpi-unit {\n font-size: 1.125rem;\n color: #e0e0e0;\n}\n.fpi .fpi-content .fpi-comparison .percent {\n font-weight: 700;\n}\n.fpi .fpi-content .fpi-comparison .percent.positive {\n color: #d25959;\n}\n.fpi .fpi-content .fpi-comparison .percent.negative {\n color: #7fd771;\n}\n.fpi .fpi-content .fpi-comparison .fpi-comparison-date {\n color: #a0a0a0;\n}\n.fpi .fpi-content .fpi-no-comparison {\n font-size: 0.875rem;\n color: #a0a0a0;\n}\n.fpi .fpi-content .fpi-content-no-data {\n color: #e0e0e0;\n}", ""]); +var _I18n = __webpack_require__("buk/"); +var _timeStep = __webpack_require__("cKQ8"); +var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -/***/ }), +var _reactRedux = __webpack_require__("/MKj"); -/***/ "DGgM": -/***/ (function(module, exports, __webpack_require__) { +var _consumption = _interopRequireDefault(__webpack_require__("AVq/")); -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.analysis-view-title {\n color: #e0e0e0;\n text-align: center;\n margin-bottom: 1rem;\n}", ""]); +var _analysis = __webpack_require__("JQjK"); +__webpack_require__("iaBB"); +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; } -/***/ "DTIR": -/***/ (function(module, exports, __webpack_require__) { +var ComparisonView = function ComparisonView(_ref) { + var fluidConfig = _ref.fluidConfig; -"use strict"; + var _useI18n = (0, _I18n.useI18n)(), + t = _useI18n.t; + var client = (0, _cozyClient.useClient)(); -var _interopRequireDefault = __webpack_require__("TqRt"); + var _useSelector = (0, _reactRedux.useSelector)(function (state) { + return state.ecolyo; + }), + fluidTypes = _useSelector.global.fluidTypes, + _useSelector$analysis = _useSelector.analysis, + period = _useSelector$analysis.period, + analysisMonth = _useSelector$analysis.analysisMonth; -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; + var dispatch = (0, _reactRedux.useDispatch)(); -var _slicedToArray2 = _interopRequireDefault(__webpack_require__("J4zp")); + var _useState = (0, _react.useState)([]), + _useState2 = (0, _slicedToArray2.default)(_useState, 2), + monthPerformanceIndicators = _useState2[0], + setMonthPerformanceIndicators = _useState2[1]; -var _MonthlyAnalysis = _interopRequireDefault(__webpack_require__("XBNI")); + var _useState3 = (0, _react.useState)([]), + _useState4 = (0, _slicedToArray2.default)(_useState3, 2), + yearPerformanceIndicators = _useState4[0], + setYearPerformanceIndicators = _useState4[1]; -var _Content = _interopRequireDefault(__webpack_require__("VOVi")); - -var _DateNavigator = _interopRequireDefault(__webpack_require__("Hno1")); - -var _CozyBar = _interopRequireDefault(__webpack_require__("CJMG")); - -var _Header = _interopRequireDefault(__webpack_require__("frrP")); - -var _cozyClient = __webpack_require__("SH7X"); - -var _timeStep = __webpack_require__("cKQ8"); - -var _usageEvent = __webpack_require__("/fHX"); - -var _luxon = __webpack_require__("ExVU"); - -var _react = _interopRequireWildcard(__webpack_require__("q1tI")); - -var _reactRouterDom = __webpack_require__("SOjZ"); - -var _dateChart = _interopRequireDefault(__webpack_require__("Ty7+")); - -var _usageEvent2 = _interopRequireDefault(__webpack_require__("dECN")); - -var _analysis = __webpack_require__("JQjK"); - -var _global = __webpack_require__("b3rE"); - -var _hooks = __webpack_require__("Zlw4"); - -var _profile = __webpack_require__("jPH6"); - -var _date = __webpack_require__("XrP9"); - -__webpack_require__("/Sqe"); - -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 _useState5 = (0, _react.useState)(true), + _useState6 = (0, _slicedToArray2.default)(_useState5, 2), + isLoading = _useState6[0], + setIsLoading = _useState6[1]; -var AnalysisView = function AnalysisView() { - var client = (0, _cozyClient.useClient)(); + var consumptionService = (0, _react.useMemo)(function () { + return new _consumption.default(client); + }, [client]); + var monthPeriod = (0, _react.useMemo)(function () { + return { + startDate: analysisMonth.minus({ + month: 1 + }).startOf('month'), + endDate: analysisMonth.minus({ + month: 1 + }).endOf('month') + }; + }, [analysisMonth]); + var previousMonthPeriod = (0, _react.useMemo)(function () { + return { + startDate: analysisMonth.minus({ + month: 2 + }).startOf('month'), + endDate: analysisMonth.minus({ + month: 2 + }).endOf('month') + }; + }, [analysisMonth]); + var previousYearPeriod = (0, _react.useMemo)(function () { + return { + startDate: analysisMonth.minus({ + year: 1, + month: 1 + }).startOf('month'), + endDate: analysisMonth.minus({ + year: 1, + month: 1 + }).endOf('month') + }; + }, [analysisMonth]); + var loaderPlaceholderHeight = fluidTypes.length * 84 + (fluidTypes.length - 1) * 10; + (0, _react.useEffect)(function () { + var subscribed = true; - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { - return state.ecolyo; - }), - analysisMonth = _useAppSelector.analysis.analysisMonth, - selectedDate = _useAppSelector.chart.selectedDate, - analysisNotification = _useAppSelector.global.analysisNotification, - _useAppSelector$profi = _useAppSelector.profile, - monthlyAnalysisDate = _useAppSelector$profi.monthlyAnalysisDate, - mailToken = _useAppSelector$profi.mailToken; + function populateData() { + return _populateData.apply(this, arguments); + } - var dispatch = (0, _hooks.useAppDispatch)(); + function _populateData() { + _populateData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { + var fetchedMonthIndicators, fetchedYearIndicators; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + if (!subscribed) { + _context.next = 10; + break; + } - var _useState = (0, _react.useState)(0), - _useState2 = (0, _slicedToArray2.default)(_useState, 2), - headerHeight = _useState2[0], - setHeaderHeight = _useState2[1]; + _context.next = 3; + return consumptionService.getPerformanceIndicators(monthPeriod, _timeStep.TimeStep.MONTH, fluidTypes, previousMonthPeriod); - var dateChartService = new _dateChart.default(); // Handle email report comeback + case 3: + fetchedMonthIndicators = _context.sent; + _context.next = 6; + return consumptionService.getPerformanceIndicators(monthPeriod, _timeStep.TimeStep.MONTH, fluidTypes, previousYearPeriod); - var _useLocation = (0, _reactRouterDom.useLocation)(), - search = _useLocation.search; + case 6: + fetchedYearIndicators = _context.sent; - var query = new URLSearchParams(search); - var paramToken = query.get('token'); - var app = document.querySelector('.app-content'); + if (fetchedMonthIndicators) { + setMonthPerformanceIndicators(fetchedMonthIndicators); + } - var _useState3 = (0, _react.useState)(0), - _useState4 = (0, _slicedToArray2.default)(_useState3, 2), - scrollPosition = _useState4[0], - setScrollPosition = _useState4[1]; - /** Scroll handling for switching months and staying on the same scroll position */ + if (fetchedYearIndicators) { + setYearPerformanceIndicators(fetchedYearIndicators); + } + setIsLoading(false); - var saveLastScrollPosition = (0, _react.useCallback)(function () { - if (app) { - var position = Math.max(app.scrollTop, window.scrollY); - setScrollPosition(position); + case 10: + case "end": + return _context.stop(); + } + } + }, _callee); + })); + return _populateData.apply(this, arguments); } - }, [app]); - (0, _react.useEffect)(function () { - var updateAnalysisNotification = function updateAnalysisNotification() { - if (analysisNotification) { - dispatch((0, _profile.updateProfile)({ - haveSeenLastAnalysis: true - })); - dispatch((0, _global.toggleAnalysisNotification)(false)); - } // Save usageevent came back from email - - if (paramToken && mailToken && paramToken === mailToken) { - _usageEvent2.default.addEventIfDoesntExist(client, { - type: _usageEvent.UsageEventType.REPORT_FROM_EMAIL, - target: 'analysis', - result: '1' - }, { - type: _usageEvent.UsageEventType.REPORT_FROM_EMAIL, - eventDate: { - $lt: _luxon.DateTime.local().setZone('utc', { - keepLocalTime: true - }).endOf('month').toString(), - $gt: _luxon.DateTime.local().setZone('utc', { - keepLocalTime: true - }).startOf('month').toString() - } - }); - } + populateData(); + return function () { + subscribed = false; }; - - updateAnalysisNotification(); - }, [dispatch, analysisNotification, monthlyAnalysisDate, selectedDate, paramToken, mailToken, client]); - - var disablePrev = analysisMonth < _luxon.DateTime.local(0, 1, 1).setZone('utc', { - keepLocalTime: true - }); - - var handleMoveDate = function handleMoveDate(increment) { - var updatedDate = dateChartService.incrementDate(_timeStep.TimeStep.MONTH, analysisMonth, increment); - dispatch((0, _analysis.setAnalysisMonth)(updatedDate)); - }; - - return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_CozyBar.default, { - titleKey: 'common.title_analysis' - }), /*#__PURE__*/_react.default.createElement(_Header.default, { - setHeaderHeight: setHeaderHeight, - desktopTitleKey: 'common.title_analysis' - }, /*#__PURE__*/_react.default.createElement(_DateNavigator.default, { - disableNext: (0, _date.isLastDateReached)(analysisMonth, _timeStep.TimeStep.MONTH), - disablePrev: disablePrev, - handleNextDate: function handleNextDate() { - return handleMoveDate(1); - }, - handlePrevDate: function handlePrevDate() { - return handleMoveDate(-1); - }, - inlineDateDisplay: true, - navigatorDate: analysisMonth.minus({ - month: 1 - }), - timeStep: _timeStep.TimeStep.MONTH - })), /*#__PURE__*/_react.default.createElement(_Content.default, { - heightOffset: headerHeight - }, /*#__PURE__*/_react.default.createElement(_MonthlyAnalysis.default, { - saveLastScrollPosition: saveLastScrollPosition, - scrollPosition: scrollPosition + }, [client, fluidTypes, analysisMonth, consumptionService, monthPeriod, previousMonthPeriod, previousYearPeriod]); + return /*#__PURE__*/_react.default.createElement("div", { + className: "comparisonView" + }, /*#__PURE__*/_react.default.createElement("div", { + className: "tabs" + }, /*#__PURE__*/_react.default.createElement(_core.Button, { + className: period === 'month' ? 'active' : '', + onClick: function onClick() { + return dispatch((0, _analysis.setPeriod)('month')); + } + }, t('analysis.compare.month_tab')), /*#__PURE__*/_react.default.createElement(_core.Button, { + className: period === 'year' ? 'active' : '', + onClick: function onClick() { + return dispatch((0, _analysis.setPeriod)('year')); + } + }, t('analysis.compare.year_tab'))), /*#__PURE__*/_react.default.createElement("div", { + className: "performanceIndicators" + }, isLoading && /*#__PURE__*/_react.default.createElement("div", { + style: { + height: "".concat(loaderPlaceholderHeight, "px"), + display: 'flex', + justifyContent: 'center' + } + }, /*#__PURE__*/_react.default.createElement(_Loader.default, null)), !isLoading && fluidConfig.map(function (fluid) { + return fluidTypes.includes(fluid.fluidTypeId) && /*#__PURE__*/_react.default.createElement(_FluidPerformanceIndicator.default, { + key: fluid.konnectorConfig.slug, + fluidType: fluid.fluidTypeId, + performanceIndicator: period === 'month' ? monthPerformanceIndicators[fluid.fluidTypeId] : yearPerformanceIndicators[fluid.fluidTypeId], + comparisonDate: period === 'month' ? previousMonthPeriod.startDate : previousYearPeriod.startDate + }); }))); }; -var _default = AnalysisView; +var _default = ComparisonView; exports.default = _default; /***/ }), -/***/ "Dswe": -/***/ (function(module, exports, __webpack_require__) { - - -var content = __webpack_require__("ubKy"); - -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) {} - -/***/ }), - -/***/ "ELbD": +/***/ "6eOr": /***/ (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.elecInfoModal {\n padding: 0.5rem;\n color: #e0e0e0;\n}\n.elecInfoModal .title {\n margin: 1.5rem 0;\n color: #e3b82a;\n font-weight: bold;\n margin-bottom: 0.5rem;\n}", ""]); +"use strict"; +var _interopRequireDefault = __webpack_require__("TqRt"); -/***/ }), +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; -/***/ "FfVf": -/***/ (function(module, exports, __webpack_require__) { +var _slicedToArray2 = _interopRequireDefault(__webpack_require__("J4zp")); -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.consumption-multifluid,\n.consumption-electricity,\n.consumption-water,\n.consumption-gas {\n display: flex;\n margin-bottom: 1rem;\n}\n.consumption-multifluid .user-graph .graph,\n.consumption-electricity .user-graph .graph,\n.consumption-water .user-graph .graph,\n.consumption-gas .user-graph .graph {\n border-radius: 0.35rem 0 0 0.35rem;\n}\n.consumption-multifluid .user-graph .price.not-connected,\n.consumption-electricity .user-graph .price.not-connected,\n.consumption-water .user-graph .price.not-connected,\n.consumption-gas .user-graph .price.not-connected {\n color: #a0a0a0;\n height: 2rem;\n width: 100%;\n align-items: center;\n display: flex;\n}\n.consumption-multifluid .average-graph,\n.consumption-electricity .average-graph,\n.consumption-water .average-graph,\n.consumption-gas .average-graph {\n color: #bfcce4;\n}\n.consumption-multifluid .average-graph .price,\n.consumption-electricity .average-graph .price,\n.consumption-water .average-graph .price,\n.consumption-gas .average-graph .price {\n text-align: right;\n}\n.consumption-multifluid .average-graph .price.not-connected,\n.consumption-electricity .average-graph .price.not-connected,\n.consumption-water .average-graph .price.not-connected,\n.consumption-gas .average-graph .price.not-connected {\n opacity: 0.55;\n}\n.consumption-multifluid .average-graph .graph,\n.consumption-electricity .average-graph .graph,\n.consumption-water .average-graph .graph,\n.consumption-gas .average-graph .graph {\n background-color: #bfcce4;\n}\n\n.consumption-sep {\n border-top: 1px solid #7b7b7b;\n margin: 1rem 0;\n}\n\n.user-graph,\n.average-graph {\n display: flex;\n justify-content: space-between;\n flex-basis: 45%;\n align-items: center;\n}\n\n.consumption-multifluid .user-graph {\n color: #e3b82a;\n}\n.consumption-multifluid .user-graph .graph {\n background-color: #e3b82a;\n}\n\n.consumption-electricity .user-graph {\n color: #d87b39;\n}\n.consumption-electricity .user-graph .graph {\n background-color: #d87b39;\n}\n\n.consumption-water .user-graph {\n color: #3a98ec;\n}\n.consumption-water .user-graph .graph {\n background-color: #3a98ec;\n}\n\n.consumption-gas .user-graph {\n color: #45d1b8;\n}\n.consumption-gas .user-graph .graph {\n background-color: #45d1b8;\n}\n\n.analysisRow .icon-container {\n flex-basis: 10%;\n display: flex;\n justify-content: center;\n}\n.analysisRow .icon-container svg {\n align-self: center;\n width: 40px;\n}\n\n.container-graph {\n flex-basis: 50%;\n display: flex;\n}\n\n.user-graph .container-graph {\n justify-content: flex-end;\n}\n\n.price {\n min-width: 5.25rem;\n}\n\n.graph {\n border-radius: 0 0.35rem 0.35rem 0;\n padding-left: 0.25rem;\n height: 2rem;\n}", ""]); +var _EstimatedConsumptionModal = _interopRequireDefault(__webpack_require__("ta6n")); +var _I18n = __webpack_require__("buk/"); +var d3 = _interopRequireWildcard(__webpack_require__("VphZ")); -/***/ }), +var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -/***/ "G8GX": -/***/ (function(module, __webpack_exports__, __webpack_require__) { +var _utils = __webpack_require__("c+yx"); -"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__); +__webpack_require__("0oKQ"); +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); } -var symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({ - "id": "minimum_b801a50896be5699fd2976694484dcf4", - "use": "minimum_b801a50896be5699fd2976694484dcf4-usage", - "viewBox": "0 0 40 40", - "content": "<symbol viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" id=\"minimum_b801a50896be5699fd2976694484dcf4\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M29.0636 23.2831C26.3793 27.021 21.6698 29.0536 16.8631 28.0942C10.3113 26.7865 6.05999 20.4151 7.36766 13.8632C8.03388 10.5253 10.0144 7.78445 12.6635 6.07163C7.31475 7.17394 2.8792 11.3674 1.74304 17.0599C0.228052 24.6505 5.15331 32.0321 12.7439 33.5471C20.086 35.0125 27.2325 30.4524 29.0636 23.2831Z\" fill=\"#D87B39\" />\n<path d=\"M24 9.75311C24 9.9864 23.9379 10.1994 23.8138 10.3921L18.4996 18.3645H23.8782V20H16V19.1936C16 19.0922 16.0167 18.9959 16.0501 18.9046C16.0836 18.8082 16.1265 18.7195 16.1791 18.6383L21.5076 10.6279H16.3366V9H24V9.75311Z\" fill=\"white\" />\n<path d=\"M35 5.75311C35 5.9864 34.9379 6.1994 34.8138 6.39212L29.4996 14.3645H34.8782V16H27V15.1936C27 15.0922 27.0167 14.9959 27.0501 14.9046C27.0836 14.8082 27.1265 14.7195 27.1791 14.6383L32.5076 6.62794H27.3366V5H35V5.75311Z\" fill=\"white\" />\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); +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 PieChart = function PieChart(_ref) { + var innerRadius = _ref.innerRadius, + outerRadius = _ref.outerRadius, + dataloadValueDetailArray = _ref.dataloadValueDetailArray, + width = _ref.width, + height = _ref.height, + totalValue = _ref.totalValue, + currentAnalysisDate = _ref.currentAnalysisDate; + var ref = (0, _react.useRef)(null); -/***/ "KCn3": -/***/ (function(module, exports, __webpack_require__) { + var _useI18n = (0, _I18n.useI18n)(), + t = _useI18n.t; -exports = module.exports = __webpack_require__("JPst")(false); -// Module -exports.push([module.i, ".comparison {\n display: flex;\n flex-direction: column;\n}\n.comparison .tabs {\n display: flex;\n flex-direction: row;\n gap: 8px;\n}\n.comparison .tabs button {\n flex-grow: 1;\n background: linear-gradient(0deg, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.1)), linear-gradient(180deg, #323339 0%, #25262b 100%);\n border-radius: 4px 4px 0px 0px;\n color: #ffffff;\n text-transform: none;\n font-size: 0.75rem;\n line-height: 1.3;\n padding: 0.5rem 0;\n box-shadow: 6px 0px 12px rgba(0, 0, 0, 0.3);\n}\n.comparison .tabs button.active {\n background: #5e5e5e;\n}\n.comparison .performanceIndicators {\n display: flex;\n flex-direction: column;\n gap: 10px;\n background: linear-gradient(180deg, #323339 0%, #25262b 100%);\n border: 1px solid #5e5e5e;\n border-radius: 0px 0px 4px 4px;\n padding: 1rem;\n}", ""]); + var createPie = d3.pie().sort(null); + var arcWidth = outerRadius - innerRadius; + var _useState = (0, _react.useState)(false), + _useState2 = (0, _slicedToArray2.default)(_useState, 2), + openEstimationModal = _useState2[0], + setOpenEstimationModal = _useState2[1]; + var toggleEstimationModal = (0, _react.useCallback)(function () { + setOpenEstimationModal(function (prev) { + return !prev; + }); + }, []); + (0, _react.useEffect)(function () { + var dataloadArray = dataloadValueDetailArray.map(function (dataload) { + return dataload.value; + }); + var data = createPie(dataloadArray); + var group = d3.select(ref.current); + var groupWithData = group.selectAll('g.arc').data(data); + var colors = ['#D87B39', '#3A98EC', '#45D1B8']; + var createArc = d3.arc().innerRadius(innerRadius).outerRadius(outerRadius); + groupWithData.exit().remove(); + var groupWithUpdate = groupWithData.enter().append('g').attr('class', 'arc').attr('filter', 'url(#glow)'); + var path = groupWithUpdate.append('path').merge(groupWithData.select('path.arc')); + path.attr('class', 'arc').attr('d', createArc).attr('fill', function (_d, i) { + return colors[i]; + }); + }, [createPie, dataloadValueDetailArray, innerRadius, outerRadius]); + return /*#__PURE__*/_react.default.createElement("div", { + className: "pie-container", + style: { + width: width, + height: height + } + }, /*#__PURE__*/_react.default.createElement("svg", { + width: width, + height: height + }, /*#__PURE__*/_react.default.createElement("defs", null, /*#__PURE__*/_react.default.createElement("filter", { + id: "glow", + height: "300%", + width: "300%", + x: "-75%", + y: "-75%" + }, /*#__PURE__*/_react.default.createElement("feGaussianBlur", { + stdDeviation: "10", + result: "coloredBlur" + }), /*#__PURE__*/_react.default.createElement("feMerge", null, /*#__PURE__*/_react.default.createElement("feMergeNode", { + in: "coloredBlur" + }), /*#__PURE__*/_react.default.createElement("feMergeNode", { + in: "SourceGraphic" + })))), /*#__PURE__*/_react.default.createElement("g", { + ref: ref, + transform: "translate(".concat(outerRadius, " ").concat(outerRadius, ")") + })), /*#__PURE__*/_react.default.createElement("div", { + className: "pie-center", + style: { + width: width - arcWidth, + height: height - arcWidth, + top: arcWidth / 2, + left: arcWidth - arcWidth / 2 + } + }, /*#__PURE__*/_react.default.createElement("div", { + className: "text-36-bold" + }, (0, _utils.formatNumberValues)(totalValue), /*#__PURE__*/_react.default.createElement("span", { + className: "euro-unit" + }, "".concat(t('FLUID.MULTIFLUID.UNIT')))), /*#__PURE__*/_react.default.createElement("div", { + className: "text-16-normal date" + }, t('analysis_pie.month') + (0, _utils.getMonthNameWithPrep)(currentAnalysisDate.minus({ + month: 1 + }))), /*#__PURE__*/_react.default.createElement("div", { + className: "text-14-normal estimation-text", + onClick: toggleEstimationModal + }, /*#__PURE__*/_react.default.createElement("span", { + className: "estimated" + }, t('analysis_pie.estimation')), /*#__PURE__*/_react.default.createElement("span", { + className: "estimated" + }, t('analysis_pie.estimation2'))), /*#__PURE__*/_react.default.createElement("div", { + className: "circle", + style: { + width: width - arcWidth * 2, + height: height - arcWidth * 2, + top: arcWidth / 2, + left: arcWidth - arcWidth / 2 + } + })), /*#__PURE__*/_react.default.createElement(_EstimatedConsumptionModal.default, { + open: openEstimationModal, + handleCloseClick: toggleEstimationModal + })); +}; + +var _default = PieChart; +exports.default = _default; /***/ }), -/***/ "NhJV": +/***/ "70Bo": /***/ (function(module, exports, __webpack_require__) { -var content = __webpack_require__("ELbD"); +var content = __webpack_require__("i5Z7"); if(typeof content === 'string') content = [[module.i, content, '']]; @@ -773,11 +790,11 @@ if(false) {} /***/ }), -/***/ "Ogrm": +/***/ "7ttY": /***/ (function(module, exports, __webpack_require__) { -var content = __webpack_require__("/AJG"); +var content = __webpack_require__("mSKR"); if(typeof content === 'string') content = [[module.i, content, '']]; @@ -799,174 +816,7 @@ if(false) {} /***/ }), -/***/ "Q5dr": -/***/ (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 _euroIcon = _interopRequireDefault(__webpack_require__("vgwG")); - -var _classnames = _interopRequireDefault(__webpack_require__("TSYQ")); - -var _StyledIcon = _interopRequireDefault(__webpack_require__("I07j")); - -var _I18n = __webpack_require__("buk/"); - -var _fluid2 = __webpack_require__("5Wkc"); - -var _react = _interopRequireDefault(__webpack_require__("q1tI")); - -var _converter = _interopRequireDefault(__webpack_require__("LXmx")); - -var _picto = __webpack_require__("6DBe"); - -var _utils = __webpack_require__("c+yx"); - -__webpack_require__("/Maf"); - -var ProfileComparatorRow = function ProfileComparatorRow(_ref) { - var fluid = _ref.fluid, - userPriceConsumption = _ref.userPriceConsumption, - homePriceConsumption = _ref.homePriceConsumption, - performanceValue = _ref.performanceValue, - forecast = _ref.forecast, - connected = _ref.connected, - noData = _ref.noData; - - var _useI18n = (0, _I18n.useI18n)(), - t = _useI18n.t; - - var converterService = new _converter.default(); - var maxPriceConsumption = Math.max(userPriceConsumption, homePriceConsumption); - var fluidLoad = forecast && fluid !== _fluid2.FluidType.MULTIFLUID ? forecast.fluidForecast[fluid].load : 0; - - var formatFluidConsumptionForConso = function formatFluidConsumptionForConso(_fluid) { - if (_fluid === _fluid2.FluidType.MULTIFLUID) { - return "".concat((0, _utils.formatNumberValues)(userPriceConsumption).toString(), " \u20AC"); - } else { - if (performanceValue) { - // keeps unit in kWh for electricity and gas - if (_fluid === _fluid2.FluidType.ELECTRICITY || _fluid === _fluid2.FluidType.GAS) { - return "".concat(Math.round(performanceValue), " ").concat(t("FLUID.".concat(_fluid2.FluidType[_fluid], ".UNIT"))); - } - - return performanceValue >= 1000 || fluidLoad >= 1000 ? (0, _utils.formatNumberValues)(performanceValue / 1000).toString() + ' ' + t("FLUID.".concat(_fluid2.FluidType[_fluid], ".MEGAUNIT")) : Math.round(performanceValue) + ' ' + t("FLUID.".concat(_fluid2.FluidType[_fluid], ".UNIT")); - } else { - return '-'; - } - } - }; - - var formatFluidConsumptionForForecast = function formatFluidConsumptionForForecast(_fluid) { - if (_fluid === _fluid2.FluidType.MULTIFLUID) { - return "".concat((0, _utils.formatNumberValues)(homePriceConsumption).toString(), " \u20AC"); - } else { - // keeps unit in kWh for electricity and gas - if (_fluid === _fluid2.FluidType.ELECTRICITY || _fluid === _fluid2.FluidType.GAS) { - return "".concat(Math.round(fluidLoad), " ").concat(t("FLUID.".concat(_fluid2.FluidType[_fluid], ".UNIT"))); - } - - return performanceValue && performanceValue >= 1000 || fluidLoad >= 1000 ? (0, _utils.formatNumberValues)(fluidLoad / 1000).toString() + ' ' + t("FLUID.".concat(_fluid2.FluidType[_fluid], ".MEGAUNIT")) : Math.round(fluidLoad) + ' ' + t("FLUID.".concat(_fluid2.FluidType[_fluid], ".UNIT")); - } - }; - - var getWidthForConso = function getWidthForConso(_fluid) { - if (_fluid === _fluid2.FluidType.MULTIFLUID) { - return "".concat(userPriceConsumption / maxPriceConsumption * 100, "%"); - } else { - return "".concat(converterService.LoadToEuro(performanceValue || 0, _fluid) / maxPriceConsumption * 100, "%"); - } - }; - - var getWidthForForecast = function getWidthForForecast(_fluid) { - if (_fluid === _fluid2.FluidType.MULTIFLUID) { - return "".concat(homePriceConsumption / maxPriceConsumption * 100, "%"); - } else { - var fluidValue = forecast ? forecast.fluidForecast[_fluid].value : 0; - return "".concat(fluidValue / maxPriceConsumption * 100, "%"); - } - }; - - var comparaisonText; - - if (connected) { - comparaisonText = formatFluidConsumptionForConso(fluid); - } else if (noData) { - comparaisonText = t("analysis.no_data_2"); - } else { - comparaisonText = t("analysis.not_connected"); - } - - return /*#__PURE__*/_react.default.createElement("div", { - className: "consumption-".concat(_fluid2.FluidType[fluid].toLowerCase(), " analysisRow") - }, /*#__PURE__*/_react.default.createElement("div", { - className: "user-graph" - }, /*#__PURE__*/_react.default.createElement("div", { - className: (0, _classnames.default)('price', 'text-15-bold', (0, _defineProperty2.default)({}, 'not-connected', !connected || noData)) - }, comparaisonText), /*#__PURE__*/_react.default.createElement("div", { - className: "container-graph" - }, connected && /*#__PURE__*/_react.default.createElement("div", { - className: "graph", - style: { - width: getWidthForConso(fluid) - } - }))), /*#__PURE__*/_react.default.createElement("div", { - className: "icon-container" - }, /*#__PURE__*/_react.default.createElement(_StyledIcon.default, { - icon: fluid === _fluid2.FluidType.MULTIFLUID ? _euroIcon.default : (0, _picto.getPicto)(fluid, true), - size: 22 - })), /*#__PURE__*/_react.default.createElement("div", { - className: "average-graph" - }, /*#__PURE__*/_react.default.createElement("div", { - className: "container-graph" - }, connected && /*#__PURE__*/_react.default.createElement("div", { - className: "graph", - style: { - width: getWidthForForecast(fluid) - } - })), /*#__PURE__*/_react.default.createElement("div", { - className: (0, _classnames.default)('price', 'text-15-bold', (0, _defineProperty2.default)({}, 'not-connected', !connected)) - }, formatFluidConsumptionForForecast(fluid)))); -}; - -var _default = ProfileComparatorRow; -exports.default = _default; - -/***/ }), - -/***/ "SkC0": -/***/ (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.totalAnalysis-container {\n display: flex;\n justify-content: space-around;\n flex-direction: column;\n color: white;\n}\n.totalAnalysis-container .title {\n text-align: center;\n color: #e0e0e0;\n margin-bottom: 1.5rem;\n}\n.totalAnalysis-container .no_data {\n color: #e0e0e0;\n margin-top: 1rem;\n}\n.totalAnalysis-container .pie-container {\n text-align: center;\n position: relative;\n margin: auto;\n overflow: visible;\n}\n.totalAnalysis-container svg {\n margin: auto;\n overflow: visible;\n}\n.totalAnalysis-container .pie-center {\n box-sizing: border-box;\n position: absolute;\n border-radius: 50%;\n background: #121212;\n z-index: 5;\n padding: 1rem;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n.totalAnalysis-container .pie-center .euro-unit {\n margin-left: 0.6rem;\n}\n.totalAnalysis-container .pie-center .date {\n text-transform: uppercase;\n color: #a0a0a0;\n display: inline-block;\n margin: 0.5rem 0;\n}\n.totalAnalysis-container .pie-center .estimated {\n display: block;\n text-decoration: underline;\n}\n.totalAnalysis-container .pie-center .circle {\n box-sizing: border-box;\n border: 1px solid #7b7b7b;\n position: absolute;\n border-radius: 50%;\n background: transparent;\n z-index: -1;\n padding: 1rem;\n}\n@media screen and (max-width: 345px) {\n .totalAnalysis-container .pie-center .circle {\n display: none;\n }\n}\n.totalAnalysis-container .total-card-container {\n display: flex;\n justify-content: center;\n margin-top: 1rem;\n}\n.totalAnalysis-container .total-card-container .total-card {\n margin: 1rem;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n@media screen and (max-width: 350px) {\n .totalAnalysis-container .total-card-container .total-card {\n margin: 0.5rem;\n }\n}\n.totalAnalysis-container .total-card-container .total-card svg {\n margin: 0.7rem 0;\n}\n@media screen and (max-width: 345px) {\n .totalAnalysis-container .text-36-bold {\n font-size: 1.6rem;\n }\n}\n@media screen and (max-width: 345px) {\n .totalAnalysis-container .date {\n font-size: 1rem;\n }\n}\n@media screen and (max-width: 365px) {\n .totalAnalysis-container .text-18-bold {\n font-size: 1rem;\n }\n}\n.totalAnalysis-container .estimation-text {\n cursor: pointer;\n}", ""]); - - - -/***/ }), - -/***/ "UWzl": -/***/ (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.analysis-graph {\n margin-top: 1.5rem;\n}\n.analysis-graph .consumption-title {\n display: flex;\n justify-content: space-between;\n margin-bottom: 2rem;\n gap: 2rem;\n}\n.analysis-graph .consumption-title .user-title,\n.analysis-graph .consumption-title .average-title {\n flex-basis: 50%;\n}\n.analysis-graph .consumption-title .user-title {\n text-align: right;\n color: #e3b82a;\n}\n.analysis-graph .consumption-title .average-title {\n color: #bfcce4;\n}\n.analysis-graph div.expansion-panel-root {\n border: solid 2px #bfcce4;\n color: #bfcce4;\n margin-bottom: 0 !important;\n box-shadow: 0px 4px 16px 0px rgba(0, 0, 0, 0.5490196078);\n}\n.analysis-graph .accordion-title {\n font-weight: bold;\n}\n.analysis-graph .accordion-desc {\n color: #e0e0e0;\n}\n.analysis-graph div.expansion-panel-summary {\n padding: 0 1rem;\n}\n.analysis-graph .loader-container {\n min-height: 350px;\n display: flex;\n justify-content: center;\n align-items: center;\n margin: auto;\n}\n.analysis-graph .accordion-icon {\n color: #bfcce4;\n}\n\n.no-profile {\n display: flex;\n align-items: center;\n flex-direction: column;\n gap: 1rem;\n}\n.no-profile div {\n text-align: center;\n color: #ffffff;\n}\n.no-profile button {\n max-width: 320px;\n margin-top: 0;\n}\n\n.grid-align div {\n display: grid;\n grid-template-columns: 20px 1fr;\n grid-gap: 10px;\n padding: 0 10px;\n align-items: center;\n height: 32px;\n}\n@media only screen and (max-width : 768px) {\n .grid-align div {\n height: 48px;\n }\n}\n.grid-align span:first-child {\n grid-column: 1;\n align-self: center;\n}", ""]); - - - -/***/ }), - -/***/ "W9FU": +/***/ "8LDu": /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -985,10 +835,6 @@ var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__("yXPU")); var _slicedToArray2 = _interopRequireDefault(__webpack_require__("J4zp")); -var _EstimatedConsumptionModal = _interopRequireDefault(__webpack_require__("ta6n")); - -var _Loader = _interopRequireDefault(__webpack_require__("Ra/y")); - var _cozyClient = __webpack_require__("SH7X"); var _I18n = __webpack_require__("buk/"); @@ -1001,54 +847,46 @@ var _timeStep = __webpack_require__("cKQ8"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _consumption = _interopRequireDefault(__webpack_require__("AVq/")); +var _reactRedux = __webpack_require__("/MKj"); -var _hooks = __webpack_require__("Zlw4"); +var _consumption = _interopRequireDefault(__webpack_require__("AVq/")); var _picto = __webpack_require__("6DBe"); var _utils = __webpack_require__("c+yx"); -var _PieChart = _interopRequireDefault(__webpack_require__("BVQw")); +var _PieChart = _interopRequireDefault(__webpack_require__("6eOr")); + +__webpack_require__("/Sqe"); -__webpack_require__("ir/a"); +__webpack_require__("0oKQ"); 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 TotalAnalysisChart = function TotalAnalysisChart(_ref) { - var fluidsWithData = _ref.fluidsWithData; - - var _useI18n = (0, _I18n.useI18n)(), - t = _useI18n.t; - - var client = (0, _cozyClient.useClient)(); + var fluidTypes = _ref.fluidTypes; - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo.analysis; }), - analysisMonth = _useAppSelector.analysisMonth; + analysisMonth = _useSelector.analysisMonth; - var _useState = (0, _react.useState)(true), + var _useState = (0, _react.useState)(null), _useState2 = (0, _slicedToArray2.default)(_useState, 2), - isLoading = _useState2[0], - setIsLoading = _useState2[1]; + dataLoadValueDetailArray = _useState2[0], + setDataLoadValueDetailArray = _useState2[1]; - var _useState3 = (0, _react.useState)(null), + var _useState3 = (0, _react.useState)(0), _useState4 = (0, _slicedToArray2.default)(_useState3, 2), - dataLoadValueDetailArray = _useState4[0], - setDataLoadValueDetailArray = _useState4[1]; + totalLoadValue = _useState4[0], + setTotalLoadValue = _useState4[1]; - var _useState5 = (0, _react.useState)(0), - _useState6 = (0, _slicedToArray2.default)(_useState5, 2), - totalLoadValue = _useState6[0], - setTotalLoadValue = _useState6[1]; + var client = (0, _cozyClient.useClient)(); - var _useState7 = (0, _react.useState)(false), - _useState8 = (0, _slicedToArray2.default)(_useState7, 2), - openEstimationModal = _useState8[0], - setOpenEstimationModal = _useState8[1]; + var _useI18n = (0, _I18n.useI18n)(), + t = _useI18n.t; var arcWidth = 30; var radius = Math.min(375, innerWidth - 100); @@ -1078,7 +916,7 @@ var TotalAnalysisChart = function TotalAnalysisChart(_ref) { }; consumptionService = new _consumption.default(client); _context.next = 4; - return consumptionService.getGraphData(timePeriod, _timeStep.TimeStep.MONTH, fluidsWithData, undefined, undefined, true); + return consumptionService.getGraphData(timePeriod, _timeStep.TimeStep.MONTH, fluidTypes, undefined, undefined, true); case 4: monthTotalData = _context.sent; @@ -1088,9 +926,7 @@ var TotalAnalysisChart = function TotalAnalysisChart(_ref) { setTotalLoadValue(monthTotalData.actualData[0].value); } - setIsLoading(false); - - case 7: + case 6: case "end": return _context.stop(); } @@ -1107,59 +943,23 @@ var TotalAnalysisChart = function TotalAnalysisChart(_ref) { return function () { subscribed = false; }; - }, [analysisMonth, client, fluidsWithData]); - - var emptyPieChart = function emptyPieChart() { - return /*#__PURE__*/_react.default.createElement(_PieChart.default, { - dataloadValueDetailArray: [], - radius: radius, - innerRadius: innerRadius, - outerRadius: outerRadius - }, /*#__PURE__*/_react.default.createElement("div", { - className: "text-36-bold" - }, (0, _utils.formatNumberValues)(0), /*#__PURE__*/_react.default.createElement("span", { - className: "euro-unit" - }, "".concat(t('FLUID.MULTIFLUID.UNIT')))), /*#__PURE__*/_react.default.createElement("div", { - className: "text-20-bold no_data" - }, t('analysis.no_data'))); - }; - - return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", { + }, [analysisMonth, client, fluidTypes]); + return /*#__PURE__*/_react.default.createElement("div", { className: "totalAnalysis-container", style: { minHeight: radius + 100 } }, /*#__PURE__*/_react.default.createElement("div", { className: "text-24-normal title" - }, t('analysis_pie.total')), isLoading && /*#__PURE__*/_react.default.createElement(_Loader.default, null), !isLoading && !dataLoadValueDetailArray && emptyPieChart(), !isLoading && dataLoadValueDetailArray && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_PieChart.default, { + }, t('analysis_pie.total')), dataLoadValueDetailArray && /*#__PURE__*/_react.default.createElement(_PieChart.default, { dataloadValueDetailArray: dataLoadValueDetailArray, - radius: radius, + totalValue: totalLoadValue, + width: radius, + height: radius, innerRadius: innerRadius, - outerRadius: outerRadius - }, /*#__PURE__*/_react.default.createElement("div", { - className: "text-36-bold" - }, (0, _utils.formatNumberValues)(totalLoadValue), /*#__PURE__*/_react.default.createElement("span", { - className: "euro-unit" - }, "".concat(t('FLUID.MULTIFLUID.UNIT')))), /*#__PURE__*/_react.default.createElement("div", { - className: "text-16-normal date" - }, t('analysis_pie.month') + (0, _utils.getMonthNameWithPrep)(analysisMonth.minus({ - month: 1 - }))), /*#__PURE__*/_react.default.createElement("div", { - className: "text-14-normal estimation-text", - onClick: function onClick() { - return setOpenEstimationModal(true); - } - }, /*#__PURE__*/_react.default.createElement("span", { - className: "estimated", - dangerouslySetInnerHTML: { - __html: t('analysis_pie.estimation') - } - }))), /*#__PURE__*/_react.default.createElement(_EstimatedConsumptionModal.default, { - open: openEstimationModal, - handleCloseClick: function handleCloseClick() { - return setOpenEstimationModal(false); - } - }), dataLoadValueDetailArray && fluidsWithData.length > 1 && /*#__PURE__*/_react.default.createElement("div", { + outerRadius: outerRadius, + currentAnalysisDate: analysisMonth + }), dataLoadValueDetailArray && fluidTypes.length > 1 && /*#__PURE__*/_react.default.createElement("div", { className: "total-card-container" }, dataLoadValueDetailArray.map(function (dataload, index) { return /*#__PURE__*/_react.default.createElement("div", { @@ -1174,7 +974,7 @@ var TotalAnalysisChart = function TotalAnalysisChart(_ref) { }), /*#__PURE__*/_react.default.createElement("div", { className: "text-16-normal" }, t('FLUID.' + _fluid.FluidType[index] + '.LABEL'))); - }))))); + }))); }; var _default = TotalAnalysisChart; @@ -1182,7 +982,7 @@ exports.default = _default; /***/ }), -/***/ "XBNI": +/***/ "AJTi": /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1201,92 +1001,123 @@ var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__("yXPU")); var _slicedToArray2 = _interopRequireDefault(__webpack_require__("J4zp")); -var _core = __webpack_require__("TTf+"); +var _IconButton = _interopRequireDefault(__webpack_require__("o6Jd")); -var _Loader = _interopRequireDefault(__webpack_require__("Ra/y")); +var _graphIcon = _interopRequireDefault(__webpack_require__("bIeq")); -var _cozyClient = __webpack_require__("SH7X"); +var _leftArrow = _interopRequireDefault(__webpack_require__("bZGv")); -var _fluid = __webpack_require__("5Wkc"); +var _rightArrow = _interopRequireDefault(__webpack_require__("fZGW")); -var _timeStep = __webpack_require__("cKQ8"); +var _BarChart = _interopRequireDefault(__webpack_require__("CPpy")); -var _react = _interopRequireWildcard(__webpack_require__("q1tI")); +var _StyledIcon = _interopRequireDefault(__webpack_require__("I07j")); -var _consumption = _interopRequireDefault(__webpack_require__("AVq/")); +var _DataloadSection = _interopRequireDefault(__webpack_require__("nGEn")); -var _performanceIndicator = _interopRequireDefault(__webpack_require__("8gio")); +var _useChartResize2 = __webpack_require__("tWvI"); + +var _Loader = _interopRequireDefault(__webpack_require__("Ra/y")); + +var _cozyClient = __webpack_require__("SH7X"); + +var _I18n = __webpack_require__("buk/"); -var _hooks = __webpack_require__("Zlw4"); +var _Icon = _interopRequireDefault(__webpack_require__("y6ex")); -var _Comparison = _interopRequireDefault(__webpack_require__("jQYw")); +var _dataload = __webpack_require__("D5WE"); -var _ElecHalfHourMonthlyAnalysis = _interopRequireDefault(__webpack_require__("zEMi")); +var _fluid = __webpack_require__("5Wkc"); -var _MaxConsumptionCard = _interopRequireDefault(__webpack_require__("1FYC")); +var _timeStep = __webpack_require__("cKQ8"); -var _ProfileComparator = _interopRequireDefault(__webpack_require__("l/+E")); +var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _TotalAnalysisChart = _interopRequireDefault(__webpack_require__("W9FU")); +var _reactRedux = __webpack_require__("/MKj"); -__webpack_require__("oXWw"); +var _consumption = _interopRequireDefault(__webpack_require__("AVq/")); + +var _chart = __webpack_require__("idK9"); + +__webpack_require__("Ydja"); 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 MonthlyAnalysis = function MonthlyAnalysis(_ref) { - var saveLastScrollPosition = _ref.saveLastScrollPosition, - scrollPosition = _ref.scrollPosition; +var MaxConsumptionCard = function MaxConsumptionCard() { + var _useI18n = (0, _I18n.useI18n)(), + t = _useI18n.t; + var client = (0, _cozyClient.useClient)(); + var dispatch = (0, _reactRedux.useDispatch)(); - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { - return state.ecolyo.analysis; + var _useSelector = (0, _reactRedux.useSelector)(function (state) { + return state.ecolyo; }), - analysisMonth = _useAppSelector.analysisMonth; - - var consumptionService = (0, _react.useMemo)(function () { - return new _consumption.default(client); - }, [client]); - var performanceIndicatorService = (0, _react.useMemo)(function () { - return new _performanceIndicator.default(); - }, []); + fluidTypes = _useSelector.global.fluidTypes, + analysisMonth = _useSelector.analysis.analysisMonth; - var _useState = (0, _react.useState)(true), + var _useState = (0, _react.useState)(0), _useState2 = (0, _slicedToArray2.default)(_useState, 2), - loadAnalysis = _useState2[0], - setLoadAnalysis = _useState2[1]; + index = _useState2[0], + setIndex = _useState2[1]; - var _useState3 = (0, _react.useState)([]), + var _useState3 = (0, _react.useState)(true), _useState4 = (0, _slicedToArray2.default)(_useState3, 2), - fluidsWithData = _useState4[0], - setFluidsWithData = _useState4[1]; + isLoading = _useState4[0], + setIsLoading = _useState4[1]; - var _useState5 = (0, _react.useState)([]), + var _useState5 = (0, _react.useState)(null), _useState6 = (0, _slicedToArray2.default)(_useState5, 2), - performanceIndicators = _useState6[0], - setPerformanceIndicators = _useState6[1]; + maxDayData = _useState6[0], + setMaxDayData = _useState6[1]; var _useState7 = (0, _react.useState)({ - value: 0, - compareValue: 0, - percentageVariation: 0 + actualData: [], + comparisonData: null }), _useState8 = (0, _slicedToArray2.default)(_useState7, 2), - aggregatedPerformanceIndicators = _useState8[0], - setAggregatedPerformanceIndicators = _useState8[1]; + chartData = _useState8[0], + setChartData = _useState8[1]; + + var containerRef = (0, _react.useRef)(null); + + var _useChartResize = (0, _useChartResize2.useChartResize)(containerRef, isLoading, 250, 940), + height = _useChartResize.height, + width = _useChartResize.width; + + var currentFluidType = _fluid.FluidType[fluidTypes[index]]; + var fluidColor = currentFluidType.toLowerCase(); + + var handleFluidChange = function handleFluidChange(direction) { + setIsLoading(true); + var newIndex = index + direction; + + if (newIndex >= fluidTypes.length) { + newIndex = 0; + } else if (newIndex < 0) { + newIndex = fluidTypes.length - 1; + } + + setIndex(newIndex); + }; (0, _react.useEffect)(function () { var subscribed = true; - var populateData = /*#__PURE__*/function () { - var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { - var timePeriod, comparisonTimePeriod, resultFluids, fetchedPerformanceIndicators; + function getMaxLoadData() { + return _getMaxLoadData.apply(this, arguments); + } + + function _getMaxLoadData() { + _getMaxLoadData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { + var timePeriod, consumptionService, monthlyData, maxDay; return _regenerator.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: - setLoadAnalysis(true); + setIsLoading(true); timePeriod = { startDate: analysisMonth.minus({ month: 1 @@ -1295,109 +1126,131 @@ var MonthlyAnalysis = function MonthlyAnalysis(_ref) { month: 1 }).endOf('month') }; - comparisonTimePeriod = { - startDate: analysisMonth.minus({ - month: 2 - }).startOf('month'), - endDate: analysisMonth.minus({ - month: 2 - }).endOf('month') - }; + consumptionService = new _consumption.default(client); _context.next = 5; - return consumptionService.getFluidsWithDataForTimePeriod([_fluid.FluidType.ELECTRICITY, _fluid.FluidType.WATER, _fluid.FluidType.GAS], timePeriod); + return consumptionService.getGraphData(timePeriod, _timeStep.TimeStep.DAY, [fluidTypes[index]]); case 5: - resultFluids = _context.sent; - _context.next = 8; - return consumptionService.getPerformanceIndicators(timePeriod, _timeStep.TimeStep.MONTH, resultFluids, comparisonTimePeriod); + monthlyData = _context.sent; - case 8: - fetchedPerformanceIndicators = _context.sent; + if (monthlyData && (monthlyData === null || monthlyData === void 0 ? void 0 : monthlyData.actualData.length) > 0) { + setChartData(monthlyData); + maxDay = getMaxConsumptionDay(monthlyData.actualData); - if (fetchedPerformanceIndicators) { - setPerformanceIndicators(fetchedPerformanceIndicators); - setLoadAnalysis(false); - setAggregatedPerformanceIndicators(performanceIndicatorService.aggregatePerformanceIndicators(fetchedPerformanceIndicators)); + if (maxDay) { + setMaxDayData(maxDay); + dispatch((0, _chart.setSelectedDate)(maxDay.date)); + } else { + setMaxDayData(null); + } } - setFluidsWithData(resultFluids); - setLoadAnalysis(false); + setIsLoading(false); - case 12: + case 8: case "end": return _context.stop(); } } }, _callee); })); - - return function populateData() { - return _ref2.apply(this, arguments); - }; - }(); + return _getMaxLoadData.apply(this, arguments); + } if (subscribed) { - populateData(); + getMaxLoadData(); } return function () { - saveLastScrollPosition(); subscribed = false; }; - }, [analysisMonth, consumptionService, performanceIndicatorService, saveLastScrollPosition]); - (0, _react.useEffect)(function () { - if (!loadAnalysis) { - var app = document.querySelector('.app-content'); - window.scrollTo(0, scrollPosition); - app === null || app === void 0 ? void 0 : app.scrollTo(0, scrollPosition); - } - }, [loadAnalysis, scrollPosition]); - return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, loadAnalysis && /*#__PURE__*/_react.default.createElement("div", { + }, [analysisMonth, client, fluidTypes, index, dispatch]); + + var getMaxConsumptionDay = function getMaxConsumptionDay(dataload) { + var maxIndex = -1; + var maxValue = -1; + dataload.forEach(function (day, index) { + if (day.value > 0 && day.value > maxValue) { + maxValue = day.value; + maxIndex = index; + } + }); + if (maxIndex === -1) return null; + return dataload[maxIndex]; + }; + + var buttonPrev = function buttonPrev() { + return /*#__PURE__*/_react.default.createElement(_IconButton.default, { + "aria-label": t('consumption.accessibility.button_previous_value'), + onClick: function onClick() { + return handleFluidChange(-1); + }, + className: "arrow-prev" + }, /*#__PURE__*/_react.default.createElement(_Icon.default, { + icon: _leftArrow.default, + size: 24 + })); + }; + + var buttonNext = function buttonNext() { + return /*#__PURE__*/_react.default.createElement(_IconButton.default, { + "aria-label": t('consumption.accessibility.button_next_value'), + onClick: function onClick() { + return handleFluidChange(1); + }, + className: "arrow-next" + }, /*#__PURE__*/_react.default.createElement(_Icon.default, { + icon: _rightArrow.default, + size: 24 + })); + }; + + return /*#__PURE__*/_react.default.createElement("div", { + className: "max-consumption-container", + ref: containerRef + }, /*#__PURE__*/_react.default.createElement(_StyledIcon.default, { + icon: _graphIcon.default, + size: 38 + }), /*#__PURE__*/_react.default.createElement("div", { + className: "text-16-normal title" + }, t('analysis.max_day')), /*#__PURE__*/_react.default.createElement("div", { + className: "fluid-navigation" + }, fluidTypes.length > 1 && buttonPrev(), /*#__PURE__*/_react.default.createElement("div", { + className: "text-20-bold fluid ".concat(fluidColor) + }, t("FLUID.".concat(currentFluidType, ".LABEL"))), fluidTypes.length > 1 && buttonNext()), /*#__PURE__*/_react.default.createElement("div", { + className: "data-container" + }, isLoading && /*#__PURE__*/_react.default.createElement("div", { className: "loaderContainer" - }, /*#__PURE__*/_react.default.createElement(_Loader.default, null)), !loadAnalysis && /*#__PURE__*/_react.default.createElement(_core.Fade, { - in: !loadAnalysis - }, /*#__PURE__*/_react.default.createElement("div", { - className: "analysis-root" - }, /*#__PURE__*/_react.default.createElement("div", { - className: "analysis-content" - }, /*#__PURE__*/_react.default.createElement(_Comparison.default, { - fluidsWithData: fluidsWithData, - monthPerformanceIndicators: performanceIndicators - })), /*#__PURE__*/_react.default.createElement("div", { - className: "analysis-content" - }, /*#__PURE__*/_react.default.createElement("div", { - className: "card rich-card" - }, /*#__PURE__*/_react.default.createElement(_TotalAnalysisChart.default, { - fluidsWithData: fluidsWithData - }))), /*#__PURE__*/_react.default.createElement("div", { - className: "analysis-content" - }, /*#__PURE__*/_react.default.createElement("div", { - className: "card rich-card" - }, /*#__PURE__*/_react.default.createElement(_MaxConsumptionCard.default, { - fluidsWithData: fluidsWithData - }))), /*#__PURE__*/_react.default.createElement("div", { - className: "analysis-content" - }, /*#__PURE__*/_react.default.createElement("div", { - className: "card rich-card" - }, /*#__PURE__*/_react.default.createElement(_ProfileComparator.default, { - aggregatedPerformanceIndicator: aggregatedPerformanceIndicators, - fluidsWithData: fluidsWithData, - performanceIndicators: performanceIndicators - }))), fluidsWithData.includes(_fluid.FluidType.ELECTRICITY) && /*#__PURE__*/_react.default.createElement("div", { - className: "analysis-content" - }, /*#__PURE__*/_react.default.createElement("div", { - className: "card" - }, /*#__PURE__*/_react.default.createElement(_ElecHalfHourMonthlyAnalysis.default, { - perfIndicator: performanceIndicators[_fluid.FluidType.ELECTRICITY] - })))))); + }, /*#__PURE__*/_react.default.createElement(_Loader.default, { + fluidType: fluidTypes[index] + })), !isLoading && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, !maxDayData && /*#__PURE__*/_react.default.createElement("p", { + className: "text-20-bold no_data" + }, t('analysis.no_data')), maxDayData && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", { + className: "text-24-bold maxDay-date" + }, maxDayData.date.setLocale('fr').toFormat('cccc dd LLLL')), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_DataloadSection.default, { + dataload: maxDayData, + fluidType: fluidTypes[index], + dataloadSectionType: _dataload.DataloadSectionType.NO_COMPARE, + toggleEstimationModal: function toggleEstimationModal() { + return null; + } + })), /*#__PURE__*/_react.default.createElement(_BarChart.default, { + chartData: chartData, + fluidType: fluidTypes[index], + timeStep: _timeStep.TimeStep.DAY, + height: height, + width: width, + isSwitching: false, + clickable: false + }))))); }; -var _default = MonthlyAnalysis; +var _default = MaxConsumptionCard; exports.default = _default; /***/ }), -/***/ "bIeq": +/***/ "BQYg": /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -1409,21 +1262,21 @@ __webpack_require__.r(__webpack_exports__); var symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({ - "id": "graph-icon_2f4fcee3111e5412592d47b4ca4c51a9", - "use": "graph-icon_2f4fcee3111e5412592d47b4ca4c51a9-usage", - "viewBox": "0 0 44 44", - "content": "<symbol viewBox=\"0 0 44 44\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" id=\"graph-icon_2f4fcee3111e5412592d47b4ca4c51a9\">\n<path d=\"M0 29C0 26.7909 1.79086 25 4 25H6.75556C8.96469 25 10.7556 26.7909 10.7556 29V44H0V29Z\" fill=\"#FFF1C5\" />\n<path d=\"M0 29C0 26.7909 1.79086 25 4 25H6.75556C8.96469 25 10.7556 26.7909 10.7556 29V44H0V29Z\" fill=\"#261C14\" fill-opacity=\"0.65\" />\n<path d=\"M16.6221 4C16.6221 1.79086 18.4129 0 20.6221 0H23.3776C25.5868 0 27.3776 1.79086 27.3776 4V44H16.6221V4Z\" fill=\"#E3B82A\" />\n<path d=\"M33.2446 17C33.2446 14.7909 35.0355 13 37.2446 13H40.0002C42.2093 13 44.0002 14.7909 44.0002 17V44H33.2446V17Z\" fill=\"#FFF1C5\" />\n<path d=\"M33.2446 17C33.2446 14.7909 35.0355 13 37.2446 13H40.0002C42.2093 13 44.0002 14.7909 44.0002 17V44H33.2446V17Z\" fill=\"#261C14\" fill-opacity=\"0.65\" />\n</symbol>" + "id": "maxPower_a32511543057af4db9e35ce24c2782e7", + "use": "maxPower_a32511543057af4db9e35ce24c2782e7-usage", + "viewBox": "0 0 40 40", + "content": "<symbol viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" id=\"maxPower_a32511543057af4db9e35ce24c2782e7\">\n<rect x=\"7\" y=\"6\" width=\"25\" height=\"2\" rx=\"1\" fill=\"white\" />\n<path d=\"M17 14C17 12.8954 17.8954 12 19 12H20C21.1046 12 22 12.8954 22 14V33H17V14Z\" fill=\"#D87B39\" />\n<path d=\"M9 24C9 22.8954 9.89543 22 11 22H12C13.1046 22 14 22.8954 14 24V33H9V24Z\" fill=\"#D87B39\" />\n<path d=\"M25 28C25 26.8954 25.8954 26 27 26H28C29.1046 26 30 26.8954 30 28V33H25V28Z\" fill=\"#D87B39\" />\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); /***/ }), -/***/ "ir/a": +/***/ "BgT8": /***/ (function(module, exports, __webpack_require__) { -var content = __webpack_require__("SkC0"); +var content = __webpack_require__("v3DR"); if(typeof content === 'string') content = [[module.i, content, '']]; @@ -1445,7 +1298,18 @@ if(false) {} /***/ }), -/***/ "ixpQ": +/***/ "DGgM": +/***/ (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.analysis-view-title {\n color: #e0e0e0;\n text-align: center;\n margin-bottom: 1rem;\n}", ""]); + + + +/***/ }), + +/***/ "DTIR": /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1458,72 +1322,171 @@ Object.defineProperty(exports, "__esModule", { }); exports.default = void 0; -var _StyledIcon = _interopRequireDefault(__webpack_require__("I07j")); +var _slicedToArray2 = _interopRequireDefault(__webpack_require__("J4zp")); -var _I18n = __webpack_require__("buk/"); +var _MonthlyAnalysis = _interopRequireDefault(__webpack_require__("XBNI")); -var _fluid = __webpack_require__("5Wkc"); +var _Content = _interopRequireDefault(__webpack_require__("VOVi")); -var _react = _interopRequireDefault(__webpack_require__("q1tI")); +var _DateNavigator = _interopRequireDefault(__webpack_require__("Hno1")); -var _picto = __webpack_require__("6DBe"); +var _CozyBar = _interopRequireDefault(__webpack_require__("CJMG")); -var _utils = __webpack_require__("c+yx"); +var _Header = _interopRequireDefault(__webpack_require__("frrP")); -__webpack_require__("y/Ga"); +var _cozyClient = __webpack_require__("SH7X"); -var FluidPerformanceIndicator = function FluidPerformanceIndicator(_ref) { - var performanceIndicator = _ref.performanceIndicator, - fluidType = _ref.fluidType, - comparisonDate = _ref.comparisonDate; +var _usageEvent = __webpack_require__("/fHX"); - var _useI18n = (0, _I18n.useI18n)(), - t = _useI18n.t; +var _luxon = __webpack_require__("ExVU"); - var iconType = (0, _picto.getPicto)(fluidType); - var displayedValue = performanceIndicator !== null && performanceIndicator !== void 0 && performanceIndicator.value ? (0, _utils.formatNumberValues)(performanceIndicator.value).toString() : ''; - var positive = (performanceIndicator === null || performanceIndicator === void 0 ? void 0 : performanceIndicator.percentageVariation) && (performanceIndicator === null || performanceIndicator === void 0 ? void 0 : performanceIndicator.percentageVariation) > 0; +var _react = _interopRequireWildcard(__webpack_require__("q1tI")); - var percentSwitch = function percentSwitch(percentage) { - if (positive) { - return "+".concat((0, _utils.formatNumberValues)(percentage * 100), " %"); - } else { - return "-".concat((0, _utils.formatNumberValues)(Math.abs(percentage) * 100), " %"); +var _reactRedux = __webpack_require__("/MKj"); + +var _reactRouterDom = __webpack_require__("SOjZ"); + +var _usageEvent2 = _interopRequireDefault(__webpack_require__("dECN")); + +var _global = __webpack_require__("c4IZ"); + +var _profile = __webpack_require__("jPH6"); + +__webpack_require__("/Sqe"); + +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 AnalysisView = function AnalysisView() { + var client = (0, _cozyClient.useClient)(); + + var _useState = (0, _react.useState)(0), + _useState2 = (0, _slicedToArray2.default)(_useState, 2), + headerHeight = _useState2[0], + setHeaderHeight = _useState2[1]; + + var _useSelector = (0, _reactRedux.useSelector)(function (state) { + return state.ecolyo; + }), + analysisMonth = _useSelector.analysis.analysisMonth, + selectedDate = _useSelector.chart.selectedDate, + analysisNotification = _useSelector.global.analysisNotification, + _useSelector$profile = _useSelector.profile, + monthlyAnalysisDate = _useSelector$profile.monthlyAnalysisDate, + mailToken = _useSelector$profile.mailToken; + + var dispatch = (0, _reactRedux.useDispatch)(); + var defineHeaderHeight = (0, _react.useCallback)(function (height) { + setHeaderHeight(height); + }, []); // Handle email report comeback + + var _useLocation = (0, _reactRouterDom.useLocation)(), + search = _useLocation.search; + + var query = new URLSearchParams(search); + var paramToken = query.get('token'); + var app = document.querySelector('.app-content'); + + var _useState3 = (0, _react.useState)(0), + _useState4 = (0, _slicedToArray2.default)(_useState3, 2), + scrollPosition = _useState4[0], + setScrollPosition = _useState4[1]; + /** Scroll handling for switching months and staying on the same scroll position */ + + + var saveLastScrollPosition = (0, _react.useCallback)(function () { + if (app) { + var position = Math.max(app.scrollTop, window.scrollY); + setScrollPosition(position); } - }; + }, [app]); + (0, _react.useEffect)(function () { + var updateAnalysisNotification = function updateAnalysisNotification() { + if (analysisNotification) { + dispatch((0, _profile.updateProfile)({ + haveSeenLastAnalysis: true + })); + dispatch((0, _global.toggleAnalysisNotification)(false)); + } // Save usageevent came back from email - return /*#__PURE__*/_react.default.createElement("div", { - className: "fpi" - }, /*#__PURE__*/_react.default.createElement(_StyledIcon.default, { - icon: iconType, - size: 50 - }), /*#__PURE__*/_react.default.createElement("div", { - className: "fpi-content" - }, !displayedValue && /*#__PURE__*/_react.default.createElement("div", { - className: "fpi-content-no-data" - }, /*#__PURE__*/_react.default.createElement("span", null, t('performance_indicator.fpi.no_data'))), displayedValue && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", { - className: "fpi-value" - }, /*#__PURE__*/_react.default.createElement("span", { - className: "fpi-load" - }, displayedValue), /*#__PURE__*/_react.default.createElement("span", { - className: "fpi-unit" - }, t('FLUID.' + _fluid.FluidType[fluidType] + '.UNIT'))), (performanceIndicator === null || performanceIndicator === void 0 ? void 0 : performanceIndicator.percentageVariation) === null && /*#__PURE__*/_react.default.createElement("span", { - className: "fpi-no-comparison" - }, t('performance_indicator.fpi.no_comparison')), (performanceIndicator === null || performanceIndicator === void 0 ? void 0 : performanceIndicator.percentageVariation) !== null && /*#__PURE__*/_react.default.createElement("div", { - className: "fpi-comparison" - }, /*#__PURE__*/_react.default.createElement("span", { - className: "percent ".concat(positive ? 'positive' : 'negative') - }, percentSwitch(performanceIndicator.percentageVariation)), /*#__PURE__*/_react.default.createElement("span", { - className: "fpi-comparison-date" - }, " / ".concat((0, _utils.getMonthName)(comparisonDate), " ").concat(comparisonDate.year)))))); + + if (paramToken && mailToken && paramToken === mailToken) { + _usageEvent2.default.addEventIfDoesntExist(client, { + type: _usageEvent.UsageEventType.REPORT_FROM_EMAIL, + target: 'analysis', + result: '1' + }, { + type: _usageEvent.UsageEventType.REPORT_FROM_EMAIL, + eventDate: { + $lt: _luxon.DateTime.local().setZone('utc', { + keepLocalTime: true + }).endOf('month').toString(), + $gt: _luxon.DateTime.local().setZone('utc', { + keepLocalTime: true + }).startOf('month').toString() + } + }); + } + }; + + updateAnalysisNotification(); + }, [dispatch, analysisNotification, monthlyAnalysisDate, selectedDate, paramToken, mailToken, client]); + return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_CozyBar.default, { + titleKey: 'common.title_analysis' + }), /*#__PURE__*/_react.default.createElement(_Header.default, { + setHeaderHeight: defineHeaderHeight, + desktopTitleKey: 'common.title_analysis' + }, /*#__PURE__*/_react.default.createElement(_DateNavigator.default, { + currentAnalysisDate: analysisMonth, + inlineDateDisplay: true + })), /*#__PURE__*/_react.default.createElement(_Content.default, { + height: headerHeight + }, /*#__PURE__*/_react.default.createElement(_MonthlyAnalysis.default, { + saveLastScrollPosition: saveLastScrollPosition, + scrollPosition: scrollPosition + }))); }; -var _default = FluidPerformanceIndicator; +var _default = AnalysisView; exports.default = _default; /***/ }), -/***/ "jQYw": +/***/ "G8GX": +/***/ (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": "minimum_b801a50896be5699fd2976694484dcf4", + "use": "minimum_b801a50896be5699fd2976694484dcf4-usage", + "viewBox": "0 0 40 40", + "content": "<symbol viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" id=\"minimum_b801a50896be5699fd2976694484dcf4\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M29.0636 23.2831C26.3793 27.021 21.6698 29.0536 16.8631 28.0942C10.3113 26.7865 6.05999 20.4151 7.36766 13.8632C8.03388 10.5253 10.0144 7.78445 12.6635 6.07163C7.31475 7.17394 2.8792 11.3674 1.74304 17.0599C0.228052 24.6505 5.15331 32.0321 12.7439 33.5471C20.086 35.0125 27.2325 30.4524 29.0636 23.2831Z\" fill=\"#D87B39\" />\n<path d=\"M24 9.75311C24 9.9864 23.9379 10.1994 23.8138 10.3921L18.4996 18.3645H23.8782V20H16V19.1936C16 19.0922 16.0167 18.9959 16.0501 18.9046C16.0836 18.8082 16.1265 18.7195 16.1791 18.6383L21.5076 10.6279H16.3366V9H24V9.75311Z\" fill=\"white\" />\n<path d=\"M35 5.75311C35 5.9864 34.9379 6.1994 34.8138 6.39212L29.4996 14.3645H34.8782V16H27V15.1936C27 15.0922 27.0167 14.9959 27.0501 14.9046C27.0836 14.8082 27.1265 14.7195 27.1791 14.6383L32.5076 6.62794H27.3366V5H35V5.75311Z\" fill=\"white\" />\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); + +/***/ }), + +/***/ "JvyT": +/***/ (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.elecInfoModal {\n padding: 0.5rem;\n color: #e0e0e0;\n}\n.elecInfoModal .title {\n margin: 1.5rem 0;\n color: #e3b82a;\n font-weight: bold;\n margin-bottom: 0.5rem;\n}", ""]); + + + +/***/ }), + +/***/ "LTEj": /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1542,7 +1505,17 @@ var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__("yXPU")); var _slicedToArray2 = _interopRequireDefault(__webpack_require__("J4zp")); -var _core = __webpack_require__("TTf+"); +var _IconButton = _interopRequireDefault(__webpack_require__("o6Jd")); + +var _leftArrow = _interopRequireDefault(__webpack_require__("bZGv")); + +var _maxPower = _interopRequireDefault(__webpack_require__("BQYg")); + +var _minimum = _interopRequireDefault(__webpack_require__("G8GX")); + +var _rightArrow = _interopRequireDefault(__webpack_require__("fZGW")); + +var _ElecHalfHourChart = _interopRequireDefault(__webpack_require__("qrnv")); var _Loader = _interopRequireDefault(__webpack_require__("Ra/y")); @@ -1550,184 +1523,326 @@ var _cozyClient = __webpack_require__("SH7X"); var _I18n = __webpack_require__("buk/"); +var _Icon = _interopRequireDefault(__webpack_require__("y6ex")); + var _fluid = __webpack_require__("5Wkc"); var _timeStep = __webpack_require__("cKQ8"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); +var _reactRedux = __webpack_require__("/MKj"); + var _consumption = _interopRequireDefault(__webpack_require__("AVq/")); -var _analysis = __webpack_require__("JQjK"); +var _enedisMonthlyAnalysisData = _interopRequireDefault(__webpack_require__("GrKv")); + +var _fluidsPrices = _interopRequireDefault(__webpack_require__("VjcQ")); -var _hooks = __webpack_require__("Zlw4"); +var _picto = __webpack_require__("6DBe"); -var _FluidPerformanceIndicator = _interopRequireDefault(__webpack_require__("ixpQ")); +var _ElecInfoModal = _interopRequireDefault(__webpack_require__("l5Ue")); -__webpack_require__("uXBk"); +__webpack_require__("70Bo"); 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 Comparison = function Comparison(_ref) { - var fluidsWithData = _ref.fluidsWithData, - monthPerformanceIndicators = _ref.monthPerformanceIndicators; +var ElecHalfHourMonthlyAnalysis = function ElecHalfHourMonthlyAnalysis(_ref) { + var perfIndicator = _ref.perfIndicator; var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; var client = (0, _cozyClient.useClient)(); - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { - return state.ecolyo; + var _useSelector = (0, _reactRedux.useSelector)(function (state) { + return state.ecolyo.analysis; }), - fluidTypes = _useAppSelector.global.fluidTypes, - _useAppSelector$analy = _useAppSelector.analysis, - period = _useAppSelector$analy.period, - analysisMonth = _useAppSelector$analy.analysisMonth; + analysisMonth = _useSelector.analysisMonth; - var dispatch = (0, _hooks.useAppDispatch)(); - - var _useState = (0, _react.useState)([]), + var _useState = (0, _react.useState)(true), _useState2 = (0, _slicedToArray2.default)(_useState, 2), - yearPerformanceIndicators = _useState2[0], - setYearPerformanceIndicators = _useState2[1]; + isWeekend = _useState2[0], + setIsWeekend = _useState2[1]; var _useState3 = (0, _react.useState)(true), _useState4 = (0, _slicedToArray2.default)(_useState3, 2), - isLoading = _useState4[0], - setIsLoading = _useState4[1]; + isHalfHourActivated = _useState4[0], + setIsHalfHourActivated = _useState4[1]; - var consumptionService = (0, _react.useMemo)(function () { - return new _consumption.default(client); - }, [client]); - var periods = (0, _react.useMemo)(function () { - return { - monthPeriod: { - startDate: analysisMonth.minus({ - month: 1 - }).startOf('month'), - endDate: analysisMonth.minus({ - month: 1 - }).endOf('month') - }, - previousMonthPeriod: { - startDate: analysisMonth.minus({ - month: 2 - }).startOf('month'), - endDate: analysisMonth.minus({ - month: 2 - }).endOf('month') - }, - previousYearPeriod: { - startDate: analysisMonth.minus({ - year: 1, - month: 1 - }).startOf('month'), - endDate: analysisMonth.minus({ - year: 1, - month: 1 - }).endOf('month') - } - }; - }, [analysisMonth]); - var loaderPlaceholderHeight = fluidsWithData.length * 84 + (fluidsWithData.length - 1) * 10; - (0, _react.useEffect)(function () { - var subscribed = true; + var _useState5 = (0, _react.useState)(true), + _useState6 = (0, _slicedToArray2.default)(_useState5, 2), + isLoading = _useState6[0], + setIsLoading = _useState6[1]; - function populateData() { - return _populateData.apply(this, arguments); - } + var _useState7 = (0, _react.useState)(), + _useState8 = (0, _slicedToArray2.default)(_useState7, 2), + monthDataloads = _useState8[0], + setMonthDataloads = _useState8[1]; - function _populateData() { - _populateData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { - var fetchedYearIndicators; - return _regenerator.default.wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - if (!subscribed) { - _context.next = 6; - break; - } + var _useState9 = (0, _react.useState)(), + _useState10 = (0, _slicedToArray2.default)(_useState9, 2), + enedisAnalysisValues = _useState10[0], + setEnedisAnalysisValues = _useState10[1]; - _context.next = 3; - return consumptionService.getPerformanceIndicators(periods.monthPeriod, _timeStep.TimeStep.MONTH, fluidsWithData, periods.previousYearPeriod); + var _useState11 = (0, _react.useState)(), + _useState12 = (0, _slicedToArray2.default)(_useState11, 2), + facturePercentage = _useState12[0], + setFacturePercentage = _useState12[1]; - case 3: - fetchedYearIndicators = _context.sent; + var _useState13 = (0, _react.useState)(), + _useState14 = (0, _slicedToArray2.default)(_useState13, 2), + elecPrice = _useState14[0], + setElecPrice = _useState14[1]; - if (fetchedYearIndicators) { - setYearPerformanceIndicators(fetchedYearIndicators); - } + var _useState15 = (0, _react.useState)(false), + _useState16 = (0, _slicedToArray2.default)(_useState15, 2), + openInfoModal = _useState16[0], + setOpenInfoModal = _useState16[1]; - setIsLoading(false); + var handleChangeWeek = (0, _react.useCallback)(function () { + setIsWeekend(function (prev) { + return !prev; + }); + }, []); + var toggleOpenModal = (0, _react.useCallback)(function () { + setOpenInfoModal(function (prev) { + return !prev; + }); + }, []); + var isDataFullyComplete = (0, _react.useCallback)(function (monthDataloads) { + var _monthDataloads$weeke, _monthDataloads$week$; + + if (monthDataloads !== null && monthDataloads !== void 0 && monthDataloads.weekend && monthDataloads.week && ((_monthDataloads$weeke = monthDataloads.weekend[0]) === null || _monthDataloads$weeke === void 0 ? void 0 : _monthDataloads$weeke.value) !== null && ((_monthDataloads$week$ = monthDataloads.week[0]) === null || _monthDataloads$week$ === void 0 ? void 0 : _monthDataloads$week$.value) !== null) { + return true; + } else return false; + }, []); + var getPowerChart = (0, _react.useCallback)(function () { + if (monthDataloads && isDataFullyComplete(monthDataloads)) { + return /*#__PURE__*/_react.default.createElement(_ElecHalfHourChart.default, { + dataLoad: isWeekend ? monthDataloads.weekend : monthDataloads.week, + isWeekend: isWeekend + }); + } else { + return /*#__PURE__*/_react.default.createElement("p", { + className: "text-20-bold no_data" + }, t('analysis.no_data')); + } + }, [isDataFullyComplete, isWeekend, monthDataloads, t]); + (0, _react.useEffect)(function () { + var subscribed = true; + + function fetchEnedisAnalysisData() { + return _fetchEnedisAnalysisData.apply(this, arguments); + } + + function _fetchEnedisAnalysisData() { + _fetchEnedisAnalysisData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { + var cs, isHalfHourLoadActivated, emas, aggregatedDate, data, aggregatedData, percentage; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + cs = new _consumption.default(client); + _context.next = 3; + return cs.checkDoctypeEntries(_fluid.FluidType.ELECTRICITY, _timeStep.TimeStep.HALF_AN_HOUR); + + case 3: + isHalfHourLoadActivated = _context.sent; + + if (subscribed) { + _context.next = 6; + break; + } + + return _context.abrupt("return"); case 6: + if (!isHalfHourLoadActivated) { + _context.next = 15; + break; + } + + emas = new _enedisMonthlyAnalysisData.default(client); + aggregatedDate = analysisMonth.minus({ + month: 1 + }); + _context.next = 11; + return emas.getEnedisMonthlyAnalysisByDate(aggregatedDate.year, aggregatedDate.month); + + case 11: + data = _context.sent; + + if (data !== null && data !== void 0 && data.length) { + aggregatedData = emas.aggregateValuesToDataLoad(data[0]); + setEnedisAnalysisValues(data[0]); + setMonthDataloads(aggregatedData); + + if (data[0].minimumLoad && perfIndicator.value) { + percentage = data[0].minimumLoad / perfIndicator.value * 100; + setFacturePercentage(percentage); + } + } + + _context.next = 16; + break; + + case 15: + setIsHalfHourActivated(false); + + case 16: + setIsLoading(false); + + case 17: case "end": return _context.stop(); } } }, _callee); })); - return _populateData.apply(this, arguments); + return _fetchEnedisAnalysisData.apply(this, arguments); } - populateData(); + fetchEnedisAnalysisData(); return function () { subscribed = false; }; - }, [client, fluidTypes, analysisMonth, consumptionService, fluidsWithData, periods.monthPeriod, periods.previousYearPeriod]); - return /*#__PURE__*/_react.default.createElement("div", { - className: "comparison" - }, /*#__PURE__*/_react.default.createElement("div", { - className: "tabs" - }, /*#__PURE__*/_react.default.createElement(_core.Button, { - className: period === 'month' ? 'active' : '', - onClick: function onClick() { - return dispatch((0, _analysis.setPeriod)('month')); - } - }, t('analysis.compare.month_tab')), /*#__PURE__*/_react.default.createElement(_core.Button, { - className: period === 'year' ? 'active' : '', - onClick: function onClick() { - return dispatch((0, _analysis.setPeriod)('year')); + }, [analysisMonth, client, perfIndicator]); + (0, _react.useEffect)(function () { + var subscribed = true; + var fluidsPricesService = new _fluidsPrices.default(client); + + function getAllLastPrices() { + return _getAllLastPrices.apply(this, arguments); } - }, t('analysis.compare.year_tab'))), /*#__PURE__*/_react.default.createElement("div", { - className: "performanceIndicators" - }, isLoading && /*#__PURE__*/_react.default.createElement("div", { - style: { - height: "".concat(loaderPlaceholderHeight, "px"), - display: 'flex', - justifyContent: 'center' + + function _getAllLastPrices() { + _getAllLastPrices = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() { + var price; + return _regenerator.default.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + _context2.next = 2; + return fluidsPricesService.getPrices(_fluid.FluidType.ELECTRICITY, analysisMonth.minus({ + month: 1 + })); + + case 2: + price = _context2.sent; + + if (subscribed && price) { + setElecPrice(price); + } + + case 4: + case "end": + return _context2.stop(); + } + } + }, _callee2); + })); + return _getAllLastPrices.apply(this, arguments); } - }, /*#__PURE__*/_react.default.createElement(_Loader.default, null)), !isLoading && fluidsWithData.length === 0 && [_fluid.FluidType.ELECTRICITY, _fluid.FluidType.WATER, _fluid.FluidType.GAS].map(function (fluid) { - return /*#__PURE__*/_react.default.createElement(_FluidPerformanceIndicator.default, { - key: fluid, - fluidType: fluid, - performanceIndicator: { - value: 0, - compareValue: 0, - percentageVariation: 0 - }, - comparisonDate: periods.previousMonthPeriod.startDate - }); - }), !isLoading && fluidsWithData.map(function (fluid) { - return /*#__PURE__*/_react.default.createElement(_FluidPerformanceIndicator.default, { - key: fluid, - fluidType: fluid, - performanceIndicator: period === 'month' ? monthPerformanceIndicators[fluid] : yearPerformanceIndicators[fluid], - comparisonDate: period === 'month' ? periods.previousMonthPeriod.startDate : periods.previousYearPeriod.startDate - }); - }))); + + getAllLastPrices(); + return function () { + subscribed = false; + }; + }, [analysisMonth, client]); + return /*#__PURE__*/_react.default.createElement("div", { + className: "special-elec-container" + }, /*#__PURE__*/_react.default.createElement(_Icon.default, { + className: "elec-icon", + icon: (0, _picto.getNavPicto)(_fluid.FluidType.ELECTRICITY, true, true), + size: 42 + }), /*#__PURE__*/_react.default.createElement("div", { + className: "text-18-normal title" + }, t('special_elec.title')), !isHalfHourActivated && /*#__PURE__*/_react.default.createElement("div", { + className: "activation-text text-18-normal" + }, t("timestep.half_an_hour.analysis_waiting_data")), isHalfHourActivated && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", { + className: "navigator" + }, /*#__PURE__*/_react.default.createElement(_IconButton.default, { + "aria-label": t('consumption.accessibility.button_previous_value'), + onClick: handleChangeWeek, + className: "arrow-prev" + }, /*#__PURE__*/_react.default.createElement(_Icon.default, { + icon: _leftArrow.default, + size: 24 + })), /*#__PURE__*/_react.default.createElement("div", { + className: "average text-18-normal" + }, /*#__PURE__*/_react.default.createElement("div", { + className: "text-1" + }, t('special_elec.average')), /*#__PURE__*/_react.default.createElement("div", { + className: "text-2 text-18-bold" + }, t('special_elec.weektype'), ' ', /*#__PURE__*/_react.default.createElement("span", { + className: isWeekend ? 'weekend' : 'week' + }, isWeekend ? t('special_elec.weekend') : t('special_elec.week')))), /*#__PURE__*/_react.default.createElement(_IconButton.default, { + "aria-label": t('consumption.accessibility.button_previous_value'), + onClick: handleChangeWeek, + className: "arrow-next" + }, /*#__PURE__*/_react.default.createElement(_Icon.default, { + icon: _rightArrow.default, + size: 24 + }))), isLoading && /*#__PURE__*/_react.default.createElement(_Loader.default, { + color: "elec" + }), !isLoading && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, getPowerChart(), enedisAnalysisValues && isDataFullyComplete(monthDataloads) && /*#__PURE__*/_react.default.createElement("div", { + className: "min-max" + }, /*#__PURE__*/_react.default.createElement("div", { + className: "container" + }, /*#__PURE__*/_react.default.createElement(_Icon.default, { + icon: _maxPower.default, + size: 40, + className: "minIcon" + }), /*#__PURE__*/_react.default.createElement("div", { + className: "text" + }, /*#__PURE__*/_react.default.createElement("div", { + className: "min text-18-normal" + }, t('special_elec.maxPower'))), /*#__PURE__*/_react.default.createElement("div", { + className: "value kvAval" + }, enedisAnalysisValues.maxPower !== 0 && enedisAnalysisValues.maxPower !== null ? /*#__PURE__*/_react.default.createElement("div", { + className: "text-18-bold" + }, enedisAnalysisValues.maxPower.toFixed(1), /*#__PURE__*/_react.default.createElement("span", { + className: "text-18-normal" + }, " kVA")) : /*#__PURE__*/_react.default.createElement("span", null, "----"))), /*#__PURE__*/_react.default.createElement("div", { + className: "container consomin" + }, /*#__PURE__*/_react.default.createElement(_Icon.default, { + icon: _minimum.default, + size: 40, + className: "minIcon" + }), /*#__PURE__*/_react.default.createElement("div", { + className: "text text-18-normal" + }, /*#__PURE__*/_react.default.createElement("div", null, t('special_elec.min')), /*#__PURE__*/_react.default.createElement("div", null, t('special_elec.percentage')), /*#__PURE__*/_react.default.createElement("div", null, t('special_elec.price'))), /*#__PURE__*/_react.default.createElement("div", { + className: "value" + }, enedisAnalysisValues.minimumLoad !== 0 && enedisAnalysisValues.minimumLoad !== null ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", { + className: "text-18-bold" + }, enedisAnalysisValues.minimumLoad.toFixed(1), /*#__PURE__*/_react.default.createElement("span", { + className: "text-18-normal" + }, " kWh")), /*#__PURE__*/_react.default.createElement("div", { + className: "text-18-bold" + }, (facturePercentage === null || facturePercentage === void 0 ? void 0 : facturePercentage.toFixed(0)) || '---', /*#__PURE__*/_react.default.createElement("span", { + className: "text-18-normal" + }, " %")), /*#__PURE__*/_react.default.createElement("div", { + className: "text-18-bold" + }, elecPrice !== null && elecPrice !== void 0 && elecPrice.price ? (enedisAnalysisValues.minimumLoad * elecPrice.price).toFixed(1) : '---', /*#__PURE__*/_react.default.createElement("span", { + className: "text-18-normal" + }, " \u20AC"))) : /*#__PURE__*/_react.default.createElement("span", null, "----"))), /*#__PURE__*/_react.default.createElement("div", { + onClick: toggleOpenModal, + className: "showmodal" + }, t('special_elec.showModal'))))), /*#__PURE__*/_react.default.createElement(_ElecInfoModal.default, { + open: openInfoModal, + handleCloseClick: toggleOpenModal + })); }; -var _default = Comparison; +var _default = ElecHalfHourMonthlyAnalysis; exports.default = _default; /***/ }), -/***/ "l/+E": +/***/ "XBNI": /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1746,330 +1861,289 @@ var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__("yXPU")); var _slicedToArray2 = _interopRequireDefault(__webpack_require__("J4zp")); -var _core = __webpack_require__("TTf+"); +var _Loader = _interopRequireDefault(__webpack_require__("Ra/y")); -var _Button = _interopRequireDefault(__webpack_require__("FtsS")); +var _cozyClient = __webpack_require__("SH7X"); -var _chevronDown = _interopRequireDefault(__webpack_require__("CYAo")); +var _fluid = __webpack_require__("5Wkc"); -var _profileEdit = _interopRequireDefault(__webpack_require__("vdp4")); +var _timeStep = __webpack_require__("cKQ8"); -var _analysis = _interopRequireDefault(__webpack_require__("jSRn")); - -var _noProfilePlaceholder = _interopRequireDefault(__webpack_require__("tM5S")); - -var _StyledIcon = _interopRequireDefault(__webpack_require__("I07j")); - -var _Loader = _interopRequireDefault(__webpack_require__("Ra/y")); +var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _cozyClient = __webpack_require__("SH7X"); +var _reactRedux = __webpack_require__("/MKj"); -var _I18n = __webpack_require__("buk/"); +var _consumption = _interopRequireDefault(__webpack_require__("AVq/")); -var _Icon = _interopRequireDefault(__webpack_require__("y6ex")); +var _fluidConfig = _interopRequireDefault(__webpack_require__("JIzA")); -var _fluid = __webpack_require__("5Wkc"); +var _performanceIndicator = _interopRequireDefault(__webpack_require__("8gio")); -var _react = _interopRequireWildcard(__webpack_require__("q1tI")); +var _AnalysisConsumption = _interopRequireDefault(__webpack_require__("6ISt")); -var _reactRouterDom = __webpack_require__("SOjZ"); +var _AnalysisErrorModal = _interopRequireDefault(__webpack_require__("lvg8")); -var _profileType = _interopRequireDefault(__webpack_require__("7e12")); +var _ComparisonView = _interopRequireDefault(__webpack_require__("6az+")); -var _profileTypeEntity = _interopRequireDefault(__webpack_require__("aypK")); +var _ElecHalfHourMonthlyAnalysis = _interopRequireDefault(__webpack_require__("LTEj")); -var _hooks = __webpack_require__("Zlw4"); +var _MaxConsumptionCard = _interopRequireDefault(__webpack_require__("AJTi")); -var _ProfileComparatorRow = _interopRequireDefault(__webpack_require__("Q5dr")); +var _TotalAnalysisChart = _interopRequireDefault(__webpack_require__("8LDu")); -__webpack_require__("nsEu"); +__webpack_require__("oXWw"); 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 ProfileComparator = function ProfileComparator(_ref) { - var aggregatedPerformanceIndicator = _ref.aggregatedPerformanceIndicator, - fluidsWithData = _ref.fluidsWithData, - performanceIndicators = _ref.performanceIndicators; - - var _useI18n = (0, _I18n.useI18n)(), - t = _useI18n.t; - - var navigate = (0, _reactRouterDom.useNavigate)(); +var MonthlyAnalysis = function MonthlyAnalysis(_ref) { + var saveLastScrollPosition = _ref.saveLastScrollPosition, + scrollPosition = _ref.scrollPosition; var client = (0, _cozyClient.useClient)(); - var userPriceConsumption = aggregatedPerformanceIndicator.value || 0; - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo; }), - analysisMonth = _useAppSelector.analysis.analysisMonth, - profile = _useAppSelector.profile; + analysisMonth = _useSelector.analysis.analysisMonth, + fluidTypes = _useSelector.global.fluidTypes; - var _useState = (0, _react.useState)(0), + var _useState = (0, _react.useState)([]), _useState2 = (0, _slicedToArray2.default)(_useState, 2), - homePriceConsumption = _useState2[0], - setHomePriceConsumption = _useState2[1]; + performanceIndicators = _useState2[0], + setPerformanceIndicators = _useState2[1]; - var _useState3 = (0, _react.useState)(null), + var _useState3 = (0, _react.useState)({ + value: 0, + compareValue: 0, + percentageVariation: 0 + }), _useState4 = (0, _slicedToArray2.default)(_useState3, 2), - forecast = _useState4[0], - setForecast = _useState4[1]; + aggregatedPerformanceIndicators = _useState4[0], + setAggregatedPerformanceIndicators = _useState4[1]; var _useState5 = (0, _react.useState)(true), _useState6 = (0, _slicedToArray2.default)(_useState5, 2), - isLoading = _useState6[0], - setIsLoading = _useState6[1]; - - var _useState7 = (0, _react.useState)(false), - _useState8 = (0, _slicedToArray2.default)(_useState7, 2), - activeAverageHome = _useState8[0], - setActiveAverageHome = _useState8[1]; - - var toggleAccordion = function toggleAccordion() { - setActiveAverageHome(function (prev) { - return !prev; - }); - - if (!activeAverageHome) { - setTimeout(function () { - var content = document.querySelector('.consumption-electricity'); - - if (content) { - content.scrollIntoView({ - behavior: 'smooth', - block: 'start' - }); - } - }, 300); - } - }; - /** Disconnected + empty fluids to show in ProfileComparatorRow */ - - - var disconnectedFluidTypes = [_fluid.FluidType.ELECTRICITY, _fluid.FluidType.WATER, _fluid.FluidType.GAS].filter(function (fluidType) { - return !fluidsWithData.includes(fluidType); - }); - var emptyFluidTypes = []; - - for (var i = 0; i < performanceIndicators.length; i++) { - var _performanceIndicator; - - if (!((_performanceIndicator = performanceIndicators[i]) !== null && _performanceIndicator !== void 0 && _performanceIndicator.value) && fluidsWithData[i]) { - emptyFluidTypes.push(fluidsWithData[i]); - } - } + loadAnalysis = _useState6[0], + setLoadAnalysis = _useState6[1]; - var getTotalValueWithConnectedFluids = (0, _react.useCallback)(function (monthlyForecast) { - if (fluidsWithData.length === 3) { - setHomePriceConsumption(monthlyForecast.totalValue); - } else { - var totalPrice = 0; - fluidsWithData.forEach(function (fluid) { - if (monthlyForecast.fluidForecast[fluid].value) totalPrice += monthlyForecast.fluidForecast[fluid].value; - }); - setHomePriceConsumption(totalPrice); - } - }, [fluidsWithData]); + var configService = new _fluidConfig.default(); + var fluidConfig = configService.getFluidConfig(); (0, _react.useEffect)(function () { var subscribed = true; - function loadAverageConsumption() { - return _loadAverageConsumption.apply(this, arguments); + function populateData() { + return _populateData.apply(this, arguments); } - function _loadAverageConsumption() { - _loadAverageConsumption = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { - var profileTypeEntityService, profileType, profileTypeService, monthlyForecast; + function _populateData() { + _populateData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { + var consumptionService, performanceIndicatorService, periods, fetchedPerformanceIndicators, hasValidPI; return _regenerator.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: - profileTypeEntityService = new _profileTypeEntity.default(client); - _context.next = 3; - return profileTypeEntityService.getProfileType(analysisMonth.minus({ - month: 1 - }).startOf('month')); - - case 3: - profileType = _context.sent; - - if (!(profileType !== null)) { - _context.next = 10; - break; - } - - profileTypeService = new _profileType.default(profileType, client, analysisMonth.minus({ - month: 1 - }).year); - _context.next = 8; - return profileTypeService.getMonthlyForecast(analysisMonth.minus({ - month: 1 - }).startOf('month').month); + setLoadAnalysis(true); + consumptionService = new _consumption.default(client); + performanceIndicatorService = new _performanceIndicator.default(); + periods = { + timePeriod: { + startDate: analysisMonth.minus({ + month: 1 + }).startOf('month'), + endDate: analysisMonth.minus({ + month: 1 + }).endOf('month') + }, + comparisonTimePeriod: { + startDate: analysisMonth.minus({ + month: 2 + }).startOf('month'), + endDate: analysisMonth.minus({ + month: 2 + }).endOf('month') + } + }; + _context.next = 6; + return consumptionService.getPerformanceIndicators(periods.timePeriod, _timeStep.TimeStep.MONTH, fluidTypes, periods.comparisonTimePeriod); - case 8: - monthlyForecast = _context.sent; + case 6: + fetchedPerformanceIndicators = _context.sent; if (subscribed) { - setForecast(monthlyForecast); - - if (monthlyForecast) { - getTotalValueWithConnectedFluids(monthlyForecast); + if (fetchedPerformanceIndicators) { + setPerformanceIndicators(fetchedPerformanceIndicators); + setLoadAnalysis(false); + hasValidPI = fetchedPerformanceIndicators.some(function (pi) { + return pi === null || pi === void 0 ? void 0 : pi.value; + }); + if (hasValidPI) setLoadAnalysis(true); + setAggregatedPerformanceIndicators(performanceIndicatorService.aggregatePerformanceIndicators(fetchedPerformanceIndicators)); } - setIsLoading(false); + setLoadAnalysis(false); } - case 10: + case 8: case "end": return _context.stop(); } } }, _callee); })); - return _loadAverageConsumption.apply(this, arguments); + return _populateData.apply(this, arguments); } - loadAverageConsumption(); + populateData(); return function () { + saveLastScrollPosition(); subscribed = false; }; - }, [profile.monthlyAnalysisDate.month, getTotalValueWithConnectedFluids, client, analysisMonth.month, analysisMonth]); - - var profileNotCompleted = /*#__PURE__*/_react.default.createElement("div", { - className: "no-profile" - }, /*#__PURE__*/_react.default.createElement("div", { - className: "text-16-normal" - }, t('analysis.approximative_description')), /*#__PURE__*/_react.default.createElement(_Button.default, { - "aria-label": t('analysis.accessibility.button_go_to_profil'), - onClick: function onClick() { - return navigate('/profileType'); - }, - classes: { - root: 'btn-highlight', - label: 'text-18-bold' + }, [client, fluidTypes, analysisMonth, saveLastScrollPosition]); + (0, _react.useEffect)(function () { + if (!loadAnalysis) { + var app = document.querySelector('.app-content'); + window.scrollTo(0, scrollPosition); + app === null || app === void 0 ? void 0 : app.scrollTo(0, scrollPosition); } - }, t('analysis.accessibility.button_go_to_profil')), /*#__PURE__*/_react.default.createElement(_Icon.default, { - icon: _noProfilePlaceholder.default, - width: "100%", - height: "60%", - alt: "pas de profil remplis" - })); - - var Consumption = /*#__PURE__*/_react.default.createElement("div", { - className: "analysis-graph" - }, isLoading ? /*#__PURE__*/_react.default.createElement("div", { - className: "loader-container" - }, /*#__PURE__*/_react.default.createElement(_Loader.default, null)) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", { - className: "consumption-title text-20-bold" + }, [loadAnalysis, scrollPosition]); + return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, loadAnalysis && /*#__PURE__*/_react.default.createElement("div", { + className: "analysis-container-spinner", + "aria-busy": "true" + }, /*#__PURE__*/_react.default.createElement(_Loader.default, null)), !loadAnalysis && /*#__PURE__*/_react.default.createElement("div", { + className: "analysis-root black" + }, fluidTypes.length >= 1 ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", { + className: "analysis-content" + }, /*#__PURE__*/_react.default.createElement(_ComparisonView.default, { + fluidConfig: fluidConfig + })), /*#__PURE__*/_react.default.createElement("div", { + className: "analysis-content" }, /*#__PURE__*/_react.default.createElement("div", { - className: "user-title" - }, t('analysis.user_consumption')), /*#__PURE__*/_react.default.createElement("div", { - className: "average-title" - }, t("analysis.comparison"))), /*#__PURE__*/_react.default.createElement("div", { - className: "consumption-price" - }, /*#__PURE__*/_react.default.createElement(_ProfileComparatorRow.default, { - fluid: _fluid.FluidType.MULTIFLUID, - userPriceConsumption: userPriceConsumption, - homePriceConsumption: homePriceConsumption, - performanceValue: null, - forecast: forecast, - connected: fluidsWithData.length > 0, - noData: false - })), fluidsWithData.map(function (fluid) { - var _performanceIndicator2; - - return Boolean((_performanceIndicator2 = performanceIndicators[fluid]) === null || _performanceIndicator2 === void 0 ? void 0 : _performanceIndicator2.value) && /*#__PURE__*/_react.default.createElement(_ProfileComparatorRow.default, { - key: fluid, - fluid: fluid, - userPriceConsumption: userPriceConsumption, - homePriceConsumption: homePriceConsumption, - performanceValue: performanceIndicators[fluid].value, - forecast: forecast, - connected: true, - noData: false - }); - }), fluidsWithData.length < 3 && /*#__PURE__*/_react.default.createElement("hr", { - className: "consumption-sep" - }), disconnectedFluidTypes.map(function (fluid) { - return /*#__PURE__*/_react.default.createElement(_ProfileComparatorRow.default, { - key: fluid, - fluid: fluid, - userPriceConsumption: userPriceConsumption, - homePriceConsumption: homePriceConsumption, - performanceValue: null, - forecast: forecast, - connected: false, - noData: false - }); - }), emptyFluidTypes.map(function (fluid) { - return /*#__PURE__*/_react.default.createElement(_ProfileComparatorRow.default, { - key: fluid, - fluid: fluid, - userPriceConsumption: userPriceConsumption, - homePriceConsumption: homePriceConsumption, - performanceValue: null, - forecast: forecast, - connected: false, - noData: true - }); - }), /*#__PURE__*/_react.default.createElement(_core.Accordion, { - expanded: activeAverageHome, - onChange: toggleAccordion, - classes: { - root: 'expansion-panel-root' - } - }, /*#__PURE__*/_react.default.createElement(_core.AccordionSummary, { - "aria-label": t('profile_type.accessibility.button_toggle_average_home'), - expandIcon: /*#__PURE__*/_react.default.createElement(_Icon.default, { - icon: _chevronDown.default, - size: 16, - className: "accordion-icon" - }), - classes: { - root: 'expansion-panel-summary', - content: 'expansion-panel-content' - } + className: "card rich-card" + }, /*#__PURE__*/_react.default.createElement(_TotalAnalysisChart.default, { + fluidTypes: fluidTypes + }))), /*#__PURE__*/_react.default.createElement("div", { + className: "analysis-content" }, /*#__PURE__*/_react.default.createElement("div", { - className: "accordion-title accordion-title" - }, t('analysis.average_home'))), /*#__PURE__*/_react.default.createElement(_core.AccordionDetails, { - classes: { - root: 'expansion-panel-details' - } - }, /*#__PURE__*/_react.default.createElement("span", { - className: "accordion-desc text-16-normal" - }, t('analysis.average_home_description')))))); + className: "card rich-card" + }, /*#__PURE__*/_react.default.createElement(_MaxConsumptionCard.default, null))), /*#__PURE__*/_react.default.createElement("div", { + className: "analysis-content" + }, /*#__PURE__*/_react.default.createElement("div", { + className: "card rich-card" + }, /*#__PURE__*/_react.default.createElement(_AnalysisConsumption.default, { + aggregatedPerformanceIndicator: aggregatedPerformanceIndicators, + performanceIndicators: performanceIndicators + }))), fluidTypes.includes(_fluid.FluidType.ELECTRICITY) && /*#__PURE__*/_react.default.createElement("div", { + className: "analysis-content" + }, /*#__PURE__*/_react.default.createElement("div", { + className: "card" + }, /*#__PURE__*/_react.default.createElement(_ElecHalfHourMonthlyAnalysis.default, { + perfIndicator: performanceIndicators[_fluid.FluidType.ELECTRICITY] + })))) : /*#__PURE__*/_react.default.createElement(_AnalysisErrorModal.default, null))); +}; - return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", { - className: "status-header" - }, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_StyledIcon.default, { - icon: _analysis.default, - size: 44 - }), /*#__PURE__*/_react.default.createElement("p", { - className: "text-16-normal" - }, t('analysis.compare.title'))), profile.isProfileTypeCompleted && /*#__PURE__*/_react.default.createElement(_Button.default, { - "aria-label": t('analysis.accessibility.button_go_to_profil'), - onClick: function onClick() { - return navigate('/profileType'); - }, - classes: { - root: 'btn-secondary-negative', - label: 'text-16-normal' - } - }, /*#__PURE__*/_react.default.createElement(_StyledIcon.default, { - icon: _profileEdit.default, - size: 40 - }))), /*#__PURE__*/_react.default.createElement("div", { - className: "analysis-graph" - }, !profile.isProfileTypeCompleted && profileNotCompleted, profile.isProfileTypeCompleted && Consumption)); -}; - -var _default = ProfileComparator; +var _default = MonthlyAnalysis; exports.default = _default; /***/ }), -/***/ "n95a": +/***/ "Ydja": +/***/ (function(module, exports, __webpack_require__) { + + +var content = __webpack_require__("zkQu"); + +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) {} + +/***/ }), + +/***/ "bIeq": +/***/ (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": "graph-icon_2f4fcee3111e5412592d47b4ca4c51a9", + "use": "graph-icon_2f4fcee3111e5412592d47b4ca4c51a9-usage", + "viewBox": "0 0 44 44", + "content": "<symbol viewBox=\"0 0 44 44\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" id=\"graph-icon_2f4fcee3111e5412592d47b4ca4c51a9\">\n<path d=\"M0 29C0 26.7909 1.79086 25 4 25H6.75556C8.96469 25 10.7556 26.7909 10.7556 29V44H0V29Z\" fill=\"#FFF1C5\" />\n<path d=\"M0 29C0 26.7909 1.79086 25 4 25H6.75556C8.96469 25 10.7556 26.7909 10.7556 29V44H0V29Z\" fill=\"#261C14\" fill-opacity=\"0.65\" />\n<path d=\"M16.6221 4C16.6221 1.79086 18.4129 0 20.6221 0H23.3776C25.5868 0 27.3776 1.79086 27.3776 4V44H16.6221V4Z\" fill=\"#E3B82A\" />\n<path d=\"M33.2446 17C33.2446 14.7909 35.0355 13 37.2446 13H40.0002C42.2093 13 44.0002 14.7909 44.0002 17V44H33.2446V17Z\" fill=\"#FFF1C5\" />\n<path d=\"M33.2446 17C33.2446 14.7909 35.0355 13 37.2446 13H40.0002C42.2093 13 44.0002 14.7909 44.0002 17V44H33.2446V17Z\" fill=\"#261C14\" fill-opacity=\"0.65\" />\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); + +/***/ }), + +/***/ "h9MM": +/***/ (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.analysis-graph {\n margin-top: 1.5rem;\n}\n.analysis-graph .consumption-title {\n display: flex;\n justify-content: space-between;\n margin-bottom: 2rem;\n gap: 2rem;\n}\n.analysis-graph .consumption-title .user-title,\n.analysis-graph .consumption-title .average-title {\n flex-basis: 50%;\n}\n.analysis-graph .consumption-title .user-title {\n text-align: right;\n color: #e3b82a;\n}\n.analysis-graph .consumption-title .average-title {\n color: #bfcce4;\n}\n.analysis-graph div.expansion-panel-root {\n border: solid 2px #bfcce4;\n color: #bfcce4;\n}\n.analysis-graph .accordion-title {\n font-weight: bold;\n}\n.analysis-graph .accordion-desc {\n color: #e0e0e0;\n}\n.analysis-graph div.expansion-panel-summary {\n padding: 0 1rem;\n}\n.analysis-graph .loader-container {\n min-height: 350px;\n display: flex;\n justify-content: center;\n align-items: center;\n margin: auto;\n}\n.analysis-graph .accordion-icon {\n color: #bfcce4;\n}\n\n.no-profile {\n display: flex;\n align-items: center;\n flex-direction: column;\n gap: 1rem;\n}\n.no-profile div {\n text-align: center;\n color: #ffffff;\n}\n.no-profile button {\n max-width: 320px;\n margin-top: 0;\n}\n\n.grid-align div {\n display: grid;\n grid-template-columns: 20px 1fr;\n grid-gap: 10px;\n padding: 0 10px;\n align-items: center;\n height: 32px;\n}\n@media only screen and (max-width : 768px) {\n .grid-align div {\n height: 48px;\n }\n}\n.grid-align span:first-child {\n grid-column: 1;\n align-self: center;\n}", ""]); + + + +/***/ }), + +/***/ "i5Z7": +/***/ (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.special-elec-container {\n color: white;\n}\n.special-elec-container .elec-icon {\n margin: auto;\n display: block;\n}\n.special-elec-container .title {\n text-align: center;\n margin-top: 1rem;\n color: #e0e0e0;\n}\n.special-elec-container .navigator {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n text-align: center;\n margin: 1rem 0;\n}\n.special-elec-container .navigator .text-1 {\n color: #e0e0e0;\n}\n.special-elec-container .navigator .week {\n color: #e2bca1;\n}\n.special-elec-container .navigator .weekend {\n color: #ffd597;\n}\n.special-elec-container .minIcon {\n margin: auto 0.8rem auto 0;\n}\n.special-elec-container .activation-text {\n margin: 1rem 0 0.7rem 0;\n}\n.special-elec-container .oauthform-button-content {\n display: flex;\n padding: 0.5rem;\n}\n.special-elec-container .oauthform-button-text {\n text-align: left;\n margin-left: 1rem;\n}\n.special-elec-container .container {\n margin-bottom: 1rem;\n padding: 1rem;\n border: 1px solid #e0e0e0;\n border-radius: 10px;\n display: flex;\n}\n.special-elec-container .container .min {\n max-width: 150px;\n}\n.special-elec-container .container .text {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n}\n.special-elec-container .container .value {\n margin-left: auto;\n display: flex;\n flex-direction: column;\n align-items: self-end;\n min-width: 80px;\n justify-content: space-between;\n}\n.special-elec-container .container .kvAval {\n margin: auto 0 auto auto;\n}\n.special-elec-container .consomin {\n min-height: 100px;\n}\n.special-elec-container .no_data {\n text-align: center;\n color: white;\n}\n.special-elec-container .showmodal {\n cursor: pointer;\n margin: 1.5rem 0 0.5rem;\n text-align: center;\n color: #e0e0e0;\n text-decoration: underline;\n}\n\n.graph-elec-half-hour {\n height: 12rem;\n margin-top: 2rem;\n}", ""]); + + + +/***/ }), + +/***/ "iaBB": +/***/ (function(module, exports, __webpack_require__) { + + +var content = __webpack_require__("pvrO"); + +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) {} + +/***/ }), + +/***/ "l5Ue": /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2094,7 +2168,7 @@ var _Icon = _interopRequireDefault(__webpack_require__("y6ex")); var _react = _interopRequireDefault(__webpack_require__("q1tI")); -__webpack_require__("NhJV"); +__webpack_require__("qTcw"); var ElecInfoModal = function ElecInfoModal(_ref) { var open = _ref.open, @@ -2138,59 +2212,152 @@ exports.default = _default; /***/ }), -/***/ "nsEu": +/***/ "lZiS": /***/ (function(module, exports, __webpack_require__) { +"use strict"; -var content = __webpack_require__("UWzl"); -if(typeof content === 'string') content = [[module.i, content, '']]; +var _interopRequireDefault = __webpack_require__("TqRt"); -var transform; -var insertInto; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +var _defineProperty2 = _interopRequireDefault(__webpack_require__("lSNA")); +var _euroIcon = _interopRequireDefault(__webpack_require__("vgwG")); -var options = {"hmr":true} +var _classnames = _interopRequireDefault(__webpack_require__("TSYQ")); -options.transform = transform -options.insertInto = undefined; +var _StyledIcon = _interopRequireDefault(__webpack_require__("I07j")); -var update = __webpack_require__("aET+")(content, options); +var _I18n = __webpack_require__("buk/"); -if(content.locals) module.exports = content.locals; +var _fluid2 = __webpack_require__("5Wkc"); -if(false) {} +var _react = _interopRequireDefault(__webpack_require__("q1tI")); -/***/ }), +var _converter = _interopRequireDefault(__webpack_require__("LXmx")); -/***/ "oXWw": -/***/ (function(module, exports, __webpack_require__) { +var _picto = __webpack_require__("6DBe"); +var _utils = __webpack_require__("c+yx"); -var content = __webpack_require__("3/0l"); +__webpack_require__("pbT4"); -if(typeof content === 'string') content = [[module.i, content, '']]; +var AnalysisConsumptionRow = function AnalysisConsumptionRow(_ref) { + var fluid = _ref.fluid, + userPriceConsumption = _ref.userPriceConsumption, + homePriceConsumption = _ref.homePriceConsumption, + performanceValue = _ref.performanceValue, + forecast = _ref.forecast, + connected = _ref.connected, + noData = _ref.noData; -var transform; -var insertInto; + var _useI18n = (0, _I18n.useI18n)(), + t = _useI18n.t; + var converterService = new _converter.default(); + var maxPriceConsumption = Math.max(userPriceConsumption, homePriceConsumption); + var fluidLoad = forecast && fluid !== _fluid2.FluidType.MULTIFLUID ? forecast.fluidForecast[fluid].load : 0; + var formatFluidConsumptionForConso = function formatFluidConsumptionForConso(_fluid) { + if (_fluid === _fluid2.FluidType.MULTIFLUID) { + return "".concat((0, _utils.formatNumberValues)(userPriceConsumption).toString(), " \u20AC"); + } else { + if (performanceValue) { + // keeps unit in kWh for electricity and gas + if (_fluid === _fluid2.FluidType.ELECTRICITY || _fluid === _fluid2.FluidType.GAS) { + return "".concat(Math.round(performanceValue), " ").concat(t("FLUID.".concat(_fluid2.FluidType[_fluid], ".UNIT"))); + } -var options = {"hmr":true} + return performanceValue >= 1000 || fluidLoad >= 1000 ? (0, _utils.formatNumberValues)(performanceValue / 1000).toString() + ' ' + t("FLUID.".concat(_fluid2.FluidType[_fluid], ".MEGAUNIT")) : Math.round(performanceValue) + ' ' + t("FLUID.".concat(_fluid2.FluidType[_fluid], ".UNIT")); + } else { + return '-'; + } + } + }; -options.transform = transform -options.insertInto = undefined; + var formatFluidConsumptionForForecast = function formatFluidConsumptionForForecast(_fluid) { + if (_fluid === _fluid2.FluidType.MULTIFLUID) { + return "".concat((0, _utils.formatNumberValues)(homePriceConsumption).toString(), " \u20AC"); + } else { + // keeps unit in kWh for electricity and gas + if (_fluid === _fluid2.FluidType.ELECTRICITY || _fluid === _fluid2.FluidType.GAS) { + return "".concat(Math.round(fluidLoad), " ").concat(t("FLUID.".concat(_fluid2.FluidType[_fluid], ".UNIT"))); + } -var update = __webpack_require__("aET+")(content, options); + return performanceValue && performanceValue >= 1000 || fluidLoad >= 1000 ? (0, _utils.formatNumberValues)(fluidLoad / 1000).toString() + ' ' + t("FLUID.".concat(_fluid2.FluidType[_fluid], ".MEGAUNIT")) : Math.round(fluidLoad) + ' ' + t("FLUID.".concat(_fluid2.FluidType[_fluid], ".UNIT")); + } + }; -if(content.locals) module.exports = content.locals; + var getWidthForConso = function getWidthForConso(_fluid) { + if (_fluid === _fluid2.FluidType.MULTIFLUID) { + return "".concat(userPriceConsumption / maxPriceConsumption * 100, "%"); + } else { + return "".concat(converterService.LoadToEuro(performanceValue || 0, _fluid) / maxPriceConsumption * 100, "%"); + } + }; -if(false) {} + var getWidthForForecast = function getWidthForForecast(_fluid) { + if (_fluid === _fluid2.FluidType.MULTIFLUID) { + return "".concat(homePriceConsumption / maxPriceConsumption * 100, "%"); + } else { + var fluidValue = forecast ? forecast.fluidForecast[_fluid].value : 0; + return "".concat(fluidValue / maxPriceConsumption * 100, "%"); + } + }; + + var comparaisonText; + + if (connected) { + comparaisonText = formatFluidConsumptionForConso(fluid); + } else if (noData) { + comparaisonText = t("analysis.no_data_2"); + } else { + comparaisonText = t("analysis.not_connected"); + } + + return /*#__PURE__*/_react.default.createElement("div", { + className: "consumption-".concat(_fluid2.FluidType[fluid].toLowerCase(), " analysisRow") + }, /*#__PURE__*/_react.default.createElement("div", { + className: "user-graph" + }, /*#__PURE__*/_react.default.createElement("div", { + className: (0, _classnames.default)('price', 'text-15-bold', (0, _defineProperty2.default)({}, 'not-connected', !connected || noData)) + }, comparaisonText), /*#__PURE__*/_react.default.createElement("div", { + className: "container-graph" + }, connected && /*#__PURE__*/_react.default.createElement("div", { + className: "graph", + style: { + width: getWidthForConso(fluid) + } + }))), /*#__PURE__*/_react.default.createElement("div", { + className: "icon-container" + }, /*#__PURE__*/_react.default.createElement(_StyledIcon.default, { + icon: fluid === _fluid2.FluidType.MULTIFLUID ? _euroIcon.default : (0, _picto.getPicto)(fluid, true), + size: 22 + })), /*#__PURE__*/_react.default.createElement("div", { + className: "average-graph" + }, /*#__PURE__*/_react.default.createElement("div", { + className: "container-graph" + }, connected && /*#__PURE__*/_react.default.createElement("div", { + className: "graph", + style: { + width: getWidthForForecast(fluid) + } + })), /*#__PURE__*/_react.default.createElement("div", { + className: (0, _classnames.default)('price', 'text-15-bold', (0, _defineProperty2.default)({}, 'not-connected', !connected)) + }, formatFluidConsumptionForForecast(fluid)))); +}; + +var _default = AnalysisConsumptionRow; +exports.default = _default; /***/ }), -/***/ "s76r": +/***/ "lvg8": /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2203,15 +2370,201 @@ Object.defineProperty(exports, "__esModule", { }); exports.default = void 0; -var _toConsumableArray2 = _interopRequireDefault(__webpack_require__("RIqP")); +var _Button = _interopRequireDefault(__webpack_require__("FtsS")); -var _AxisBottom = _interopRequireDefault(__webpack_require__("ZUUJ")); +var _Dialog = _interopRequireDefault(__webpack_require__("HhgX")); -var _AxisRight = _interopRequireDefault(__webpack_require__("0bt6")); +var _I18n = __webpack_require__("buk/"); -var _Bar = _interopRequireDefault(__webpack_require__("qOdy")); +var _react = _interopRequireDefault(__webpack_require__("q1tI")); -var _useChartResize2 = __webpack_require__("tWvI"); +var _reactRouterDom = __webpack_require__("SOjZ"); + +__webpack_require__("7ttY"); + +var AnalysisErrorModal = function AnalysisErrorModal() { + var _useI18n = (0, _I18n.useI18n)(), + t = _useI18n.t; + + var navigate = (0, _reactRouterDom.useNavigate)(); + + var goToConsumption = function goToConsumption() { + navigate('/consumption'); + }; + + var goBack = function goBack() { + if (history.length <= 2) { + navigate('/consumption'); + } else navigate(-1); + }; + + return /*#__PURE__*/_react.default.createElement(_Dialog.default, { + open: true, + onClose: function onClose(event, reason) { + event && reason !== 'backdropClick' && goBack(); + }, + disableEscapeKeyDown: true, + "aria-labelledby": 'accessibility-title', + classes: { + root: 'modal-root', + paper: 'modal-paper' + } + }, /*#__PURE__*/_react.default.createElement("div", { + id: 'accessibility-title' + }, t('analysis_error_modal.accessibility.window_title')), /*#__PURE__*/_react.default.createElement("div", { + className: "em-root analysis-error-container" + }, /*#__PURE__*/_react.default.createElement("div", { + className: "em-content" + }, /*#__PURE__*/_react.default.createElement("div", { + className: "analysis-error-title text-20-bold" + }, t('analysis_error_modal.title')), /*#__PURE__*/_react.default.createElement("div", { + className: "analysis-error-message text-16-normal" + }, t('analysis_error_modal.message')), /*#__PURE__*/_react.default.createElement("div", { + className: "analysis-error-button" + }, /*#__PURE__*/_react.default.createElement(_Button.default, { + "aria-label": t('analysis_error_modal.accessibility.button_go_back'), + onClick: goBack, + classes: { + root: 'btn-secondary-positive', + label: 'text-16-normal' + } + }, t('analysis_error_modal.go_back')), /*#__PURE__*/_react.default.createElement(_Button.default, { + "aria-label": t('analysis_error_modal.accessibility.button_goto_konnector'), + onClick: goToConsumption, + classes: { + root: 'btn-highlight', + label: 'text-16-bold' + } + }, t('analysis_error_modal.go_to_options')))))); +}; + +var _default = AnalysisErrorModal; +exports.default = _default; + +/***/ }), + +/***/ "mSKR": +/***/ (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.analysis-root.black .modal-overlay .modal-close-button {\n display: none;\n}\n\n.analysis-error-container {\n border-radius: 4px;\n margin-bottom: 1rem;\n color: #e0e0e0;\n text-align: center;\n}\n.analysis-error-container .analysis-error-title {\n color: #e3b82a;\n margin-bottom: 2rem;\n}\n.analysis-error-container .analysis-error-button {\n display: flex;\n justify-content: space-between;\n gap: 1rem;\n margin-top: 2rem;\n}\n.analysis-error-container .analysis-error-button button {\n margin: 0;\n}\n.analysis-error-container .analysis-error-button button.btn-highlight, .analysis-error-container .analysis-error-button button.btn-secondary-positive {\n width: 45%;\n margin-bottom: 0;\n}\n.analysis-error-container .analysis-error-button button.btn-secondary-positive {\n padding: 0.5rem 1rem;\n}\n.analysis-error-container .analysis-error-button button.btn-highlight {\n padding: 0.25rem 0.5rem;\n}\n@media only screen and (max-width : 768px) {\n .analysis-error-container .analysis-error-button {\n flex-direction: column-reverse;\n }\n .analysis-error-container .analysis-error-button button.btn-highlight, .analysis-error-container .analysis-error-button button.btn-secondary-positive {\n margin-bottom: 0;\n width: 100%;\n height: 45px;\n }\n}\n\n#accessibility-title {\n display: none;\n}", ""]); + + + +/***/ }), + +/***/ "oXWw": +/***/ (function(module, exports, __webpack_require__) { + + +var content = __webpack_require__("3/0l"); + +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) {} + +/***/ }), + +/***/ "pbT4": +/***/ (function(module, exports, __webpack_require__) { + + +var content = __webpack_require__("69HH"); + +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) {} + +/***/ }), + +/***/ "pvrO": +/***/ (function(module, exports, __webpack_require__) { + +exports = module.exports = __webpack_require__("JPst")(false); +// Module +exports.push([module.i, ".comparisonView {\n display: flex;\n flex-direction: column;\n}\n.comparisonView .tabs {\n display: flex;\n flex-direction: row;\n gap: 8px;\n}\n.comparisonView .tabs button {\n flex-grow: 1;\n background: linear-gradient(0deg, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.1)), linear-gradient(180deg, #323339 0%, #25262b 100%);\n border-radius: 4px 4px 0px 0px;\n color: #ffffff;\n text-transform: none;\n font-size: 0.75rem;\n line-height: 1.3;\n padding: 0.5rem 0;\n box-shadow: 6px 0px 12px rgba(0, 0, 0, 0.3);\n}\n.comparisonView .tabs button.active {\n background: #5e5e5e;\n}\n.comparisonView .performanceIndicators {\n display: flex;\n flex-direction: column;\n gap: 10px;\n background: linear-gradient(180deg, #323339 0%, #25262b 100%);\n border: 1px solid #5e5e5e;\n border-radius: 0px 0px 4px 4px;\n padding: 1rem;\n}", ""]); + + + +/***/ }), + +/***/ "qTcw": +/***/ (function(module, exports, __webpack_require__) { + + +var content = __webpack_require__("JvyT"); + +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) {} + +/***/ }), + +/***/ "qrnv": +/***/ (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 _useChartResize2 = __webpack_require__("tWvI"); var _d3Scale = __webpack_require__("ziQ1"); @@ -2223,7 +2576,7 @@ var _luxon = __webpack_require__("ExVU"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -__webpack_require__("Ogrm"); +__webpack_require__("70Bo"); 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); } @@ -2310,11 +2663,11 @@ exports.default = _default; /***/ }), -/***/ "uXBk": +/***/ "u5Ob": /***/ (function(module, exports, __webpack_require__) { -var content = __webpack_require__("KCn3"); +var content = __webpack_require__("h9MM"); if(typeof content === 'string') content = [[module.i, content, '']]; @@ -2336,12 +2689,90 @@ if(false) {} /***/ }), -/***/ "ubKy": +/***/ "uqkh": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__("TqRt"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _StyledIcon = _interopRequireDefault(__webpack_require__("I07j")); + +var _I18n = __webpack_require__("buk/"); + +var _fluid = __webpack_require__("5Wkc"); + +var _react = _interopRequireDefault(__webpack_require__("q1tI")); + +var _picto = __webpack_require__("6DBe"); + +var _utils = __webpack_require__("c+yx"); + +__webpack_require__("BgT8"); + +var FluidPerformanceIndicator = function FluidPerformanceIndicator(_ref) { + var performanceIndicator = _ref.performanceIndicator, + fluidType = _ref.fluidType, + comparisonDate = _ref.comparisonDate; + + var _useI18n = (0, _I18n.useI18n)(), + t = _useI18n.t; + + var iconType = (0, _picto.getPicto)(fluidType); + var displayedValue = performanceIndicator !== null && performanceIndicator !== void 0 && performanceIndicator.value ? (0, _utils.formatNumberValues)(performanceIndicator.value).toString() : ''; + var positive = (performanceIndicator === null || performanceIndicator === void 0 ? void 0 : performanceIndicator.percentageVariation) && (performanceIndicator === null || performanceIndicator === void 0 ? void 0 : performanceIndicator.percentageVariation) > 0; + + var percentSwitch = function percentSwitch(percentage) { + if (positive) { + return "+".concat((0, _utils.formatNumberValues)(percentage * 100), " %"); + } else { + return "-".concat((0, _utils.formatNumberValues)(Math.abs(percentage) * 100), " %"); + } + }; + + return /*#__PURE__*/_react.default.createElement("div", { + className: "fpi" + }, /*#__PURE__*/_react.default.createElement(_StyledIcon.default, { + icon: iconType, + size: 50 + }), /*#__PURE__*/_react.default.createElement("div", { + className: "fpi-content" + }, !displayedValue && /*#__PURE__*/_react.default.createElement("div", { + className: "fpi-content-no-data" + }, /*#__PURE__*/_react.default.createElement("span", null, t('performance_indicator.fpi.no_data'))), displayedValue && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", { + className: "fpi-value" + }, /*#__PURE__*/_react.default.createElement("span", { + className: "fpi-load" + }, displayedValue), /*#__PURE__*/_react.default.createElement("span", { + className: "fpi-unit" + }, t('FLUID.' + _fluid.FluidType[fluidType] + '.UNIT'))), (performanceIndicator === null || performanceIndicator === void 0 ? void 0 : performanceIndicator.percentageVariation) === null && /*#__PURE__*/_react.default.createElement("span", { + className: "fpi-no-comparison" + }, t('performance_indicator.fpi.no_comparison')), (performanceIndicator === null || performanceIndicator === void 0 ? void 0 : performanceIndicator.percentageVariation) !== null && /*#__PURE__*/_react.default.createElement("div", { + className: "fpi-comparison" + }, /*#__PURE__*/_react.default.createElement("span", { + className: "percent ".concat(positive ? 'positive' : 'negative') + }, percentSwitch(performanceIndicator.percentageVariation)), /*#__PURE__*/_react.default.createElement("span", { + className: "fpi-comparison-date" + }, " / ".concat((0, _utils.getMonthName)(comparisonDate), " ").concat(comparisonDate.year)))))); +}; + +var _default = FluidPerformanceIndicator; +exports.default = _default; + +/***/ }), + +/***/ "v3DR": /***/ (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.max-consumption-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n color: #ffffff;\n}\n.max-consumption-container .title {\n color: #e0e0e0;\n margin: 1rem 0 0.7rem 0;\n text-align: center;\n}\n.max-consumption-container .fluid-navigation {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n}\n.max-consumption-container .fluid-navigation div {\n font-weight: 900;\n}\n.max-consumption-container .fluid {\n min-width: 120px;\n text-align: center;\n margin: auto;\n}\n.max-consumption-container .electricity {\n color: #d87b39;\n}\n.max-consumption-container .water {\n color: #3a98ec;\n}\n.max-consumption-container .gas {\n color: #45d1b8;\n}\n.max-consumption-container .no_data {\n color: white;\n}\n.max-consumption-container .data-container {\n min-height: 130px;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n align-items: center;\n}\n.max-consumption-container .data-container .loaderContainer {\n height: 22rem;\n display: flex;\n}\n.max-consumption-container .data-container .maxDay-date {\n text-transform: capitalize;\n margin: 0.5rem 0;\n text-align: center;\n}\n.max-consumption-container .data-container .maxDay-load span {\n font-size: 2rem;\n font-weight: 700;\n}\n\n.dataloadvisualizer-section {\n display: flex;\n flex-direction: column;\n align-items: center;\n}", ""]); +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.fi-root {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 0.5rem 1.5rem;\n}\n@media only screen and (max-width : 768px) {\n .fi-root {\n margin-bottom: 0;\n }\n}\n.fi-root .fi-content {\n min-height: 23.875rem;\n width: 45.75rem;\n}\n@media only screen and (max-width : 768px) {\n .fi-root .fi-content {\n width: 100%;\n }\n}\n.fi-root .fi-content .fi-header {\n margin-top: 1rem;\n margin-bottom: 1.25rem;\n color: #e0e0e0;\n font-size: 1rem;\n}\n\n.fpi {\n display: flex;\n flex-direction: row;\n border: 1px solid #7b7b7b;\n border-radius: 4px;\n padding: 16px 22px;\n gap: 1rem;\n align-items: center;\n}\n.fpi .fpi-content .fpi-value .fpi-load {\n font-size: 1.75rem;\n font-weight: 900;\n margin-right: 4px;\n color: #ffffff;\n}\n.fpi .fpi-content .fpi-value .fpi-unit {\n font-size: 1.125rem;\n color: #e0e0e0;\n}\n.fpi .fpi-content .fpi-comparison .percent {\n font-weight: 700;\n}\n.fpi .fpi-content .fpi-comparison .percent.positive {\n color: #d25959;\n}\n.fpi .fpi-content .fpi-comparison .percent.negative {\n color: #7fd771;\n}\n.fpi .fpi-content .fpi-comparison .fpi-comparison-date {\n color: #a0a0a0;\n}\n.fpi .fpi-content .fpi-no-comparison {\n font-size: 0.875rem;\n color: #a0a0a0;\n}\n.fpi .fpi-content .fpi-content-no-data {\n color: #e0e0e0;\n}", ""]); @@ -2391,385 +2822,25 @@ var result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WE /***/ }), -/***/ "y/Ga": +/***/ "vjLb": /***/ (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.totalAnalysis-container {\n display: flex;\n justify-content: center;\n flex-direction: column;\n color: white;\n}\n.totalAnalysis-container .title {\n text-align: center;\n color: #e0e0e0;\n margin-bottom: 1.5rem;\n}\n.totalAnalysis-container .pie-container {\n text-align: center;\n position: relative;\n margin: auto;\n overflow: visible;\n}\n.totalAnalysis-container svg {\n margin: auto;\n overflow: visible;\n}\n.totalAnalysis-container .pie-center {\n box-sizing: border-box;\n position: absolute;\n border-radius: 50%;\n background: #121212;\n z-index: 5;\n padding: 1rem;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n.totalAnalysis-container .pie-center .euro-unit {\n margin-left: 0.6rem;\n}\n.totalAnalysis-container .pie-center .date {\n text-transform: uppercase;\n color: #a0a0a0;\n display: inline-block;\n margin: 0.5rem 0;\n}\n.totalAnalysis-container .pie-center .estimated {\n display: block;\n text-decoration: underline;\n}\n.totalAnalysis-container .pie-center .circle {\n box-sizing: border-box;\n border: 1px solid #7b7b7b;\n position: absolute;\n border-radius: 50%;\n background: transparent;\n z-index: -1;\n padding: 1rem;\n}\n@media screen and (max-width: 345px) {\n .totalAnalysis-container .pie-center .circle {\n display: none;\n }\n}\n.totalAnalysis-container .total-card-container {\n display: flex;\n justify-content: center;\n margin-top: 1rem;\n}\n.totalAnalysis-container .total-card-container .total-card {\n margin: 1rem;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n@media screen and (max-width: 350px) {\n .totalAnalysis-container .total-card-container .total-card {\n margin: 0.5rem;\n }\n}\n.totalAnalysis-container .total-card-container .total-card svg {\n margin: 0.7rem 0;\n}\n@media screen and (max-width: 345px) {\n .totalAnalysis-container .text-36-bold {\n font-size: 1.6rem;\n }\n}\n@media screen and (max-width: 345px) {\n .totalAnalysis-container .date {\n font-size: 1rem;\n }\n}\n@media screen and (max-width: 365px) {\n .totalAnalysis-container .text-18-bold {\n font-size: 1rem;\n }\n}\n.totalAnalysis-container .estimation-text {\n cursor: pointer;\n}", ""]); -var content = __webpack_require__("CmP6"); - -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) {} /***/ }), -/***/ "zEMi": +/***/ "zkQu": /***/ (function(module, exports, __webpack_require__) { -"use strict"; - - -var _interopRequireDefault = __webpack_require__("TqRt"); +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.max-consumption-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n color: #ffffff;\n}\n.max-consumption-container .title {\n color: #e0e0e0;\n margin: 1rem 0 0.7rem 0;\n text-align: center;\n}\n.max-consumption-container .fluid-navigation {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n}\n.max-consumption-container .fluid-navigation div {\n font-weight: 900;\n}\n.max-consumption-container .fluid {\n min-width: 120px;\n text-align: center;\n margin: auto;\n}\n.max-consumption-container .electricity {\n color: #d87b39;\n}\n.max-consumption-container .water {\n color: #3a98ec;\n}\n.max-consumption-container .gas {\n color: #45d1b8;\n}\n.max-consumption-container .no_data {\n color: white;\n}\n.max-consumption-container .data-container {\n min-height: 130px;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n align-items: center;\n}\n.max-consumption-container .data-container .loaderContainer {\n height: 22rem;\n display: flex;\n}\n.max-consumption-container .data-container .maxDay-date {\n text-transform: capitalize;\n margin: 0.5rem 0;\n text-align: center;\n}\n.max-consumption-container .data-container .maxDay-load span {\n font-size: 2rem;\n font-weight: 700;\n}\n\n.dataloadvisualizer-section {\n display: flex;\n flex-direction: column;\n align-items: center;\n}", ""]); -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _regenerator = _interopRequireDefault(__webpack_require__("o0o1")); - -var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__("yXPU")); - -var _slicedToArray2 = _interopRequireDefault(__webpack_require__("J4zp")); - -var _IconButton = _interopRequireDefault(__webpack_require__("o6Jd")); - -var _leftArrow = _interopRequireDefault(__webpack_require__("bZGv")); - -var _maxPower = _interopRequireDefault(__webpack_require__("BQYg")); - -var _minimum = _interopRequireDefault(__webpack_require__("G8GX")); - -var _rightArrow = _interopRequireDefault(__webpack_require__("fZGW")); - -var _Loader = _interopRequireDefault(__webpack_require__("Ra/y")); - -var _cozyClient = __webpack_require__("SH7X"); - -var _I18n = __webpack_require__("buk/"); - -var _Icon = _interopRequireDefault(__webpack_require__("y6ex")); - -var _fluid = __webpack_require__("5Wkc"); - -var _timeStep = __webpack_require__("cKQ8"); - -var _react = _interopRequireWildcard(__webpack_require__("q1tI")); - -var _consumption = _interopRequireDefault(__webpack_require__("AVq/")); - -var _enedisMonthlyAnalysisData = _interopRequireDefault(__webpack_require__("GrKv")); - -var _fluidsPrices = _interopRequireDefault(__webpack_require__("VjcQ")); - -var _hooks = __webpack_require__("Zlw4"); - -var _picto = __webpack_require__("6DBe"); - -var _ElecHalfHourChart = _interopRequireDefault(__webpack_require__("s76r")); - -var _ElecInfoModal = _interopRequireDefault(__webpack_require__("n95a")); - -__webpack_require__("Ogrm"); - -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 ElecHalfHourMonthlyAnalysis = function ElecHalfHourMonthlyAnalysis(_ref) { - var perfIndicator = _ref.perfIndicator; - - var _useI18n = (0, _I18n.useI18n)(), - t = _useI18n.t; - - var client = (0, _cozyClient.useClient)(); - - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { - return state.ecolyo.analysis; - }), - analysisMonth = _useAppSelector.analysisMonth; - - var _useState = (0, _react.useState)(true), - _useState2 = (0, _slicedToArray2.default)(_useState, 2), - isWeekend = _useState2[0], - setIsWeekend = _useState2[1]; - - var _useState3 = (0, _react.useState)(true), - _useState4 = (0, _slicedToArray2.default)(_useState3, 2), - isHalfHourActivated = _useState4[0], - setIsHalfHourActivated = _useState4[1]; - - var _useState5 = (0, _react.useState)(true), - _useState6 = (0, _slicedToArray2.default)(_useState5, 2), - isLoading = _useState6[0], - setIsLoading = _useState6[1]; - - var _useState7 = (0, _react.useState)(), - _useState8 = (0, _slicedToArray2.default)(_useState7, 2), - monthDataloads = _useState8[0], - setMonthDataloads = _useState8[1]; - - var _useState9 = (0, _react.useState)(), - _useState10 = (0, _slicedToArray2.default)(_useState9, 2), - enedisAnalysisValues = _useState10[0], - setEnedisAnalysisValues = _useState10[1]; - - var _useState11 = (0, _react.useState)(), - _useState12 = (0, _slicedToArray2.default)(_useState11, 2), - facturePercentage = _useState12[0], - setFacturePercentage = _useState12[1]; - - var _useState13 = (0, _react.useState)(), - _useState14 = (0, _slicedToArray2.default)(_useState13, 2), - elecPrice = _useState14[0], - setElecPrice = _useState14[1]; - - var _useState15 = (0, _react.useState)(false), - _useState16 = (0, _slicedToArray2.default)(_useState15, 2), - openInfoModal = _useState16[0], - setOpenInfoModal = _useState16[1]; - - var handleChangeWeek = (0, _react.useCallback)(function () { - setIsWeekend(function (prev) { - return !prev; - }); - }, []); - var toggleOpenModal = (0, _react.useCallback)(function () { - setOpenInfoModal(function (prev) { - return !prev; - }); - }, []); - var isDataFullyComplete = (0, _react.useCallback)(function (monthDataloads) { - var _monthDataloads$weeke, _monthDataloads$week$; - - if (monthDataloads !== null && monthDataloads !== void 0 && monthDataloads.weekend && monthDataloads.week && ((_monthDataloads$weeke = monthDataloads.weekend[0]) === null || _monthDataloads$weeke === void 0 ? void 0 : _monthDataloads$weeke.value) !== null && ((_monthDataloads$week$ = monthDataloads.week[0]) === null || _monthDataloads$week$ === void 0 ? void 0 : _monthDataloads$week$.value) !== null) { - return true; - } else return false; - }, []); - var getPowerChart = (0, _react.useCallback)(function () { - if (monthDataloads && isDataFullyComplete(monthDataloads)) { - return /*#__PURE__*/_react.default.createElement(_ElecHalfHourChart.default, { - dataLoad: isWeekend ? monthDataloads.weekend : monthDataloads.week, - isWeekend: isWeekend - }); - } else { - return /*#__PURE__*/_react.default.createElement("p", { - className: "text-20-bold no_data" - }, t('analysis.no_data')); - } - }, [isDataFullyComplete, isWeekend, monthDataloads, t]); - (0, _react.useEffect)(function () { - var subscribed = true; - - function fetchEnedisAnalysisData() { - return _fetchEnedisAnalysisData.apply(this, arguments); - } - - function _fetchEnedisAnalysisData() { - _fetchEnedisAnalysisData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { - var cs, isHalfHourLoadActivated, emas, aggregatedDate, data, aggregatedData, percentage; - return _regenerator.default.wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - cs = new _consumption.default(client); - _context.next = 3; - return cs.checkDoctypeEntries(_fluid.FluidType.ELECTRICITY, _timeStep.TimeStep.HALF_AN_HOUR); - - case 3: - isHalfHourLoadActivated = _context.sent; - - if (subscribed) { - _context.next = 6; - break; - } - - return _context.abrupt("return"); - - case 6: - if (!isHalfHourLoadActivated) { - _context.next = 15; - break; - } - - emas = new _enedisMonthlyAnalysisData.default(client); - aggregatedDate = analysisMonth.minus({ - month: 1 - }); - _context.next = 11; - return emas.getEnedisMonthlyAnalysisByDate(aggregatedDate.year, aggregatedDate.month); - - case 11: - data = _context.sent; - - if (data !== null && data !== void 0 && data.length) { - aggregatedData = emas.aggregateValuesToDataLoad(data[0]); - setEnedisAnalysisValues(data[0]); - setMonthDataloads(aggregatedData); - - if (data[0].minimumLoad && perfIndicator.value) { - percentage = data[0].minimumLoad / perfIndicator.value * 100; - setFacturePercentage(percentage); - } - } - - _context.next = 16; - break; - - case 15: - setIsHalfHourActivated(false); - - case 16: - setIsLoading(false); - - case 17: - case "end": - return _context.stop(); - } - } - }, _callee); - })); - return _fetchEnedisAnalysisData.apply(this, arguments); - } - - fetchEnedisAnalysisData(); - return function () { - subscribed = false; - }; - }, [analysisMonth, client, perfIndicator]); - (0, _react.useEffect)(function () { - var subscribed = true; - var fluidsPricesService = new _fluidsPrices.default(client); - - function getAllLastPrices() { - return _getAllLastPrices.apply(this, arguments); - } - - function _getAllLastPrices() { - _getAllLastPrices = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() { - var price; - return _regenerator.default.wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - _context2.next = 2; - return fluidsPricesService.getPrices(_fluid.FluidType.ELECTRICITY, analysisMonth.minus({ - month: 1 - })); - - case 2: - price = _context2.sent; - - if (subscribed && price) { - setElecPrice(price); - } - - case 4: - case "end": - return _context2.stop(); - } - } - }, _callee2); - })); - return _getAllLastPrices.apply(this, arguments); - } - - getAllLastPrices(); - return function () { - subscribed = false; - }; - }, [analysisMonth, client]); - return /*#__PURE__*/_react.default.createElement("div", { - className: "special-elec-container" - }, /*#__PURE__*/_react.default.createElement(_Icon.default, { - className: "elec-icon", - icon: (0, _picto.getNavPicto)(_fluid.FluidType.ELECTRICITY, true, true), - size: 42 - }), /*#__PURE__*/_react.default.createElement("div", { - className: "text-18-normal title" - }, t('special_elec.title')), !isHalfHourActivated && /*#__PURE__*/_react.default.createElement("div", { - className: "activation-text text-18-normal" - }, t("timestep.half_an_hour.analysis_waiting_data")), isHalfHourActivated && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", { - className: "navigator" - }, /*#__PURE__*/_react.default.createElement(_IconButton.default, { - "aria-label": t('consumption.accessibility.button_previous_value'), - onClick: handleChangeWeek, - className: "arrow-prev" - }, /*#__PURE__*/_react.default.createElement(_Icon.default, { - icon: _leftArrow.default, - size: 24 - })), /*#__PURE__*/_react.default.createElement("div", { - className: "average text-18-normal" - }, /*#__PURE__*/_react.default.createElement("div", { - className: "text-1" - }, t('special_elec.average')), /*#__PURE__*/_react.default.createElement("div", { - className: "text-2 text-18-bold" - }, t('special_elec.weektype'), ' ', /*#__PURE__*/_react.default.createElement("span", { - className: isWeekend ? 'weekend' : 'week' - }, isWeekend ? t('special_elec.weekend') : t('special_elec.week')))), /*#__PURE__*/_react.default.createElement(_IconButton.default, { - "aria-label": t('consumption.accessibility.button_previous_value'), - onClick: handleChangeWeek, - className: "arrow-next" - }, /*#__PURE__*/_react.default.createElement(_Icon.default, { - icon: _rightArrow.default, - size: 24 - }))), isLoading && /*#__PURE__*/_react.default.createElement(_Loader.default, { - color: "elec" - }), !isLoading && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, getPowerChart(), enedisAnalysisValues && isDataFullyComplete(monthDataloads) && /*#__PURE__*/_react.default.createElement("div", { - className: "min-max" - }, /*#__PURE__*/_react.default.createElement("div", { - className: "container" - }, /*#__PURE__*/_react.default.createElement(_Icon.default, { - icon: _maxPower.default, - size: 40, - className: "minIcon" - }), /*#__PURE__*/_react.default.createElement("div", { - className: "text" - }, /*#__PURE__*/_react.default.createElement("div", { - className: "min text-18-normal" - }, t('special_elec.maxPower'))), /*#__PURE__*/_react.default.createElement("div", { - className: "value kvAval" - }, enedisAnalysisValues.maxPower !== 0 && enedisAnalysisValues.maxPower !== null ? /*#__PURE__*/_react.default.createElement("div", { - className: "text-18-bold" - }, enedisAnalysisValues.maxPower.toFixed(1), /*#__PURE__*/_react.default.createElement("span", { - className: "text-18-normal" - }, " kVA")) : /*#__PURE__*/_react.default.createElement("span", null, "----"))), /*#__PURE__*/_react.default.createElement("div", { - className: "container consomin" - }, /*#__PURE__*/_react.default.createElement(_Icon.default, { - icon: _minimum.default, - size: 40, - className: "minIcon" - }), /*#__PURE__*/_react.default.createElement("div", { - className: "text text-18-normal" - }, /*#__PURE__*/_react.default.createElement("div", null, t('special_elec.min')), /*#__PURE__*/_react.default.createElement("div", null, t('special_elec.percentage')), /*#__PURE__*/_react.default.createElement("div", null, t('special_elec.price'))), /*#__PURE__*/_react.default.createElement("div", { - className: "value" - }, enedisAnalysisValues.minimumLoad !== 0 && enedisAnalysisValues.minimumLoad !== null ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", { - className: "text-18-bold" - }, enedisAnalysisValues.minimumLoad.toFixed(1), /*#__PURE__*/_react.default.createElement("span", { - className: "text-18-normal" - }, " kWh")), /*#__PURE__*/_react.default.createElement("div", { - className: "text-18-bold" - }, (facturePercentage === null || facturePercentage === void 0 ? void 0 : facturePercentage.toFixed(0)) || '---', /*#__PURE__*/_react.default.createElement("span", { - className: "text-18-normal" - }, " %")), /*#__PURE__*/_react.default.createElement("div", { - className: "text-18-bold" - }, elecPrice !== null && elecPrice !== void 0 && elecPrice.price ? (enedisAnalysisValues.minimumLoad * elecPrice.price).toFixed(1) : '---', /*#__PURE__*/_react.default.createElement("span", { - className: "text-18-normal" - }, " \u20AC"))) : /*#__PURE__*/_react.default.createElement("span", null, "----"))), /*#__PURE__*/_react.default.createElement("div", { - onClick: toggleOpenModal, - className: "showmodal" - }, t('special_elec.showModal'))))), /*#__PURE__*/_react.default.createElement(_ElecInfoModal.default, { - open: openInfoModal, - handleCloseClick: toggleOpenModal - })); -}; - -var _default = ElecHalfHourMonthlyAnalysis; -exports.default = _default; /***/ }) diff --git a/4/ecolyo.c76888d97f431150c7d1.js b/4/ecolyo.f22d2e8508212a56cb53.js similarity index 99% rename from 4/ecolyo.c76888d97f431150c7d1.js rename to 4/ecolyo.f22d2e8508212a56cb53.js index f3c941a9046f340f21c66279fe56237ff9931fac..debf88d5c257f40c5cd7d0f1add0dad7430712ac 100644 --- a/4/ecolyo.c76888d97f431150c7d1.js +++ b/4/ecolyo.f22d2e8508212a56cb53.js @@ -57,9 +57,9 @@ var _luxon = __webpack_require__("ExVU"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _consumption = _interopRequireDefault(__webpack_require__("AVq/")); +var _reactRedux = __webpack_require__("/MKj"); -var _hooks = __webpack_require__("Zlw4"); +var _consumption = _interopRequireDefault(__webpack_require__("AVq/")); var _profile = __webpack_require__("jPH6"); @@ -74,13 +74,13 @@ var ReportOptions = function ReportOptions() { t = _useI18n.t; var client = (0, _cozyClient.useClient)(); - var dispatch = (0, _hooks.useAppDispatch)(); + var dispatch = (0, _reactRedux.useDispatch)(); - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo; }), - fluidStatus = _useAppSelector.global.fluidStatus, - profile = _useAppSelector.profile; + fluidStatus = _useSelector.global.fluidStatus, + profile = _useSelector.profile; var _useState = (0, _react.useState)(null), _useState2 = (0, _slicedToArray2.default)(_useState, 2), @@ -396,7 +396,7 @@ var ExportData = function ExportData() { switch (_context.prev = _context.next) { case 0: _context.next = 2; - return consumptionService.getFluidsWithData([_fluid.FluidType.ELECTRICITY, _fluid.FluidType.WATER, _fluid.FluidType.GAS], _timeStep.TimeStep.MONTH); + return consumptionService.getExportableFluids([_fluid.FluidType.ELECTRICITY, _fluid.FluidType.WATER, _fluid.FluidType.GAS], _timeStep.TimeStep.MONTH); case 2: exportableFluidsData = _context.sent; @@ -679,9 +679,9 @@ var _userExploration = __webpack_require__("/rev"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _reactRouterDom = __webpack_require__("SOjZ"); +var _reactRedux = __webpack_require__("/MKj"); -var _hooks = __webpack_require__("Zlw4"); +var _reactRouterDom = __webpack_require__("SOjZ"); __webpack_require__("LlCV"); @@ -690,11 +690,11 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio 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 ProfileTypeOptions = function ProfileTypeOptions() { - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo; }), - profile = _useAppSelector.profile, - profileType = _useAppSelector.profileType; + profile = _useSelector.profile, + profileType = _useSelector.profileType; var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; @@ -720,10 +720,9 @@ var ProfileTypeOptions = function ProfileTypeOptions() { }); }; - var goToForm = function goToForm() { + var goToForm = (0, _react.useCallback)(function () { navigate('/profileType'); - }; - + }, [navigate]); return /*#__PURE__*/_react.default.createElement("div", { className: "profile-type-root" }, /*#__PURE__*/_react.default.createElement("div", { @@ -2077,13 +2076,17 @@ var OptionsView = function OptionsView() { headerHeight = _useState2[0], setHeaderHeight = _useState2[1]; + var defineHeaderHeight = function defineHeaderHeight(height) { + setHeaderHeight(height); + }; + return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_CozyBar.default, { titleKey: 'common.title_options' }), /*#__PURE__*/_react.default.createElement(_Header.default, { - setHeaderHeight: setHeaderHeight, + setHeaderHeight: defineHeaderHeight, desktopTitleKey: 'common.title_options' }), /*#__PURE__*/_react.default.createElement(_Content.default, { - heightOffset: headerHeight + height: headerHeight }, /*#__PURE__*/_react.default.createElement(_ProfileTypeOptions.default, null), /*#__PURE__*/_react.default.createElement(_ExportData.default, null), /*#__PURE__*/_react.default.createElement(_ReportOptions.default, null), /*#__PURE__*/_react.default.createElement(_HelpLink.default, null), /*#__PURE__*/_react.default.createElement(_LegalNoticeLink.default, null), /*#__PURE__*/_react.default.createElement(_GCULink.default, null), /*#__PURE__*/_react.default.createElement(_Accessibility.default, null), /*#__PURE__*/_react.default.createElement(_MatomoOptOut.default, null), /*#__PURE__*/_react.default.createElement("div", { className: "parameters-logos" }, /*#__PURE__*/_react.default.createElement("img", { @@ -2248,7 +2251,7 @@ var _I18n = __webpack_require__("buk/"); var _react = _interopRequireDefault(__webpack_require__("q1tI")); -var _hooks = __webpack_require__("Zlw4"); +var _reactRedux = __webpack_require__("/MKj"); var _modal = __webpack_require__("oKH6"); @@ -2258,7 +2261,7 @@ var HelpLink = function HelpLink() { var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; - var dispatch = (0, _hooks.useAppDispatch)(); + var dispatch = (0, _reactRedux.useDispatch)(); return /*#__PURE__*/_react.default.createElement("div", { className: "help-root", onClick: function onClick() { diff --git a/5/ecolyo.0c0733cd2d8d715775f6.js b/5/ecolyo.72a7eabe03dee9217ec1.js similarity index 96% rename from 5/ecolyo.0c0733cd2d8d715775f6.js rename to 5/ecolyo.72a7eabe03dee9217ec1.js index c2a032af1fd6de297c57d6f165c599d04765a000..b04e510c3a616557ea41c091b4d04774c0d589ae 100644 --- a/5/ecolyo.0c0733cd2d8d715775f6.js +++ b/5/ecolyo.72a7eabe03dee9217ec1.js @@ -847,13 +847,13 @@ var _I18n = __webpack_require__("buk/"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); +var _reactRedux = __webpack_require__("/MKj"); + var _reactRouterDom = __webpack_require__("SOjZ"); var _chart = __webpack_require__("idK9"); -var _global = __webpack_require__("b3rE"); - -var _hooks = __webpack_require__("Zlw4"); +var _global = __webpack_require__("c4IZ"); var _decoreText = __webpack_require__("j5h9"); @@ -875,12 +875,12 @@ var SgeInit = function SgeInit(_ref) { var konnectorSlug = fluidStatus.connection.konnectorConfig.slug; var account = fluidStatus.connection.account; - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo.global; }), - sgeConnect = _useAppSelector.sgeConnect; + sgeConnect = _useSelector.sgeConnect; - var dispatch = (0, _hooks.useAppDispatch)(); + var dispatch = (0, _reactRedux.useDispatch)(); var _useKonnectorAuth = (0, _useKonnectorAuth3.default)(fluidStatus), _useKonnectorAuth2 = (0, _slicedToArray2.default)(_useKonnectorAuth, 2), @@ -1064,26 +1064,20 @@ var _fluid = __webpack_require__("5Wkc"); var _timeStep = __webpack_require__("cKQ8"); -var _luxon = __webpack_require__("ExVU"); - var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _reactRouterDom = __webpack_require__("SOjZ"); +var _reactRedux = __webpack_require__("/MKj"); -var _dateChart = _interopRequireDefault(__webpack_require__("Ty7+")); +var _reactRouterDom = __webpack_require__("SOjZ"); var _profile = _interopRequireDefault(__webpack_require__("2l2O")); var _chart = __webpack_require__("idK9"); -var _global = __webpack_require__("b3rE"); - -var _hooks = __webpack_require__("Zlw4"); +var _global = __webpack_require__("c4IZ"); var _modal = __webpack_require__("oKH6"); -var _date = __webpack_require__("XrP9"); - var _utils = __webpack_require__("c+yx"); var _ReleaseNotesModal = _interopRequireDefault(__webpack_require__("mh/b")); @@ -1108,26 +1102,22 @@ var ConsumptionView = function ConsumptionView(_ref) { var fluidType = _ref.fluidType; var navigate = (0, _reactRouterDom.useNavigate)(); var client = (0, _cozyClient.useClient)(); - var dispatch = (0, _hooks.useAppDispatch)(); + var dispatch = (0, _reactRedux.useDispatch)(); var isMulti = fluidType === _fluid.FluidType.MULTIFLUID; - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo; }), - _useAppSelector$chart = _useAppSelector.chart, - currentTimeStep = _useAppSelector$chart.currentTimeStep, - loading = _useAppSelector$chart.loading, - showOfflineData = _useAppSelector$chart.showOfflineData, - selectedDate = _useAppSelector$chart.selectedDate, - currentIndex = _useAppSelector$chart.currentIndex, - _useAppSelector$globa = _useAppSelector.global, - fluidStatus = _useAppSelector$globa.fluidStatus, - releaseNotes = _useAppSelector$globa.releaseNotes, - _useAppSelector$modal = _useAppSelector.modal, - partnersIssueModal = _useAppSelector$modal.partnersIssueModal, - customPopupModal = _useAppSelector$modal.customPopupModal; - - var dateChartService = new _dateChart.default(); + _useSelector$chart = _useSelector.chart, + currentTimeStep = _useSelector$chart.currentTimeStep, + loading = _useSelector$chart.loading, + showOfflineData = _useSelector$chart.showOfflineData, + _useSelector$global = _useSelector.global, + fluidStatus = _useSelector$global.fluidStatus, + releaseNotes = _useSelector$global.releaseNotes, + _useSelector$modal = _useSelector.modal, + partnersIssueModal = _useSelector$modal.partnersIssueModal, + customPopupModal = _useSelector$modal.customPopupModal; var _useState = (0, _react.useState)(releaseNotes.show), _useState2 = (0, _slicedToArray2.default)(_useState, 2), @@ -1156,13 +1146,12 @@ var ConsumptionView = function ConsumptionView(_ref) { var updateKey = fluidType !== _fluid.FluidType.MULTIFLUID && fluidStatus[fluidType].lastDataDate ? "".concat(fluidStatus[fluidType].lastDataDate.toLocaleString(), " + ").concat(fluidStatus[fluidType].status + fluidType) : ''; var lastDataDateKey = fluidType !== _fluid.FluidType.MULTIFLUID && fluidStatus[fluidType].lastDataDate ? "".concat(fluidStatus[fluidType].lastDataDate.toLocaleString() + fluidType) : ''; + var defineHeaderHeight = (0, _react.useCallback)(function (height) { + setHeaderHeight(height); + }, []); var handleCloseReleaseNoteModal = (0, _react.useCallback)(function () { setOpenReleaseNoteModal(false); - dispatch((0, _global.showReleaseNotes)({ - show: false, - notes: releaseNotes.notes, - redirectLink: releaseNotes.redirectLink - })); + dispatch((0, _global.showReleaseNotes)(false, releaseNotes.notes, releaseNotes.redirectLink)); if (releaseNotes.redirectLink) { navigate(releaseNotes.redirectLink); @@ -1309,40 +1298,13 @@ var ConsumptionView = function ConsumptionView(_ref) { subscribed = false; }; }, [fluidStatus]); - var disablePrev = selectedDate < _luxon.DateTime.local(0, 1, 1).setZone('utc', { - keepLocalTime: true - }) && !(0, _utils.isKonnectorActive)(fluidStatus, _fluid.FluidType.MULTIFLUID); - - var getIncrement = function getIncrement(next) { - return next ? dateChartService.defineIncrementForNextIndex(currentTimeStep, selectedDate, currentIndex) : dateChartService.defineIncrementForPreviousIndex(currentTimeStep, selectedDate, currentIndex); - }; - - var handleClickMove = function handleClickMove(next) { - var increment = getIncrement(next); - var updatedDate = dateChartService.incrementDate(currentTimeStep, selectedDate, increment); - var updatedIndex = dateChartService.defineDateIndex(currentTimeStep, updatedDate); - dispatch((0, _chart.setSelectedDate)(updatedDate)); - dispatch((0, _chart.setCurrentIndex)(updatedIndex)); - }; - return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_CozyBar.default, { titleKey: 'common.title_consumption' }), /*#__PURE__*/_react.default.createElement(_Header.default, { - setHeaderHeight: setHeaderHeight, + setHeaderHeight: defineHeaderHeight, desktopTitleKey: 'common.title_consumption' - }, /*#__PURE__*/_react.default.createElement(_DateNavigator.default, { - disableNext: (0, _date.isLastDateReached)(selectedDate, currentTimeStep), - disablePrev: disablePrev, - handleNextDate: function handleNextDate() { - return handleClickMove(true); - }, - handlePrevDate: function handlePrevDate() { - return handleClickMove(false); - }, - navigatorDate: selectedDate, - timeStep: currentTimeStep - })), /*#__PURE__*/_react.default.createElement(_Content.default, { - heightOffset: headerHeight + }, /*#__PURE__*/_react.default.createElement(_DateNavigator.default, null)), /*#__PURE__*/_react.default.createElement(_Content.default, { + height: headerHeight }, /*#__PURE__*/_react.default.createElement(_FluidButtons.default, { activeFluid: fluidType, key: updateKey @@ -1350,7 +1312,8 @@ var ConsumptionView = function ConsumptionView(_ref) { open: openReleaseNoteModal, handleCloseClick: handleCloseReleaseNoteModal }), showOfflineData && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, loading && /*#__PURE__*/_react.default.createElement("div", { - className: "consumptionview-loading" + className: 'consumptionview-loading', + "aria-busy": "true" }, /*#__PURE__*/_react.default.createElement(_Loader.default, { fluidType: fluidType })), /*#__PURE__*/_react.default.createElement("div", { @@ -1441,9 +1404,9 @@ var _fluid = __webpack_require__("5Wkc"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _global = __webpack_require__("b3rE"); +var _reactRedux = __webpack_require__("/MKj"); -var _hooks = __webpack_require__("Zlw4"); +var _global = __webpack_require__("c4IZ"); var _EpglInit = _interopRequireDefault(__webpack_require__("waxR")); @@ -1463,7 +1426,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va var Connection = function Connection(_ref) { var fluidStatus = _ref.fluidStatus; - var dispatch = (0, _hooks.useAppDispatch)(); + var dispatch = (0, _reactRedux.useDispatch)(); var handleSuccess = (0, _react.useCallback)( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { var updatedConnection; return _regenerator.default.wrap(function _callee$(_context) { @@ -1473,10 +1436,7 @@ var Connection = function Connection(_ref) { updatedConnection = _objectSpread(_objectSpread({}, fluidStatus.connection), {}, { shouldLaunchKonnector: true }); - dispatch((0, _global.updateFluidConnection)({ - fluidType: fluidStatus.fluidType, - fluidConnection: updatedConnection - })); + dispatch((0, _global.updatedFluidConnection)(fluidStatus.fluidType, updatedConnection)); case 2: case "end": @@ -1535,6 +1495,8 @@ var _usageEvent = __webpack_require__("/fHX"); var _react2 = __webpack_require__("q1tI"); +var _reactRedux = __webpack_require__("/MKj"); + var _account2 = _interopRequireDefault(__webpack_require__("gucQ")); var _connection = _interopRequireDefault(__webpack_require__("3nDq")); @@ -1543,9 +1505,7 @@ var _usageEvent2 = _interopRequireDefault(__webpack_require__("dECN")); var _chart = __webpack_require__("idK9"); -var _global = __webpack_require__("b3rE"); - -var _hooks = __webpack_require__("Zlw4"); +var _global = __webpack_require__("c4IZ"); var _logger = _interopRequireDefault(__webpack_require__("gjtA")); @@ -1563,13 +1523,13 @@ var useKonnectorAuth = function useKonnectorAuth(fluidStatus, login, password) { var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; - var dispatch = (0, _hooks.useAppDispatch)(); + var dispatch = (0, _reactRedux.useDispatch)(); var konnectorSlug = fluidStatus.connection.konnectorConfig.slug; - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo.global; }), - sgeConnect = _useAppSelector.sgeConnect; + sgeConnect = _useSelector.sgeConnect; var _useState = (0, _react2.useState)(''), _useState2 = (0, _slicedToArray2.default)(_useState, 2), @@ -1585,10 +1545,7 @@ var useKonnectorAuth = function useKonnectorAuth(fluidStatus, login, password) { updatedConnection = _objectSpread(_objectSpread({}, fluidStatus.connection), {}, { shouldLaunchKonnector: true }); - dispatch((0, _global.updateFluidConnection)({ - fluidType: fluidStatus.fluidType, - fluidConnection: updatedConnection - })); + dispatch((0, _global.updatedFluidConnection)(fluidStatus.fluidType, updatedConnection)); case 2: case "end": @@ -1684,10 +1641,7 @@ var useKonnectorAuth = function useKonnectorAuth(fluidStatus, login, password) { trigger: _trigger }); (0, _chart.setLoading)(false); - dispatch((0, _global.updateFluidConnection)({ - fluidType: fluidStatus.fluidType, - fluidConnection: updatedConnection - })); + dispatch((0, _global.updatedFluidConnection)(fluidStatus.fluidType, updatedConnection)); onSuccess(); _context3.next = 32; break; @@ -1758,10 +1712,7 @@ var useKonnectorAuth = function useKonnectorAuth(fluidStatus, login, password) { updatedConnection = _objectSpread(_objectSpread({}, fluidStatus.connection), {}, { account: updatedAccount }); - dispatch((0, _global.updateFluidConnection)({ - fluidType: fluidStatus.fluidType, - fluidConnection: updatedConnection - })); + dispatch((0, _global.updatedFluidConnection)(fluidStatus.fluidType, updatedConnection)); onSuccess(); case 11: @@ -1889,6 +1840,8 @@ var _luxon = __webpack_require__("ExVU"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); +var _reactRedux = __webpack_require__("/MKj"); + var _reactRouterDom = __webpack_require__("SOjZ"); var _account = _interopRequireDefault(__webpack_require__("gucQ")); @@ -1907,9 +1860,7 @@ var _challenge2 = __webpack_require__("F6Xr"); var _chart = __webpack_require__("idK9"); -var _global = __webpack_require__("b3rE"); - -var _hooks = __webpack_require__("Zlw4"); +var _global = __webpack_require__("c4IZ"); var _modal = __webpack_require__("oKH6"); @@ -1946,7 +1897,7 @@ var KonnectorViewerCard = function KonnectorViewerCard(_ref) { t = _useI18n.t; var client = (0, _cozyClient.useClient)(); - var dispatch = (0, _hooks.useAppDispatch)(); + var dispatch = (0, _reactRedux.useDispatch)(); var navigate = (0, _reactRouterDom.useNavigate)(); var fluidSlug = fluidStatus.connection.konnectorConfig.slug; var fluidState = fluidStatus.status; @@ -1954,14 +1905,14 @@ var KonnectorViewerCard = function KonnectorViewerCard(_ref) { var account = fluidStatus.connection.account; var trigger = fluidStatus.connection.trigger; - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo; }), - currentChallenge = _useAppSelector.challenge.currentChallenge, - _useAppSelector$globa = _useAppSelector.global, - statusArray = _useAppSelector$globa.fluidStatus, - shouldRefreshConsent = _useAppSelector$globa.shouldRefreshConsent, - partnersInfo = _useAppSelector$globa.partnersInfo; + currentChallenge = _useSelector.challenge.currentChallenge, + _useSelector$global = _useSelector.global, + statusArray = _useSelector$global.fluidStatus, + shouldRefreshConsent = _useSelector$global.shouldRefreshConsent, + partnersInfo = _useSelector$global.partnersInfo; var _useState = (0, _react.useState)(false), _useState2 = (0, _slicedToArray2.default)(_useState, 2), @@ -2328,10 +2279,7 @@ var KonnectorViewerCard = function KonnectorViewerCard(_ref) { updatedConnection = _objectSpread(_objectSpread({}, fluidStatus.connection), {}, { shouldLaunchKonnector: false }); - dispatch((0, _global.updateFluidConnection)({ - fluidType: fluidStatus.fluidType, - fluidConnection: updatedConnection - })); + dispatch((0, _global.updatedFluidConnection)(fluidStatus.fluidType, updatedConnection)); _context7.t0 = Promise; _context7.next = 6; return refreshChallengeState(); @@ -2895,14 +2843,14 @@ var _luxon = __webpack_require__("ExVU"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); +var _reactRedux = __webpack_require__("/MKj"); + var _consumption = _interopRequireDefault(__webpack_require__("AVq/")); var _dateChart = _interopRequireDefault(__webpack_require__("Ty7+")); var _chart = __webpack_require__("idK9"); -var _hooks = __webpack_require__("Zlw4"); - __webpack_require__("C5+q"); 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); } @@ -2917,18 +2865,17 @@ var FluidChartSlide = function FluidChartSlide(_ref) { isSwitching = _ref.isSwitching, setActive = _ref.setActive; var client = (0, _cozyClient.useClient)(); - var dispatch = (0, _hooks.useAppDispatch)(); + var dispatch = (0, _reactRedux.useDispatch)(); - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo; }), - _useAppSelector$chart = _useAppSelector.chart, - currentTimeStep = _useAppSelector$chart.currentTimeStep, - currentIndex = _useAppSelector$chart.currentIndex, - showCompare = _useAppSelector$chart.showCompare, - _useAppSelector$globa = _useAppSelector.global, - fluidStatus = _useAppSelector$globa.fluidStatus, - fluidTypes = _useAppSelector$globa.fluidTypes; + _useSelector$chart = _useSelector.chart, + currentTimeStep = _useSelector$chart.currentTimeStep, + currentIndex = _useSelector$chart.currentIndex, + _useSelector$global = _useSelector.global, + fluidStatus = _useSelector$global.fluidStatus, + fluidTypes = _useSelector$global.fluidTypes; var _useState = (0, _react.useState)({ actualData: [], @@ -3033,7 +2980,6 @@ var FluidChartSlide = function FluidChartSlide(_ref) { chartData: chartData, fluidType: fluidType, timeStep: timeStep, - showCompare: showCompare, height: height, width: width, isSwitching: isSwitching @@ -3085,15 +3031,15 @@ var _usageEvent = __webpack_require__("/fHX"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); +var _reactRedux = __webpack_require__("/MKj"); + var _account = _interopRequireDefault(__webpack_require__("gucQ")); var _triggers = _interopRequireDefault(__webpack_require__("7d5P")); var _usageEvent2 = _interopRequireDefault(__webpack_require__("dECN")); -var _global = __webpack_require__("b3rE"); - -var _hooks = __webpack_require__("Zlw4"); +var _global = __webpack_require__("c4IZ"); var _modal = __webpack_require__("oKH6"); @@ -3115,12 +3061,12 @@ var GrdfInit = function GrdfInit(_ref) { var fluidStatus = _ref.fluidStatus, onSuccess = _ref.onSuccess; var client = (0, _cozyClient.useClient)(); - var dispatch = (0, _hooks.useAppDispatch)(); + var dispatch = (0, _reactRedux.useDispatch)(); - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { - return state.ecolyo.modal; + var _useSelector = (0, _reactRedux.useSelector)(function (state) { + return state.ecolyo; }), - isConnectionModalOpen = _useAppSelector.isConnectionModalOpen; + isConnectionModalOpen = _useSelector.modal.isConnectionModalOpen; var _useState = (0, _react.useState)(false), _useState2 = (0, _slicedToArray2.default)(_useState, 2), @@ -3159,10 +3105,7 @@ var GrdfInit = function GrdfInit(_ref) { account: null, trigger: null }); - dispatch((0, _global.updateFluidConnection)({ - fluidType: fluidStatus.fluidType, - fluidConnection: updatedConnection - })); + dispatch((0, _global.updatedFluidConnection)(fluidStatus.fluidType, updatedConnection)); _context.next = 10; return _usageEvent2.default.addEvent(client, { type: _usageEvent.UsageEventType.KONNECTOR_CONNECT_EVENT, @@ -3185,10 +3128,7 @@ var GrdfInit = function GrdfInit(_ref) { account: account, trigger: trigger }); - dispatch((0, _global.updateFluidConnection)({ - fluidType: fluidStatus.fluidType, - fluidConnection: _updatedConnection - })); + dispatch((0, _global.updatedFluidConnection)(fluidStatus.fluidType, _updatedConnection)); onSuccess(); case 19: @@ -3258,11 +3198,11 @@ var _usageEvent = __webpack_require__("/fHX"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _usageEvent2 = _interopRequireDefault(__webpack_require__("dECN")); +var _reactRedux = __webpack_require__("/MKj"); -var _global = __webpack_require__("b3rE"); +var _usageEvent2 = _interopRequireDefault(__webpack_require__("dECN")); -var _hooks = __webpack_require__("Zlw4"); +var _global = __webpack_require__("c4IZ"); 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); } @@ -3280,18 +3220,17 @@ var FormOAuth = function FormOAuth(_ref) { var client = (0, _cozyClient.useClient)(); - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { - return state.ecolyo.global; - }), - shouldRefreshConsent = _useAppSelector.shouldRefreshConsent; - - var dispatch = (0, _hooks.useAppDispatch)(); - var _useState = (0, _react.useState)(IDLE), _useState2 = (0, _slicedToArray2.default)(_useState, 2), status = _useState2[0], setStatus = _useState2[1]; + var _useSelector = (0, _reactRedux.useSelector)(function (state) { + return state.ecolyo.global; + }), + shouldRefreshConsent = _useSelector.shouldRefreshConsent; + + var dispatch = (0, _reactRedux.useDispatch)(); var endOAuth = (0, _react.useCallback)(function () { setStatus(IDLE); // Set back to false the variable that allows to automatically refresh the consent (deletes and recreates the account) @@ -3328,6 +3267,9 @@ var FormOAuth = function FormOAuth(_ref) { endOAuth(); onSuccess(accountId); }, [endOAuth, onSuccess]); + var handleOAuthCancel = (0, _react.useCallback)(function () { + endOAuth(); + }, [endOAuth]); var isWaiting = status === WAITING; (0, _react.useEffect)(function () { if (shouldRefreshConsent) { @@ -3353,7 +3295,7 @@ var FormOAuth = function FormOAuth(_ref) { konnector: konnector, redirectSlug: client.appMetadata.slug, onSuccess: handleAccountId, - onCancel: endOAuth, + onCancel: handleOAuthCancel, t: t })); }; @@ -3555,7 +3497,7 @@ var _dataload = __webpack_require__("D5WE"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _hooks = __webpack_require__("Zlw4"); +var _reactRedux = __webpack_require__("/MKj"); var _DataloadNoValue = _interopRequireDefault(__webpack_require__("k66a")); @@ -3575,10 +3517,10 @@ var DataloadConsumptionVisualizer = function DataloadConsumptionVisualizer(_ref) compareDataload = _ref.compareDataload, setActive = _ref.setActive; - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo.chart; }), - showCompare = _useAppSelector.showCompare; + showCompare = _useSelector.showCompare; var _useState = (0, _react.useState)(false), _useState2 = (0, _slicedToArray2.default)(_useState, 2), @@ -3658,7 +3600,7 @@ var _timeStep = __webpack_require__("cKQ8"); var _react = _interopRequireDefault(__webpack_require__("q1tI")); -var _hooks = __webpack_require__("Zlw4"); +var _reactRedux = __webpack_require__("/MKj"); var _date = __webpack_require__("XrP9"); @@ -3670,12 +3612,12 @@ var ConsumptionDetails = function ConsumptionDetails(_ref) { var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo.chart; }), - currentTimeStep = _useAppSelector.currentTimeStep, - currentDatachart = _useAppSelector.currentDatachart, - showCompare = _useAppSelector.showCompare; + currentTimeStep = _useSelector.currentTimeStep, + currentDatachart = _useSelector.currentDatachart, + showCompare = _useSelector.showCompare; return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", { className: "consumption-details-root" @@ -3725,7 +3667,7 @@ var _I18n = __webpack_require__("buk/"); var _react = _interopRequireDefault(__webpack_require__("q1tI")); -var _hooks = __webpack_require__("Zlw4"); +var _reactRedux = __webpack_require__("/MKj"); var _modal = __webpack_require__("oKH6"); @@ -3735,7 +3677,7 @@ var GrdfForm = function GrdfForm() { var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; - var dispatch = (0, _hooks.useAppDispatch)(); + var dispatch = (0, _reactRedux.useDispatch)(); return /*#__PURE__*/_react.default.createElement("div", { className: "connection-form" }, /*#__PURE__*/_react.default.createElement("p", { @@ -3786,7 +3728,7 @@ exports.push([module.i, "/** BLACK **/\n/** RED **/\n/** YELLOW **/\n/** ORANGE 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.fluidchart-root {\n background-color: #121212;\n padding: 0.5rem 2rem 1rem 2rem;\n}\n@media only screen and (max-width : 768px) {\n .fluidchart-root {\n padding: 0rem 1rem 1rem 1rem;\n }\n}\n\n.fluidchart-content {\n min-height: 29.5rem;\n}\n@media only screen and (max-width : 768px) {\n .fluidchart-content {\n min-height: 21.5rem;\n }\n}\n\n.fluidchart-footer {\n display: flex;\n align-items: center;\n justify-content: left;\n margin: auto;\n padding-top: 1.5rem;\n max-width: 45.75rem;\n}\n.fluidchart-footer .fluidchart-footer-label {\n color: #e0e0e0;\n}\n\n.compareLegend {\n padding: 0 0 1rem 0;\n display: flex;\n gap: 1rem;\n font-weight: 700;\n max-width: 45.75rem;\n margin: auto;\n}\n.compareLegend .electricity {\n color: #d87b39;\n}\n.compareLegend .electricity.compare {\n color: #e2bca1;\n}\n.compareLegend .gas {\n color: #45d1b8;\n}\n.compareLegend .gas.compare {\n color: #a8f7e9;\n}\n.compareLegend .water {\n color: #3a98ec;\n}\n.compareLegend .water.compare {\n color: #abd4fa;\n}\n.compareLegend .multifluid {\n color: #e3b82a;\n}\n.compareLegend .multifluid.compare {\n color: #ffd597;\n}\n.compareLegend div {\n display: flex;\n gap: 0.5rem;\n align-items: center;\n}\n\n.lastValidData {\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n}\n.lastValidData span.date {\n color: #e0e0e0;\n cursor: pointer;\n text-decoration: underline;\n}\n.lastValidData button {\n margin-top: 0rem !important;\n width: 70% !important;\n height: 40px !important;\n max-width: 22.5rem;\n}", ""]); +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.fluidchart-root {\n background-color: #121212;\n padding: 0.5rem 2rem 1rem 2rem;\n}\n@media only screen and (max-width : 768px) {\n .fluidchart-root {\n padding: 0rem 1rem 1rem 1rem;\n }\n}\n\n.fluidchart-content {\n min-height: 29.5rem;\n}\n@media only screen and (max-width : 768px) {\n .fluidchart-content {\n min-height: 21.5rem;\n }\n}\n\n.fluidchart-footer {\n display: flex;\n align-items: center;\n justify-content: left;\n margin: auto;\n padding-top: 1.5rem;\n max-width: 45.75rem;\n}\n.fluidchart-footer .fluidchart-footer-label {\n color: #e0e0e0;\n}\n\n.compareLegend {\n padding: 0.5rem 0 1rem 0;\n display: flex;\n gap: 1rem;\n font-weight: 700;\n max-width: 45.75rem;\n margin: auto;\n}\n.compareLegend .electricity {\n color: #d87b39;\n}\n.compareLegend .electricity.compare {\n color: #e2bca1;\n}\n.compareLegend .gas {\n color: #45d1b8;\n}\n.compareLegend .gas.compare {\n color: #a8f7e9;\n}\n.compareLegend .water {\n color: #3a98ec;\n}\n.compareLegend .water.compare {\n color: #abd4fa;\n}\n.compareLegend .multifluid {\n color: #e3b82a;\n}\n.compareLegend .multifluid.compare {\n color: #ffd597;\n}\n.compareLegend div {\n display: flex;\n gap: 0.5rem;\n align-items: center;\n}\n\n.lastValidData {\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n}\n.lastValidData span.date {\n color: #e0e0e0;\n cursor: pointer;\n text-decoration: underline;\n}\n.lastValidData button {\n margin-top: 0rem !important;\n width: 70% !important;\n height: 40px !important;\n max-width: 22.5rem;\n}", ""]); @@ -4035,7 +3977,7 @@ var _fluid = __webpack_require__("5Wkc"); var _react = _interopRequireDefault(__webpack_require__("q1tI")); -var _hooks = __webpack_require__("Zlw4"); +var _reactRedux = __webpack_require__("/MKj"); var _InfoDataConsumptionVisualizer = _interopRequireDefault(__webpack_require__("y87k")); @@ -4051,15 +3993,15 @@ var ConsumptionVisualizer = function ConsumptionVisualizer(_ref) { var fluidType = _ref.fluidType, setActive = _ref.setActive; - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo; }), - _useAppSelector$chart = _useAppSelector.chart, - currentDatachart = _useAppSelector$chart.currentDatachart, - currentDatachartIndex = _useAppSelector$chart.currentDatachartIndex, - _useAppSelector$globa = _useAppSelector.global, - fluidStatus = _useAppSelector$globa.fluidStatus, - fluidTypes = _useAppSelector$globa.fluidTypes; + _useSelector$chart = _useSelector.chart, + currentDatachart = _useSelector$chart.currentDatachart, + currentDatachartIndex = _useSelector$chart.currentDatachartIndex, + _useSelector$global = _useSelector.global, + fluidStatus = _useSelector$global.fluidStatus, + fluidTypes = _useSelector$global.fluidTypes; var dataload = currentDatachart.actualData[currentDatachartIndex]; var compareDataload = currentDatachart.comparisonData ? currentDatachart.comparisonData[currentDatachartIndex] : null; @@ -4164,11 +4106,11 @@ var _Icon = _interopRequireDefault(__webpack_require__("y6ex")); var _fluid = __webpack_require__("5Wkc"); -var _react = _interopRequireDefault(__webpack_require__("q1tI")); +var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _reactRouterDom = __webpack_require__("SOjZ"); +var _reactRedux = __webpack_require__("/MKj"); -var _hooks = __webpack_require__("Zlw4"); +var _reactRouterDom = __webpack_require__("SOjZ"); var _picto = __webpack_require__("6DBe"); @@ -4176,21 +4118,23 @@ var _utils = __webpack_require__("c+yx"); __webpack_require__("kpuL"); +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 KonnectorViewerList = function KonnectorViewerList() { var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo.global; }), - fluidStatus = _useAppSelector.fluidStatus; + fluidStatus = _useSelector.fluidStatus; var navigate = (0, _reactRouterDom.useNavigate)(); - - var goToFluid = function goToFluid(fluidType) { + var goToFluid = (0, _react.useCallback)(function (fluidType) { navigate("/consumption/".concat((0, _utils.getFluidName)(fluidType))); - }; - + }, [navigate]); return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, fluidStatus.map(function (fluidStatusItem, key) { return /*#__PURE__*/_react.default.createElement(_StyledCard.default, { key: key, @@ -4287,32 +4231,34 @@ var GrdfConnectModal = function GrdfConnectModal(_ref) { showForm ? setCurrentStep(StepEnum.GiveConsent) : setCurrentStep(StepEnum.DoYouHaveAccount); } }, [showForm, open]); - - var handleGoToPartnerSite = function handleGoToPartnerSite() { + var goToCreateAccountStep = (0, _react.useCallback)(function () { + setCurrentStep(StepEnum.CreateAccount); + }, []); + var goToGiveConsentStep = (0, _react.useCallback)(function () { + setCurrentStep(StepEnum.GiveConsent); + }, []); + var goToDoYouHaveAccountStep = (0, _react.useCallback)(function () { + setCurrentStep(StepEnum.DoYouHaveAccount); + }, []); + var handleGoToPartnerSite = (0, _react.useCallback)(function () { goToPartnerSite(); setShowForm(true); handleCloseClick(); - }; - - var handleGiveConsentPrevious = function handleGiveConsentPrevious() { - showForm ? handleCloseClick() : setCurrentStep(StepEnum.DoYouHaveAccount); - }; - + }, [goToPartnerSite, handleCloseClick, setShowForm]); + var handleGiveConsentPrevious = (0, _react.useCallback)(function () { + return showForm ? handleCloseClick() : setCurrentStep(StepEnum.DoYouHaveAccount); + }, [handleCloseClick, showForm]); var steps = (_steps = {}, (0, _defineProperty2.default)(_steps, StepEnum.DoYouHaveAccount, { content: /*#__PURE__*/_react.default.createElement(_GrdfDoYouHaveAccount.default, null), leftButton: /*#__PURE__*/_react.default.createElement(_core.Button, { - onClick: function onClick() { - return setCurrentStep(StepEnum.CreateAccount); - }, + onClick: goToCreateAccountStep, classes: { root: 'btn-profile-back', label: 'text-16-bold' } }, t('auth.button_create_account')), rightButton: /*#__PURE__*/_react.default.createElement(_core.Button, { - onClick: function onClick() { - return setCurrentStep(StepEnum.GiveConsent); - }, + onClick: goToGiveConsentStep, classes: { root: 'btn-profile-next', label: 'text-16-bold' @@ -4321,9 +4267,7 @@ var GrdfConnectModal = function GrdfConnectModal(_ref) { }), (0, _defineProperty2.default)(_steps, StepEnum.CreateAccount, { content: /*#__PURE__*/_react.default.createElement(_GrdfCreateAccount.default, null), leftButton: /*#__PURE__*/_react.default.createElement(_core.Button, { - onClick: function onClick() { - return setCurrentStep(StepEnum.DoYouHaveAccount); - }, + onClick: goToDoYouHaveAccountStep, classes: { root: 'btn-profile-back', label: 'text-16-bold' @@ -4819,25 +4763,26 @@ var EpglConnectModal = function EpglConnectModal(_ref) { setCurrentStep(0); } }, [open]); - - var handleGoToPartnerSite = function handleGoToPartnerSite() { + var goToCreateAccountStep = (0, _react.useCallback)(function () { + setCurrentStep(StepEnum.CreateAccount); + }, []); + var goToDoYouHaveAccountStep = (0, _react.useCallback)(function () { + setCurrentStep(StepEnum.DoYouHaveAccount); + }, []); + var handleGoToPartnerSite = (0, _react.useCallback)(function () { goToPartnerSite(); setHasCreatedAccount(true); setShowForm(true); handleCloseClick(); - }; - - var handleShowForm = function handleShowForm() { + }, [goToPartnerSite, handleCloseClick, setHasCreatedAccount, setShowForm]); + var handleShowForm = (0, _react.useCallback)(function () { setShowForm(true); handleCloseClick(); - }; - + }, [handleCloseClick, setShowForm]); var steps = (_steps = {}, (0, _defineProperty2.default)(_steps, StepEnum.DoYouHaveAccount, { content: /*#__PURE__*/_react.default.createElement(_EpglDoYouHaveAccount.default, null), leftButton: /*#__PURE__*/_react.default.createElement(_core.Button, { - onClick: function onClick() { - return setCurrentStep(StepEnum.CreateAccount); - }, + onClick: goToCreateAccountStep, classes: { root: 'btn-profile-back', label: 'text-16-bold' @@ -4853,9 +4798,7 @@ var EpglConnectModal = function EpglConnectModal(_ref) { }), (0, _defineProperty2.default)(_steps, StepEnum.CreateAccount, { content: /*#__PURE__*/_react.default.createElement(_EpglCreateAccount.default, null), leftButton: /*#__PURE__*/_react.default.createElement(_core.Button, { - onClick: function onClick() { - return setCurrentStep(StepEnum.DoYouHaveAccount); - }, + onClick: goToDoYouHaveAccountStep, classes: { root: 'btn-profile-back', label: 'text-16-bold' @@ -4979,6 +4922,8 @@ var _useChartResize2 = __webpack_require__("tWvI"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); +var _reactRedux = __webpack_require__("/MKj"); + var _reactSwipeableViews = _interopRequireDefault(__webpack_require__("7VIw")); var _reactSwipeableViewsUtils = __webpack_require__("7wYf"); @@ -4987,8 +4932,6 @@ var _dateChart = _interopRequireDefault(__webpack_require__("Ty7+")); var _chart = __webpack_require__("idK9"); -var _hooks = __webpack_require__("Zlw4"); - __webpack_require__("0Udq"); 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); } @@ -5000,15 +4943,15 @@ var VirtualizeSwipeableViews = (0, _reactSwipeableViewsUtils.virtualize)(_reactS var FluidChartSwipe = function FluidChartSwipe(_ref) { var fluidType = _ref.fluidType, setActive = _ref.setActive; - var dispatch = (0, _hooks.useAppDispatch)(); + var dispatch = (0, _reactRedux.useDispatch)(); - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo.chart; }), - currentIndex = _useAppSelector.currentIndex, - currentTimeStep = _useAppSelector.currentTimeStep, - selectedDate = _useAppSelector.selectedDate, - loading = _useAppSelector.loading; + currentIndex = _useSelector.currentIndex, + currentTimeStep = _useSelector.currentTimeStep, + selectedDate = _useSelector.selectedDate, + loading = _useSelector.loading; var swipe = (0, _react.useRef)(null); @@ -5412,6 +5355,8 @@ var _userExploration = __webpack_require__("/rev"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); +var _reactRedux = __webpack_require__("/MKj"); + var _reactRouterDom = __webpack_require__("SOjZ"); var _consumption = _interopRequireDefault(__webpack_require__("AVq/")); @@ -5422,8 +5367,6 @@ var _usageEvent2 = _interopRequireDefault(__webpack_require__("dECN")); var _chart = __webpack_require__("idK9"); -var _hooks = __webpack_require__("Zlw4"); - var _modal = __webpack_require__("oKH6"); var _utils = __webpack_require__("c+yx"); @@ -5445,16 +5388,16 @@ var FluidChart = function FluidChart(_ref) { var client = (0, _cozyClient.useClient)(); - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo; }), - _useAppSelector$chart = _useAppSelector.chart, - currentTimeStep = _useAppSelector$chart.currentTimeStep, - selectedDate = _useAppSelector$chart.selectedDate, - showCompare = _useAppSelector$chart.showCompare, - fluidStatus = _useAppSelector.global.fluidStatus; + _useSelector$chart = _useSelector.chart, + currentTimeStep = _useSelector$chart.currentTimeStep, + selectedDate = _useSelector$chart.selectedDate, + showCompare = _useSelector$chart.showCompare, + fluidStatus = _useSelector.global.fluidStatus; - var dispatch = (0, _hooks.useAppDispatch)(); + var dispatch = (0, _reactRedux.useDispatch)(); var navigate = (0, _reactRouterDom.useNavigate)(); var currentFluidStatus = fluidStatus[fluidType]; var isFluidConnected = (0, _utils.isKonnectorActive)(fluidStatus, fluidType); @@ -5621,10 +5564,7 @@ var FluidChart = function FluidChart(_ref) { }, /*#__PURE__*/_react.default.createElement(_FluidChartSwipe.default, { fluidType: fluidType, setActive: setActive - })), showCompare && currentTimeStep !== _timeStep.TimeStep.YEAR && /*#__PURE__*/_react.default.createElement(_core.Slide, { - direction: "right", - in: showCompare - }, DisplayLegend())), /*#__PURE__*/_react.default.createElement(_TimeStepSelector.default, { + })), showCompare && currentTimeStep !== _timeStep.TimeStep.YEAR && /*#__PURE__*/_react.default.createElement(DisplayLegend, null)), /*#__PURE__*/_react.default.createElement(_TimeStepSelector.default, { fluidType: fluidType }), currentTimeStep !== _timeStep.TimeStep.YEAR && /*#__PURE__*/_react.default.createElement("div", { className: "fluidchart-footer", @@ -5734,14 +5674,14 @@ var _usageEvent = __webpack_require__("/fHX"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); +var _reactRedux = __webpack_require__("/MKj"); + var _reactRouterDom = __webpack_require__("SOjZ"); var _dateChart = _interopRequireDefault(__webpack_require__("Ty7+")); var _usageEvent2 = _interopRequireDefault(__webpack_require__("dECN")); -var _hooks = __webpack_require__("Zlw4"); - var _picto = __webpack_require__("6DBe"); var _utils = __webpack_require__("c+yx"); @@ -5757,13 +5697,14 @@ var FluidButton = function FluidButton(_ref) { var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; - var client = (0, _cozyClient.useClient)(); var navigate = (0, _reactRouterDom.useNavigate)(); - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo.global; }), - fluidStatus = _useAppSelector.fluidStatus; + fluidStatus = _useSelector.fluidStatus; + + var client = (0, _cozyClient.useClient)(); var _useState = (0, _react.useState)(false), _useState2 = (0, _slicedToArray2.default)(_useState, 2), @@ -5890,12 +5831,12 @@ var _timeStep = __webpack_require__("cKQ8"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); +var _reactRedux = __webpack_require__("/MKj"); + var _consumption = _interopRequireDefault(__webpack_require__("AVq/")); var _converter = _interopRequireDefault(__webpack_require__("LXmx")); -var _hooks = __webpack_require__("Zlw4"); - var _utils = __webpack_require__("c+yx"); __webpack_require__("Ijwy"); @@ -5907,12 +5848,12 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && var TotalConsumption = function TotalConsumption(_ref) { var fluidType = _ref.fluidType; - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo.chart; }), - currentTimeStep = _useAppSelector.currentTimeStep, - showCompare = _useAppSelector.showCompare, - currentDatachart = _useAppSelector.currentDatachart; + currentTimeStep = _useSelector.currentTimeStep, + showCompare = _useSelector.showCompare, + currentDatachart = _useSelector.currentDatachart; var client = (0, _cozyClient.useClient)(); @@ -6076,9 +6017,9 @@ var _I18n = __webpack_require__("buk/"); var _react = _interopRequireDefault(__webpack_require__("q1tI")); -var _chart = __webpack_require__("idK9"); +var _reactRedux = __webpack_require__("/MKj"); -var _hooks = __webpack_require__("Zlw4"); +var _chart = __webpack_require__("idK9"); var _modal = __webpack_require__("oKH6"); @@ -6092,7 +6033,7 @@ var GrdfBill = function GrdfBill(_ref) { var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; - var dispatch = (0, _hooks.useAppDispatch)(); + var dispatch = (0, _reactRedux.useDispatch)(); return /*#__PURE__*/_react.default.createElement("div", { className: "connection-form" }, /*#__PURE__*/_react.default.createElement("p", { @@ -6551,11 +6492,11 @@ var _fluid = __webpack_require__("5Wkc"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _reactRouterDom = __webpack_require__("SOjZ"); +var _reactRedux = __webpack_require__("/MKj"); -var _global = __webpack_require__("b3rE"); +var _reactRouterDom = __webpack_require__("SOjZ"); -var _hooks = __webpack_require__("Zlw4"); +var _global = __webpack_require__("c4IZ"); var _utils = __webpack_require__("c+yx"); @@ -6575,12 +6516,12 @@ var ExpiredConsentModal = function ExpiredConsentModal(_ref) { t = _useI18n.t; var navigate = (0, _reactRouterDom.useNavigate)(); - var dispatch = (0, _hooks.useAppDispatch)(); + var dispatch = (0, _reactRedux.useDispatch)(); - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo.global; }), - fluidStatus = _useAppSelector.fluidStatus; + fluidStatus = _useSelector.fluidStatus; var launchUpdateConsent = (0, _react.useCallback)(function () { if (fluidType === _fluid.FluidType.ELECTRICITY) { @@ -6703,7 +6644,7 @@ var _I18n = __webpack_require__("buk/"); var _react = _interopRequireDefault(__webpack_require__("q1tI")); -var _hooks = __webpack_require__("Zlw4"); +var _reactRedux = __webpack_require__("/MKj"); var _decoreText = __webpack_require__("j5h9"); @@ -6716,10 +6657,10 @@ var ReleaseNotesModal = function ReleaseNotesModal(_ref) { var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo.global; }), - releaseNotes = _useAppSelector.releaseNotes; + releaseNotes = _useSelector.releaseNotes; return /*#__PURE__*/_react.default.createElement(_Dialog.default, { open: open, @@ -6910,9 +6851,9 @@ var _I18n = __webpack_require__("buk/"); var _react = _interopRequireDefault(__webpack_require__("q1tI")); -var _chart = __webpack_require__("idK9"); +var _reactRedux = __webpack_require__("/MKj"); -var _hooks = __webpack_require__("Zlw4"); +var _chart = __webpack_require__("idK9"); var _modal = __webpack_require__("oKH6"); @@ -6926,7 +6867,7 @@ var EpglBill = function EpglBill(_ref) { var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; - var dispatch = (0, _hooks.useAppDispatch)(); + var dispatch = (0, _reactRedux.useDispatch)(); return /*#__PURE__*/_react.default.createElement("div", { className: "connection-form" }, /*#__PURE__*/_react.default.createElement("p", { @@ -7131,15 +7072,15 @@ var _luxon = __webpack_require__("ExVU"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); +var _reactRedux = __webpack_require__("/MKj"); + var _account2 = _interopRequireDefault(__webpack_require__("gucQ")); var _dateChart = _interopRequireDefault(__webpack_require__("Ty7+")); var _triggers = _interopRequireDefault(__webpack_require__("7d5P")); -var _global = __webpack_require__("b3rE"); - -var _hooks = __webpack_require__("Zlw4"); +var _global = __webpack_require__("c4IZ"); var _utils = __webpack_require__("c+yx"); @@ -7172,7 +7113,7 @@ var ConnectionResult = function ConnectionResult(_ref) { t = _useI18n.t; var client = (0, _cozyClient.useClient)(); - var dispatch = (0, _hooks.useAppDispatch)(); + var dispatch = (0, _reactRedux.useDispatch)(); var account = fluidStatus.connection.account; var _useState = (0, _react.useState)(false), @@ -7231,10 +7172,7 @@ var ConnectionResult = function ConnectionResult(_ref) { shouldLaunchKonnector: true, isUpdating: true }); - dispatch((0, _global.updateFluidConnection)({ - fluidType: fluidStatus.fluidType, - fluidConnection: updatedConnection - })); + dispatch((0, _global.updatedFluidConnection)(fluidStatus.fluidType, updatedConnection)); setUpdating(false); case 7: @@ -7711,14 +7649,14 @@ var _luxon = __webpack_require__("ExVU"); var _react = _interopRequireDefault(__webpack_require__("q1tI")); +var _reactRedux = __webpack_require__("/MKj"); + var _dateChart = _interopRequireDefault(__webpack_require__("Ty7+")); var _usageEvent2 = _interopRequireDefault(__webpack_require__("dECN")); var _chart = __webpack_require__("idK9"); -var _hooks = __webpack_require__("Zlw4"); - var _utils = __webpack_require__("c+yx"); __webpack_require__("Nxpj"); @@ -7726,17 +7664,16 @@ __webpack_require__("Nxpj"); var TimeStepSelector = function TimeStepSelector(_ref) { var fluidType = _ref.fluidType; - var _useI18n = (0, _I18n.useI18n)(), - t = _useI18n.t; - - var dispatch = (0, _hooks.useAppDispatch)(); - - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo.chart; }), - currentTimeStep = _useAppSelector.currentTimeStep, - selectedDate = _useAppSelector.selectedDate; + currentTimeStep = _useSelector.currentTimeStep, + selectedDate = _useSelector.selectedDate; + + var _useI18n = (0, _I18n.useI18n)(), + t = _useI18n.t; + var dispatch = (0, _reactRedux.useDispatch)(); var dateChartService = new _dateChart.default(); var client = (0, _cozyClient.useClient)(); var timeStepElecArray = [_timeStep.TimeStep.HALF_AN_HOUR, _timeStep.TimeStep.WEEK, _timeStep.TimeStep.DAY, _timeStep.TimeStep.MONTH, _timeStep.TimeStep.YEAR]; @@ -7827,7 +7764,7 @@ var _EpglConnectModal = _interopRequireDefault(__webpack_require__("b88j")); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _hooks = __webpack_require__("Zlw4"); +var _reactRedux = __webpack_require__("/MKj"); var _modal = __webpack_require__("oKH6"); @@ -7843,12 +7780,12 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && var EpglInit = function EpglInit(_ref) { var fluidStatus = _ref.fluidStatus; - var dispatch = (0, _hooks.useAppDispatch)(); + var dispatch = (0, _reactRedux.useDispatch)(); - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { - return state.ecolyo.modal; + var _useSelector = (0, _reactRedux.useSelector)(function (state) { + return state.ecolyo; }), - isConnectionModalOpen = _useAppSelector.isConnectionModalOpen; + isConnectionModalOpen = _useSelector.modal.isConnectionModalOpen; var siteLink = fluidStatus.connection.konnectorConfig.siteLink; @@ -7961,12 +7898,12 @@ var _fluid = __webpack_require__("5Wkc"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); +var _reactRedux = __webpack_require__("/MKj"); + var _dateChart = _interopRequireDefault(__webpack_require__("Ty7+")); var _chart = __webpack_require__("idK9"); -var _hooks = __webpack_require__("Zlw4"); - var _NoDataModal = _interopRequireDefault(__webpack_require__("1Yut")); __webpack_require__("bBuF"); @@ -7983,12 +7920,12 @@ var InfoDataConsumptionVisualizer = function InfoDataConsumptionVisualizer(_ref) var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; - var dispatch = (0, _hooks.useAppDispatch)(); + var dispatch = (0, _reactRedux.useDispatch)(); - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo.chart; }), - currentTimeStep = _useAppSelector.currentTimeStep; + currentTimeStep = _useSelector.currentTimeStep; var _useState = (0, _react.useState)(false), _useState2 = (0, _slicedToArray2.default)(_useState, 2), diff --git a/6/ecolyo.00b7bb572cf6a542f328.js b/6/ecolyo.1540774c38e7b6124ec7.js similarity index 96% rename from 6/ecolyo.00b7bb572cf6a542f328.js rename to 6/ecolyo.1540774c38e7b6124ec7.js index 84e5bcf2e10d4d01feafc488a5d0bcdca8ccdbfe..baef61fdfcd52bd54e48a205b6b252e5877c21de 100644 --- a/6/ecolyo.00b7bb572cf6a542f328.js +++ b/6/ecolyo.1540774c38e7b6124ec7.js @@ -15,6 +15,8 @@ exports.default = void 0; var _regenerator = _interopRequireDefault(__webpack_require__("o0o1")); +var _extends2 = _interopRequireDefault(__webpack_require__("pVnL")); + var _defineProperty2 = _interopRequireDefault(__webpack_require__("lSNA")); var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__("yXPU")); @@ -43,12 +45,12 @@ var _ecogesture = __webpack_require__("SpsK"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); +var _reactRedux = __webpack_require__("/MKj"); + var _reactRouterDom = __webpack_require__("SOjZ"); var _ecogesture2 = _interopRequireDefault(__webpack_require__("w4u3")); -var _hooks = __webpack_require__("Zlw4"); - var _profile = __webpack_require__("jPH6"); var _EcogestureEmptyList = _interopRequireDefault(__webpack_require__("vfcT")); @@ -76,24 +78,28 @@ var TabPanel = function TabPanel(_ref) { }; var EcogestureView = function EcogestureView() { + var _useState = (0, _react.useState)(0), + _useState2 = (0, _slicedToArray2.default)(_useState, 2), + headerHeight = _useState2[0], + setHeaderHeight = _useState2[1]; + + var defineHeaderHeight = function defineHeaderHeight(height) { + setHeaderHeight(height); + }; + var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; var client = (0, _cozyClient.useClient)(); + var dispatch = (0, _reactRedux.useDispatch)(); var tab = new URLSearchParams((0, _reactRouterDom.useLocation)().search).get('tab'); - var dispatch = (0, _hooks.useAppDispatch)(); - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo; }), - profile = _useAppSelector.profile, - profileEcogesture = _useAppSelector.profileEcogesture, - profileType = _useAppSelector.profileType; - - var _useState = (0, _react.useState)(0), - _useState2 = (0, _slicedToArray2.default)(_useState, 2), - headerHeight = _useState2[0], - setHeaderHeight = _useState2[1]; + profile = _useSelector.profile, + profileEcogesture = _useSelector.profileEcogesture, + profileType = _useSelector.profileType; var _useState3 = (0, _react.useState)(tab ? parseInt(tab) : _ecogesture.EcogestureTab.OBJECTIVE), _useState4 = (0, _slicedToArray2.default)(_useState3, 2), @@ -220,6 +226,12 @@ var EcogestureView = function EcogestureView() { }); setTabValue(newValue); }, [navigate]); + var tabProps = (0, _react.useCallback)(function (index) { + return { + id: "simple-tab-".concat(index), + 'aria-controls': "simple-tabpanel-".concat(index) + }; + }, []); var getTabLabel = (0, _react.useCallback)(function (tab) { var _tabCounts; @@ -298,8 +310,15 @@ var EcogestureView = function EcogestureView() { }, [client, profileEcogesture, profileType, dispatch, profile.ecogestureHash]); return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_CozyBar.default, { titleKey: 'common.title_ecogestures' - }), /*#__PURE__*/_react.default.createElement(_Header.default, { - setHeaderHeight: setHeaderHeight, + }), isLoading && /*#__PURE__*/_react.default.createElement(_Content.default, { + height: headerHeight + }, /*#__PURE__*/_react.default.createElement("div", { + className: "ecogesture-spinner", + "aria-busy": "true" + }, /*#__PURE__*/_react.default.createElement(_Loader.default, { + text: t('ecogestures.loading') + }))), !isLoading && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Header.default, { + setHeaderHeight: defineHeaderHeight, desktopTitleKey: 'common.title_ecogestures' }, /*#__PURE__*/_react.default.createElement(_core.Tabs, { value: tabValue, @@ -310,31 +329,18 @@ var EcogestureView = function EcogestureView() { className: 'indicator-tab' }, centered: true - }, /*#__PURE__*/_react.default.createElement(_core.Tab, { + }, /*#__PURE__*/_react.default.createElement(_core.Tab, (0, _extends2.default)({ label: getTabLabel(_ecogesture.EcogestureTab.OBJECTIVE), - className: (0, _classnames.default)('single-tab', (0, _defineProperty2.default)({}, 'active', tabValue === _ecogesture.EcogestureTab.OBJECTIVE)), - id: "simple-tab-".concat(_ecogesture.EcogestureTab.OBJECTIVE), - "aria-controls": "simple-tabpanel-".concat(_ecogesture.EcogestureTab.OBJECTIVE), - tabIndex: 0 - }), /*#__PURE__*/_react.default.createElement(_core.Tab, { + className: (0, _classnames.default)('single-tab', (0, _defineProperty2.default)({}, 'active', tabValue === _ecogesture.EcogestureTab.OBJECTIVE)) + }, tabProps(_ecogesture.EcogestureTab.OBJECTIVE))), /*#__PURE__*/_react.default.createElement(_core.Tab, (0, _extends2.default)({ label: getTabLabel(_ecogesture.EcogestureTab.DOING), - className: (0, _classnames.default)('single-tab', (0, _defineProperty2.default)({}, 'active', tabValue === _ecogesture.EcogestureTab.DOING)), - id: "simple-tab-".concat(_ecogesture.EcogestureTab.DOING), - "aria-controls": "simple-tabpanel-".concat(_ecogesture.EcogestureTab.DOING), - tabIndex: 0 - }), /*#__PURE__*/_react.default.createElement(_core.Tab, { + className: (0, _classnames.default)('single-tab', (0, _defineProperty2.default)({}, 'active', tabValue === _ecogesture.EcogestureTab.DOING)) + }, tabProps(_ecogesture.EcogestureTab.DOING))), /*#__PURE__*/_react.default.createElement(_core.Tab, (0, _extends2.default)({ label: getTabLabel(_ecogesture.EcogestureTab.ALL), - className: (0, _classnames.default)('single-tab', (0, _defineProperty2.default)({}, 'active', tabValue === _ecogesture.EcogestureTab.ALL)), - id: "simple-tab-".concat(_ecogesture.EcogestureTab.ALL), - "aria-controls": "simple-tabpanel-".concat(_ecogesture.EcogestureTab.ALL), - tabIndex: 0 - }))), /*#__PURE__*/_react.default.createElement(_Content.default, { - heightOffset: headerHeight - }, isLoading && /*#__PURE__*/_react.default.createElement("div", { - className: "loaderContainer" - }, /*#__PURE__*/_react.default.createElement(_Loader.default, { - text: t('ecogestures.loading') - })), !isLoading && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(TabPanel, { + className: (0, _classnames.default)('single-tab', (0, _defineProperty2.default)({}, 'active', tabValue === _ecogesture.EcogestureTab.ALL)) + }, tabProps(_ecogesture.EcogestureTab.ALL))))), /*#__PURE__*/_react.default.createElement(_Content.default, { + height: headerHeight + }, /*#__PURE__*/_react.default.createElement(TabPanel, { value: tabValue, tab: _ecogesture.EcogestureTab.OBJECTIVE }, profile.isProfileEcogestureCompleted && (totalAvailable === totalViewed && objectiveEcogestureList.length === 0 ? /*#__PURE__*/_react.default.createElement(_EcogestureEmptyList.default, { @@ -380,7 +386,7 @@ var EcogestureView = function EcogestureView() { displaySelection: false, selectionTotal: totalAvailable, selectionViewed: totalViewed - }))), openEcogestureInitModal && /*#__PURE__*/_react.default.createElement(_EcogestureInitModal.default, { + })))), openEcogestureInitModal && /*#__PURE__*/_react.default.createElement(_EcogestureInitModal.default, { open: openEcogestureInitModal, handleCloseClick: handleCloseEcogestureInitModal, handleLaunchForm: handleLaunchForm @@ -388,7 +394,7 @@ var EcogestureView = function EcogestureView() { open: openEcogestureReinitModal, handleCloseClick: handleCloseEcogestureReinitModal, handleLaunchReinit: handleLaunchReinit - }))); + })); }; var _default = EcogestureView; @@ -955,9 +961,7 @@ var EcogestureList = function EcogestureList(_ref) { className: "ecogesture-root" }, /*#__PURE__*/_react.default.createElement("div", { className: "efficiency-button-content" - }, displaySelection ? /*#__PURE__*/_react.default.createElement(_core.Grow, { - in: displaySelection - }, /*#__PURE__*/_react.default.createElement("div", { + }, displaySelection ? /*#__PURE__*/_react.default.createElement("div", { className: "selection text-16-normal" }, /*#__PURE__*/_react.default.createElement("span", null, t('ecogesture.selection')), /*#__PURE__*/_react.default.createElement("span", null, "(".concat(selectionViewed, " ").concat(t('ecogesture.selection_2'), " ").concat(selectionTotal, ")")), /*#__PURE__*/_react.default.createElement(_Button.default, { "aria-label": t('ecogesture.accessibility.button_selection'), @@ -968,9 +972,7 @@ var EcogestureList = function EcogestureList(_ref) { onClick: function onClick() { return navigate('/ecogesture-selection'); } - }, t('ecogesture.button_selection')))) : /*#__PURE__*/_react.default.createElement(_core.Grow, { - in: !displaySelection - }, /*#__PURE__*/_react.default.createElement("div", { + }, t('ecogesture.button_selection'))) : /*#__PURE__*/_react.default.createElement("div", { className: "filters text-16-normal" }, /*#__PURE__*/_react.default.createElement("div", { className: "filter-button", @@ -1028,7 +1030,7 @@ var EcogestureList = function EcogestureList(_ref) { icon: _check.default, size: 13 }))); - })))))), /*#__PURE__*/_react.default.createElement("div", { + }))))), /*#__PURE__*/_react.default.createElement("div", { className: "ecogesture-content" }, renderEcogestureContent(), !displaySelection && handleReinitClick && /*#__PURE__*/_react.default.createElement(_Button.default, { onClick: handleReinitClick, diff --git a/7/ecolyo.a370d4053c6db809d6d5.js b/7/ecolyo.8129fd19ad98c11c5897.js similarity index 90% rename from 7/ecolyo.a370d4053c6db809d6d5.js rename to 7/ecolyo.8129fd19ad98c11c5897.js index 07a01c6135f06573aefef022254ce537836c8f0e..ebdbafc5578817b4d0a0dedc4a896bcd760affdf 100644 --- a/7/ecolyo.a370d4053c6db809d6d5.js +++ b/7/ecolyo.8129fd19ad98c11c5897.js @@ -66,11 +66,12 @@ var _luxon = __webpack_require__("ExVU"); var _react = _interopRequireDefault(__webpack_require__("q1tI")); +var _reactRedux = __webpack_require__("/MKj"); + var BarChart = function BarChart(_ref) { var chartData = _ref.chartData, fluidType = _ref.fluidType, timeStep = _ref.timeStep, - showCompare = _ref.showCompare, _ref$width = _ref.width, width = _ref$width === void 0 ? 600 : _ref$width, _ref$height = _ref.height, @@ -87,6 +88,11 @@ var BarChart = function BarChart(_ref) { _ref$clickable = _ref.clickable, clickable = _ref$clickable === void 0 ? true : _ref$clickable; + var _useSelector = (0, _reactRedux.useSelector)(function (state) { + return state.ecolyo.chart; + }), + showCompare = _useSelector.showCompare; + var getContentWidth = function getContentWidth() { return width - marginLeft - marginRight; }; @@ -237,46 +243,115 @@ var _I18n = __webpack_require__("buk/"); var _Icon = _interopRequireDefault(__webpack_require__("y6ex")); +var _fluid = __webpack_require__("5Wkc"); + +var _timeStep = __webpack_require__("cKQ8"); + +var _luxon = __webpack_require__("ExVU"); + var _react = _interopRequireDefault(__webpack_require__("q1tI")); +var _reactRedux = __webpack_require__("/MKj"); + +var _dateChart = _interopRequireDefault(__webpack_require__("Ty7+")); + +var _analysis = __webpack_require__("JQjK"); + +var _chart = __webpack_require__("idK9"); + +var _date = __webpack_require__("XrP9"); + +var _utils = __webpack_require__("c+yx"); + __webpack_require__("pBt2"); var DateNavigator = function DateNavigator(_ref) { - var disableNext = _ref.disableNext, - disablePrev = _ref.disablePrev, - handleNextDate = _ref.handleNextDate, - handlePrevDate = _ref.handlePrevDate, + var currentAnalysisDate = _ref.currentAnalysisDate, _ref$inlineDateDispla = _ref.inlineDateDisplay, - inlineDateDisplay = _ref$inlineDateDispla === void 0 ? false : _ref$inlineDateDispla, - navigatorDate = _ref.navigatorDate, - timeStep = _ref.timeStep; + inlineDateDisplay = _ref$inlineDateDispla === void 0 ? false : _ref$inlineDateDispla; var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; + var dispatch = (0, _reactRedux.useDispatch)(); + + var _useSelector = (0, _reactRedux.useSelector)(function (state) { + return state.ecolyo; + }), + _useSelector$chart = _useSelector.chart, + currentTimeStep = _useSelector$chart.currentTimeStep, + selectedDate = _useSelector$chart.selectedDate, + currentIndex = _useSelector$chart.currentIndex, + fluidStatus = _useSelector.global.fluidStatus; + + var disablePrev = selectedDate < _luxon.DateTime.local(0, 1, 1).setZone('utc', { + keepLocalTime: true + }); + + var disableNext = currentAnalysisDate ? (0, _date.isLastDateReached)(currentAnalysisDate, _timeStep.TimeStep.MONTH) : (0, _date.isLastDateReached)(selectedDate, currentTimeStep); + var dateChartService = new _dateChart.default(); + /** Handle date navigation from ConsumptionView and Analysis view, not ideal though */ + + var handleClickMove = function handleClickMove(increment) { + if (!currentAnalysisDate) { + var updatedDate = dateChartService.incrementDate(currentTimeStep, selectedDate, increment); + var updatedIndex = dateChartService.defineDateIndex(currentTimeStep, updatedDate); + dispatch((0, _chart.setSelectedDate)(updatedDate)); + dispatch((0, _chart.setCurrentIndex)(updatedIndex)); + } else { + var _updatedDate = dateChartService.incrementDate(_timeStep.TimeStep.MONTH, currentAnalysisDate, increment); + + dispatch((0, _analysis.setAnalysisMonth)(_updatedDate)); + } + }; + + var handleChangePrevIndex = function handleChangePrevIndex() { + if (!disablePrev && (0, _utils.isKonnectorActive)(fluidStatus, _fluid.FluidType.MULTIFLUID)) { + var increment = dateChartService.defineIncrementForPreviousIndex(currentTimeStep, selectedDate, currentIndex); + + if (currentAnalysisDate) { + handleClickMove(-1); + } else handleClickMove(increment); + } + }; + + var handleChangeNextIndex = function handleChangeNextIndex() { + if (!disableNext && (0, _utils.isKonnectorActive)(fluidStatus, _fluid.FluidType.MULTIFLUID)) { + var increment = dateChartService.defineIncrementForNextIndex(currentTimeStep, selectedDate, currentIndex); + + if (currentAnalysisDate) { + handleClickMove(1); + } else handleClickMove(increment); + } + }; + return /*#__PURE__*/_react.default.createElement("div", { className: "date-navigator" - }, /*#__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("div", null, /*#__PURE__*/_react.default.createElement(_IconButton.default, { + "aria-label": t('consumption.accessibility.button_previous_value'), + className: (0, _classnames.default)('date-navigator-button', (0, _defineProperty2.default)({}, 'disable', disablePrev || !(0, _utils.isKonnectorActive)(fluidStatus, _fluid.FluidType.MULTIFLUID))), + onClick: function onClick() { + return handleChangePrevIndex(); + } }, /*#__PURE__*/_react.default.createElement(_Icon.default, { icon: _leftArrow.default, size: 16 - })), /*#__PURE__*/_react.default.createElement(_DateNavigatorFormat.default, { - timeStep: timeStep, - date: navigatorDate, + }))), /*#__PURE__*/_react.default.createElement(_DateNavigatorFormat.default, { + timeStep: currentAnalysisDate ? _timeStep.TimeStep.MONTH : currentTimeStep, + date: currentAnalysisDate ? currentAnalysisDate.minus({ + month: 1 + }) : selectedDate, inline: inlineDateDisplay - }), /*#__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("div", null, /*#__PURE__*/_react.default.createElement(_IconButton.default, { + "aria-label": t('consumption.accessibility.button_next_value'), + className: (0, _classnames.default)('date-navigator-button', (0, _defineProperty2.default)({}, 'disable', disableNext || !(0, _utils.isKonnectorActive)(fluidStatus, _fluid.FluidType.MULTIFLUID))), + onClick: function onClick() { + return handleChangeNextIndex(); + } }, /*#__PURE__*/_react.default.createElement(_Icon.default, { icon: _rightArrow.default, size: 16 - }))); + })))); }; var _default = DateNavigator; diff --git a/9/ecolyo.2b511cc19b26b50403ba.js b/9/ecolyo.4facae32c2f3722bac49.js similarity index 85% rename from 9/ecolyo.2b511cc19b26b50403ba.js rename to 9/ecolyo.4facae32c2f3722bac49.js index 27a1a993484cf08897634fe3239c2ed8c48b0bcb..2ec6d0819d89a57df8aad963fd38e02717bf5c01 100644 --- a/9/ecolyo.2b511cc19b26b50403ba.js +++ b/9/ecolyo.4facae32c2f3722bac49.js @@ -57,12 +57,12 @@ var _Icon = _interopRequireDefault(__webpack_require__("y6ex")); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); +var _reactRedux = __webpack_require__("/MKj"); + var _reactRouterDom = __webpack_require__("SOjZ"); var _ecogesture = _interopRequireDefault(__webpack_require__("w4u3")); -var _hooks = __webpack_require__("Zlw4"); - var _utils = __webpack_require__("c+yx"); var _EfficiencyRating = _interopRequireDefault(__webpack_require__("Zjkz")); @@ -84,6 +84,7 @@ var SingleEcogesture = function SingleEcogesture() { t = _useI18n.t; var client = (0, _cozyClient.useClient)(); + var navigate = (0, _reactRouterDom.useNavigate)(); var location = (0, _reactRouterDom.useLocation)(); var _useState = (0, _react.useState)(), @@ -124,16 +125,20 @@ var SingleEcogesture = function SingleEcogesture() { return new _ecogesture.default(client); }, [client]); - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo.challenge; }), - currentChallenge = _useAppSelector.currentChallenge; + currentChallenge = _useSelector.currentChallenge; var _useState13 = (0, _react.useState)(0), _useState14 = (0, _slicedToArray2.default)(_useState13, 2), headerHeight = _useState14[0], setHeaderHeight = _useState14[1]; + var defineHeaderHeight = function defineHeaderHeight(height) { + setHeaderHeight(height); + }; + var _useExploration = (0, _useExploration3.default)(), _useExploration2 = (0, _slicedToArray2.default)(_useExploration, 2), setValidExploration = _useExploration2[1]; @@ -278,73 +283,85 @@ var SingleEcogesture = function SingleEcogesture() { subscribed = false; }; }, [client, currentChallenge, ecogestureID, ecogestureService, setValidExploration]); - return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_CozyBar.default, { - titleKey: 'common.title_ecogesture', - displayBackArrow: true - }), /*#__PURE__*/_react.default.createElement(_Header.default, { - setHeaderHeight: setHeaderHeight, - desktopTitleKey: 'common.title_ecogesture', - displayBackArrow: true - }), /*#__PURE__*/_react.default.createElement(_Content.default, { - heightOffset: headerHeight - }, isLoading && /*#__PURE__*/_react.default.createElement("div", { - className: "loaderContainer" - }, /*#__PURE__*/_react.default.createElement(_Loader.default, null)), !isLoading && !ecogesture && /*#__PURE__*/_react.default.createElement(_ErrorPage.default, { + + if (isLoading) { + return /*#__PURE__*/_react.default.createElement(_Content.default, { + height: headerHeight + }, /*#__PURE__*/_react.default.createElement(_Loader.default, null)); + } + + if (ecogesture) { + return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_CozyBar.default, { + titleKey: 'common.title_ecogesture', + displayBackArrow: true, + backFunction: function backFunction() { + return navigate('/ecogestures'); + } + }), /*#__PURE__*/_react.default.createElement(_Header.default, { + setHeaderHeight: defineHeaderHeight, + desktopTitleKey: 'common.title_ecogesture', + displayBackArrow: true + }), /*#__PURE__*/_react.default.createElement(_Content.default, { + height: headerHeight + }, /*#__PURE__*/_react.default.createElement("div", { + className: "single-ecogesture" + }, /*#__PURE__*/_react.default.createElement("div", { + className: "icon-container" + }, ecogestureIcon && /*#__PURE__*/_react.default.createElement(_StyledIcon.default, { + className: "icon-big", + icon: ecogestureIcon, + size: 220 + })), /*#__PURE__*/_react.default.createElement("div", { + className: "details" + }, /*#__PURE__*/_react.default.createElement("div", { + className: "text-22 title" + }, ecogesture.shortName), /*#__PURE__*/_react.default.createElement("div", { + className: "efficiency" + }, /*#__PURE__*/_react.default.createElement("span", { + className: "text text-14-normal" + }, t('ecogesture_modal.efficiency')), /*#__PURE__*/_react.default.createElement(_EfficiencyRating.default, { + result: Math.round(ecogesture.efficiency) + }))), /*#__PURE__*/_react.default.createElement("div", { + className: "styled-container" + }, /*#__PURE__*/_react.default.createElement("div", { + className: "long-name text-18-bold" + }, ecogesture.longName), /*#__PURE__*/_react.default.createElement("div", { + className: "toggle-text text-15-normal", + onClick: toggleMoreDetail, + role: "button" + }, isMoreDetail ? t('ecogesture_modal.show_less') : t('ecogesture_modal.show_more')), /*#__PURE__*/_react.default.createElement("div", { + className: (0, _classnames.default)('description text-16-normal-150', (0, _defineProperty2.default)({}, 'block', isMoreDetail === true)) + }, ecogesture.longDescription)), selectionCompleted && /*#__PURE__*/_react.default.createElement("div", { + className: "buttons-selection" + }, /*#__PURE__*/_react.default.createElement(_IconButton.default, { + "aria-label": t('ecogesture.objective'), + onClick: toggleObjective, + classes: { + root: "btn-secondary-negative objective-btn ".concat(isObjective && 'active'), + label: 'text-15-normal' + } + }, /*#__PURE__*/_react.default.createElement(_Icon.default, { + className: "status-icon", + icon: isObjective ? _objectiveEnabled.default : _objectiveDisabled.default, + size: 40 + }), /*#__PURE__*/_react.default.createElement("span", null, t('ecogesture.objective'))), /*#__PURE__*/_react.default.createElement(_IconButton.default, { + "aria-label": t('ecogesture.doing'), + onClick: toggleDoing, + classes: { + root: "btn-secondary-negative doing-btn ".concat(isDoing && 'active'), + label: 'text-15-normal' + } + }, /*#__PURE__*/_react.default.createElement(_Icon.default, { + className: "status-icon", + icon: isDoing ? _doingEnabled.default : _doingDisabled.default, + size: 40 + }), /*#__PURE__*/_react.default.createElement("span", null, t('ecogesture.doing'))))))); + } + + return /*#__PURE__*/_react.default.createElement(_ErrorPage.default, { text: t('error_page.no_ecogesture'), returnPage: 'ecogestures' - }), !isLoading && ecogesture && /*#__PURE__*/_react.default.createElement("div", { - className: "single-ecogesture" - }, /*#__PURE__*/_react.default.createElement("div", { - className: "icon-container" - }, ecogestureIcon && /*#__PURE__*/_react.default.createElement(_StyledIcon.default, { - className: "icon-big", - icon: ecogestureIcon, - size: 220 - })), /*#__PURE__*/_react.default.createElement("div", { - className: "details" - }, /*#__PURE__*/_react.default.createElement("div", { - className: "text-22 title" - }, ecogesture.shortName), /*#__PURE__*/_react.default.createElement("div", { - className: "efficiency" - }, /*#__PURE__*/_react.default.createElement("span", { - className: "text text-14-normal" - }, t('ecogesture_modal.efficiency')), /*#__PURE__*/_react.default.createElement(_EfficiencyRating.default, { - result: Math.round(ecogesture.efficiency) - }))), /*#__PURE__*/_react.default.createElement("div", { - className: "styled-container" - }, /*#__PURE__*/_react.default.createElement("div", { - className: "long-name text-18-bold" - }, ecogesture.longName), /*#__PURE__*/_react.default.createElement("div", { - className: "toggle-text text-15-normal", - onClick: toggleMoreDetail, - role: "button" - }, isMoreDetail ? t('ecogesture_modal.show_less') : t('ecogesture_modal.show_more')), /*#__PURE__*/_react.default.createElement("div", { - className: (0, _classnames.default)('description text-16-normal-150', (0, _defineProperty2.default)({}, 'block', isMoreDetail === true)) - }, ecogesture.longDescription)), selectionCompleted && /*#__PURE__*/_react.default.createElement("div", { - className: "buttons-selection" - }, /*#__PURE__*/_react.default.createElement(_IconButton.default, { - "aria-label": t('ecogesture.objective'), - onClick: toggleObjective, - classes: { - root: "btn-secondary-negative objective-btn ".concat(isObjective && 'active'), - label: 'text-15-normal' - } - }, /*#__PURE__*/_react.default.createElement(_Icon.default, { - className: "status-icon", - icon: isObjective ? _objectiveEnabled.default : _objectiveDisabled.default, - size: 40 - }), /*#__PURE__*/_react.default.createElement("span", null, t('ecogesture.objective'))), /*#__PURE__*/_react.default.createElement(_IconButton.default, { - "aria-label": t('ecogesture.doing'), - onClick: toggleDoing, - classes: { - root: "btn-secondary-negative doing-btn ".concat(isDoing && 'active'), - label: 'text-15-normal' - } - }, /*#__PURE__*/_react.default.createElement(_Icon.default, { - className: "status-icon", - icon: isDoing ? _doingEnabled.default : _doingDisabled.default, - size: 40 - }), /*#__PURE__*/_react.default.createElement("span", null, t('ecogesture.doing'))))))); + }); }; var _default = SingleEcogesture; @@ -512,24 +529,30 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && var ErrorPage = function ErrorPage(_ref) { var text = _ref.text, returnPage = _ref.returnPage; + var navigate = (0, _reactRouterDom.useNavigate)(); var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; - var navigate = (0, _reactRouterDom.useNavigate)(); - var _useState = (0, _react.useState)(0), _useState2 = (0, _slicedToArray2.default)(_useState, 2), headerHeight = _useState2[0], setHeaderHeight = _useState2[1]; + var defineHeaderHeight = function defineHeaderHeight(height) { + setHeaderHeight(height); + }; + + var handleClick = (0, _react.useCallback)(function () { + navigate("/".concat(returnPage)); + }, [navigate, returnPage]); return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_CozyBar.default, { titleKey: 'error_page.main' }), /*#__PURE__*/_react.default.createElement(_Header.default, { - setHeaderHeight: setHeaderHeight, + setHeaderHeight: defineHeaderHeight, desktopTitleKey: 'error_page.main' }), /*#__PURE__*/_react.default.createElement(_Content.default, { - heightOffset: headerHeight + height: headerHeight }, /*#__PURE__*/_react.default.createElement("div", { className: "error-container" }, /*#__PURE__*/_react.default.createElement(_StyledIcon.default, { @@ -540,9 +563,7 @@ var ErrorPage = function ErrorPage(_ref) { className: "text-18-bold head" }, text), /*#__PURE__*/_react.default.createElement(_core.Button, { "aria-label": t('error_page.back'), - onClick: function onClick() { - return navigate("/".concat(returnPage)); - }, + onClick: handleClick, variant: 'contained', classes: { root: 'btn-highlight', diff --git a/app/ecolyo.ed0861bcd1528132798c.js b/app/ecolyo.9c6f20e5996a8ab34cd7.js similarity index 97% rename from app/ecolyo.ed0861bcd1528132798c.js rename to app/ecolyo.9c6f20e5996a8ab34cd7.js index acf699ce727495517ff7ff82b2269dfeb810b890..ae4c8ec9b76055948243bbe735c46fa5c18b0d53 100644 --- a/app/ecolyo.ed0861bcd1528132798c.js +++ b/app/ecolyo.9c6f20e5996a8ab34cd7.js @@ -64,7 +64,7 @@ /******/ /******/ // script path function /******/ function jsonpScriptSrc(chunkId) { -/******/ return __webpack_require__.p + "" + ({}[chunkId]||chunkId) + "/ecolyo." + {"1":"415fd625cd64389d9c8d","3":"69bb5ef59bba3ab8f904","4":"c76888d97f431150c7d1","5":"0c0733cd2d8d715775f6","6":"00b7bb572cf6a542f328","7":"a370d4053c6db809d6d5","8":"a9363dc7eb1de5bcc528","9":"2b511cc19b26b50403ba","10":"24e1a14cab96b50d3fbd"}[chunkId] + ".js" +/******/ return __webpack_require__.p + "" + ({}[chunkId]||chunkId) + "/ecolyo." + {"1":"c44aefc530d1de68ee3f","3":"dc7b4fa6e755df72417e","4":"f22d2e8508212a56cb53","5":"72a7eabe03dee9217ec1","6":"1540774c38e7b6124ec7","7":"8129fd19ad98c11c5897","8":"a9363dc7eb1de5bcc528","9":"4facae32c2f3722bac49","10":"e8a00fc8bc16cb5a9dfd"}[chunkId] + ".js" /******/ } /******/ /******/ // The require function @@ -257,9 +257,9 @@ var _usageEvent = __webpack_require__("/fHX"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _usageEvent2 = _interopRequireDefault(__webpack_require__("dECN")); +var _reactRedux = __webpack_require__("/MKj"); -var _hooks = __webpack_require__("Zlw4"); +var _usageEvent2 = _interopRequireDefault(__webpack_require__("dECN")); var _utils = __webpack_require__("c+yx"); @@ -286,10 +286,10 @@ var ActionCard = function ActionCard(_ref) { var client = (0, _cozyClient.useClient)(); - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo.challenge; }), - currentChallenge = _useAppSelector.currentChallenge; + currentChallenge = _useSelector.currentChallenge; var toggleModal = (0, _react.useCallback)(function () { setOpenEcogestureModal(function (prev) { @@ -407,6 +407,8 @@ var _userChallenge = __webpack_require__("dQx6"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); +var _reactRedux = __webpack_require__("/MKj"); + var _challenge = _interopRequireDefault(__webpack_require__("kdea")); var _quiz = _interopRequireDefault(__webpack_require__("CUhI")); @@ -415,8 +417,6 @@ var _usageEvent2 = _interopRequireDefault(__webpack_require__("dECN")); var _challenge2 = __webpack_require__("F6Xr"); -var _hooks = __webpack_require__("Zlw4"); - __webpack_require__("mFBf"); 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); } @@ -432,9 +432,6 @@ var QuizCustomQuestionContent = function QuizCustomQuestionContent(_ref) { var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; - var client = (0, _cozyClient.useClient)(); - var dispatch = (0, _hooks.useAppDispatch)(); - var _useState = (0, _react.useState)(''), _useState2 = (0, _slicedToArray2.default)(_useState, 2), userChoice = _useState2[0], @@ -450,6 +447,8 @@ var QuizCustomQuestionContent = function QuizCustomQuestionContent(_ref) { answerIndex = _useState6[0], setAnswerIndex = _useState6[1]; + var client = (0, _cozyClient.useClient)(); + var dispatch = (0, _reactRedux.useDispatch)(); var quizService = new _quiz.default(client); var challengeService = new _challenge.default(client); @@ -553,7 +552,8 @@ var QuizCustomQuestionContent = function QuizCustomQuestionContent(_ref) { }, "5/5"), /*#__PURE__*/_react.default.createElement("p", { className: "question-title text-18-bold" }, t('quiz.consumption_question')), isLoading ? /*#__PURE__*/_react.default.createElement("div", { - className: "question-loading" + className: 'question-loading', + "aria-busy": "true" }, /*#__PURE__*/_react.default.createElement(_Loader.default, null)) : question && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("p", { className: "question text-18-bold" }, question.questionLabel), question.answers.map(function (answer, index) { @@ -632,7 +632,7 @@ var _reactRouterDom = __webpack_require__("SOjZ"); var _environment = _interopRequireDefault(__webpack_require__("X6DI")); -var _store = _interopRequireDefault(__webpack_require__("uFCc")); +var _store = _interopRequireDefault(__webpack_require__("BhN1")); var _cozyBar = _interopRequireDefault(__webpack_require__("0mAb")); @@ -1654,7 +1654,7 @@ var _challenge2 = __webpack_require__("F6Xr"); var _chart = __webpack_require__("idK9"); -var _global = __webpack_require__("b3rE"); +var _global = __webpack_require__("c4IZ"); var _modal = __webpack_require__("oKH6"); @@ -1916,7 +1916,7 @@ var SplashRoot = function SplashRoot(_ref) { case 9: termsStatus = _context7.sent; - if (subscribed) dispatch((0, _global.updateTermsStatus)(termsStatus)); // Init fluidPrices + if (subscribed) dispatch((0, _global.updateTermValidation)(termsStatus)); // Init fluidPrices _context7.next = 13; return initializationService.initFluidPrices(); @@ -1943,11 +1943,7 @@ var SplashRoot = function SplashRoot(_ref) { case 24: migrationsResult = _context7.sent; // Init last release notes when they exist - dispatch((0, _global.showReleaseNotes)({ - notes: migrationsResult.notes, - redirectLink: migrationsResult.redirectLink, - show: migrationsResult.show - })); + dispatch((0, _global.showReleaseNotes)(migrationsResult.show, migrationsResult.notes, migrationsResult.redirectLink)); if (!(subscribed && profile)) { _context7.next = 45; @@ -2283,7 +2279,7 @@ var _ecogestureForm = __webpack_require__("kcOp"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _hooks = __webpack_require__("Zlw4"); +var _reactRedux = __webpack_require__("/MKj"); var _EquipmentIcon = _interopRequireDefault(__webpack_require__("Nixq")); @@ -2308,10 +2304,10 @@ var EcogestureFormEquipment = function EcogestureFormEquipment(_ref) { var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo.profile; }), - isProfileEcogestureCompleted = _useAppSelector.isProfileEcogestureCompleted; + isProfileEcogestureCompleted = _useSelector.isProfileEcogestureCompleted; var previousEquipments = (currentProfileType === null || currentProfileType === void 0 ? void 0 : currentProfileType.equipments) || (currentProfileEcogesture === null || currentProfileEcogesture === void 0 ? void 0 : currentProfileEcogesture.equipments) || []; @@ -3135,7 +3131,7 @@ var _userChallenge = __webpack_require__("dQx6"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _hooks = __webpack_require__("Zlw4"); +var _reactRedux = __webpack_require__("/MKj"); var _ChallengeCard = _interopRequireDefault(__webpack_require__("bncx")); @@ -3149,14 +3145,14 @@ var ChallengeView = function ChallengeView() { var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo.challenge; }), - userChallengeList = _useAppSelector.userChallengeList; + userChallengeList = _useSelector.userChallengeList; var marginPx = 16; var cardWidth = window.outerWidth < 500 ? window.outerWidth - marginPx * 6 : 285; - var cardHeight = window.outerHeight * 0.65; + var cardHeight = window.outerHeight * 0.6; var _useState = (0, _react.useState)(0), _useState2 = (0, _slicedToArray2.default)(_useState, 2), @@ -3178,15 +3174,24 @@ var ChallengeView = function ChallengeView() { index = _useState8[0], setIndex = _useState8[1]; - var _useState9 = (0, _react.useState)(false), + var _useState9 = (0, _react.useState)(0), _useState10 = (0, _slicedToArray2.default)(_useState9, 2), - isLastDuelDone = _useState10[0], - setIsLastDuelDone = _useState10[1]; + lastChallengeIndex = _useState10[0], + setLastChallengeIndex = _useState10[1]; - var _useState11 = (0, _react.useState)(marginPx), + var _useState11 = (0, _react.useState)(false), _useState12 = (0, _slicedToArray2.default)(_useState11, 2), - containerTranslation = _useState12[0], - setContainerTranslation = _useState12[1]; + isLastDuelDone = _useState12[0], + setIsLastDuelDone = _useState12[1]; + + var _useState13 = (0, _react.useState)(marginPx), + _useState14 = (0, _slicedToArray2.default)(_useState13, 2), + containerTranslation = _useState14[0], + setContainerTranslation = _useState14[1]; + + var defineHeaderHeight = function defineHeaderHeight(height) { + setHeaderHeight(height); + }; var resetValues = function resetValues() { // Method used to cancel a swipe on a simple click @@ -3196,18 +3201,24 @@ var ChallengeView = function ChallengeView() { var moveSliderRight = (0, _react.useCallback)(function () { if (index < userChallengeList.length - 1 || isLastDuelDone && index < userChallengeList.length) { - setContainerTranslation(function (prev) { + if (index === 0) setContainerTranslation(function (prev) { + return prev - cardWidth - marginPx * 1.2; + });else if (index >= 1) setContainerTranslation(function (prev) { return prev - cardWidth - marginPx; + });else setContainerTranslation(function (prev) { + return prev - cardWidth; }); setIndex(function (prev) { return prev + 1; }); } - }, [cardWidth, index, isLastDuelDone, userChallengeList.length]); + }, [cardWidth, index, userChallengeList.length]); var moveSliderLeft = (0, _react.useCallback)(function () { if (index > 0) { - setContainerTranslation(function (prev) { + if (index >= 1) setContainerTranslation(function (prev) { return prev + cardWidth + marginPx; + });else setContainerTranslation(function (prev) { + return prev + cardWidth; }); setIndex(function (prev) { return prev - 1; @@ -3243,17 +3254,23 @@ var ChallengeView = function ChallengeView() { }; (0, _react.useEffect)(function () { - var currentChallengeIndex = userChallengeList.findIndex(function (challenge) { - return challenge.state === _userChallenge.UserChallengeState.UNLOCKED || challenge.state === _userChallenge.UserChallengeState.ONGOING || challenge.state === _userChallenge.UserChallengeState.DUEL; - }); + userChallengeList.forEach(function (challenge, i) { + if (challenge.state === _userChallenge.UserChallengeState.UNLOCKED || challenge.state === _userChallenge.UserChallengeState.ONGOING || challenge.state === _userChallenge.UserChallengeState.DUEL) { + setLastChallengeIndex(i); + if (lastChallengeIndex === 0) return;else if (lastChallengeIndex === 1) { + setContainerTranslation(0 - cardWidth * lastChallengeIndex); + } else { + setContainerTranslation(0 - cardWidth * lastChallengeIndex - marginPx * 1.2); + } - if (currentChallengeIndex === -1) { - currentChallengeIndex = isLastDuelDone ? userChallengeList.length : 0; - } + if (isLastDuelDone) { + setLastChallengeIndex(i + 1); + } - setContainerTranslation(-currentChallengeIndex * (cardWidth + marginPx) + marginPx); - setIndex(currentChallengeIndex); - }, [userChallengeList, cardWidth, isLastDuelDone]); + setIndex(i); + } + }); + }, [userChallengeList, lastChallengeIndex, cardWidth, isLastDuelDone]); (0, _react.useEffect)(function () { if (userChallengeList[userChallengeList.length - 1].state == _userChallenge.UserChallengeState.DONE) { setIsLastDuelDone(true); @@ -3262,10 +3279,10 @@ var ChallengeView = function ChallengeView() { return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_CozyBar.default, { titleKey: 'common.title_challenge' }), /*#__PURE__*/_react.default.createElement(_Header.default, { - setHeaderHeight: setHeaderHeight, + setHeaderHeight: defineHeaderHeight, desktopTitleKey: 'common.title_challenge' }), /*#__PURE__*/_react.default.createElement(_Content.default, { - heightOffset: headerHeight + height: headerHeight }, /*#__PURE__*/_react.default.createElement("div", { className: "challengeSlider", onClick: resetValues, @@ -3300,7 +3317,7 @@ var ChallengeView = function ChallengeView() { }); }), isLastDuelDone && /*#__PURE__*/_react.default.createElement(_ChallengeCard.default, { indexSlider: index, - index: userChallengeList.length, + index: 5, cardWidth: cardWidth, cardHeight: cardHeight, isChallengeCardLast: true, @@ -3358,12 +3375,12 @@ var _Icon = _interopRequireDefault(__webpack_require__("y6ex")); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); +var _reactRedux = __webpack_require__("/MKj"); + var _environment = _interopRequireDefault(__webpack_require__("X6DI")); var _mail = _interopRequireDefault(__webpack_require__("40JQ")); -var _hooks = __webpack_require__("Zlw4"); - var _profile = __webpack_require__("jPH6"); __webpack_require__("jCXb"); @@ -3383,7 +3400,7 @@ var WelcomeModal = function WelcomeModal(_ref) { t = _useI18n.t; var client = (0, _cozyClient.useClient)(); - var dispatch = (0, _hooks.useAppDispatch)(); + var dispatch = (0, _reactRedux.useDispatch)(); var _useUserInstanceSetti = (0, _useUserInstanceSettings.default)(), instanceSettings = _useUserInstanceSetti.data; @@ -3609,7 +3626,7 @@ var result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WE 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.slide {\n margin: 0 1rem 0 0;\n box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.55);\n border-radius: 4px;\n transition: all 300ms ease;\n color: white;\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n.slide.active {\n transform: scale(1);\n}\n.slide.inactive {\n transform: scale(0.9);\n}\n.slide .cardContent {\n background: linear-gradient(180deg, #323339 0%, #25262b 100%);\n width: 100%;\n height: inherit;\n box-sizing: border-box;\n padding: 1rem;\n transition: all 300ms ease;\n border-radius: 4px;\n}", ""]); +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.slide {\n margin: 0 1rem 0 0;\n box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.55);\n border-radius: 4px;\n transition: all 300ms ease;\n color: white;\n display: flex;\n flex-direction: column;\n}\n.slide.active {\n transform: scale(1);\n}\n.slide.inactive {\n transform: scale(0.9);\n}\n.slide .cardContent {\n background: linear-gradient(180deg, #323339 0%, #25262b 100%);\n width: 100%;\n height: inherit;\n box-sizing: border-box;\n padding: 1rem;\n transition: all 300ms ease;\n border-radius: 4px;\n}", ""]); @@ -3749,23 +3766,27 @@ var _userAction = __webpack_require__("UtDE"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _hooks = __webpack_require__("Zlw4"); +var _reactRedux = __webpack_require__("/MKj"); 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 ActionView = function ActionView() { - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { - return state.ecolyo.challenge; - }), - currentChallenge = _useAppSelector.currentChallenge; - var _useState = (0, _react.useState)(0), _useState2 = (0, _slicedToArray2.default)(_useState, 2), headerHeight = _useState2[0], setHeaderHeight = _useState2[1]; + var _useSelector = (0, _reactRedux.useSelector)(function (state) { + return state.ecolyo.challenge; + }), + currentChallenge = _useSelector.currentChallenge; + + var defineHeaderHeight = (0, _react.useCallback)(function (height) { + setHeaderHeight(height); + }, []); + var renderAction = function renderAction(challenge) { switch (challenge.action.state) { case _userAction.UserActionState.UNSTARTED: @@ -3794,11 +3815,11 @@ var ActionView = function ActionView() { titleKey: 'common.title_action', displayBackArrow: true }), /*#__PURE__*/_react.default.createElement(_Header.default, { - setHeaderHeight: setHeaderHeight, + setHeaderHeight: defineHeaderHeight, desktopTitleKey: 'common.title_action', displayBackArrow: true }), /*#__PURE__*/_react.default.createElement(_Content.default, { - heightOffset: headerHeight + height: headerHeight }, currentChallenge && renderAction(currentChallenge))); }; @@ -4015,7 +4036,7 @@ var _ecogestureForm = __webpack_require__("kcOp"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _hooks = __webpack_require__("Zlw4"); +var _reactRedux = __webpack_require__("/MKj"); __webpack_require__("iYKh"); @@ -4038,10 +4059,10 @@ var EcogestureFormSingleChoice = function EcogestureFormSingleChoice(_ref) { var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo.profile; }), - isProfileEcogestureCompleted = _useAppSelector.isProfileEcogestureCompleted; + isProfileEcogestureCompleted = _useSelector.isProfileEcogestureCompleted; var _useState = (0, _react.useState)(isProfileEcogestureCompleted || step < viewedStep ? currentProfileEcogesture[answerType.attribute] : null), _useState2 = (0, _slicedToArray2.default)(_useState, 2), @@ -4063,7 +4084,7 @@ var EcogestureFormSingleChoice = function EcogestureFormSingleChoice(_ref) { }, t("ecogesture_form.".concat(_ecogestureForm.EcogestureStepForm[step].toLowerCase(), ".question"))), answerType.choices.map(function (value) { var _classNames; - if (value === null) return null; + if (!value) return null; return /*#__PURE__*/_react.default.createElement("label", { key: value.toString(), className: (0, _classnames.default)((_classNames = {}, (0, _defineProperty2.default)(_classNames, 'radio_short', answerType.choices.length < 5), (0, _defineProperty2.default)(_classNames, 'radio_long', answerType.choices.length > 4), (0, _defineProperty2.default)(_classNames, 'answer-checked', answer === value), _classNames)) @@ -4500,9 +4521,9 @@ var _sgeStep = __webpack_require__("q1H9"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _global = __webpack_require__("b3rE"); +var _reactRedux = __webpack_require__("/MKj"); -var _hooks = __webpack_require__("Zlw4"); +var _global = __webpack_require__("c4IZ"); __webpack_require__("8ECJ"); @@ -4521,32 +4542,36 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O 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; } var SgeConnectView = function SgeConnectView() { - var dispatch = (0, _hooks.useAppDispatch)(); + var _useState = (0, _react.useState)(0), + _useState2 = (0, _slicedToArray2.default)(_useState, 2), + headerHeight = _useState2[0], + setHeaderHeight = _useState2[1]; - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo.global; }), - sgeConnect = _useAppSelector.sgeConnect; + sgeConnect = _useSelector.sgeConnect; - var _useState = (0, _react.useState)(false), - _useState2 = (0, _slicedToArray2.default)(_useState, 2), - isLoading = _useState2[0], - setIsLoading = _useState2[1]; + var dispatch = (0, _reactRedux.useDispatch)(); - var _useState3 = (0, _react.useState)(sgeConnect), + var _useState3 = (0, _react.useState)(sgeConnect.currentStep), _useState4 = (0, _slicedToArray2.default)(_useState3, 2), - currentSgeState = _useState4[0], - setCurrentSgeState = _useState4[1]; + currentStep = _useState4[0], + setCurrentStep = _useState4[1]; - var _useState5 = (0, _react.useState)(sgeConnect.currentStep), + var _useState5 = (0, _react.useState)(sgeConnect), _useState6 = (0, _slicedToArray2.default)(_useState5, 2), - currentStep = _useState6[0], - setCurrentStep = _useState6[1]; + currentSgeState = _useState6[0], + setCurrentSgeState = _useState6[1]; - var _useState7 = (0, _react.useState)(0), + var defineHeaderHeight = (0, _react.useCallback)(function (height) { + setHeaderHeight(height); + }, []); + + var _useState7 = (0, _react.useState)(false), _useState8 = (0, _slicedToArray2.default)(_useState7, 2), - headerHeight = _useState8[0], - setHeaderHeight = _useState8[1]; + isLoading = _useState8[0], + setIsLoading = _useState8[1]; var isNextValid = (0, _react.useCallback)(function () { switch (currentStep) { @@ -4628,11 +4653,11 @@ var SgeConnectView = function SgeConnectView() { titleKey: 'common.title_sge_connect', displayBackArrow: true }), /*#__PURE__*/_react.default.createElement(_Header.default, { - setHeaderHeight: setHeaderHeight, + setHeaderHeight: defineHeaderHeight, desktopTitleKey: 'common.title_sge_connect', displayBackArrow: true }), /*#__PURE__*/_react.default.createElement(_Content.default, { - heightOffset: headerHeight + height: headerHeight }, /*#__PURE__*/_react.default.createElement("div", { className: "sge-view" }, /*#__PURE__*/_react.default.createElement("div", { @@ -4842,9 +4867,9 @@ var _I18n = __webpack_require__("buk/"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _action = _interopRequireDefault(__webpack_require__("5e6O")); +var _reactRedux = __webpack_require__("/MKj"); -var _hooks = __webpack_require__("Zlw4"); +var _action = _interopRequireDefault(__webpack_require__("5e6O")); var _utils = __webpack_require__("c+yx"); @@ -4863,11 +4888,11 @@ var ActionBegin = function ActionBegin(_ref) { var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo; }), - fluidTypes = _useAppSelector.global.fluidTypes, - isProfileTypeCompleted = _useAppSelector.profile.isProfileTypeCompleted; + fluidTypes = _useSelector.global.fluidTypes, + isProfileTypeCompleted = _useSelector.profile.isProfileTypeCompleted; var _useState = (0, _react.useState)(), _useState2 = (0, _slicedToArray2.default)(_useState, 2), @@ -4889,6 +4914,9 @@ var ActionBegin = function ActionBegin(_ref) { return !prev; }); }, []); + var goToList = (0, _react.useCallback)(function () { + setShowList(true); + }, [setShowList]); (0, _react.useEffect)(function () { var subscribed = true; @@ -5029,9 +5057,7 @@ var ActionBegin = function ActionBegin(_ref) { label: 'text-16-normal' } }, t('action.apply')), /*#__PURE__*/_react.default.createElement(_core.Button, { - onClick: function onClick() { - return setShowList(true); - }, + onClick: goToList, classes: { root: 'btn-secondary-negative', label: 'text-16-normal' @@ -5595,6 +5621,8 @@ var _userDuel = __webpack_require__("MBn6"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); +var _reactRedux = __webpack_require__("/MKj"); + var _reactRouterDom = __webpack_require__("SOjZ"); var _challenge = _interopRequireDefault(__webpack_require__("kdea")); @@ -5603,9 +5631,7 @@ var _usageEvent2 = _interopRequireDefault(__webpack_require__("dECN")); var _challenge2 = __webpack_require__("F6Xr"); -var _global = __webpack_require__("b3rE"); - -var _hooks = __webpack_require__("Zlw4"); +var _global = __webpack_require__("c4IZ"); var _utils = __webpack_require__("c+yx"); @@ -5623,13 +5649,13 @@ var DuelOngoing = function DuelOngoing(_ref) { var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo.challenge; }), - currentDataload = _useAppSelector.currentDataload, - userChallengeList = _useAppSelector.userChallengeList; + currentDataload = _useSelector.currentDataload, + userChallengeList = _useSelector.userChallengeList; - var dispatch = (0, _hooks.useAppDispatch)(); + var dispatch = (0, _reactRedux.useDispatch)(); var navigate = (0, _reactRouterDom.useNavigate)(); var _useState = (0, _react.useState)(false), @@ -5712,6 +5738,20 @@ var DuelOngoing = function DuelOngoing(_ref) { } }, _callee); })), [client, userChallenge, winChallenge, dispatch, userChallengeList, navigate]); + var setLastResult = (0, _react.useCallback)( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() { + return _regenerator.default.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + navigate('/challenges'); + + case 1: + case "end": + return _context2.stop(); + } + } + }, _callee2); + })), [navigate]); (0, _react.useEffect)(function () { var subscribed = true; @@ -5720,18 +5760,18 @@ var DuelOngoing = function DuelOngoing(_ref) { } function _setChallengeResult() { - _setChallengeResult = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() { + _setChallengeResult = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() { var _yield$challengeServi, isDone, isWin; - return _regenerator.default.wrap(function _callee2$(_context2) { + return _regenerator.default.wrap(function _callee3$(_context3) { while (1) { - switch (_context2.prev = _context2.next) { + switch (_context3.prev = _context3.next) { case 0: - _context2.next = 2; + _context3.next = 2; return challengeService.isChallengeDone(userChallenge, currentDataload); case 2: - _yield$challengeServi = _context2.sent; + _yield$challengeServi = _context3.sent; isDone = _yield$challengeServi.isDone; isWin = _yield$challengeServi.isWin; @@ -5742,10 +5782,10 @@ var DuelOngoing = function DuelOngoing(_ref) { case 6: case "end": - return _context2.stop(); + return _context3.stop(); } } - }, _callee2); + }, _callee3); })); return _setChallengeResult.apply(this, arguments); } @@ -5763,22 +5803,22 @@ var DuelOngoing = function DuelOngoing(_ref) { } function _populateData() { - _populateData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() { + _populateData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() { var dataloads; - return _regenerator.default.wrap(function _callee3$(_context3) { + return _regenerator.default.wrap(function _callee4$(_context4) { while (1) { - switch (_context3.prev = _context3.next) { + switch (_context4.prev = _context4.next) { case 0: if (!isFinished) { - _context3.next = 5; + _context4.next = 5; break; } - _context3.next = 3; + _context4.next = 3; return challengeService.getUserChallengeDataload(userChallenge); case 3: - dataloads = _context3.sent; + dataloads = _context4.sent; if (subscribed) { setFinishedDataLoad(dataloads); @@ -5786,10 +5826,10 @@ var DuelOngoing = function DuelOngoing(_ref) { case 5: case "end": - return _context3.stop(); + return _context4.stop(); } } - }, _callee3); + }, _callee4); })); return _populateData.apply(this, arguments); } @@ -5860,9 +5900,7 @@ var DuelOngoing = function DuelOngoing(_ref) { handleCloseClick: setResult }), /*#__PURE__*/_react.default.createElement(_lastDuelModal.default, { open: isLastDuel, - handleCloseClick: function handleCloseClick() { - return navigate('/challenges'); - } + handleCloseClick: setLastResult })); }; @@ -8378,9 +8416,9 @@ var _userDuel = __webpack_require__("MBn6"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _reactRouterDom = __webpack_require__("SOjZ"); +var _reactRedux = __webpack_require__("/MKj"); -var _hooks = __webpack_require__("Zlw4"); +var _reactRouterDom = __webpack_require__("SOjZ"); var _DuelEmptyValueModal = _interopRequireDefault(__webpack_require__("upmN")); @@ -8391,22 +8429,24 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio 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 DuelView = function DuelView() { - var navigate = (0, _reactRouterDom.useNavigate)(); - - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { - return state.ecolyo.challenge; - }), - userChallengeList = _useAppSelector.userChallengeList; - var _useState = (0, _react.useState)(0), _useState2 = (0, _slicedToArray2.default)(_useState, 2), headerHeight = _useState2[0], setHeaderHeight = _useState2[1]; + var _useSelector = (0, _reactRedux.useSelector)(function (state) { + return state.ecolyo.challenge; + }), + userChallengeList = _useSelector.userChallengeList; + var id = new URLSearchParams((0, _reactRouterDom.useLocation)().search).get('id'); var challengeToDisplay = userChallengeList.find(function (challenge) { return challenge.id === id; }); + var navigate = (0, _reactRouterDom.useNavigate)(); + var defineHeaderHeight = (0, _react.useCallback)(function (height) { + setHeaderHeight(height); + }, []); var goBackToChallenge = function goBackToChallenge() { navigate('/challenges'); @@ -8445,11 +8485,11 @@ var DuelView = function DuelView() { titleKey: 'common.title_duel', displayBackArrow: true }), /*#__PURE__*/_react.default.createElement(_Header.default, { - setHeaderHeight: setHeaderHeight, + setHeaderHeight: defineHeaderHeight, desktopTitleKey: 'common.title_duel', displayBackArrow: true }), /*#__PURE__*/_react.default.createElement(_Content.default, { - heightOffset: headerHeight + height: headerHeight }, /*#__PURE__*/_react.default.createElement("div", null, challengeToDisplay && (challengeToDisplay.state === _userChallenge.UserChallengeState.DUEL || challengeToDisplay.state === _userChallenge.UserChallengeState.DONE) ? renderDuel(challengeToDisplay) : /*#__PURE__*/_react.default.createElement(_DuelError.default, null)))); }; @@ -8866,7 +8906,7 @@ exports.default = _default; /***/ "9pOX": /***/ (function(module) { -module.exports = JSON.parse("{\"common\":{\"title_app\":\"Ecolyo\",\"title_consumption\":\"Conso\",\"title_challenge\":\"Défis\",\"title_quiz\":\"Quiz\",\"title_exploration\":\"Exploration\",\"title_action\":\"Action\",\"title_duel\":\"Duel final\",\"title_ecogesture\":\"Astuce\",\"title_ecogestures\":\"Astuces\",\"title_ecogestures_choice\":\"Sélection des astuces\",\"title_options\":\"Options\",\"title_analysis\":\"Analyse\",\"title_profiletype\":\"Ajuster mon profil\",\"title_legal_notice\":\"Mentions légales\",\"title_gcu\":\"Conditions générales d’utilisation\",\"title_accessibility\":\"Accessibilité : non conforme\",\"title_sge_connect\":\"Connexion à l'électricité\",\"accessibility\":{\"loading\":\"Chargement\"}},\"navigation\":{\"consumption\":\"Conso\",\"challenges\":\"Défis\",\"ecogestures\":\"Astuces\",\"options\":\"Options\",\"analysis\":\"Analyse\"},\"FLUID\":{\"ELECTRICITY\":{\"NAME\":\"Électricité\",\"LABEL\":\"Électricité\",\"UNIT\":\"kWh\",\"ADD\":\"Ajouter l'électricité\",\"MEGAUNIT\":\"MWh\",\"provider\":\"Enedis\"},\"WATER\":{\"NAME\":\"Eau\",\"LABEL\":\"Eau\",\"ADD\":\"Ajouter l'eau\",\"UNIT\":\"L\",\"MEGAUNIT\":\"m³\",\"provider\":\"Eau Publique du Grand Lyon\"},\"GAS\":{\"NAME\":\"Gaz\",\"LABEL\":\"Gaz\",\"ADD\":\"Ajouter le gaz\",\"UNIT\":\"kWh\",\"MEGAUNIT\":\"MWh\",\"provider\":\"GRDF\"},\"MULTIFLUID\":{\"NAME\":\"Multi fluide\",\"LABEL\":\"Multi\",\"UNIT\":\"€\"}},\"action\":{\"duration\":\"Durée : %{smart_count} jours\",\"result\":\"Résultat\",\"finished\":\"Défi terminé !\",\"details\":\"Détail de l'astuce\",\"apply\":\"J'applique cette action\",\"other\":\"Je choisis une autre action\",\"resultText1\":\"Cela n'a pas été trop difficile ?\",\"resultText2\":\"Jetez un coup d'œil dans la page conso dans 1 à 3 jours, le temps que vos données arrivent, pour voir l'impact de votre action.\",\"resultText3\":\"Pas de baisse de significative ? Pas de panique, en maintenant cette pratique dans le temps, les économies d'énergies et d'eau seront davantage visibles.\",\"resultText4\":\"Dans tous les cas, bravo, vous remportez...\",\"ok\":\"Ok\"},\"action_modal\":{\"accept\":\"Je relève le défi\",\"refuse\":\"Je me défile\",\"accessibility\":{\"window_title\":\"Fenêtre de confirmation\",\"button_accept\":\"Accepter\",\"button_refuse\":\"Refuser\"}},\"analysis\":{\"viewTitle\":\"Analyse\",\"comparison\":\"Comparatif\",\"analysis_date\":\"Conso totale\",\"challenge\":\"Défis terminés en\",\"user_consumption\":\"Votre conso\",\"average_home\":\"Conso moyenne d'un profil similaire\",\"average_home_description\":\"Le comparatif ici présenté est calculé sur la base d'un profil similaire au vôtre. Il s'agit d'un calcul et non d'une comparaison avec les autres utilisateurs de l'application. Sont pris en compte l'ensemble des informations entrées dans votre profil : mode de chauffage, âge du logement et éventuels travaux de rénovation, etc. Ce modèle a été créé avec l'Agence Locale de l'Energie sur la base de chiffres issues du Schéma Directeur des Energies de la Métropole de Lyon et de Chiffres-clé publiés par l'ADEME (l'Agence de l'Environnement et de la Maîtrise de l'Energie).\",\"approximative_description\":\"Pour comparer votre consommation avec un foyer similaire ou avec une conso idéale, veuillez détailler votre profil\",\"not_connected\":\"Non connecté\",\"no_data_2\":\"Données non disponibles\",\"accessibility\":{\"button_go_to_profil\":\"Détailler mon profil\"},\"max_day\":\"Jour où vous avez le plus consommé\",\"compare\":{\"title\":\"Comparateur\",\"month_tab\":\"Comparer au mois dernier\",\"year_tab\":\"Comparer à l'année dernière\"},\"no_data\":\"Pas de données\"},\"analysis_pie\":{\"total\":\"Conso totale\",\"month\":\"Au mois \",\"estimation\":\"Comment sont estimés<br>les prix ?\"},\"special_elec\":{\"title\":\"Spécial Électricité\",\"average\":\"Conso moyenne\",\"weektype\":\"un jour de \",\"week\":\"semaine\",\"weekend\":\"week-end\",\"min\":\"Conso minimum\",\"percentage\":\"Part dans la facture\",\"price\":\"Soit\",\"maxPower\":\"Puissance maximum atteinte\",\"showModal\":\"Plus d'infos\"},\"elec_info_modal\":{\"accessibility\":{\"window_title\":\"electricity-info-modal\",\"button_close\":\"close-modal\"},\"title1\":\"Qu’est-ce que la consommation minimum ?\",\"title2\":\"Qu’est-ce que la puissance maximum ?\",\"text1\":\"Elle correspond à votre plus petite consommation du mois sur un créneau d'une demi-heure.\",\"text2\":\"Nous extrapolons cette consommation sur 1 mois afin vous donner un aperçu de la consommation de vos consommations électriques en veille (box, télé, chargeurs, ...) ou encore de celle, incompressible, de vos appareils de froid (frigo, congélateur).\",\"text3\":\"C’est la puissance maximum délivrée par tous les appareils fonctionnant au même moment dans votre logement.\",\"text4\":\"Vous avez choisi une puissance maximum dans votre offre d’électricité (3, 6 ou 9 kVA...) que vous ne devez pas dépasser pour ne pas faire sauter votre compteur. \",\"text5\":\"Cette puissance varie d'un mois à l'autre, regardez cette valeur sur l'ensemble de l'année pour vérifier si votre puissance souscrite correspond bien à votre usage.\"},\"auth\":{\"enedissgegrandlyon\":{\"title\":\"Ecolyo doit se connecter à l’électricité\",\"bill\":\"Munissez-vous d’une <span>facture d’électricité</span> pour valider la connexion\",\"connect\":\"Je me connecte à l'électricité\",\"accessibility\":{\"connect\":\"Se connecter\"},\"identityTitle\":\"Nom inscrit sur la facture\",\"firstName\":\"Prénom\",\"lastName\":\"Nom\",\"pdlTitle\":\"Numéro de votre compteur électrique (PDL)\",\"pdlLabel\":\"N° (14 chiffres)\",\"pdlHint\":\"Où trouver le n° de PDL ?\",\"pdlModal\":{\"txt1\":\"Où trouver le n° de PDL ou PRM ?\",\"txt2\":\"Le numéro de PDL ou PRM se compose de 14 chiffres.\",\"txt3\":\"Votre numéro de PDL ou PRM se trouve sur votre facture d’électricité.\",\"txt4\":\"Si vous avez un compteur Linky, appuyez sur le bouton “+” et faites défiler l’affichage jusqu’à obtenir l’affichage suivant :\"},\"addressTitle\":\"Adresse du titulaire\",\"address\":\"Numéro et voie\",\"zipCode\":\"Code postal\",\"city\":\"Ville\",\"headConsent\":\"Vous allez partager vos données à la Métropole de Lyon. Elles seront directement transférées à Ecolyo à l'intérieur de votre cloud personnel, sans que la Métropole n'y accède ni ne les visualise.\",\"textConsent\":\"Afin de vous offrir des fonctionnalités de visualisation et d'analyse, Ecolyo a besoin des données suivantes : \",\"consentLi1\":\"L'historique et le relevé de vos consommations quotidiennes en kWh\",\"consentLi2\":\"L'historique et le relevé de vos consommations au pas de temps 30 minutes\",\"consentLi3\":\"Les puissances maximales atteintes quotidiennement\",\"consentLi4\":\"Les données contractuelles (début de contrat et puissance souscrite)\",\"consentCheck1\":\"Je consens à partager les données personnelles ci-dessus pour une durée d'<span>un an</span>\",\"consentCheck2\":\"J’atteste être le titulaire du point de livraison (PDL) renseigné à l’étape précédente\",\"modalHint\":{\"accessibility\":\"Titre de la modale\",\"title\":\"Où trouver le n° de PDL ?\",\"button\":\"J'ai compris\",\"button-accessibility\":\"Bouton valider\"}},\"grdfgrandlyon\":{\"bill\":\"Munissez-vous d’une <span>facture de gaz</span> pour valider la connexion\",\"connect\":\"Je me connecte au gaz\",\"accessibility\":{\"connect\":\"Se connecter\"},\"connect_form\":{\"label\":\"Je donne mon accord via mon compte GRDF\"},\"no_account\":{\"title\":\"Ecolyo doit se connecter au gaz\"},\"with_account\":{\"title\":\"Votre compte GRDF a bien été créé ?\",\"subtitle1\":\"Plus qu’à donner votre accord pour connecter votre compteur de gaz et Ecolyo !\"},\"step1\":{\"info1\":\"Un <span>compte chez GRDF</span> est nécessaire pour vous connecter au gaz\",\"info2\":\" <span>quelque soit votre fournisseur de gaz</span>.\",\"info3\":\"<p>GRDF est le gestionnaire de réseau. C'est lui qui est responsable de votre compteur Gazpar et de la collecte des données de consommation.</p>\",\"info4\":\"Possédez-vous un <span>compte GRDF</span> ?\"},\"step2\":{\"info1\":\"Une fois votre compte créé, <span>n'oubliez pas de revenir sur Ecolyo</span> pour finaliser la connexion.\"},\"step3\":{\"info1\":\"La visualisation de vos données sur Ecolyo demande l'activation du <span>partage de toutes les données.</span>\",\"info2\":\"Pour une expérience optimale, <span>une période de consentement de 1 an</span> est recommandée à partir d’aujourd’hui.\",\"info3\":\"<p>Veillez également à indiquer une date antérieure pour l'historique (1er calendrier) afin de pouvoir récupérer jusqu'à 3 ans d'historique.</p>\"},\"button_go_to_partner_site\":\"Aller sur GRDF\"},\"eglgrandlyon\":{\"bill\":\"Munissez-vous d’une <span>facture d'eau</span> pour valider la connexion\",\"connect\":\"Je me connecte à l'eau\",\"accessibility\":{\"connect\":\"Se connecter\"},\"connect_form\":{\"login\":\"Identifiant (7 chiffres)\",\"password\":\"Mot de passe\",\"label\":\"Je connecte Ecolyo à mon compte Eau Publique du Grand Lyon\"},\"no_account\":{\"title\":\"Ecolyo doit se connecter à l'eau\"},\"with_account\":{\"title\":\"Votre compte Eau Publique du Grand Lyon a bien été créé ?\",\"subtitle1\":\"Plus qu’à donner votre accord pour connecter votre compteur d'eau et Ecolyo !\"},\"step1\":{\"info1\":\"La connexion se fait via <span>votre compte Eau Publique du Grand Lyon</span>.\",\"info2\":\"Possédez-vous un <span>compte Eau Publique du Grand Lyon</span> ?\"},\"step2\":{\"info1\":\"Une fois votre compte créé, <span>n'oubliez pas de revenir sur Ecolyo</span> pour finaliser la connexion.\"},\"button_go_to_partner_site\":\"Aller sur EPGL\"},\"connect_oauth\":{\"loading\":\"Chargement...\"},\"accessibility\":{\"button_reveal_password\":\"Afficher le mot de passe\",\"button_connect\":\"Se connecter\",\"button_create_account\":\"Se créer un compte\",\"window_title\":\"Fenêtre d'information sur la création de compte.\",\"button_close\":\"Fermer la fenêtre.\"},\"button_previous\":\"Précédent\",\"button_connect\":\"Se connecter\",\"button_create_account\":\"Se créer un compte\",\"button_has_account\":\"J'ai déjà un compte\",\"button_validate\":\"J'ai compris\",\"button_showOfflineData\":\"Voir mes anciennes données\",\"warningOfflineData\":\"Attention, vous visualisez d’anciennes données. Pour actualiser vos données, connectez votre compteur\"},\"challenge\":{\"card\":{\"ongoing\":{\"quiz\":\"Quiz\",\"exploration\":\"Explorations\",\"action\":\"Actions\",\"duel\":\"Duel Final\",\"result\":\"Résultat\",\"duelDone\":\"du duel final\"},\"locked\":{\"desc\":\"À débloquer en terminant le défi précédent\"}},\"card_done\":{\"saving\":\"Économie de\",\"depense\":\"Dépense de\",\"win\":\"Gagné\",\"lost\":\"Perdu\",\"final_defi\":\"sur le duel final\",\"final_defi_view\":\"Revoir le duel final\",\"reset_defi\":\"Relancer le défi\"},\"card_last\":{\"title\":\"Tous les défis sont terminés\",\"message1\":\"Nous travaillons actuellement à vous proposer de nouveaux défis.\",\"button\":\"Suggérer une idée de défi\"},\"card_unlocked\":{\"button_launch\":\"Lancer le défi\"},\"accessibility\":{\"button_launch\":\"Lancer le défi\",\"button_goto_konnector\":\"Aller aux connecteurs\",\"button_slider_previous\":\"Précédent\",\"button_slider_next\":\"Suivant\"}},\"challenge_no_fluid_modal\":{\"title\":\"Oups !\",\"content\":\"Connectez au moins 1 fluide pour pouvoir jouer\",\"button_validate\":\"Ok\",\"accessibility\":{\"window_title\":\"Fenêtre d'erreur\",\"button_validate\":\"Valider\"}},\"consumption\":{\"display_last_data\":\"Voir mes dernières consos\",\"accessibility\":{\"button_previous_period\":\"Afficher la période précédente\",\"button_next_period\":\"Afficher la période suivante\",\"button_previous_value\":\"Sélectionner la valeur précédente\",\"button_next_value\":\"Sélectionner la valeur suivante\",\"checkbox_compare\":\"Afficher ou cacher la comparaison\"},\"partner_issue_modal\":{\"title\":\"Attention !\",\"error_connect_gaz\":\"La connexion à vos données de <span class='gaz'>gaz</span> est actuellement dysfonctionnelle (Maintenance chez notre partenaire <span class='gaz'>GRDF</span> ou dans notre service)\",\"error_connect_elec\":\"La connexion à vos données d'<span class='elec'>électricité</span> est actuellement dysfonctionnelle (Maintenance chez notre partenaire <span class='elec'>Enedis</span> ou dans notre service)\",\"error_connect_water\":\"La connexion à vos données d'<span class='water'>eau</span> est actuellement dysfonctionnelle (Maintenance chez notre partenaire <span class='water'>Eau Publique du Grand Lyon</span> ou dans notre service)\",\"additional_text\":\"La visualisation et/ou la connexion à vos données de consommation peut s'en trouver affectée.<br /><br /><i>Merci pour votre patience en attendant un retour à la normale :)</i>\",\"ok\":\"Ok\"},\"compared\":\"Comparé\"},\"consumption_details\":{\"detail\":\"Détail par fluide\",\"connect\":\"Connecter d'autres fluides\",\"mini_cards_label\":\"AUTRES ENERGIES\"},\"consumption_visualizer\":{\"missing_data\":\"Données manquantes\",\"no_data\":\"Pas de données\",\"why_no_data\":\"Pourquoi n'ai-je pas de données ?\",\"last_data\":\"Dernières données\",\"last_valid_data\":\"Dernières données valides\",\"last_available_data\":\"Dernières données disponibles\",\"last_valid_data_multi\":\"Dernières données complètes\",\"data_to_come\":\"à venir\",\"aie\":\"Aïe !\",\"data_empty\":\"Vide\",\"estimated\":\"estimés\",\"dataModal\":{\"list_title\":\"3 raisons possibles :\",\"item1\":\"le lien entre Ecolyo et le fournisseur de données est rompu : une mise à jour de ce lien (en bas de la page) peut résoudre ce problème.\",\"item2\":\"un problème technique chez votre gestionnaire : se connecter directement chez ce gestionnaire pour vérifier que cette donnée apparaît.\",\"item3\":\"pour le gaz : vous n'avez pas autorisé Ecolyo à accéder aux données de consommation de cette période.\",\"item4\":\"vous n'aviez tout simplement pas de compteur communicant à l'époque !\"},\"modal\":{\"window_title\":\"info estimation des prix\",\"title\":\"Comment sont estimés les prix ?\",\"close\":\"Fermer la fenêtre\",\"part1\":\"Le prix de votre électricité ou de votre gaz dépend de l'offre choisie auprès de votre fournisseur. N’ayant pas accès à cette information, Ecolyo affiche un prix moyen par fluide. \",\"part2\":\"Tarifs moyens retenus :\",\"list1\":\" : 1 kWh = %{elecPrice} €TTC (il correspond au tarif réglementé d’EDF au %{elecPriceStartDate} pour une puissance souscrite de 3 ou 6 kVA et hors offre heure pleine/heure creuse)\",\"list2\":\" : 1 kWh = %{gasPrice} €TTC (tarif réglementé de vente au %{gasPriceStartDate} pour un consommateur soutirant moins de 6 MWh par an)\",\"list3\":\" : 1 litre d’eau = %{waterPrice} € TTC (prix constaté au %{waterPriceStartDate} pour un abonnement et une consommation de 120 m3/an sur la Métropole de Lyon)\",\"part3\":\"Le coût de votre abonnement n'est pas pris en compte dans Ecolyo.\"},\"release_notes_modal\":{\"title\":\"Du nouveau sur Ecolyo !\",\"message\":\"Les mises à jour suivantes ont été effectuées sur votre application :\",\"go_back\":\"J'ai compris\",\"accessibility\":{\"window_title\":\"Fenêtre de notifications\",\"button_go_back\":\"J'ai compris\"}}},\"ecogestures\":{\"loading\":\"Chargement des astuces\"},\"duel\":{\"global_error\":\"Oups. Une erreur est survenue. Veuillez retourner à l'écran d’accueil des défis\",\"button_go_back\":\"Retour\",\"average_info\":\"%{average} euros étant votre moyenne actuelle, relevez-vous le défi ?\",\"button_start\":\"Allons-y !\",\"goal1\":\"Faites moins que votre moyenne actuelle sur %{durationInDays} jours\",\"goal2\":\"pour gagner le badge %{title}\",\"goal_done\":\"Duel remporté\",\"goal_failed\":\"Duel perdu\",\"caption_average\":\"Votre moyenne à titre indicatif\",\"caption_consumption\":\"Votre consommation\",\"caption_incoming\":\"Données à venir\",\"accessibility\":{\"button_go_back\":\"Retour\",\"button_start_duel\":\"Lancer le duel\",\"button_start_quiz\":\"Lancer le quiz\"}},\"duel_result_modal\":{\"sucess\":{\"title\":\"Félicitations !\",\"message1\":\"Vous avez économisé \",\"message2\":\"et gagné le badge \",\"button_validate\":\"Youpi !\"},\"lost\":{\"title\":\"Presque !\",\"message1\":\"Vous avez dépassé de \",\"message2\":\"et manqué le badge \",\"button_validate\":\"Zut alors !\"},\"accessibility\":{\"window_title\":\"Fenêtre de résultat\",\"button_validate\":\"Valider\"}},\"last_duel_modal\":{\"title\":\"Félicitations !\",\"subtitle\":\"Vous avez terminé tous les défis !\",\"message1\":\"Nous travaillons actuellement à vous proposer de nouveaux défis.\",\"message2\":\"Vous pouvez donner votre avis sur ce que vous aimeriez en cliquant sur la bulle d'aide.\"},\"duel_empty_value_modal\":{\"title\":\"Oups !\",\"message\":\"Impossible de lancer le duel. Il nous manque en effet certaines de vos données de consommation pour vous proposer un duel à votre hauteur.\",\"button\":\"Je retourne au menu des défis\",\"accessibility\":{\"window_title\":\"Fenêtre d'erreur\",\"button_validate\":\"Retourner au menu des défis\"}},\"ecogesture\":{\"title_tab_0\":\"Objectifs\",\"title_tab_1\":\"Je fais déjà\",\"title_tab_2\":\"Toutes\",\"MENU_TITLE\":\"Filtrer\",\"ALL\":\"Tous les usages\",\"HEATING\":\"Chauffage\",\"AIR_CONDITIONING\":\"Climatisation\",\"ECS\":\"Eau chaude\",\"COLD_WATER\":\"Eau froide\",\"ELECTRICITY_SPECIFIC\":\"Électricité courante\",\"COOKING\":\"Cuisson\",\"selection\":\"Sélectionner les astuces les plus adaptées à votre consommation\",\"selection_2\":\"vues sur\",\"button_selection\":\"Continuer ma sélection\",\"no_ecogesture\":\"Aucune astuce ne correspond à votre filtrage\",\"no_ecogesture_filter\":{\"text1\":\"Nous n'avons pas trouvé d'astuces adaptées à votre profil dans cette catégorie.\",\"text2\":\"En effet, de par votre profil et vos modes de chauffage, d'eau ou d'eau chaude sanitaire, nous n'avons pas identifié d’astuces vous permettant de diminuer vos factures à titre individuel. Toutefois, vous pouvez toujours agir pour préserver les ressources en appliquant et diffusant autour de vous les autres bonnes pratiques présentées dans la partie \\\"Toutes les astuces\\\".\"},\"adjust_profil\":{\"description\":\"Pour une sélection d’astuces adaptée à votre consommation, vous pouvez ajuster votre profil.\",\"button_go_to_profil\":\"Ajuster mon profil\"},\"accessibility\":{\"window_title\":\"Fenêtre d'information'\",\"button_close\":\"Fermer la fenêtre\",\"button_selection\":\"Aller à la page de sélection\"},\"doing\":\"Je fais déjà\",\"objective\":\"Objectif\",\"emptyList\":{\"obj1\":\"Les astuces présentées sont des actions qui vous permettent de réduire vos consommations et donc vos factures. On parle parfois d’écogestes.\",\"obj1_done\":\"Aucune astuce n’a été sélectionnée comme objectif actuellement.\",\"obj2\":\"Vous pouvez sélectionner ceux à mettre en objectifs et ceux que vous appliquez déjà.\",\"obj2_done\":\"Vous pouvez consulter toutes les astuces et ajouter celles que vous souhaitez garder en objectif dans cette section.\",\"doing1\":\"Aucune astuce n’a été sélectionnée dans la catégorie appliquée actuellement.\",\"doing1_done\":\"Aucune astuce n’est indiquée comme déjà appliquée actuellement.\",\"doing2\":\"Vous pouvez consulter toutes les astuces et ajouter celles que vous mettez déjà en pratique dans cette section.\",\"doing2_done\":\"Vous pouvez consulter toutes les astuces et ajouter celles que vous mettez déjà en pratique dans cette section.\",\"btn1\":\"Voir toutes les astuces\",\"btn2\":\"Sélectionner\"},\"initModal\":{\"title\":\"Sélectionner mes astuces\",\"text1\":\"Les astuces présentées sont des actions qui vous permettent de réduire vos consommations et donc vos factures. On parle parfois d’écogestes \",\"text2\":\"Vous pouvez sélectionner celles à mettre en objectifs et celles que vous appliquez déjà.\",\"text3\":\"Afin de pré-sélectionner les astuces correspondant à votre consommation, merci de répondre à quelques rapides questions.\",\"btn1\":\"Plus tard\",\"btn2\":\"C'est parti !\"},\"reinit\":\"Réinitialiser ma sélection\",\"reinitModal\":{\"title_part1\":\"Cette action\",\"title_part2\":\"supprimera votre liste d’astuces\",\"title_part3\":\"sélectionnées dans\",\"title_part4\":\"“Objectifs”\",\"title_part5\":\"et\",\"title_part6\":\"“Je fais déjà”\",\"text1\":\"Vous pourrez ensuite faire une nouvelle sélection adaptée à votre consommation.\",\"text2\":\"Souhaitez-vous réinitialiser votre sélection d’astuces ?\",\"btn1\":\"Non\",\"btn2\":\"Réinitialiser\"}},\"ecogesture_modal\":{\"title_ecogesture\":\"Astuce\",\"title_action\":\"Action\",\"efficiency\":\"Efficacité\",\"show_less\":\"Voir moins d’infos\",\"show_more\":\"Voir plus d’infos\",\"select_action\":\"Je choisis cette action\",\"accessibility\":{\"window_title_ecogesture\":\"Fenêtre astuce\",\"window_title_action\":\"Fenêtre action\",\"button_close\":\"Fermer la fenêtre\",\"button_select_action\":\"Sélectionner cette action\",\"button_see_more_detail\":\"Afficher plus de détails\"}},\"ecogesture_info_modal\":{\"header\":\"Comment sont choisis les astuces adaptées à mon profil ?\",\"text\":\"Les astuces adaptés à votre profil sont aujourd’hui choisies en fonction des compteurs individuels que vous possédez (communicants ou non). Ceux présentés ici vous permettent d'agir sur vos consommations individuelles. Des modes de tri plus personnalisables seront proposés à l'avenir.\",\"button_close\":\"J'ai compris\",\"accessibility\":{\"window_title\":\"Fenêtre d'information\",\"button_close\":\"Fermer la fenêtre\"}},\"ecogesture_form\":{\"heating_type\":{\"title\":\"Chauffage\",\"question\":\"Quel est votre type de chauffage ?\",\"individual\":\"Individuel\",\"collective\":\"Collectif\"},\"warming_fluid\":{\"0\":\"Électricité\",\"2\":\"Gaz\",\"3\":\"Bois\",\"4\":\"Fioul\",\"5\":\"Autre\",\"title\":\"Source chauffage\",\"question\":\"Quelle source d’énergie principale utilisez-vous pour vous chauffer ?\",\"no_fluid_text\":\"Produit ni par de l'électricité, ni par du gaz, ni par du bois ou du fuel\",\"0_text\":\"Produit grâce à de l'électricité\",\"2_text\":\"Produit grâce au gaz\",\"3_text\":\"Produit grâce au bois\",\"4_text\":\"Produit grâce au fioul\",\"5_text\":\"Produit grâce à un autre moyen\"},\"hot_water\":{\"title\":\"Eau chaude\",\"question\":\"Quel est votre type de production d’eau chaude ?\",\"individual\":\"Individuelle\",\"collective\":\"Collective\"}},\"ecogesture_profile\":{\"equipments\":{\"question\":\"Quels équipements possédez-vous ?\",\"hint\":\"Plusieurs réponses possibles\",\"air_conditioning\":\"Climatisation\",\"computer\":\"Ordinateur\",\"microwave\":\"Micro-ondes\",\"oven\":\"Four\",\"washing_machine\":\"Lave-linge\",\"dishwasher\":\"Lave-vaisselle\",\"cooking_plates\":\"Plaques électriques\",\"garden\":\"Jardin\",\"dryer\":\"Sèche-linge\",\"refregirator\":\"Réfrigérateur\",\"fan\":\"Ventilateur\",\"water_heater\":\"Chauffe-eau\",\"curtain\":\"Rideaux\",\"internet_box\":\"Box internet\",\"ventilation\":\"VMC\",\"freezer\":\"Congélateur\",\"boiler\":\"Chaudière\",\"hydraulic_heating\":\"Chauffage hydraulique\"}},\"ecogesture_selection\":{\"header\":\"Sélection des astuces\",\"title\":\"Vous avez parcouru un groupe de %{smart_count} astuces\",\"text\":\"Voulez-vous continuer sur votre lancée ou remettre cette sélection à plus tard ?\",\"title_final\":\"Félicitations !\",\"text_final_1\":\"Vous avez terminé la sélection des astuces adaptées à votre consommation.\",\"text_final_2\":\"Vous pouvez les retrouver dans les sections “Objectifs” et “Je fais déjà” selon que vous les pratiquiez déjà ou non.\",\"button_go_to_ecogesture\":\"Plus tard\",\"button_ok\":\"J'ai compris\",\"button_continue\":\"Poursuivre\",\"button_objective\":\"Objectif\",\"button_doing\":\"Je fais déjà\",\"button_skip\":\"Pas intéressé\",\"accessibility\":{\"window_title\":\"Fenêtre d'information'\",\"button_close\":\"Fermer la fenêtre\",\"button_go_to_ecogesture\":\"Retourner aux astuces\",\"button_continue\":\"Poursuivre\",\"button_ok\":\"Fermer la sélection\"},\"selectionModal\":{\"title\":\"Des astuces correspondant à votre profil ont été trouvées !\",\"text\":\"À vous de choisir celles que vous souhaitez mettre en objectif et celles que vous faites déjà.\",\"button_close\":\"C'est parti !\"}},\"exploration\":{\"global_error\":\"Oups. Une erreur est survenue. Veuillez retourner à l'écran d’accueil des défis\",\"button_go_back\":\"Retour\",\"button_already_done\":\"C’est déjà fait !\",\"button_come_back\":\"Je reviens quand cela sera fait\",\"button_start\":\"C'est parti !\",\"watch_consumption\":\"Je fonce\",\"congratulation\":\"Bravo !\",\"earn\":\"Vous remportez\",\"button_confirm\":\"Ok\",\"interval\":{\"explanation\":\"Vous pouvez vérifier cette informations sur l'écran Conso.\"},\"accessibility\":{\"button_already_done\":\"Marquer l'exploration comme déjà réalisée\",\"button_confirm\":\"Valider\",\"button_come_back\":\"Fermer l'exploration\",\"button_go_back\":\"Retour\",\"button_start\":\"Lancer l'exploration\"}},\"error_page\":{\"main\":\"Erreur\",\"back\":\"Retour\",\"no_ecogesture\":\"Oups ! Nous n'avons pas trouvé l'astuce demandée.\"},\"help\":{\"title_help\":\"une question ? un problème ? une suggestion ?\",\"read_help\":\"Nous écrire via le Service d'Assistance Utilisateur\"},\"feedback\":{\"title\":\"Vous allez contacter le Service Assistance Utilisateur du Grand Lyon.\",\"text1\":\"Vous pourrez nous remonter un problème, chercher de l'aide pour vous connecter plus facilement, ou encore nous partager une bonne idée d'évolution.\",\"text2\":\"N'hésitez pas à nous écrire ! L'équipe Ecolyo vous répondra avec plaisir :)\",\"later\":\"Plus tard\",\"lets_go\":\"J'y vais\",\"accessibility\":{\"window_title\":\"Fenêtre de partage de retours\",\"button_close\":\"Fermer la fenêtre de partage de retours\"}},\"dataShare\":{\"title1\":\"Bienvenue !\",\"title1Update\":\"Ecolyo évolue !\",\"title2Update\":\"Pour continuer à utiliser Ecolyo, merci d’accepter les modalités de traitement des données ci-dessous.\",\"part1\":\"Pour le bon fonctionnement du service, nous avons besoin de l’adresse email utilisée lors la création de votre cloud personnel Grand Lyon.\",\"part2\":\"Cette donnée de compte est conservée dans Ecolyo le temps de l’utilisation de ce service.\",\"part3\":\"La Métropole de Lyon utilisera cet email afin de vous tenir informé·e :\",\"item1\":\"En réponse à vos demandes, si vous avez pris l’initiative de nous contacter.\",\"item2\":\"En cas de problème majeur avec la gestion de votre compte.\",\"item3\":\"De l’évolution de vos consommations, des nouveautés et de la qualité du service via une lettre mensuelle. Vous pouvez à tout moment vous désinscrire de cette lettre via la page Options du service.\",\"part4\":\"Vos données privées de consommation d’énergie et d’eau sont récupérées, sauvegardées et stockées dans votre cloud personnel à votre initiative sans visibilité de la Métropole de Lyon sur leur contenu.\",\"part5\":\"Il en est de même pour les données privées de composition du logement et du foyer, fournies par vos soins. Elles restent également sans visibilité de la Métropole de Lyon sur leur contenu.\\nLes données d’identification entrées lors de la connexion aux données de consommations d’électricité sont quant à elles conservées dans un espace sécurisé de la Métropole de Lyon et sont utilisées uniquement à des fins de contrôle du consentement par des organismes extérieurs.\",\"part6\":\"Dans le cadre de l’évaluation et de l’amélioration du service, des données d’utilisation anonymisées et pseudonymisées seront remontées à des fins d’exploitation statistiques. La récupération de ces statistiques nous permettra de s’assurer du bon fonctionnement technique de la connexion à vos données de consommation, d’évaluer globalement l’usage de l’application via des mesures d’audience ainsi que d’évaluer à terme l’impact global en termes de baisse des consommations énergétiques de notre service.\",\"part7\":\"Au sein de votre cloud personnel, vous pouvez à tout moment exercer vos droits d’accès, de rectification, de portabilité, de limitation et d’opposition en consultant notamment la page Options.\",\"part8\":\"Vous pouvez également exercer vos droits d’accès, de rectification, de limitation, d’opposition et d’effacement de vos données personnelles en contactant directement le Délégué à la Protection des Données par courrier en écrivant à l’adresse :\",\"part9\":\"Métropole de Lyon – Délégué à la Protection des Données - Direction des Assemblées, des Affaires Juridiques et des Assurances - 20, rue du Lac - BP 33569 - 69505 Lyon Cedex 03 \",\"part10\":\"ou en ligne, au moyen du formulaire disponible à l'adresse suivante : \",\"link1\":\"<a href=\\\"https://demarches.toodego.com/sve/proteger-mes-donnees-personnelles/\\\">https://demarches.toodego.com/sve/proteger-mes-donnees-personnelles/</a>\",\"validDataConsent\":\"Je consens au traitement de mes données tel que décrit ci-dessus.\",\"validCGU\":\"Je valide les <span class=\\\"action\\\">Conditions Générales d’Utilisation</span> \",\"validLegal\":\" du service et ai pris connaissance des <span class=\\\"action\\\"> Mentions Légales </span> de celui-ci.\",\"button_accept\":\"C'est parti !\",\"accessibility\":{\"button_accept\":\"Accepter les conditions générales d'utilisation\"}},\"minorUpdate\":{\"title\":\"Ecolyo évolue !\",\"button\":\"J'ai compris\"},\"gcu\":{\"title\":\"Conditions générales d’utilisation du service\",\"version\":\"Version du 12.12.2022\",\"content\":{\"title1\":\"Ecolyo, késako ?\",\"part1_1\":\"Ecolyo est un service proposé par la Métropole de Lyon vous permettant de suivre au même endroit vos consommations d’électricité, de gaz et d’eau, en kWh, en litres, en euros et à différentes échelles de temps. Ce service vous permet également de participer à des défis individuels et vous offre une analyse de vos consommations. Des astuces vous sont aussi proposées afin de vous permettre de réduire vos consommations.\",\"part1_2\":\"C’est un service gratuit qui prend la forme d’un site web dit « responsive », c’est-à-dire qu’il peut être consulté sur ordinateur ou sur mobile. Sur mobile, c’est une application que l’on a souhaitée ergonomique, réactive et esthétique pour votre plaisir de navigation et d’utilisation au quotidien.\",\"part1_3\":\"Tous les termes « techniques » sont définis en bas de page.\",\"title2\":\"Quelles fonctionnalités le service propose-t-il ?\",\"part2_1\":\"La fonctionnalité principale d’Ecolyo est la visualisation, au même endroit, de vos consommations d’électricité, de gaz et d’eau et ce, à différents pas de temps (de la demi-heure – uniquement pour l’électricité, à plusieurs années, en passant par les pas de temps journaliers et mensuels). La visualisation des consommations se fait en kWh pour l’énergie et en L pour l’eau ainsi qu’en euros (euros résultant d’un prix moyenné).\",\"part2_2\":\"Au-delà de la visualisation de vos consommations et parce que nous souhaitons vous aider à diminuer ces consommations vous retrouverez plusieurs autres pages : \",\"part2_2_list1\":\"Défis : Des quiz, et actions à mettre en place vous seront proposés pour vous pousser à réduire vos consommations.\",\"part2_2_list2\":\"Astuces : Une liste d’astuces pour maîtriser ses consommations d’énergie et d’eau à trier par usage, et avec une possibilité de les adapter plus précisément à votre profil.\",\"part2_2_list3\":\"Analyse : Une analyse de vos consommations réelles en comparaison à celle d’un foyer étant proche d’une vôtre.\",\"part2_3\":\"Pour la page Analyse ainsi que pour la partie personnalisation des astuces, des éléments supplémentaires sur votre profil vous seront demandés. L’ensemble de ces informations récoltées à l’aide du formulaire peuvent être modifiées par la suite.\",\"part2_4\":\"Dernière page : la page Options dans laquelle vous pourrez vous abonner à un service d’alerte sur vos consommations d’eau, de quoi ajuster votre profil ou encore vous désabonner de la lettre mensuelle.\",\"title3\":\"Comment ai-je accès à mes données d’électricité, de gaz et d’eau ?\",\"part3_1\":\"Pour visualiser vos consommations réelles et profiter pleinement du potentiel de notre service, il vous faut au minimum un des trois compteurs communicants suivants : Linky (pour l’électricité), Gazpar (pour le gaz), Téléo (pour l’eau).\",\"part3_2\":\"Ces compteurs sont opérés par les gestionnaires de réseaux. Pour Linky, c’est Enedis, le gestionnaire de réseau de distribution d’électricité. Pour Gazpar, GRDF est responsable de cette gestion. Et pour Téléo, c’est Eau Publique du Grand Lyon.\",\"part3_3\":\"Ces acteurs sont responsables de la relève de vos données. Ces données servent notamment à votre fournisseur d’électricité, de gaz ou d’eau pour permettre la facturation de vos consommations d’énergie. Des fournisseurs d’électricité ou de gaz il y en a des dizaines. Les gestionnaires de réseaux (… et de votre compteur) ne sont qu’au nombre de trois. Nous avons donc décidé de travailler avec eux, au plus près de la donnée brute issue de vos compteurs.\",\"part3_4\":\"Il vous faudra donc avoir un compte chez GRDF et Eau Publique du Grand Lyon pour accéder à vos données. Si vous n’en avez pas, il suffira de vous en créer un. Ceci ne sera à faire qu’une fois, au début.\",\"title4\":\"Ecolyo se trouve dans un cloud personnel Grand Lyon, qu’est-ce que cela signifie ?\",\"part4_1\":\"Comme vous avez dû le remarquer, lors de votre première connexion à Ecolyo vous avez dû vous créer un compte Cloud Personnel Grand Lyon. Ce cloud personnel est un espace sécurisé porté par l’ambition de vous apporter visibilité, transparence et maîtrise sur l’usage de vos données personnelles, et dont les fonctionnalités vous permettant de récupérer, synchroniser, stocker et partager vos données avec les destinataires de votre choix. Le service Ecolyo se déploie à l’intérieur de cet espace protégé. Dans ce cloud personnel, vous pourrez accéder également à d’autres services. Toutes les données traitées par Ecolyo, mais aussi les autres services que vous seriez amenés à utiliser dans ce cloud personnel restent dans ce Cloud Personnel Grand Lyon et n’en sortent pas, sauf si vous décidez vous-même de partager vos données avec des tiers.\",\"part4_2\":\"Pour en savoir plus sur ce cloud et son utilisation, ainsi que la durée de conservation de vos données, vous pouvez lire les conditions générales d’utilisation du service <a href=\\\"https://manager.cozygrandlyon.cloud/tos/266b4226-8417-42fb-b911-41e86dae8581.pdf?locale=fr\\\">ici</a>.\",\"title5\":\"Et donc concrètement pour Ecolyo, quelles données sont collectées et qui y a accès ?\",\"part5_1\":\"Pour qu’Ecolyo ait accès à vos données de consommations, vous devrez activer vos différents connecteurs. À ce moment-là, pour la connexion aux données de gaz et d’eau à travers un parcours qui vous conduira de manière intuitive sur le site de chacun des gestionnaires de réseaux concerné, vous pourrez donner votre consentement à partager ces données avec le Service Ecolyo, et ce pour une durée limitée dans le temps. Pour l’électricité, le don du consentement et la connexion aux données se fait directement dans notre service. Quid de la durée de ce consentement ? Pour les données électriques, elle est par défaut d'un an. Pour les données gaz, cela sera à vous de la définir (nous vous recommandons 1 an pour une expérience optimale). Les données utilisées pour vérifier la bonne connexion de vos données d’électricité sont stockées du côté de la Métropole de Lyon sur des serveurs sécurisés.\",\"part5_2\":\"Vos connecteurs, une fois configurés, permettent le transfert de vos données de consommations au service Ecolyo. Le transfert de ces données de consommation se fait sans que personne n’accède à leur contenu, pas même la Métropole de Lyon. En effet, ces données sont stockées et traitées directement dans votre cloud personnel qui en assure la protection. Tous les calculs, analyses et traitements sur ces données sont faites DANS votre espace personnel sans visibilité sur le contenu des données par la Métropole de Lyon.\",\"part5_3\":\"Vous pouvez bien sûr mettre fin à la récupération/ au transfert de vos données de consommation sur votre espace cloud personnel à tout moment et à plusieurs niveaux : \",\"part5_3_list1\":\"Vous pouvez supprimer le transfert quotidien de vos données en supprimant tout simplement le connecteur dans la page Consos (en bas).\",\"part5_3_list2\":\"Pour supprimer l’ensemble de vos données ainsi que votre espace personnel Grand Lyon, vous devez demander la suppression de votre cloud. Pour faire cela, rendez-vous dans les paramètres de votre cloud personnel via la barre blanche en haut d’Ecolyo et appuyez sur le bouton « Supprimer mon compte » dans la partie paramètres.\",\"part5_4\":\"Des données sur le profil de votre foyer peuvent être également remplies au sein de l’application. Ces données s’enrichiront au fur et à mesure de votre utilisation du service avec d’autres informations : défis réalisés, étoiles gagnées, etc. L’ensemble de ces données restent à l’intérieur de votre cloud personnel, sans que personne n’y ait accès.\",\"part5_5\":\"Enfin, afin de permettre une mise à jour quotidienne de vos données de consommations, vos identifiants Eau Publique du Grand Lyon, un jeton d’identification GRDF ainsi que vos numéros de compteurs sont stockés.\",\"title6\":\"Personne n’a donc accès à mes données, pas même la Métropole de Lyon, vraiment ?\",\"part6_1\":\"Conformément aux indications du paragraphe précédent, la Métropole de Lyon n’accède ni à vos données de consommations ni aux données utilisées via certaines fonctionnalités du service comme le formulaire (celui-là même qui permet l’analyse de vos consommations personnalisée ainsi qu’une sélection d’éco-gestes personnalisés). Toutes ces informations sont bien gardées au chaud dans votre cloud personnel Grand Lyon.\",\"part6_2\":\"Seul vous pouvez accepter de partager vos données, documents ou fichiers privés avec la Métropole de Lyon, ses partenaires ou d’autres utilisateurs ou acteurs (publics ou privés) après recueil de votre consentement éclairé et par une action expresse de votre part.\",\"part6_3\":\"La Métropole de Lyon n'a cependant accès qu’à l’adresse email utilisée lors la création de votre cloud personnel Grand Lyon. Elle utilise cet email afin de vous tenir informé·e :\",\"part6_3_list1\":\"En réponse à vos demandes, si vous avez pris l’initiative de nous contacter. \",\"part6_3_list2\":\"En cas de problème majeur avec la gestion de votre compte.\",\"part6_3_list3\":\"De l’évolution de vos consommations, des nouveautés et de la qualité du service via une lettre mensuelle. Vous pouvez à tout moment vous désinscrire de cette lettre via la page Options du service.\",\"part6_4\":\"Elle stocke également les informations transmises lors de la connexion à l’électricité (nom, adresse postale). Ces informations doivent être stockées car la Métropole de Lyon est régulièrement contrôlée par Enedis et doit prouver détenir le consentement des personnes pour lesquelles elle va chercher la donnée.\",\"part6_5\":\"Par ailleurs, et dans le cadre de l’évaluation et de l’amélioration du service, des données d’utilisation anonymisées seront remontées à des fins d’exploitation statistiques. La récupération de ces statistiques anonymisées nous permettra de s’assurer du bon fonctionnement technique de la connexion à vos données de consommation ainsi que d’évaluer l’impact global en termes de baisse des consommations énergétiques de notre service. Parmi ces statistiques, des mesures d’audience de la fréquentation des différentes pages du service sont réalisées. Vous pouvez, via la page Options, à tout instant, décider de vous opposer à la récupération de ces données d’utilisation.\",\"title8\":\"Encore des questions ?\",\"part8_1\":\"N’hésitez pas à consulter la FAQ ou à nous contacter via le formulaire de contact présente sur l’ensemble des pages.\",\"part8_2\":\"Dernière option, contactez-nous directement à <a href=\\\"mailto:ecolyo@grandlyon.com\\\">ecolyo(at)grandlyon.com</a>.\",\"title9\":\"LEXIQUE\",\"part9_1_title\":\"Cloud personnel Grand Lyon : \",\"part9_1_content\":\"Cloud personnel : appelé aussi le « domicile numérique », le cloud personnel est souvent réduit à un simple espace de stockage de documents mais il est bien plus que ça. C'est un espace individuel et sécurisé où vous pouvez accéder à des services sans exposer aucune donnée à l’extérieur. Vous seul pouvez y accéder, personne d'autre.\",\"part9_2_title\":\"Connecteur : \",\"part9_2_content\":\"Un connecteur est un service, installé dans votre cloud personnel également, qui a pour but uniquement d’aller récupérer les données auprès de différents partenaires/sources de données. Dans le cadre d’Ecolyo, trois connecteurs sont pré-installés dans votre cloud personnel : celui d’Enedis, celui de GRDF et celui d’Eau Publique du Grand Lyon.\",\"part9_3_title\":\"Compteur communicant : \",\"part9_3_content\":\"Un compteur communicant est un compteur qui mesure de manière précise et détaillée vos consommations et peut transmettre ces données au gestionnaire de réseau via une technologie radio (c'est le cas pour Gazpar et Téléo par exemple) ou via les réseaux électriques (via Courant Porteur en ligne, c'est le cas pour Linky par exemple).\",\"part9_4_title\":\"Fournisseur : \",\"part9_4_content\":\"Votre fournisseur d’électricité, de gaz ou d’eau est l’entreprise qui vous facture votre électricité, gaz ou eau. Côté électricité il en existe <a href=\\\"https://www.enedis.fr/liste-des-fournisseurs-delectricite\\\">aujourd’hui plus de 50</a>, chacun proposant des tarifs différents.\",\"part9_5_title\":\"Gestionnaire de réseau de distribution : \",\"part9_5_content\":\"Appelé aussi parfois distributeur, il est en charge de la livraison de votre électricité, gaz ou eau jusqu’à votre domicile. Il est aussi en charge du compteur qui relève vos consommations. Il transmet vos données de consommations à votre fournisseur afin qu’il effectue la facturation de vos consommations d’énergie. Il peut également les transmettre à tout acteur avec qui vous avez décidé de partager ces données.\"}},\"gcu_modal\":{\"button_accept\":\"J'accepte\",\"accessibility\":{\"window_title\":\"Conditions générales d’utilisation\",\"button_accept\":\"Accepter les conditions générales d'utilisation\"}},\"matomo\":{\"matomo_title\":\"Suivi statistiques d'usage Matomo\"},\"header\":{\"accessibility\":{\"button_back\":\"Retour à la page précédente\",\"button_open_feedbacks\":\"Ouvrir le partage de retours\"}},\"konnector_form\":{\"label_updated_at\":\"Dernière mise-à-jour le\",\"button_update\":\"Mettre à jour\",\"loading\":\"Chargement...\",\"wait_end_issue\":\"Attendre la fin de la maintenance avant de mettre à jour.\",\"button_delete\":\"Supprimer\",\"issue\":\"Le problème semble venir de \",\"resolve\":\"Une mise à jour peut résoudre ce problème.\",\"login_failed\":\"Un problème a lieu lors de la récupération de vos données. Merci de supprimer votre connecteur et vous reconnecter.\",\"not_installed\":\"Le connecteur n'est pas installé. Veuillez l'installer en cliquant sur le bouton ci-dessous.\",\"button_install\":\"Installer\",\"error_account_creation\":\"Une erreur est survenue, veuillez essayer de nouveau.\",\"error_no_login_password\":\"Identifiant et mot de passe requis\",\"error_login_failed\":\"Identifiants invalides\",\"error_update\":\"Un problème est survenu lors du rapatriement de vos données.\",\"error_update_oauth\":\"Votre autorisation pour afficher vos données %{fluid} a expiré.\",\"error_consent_form_gas\":\"Vos données ne peuvent être récupérées car vous n'avez pas coché l'autorisation d'accès aux données informatives lors de votre partage de consentement.\",\"button_oauth_reload\":\"Redonner mon consentement\",\"OK\":\"Ok\",\"konnector_delta\":{\"ELECTRICITY\":\"La donnée de consommation électrique arrive normalement à J+1. Un retard d'un ou deux jours est parfois constaté.\",\"GAS\":\"La donnée de consommation de gaz arrive normalement à J+3. Un retard d'un ou deux jours est parfois constaté.\",\"WATER\":\"La donnée de consommation d'eau arrive normalement à J+3. Un retard d'un ou deux jours est parfois constaté.\"},\"accessibility\":{\"button_install\":\"Installer le connecteur\",\"button_update\":\"Mettre à jour votre connexion\",\"button_delete\":\"Supprimer votre connexion\"}},\"konnector_options\":{\"label_connect_to_electricity\":\"Se connecter à l'électricité\",\"label_connect_to_water\":\"Se connecter à l'eau\",\"label_connect_to_gas\":\"Se connecter au gaz\",\"label_offline_electricity\":\"Électricité déconnectée\",\"label_offline_water\":\"Eau déconnectée\",\"label_offline_gas\":\"Gaz déconnecté\",\"partner_issue\":\"En maintenance\",\"outdated\":\"Données manquantes depuis %{isOutdatedData} jours\",\"accessibility\":{\"label_ko_status\":\"Connecteur en erreur\",\"button_toggle_detail_electricity\":\"Afficher ou masquer le détail de la connexion à l'électricité\",\"button_toggle_detail_water\":\"Afficher ou masquer le détail de la connexion à l'eau\",\"button_toggle_detail_gas\":\"Afficher ou masquer le détail de la connexion au gaz\"}},\"konnector_modal\":{\"loading_data\":\"Veuillez patienter, vos données sont en cours de chargement.\",\"loading_data_update\":\"Veuillez patienter, vos données sont en cours de mise à jour.\",\"logging_txt\":\"Nous vérifions vos informations d'identité\",\"success_txt\":\"Félicitations !\",\"success_data_electricity\":\"Vos données de consommation d'électricité sont maintenant connectées à Ecolyo.\",\"success_data_water\":\"Vos données de consommation d'eau sont maintenant connectées à Ecolyo.\",\"success_data_gas\":\"Vos données de consommation de gaz sont maintenant connectées à Ecolyo.\",\"success_data_additional_electricity\":\"Les données de consommations mettent entre un et deux jours pour arriver.\",\"success_data_additional_water\":\"Les données de consommations mettent entre trois et cinq jours pour arriver.\",\"success_data_additional_gas\":\"Les données de consommations mettent entre trois et cinq jours pour arriver.\",\"success_update_txt\":\"Connexion réussie !\",\"success_data_update_electricity\":\"Ecolyo est bien connecté à votre compteur d'électricité.\",\"success_data_update_water\":\"Ecolyo est bien connecté à votre compteur d'eau.\",\"success_data_update_gas\":\"Ecolyo est bien connecté à votre compteur de gaz.\",\"success_data_additional_update_electricity\":\"Sachez que la donnée de consommation d'électricité arrive entre J+1 et J+2.<br /><br />S'il vous manque encore des données, c'est qu'elles n'ont pas encore été mises à disposition par le gestionnaire de votre compteur. Merci pour votre patience !\",\"success_data_additional_update_water\":\"Sachez que la donnée de consommation d'eau arrive entre J+3 et J+5.<br /><br />S'il vous manque encore des données, c'est qu'elles n'ont pas encore été mises à disposition par le gestionnaire de votre compteur. Merci pour votre patience !\",\"success_data_additional_update_gas\":\"Sachez que la donnée de consommation de gaz arrive entre J+3 et J+5.<br /><br />S'il vous manque encore des données, c'est qu'elles n'ont pas encore été mises à disposition par le gestionnaire de votre compteur. Merci pour votre patience !\",\"error_txt\":\"Aïe !\",\"mismatch\":{\"title\":\"Vos données n'ont pas pu être récupérées.\",\"text1\":\"Vos nom et numéro de compteur ne correspondent plus. Merci de reconfigurer votre connecteur.\",\"text2\":\"Reconfigurer mon connecteur ?\",\"text3\":\"La reconfiguration de votre connecteur passe par sa suppression et sa nouvelle installation. Vos données seront conservées.\"},\"error_data_electricity\":\"Un problème est survenu. Vos données de consommation d’électricité ne seront pas chargées.\",\"error_data_water\":\"Un problème est survenu. Vos données de consommation d’eau ne seront pas chargées.\",\"error_credentials_water\":\"Une erreur s'est glissée dans vos identifiants de connexion. Veuillez vérifier ces éléments et tenter de vous reconnecter. L'identifiant est un numéro à 7 chiffres (différent de votre numéro de contrat).\",\"error_credentials_electricity\":\"Il semblerait que les nom(s) et adresse ne concordent pas avec le numéro de votre compteur.\",\"error_credentials_electricity_2\":\"Nous ne pouvons vous donner accès aux données de consommation.\",\"error_credentials_update_water\":\"Une erreur s'est glissée dans vos identifiants de connexion. Veuillez vérifier ces éléments et tenter de vous reconnecter.\",\"error_credentials_update_electricity\":\"Un problème a lieu lors de la récupération de vos données. Merci de supprimer votre connecteur et vous reconnecter.\",\"error_credentials_update_gas\":\"Un problème a lieu lors de la récupération de vos données. Merci de supprimer votre connecteur et vous reconnecter.\",\"error_data_gas\":\"Un problème est survenu. Vos données de consommation de gaz ne seront pas chargées.\",\"error_consent_form_gas_title\":\"Nous n'avons pas pu connecter vos données de consommation de gaz à Ecolyo.\",\"error_consent_form_gas_content\":\"En effet, le partage de vos données de consommation de gaz \\\"informatives\\\" doit être accepté.\",\"error_consent_form_gas_content_2\":\"Merci de cocher \\\"OUI\\\" au partage de vos données de consommation de gaz, et à \\\"Autoriser l'accès à mes données informatives\\\".\",\"error_data_update_electricity\":\"Un problème est survenu. Vos données de consommation d’électricité n’ont pas été mises à jour.\",\"error_data_update_water\":\"Un problème est survenu. Vos données de consommation d’eau n’ont pas été mises à jour.\",\"error_data_update_gas\":\"Un problème est survenu. Vos données de consommation de gaz n’ont pas été mises à jour.\",\"error_data_2\":\"Merci de réessayer plus tard.\",\"button_validate\":\"Ok\",\"button_understood\":\"J'ai compris\",\"button_try_again\":\"Réessayer\",\"show_common_error\":\"Voir les erreurs récurrentes\",\"show_common_error_list\":\"<span style=\\\"text-align:left; font-weight:700;\\\">Le problème peut provenir des cas suivants :</span> <ul style=\\\"text-align:left;\\\"><li>Vous avez un co-titulaire sur votre contrat. Veillez à bien entrer le nom du <span style=\\\"color:#E3B82A; font-weight:700;\\\">titulaire du contrat</span> et non le co-titulaire.</li><li> Votre nom comporte un tiret ? Tentez sans le tiret.</li><li> Entrez bien le nom de votre commune de résidence en entier (tirets et accents inclus)</li><li> Avez-vous bien entré le <span style=\\\"color:#E3B82A; font-weight:700;\\\">numéro de votre compteur</span> (PDL) ? Tout autre numéro (de contrat, de client) ne fonctionne pas.</li></ul><p style=\\\"text-align:center; font-style: italic; font-weight:400; font-size: 0.9rem;\\\">Si vous rencontrez toujours des difficultés, contactez notre service d'aide </p><div style=\\\"text-align:center; font-weight:700;\\\">Avez-vous pensez à vérifier ces informations ?</div>\",\"accessibility\":{\"window_title\":\"Fenêtre d'attente de connexion\",\"button_close\":\"Fermer la fenêtre\"}},\"consent_outdated\":{\"title\":{\"0\":\"Votre autorisation pour afficher vos données d’électricité a expiré\",\"2\":\"Votre autorisation pour afficher vos données de gaz a expiré\"},\"text1\":{\"0\":\"Veuillez re-donner votre consentement pour la transmission et la reconnexion de vos données ENEDIS à Ecolyo.\",\"2\":\"Veuillez re-donner votre accord pour que GRDF nous transmette vos données de consommation.\"},\"text2\":{\"0\":\"Souhaitez-vous renouveler votre accord dès maintenant pour un an ?\",\"2\":\"Voulez-vous donner votre accord sur votre compte GRDF maintenant ?\"},\"later\":\"Plus tard\",\"go\":\"J'y vais\",\"no\":\"Non\",\"yes\":\"Oui\"},\"delete_grdf_modal\":{\"text1\":\"La suppression de la connexion avec GRDF s’accompagne de la suppression de votre consentement à partager vos données gaz avec Ecolyo.\",\"text2\":\"Si vous souhaitez vous reconnecter, il vous faudra re-donner votre accord pour que GRDF nous transmette vos données de consommation.\",\"text3\":\"Voulez-vous supprimer votre connexion et votre consentement à GRDF ?\",\"cancel\":\"Plus tard\",\"go\":\"Oui\"},\"legal\":{\"read_legal\":\"Lire les mentions légales\",\"title_legal\":\"Mentions légales & CGU\",\"version\":\"Version du 12.12.2022\",\"site\":\"Site du service Ecolyo : <a href=\\\"https://ecolyo.com/\\\"> https://ecolyo.com/</a>\",\"adress\":\"Métropole de Lyon - 20, rue du Lac – CS 33569 - 69505 Lyon cedex 03\",\"phone\":\"Tél : (33) 4 78 63 40 40\",\"mail\":\"<a href=\\\"mailto:ecolyo@grandlyon.com\\\"> ecolyo(at)grandlyon.com</a>\",\"p1b\":\"Directrice de publication : \",\"p1\":\"Blandine MELAY, Responsable du Service Transition Énergétique\",\"p2b\":\"Animation éditoriale, gestion et mise à jour : \",\"p2\":\"Marion BERTHOLON, Chargée de services numériques pour la transition énergétique\",\"p3b\":\"Photographies : \",\"p3\":\"sauf mention contraire, les photos sont la propriété de la Métropole de Lyon\",\"p4b\":\"Conception et Charte graphique : \",\"p4\":\"Florent Dufier\",\"p5b\":\"Réalisation technique : \",\"p5\":\"Métropole de Lyon, Sopra Steria\",\"p6b\":\"Maintenance technique : \",\"p6\":\"Délégation Développement économique, emploi & savoirs - Innovation numérique & systèmes d’information - Usages et services numériques - Développement des services numériques\",\"title1\":\"Crédits\",\"part1\":\"Ce site est le résultat de développements spécifiques réalisés dans les langages Go, TypeScript, HTML et Sass. Les développements s’appuient sur plusieurs bibliothèques et frameworks libres : axios, cozy-bar, cozy-client, cozy-harvest-lib, cozy-scripts, cozy-ui, d3, detect-browser, global, lodash, luxon, moment, moment-timezone, node-sass, object-hash, react, react-dom, react-redux, react-router-dom, react-swipeable-views, redux-devtools-extension, sass-loader. Les tests de l’application s’appuient sur les bibliothèques et frameworks libres suivants: enzyme, enzyme-adapter-react-16, jest-junit, react-test-renderer, redux-mock-store. La pile technique intègre également les applications Cozy stack, Yarn, Docker, ACH. Les déploiements sont réalisés sur le registre hébergé chez Cozy. L’équipe de réalisation utilise au quotidien les applications GitLab, IceScrum, RocketChat, SonarQube.\",\"title2\":\"Traitement des données personnelles et droit d’accès, de modification et de suppression\",\"part2\":\"Conformément à la réglementation en vigueur en matière de protection des données personnelles, le service Ecolyo a fait l’objet d’une inscription au registre des traitements de la Métropole de Lyon. Ecolyo fait partie de l’écosystème de services orientés « self data » déployés par la Métropole de Lyon avec l’ambition d’offrir aux usagers métropolitains les outils et les services leur permettant d’exercer directement leur droit à la portabilité, dans un cadre apte à garantir aussi bien la transparence et le contrôle sur l’usage de leurs données personnelles que l’exploitation directe du contenu de ces données selon leurs libres choix. Le self data est en effet selon la Fondation Internet Nouvelle Génération (FING) « la production, l’exploitation et le partage de données personnelles par les individus, sous leur contrôle et à leurs propres fins ». Au sein de cet environnement self data, la gestion des données s’appuie sur l’organisation suivante des rôles et responsabilités associées : \",\"part2-1\":\"Les partenaires du service GRDF et Eau Publique du Grand Lyon sont responsables exclusivement des seuls traitements de Données Personnelles relatifs à la collecte des données de consommation de gaz et d’eau de l’utilisateur et à leur transmission sur la plateforme de cloud personnel, après consentement de l’utilisateur.\",\"part2-2\":\"Enedis est responsable de la collecte des données de consommation d’électricité et de leur mise à disposition à la Métropole de Lyon qui, elle en gère la transmission sur la plateforme du cloud personnel de l’utilisateur, après avoir récupéré le consentement de l’utilisateur.\",\"part2-3\":\"La Métropole de Lyon est responsable de traitement sur le périmètre du service Ecolyo qu’elle propose à l’usager, ainsi que des traitements nécessaires à la fourniture de la plateforme de cloud personnel qu’elle met à disposition de l’usager pour accéder au service Ecolyo. En sa qualité de responsable de ces traitements, elle collecte et traite : \",\"part2-3-1\":\"Les données de compte de l’usager renseignées par l’usager au sein de son espace de cloud personnel Grand Lyon à des fins de gestion du compte et de communication avec l’usager ;\",\"part2-3-2\":\"Les données de compte de l’utilisateur lui permettant de connecter ses données d’électricité à Ecolyo ;\",\"part2-3-3\":\"Les données privées de consommation d’énergie et d’eau dont la récupération, la sauvegarde, le stockage, la synchronisation et le partage sur la plateforme de cloud personnel sont initiés par l’usager sans visibilité de la Métropole de Lyon sur leur contenu.\",\"part2-3-4\":\"Les données privées sur la composition du logement et du foyer de l’utilisateur, fournies par l’utilisateur lui-même au sein du service, sont traitées par le service sans visibilité de la Métropole de Lyon sur leur contenu.\",\"part2-3-5\":\"Des métriques d’usage du service anonymisées et remontées périodiquement afin d’améliorer la qualité du service et d’évaluer son impact (Plus d’informations sur la manière dont votre anonymat est bien préservé dans ce processus <a href=\\\"https://ecolyo.com/cloud_statistiques.html\\\">ici</a>).\",\"part2-4\":\"La Métropole réalise également des mesures d’audience à l’aide de la solution Matomo. Afin de vous fournir un meilleur service et d’améliorer votre expérience d'utilisateur, nous utilisons des solutions de mesure d’audience qui utilisent la technologie des « cookies », des fichiers texte qui sont enregistrés sur votre ordinateur et qui permettent de générer des informations envoyées aux serveurs de mesure d’audience. Sur ces serveurs, l’adresse IP est anonymisée. Les données recueillies ont uniquement pour finalité de permettre d'analyser la fréquentation de nos pages afin d'en améliorer le contenu. Il s'agit de statistiques agrégées permettant de connaître le nombre de visites et de visiteurs différents, les pages les plus populaires, les chemins préférés, les niveaux d'activité par jour de la semaine et par heure de la journée, les principales erreurs etc. Vous avez cependant le droit de vous opposer à l’utilisation de ces cookies, et donc au traitement de vos données personnelles de navigation, en vous rendant dans la page Options de notre service.\",\"part2-5\":\"L’usager est seul décisionnaire des finalités d’utilisation qu’il souhaite définir pour le traitement de ses données personnelles de consommation, à la suite de leur transmission par les partenaires du service Ecolyo sur son cloud personnel. Ainsi, dans le cadre de l’utilisation d’Ecolyo, l’usager ne recevra les données des partenaires du service : Enedis, GRDF et Eau Publique du Grand Lyon seulement qu’à sa demande expresse après la saisie de ses identifiants.\",\"part2-6\":\"L’utilisateur est donc le seul à accéder :\",\"part2-6-1\":\"À ses données de consommation d’électricité horaires, journalières, hebdomadaires, mensuelles et annuelles.\",\"part2-6-2\":\"À ses données de consommation de gaz journalières, hebdomadaires, mensuelles et annuelles.\",\"part2-6-3\":\"À ses données de consommation eau journalières, hebdomadaires, mensuelles et annuelles.\",\"part2-7\":\"Les engagements et responsabilités de la Métropole de Lyon concernant la protection des données et la confidentialité des données Ecolyo sont précisés dans les Mentions légales et les conditions d’utilisation du cloud personnel Grand Lyon qui accueille aujourd’hui le service Ecolyo et sans lequel le service ne peut pas fonctionner. Pour plus d’informations sur les engagements et responsabilités de la Métropole de Lyon concernant la protection et la confidentialité dans le cloud personnel, nous vous invitons à vous référer <a href=\\\"https://manager.cozygrandlyon.cloud/tos/266b4226-8417-42fb-b911-41e86dae8581.pdf?locale=fr\\\">aux mentions légales et CGU du cloud personnel métropolitain.</a> \",\"part2-8\":\"Conformément à la loi 78-17 du 6 janvier 1978 modifiée relative à l’information, aux fichiers et aux libertés, vous disposez d’un droit d’accès, de rectification et d’opposition au traitement de vos données à caractère personnel. Votre cloud personnel vous permet d’exercer ces droits directement dans cet espace sur vos données de compte. S’agissant des données de consommations d’électricité et de gaz, l’utilisateur peut supprimer son consentement à partager ses données en supprimant son connecteur dans la page Consos.\",\"part2-9\":\"Vous pouvez également exercer vos droits d’accès, de rectification, de limitation, d’opposition et d’effacement de vos données personnelles en contactant directement le Délégué à la Protection des Données par courrier en écrivant à l’adresse :\",\"part2-10\":\"Métropole de Lyon – Délégué à la Protection des Données - Direction des Assemblées, des Affaires Juridiques et des Assurances - 20, rue du Lac - BP 33569 - 69505 Lyon Cedex 03 ou en ligne, au moyen du formulaire disponible à l'adresse suivante : <a href=\\\"https://demarches.toodego.com/sve/proteger-mes-donnees-personnelles/\\\">https://demarches.toodego.com/sve/proteger-mes-donnees-personnelles/.</a>\",\"part2-11\":\"L’exercice de ces droits sur vos données personnelles auprès de la Métropole de Lyon concerne exclusivement les données traitées dans le cadre du service « Ecolyo ».\",\"title3\":\"Dispositions légales\",\"part3-1\":\"Les divers éléments du site web (la forme, la mise en page, le fonds, la structure …) sont protégés par le droit des dessins et modèles, le droit d’auteur, le droit des marques ainsi que le droit à l’image et ils ne peuvent être copiés ou imités en tout ou partie sauf autorisation expresse de la Métropole de Lyon.\",\"part3-2\":\"Toute personne ne respectant pas les dispositions légales applicables se rend coupable du délit de contrefaçon et est passible des sanctions pénales prévues par la loi.\",\"title4\":\"Droits d’auteurs\",\"part4-1\":\"Les photographies, textes, logos, pictogrammes, ainsi que toutes œuvres intégrées dans le site sont la propriété de la \\\"Métropole de Lyon\\\" ou de tiers ayant autorisé la \\\"Métropole de Lyon\\\" à les utiliser.\",\"part4-2\":\"Les reproductions, les transmissions, les modifications, les réutilisations, sur un support papier ou informatique, dudit site et des œuvres qui y sont reproduites ne sont autorisées que pour un usage personnel et privé conforme aux dispositions de l’article L 122-5 du Code de la Propriété Intellectuelle. Ces reproductions devront ainsi notamment indiquer clairement la source et l’auteur du site et/ou de ces œuvres multimédias. En aucun cas ces reproductions ne sauraient porter préjudice aux droits des tiers. Les reproductions, les transmissions, les modifications, les réutilisations à des fins publicitaires, commerciales ou d’information, de tout ou partie du site, sont totalement interdites.\",\"title5\":\"Logo de la Métropole de Lyon et d’Ecolyo\",\"part5\":\"Les logos de la Métropole de Lyon et d’Ecolyo ne peuvent pas être modifiés – proportions, couleurs, éléments, constituants – et ne peuvent pas être sujet à aucune transformation, animation ou tout autre processus. Les logos de la Métropole de Lyon et d’Ecolyo ne peuvent être utilisés et associés qu’aux seules informations vérifiables. Ils ne peuvent être notamment utilisés que pour illustrer des relations avec la Métropole de Lyon ou des actions de sponsorings dûment établies. Quel que soit le cas d’espèce, la Métropole de Lyon se réserve le droit d’approuver ou de désapprouver toute utilisation des logos de la Métropole de Lyon et d’Ecolyo, pour assurer son utilisation correcte, conformément à l’éthique, la morale et aux intérêts de la Métropole de Lyon. Les conditions susmentionnées s’appliquent dans le cadre de pages web, elles ne font pas référence à l’utilisation des logos dans tout autre document. La Métropole de Lyon se réserve le droit de modifier les conditions d’utilisation des logos de la Métropole de Lyon et d’Ecolyo à tout moment et sans préavis.\",\"title6\":\"Droit des bases de données\",\"part6\":\"Les bases de données sont protégées par la loi du 1er juillet 1998 et le régime français du droit d’auteur.\",\"title7\":\"Établissements de liens vers le site Ecolyo\",\"part7-1\":\"La Métropole de Lyon autorise la mise en place d’un lien hypertexte vers son service Ecolyo pour tous les sites internet, à l’exclusion de ceux diffusant des informations à caractère polémique, pornographique, xénophobe ou pouvant, dans une plus large mesure porter atteinte à la sensibilité du plus grand nombre.\",\"part7-2\":\"Le lien doit aboutir à la page d’accueil du service (<a href=\\\"https://ecolyo.com\\\">https://ecolyo.com</a>), cette page devant apparaître dans une nouvelle fenêtre. Les pages du service Ecolyo ne doivent en aucun cas être intégrées à l’intérieur des pages d’un autre site (iframe).\",\"part7-3\":\"Dans tous les cas d’espèce, La Métropole de Lyon se réserve le droit de demander la suppression d’un lien si elle estime que le site cible ne respecte pas les règles ainsi définies.\",\"title8\":\"Liens vers des sites tiers depuis le site Ecolyo\",\"part8\":\"Les liens hypertextes mis en œuvre au sein du site en direction d’autres sites et/ou de pages personnelles et d’une manière générale vers toutes ressources existantes sur internet ne sauraient engager la responsabilité de la Métropole de Lyon quant aux liens qu’ils contiennent ou aux changements ou mises à jour qui leur sont apportés.\",\"title9\":\"Mise en garde générale\",\"part9-1\":\"Nos services mettent tout en œuvre pour offrir aux visiteurs de ce site web des informations fiables et vérifiées. Cependant, malgré tous les soins apportés, le site peut comporter des inexactitudes, des défauts de mise à jour ou des erreurs.\",\"part9-2\":\"Nous remercions les utilisateurs du site de nous faire part d’éventuelles omissions, erreurs ou corrections par mail sur la boite aux lettres du webmestre ou directement via le formulaire proposé dans le service.\",\"accessibility\":{\"button_close\":\"Fermer la fenêtre\"}},\"oauth\":{\"window\":{\"title\":\"OAuth\"}},\"onboarding\":{\"welcomeModal\":{\"title\":\"Vous êtes à mi-chemin !\",\"part1\":\"Votre cloud personnel a bien été créé.\",\"part2\":\"Il vous faut maintenant donner votre accord pour connecter vos compteurs au service.\",\"button_valid\":\"Ok\",\"accessibility\":{\"window_title\":\"Fenêtre de bienvenue\",\"button_valid\":\"Valider\"}}},\"old_fluid_data_modal\":{\"errorTxt\":\"Aïe !\",\"oldData\":\"Vos données semblent anciennes\",\"verify\":\"Veuillez vérifier l’état de vos connecteurs : \",\"problem\":\"Vos connecteurs semblent bien connectés, il se peut qu’il y ait un problème au niveau du ou des fournisseurs de données :\",\"problem_electricity\":\"pour l'électricité.\",\"problem_water\":\"pour l'eau.\",\"problem_gas\":\"pour le gaz.\",\"contact\":\"Veuillez prendre contact directement avec eux.\",\"accessButton\":\"Accéder aux connecteurs\",\"later\":\"Plus tard\",\"ok\":\"Ok\",\"accessibility\":{\"window_title\":\"Fenêtre d'information\",\"button_ok\":\"Fermer la fenêtre\",\"button_later\":\"Fermer la fenêtre\",\"button_goto_konnector\":\"Aller aux connecteurs\"}},\"performance_indicator\":{\"bilan\":{\"text1\":\"Par rapport à \",\"text2\":\"soit une différence de : \"},\"error_no_compare\":\"comparaison impossible\",\"error_no_compare_reason\":\"(manque de données)\",\"error_no_compare_no_data\":\"Vos consommations pour cette période sont incomplètes à cause d’un problème technique concernant :\",\"fpi\":{\"no_data\":\"Données non disponibles\",\"no_comparison\":\"Pas de comparaison possible\"}},\"profile\":{\"report\":{\"title_alert\":\"Alerte Consommation Excessive d'Eau\",\"title_bilan\":\"Notification par mail\",\"switch_label_bilan\":\"Je reçois la lettre mensuelle contenant un bilan et des conseils sur ma consommation.\",\"switch_label_alert\":\"Être prévenu d’un dépassement anormal de ma consommation d’eau\",\"input_label_alert\":\"Si ma consommation d’eau quotidienne dépasse :\",\"input_label_subtext_alert\":\"Votre consommation quotidienne maximum sur les 6 derniers mois : \",\"activate\":\"Activer\",\"deactivate\":\"Désactiver\"},\"accessibility\":{\"button_toggle_mail_report\":\"Recevoir mon bilan mensuel par mail\",\"button_toggle_consumption_alert\":\"Recevoir des alertes sur mes consommations journalières\",\"input_water_alert_report\":\"Indiquer une limite de consommation d'eau journalière\"}},\"profile_type\":{\"title_profile\":\"Mes données\",\"read_profile\":\"Ajuster mon profil\",\"button_update_profile\":\"J'ajuste mon profil\",\"your_profile\":\"Mon profil\",\"multi_choices\":\"Plusieurs réponses possibles\",\"housing_type\":{\"title\":\"Logement\",\"question\":\"De quel type de logement disposez-vous ?\",\"individual_house\":\"Maison individuelle\",\"apartment\":\"Appartement\"},\"construction_year\":{\"title\":\"Construction\",\"question\":\"Quelle est son année de construction ?\",\"text_before_1948\":\"Construit avant 1948\",\"text_between_1948_and_1974\":\"Construit entre 1948 et 1974\",\"text_between_1975_and_1989\":\"Construit entre 1975 et 1989\",\"text_between_1990_and_1998\":\"Construit entre 1990 et 1998\",\"text_after_1998\":\"Construit après 1998\",\"text_unknown\":\"Construit après 1998\",\"before_1948\":\"Avant 1948\",\"between_1948_and_1974\":\"Entre 1948 et 1974\",\"between_1975_and_1989\":\"Entre 1975 et 1989\",\"between_1990_and_1998\":\"Entre 1990 et 1998\",\"after_1998\":\"Après 1998\",\"unknown\":\"Je ne sais pas\"},\"occupantsNumber\":{\"single\":\" occupant\",\"multi\":\" occupants\"},\"area\":{\"title\":\"Surface\",\"question\":\"Quelle est sa surface en m² ?\",\"name\":\" m²\"},\"occupants_number\":{\"title\":\"Nombre d'occupants\",\"question\":\"Combien il y a-t-il d'occupants ?\"},\"outside_facing_walls\":{\"1\":\"1 façade\",\"2\":\"2 façades\",\"3\":\"3 façades\",\"4\":\"4 façades\",\"title\":\"Murs extérieurs\",\"question\":\"Combien de façades donnent sur l'extérieur ?\",\"text\":{\"single\":\" façade donne sur l'extérieur\",\"multi\":\" façades donnent sur l'extérieur\"}},\"floor\":{\"title\":\"Étage\",\"question\":\"À quel étage est votre appartement ?\",\"ground_floor\":\"Au rez-de-chaussée\",\"intermediate_floor\":\"Étage intermédiaire\",\"last_floor\":\"Dernier étage\",\"not_applicable\":\"Sans objet\"},\"heating\":{\"title\":\"Chauffage\",\"question\":\"Quel est votre type de chauffage ?\",\"individual\":\"Individuel\",\"collective\":\"Collectif\"},\"individual_insulation_work\":{\"title\":\"Travaux de rénovation\",\"question\":\"Quels travaux de rénovation avez-vous réalisés ces 10 dernières années ?\",\"none\":\"Aucun\",\"roof_insulation\":\"Isolation toiture\",\"window_replacement\":\"Remplacement fenêtres\",\"wall_insulation\":\"Isolation des murs\",\"window_replacement_and_wall_insulation\":\"Remplacement fenêtres et isolation des murs\",\"window_replacement_and_roof_insulation\":\"Remplacement fenêtres et isolation toiture\",\"roof_and_wall_insulation\":\"Isolation toiture et murs\",\"window_replacement_and_roof_and_wall_insulation\":\"Remplacement fenêtre et isolation des murs et isolation toiture\",\"built_after_1998\":\"construit après 1998\"},\"facilities_installation\":{\"title\":\"Équipement\"},\"ventilation\":{\"title\":\"Ventilation double flux\",\"question\":\"Êtes-vous équipé d'une ventilation double flux ?\",\"yes\":\"Oui\",\"no\":\"Non\",\"unknown\":\"Je ne sais pas\",\"text\":\"Équipé d'une ventilation double flux\"},\"heater_replacement\":{\"title\":\"Pompe à chaleur ou poêle à bois\",\"question\":\"Au cours de ces 10 dernières années, avez-vous remplacé votre chaudière ou vous êtes-vous équipé d'une pompe à chaleur ou d'un poêle à bois ?\",\"yes\":\"Oui\",\"no\":\"Non\",\"unknown\":\"Je ne sais pas\",\"text\":\"Équipé d'une pompe à chaleur ou poêle à bois\"},\"cold_water\":{\"title\":\"Eau\",\"question\":\"Votre eau est-elle comprise dans vos charges collectives ?\",\"individual\":\"Non\",\"collective\":\"Oui\",\"individual_text\":\"Individuelle\",\"collective_text\":\"Collective\"},\"hot_water\":{\"title\":\"Eau chaude\",\"question\":\"Quel est votre type de production d’eau chaude ?\",\"individual\":\"Individuelle\",\"collective\":\"Collective\"},\"hot_water_equipment\":{\"title\":\"Eau chaude\",\"question\":\"Utilisez-vous l’un de ces équipements pour produire votre eau chaude ?\",\"solar\":\"Chauffe-eau solaire\",\"thermodynamic\":\"Chauffe-eau thermodynamique\",\"other\":\"Aucun des deux\"},\"warming_fluid\":{\"0\":\"Électricité\",\"2\":\"Gaz\",\"3\":\"Bois\",\"4\":\"Fioul\",\"5\":\"Autre\",\"title\":\"Source chauffage\",\"question\":\"Quelle source d’énergie principale utilisez-vous pour vous chauffer ?\",\"no_fluid_text\":\"Produit ni par de l'électricité, ni par du gaz, ni par du bois ou du fuel\",\"0_text\":\"Produit grâce à de l'électricité\",\"2_text\":\"Produit grâce au gaz\",\"3_text\":\"Produit grâce au bois\",\"4_text\":\"Produit grâce au fioul\",\"5_text\":\"Produit grâce à un autre moyen\"},\"hot_water_fluid\":{\"0\":\"Électricité\",\"2\":\"Gaz\",\"3\":\"Autre (Fioul, Bois)\",\"title\":\"Source eau chaude\",\"question\":\"Avec quelle source d’énergie votre eau chaude est-elle produite ?\",\"no_fluid_text\":\"Produite ni par de l'électricité, ni par du gaz\",\"0_text\":\"Produite grâce à de l'électricité\",\"2_text\":\"Produite grâce au gaz\",\"3_text\":\"Produite à partir d'un autre moyen que l'électricité ou le gaz\"},\"cooking_fluid\":{\"0\":\"Électricité\",\"2\":\"Gaz\",\"title\":\"Source cuisson\",\"question\":\"Quel mode de cuisson principal utilisez-vous ?\"},\"update_date\":{\"title\":\"Date de prise d'effet\",\"question\":\"A partir de quelle date souhaitez-vous que ce nouveau profil soit pris en compte dans l'analyse de vos données ?\"},\"fluidType\":{\"0\":\"Électricité\",\"1\":\"Eau\",\"2\":\"Gaz\"},\"form\":{\"button_previous\":\"Précédent\",\"button_next\":\"Suivant\",\"button_end\":\"Terminer\",\"button_loading\":\"Chargement...\"},\"finished\":{\"title\":\"Terminé !\",\"label1\":\"Grâce à ces informations, vous pourrez comparer votre consommation avec celle d'un foyer vous ressemblant davantage !\",\"label2\":\"Nous pourrons aussi vous proposer des astuces pour maîtriser vos consommations adaptées à votre profil.\",\"button_validate\":\"OK\"},\"accessibility\":{\"button_end\":\"Terminer la mise à jour du profil\",\"button_next\":\"Aller à la section suivante\",\"button_previous\":\"Retour à la section précédente\",\"button_update_profile\":\"Ouvrir la page de mise à jour du profil\",\"button_toggle_detail_profile\":\"Afficher ou masquer le détail du profil\",\"button_toggle_export\":\"Afficher ou masquer l'export des données'\",\"button_toggle_average_home\":\"Afficher ou masquer les informations sur le comparatif'\",\"button_validate\":\"Valider\"}},\"export\":{\"title_export\":\"Télécharger mes données\",\"text1\":\"Vous allez télécharger l'historique mensuel de vos fluides sélectionnés\",\"fluid_select\":\"Pour quel(s) fluide(s) souhaitez vous exporter vos données ?\",\"no_data\":\"Vous n'avez aucune donnée de fluide...\",\"button_download\":\"Télécharger\",\"month\":\"Mois\",\"year\":\"Année\",\"consumption\":\"Consommation\",\"maxpower\":\"Puissance max (kVA)\",\"button_close\":\"Fermer la fenêtre\",\"modal_start\":{\"accessibility_title\":\"Commencer le téléchargement\",\"text1\":\"Vous allez télécharger des données personnelles, Ecolyo n’est plus responsable de celles-ci une fois téléchargées\",\"text2\":\"Les données seront téléchargées sous forme de document excel (.xls)\",\"text3\":\"Lancer le téléchargement ?\",\"button_cancel\":\"Annuler\"},\"modal_loading\":{\"accessibility_title\":\"Téléchargement en cours\",\"text1\":\"Données en cours de téléchargement\",\"text2\":\"Veuillez ne pas quitter l’application pendant la récupération et le téléchargement de vos données\",\"button_cancel\":\"Annuler le téléchargement\"},\"modal_done\":{\"accessibility_title\":\"Téléchargement terminé\",\"text1\":\"Vos données ont bien été téléchargées !\",\"text2\":\"Vous pouvez maintenant retrouver l’historique de vos données sur votre appareil\",\"error1\":\"Aïe !\",\"error2\":\"Il semblerait qu’une erreur se soit produite lors du téléchargement de vos données.\",\"button_close\":\"Fermer\",\"button_close_error\":\"Revenir plus tard\"}},\"quiz\":{\"explanation\":\"Répondez correctement aux 5 questions et remportez 5 des 15 étoiles nécessaires pour débloquer le duel final\",\"score_final\":\"SCORE FINAL\",\"correct\":\"Bravo !\",\"wrong\":\"Raté !\",\"rightAnswer\":\"Bonne réponse :\",\"earn\":\"Vous remportez\",\"button_go_back\":\"Retour\",\"button_end_quiz\":\"Youpi !\",\"button_try_again\":\"Réessayer\",\"button_validate\":\"Valider\",\"next\":\"Suivant\",\"consumption_question\":\"Question sur votre consommation\",\"accessibility\":{\"window_title\":\"Fenêtre de résultat\",\"button_end_quiz\":\"Terminer le quiz\",\"button_go_back\":\"Retour\",\"button_go_next\":\"Suivant\",\"button_try_again\":\"Relancer le quiz\",\"button_validate\":\"Valider\"}},\"splashscreen\":{\"error_loading\":\"Une erreur est survenue\",\"button_reload\":\"Réessayer\",\"accessibility\":{\"button_reload\":\"Recharger la page\"},\"migration_error\":\"Mise à jour de l'application\",\"consent_error\":\"Vérification de vos consentements pour partager vos données avec Ecolyo\",\"profile_error\":\"Chargement de votre profil utilisateur\",\"profileType_error\":\"Chargement de votre profil de consommation.\",\"challenges_error\":\"Actualisation de votre progression dans les défis\",\"analysis_error\":\"Chargement de votre analyse mensuelle\",\"index_error\":\"Chargement des index\",\"prices_error\":\"Mise à jour des prix\",\"consos_error\":\"Connexion à vos données de consommation\",\"partners_error\":\"Récupération de l'état des services partenaires\",\"unknown_error\":\"Veuillez vérifier votre connexion internet\",\"network_error\":\"Erreur de réseau\",\"step\":{\"0\":\"Mise à jour de l'application\",\"1\":\"Vérification de vos consentements pour partager vos données avec Ecolyo\",\"2\":\"Chargement de votre profil\",\"3\":\"Actualisation de votre progression dans les défis\",\"4\":\"Mise à jour des prix\",\"5\":\"Connexion à vos données de consommation\"}},\"timestep\":{\"today\":\"Aujourd'hui\",\"year\":{\"period\":\"5 ans\",\"comparelabel\":\"Comparer à l'année précédente\"},\"month\":{\"period\":\"Année\",\"comparelabel\":\"Comparer à l'année précédente\",\"current\":\"année actuelle\",\"last\":\"année précédente\"},\"day\":{\"period\":\"Mois\",\"comparelabel\":\"Comparer au mois précédent\",\"current\":\"mois actuel\",\"last\":\"mois précédent\"},\"week\":{\"period\":\"Semaine\",\"comparelabel\":\"Comparer à la semaine précédente\",\"current\":\"semaine actuelle\",\"last\":\"semaine précédente\"},\"half_an_hour\":{\"period\":\"Jour\",\"comparelabel\":\"Comparer à la journée précédente\",\"gather_data_title\":\"La récupération de vos données demi-horaires prend environ 24h.\",\"current\":\"jour actuel\",\"last\":\"jour précédent\",\"gather_data_subtitle\":\"Votre connexion a bien été prise en compte mais un délai de 24h est en général nécessaire à l’obtention de vos données.\\nÀ demain !\",\"analysis_waiting_data\":\"Pour bénéficier d'une analyse approfondie de votre consommation électrique, il nous faut récupérer vos données de consommation horaires. La récupération de ces données prend environ 24h. A bientôt !\"},\"accessibility\":{\"button_zoom_in\":\"Sélectionner le pas de temps précédent\",\"button_zoom_out\":\"Sélectionner le pas de temps suivant\"}},\"unsubscribe\":{\"title\":\"Êtes-vous sûr de ne plus vouloir recevoir notre email mensuel ?\",\"content\":\"Dans ce cas, vous ne recevrez plus la notification de votre bilan ainsi que les conseils associés au mois en cours.\",\"button_text\":\"Oui, je me désabonne\",\"button_accessibility\":\"Bouton de désinscription\"},\"welcome_modal\":{\"title\":\"Félicitations\",\"perso\":\"Votre espace personnel a bien été créé.\",\"connect\":\"Vous pouvez maintenant connecter vos compteurs d’énergie à Ecolyo en toute sécurité.\",\"button_valid\":\"Ok\",\"accessibility\":{\"title\":\"Fenêtre de félicitations\",\"button_valid\":\"Valider\"}}}"); +module.exports = JSON.parse("{\"common\":{\"title_app\":\"Ecolyo\",\"title_consumption\":\"Conso\",\"title_challenge\":\"Défis\",\"title_quiz\":\"Quiz\",\"title_exploration\":\"Exploration\",\"title_action\":\"Action\",\"title_duel\":\"Duel final\",\"title_ecogesture\":\"Astuce\",\"title_ecogestures\":\"Astuces\",\"title_ecogestures_choice\":\"Sélection des astuces\",\"title_options\":\"Options\",\"title_analysis\":\"Analyse\",\"title_profiletype\":\"Ajuster mon profil\",\"title_legal_notice\":\"Mentions légales\",\"title_gcu\":\"Conditions générales d’utilisation\",\"title_accessibility\":\"Accessibilité : non conforme\",\"title_sge_connect\":\"Connexion à l'électricité\",\"accessibility\":{\"loading\":\"Chargement\"}},\"navigation\":{\"consumption\":\"Conso\",\"challenges\":\"Défis\",\"ecogestures\":\"Astuces\",\"options\":\"Options\",\"analysis\":\"Analyse\"},\"FLUID\":{\"ELECTRICITY\":{\"NAME\":\"Électricité\",\"LABEL\":\"Électricité\",\"UNIT\":\"kWh\",\"ADD\":\"Ajouter l'électricité\",\"MEGAUNIT\":\"MWh\",\"provider\":\"Enedis\"},\"WATER\":{\"NAME\":\"Eau\",\"LABEL\":\"Eau\",\"ADD\":\"Ajouter l'eau\",\"UNIT\":\"L\",\"MEGAUNIT\":\"m³\",\"provider\":\"Eau Publique du Grand Lyon\"},\"GAS\":{\"NAME\":\"Gaz\",\"LABEL\":\"Gaz\",\"ADD\":\"Ajouter le gaz\",\"UNIT\":\"kWh\",\"MEGAUNIT\":\"MWh\",\"provider\":\"GRDF\"},\"MULTIFLUID\":{\"NAME\":\"Multi fluide\",\"LABEL\":\"Multi\",\"UNIT\":\"€\"}},\"action\":{\"duration\":\"Durée : %{smart_count} jours\",\"result\":\"Résultat\",\"finished\":\"Défi terminé !\",\"details\":\"Détail de l'astuce\",\"apply\":\"J'applique cette action\",\"other\":\"Je choisis une autre action\",\"resultText1\":\"Cela n'a pas été trop difficile ?\",\"resultText2\":\"Jetez un coup d'œil dans la page conso dans 1 à 3 jours, le temps que vos données arrivent, pour voir l'impact de votre action.\",\"resultText3\":\"Pas de baisse de significative ? Pas de panique, en maintenant cette pratique dans le temps, les économies d'énergies et d'eau seront davantage visibles.\",\"resultText4\":\"Dans tous les cas, bravo, vous remportez...\",\"ok\":\"Ok\"},\"action_modal\":{\"accept\":\"Je relève le défi\",\"refuse\":\"Je me défile\",\"accessibility\":{\"window_title\":\"Fenêtre de confirmation\",\"button_accept\":\"Accepter\",\"button_refuse\":\"Refuser\"}},\"analysis\":{\"viewTitle\":\"Analyse\",\"comparison\":\"Comparatif\",\"analysis_date\":\"Conso totale\",\"challenge\":\"Défis terminés en\",\"user_consumption\":\"Votre conso\",\"average_home\":\"Conso moyenne d'un profil similaire\",\"average_home_description\":\"Le comparatif ici présenté est calculé sur la base d'un profil similaire au vôtre. Il s'agit d'un calcul et non d'une comparaison avec les autres utilisateurs de l'application. Sont pris en compte l'ensemble des informations entrées dans votre profil : mode de chauffage, âge du logement et éventuels travaux de rénovation, etc. Ce modèle a été créé avec l'Agence Locale de l'Energie sur la base de chiffres issues du Schéma Directeur des Energies de la Métropole de Lyon et de Chiffres-clé publiés par l'ADEME (l'Agence de l'Environnement et de la Maîtrise de l'Energie).\",\"approximative_description\":\"Pour comparer votre consommation avec un foyer similaire ou avec une conso idéale, veuillez détailler votre profil\",\"not_connected\":\"Non connecté\",\"no_data_2\":\"Données non disponibles\",\"accessibility\":{\"button_go_to_profil\":\"Détailler mon profil\"},\"max_day\":\"Jour où vous avez le plus consommé\",\"compare\":{\"title\":\"Comparateur\",\"month_tab\":\"Comparer au mois dernier\",\"year_tab\":\"Comparer à l'année dernière\"},\"no_data\":\"Pas de données\"},\"analysis_error_modal\":{\"title\":\"Aucune analyse\",\"message\":\"Pour profiter d’une analyse de vos consommations, connectez au moins un de vos compteurs.\",\"go_to_options\":\"Je connecte mes compteurs\",\"go_back\":\"Retour\",\"accessibility\":{\"window_title\":\"Fenêtre d'erreur\",\"button_go_back\":\"Retour\",\"button_goto_konnector\":\"Aller aux connecteurs\"}},\"analysis_pie\":{\"total\":\"Conso totale\",\"month\":\"Au mois \",\"estimation\":\"Comment sont estimés\",\"estimation2\":\"les prix ?\"},\"special_elec\":{\"title\":\"Spécial Électricité\",\"average\":\"Conso moyenne\",\"weektype\":\"un jour de \",\"week\":\"semaine\",\"weekend\":\"week-end\",\"min\":\"Conso minimum\",\"percentage\":\"Part dans la facture\",\"price\":\"Soit\",\"maxPower\":\"Puissance maximum atteinte\",\"showModal\":\"Plus d'infos\"},\"elec_info_modal\":{\"accessibility\":{\"window_title\":\"electricity-info-modal\",\"button_close\":\"close-modal\"},\"title1\":\"Qu’est-ce que la consommation minimum ?\",\"title2\":\"Qu’est-ce que la puissance maximum ?\",\"text1\":\"Elle correspond à votre plus petite consommation du mois sur un créneau d'une demi-heure.\",\"text2\":\"Nous extrapolons cette consommation sur 1 mois afin vous donner un aperçu de la consommation de vos consommations électriques en veille (box, télé, chargeurs, ...) ou encore de celle, incompressible, de vos appareils de froid (frigo, congélateur).\",\"text3\":\"C’est la puissance maximum délivrée par tous les appareils fonctionnant au même moment dans votre logement.\",\"text4\":\"Vous avez choisi une puissance maximum dans votre offre d’électricité (3, 6 ou 9 kVA...) que vous ne devez pas dépasser pour ne pas faire sauter votre compteur. \",\"text5\":\"Cette puissance varie d'un mois à l'autre, regardez cette valeur sur l'ensemble de l'année pour vérifier si votre puissance souscrite correspond bien à votre usage.\"},\"auth\":{\"enedissgegrandlyon\":{\"title\":\"Ecolyo doit se connecter à l’électricité\",\"bill\":\"Munissez-vous d’une <span>facture d’électricité</span> pour valider la connexion\",\"connect\":\"Je me connecte à l'électricité\",\"accessibility\":{\"connect\":\"Se connecter\"},\"identityTitle\":\"Nom inscrit sur la facture\",\"firstName\":\"Prénom\",\"lastName\":\"Nom\",\"pdlTitle\":\"Numéro de votre compteur électrique (PDL)\",\"pdlLabel\":\"N° (14 chiffres)\",\"pdlHint\":\"Où trouver le n° de PDL ?\",\"pdlModal\":{\"txt1\":\"Où trouver le n° de PDL ou PRM ?\",\"txt2\":\"Le numéro de PDL ou PRM se compose de 14 chiffres.\",\"txt3\":\"Votre numéro de PDL ou PRM se trouve sur votre facture d’électricité.\",\"txt4\":\"Si vous avez un compteur Linky, appuyez sur le bouton “+” et faites défiler l’affichage jusqu’à obtenir l’affichage suivant :\"},\"addressTitle\":\"Adresse du titulaire\",\"address\":\"Numéro et voie\",\"zipCode\":\"Code postal\",\"city\":\"Ville\",\"headConsent\":\"Vous allez partager vos données à la Métropole de Lyon. Elles seront directement transférées à Ecolyo à l'intérieur de votre cloud personnel, sans que la Métropole n'y accède ni ne les visualise.\",\"textConsent\":\"Afin de vous offrir des fonctionnalités de visualisation et d'analyse, Ecolyo a besoin des données suivantes : \",\"consentLi1\":\"L'historique et le relevé de vos consommations quotidiennes en kWh\",\"consentLi2\":\"L'historique et le relevé de vos consommations au pas de temps 30 minutes\",\"consentLi3\":\"Les puissances maximales atteintes quotidiennement\",\"consentLi4\":\"Les données contractuelles (début de contrat et puissance souscrite)\",\"consentCheck1\":\"Je consens à partager les données personnelles ci-dessus pour une durée d'<span>un an</span>\",\"consentCheck2\":\"J’atteste être le titulaire du point de livraison (PDL) renseigné à l’étape précédente\",\"modalHint\":{\"accessibility\":\"Titre de la modale\",\"title\":\"Où trouver le n° de PDL ?\",\"button\":\"J'ai compris\",\"button-accessibility\":\"Bouton valider\"}},\"grdfgrandlyon\":{\"bill\":\"Munissez-vous d’une <span>facture de gaz</span> pour valider la connexion\",\"connect\":\"Je me connecte au gaz\",\"accessibility\":{\"connect\":\"Se connecter\"},\"connect_form\":{\"label\":\"Je donne mon accord via mon compte GRDF\"},\"no_account\":{\"title\":\"Ecolyo doit se connecter au gaz\"},\"with_account\":{\"title\":\"Votre compte GRDF a bien été créé ?\",\"subtitle1\":\"Plus qu’à donner votre accord pour connecter votre compteur de gaz et Ecolyo !\"},\"step1\":{\"info1\":\"Un <span>compte chez GRDF</span> est nécessaire pour vous connecter au gaz\",\"info2\":\" <span>quelque soit votre fournisseur de gaz</span>.\",\"info3\":\"<p>GRDF est le gestionnaire de réseau. C'est lui qui est responsable de votre compteur Gazpar et de la collecte des données de consommation.</p>\",\"info4\":\"Possédez-vous un <span>compte GRDF</span> ?\"},\"step2\":{\"info1\":\"Une fois votre compte créé, <span>n'oubliez pas de revenir sur Ecolyo</span> pour finaliser la connexion.\"},\"step3\":{\"info1\":\"La visualisation de vos données sur Ecolyo demande l'activation du <span>partage de toutes les données.</span>\",\"info2\":\"Pour une expérience optimale, <span>une période de consentement de 1 an</span> est recommandée à partir d’aujourd’hui.\",\"info3\":\"<p>Veillez également à indiquer une date antérieure pour l'historique (1er calendrier) afin de pouvoir récupérer jusqu'à 3 ans d'historique.</p>\"},\"button_go_to_partner_site\":\"Aller sur GRDF\"},\"eglgrandlyon\":{\"bill\":\"Munissez-vous d’une <span>facture d'eau</span> pour valider la connexion\",\"connect\":\"Je me connecte à l'eau\",\"accessibility\":{\"connect\":\"Se connecter\"},\"connect_form\":{\"login\":\"Identifiant (7 chiffres)\",\"password\":\"Mot de passe\",\"label\":\"Je connecte Ecolyo à mon compte Eau Publique du Grand Lyon\"},\"no_account\":{\"title\":\"Ecolyo doit se connecter à l'eau\"},\"with_account\":{\"title\":\"Votre compte Eau Publique du Grand Lyon a bien été créé ?\",\"subtitle1\":\"Plus qu’à donner votre accord pour connecter votre compteur d'eau et Ecolyo !\"},\"step1\":{\"info1\":\"La connexion se fait via <span>votre compte Eau Publique du Grand Lyon</span>.\",\"info2\":\"Possédez-vous un <span>compte Eau Publique du Grand Lyon</span> ?\"},\"step2\":{\"info1\":\"Une fois votre compte créé, <span>n'oubliez pas de revenir sur Ecolyo</span> pour finaliser la connexion.\"},\"button_go_to_partner_site\":\"Aller sur EPGL\"},\"connect_oauth\":{\"loading\":\"Chargement...\"},\"accessibility\":{\"button_reveal_password\":\"Afficher le mot de passe\",\"button_connect\":\"Se connecter\",\"button_create_account\":\"Se créer un compte\",\"window_title\":\"Fenêtre d'information sur la création de compte.\",\"button_close\":\"Fermer la fenêtre.\"},\"button_previous\":\"Précédent\",\"button_connect\":\"Se connecter\",\"button_create_account\":\"Se créer un compte\",\"button_has_account\":\"J'ai déjà un compte\",\"button_validate\":\"J'ai compris\",\"button_showOfflineData\":\"Voir mes anciennes données\",\"warningOfflineData\":\"Attention, vous visualisez d’anciennes données. Pour actualiser vos données, connectez votre compteur\"},\"challenge\":{\"card\":{\"ongoing\":{\"quiz\":\"Quiz\",\"exploration\":\"Explorations\",\"action\":\"Actions\",\"duel\":\"Duel Final\",\"result\":\"Résultat\",\"duelDone\":\"du duel final\"},\"locked\":{\"desc\":\"À débloquer en terminant le défi précédent\"}},\"card_done\":{\"saving\":\"Économie de\",\"depense\":\"Dépense de\",\"win\":\"Gagné\",\"lost\":\"Perdu\",\"final_defi\":\"sur le duel final\",\"final_defi_view\":\"Revoir le duel final\"},\"card_last\":{\"title\":\"Tous les défis sont terminés\",\"message1\":\"Nous travaillons actuellement à vous proposer de nouveaux défis.\",\"button\":\"Suggérer une idée de défi\"},\"card_unlocked\":{\"button_launch\":\"Lancer le défi\"},\"accessibility\":{\"button_launch\":\"Lancer le défi\",\"button_goto_konnector\":\"Aller aux connecteurs\",\"button_slider_previous\":\"Précédent\",\"button_slider_next\":\"Suivant\"}},\"challenge_no_fluid_modal\":{\"title\":\"Oups !\",\"content\":\"Connectez au moins 1 fluide pour pouvoir jouer\",\"button_validate\":\"Ok\",\"accessibility\":{\"window_title\":\"Fenêtre d'erreur\",\"button_validate\":\"Valider\"}},\"consumption\":{\"display_last_data\":\"Voir mes dernières consos\",\"accessibility\":{\"button_previous_period\":\"Afficher la période précédente\",\"button_next_period\":\"Afficher la période suivante\",\"button_previous_value\":\"Sélectionner la valeur précédente\",\"button_next_value\":\"Sélectionner la valeur suivante\",\"checkbox_compare\":\"Afficher ou cacher la comparaison\"},\"partner_issue_modal\":{\"title\":\"Attention !\",\"error_connect_gaz\":\"La connexion à vos données de <span class='gaz'>gaz</span> est actuellement dysfonctionnelle (Maintenance chez notre partenaire <span class='gaz'>GRDF</span> ou dans notre service)\",\"error_connect_elec\":\"La connexion à vos données d'<span class='elec'>électricité</span> est actuellement dysfonctionnelle (Maintenance chez notre partenaire <span class='elec'>Enedis</span> ou dans notre service)\",\"error_connect_water\":\"La connexion à vos données d'<span class='water'>eau</span> est actuellement dysfonctionnelle (Maintenance chez notre partenaire <span class='water'>Eau Publique du Grand Lyon</span> ou dans notre service)\",\"additional_text\":\"La visualisation et/ou la connexion à vos données de consommation peut s'en trouver affectée.<br /><br /><i>Merci pour votre patience en attendant un retour à la normale :)</i>\",\"ok\":\"Ok\"},\"compared\":\"Comparé\"},\"consumption_details\":{\"detail\":\"Détail par fluide\",\"connect\":\"Connecter d'autres fluides\",\"mini_cards_label\":\"AUTRES ENERGIES\"},\"consumption_visualizer\":{\"missing_data\":\"Données manquantes\",\"no_data\":\"Pas de données\",\"why_no_data\":\"Pourquoi n'ai-je pas de données ?\",\"last_data\":\"Dernières données\",\"last_valid_data\":\"Dernières données valides\",\"last_available_data\":\"Dernières données disponibles\",\"last_valid_data_multi\":\"Dernières données complètes\",\"data_to_come\":\"à venir\",\"aie\":\"Aïe !\",\"data_empty\":\"Vide\",\"estimated\":\"estimés\",\"dataModal\":{\"list_title\":\"3 raisons possibles :\",\"item1\":\"le lien entre Ecolyo et le fournisseur de données est rompu : une mise à jour de ce lien (en bas de la page) peut résoudre ce problème.\",\"item2\":\"un problème technique chez votre gestionnaire : se connecter directement chez ce gestionnaire pour vérifier que cette donnée apparaît.\",\"item3\":\"pour le gaz : vous n'avez pas autorisé Ecolyo à accéder aux données de consommation de cette période.\",\"item4\":\"vous n'aviez tout simplement pas de compteur communicant à l'époque !\"},\"modal\":{\"window_title\":\"info estimation des prix\",\"title\":\"Comment sont estimés les prix ?\",\"close\":\"Fermer la fenêtre\",\"part1\":\"Le prix de votre électricité ou de votre gaz dépend de l'offre choisie auprès de votre fournisseur. N’ayant pas accès à cette information, Ecolyo affiche un prix moyen par fluide. \",\"part2\":\"Tarifs moyens retenus :\",\"list1\":\" : 1 kWh = %{elecPrice} €TTC (il correspond au tarif réglementé d’EDF au %{elecPriceStartDate} pour une puissance souscrite de 3 ou 6 kVA et hors offre heure pleine/heure creuse)\",\"list2\":\" : 1 kWh = %{gasPrice} €TTC (tarif réglementé de vente au %{gasPriceStartDate} pour un consommateur soutirant moins de 6 MWh par an)\",\"list3\":\" : 1 litre d’eau = %{waterPrice} € TTC (prix constaté au %{waterPriceStartDate} pour un abonnement et une consommation de 120 m3/an sur la Métropole de Lyon)\",\"part3\":\"Le coût de votre abonnement n'est pas pris en compte dans Ecolyo.\"},\"release_notes_modal\":{\"title\":\"Du nouveau sur Ecolyo !\",\"message\":\"Les mises à jour suivantes ont été effectuées sur votre application :\",\"go_back\":\"J'ai compris\",\"accessibility\":{\"window_title\":\"Fenêtre de notifications\",\"button_go_back\":\"J'ai compris\"}}},\"ecogestures\":{\"loading\":\"Chargement des astuces\"},\"duel\":{\"global_error\":\"Oups. Une erreur est survenue. Veuillez retourner à l'écran d’accueil des défis\",\"button_go_back\":\"Retour\",\"average_info\":\"%{average} euros étant votre moyenne actuelle, relevez-vous le défi ?\",\"button_start\":\"Allons-y !\",\"goal1\":\"Faites moins que votre moyenne actuelle sur %{durationInDays} jours\",\"goal2\":\"pour gagner le badge %{title}\",\"goal_done\":\"Duel remporté\",\"goal_failed\":\"Duel perdu\",\"caption_average\":\"Votre moyenne à titre indicatif\",\"caption_consumption\":\"Votre consommation\",\"caption_incoming\":\"Données à venir\",\"accessibility\":{\"button_go_back\":\"Retour\",\"button_start_duel\":\"Lancer le duel\",\"button_start_quiz\":\"Lancer le quiz\"}},\"duel_result_modal\":{\"sucess\":{\"title\":\"Félicitations !\",\"message1\":\"Vous avez économisé \",\"message2\":\"et gagné le badge \",\"button_validate\":\"Youpi !\"},\"lost\":{\"title\":\"Presque !\",\"message1\":\"Vous avez dépassé de \",\"message2\":\"et manqué le badge \",\"button_validate\":\"Zut alors !\"},\"accessibility\":{\"window_title\":\"Fenêtre de résultat\",\"button_validate\":\"Valider\"}},\"last_duel_modal\":{\"title\":\"Félicitations !\",\"subtitle\":\"Vous avez terminé tous les défis !\",\"message1\":\"Nous travaillons actuellement à vous proposer de nouveaux défis.\",\"message2\":\"Vous pouvez donner votre avis sur ce que vous aimeriez en cliquant sur la bulle d'aide.\"},\"duel_empty_value_modal\":{\"title\":\"Oups !\",\"message\":\"Impossible de lancer le duel. Il nous manque en effet certaines de vos données de consommation pour vous proposer un duel à votre hauteur.\",\"button\":\"Je retourne au menu des défis\",\"accessibility\":{\"window_title\":\"Fenêtre d'erreur\",\"button_validate\":\"Retourner au menu des défis\"}},\"ecogesture\":{\"title_tab_0\":\"Objectifs\",\"title_tab_1\":\"Je fais déjà\",\"title_tab_2\":\"Toutes\",\"MENU_TITLE\":\"Filtrer\",\"ALL\":\"Tous les usages\",\"HEATING\":\"Chauffage\",\"AIR_CONDITIONING\":\"Climatisation\",\"ECS\":\"Eau chaude\",\"COLD_WATER\":\"Eau froide\",\"ELECTRICITY_SPECIFIC\":\"Électricité courante\",\"COOKING\":\"Cuisson\",\"selection\":\"Sélectionner les astuces les plus adaptées à votre consommation\",\"selection_2\":\"vues sur\",\"button_selection\":\"Continuer ma sélection\",\"no_ecogesture\":\"Aucune astuce ne correspond à votre filtrage\",\"no_ecogesture_filter\":{\"text1\":\"Nous n'avons pas trouvé d'astuces adaptées à votre profil dans cette catégorie.\",\"text2\":\"En effet, de par votre profil et vos modes de chauffage, d'eau ou d'eau chaude sanitaire, nous n'avons pas identifié d’astuces vous permettant de diminuer vos factures à titre individuel. Toutefois, vous pouvez toujours agir pour préserver les ressources en appliquant et diffusant autour de vous les autres bonnes pratiques présentées dans la partie \\\"Toutes les astuces\\\".\"},\"adjust_profil\":{\"description\":\"Pour une sélection d’astuces adaptée à votre consommation, vous pouvez ajuster votre profil.\",\"button_go_to_profil\":\"Ajuster mon profil\"},\"accessibility\":{\"window_title\":\"Fenêtre d'information'\",\"button_close\":\"Fermer la fenêtre\",\"button_selection\":\"Aller à la page de sélection\"},\"doing\":\"Je fais déjà\",\"objective\":\"Objectif\",\"emptyList\":{\"obj1\":\"Les astuces présentées sont des actions qui vous permettent de réduire vos consommations et donc vos factures. On parle parfois d’écogestes.\",\"obj1_done\":\"Aucune astuce n’a été sélectionnée comme objectif actuellement.\",\"obj2\":\"Vous pouvez sélectionner ceux à mettre en objectifs et ceux que vous appliquez déjà.\",\"obj2_done\":\"Vous pouvez consulter toutes les astuces et ajouter celles que vous souhaitez garder en objectif dans cette section.\",\"doing1\":\"Aucune astuce n’a été sélectionnée dans la catégorie appliquée actuellement.\",\"doing1_done\":\"Aucune astuce n’est indiquée comme déjà appliquée actuellement.\",\"doing2\":\"Vous pouvez consulter toutes les astuces et ajouter celles que vous mettez déjà en pratique dans cette section.\",\"doing2_done\":\"Vous pouvez consulter toutes les astuces et ajouter celles que vous mettez déjà en pratique dans cette section.\",\"btn1\":\"Voir toutes les astuces\",\"btn2\":\"Sélectionner\"},\"initModal\":{\"title\":\"Sélectionner mes astuces\",\"text1\":\"Les astuces présentées sont des actions qui vous permettent de réduire vos consommations et donc vos factures. On parle parfois d’écogestes \",\"text2\":\"Vous pouvez sélectionner celles à mettre en objectifs et celles que vous appliquez déjà.\",\"text3\":\"Afin de pré-sélectionner les astuces correspondant à votre consommation, merci de répondre à quelques rapides questions.\",\"btn1\":\"Plus tard\",\"btn2\":\"C'est parti !\"},\"reinit\":\"Réinitialiser ma sélection\",\"reinitModal\":{\"title_part1\":\"Cette action\",\"title_part2\":\"supprimera votre liste d’astuces\",\"title_part3\":\"sélectionnées dans\",\"title_part4\":\"“Objectifs”\",\"title_part5\":\"et\",\"title_part6\":\"“Je fais déjà”\",\"text1\":\"Vous pourrez ensuite faire une nouvelle sélection adaptée à votre consommation.\",\"text2\":\"Souhaitez-vous réinitialiser votre sélection d’astuces ?\",\"btn1\":\"Non\",\"btn2\":\"Réinitialiser\"}},\"ecogesture_modal\":{\"title_ecogesture\":\"Astuce\",\"title_action\":\"Action\",\"efficiency\":\"Efficacité\",\"show_less\":\"Voir moins d’infos\",\"show_more\":\"Voir plus d’infos\",\"select_action\":\"Je choisis cette action\",\"accessibility\":{\"window_title_ecogesture\":\"Fenêtre astuce\",\"window_title_action\":\"Fenêtre action\",\"button_close\":\"Fermer la fenêtre\",\"button_select_action\":\"Sélectionner cette action\",\"button_see_more_detail\":\"Afficher plus de détails\"}},\"ecogesture_info_modal\":{\"header\":\"Comment sont choisis les astuces adaptées à mon profil ?\",\"text\":\"Les astuces adaptés à votre profil sont aujourd’hui choisies en fonction des compteurs individuels que vous possédez (communicants ou non). Ceux présentés ici vous permettent d'agir sur vos consommations individuelles. Des modes de tri plus personnalisables seront proposés à l'avenir.\",\"button_close\":\"J'ai compris\",\"accessibility\":{\"window_title\":\"Fenêtre d'information\",\"button_close\":\"Fermer la fenêtre\"}},\"ecogesture_form\":{\"heating_type\":{\"title\":\"Chauffage\",\"question\":\"Quel est votre type de chauffage ?\",\"individual\":\"Individuel\",\"collective\":\"Collectif\"},\"warming_fluid\":{\"0\":\"Électricité\",\"2\":\"Gaz\",\"3\":\"Bois\",\"4\":\"Fioul\",\"title\":\"Source chauffage\",\"question\":\"Quelle source d’énergie principale utilisez-vous pour votre chauffage ?\"},\"hot_water_type\":{\"title\":\"Eau chaude\",\"question\":\"Quel est votre type de production d’eau chaude ?\",\"individual\":\"Individuelle\",\"collective\":\"Collective\"}},\"ecogesture_profile\":{\"equipments\":{\"question\":\"Quels équipements possédez-vous ?\",\"hint\":\"Plusieurs réponses possibles\",\"air_conditioning\":\"Climatisation\",\"computer\":\"Ordinateur\",\"microwave\":\"Micro-ondes\",\"oven\":\"Four\",\"washing_machine\":\"Lave-linge\",\"dishwasher\":\"Lave-vaisselle\",\"cooking_plates\":\"Plaques électriques\",\"garden\":\"Jardin\",\"dryer\":\"Sèche-linge\",\"refregirator\":\"Réfrigérateur\",\"fan\":\"Ventilateur\",\"water_heater\":\"Chauffe-eau\",\"curtain\":\"Rideaux\",\"internet_box\":\"Box internet\",\"ventilation\":\"VMC\",\"freezer\":\"Congélateur\",\"boiler\":\"Chaudière\",\"hydraulic_heating\":\"Chauffage hydraulique\"}},\"ecogesture_selection\":{\"header\":\"Sélection des astuces\",\"title\":\"Vous avez parcouru un groupe de %{smart_count} astuces\",\"text\":\"Voulez-vous continuer sur votre lancée ou remettre cette sélection à plus tard ?\",\"title_final\":\"Félicitations !\",\"text_final_1\":\"Vous avez terminé la sélection des astuces adaptées à votre consommation.\",\"text_final_2\":\"Vous pouvez les retrouver dans les sections “Objectifs” et “Je fais déjà” selon que vous les pratiquiez déjà ou non.\",\"button_go_to_ecogesture\":\"Plus tard\",\"button_ok\":\"J'ai compris\",\"button_continue\":\"Poursuivre\",\"button_objective\":\"Objectif\",\"button_doing\":\"Je fais déjà\",\"button_skip\":\"Pas intéressé\",\"accessibility\":{\"window_title\":\"Fenêtre d'information'\",\"button_close\":\"Fermer la fenêtre\",\"button_go_to_ecogesture\":\"Retourner aux astuces\",\"button_continue\":\"Poursuivre\",\"button_ok\":\"Fermer la sélection\"},\"selectionModal\":{\"title\":\"Des astuces correspondant à votre profil ont été trouvées !\",\"text\":\"À vous de choisir celles que vous souhaitez mettre en objectif et celles que vous faites déjà.\",\"button_close\":\"C'est parti !\"}},\"exploration\":{\"global_error\":\"Oups. Une erreur est survenue. Veuillez retourner à l'écran d’accueil des défis\",\"button_go_back\":\"Retour\",\"button_already_done\":\"C’est déjà fait !\",\"button_come_back\":\"Je reviens quand cela sera fait\",\"button_start\":\"C'est parti !\",\"watch_consumption\":\"Je fonce\",\"congratulation\":\"Bravo !\",\"earn\":\"Vous remportez\",\"button_confirm\":\"Ok\",\"interval\":{\"explanation\":\"Vous pouvez vérifier cette informations sur l'écran Conso.\"},\"accessibility\":{\"button_already_done\":\"Marquer l'exploration comme déjà réalisée\",\"button_confirm\":\"Valider\",\"button_come_back\":\"Fermer l'exploration\",\"button_go_back\":\"Retour\",\"button_start\":\"Lancer l'exploration\"}},\"error_page\":{\"main\":\"Erreur\",\"back\":\"Retour\",\"no_ecogesture\":\"Oups ! Nous n'avons pas trouvé l'astuce demandée.\"},\"help\":{\"title_help\":\"une question ? un problème ? une suggestion ?\",\"read_help\":\"Nous écrire via le Service d'Assistance Utilisateur\"},\"feedback\":{\"title\":\"Vous allez contacter le Service Assistance Utilisateur du Grand Lyon.\",\"text1\":\"Vous pourrez nous remonter un problème, chercher de l'aide pour vous connecter plus facilement, ou encore nous partager une bonne idée d'évolution.\",\"text2\":\"N'hésitez pas à nous écrire ! L'équipe Ecolyo vous répondra avec plaisir :)\",\"later\":\"Plus tard\",\"lets_go\":\"J'y vais\",\"accessibility\":{\"window_title\":\"Fenêtre de partage de retours\",\"button_close\":\"Fermer la fenêtre de partage de retours\"}},\"dataShare\":{\"title1\":\"Bienvenue !\",\"title1Update\":\"Ecolyo évolue !\",\"title2Update\":\"Pour continuer à utiliser Ecolyo, merci d’accepter les modalités de traitement des données ci-dessous.\",\"part1\":\"Pour le bon fonctionnement du service, nous avons besoin de l’adresse email utilisée lors la création de votre cloud personnel Grand Lyon.\",\"part2\":\"Cette donnée de compte est conservée dans Ecolyo le temps de l’utilisation de ce service.\",\"part3\":\"La Métropole de Lyon utilisera cet email afin de vous tenir informé·e :\",\"item1\":\"En réponse à vos demandes, si vous avez pris l’initiative de nous contacter.\",\"item2\":\"En cas de problème majeur avec la gestion de votre compte.\",\"item3\":\"De l’évolution de vos consommations, des nouveautés et de la qualité du service via une lettre mensuelle. Vous pouvez à tout moment vous désinscrire de cette lettre via la page Options du service.\",\"part4\":\"Vos données privées de consommation d’énergie et d’eau sont récupérées, sauvegardées et stockées dans votre cloud personnel à votre initiative sans visibilité de la Métropole de Lyon sur leur contenu.\",\"part5\":\"Il en est de même pour les données privées de composition du logement et du foyer, fournies par vos soins. Elles restent également sans visibilité de la Métropole de Lyon sur leur contenu.\\nLes données d’identification entrées lors de la connexion aux données de consommations d’électricité sont quant à elles conservées dans un espace sécurisé de la Métropole de Lyon et sont utilisées uniquement à des fins de contrôle du consentement par des organismes extérieurs.\",\"part6\":\"Dans le cadre de l’évaluation et de l’amélioration du service, des données d’utilisation anonymisées et pseudonymisées seront remontées à des fins d’exploitation statistiques. La récupération de ces statistiques nous permettra de s’assurer du bon fonctionnement technique de la connexion à vos données de consommation, d’évaluer globalement l’usage de l’application via des mesures d’audience ainsi que d’évaluer à terme l’impact global en termes de baisse des consommations énergétiques de notre service.\",\"part7\":\"Au sein de votre cloud personnel, vous pouvez à tout moment exercer vos droits d’accès, de rectification, de portabilité, de limitation et d’opposition en consultant notamment la page Options.\",\"part8\":\"Vous pouvez également exercer vos droits d’accès, de rectification, de limitation, d’opposition et d’effacement de vos données personnelles en contactant directement le Délégué à la Protection des Données par courrier en écrivant à l’adresse :\",\"part9\":\"Métropole de Lyon – Délégué à la Protection des Données - Direction des Assemblées, des Affaires Juridiques et des Assurances - 20, rue du Lac - BP 33569 - 69505 Lyon Cedex 03 \",\"part10\":\"ou en ligne, au moyen du formulaire disponible à l'adresse suivante : \",\"link1\":\"<a href=\\\"https://demarches.toodego.com/sve/proteger-mes-donnees-personnelles/\\\">https://demarches.toodego.com/sve/proteger-mes-donnees-personnelles/</a>\",\"validDataConsent\":\"Je consens au traitement de mes données tel que décrit ci-dessus.\",\"validCGU\":\"Je valide les <span class=\\\"action\\\">Conditions Générales d’Utilisation</span> \",\"validLegal\":\" du service et ai pris connaissance des <span class=\\\"action\\\"> Mentions Légales </span> de celui-ci.\",\"button_accept\":\"C'est parti !\",\"accessibility\":{\"button_accept\":\"Accepter les conditions générales d'utilisation\"}},\"minorUpdate\":{\"title\":\"Ecolyo évolue !\",\"button\":\"J'ai compris\"},\"gcu\":{\"title\":\"Conditions générales d’utilisation du service\",\"version\":\"Version du 12.12.2022\",\"content\":{\"title1\":\"Ecolyo, késako ?\",\"part1_1\":\"Ecolyo est un service proposé par la Métropole de Lyon vous permettant de suivre au même endroit vos consommations d’électricité, de gaz et d’eau, en kWh, en litres, en euros et à différentes échelles de temps. Ce service vous permet également de participer à des défis individuels et vous offre une analyse de vos consommations. Des astuces vous sont aussi proposées afin de vous permettre de réduire vos consommations.\",\"part1_2\":\"C’est un service gratuit qui prend la forme d’un site web dit « responsive », c’est-à-dire qu’il peut être consulté sur ordinateur ou sur mobile. Sur mobile, c’est une application que l’on a souhaitée ergonomique, réactive et esthétique pour votre plaisir de navigation et d’utilisation au quotidien.\",\"part1_3\":\"Tous les termes « techniques » sont définis en bas de page.\",\"title2\":\"Quelles fonctionnalités le service propose-t-il ?\",\"part2_1\":\"La fonctionnalité principale d’Ecolyo est la visualisation, au même endroit, de vos consommations d’électricité, de gaz et d’eau et ce, à différents pas de temps (de la demi-heure – uniquement pour l’électricité, à plusieurs années, en passant par les pas de temps journaliers et mensuels). La visualisation des consommations se fait en kWh pour l’énergie et en L pour l’eau ainsi qu’en euros (euros résultant d’un prix moyenné).\",\"part2_2\":\"Au-delà de la visualisation de vos consommations et parce que nous souhaitons vous aider à diminuer ces consommations vous retrouverez plusieurs autres pages : \",\"part2_2_list1\":\"Défis : Des quiz, et actions à mettre en place vous seront proposés pour vous pousser à réduire vos consommations.\",\"part2_2_list2\":\"Astuces : Une liste d’astuces pour maîtriser ses consommations d’énergie et d’eau à trier par usage, et avec une possibilité de les adapter plus précisément à votre profil.\",\"part2_2_list3\":\"Analyse : Une analyse de vos consommations réelles en comparaison à celle d’un foyer étant proche d’une vôtre.\",\"part2_3\":\"Pour la page Analyse ainsi que pour la partie personnalisation des astuces, des éléments supplémentaires sur votre profil vous seront demandés. L’ensemble de ces informations récoltées à l’aide du formulaire peuvent être modifiées par la suite.\",\"part2_4\":\"Dernière page : la page Options dans laquelle vous pourrez vous abonner à un service d’alerte sur vos consommations d’eau, de quoi ajuster votre profil ou encore vous désabonner de la lettre mensuelle.\",\"title3\":\"Comment ai-je accès à mes données d’électricité, de gaz et d’eau ?\",\"part3_1\":\"Pour visualiser vos consommations réelles et profiter pleinement du potentiel de notre service, il vous faut au minimum un des trois compteurs communicants suivants : Linky (pour l’électricité), Gazpar (pour le gaz), Téléo (pour l’eau).\",\"part3_2\":\"Ces compteurs sont opérés par les gestionnaires de réseaux. Pour Linky, c’est Enedis, le gestionnaire de réseau de distribution d’électricité. Pour Gazpar, GRDF est responsable de cette gestion. Et pour Téléo, c’est Eau Publique du Grand Lyon.\",\"part3_3\":\"Ces acteurs sont responsables de la relève de vos données. Ces données servent notamment à votre fournisseur d’électricité, de gaz ou d’eau pour permettre la facturation de vos consommations d’énergie. Des fournisseurs d’électricité ou de gaz il y en a des dizaines. Les gestionnaires de réseaux (… et de votre compteur) ne sont qu’au nombre de trois. Nous avons donc décidé de travailler avec eux, au plus près de la donnée brute issue de vos compteurs.\",\"part3_4\":\"Il vous faudra donc avoir un compte chez GRDF et Eau Publique du Grand Lyon pour accéder à vos données. Si vous n’en avez pas, il suffira de vous en créer un. Ceci ne sera à faire qu’une fois, au début.\",\"title4\":\"Ecolyo se trouve dans un cloud personnel Grand Lyon, qu’est-ce que cela signifie ?\",\"part4_1\":\"Comme vous avez dû le remarquer, lors de votre première connexion à Ecolyo vous avez dû vous créer un compte Cloud Personnel Grand Lyon. Ce cloud personnel est un espace sécurisé porté par l’ambition de vous apporter visibilité, transparence et maîtrise sur l’usage de vos données personnelles, et dont les fonctionnalités vous permettant de récupérer, synchroniser, stocker et partager vos données avec les destinataires de votre choix. Le service Ecolyo se déploie à l’intérieur de cet espace protégé. Dans ce cloud personnel, vous pourrez accéder également à d’autres services. Toutes les données traitées par Ecolyo, mais aussi les autres services que vous seriez amenés à utiliser dans ce cloud personnel restent dans ce Cloud Personnel Grand Lyon et n’en sortent pas, sauf si vous décidez vous-même de partager vos données avec des tiers.\",\"part4_2\":\"Pour en savoir plus sur ce cloud et son utilisation, ainsi que la durée de conservation de vos données, vous pouvez lire les conditions générales d’utilisation du service <a href=\\\"https://manager.cozygrandlyon.cloud/tos/266b4226-8417-42fb-b911-41e86dae8581.pdf?locale=fr\\\">ici</a>.\",\"title5\":\"Et donc concrètement pour Ecolyo, quelles données sont collectées et qui y a accès ?\",\"part5_1\":\"Pour qu’Ecolyo ait accès à vos données de consommations, vous devrez activer vos différents connecteurs. À ce moment-là, pour la connexion aux données de gaz et d’eau à travers un parcours qui vous conduira de manière intuitive sur le site de chacun des gestionnaires de réseaux concerné, vous pourrez donner votre consentement à partager ces données avec le Service Ecolyo, et ce pour une durée limitée dans le temps. Pour l’électricité, le don du consentement et la connexion aux données se fait directement dans notre service. Quid de la durée de ce consentement ? Pour les données électriques, elle est par défaut d'un an. Pour les données gaz, cela sera à vous de la définir (nous vous recommandons 1 an pour une expérience optimale). Les données utilisées pour vérifier la bonne connexion de vos données d’électricité sont stockées du côté de la Métropole de Lyon sur des serveurs sécurisés.\",\"part5_2\":\"Vos connecteurs, une fois configurés, permettent le transfert de vos données de consommations au service Ecolyo. Le transfert de ces données de consommation se fait sans que personne n’accède à leur contenu, pas même la Métropole de Lyon. En effet, ces données sont stockées et traitées directement dans votre cloud personnel qui en assure la protection. Tous les calculs, analyses et traitements sur ces données sont faites DANS votre espace personnel sans visibilité sur le contenu des données par la Métropole de Lyon.\",\"part5_3\":\"Vous pouvez bien sûr mettre fin à la récupération/ au transfert de vos données de consommation sur votre espace cloud personnel à tout moment et à plusieurs niveaux : \",\"part5_3_list1\":\"Vous pouvez supprimer le transfert quotidien de vos données en supprimant tout simplement le connecteur dans la page Consos (en bas).\",\"part5_3_list2\":\"Pour supprimer l’ensemble de vos données ainsi que votre espace personnel Grand Lyon, vous devez demander la suppression de votre cloud. Pour faire cela, rendez-vous dans les paramètres de votre cloud personnel via la barre blanche en haut d’Ecolyo et appuyez sur le bouton « Supprimer mon compte » dans la partie paramètres.\",\"part5_4\":\"Des données sur le profil de votre foyer peuvent être également remplies au sein de l’application. Ces données s’enrichiront au fur et à mesure de votre utilisation du service avec d’autres informations : défis réalisés, étoiles gagnées, etc. L’ensemble de ces données restent à l’intérieur de votre cloud personnel, sans que personne n’y ait accès.\",\"part5_5\":\"Enfin, afin de permettre une mise à jour quotidienne de vos données de consommations, vos identifiants Eau Publique du Grand Lyon, un jeton d’identification GRDF ainsi que vos numéros de compteurs sont stockés.\",\"title6\":\"Personne n’a donc accès à mes données, pas même la Métropole de Lyon, vraiment ?\",\"part6_1\":\"Conformément aux indications du paragraphe précédent, la Métropole de Lyon n’accède ni à vos données de consommations ni aux données utilisées via certaines fonctionnalités du service comme le formulaire (celui-là même qui permet l’analyse de vos consommations personnalisée ainsi qu’une sélection d’éco-gestes personnalisés). Toutes ces informations sont bien gardées au chaud dans votre cloud personnel Grand Lyon.\",\"part6_2\":\"Seul vous pouvez accepter de partager vos données, documents ou fichiers privés avec la Métropole de Lyon, ses partenaires ou d’autres utilisateurs ou acteurs (publics ou privés) après recueil de votre consentement éclairé et par une action expresse de votre part.\",\"part6_3\":\"La Métropole de Lyon n'a cependant accès qu’à l’adresse email utilisée lors la création de votre cloud personnel Grand Lyon. Elle utilise cet email afin de vous tenir informé·e :\",\"part6_3_list1\":\"En réponse à vos demandes, si vous avez pris l’initiative de nous contacter. \",\"part6_3_list2\":\"En cas de problème majeur avec la gestion de votre compte.\",\"part6_3_list3\":\"De l’évolution de vos consommations, des nouveautés et de la qualité du service via une lettre mensuelle. Vous pouvez à tout moment vous désinscrire de cette lettre via la page Options du service.\",\"part6_4\":\"Elle stocke également les informations transmises lors de la connexion à l’électricité (nom, adresse postale). Ces informations doivent être stockées car la Métropole de Lyon est régulièrement contrôlée par Enedis et doit prouver détenir le consentement des personnes pour lesquelles elle va chercher la donnée.\",\"part6_5\":\"Par ailleurs, et dans le cadre de l’évaluation et de l’amélioration du service, des données d’utilisation anonymisées seront remontées à des fins d’exploitation statistiques. La récupération de ces statistiques anonymisées nous permettra de s’assurer du bon fonctionnement technique de la connexion à vos données de consommation ainsi que d’évaluer l’impact global en termes de baisse des consommations énergétiques de notre service. Parmi ces statistiques, des mesures d’audience de la fréquentation des différentes pages du service sont réalisées. Vous pouvez, via la page Options, à tout instant, décider de vous opposer à la récupération de ces données d’utilisation.\",\"title8\":\"Encore des questions ?\",\"part8_1\":\"N’hésitez pas à consulter la FAQ ou à nous contacter via le formulaire de contact présente sur l’ensemble des pages.\",\"part8_2\":\"Dernière option, contactez-nous directement à <a href=\\\"mailto:ecolyo@grandlyon.com\\\">ecolyo(at)grandlyon.com</a>.\",\"title9\":\"LEXIQUE\",\"part9_1_title\":\"Cloud personnel Grand Lyon : \",\"part9_1_content\":\"Cloud personnel : appelé aussi le « domicile numérique », le cloud personnel est souvent réduit à un simple espace de stockage de documents mais il est bien plus que ça. C'est un espace individuel et sécurisé où vous pouvez accéder à des services sans exposer aucune donnée à l’extérieur. Vous seul pouvez y accéder, personne d'autre.\",\"part9_2_title\":\"Connecteur : \",\"part9_2_content\":\"Un connecteur est un service, installé dans votre cloud personnel également, qui a pour but uniquement d’aller récupérer les données auprès de différents partenaires/sources de données. Dans le cadre d’Ecolyo, trois connecteurs sont pré-installés dans votre cloud personnel : celui d’Enedis, celui de GRDF et celui d’Eau Publique du Grand Lyon.\",\"part9_3_title\":\"Compteur communicant : \",\"part9_3_content\":\"Un compteur communicant est un compteur qui mesure de manière précise et détaillée vos consommations et peut transmettre ces données au gestionnaire de réseau via une technologie radio (c'est le cas pour Gazpar et Téléo par exemple) ou via les réseaux électriques (via Courant Porteur en ligne, c'est le cas pour Linky par exemple).\",\"part9_4_title\":\"Fournisseur : \",\"part9_4_content\":\"Votre fournisseur d’électricité, de gaz ou d’eau est l’entreprise qui vous facture votre électricité, gaz ou eau. Côté électricité il en existe <a href=\\\"https://www.enedis.fr/liste-des-fournisseurs-delectricite\\\">aujourd’hui plus de 50</a>, chacun proposant des tarifs différents.\",\"part9_5_title\":\"Gestionnaire de réseau de distribution : \",\"part9_5_content\":\"Appelé aussi parfois distributeur, il est en charge de la livraison de votre électricité, gaz ou eau jusqu’à votre domicile. Il est aussi en charge du compteur qui relève vos consommations. Il transmet vos données de consommations à votre fournisseur afin qu’il effectue la facturation de vos consommations d’énergie. Il peut également les transmettre à tout acteur avec qui vous avez décidé de partager ces données.\"}},\"gcu_modal\":{\"button_accept\":\"J'accepte\",\"accessibility\":{\"window_title\":\"Conditions générales d’utilisation\",\"button_accept\":\"Accepter les conditions générales d'utilisation\"}},\"matomo\":{\"matomo_title\":\"Suivi statistiques d'usage Matomo\"},\"header\":{\"accessibility\":{\"button_back\":\"Retour à la page précédente\",\"button_open_feedbacks\":\"Ouvrir le partage de retours\"}},\"konnector_form\":{\"label_updated_at\":\"Dernière mise-à-jour le\",\"button_update\":\"Mettre à jour\",\"loading\":\"Chargement...\",\"wait_end_issue\":\"Attendre la fin de la maintenance avant de mettre à jour.\",\"button_delete\":\"Supprimer\",\"issue\":\"Le problème semble venir de \",\"resolve\":\"Une mise à jour peut résoudre ce problème.\",\"login_failed\":\"Un problème a lieu lors de la récupération de vos données. Merci de supprimer votre connecteur et vous reconnecter.\",\"not_installed\":\"Le connecteur n'est pas installé. Veuillez l'installer en cliquant sur le bouton ci-dessous.\",\"button_install\":\"Installer\",\"error_account_creation\":\"Une erreur est survenue, veuillez essayer de nouveau.\",\"error_no_login_password\":\"Identifiant et mot de passe requis\",\"error_login_failed\":\"Identifiants invalides\",\"error_update\":\"Un problème est survenu lors du rapatriement de vos données.\",\"error_update_oauth\":\"Votre autorisation pour afficher vos données %{fluid} a expiré.\",\"error_consent_form_gas\":\"Vos données ne peuvent être récupérées car vous n'avez pas coché l'autorisation d'accès aux données informatives lors de votre partage de consentement.\",\"button_oauth_reload\":\"Redonner mon consentement\",\"OK\":\"Ok\",\"konnector_delta\":{\"ELECTRICITY\":\"La donnée de consommation électrique arrive normalement à J+1. Un retard d'un ou deux jours est parfois constaté.\",\"GAS\":\"La donnée de consommation de gaz arrive normalement à J+3. Un retard d'un ou deux jours est parfois constaté.\",\"WATER\":\"La donnée de consommation d'eau arrive normalement à J+3. Un retard d'un ou deux jours est parfois constaté.\"},\"accessibility\":{\"button_install\":\"Installer le connecteur\",\"button_update\":\"Mettre à jour votre connexion\",\"button_delete\":\"Supprimer votre connexion\"}},\"konnector_options\":{\"label_connect_to_electricity\":\"Se connecter à l'électricité\",\"label_connect_to_water\":\"Se connecter à l'eau\",\"label_connect_to_gas\":\"Se connecter au gaz\",\"label_offline_electricity\":\"Électricité déconnectée\",\"label_offline_water\":\"Eau déconnectée\",\"label_offline_gas\":\"Gaz déconnecté\",\"partner_issue\":\"En maintenance\",\"outdated\":\"Données manquantes depuis %{isOutdatedData} jours\",\"accessibility\":{\"label_ko_status\":\"Connecteur en erreur\",\"button_toggle_detail_electricity\":\"Afficher ou masquer le détail de la connexion à l'électricité\",\"button_toggle_detail_water\":\"Afficher ou masquer le détail de la connexion à l'eau\",\"button_toggle_detail_gas\":\"Afficher ou masquer le détail de la connexion au gaz\"}},\"konnector_modal\":{\"loading_data\":\"Veuillez patienter, vos données sont en cours de chargement.\",\"loading_data_update\":\"Veuillez patienter, vos données sont en cours de mise à jour.\",\"logging_txt\":\"Nous vérifions vos informations d'identité\",\"success_txt\":\"Félicitations !\",\"success_data_electricity\":\"Vos données de consommation d'électricité sont maintenant connectées à Ecolyo.\",\"success_data_water\":\"Vos données de consommation d'eau sont maintenant connectées à Ecolyo.\",\"success_data_gas\":\"Vos données de consommation de gaz sont maintenant connectées à Ecolyo.\",\"success_data_additional_electricity\":\"Les données de consommations mettent entre un et deux jours pour arriver.\",\"success_data_additional_water\":\"Les données de consommations mettent entre trois et cinq jours pour arriver.\",\"success_data_additional_gas\":\"Les données de consommations mettent entre trois et cinq jours pour arriver.\",\"success_update_txt\":\"Connexion réussie !\",\"success_data_update_electricity\":\"Ecolyo est bien connecté à votre compteur d'électricité.\",\"success_data_update_water\":\"Ecolyo est bien connecté à votre compteur d'eau.\",\"success_data_update_gas\":\"Ecolyo est bien connecté à votre compteur de gaz.\",\"success_data_additional_update_electricity\":\"Sachez que la donnée de consommation d'électricité arrive entre J+1 et J+2.<br /><br />S'il vous manque encore des données, c'est qu'elles n'ont pas encore été mises à disposition par le gestionnaire de votre compteur. Merci pour votre patience !\",\"success_data_additional_update_water\":\"Sachez que la donnée de consommation d'eau arrive entre J+3 et J+5.<br /><br />S'il vous manque encore des données, c'est qu'elles n'ont pas encore été mises à disposition par le gestionnaire de votre compteur. Merci pour votre patience !\",\"success_data_additional_update_gas\":\"Sachez que la donnée de consommation de gaz arrive entre J+3 et J+5.<br /><br />S'il vous manque encore des données, c'est qu'elles n'ont pas encore été mises à disposition par le gestionnaire de votre compteur. Merci pour votre patience !\",\"error_txt\":\"Aïe !\",\"mismatch\":{\"title\":\"Vos données n'ont pas pu être récupérées.\",\"text1\":\"Vos nom et numéro de compteur ne correspondent plus. Merci de reconfigurer votre connecteur.\",\"text2\":\"Reconfigurer mon connecteur ?\",\"text3\":\"La reconfiguration de votre connecteur passe par sa suppression et sa nouvelle installation. Vos données seront conservées.\"},\"error_data_electricity\":\"Un problème est survenu. Vos données de consommation d’électricité ne seront pas chargées.\",\"error_data_water\":\"Un problème est survenu. Vos données de consommation d’eau ne seront pas chargées.\",\"error_credentials_water\":\"Une erreur s'est glissée dans vos identifiants de connexion. Veuillez vérifier ces éléments et tenter de vous reconnecter. L'identifiant est un numéro à 7 chiffres (différent de votre numéro de contrat).\",\"error_credentials_electricity\":\"Il semblerait que les nom(s) et adresse ne concordent pas avec le numéro de votre compteur.\",\"error_credentials_electricity_2\":\"Nous ne pouvons vous donner accès aux données de consommation.\",\"error_credentials_update_water\":\"Une erreur s'est glissée dans vos identifiants de connexion. Veuillez vérifier ces éléments et tenter de vous reconnecter.\",\"error_credentials_update_electricity\":\"Un problème a lieu lors de la récupération de vos données. Merci de supprimer votre connecteur et vous reconnecter.\",\"error_credentials_update_gas\":\"Un problème a lieu lors de la récupération de vos données. Merci de supprimer votre connecteur et vous reconnecter.\",\"error_data_gas\":\"Un problème est survenu. Vos données de consommation de gaz ne seront pas chargées.\",\"error_consent_form_gas_title\":\"Nous n'avons pas pu connecter vos données de consommation de gaz à Ecolyo.\",\"error_consent_form_gas_content\":\"En effet, le partage de vos données de consommation de gaz \\\"informatives\\\" doit être accepté.\",\"error_consent_form_gas_content_2\":\"Merci de cocher \\\"OUI\\\" au partage de vos données de consommation de gaz, et à \\\"Autoriser l'accès à mes données informatives\\\".\",\"error_data_update_electricity\":\"Un problème est survenu. Vos données de consommation d’électricité n’ont pas été mises à jour.\",\"error_data_update_water\":\"Un problème est survenu. Vos données de consommation d’eau n’ont pas été mises à jour.\",\"error_data_update_gas\":\"Un problème est survenu. Vos données de consommation de gaz n’ont pas été mises à jour.\",\"error_data_2\":\"Merci de réessayer plus tard.\",\"button_validate\":\"Ok\",\"button_understood\":\"J'ai compris\",\"button_try_again\":\"Réessayer\",\"show_common_error\":\"Voir les erreurs récurrentes\",\"show_common_error_list\":\"<span style=\\\"text-align:left; font-weight:700;\\\">Le problème peut provenir des cas suivants :</span> <ul style=\\\"text-align:left;\\\"><li>Vous avez un co-titulaire sur votre contrat. Veillez à bien entrer le nom du <span style=\\\"color:#E3B82A; font-weight:700;\\\">titulaire du contrat</span> et non le co-titulaire.</li><li> Votre nom comporte un tiret ? Tentez sans le tiret.</li><li> Entrez bien le nom de votre commune de résidence en entier (tirets et accents inclus)</li><li> Avez-vous bien entré le <span style=\\\"color:#E3B82A; font-weight:700;\\\">numéro de votre compteur</span> (PDL) ? Tout autre numéro (de contrat, de client) ne fonctionne pas.</li></ul><p style=\\\"text-align:center; font-style: italic; font-weight:400; font-size: 0.9rem;\\\">Si vous rencontrez toujours des difficultés, contactez notre service d'aide </p><div style=\\\"text-align:center; font-weight:700;\\\">Avez-vous pensez à vérifier ces informations ?</div>\",\"accessibility\":{\"window_title\":\"Fenêtre d'attente de connexion\",\"button_close\":\"Fermer la fenêtre\"}},\"consent_outdated\":{\"title\":{\"0\":\"Votre autorisation pour afficher vos données d’électricité a expiré\",\"2\":\"Votre autorisation pour afficher vos données de gaz a expiré\"},\"text1\":{\"0\":\"Veuillez re-donner votre consentement pour la transmission et la reconnexion de vos données ENEDIS à Ecolyo.\",\"2\":\"Veuillez re-donner votre accord pour que GRDF nous transmette vos données de consommation.\"},\"text2\":{\"0\":\"Souhaitez-vous renouveler votre accord dès maintenant pour un an ?\",\"2\":\"Voulez-vous donner votre accord sur votre compte GRDF maintenant ?\"},\"later\":\"Plus tard\",\"go\":\"J'y vais\",\"no\":\"Non\",\"yes\":\"Oui\"},\"delete_grdf_modal\":{\"text1\":\"La suppression de la connexion avec GRDF s’accompagne de la suppression de votre consentement à partager vos données gaz avec Ecolyo.\",\"text2\":\"Si vous souhaitez vous reconnecter, il vous faudra re-donner votre accord pour que GRDF nous transmette vos données de consommation.\",\"text3\":\"Voulez-vous supprimer votre connexion et votre consentement à GRDF ?\",\"cancel\":\"Plus tard\",\"go\":\"Oui\"},\"legal\":{\"read_legal\":\"Lire les mentions légales\",\"title_legal\":\"Mentions légales & CGU\",\"version\":\"Version du 12.12.2022\",\"site\":\"Site du service Ecolyo : <a href=\\\"https://ecolyo.com/\\\"> https://ecolyo.com/</a>\",\"adress\":\"Métropole de Lyon - 20, rue du Lac – CS 33569 - 69505 Lyon cedex 03\",\"phone\":\"Tél : (33) 4 78 63 40 40\",\"mail\":\"<a href=\\\"mailto:ecolyo@grandlyon.com\\\"> ecolyo(at)grandlyon.com</a>\",\"p1b\":\"Directrice de publication : \",\"p1\":\"Blandine MELAY, Responsable du Service Transition Énergétique\",\"p2b\":\"Animation éditoriale, gestion et mise à jour : \",\"p2\":\"Marion BERTHOLON, Chargée de services numériques pour la transition énergétique\",\"p3b\":\"Photographies : \",\"p3\":\"sauf mention contraire, les photos sont la propriété de la Métropole de Lyon\",\"p4b\":\"Conception et Charte graphique : \",\"p4\":\"Florent Dufier\",\"p5b\":\"Réalisation technique : \",\"p5\":\"Métropole de Lyon, Sopra Steria\",\"p6b\":\"Maintenance technique : \",\"p6\":\"Délégation Développement économique, emploi & savoirs - Innovation numérique & systèmes d’information - Usages et services numériques - Développement des services numériques\",\"title1\":\"Crédits\",\"part1\":\"Ce site est le résultat de développements spécifiques réalisés dans les langages Go, TypeScript, HTML et Sass. Les développements s’appuient sur plusieurs bibliothèques et frameworks libres : axios, cozy-bar, cozy-client, cozy-harvest-lib, cozy-scripts, cozy-ui, d3, detect-browser, global, lodash, luxon, moment, moment-timezone, node-sass, object-hash, react, react-dom, react-redux, react-router-dom, react-swipeable-views, redux-devtools-extension, sass-loader. Les tests de l’application s’appuient sur les bibliothèques et frameworks libres suivants: enzyme, enzyme-adapter-react-16, jest-junit, react-test-renderer, redux-mock-store. La pile technique intègre également les applications Cozy stack, Yarn, Docker, ACH. Les déploiements sont réalisés sur le registre hébergé chez Cozy. L’équipe de réalisation utilise au quotidien les applications GitLab, IceScrum, RocketChat, SonarQube.\",\"title2\":\"Traitement des données personnelles et droit d’accès, de modification et de suppression\",\"part2\":\"Conformément à la réglementation en vigueur en matière de protection des données personnelles, le service Ecolyo a fait l’objet d’une inscription au registre des traitements de la Métropole de Lyon. Ecolyo fait partie de l’écosystème de services orientés « self data » déployés par la Métropole de Lyon avec l’ambition d’offrir aux usagers métropolitains les outils et les services leur permettant d’exercer directement leur droit à la portabilité, dans un cadre apte à garantir aussi bien la transparence et le contrôle sur l’usage de leurs données personnelles que l’exploitation directe du contenu de ces données selon leurs libres choix. Le self data est en effet selon la Fondation Internet Nouvelle Génération (FING) « la production, l’exploitation et le partage de données personnelles par les individus, sous leur contrôle et à leurs propres fins ». Au sein de cet environnement self data, la gestion des données s’appuie sur l’organisation suivante des rôles et responsabilités associées : \",\"part2-1\":\"Les partenaires du service GRDF et Eau Publique du Grand Lyon sont responsables exclusivement des seuls traitements de Données Personnelles relatifs à la collecte des données de consommation de gaz et d’eau de l’utilisateur et à leur transmission sur la plateforme de cloud personnel, après consentement de l’utilisateur.\",\"part2-2\":\"Enedis est responsable de la collecte des données de consommation d’électricité et de leur mise à disposition à la Métropole de Lyon qui, elle en gère la transmission sur la plateforme du cloud personnel de l’utilisateur, après avoir récupéré le consentement de l’utilisateur.\",\"part2-3\":\"La Métropole de Lyon est responsable de traitement sur le périmètre du service Ecolyo qu’elle propose à l’usager, ainsi que des traitements nécessaires à la fourniture de la plateforme de cloud personnel qu’elle met à disposition de l’usager pour accéder au service Ecolyo. En sa qualité de responsable de ces traitements, elle collecte et traite : \",\"part2-3-1\":\"Les données de compte de l’usager renseignées par l’usager au sein de son espace de cloud personnel Grand Lyon à des fins de gestion du compte et de communication avec l’usager ;\",\"part2-3-2\":\"Les données de compte de l’utilisateur lui permettant de connecter ses données d’électricité à Ecolyo ;\",\"part2-3-3\":\"Les données privées de consommation d’énergie et d’eau dont la récupération, la sauvegarde, le stockage, la synchronisation et le partage sur la plateforme de cloud personnel sont initiés par l’usager sans visibilité de la Métropole de Lyon sur leur contenu.\",\"part2-3-4\":\"Les données privées sur la composition du logement et du foyer de l’utilisateur, fournies par l’utilisateur lui-même au sein du service, sont traitées par le service sans visibilité de la Métropole de Lyon sur leur contenu.\",\"part2-3-5\":\"Des métriques d’usage du service anonymisées et remontées périodiquement afin d’améliorer la qualité du service et d’évaluer son impact (Plus d’informations sur la manière dont votre anonymat est bien préservé dans ce processus <a href=\\\"https://ecolyo.com/cloud_statistiques.html\\\">ici</a>).\",\"part2-4\":\"La Métropole réalise également des mesures d’audience à l’aide de la solution Matomo. Afin de vous fournir un meilleur service et d’améliorer votre expérience d'utilisateur, nous utilisons des solutions de mesure d’audience qui utilisent la technologie des « cookies », des fichiers texte qui sont enregistrés sur votre ordinateur et qui permettent de générer des informations envoyées aux serveurs de mesure d’audience. Sur ces serveurs, l’adresse IP est anonymisée. Les données recueillies ont uniquement pour finalité de permettre d'analyser la fréquentation de nos pages afin d'en améliorer le contenu. Il s'agit de statistiques agrégées permettant de connaître le nombre de visites et de visiteurs différents, les pages les plus populaires, les chemins préférés, les niveaux d'activité par jour de la semaine et par heure de la journée, les principales erreurs etc. Vous avez cependant le droit de vous opposer à l’utilisation de ces cookies, et donc au traitement de vos données personnelles de navigation, en vous rendant dans la page Options de notre service.\",\"part2-5\":\"L’usager est seul décisionnaire des finalités d’utilisation qu’il souhaite définir pour le traitement de ses données personnelles de consommation, à la suite de leur transmission par les partenaires du service Ecolyo sur son cloud personnel. Ainsi, dans le cadre de l’utilisation d’Ecolyo, l’usager ne recevra les données des partenaires du service : Enedis, GRDF et Eau Publique du Grand Lyon seulement qu’à sa demande expresse après la saisie de ses identifiants.\",\"part2-6\":\"L’utilisateur est donc le seul à accéder :\",\"part2-6-1\":\"À ses données de consommation d’électricité horaires, journalières, hebdomadaires, mensuelles et annuelles.\",\"part2-6-2\":\"À ses données de consommation de gaz journalières, hebdomadaires, mensuelles et annuelles.\",\"part2-6-3\":\"À ses données de consommation eau journalières, hebdomadaires, mensuelles et annuelles.\",\"part2-7\":\"Les engagements et responsabilités de la Métropole de Lyon concernant la protection des données et la confidentialité des données Ecolyo sont précisés dans les Mentions légales et les conditions d’utilisation du cloud personnel Grand Lyon qui accueille aujourd’hui le service Ecolyo et sans lequel le service ne peut pas fonctionner. Pour plus d’informations sur les engagements et responsabilités de la Métropole de Lyon concernant la protection et la confidentialité dans le cloud personnel, nous vous invitons à vous référer <a href=\\\"https://manager.cozygrandlyon.cloud/tos/266b4226-8417-42fb-b911-41e86dae8581.pdf?locale=fr\\\">aux mentions légales et CGU du cloud personnel métropolitain.</a> \",\"part2-8\":\"Conformément à la loi 78-17 du 6 janvier 1978 modifiée relative à l’information, aux fichiers et aux libertés, vous disposez d’un droit d’accès, de rectification et d’opposition au traitement de vos données à caractère personnel. Votre cloud personnel vous permet d’exercer ces droits directement dans cet espace sur vos données de compte. S’agissant des données de consommations d’électricité et de gaz, l’utilisateur peut supprimer son consentement à partager ses données en supprimant son connecteur dans la page Consos.\",\"part2-9\":\"Vous pouvez également exercer vos droits d’accès, de rectification, de limitation, d’opposition et d’effacement de vos données personnelles en contactant directement le Délégué à la Protection des Données par courrier en écrivant à l’adresse :\",\"part2-10\":\"Métropole de Lyon – Délégué à la Protection des Données - Direction des Assemblées, des Affaires Juridiques et des Assurances - 20, rue du Lac - BP 33569 - 69505 Lyon Cedex 03 ou en ligne, au moyen du formulaire disponible à l'adresse suivante : <a href=\\\"https://demarches.toodego.com/sve/proteger-mes-donnees-personnelles/\\\">https://demarches.toodego.com/sve/proteger-mes-donnees-personnelles/.</a>\",\"part2-11\":\"L’exercice de ces droits sur vos données personnelles auprès de la Métropole de Lyon concerne exclusivement les données traitées dans le cadre du service « Ecolyo ».\",\"title3\":\"Dispositions légales\",\"part3-1\":\"Les divers éléments du site web (la forme, la mise en page, le fonds, la structure …) sont protégés par le droit des dessins et modèles, le droit d’auteur, le droit des marques ainsi que le droit à l’image et ils ne peuvent être copiés ou imités en tout ou partie sauf autorisation expresse de la Métropole de Lyon.\",\"part3-2\":\"Toute personne ne respectant pas les dispositions légales applicables se rend coupable du délit de contrefaçon et est passible des sanctions pénales prévues par la loi.\",\"title4\":\"Droits d’auteurs\",\"part4-1\":\"Les photographies, textes, logos, pictogrammes, ainsi que toutes œuvres intégrées dans le site sont la propriété de la \\\"Métropole de Lyon\\\" ou de tiers ayant autorisé la \\\"Métropole de Lyon\\\" à les utiliser.\",\"part4-2\":\"Les reproductions, les transmissions, les modifications, les réutilisations, sur un support papier ou informatique, dudit site et des œuvres qui y sont reproduites ne sont autorisées que pour un usage personnel et privé conforme aux dispositions de l’article L 122-5 du Code de la Propriété Intellectuelle. Ces reproductions devront ainsi notamment indiquer clairement la source et l’auteur du site et/ou de ces œuvres multimédias. En aucun cas ces reproductions ne sauraient porter préjudice aux droits des tiers. Les reproductions, les transmissions, les modifications, les réutilisations à des fins publicitaires, commerciales ou d’information, de tout ou partie du site, sont totalement interdites.\",\"title5\":\"Logo de la Métropole de Lyon et d’Ecolyo\",\"part5\":\"Les logos de la Métropole de Lyon et d’Ecolyo ne peuvent pas être modifiés – proportions, couleurs, éléments, constituants – et ne peuvent pas être sujet à aucune transformation, animation ou tout autre processus. Les logos de la Métropole de Lyon et d’Ecolyo ne peuvent être utilisés et associés qu’aux seules informations vérifiables. Ils ne peuvent être notamment utilisés que pour illustrer des relations avec la Métropole de Lyon ou des actions de sponsorings dûment établies. Quel que soit le cas d’espèce, la Métropole de Lyon se réserve le droit d’approuver ou de désapprouver toute utilisation des logos de la Métropole de Lyon et d’Ecolyo, pour assurer son utilisation correcte, conformément à l’éthique, la morale et aux intérêts de la Métropole de Lyon. Les conditions susmentionnées s’appliquent dans le cadre de pages web, elles ne font pas référence à l’utilisation des logos dans tout autre document. La Métropole de Lyon se réserve le droit de modifier les conditions d’utilisation des logos de la Métropole de Lyon et d’Ecolyo à tout moment et sans préavis.\",\"title6\":\"Droit des bases de données\",\"part6\":\"Les bases de données sont protégées par la loi du 1er juillet 1998 et le régime français du droit d’auteur.\",\"title7\":\"Établissements de liens vers le site Ecolyo\",\"part7-1\":\"La Métropole de Lyon autorise la mise en place d’un lien hypertexte vers son service Ecolyo pour tous les sites internet, à l’exclusion de ceux diffusant des informations à caractère polémique, pornographique, xénophobe ou pouvant, dans une plus large mesure porter atteinte à la sensibilité du plus grand nombre.\",\"part7-2\":\"Le lien doit aboutir à la page d’accueil du service (<a href=\\\"https://ecolyo.com\\\">https://ecolyo.com</a>), cette page devant apparaître dans une nouvelle fenêtre. Les pages du service Ecolyo ne doivent en aucun cas être intégrées à l’intérieur des pages d’un autre site (iframe).\",\"part7-3\":\"Dans tous les cas d’espèce, La Métropole de Lyon se réserve le droit de demander la suppression d’un lien si elle estime que le site cible ne respecte pas les règles ainsi définies.\",\"title8\":\"Liens vers des sites tiers depuis le site Ecolyo\",\"part8\":\"Les liens hypertextes mis en œuvre au sein du site en direction d’autres sites et/ou de pages personnelles et d’une manière générale vers toutes ressources existantes sur internet ne sauraient engager la responsabilité de la Métropole de Lyon quant aux liens qu’ils contiennent ou aux changements ou mises à jour qui leur sont apportés.\",\"title9\":\"Mise en garde générale\",\"part9-1\":\"Nos services mettent tout en œuvre pour offrir aux visiteurs de ce site web des informations fiables et vérifiées. Cependant, malgré tous les soins apportés, le site peut comporter des inexactitudes, des défauts de mise à jour ou des erreurs.\",\"part9-2\":\"Nous remercions les utilisateurs du site de nous faire part d’éventuelles omissions, erreurs ou corrections par mail sur la boite aux lettres du webmestre ou directement via le formulaire proposé dans le service.\",\"accessibility\":{\"button_close\":\"Fermer la fenêtre\"}},\"oauth\":{\"window\":{\"title\":\"OAuth\"}},\"onboarding\":{\"welcomeModal\":{\"title\":\"Vous êtes à mi-chemin !\",\"part1\":\"Votre cloud personnel a bien été créé.\",\"part2\":\"Il vous faut maintenant donner votre accord pour connecter vos compteurs au service.\",\"button_valid\":\"Ok\",\"accessibility\":{\"window_title\":\"Fenêtre de bienvenue\",\"button_valid\":\"Valider\"}}},\"old_fluid_data_modal\":{\"errorTxt\":\"Aïe !\",\"oldData\":\"Vos données semblent anciennes\",\"verify\":\"Veuillez vérifier l’état de vos connecteurs : \",\"problem\":\"Vos connecteurs semblent bien connectés, il se peut qu’il y ait un problème au niveau du ou des fournisseurs de données :\",\"problem_electricity\":\"pour l'électricité.\",\"problem_water\":\"pour l'eau.\",\"problem_gas\":\"pour le gaz.\",\"contact\":\"Veuillez prendre contact directement avec eux.\",\"accessButton\":\"Accéder aux connecteurs\",\"later\":\"Plus tard\",\"ok\":\"Ok\",\"accessibility\":{\"window_title\":\"Fenêtre d'information\",\"button_ok\":\"Fermer la fenêtre\",\"button_later\":\"Fermer la fenêtre\",\"button_goto_konnector\":\"Aller aux connecteurs\"}},\"performance_indicator\":{\"bilan\":{\"text1\":\"Par rapport à \",\"text2\":\"soit une différence de : \"},\"error_no_compare\":\"comparaison impossible\",\"error_no_compare_reason\":\"(manque de données)\",\"error_no_compare_no_data\":\"Vos consommations pour cette période sont incomplètes à cause d’un problème technique concernant :\",\"fpi\":{\"no_data\":\"Données non disponibles\",\"no_comparison\":\"Pas de comparaison possible\"}},\"profile\":{\"report\":{\"title_alert\":\"Alerte Consommation Excessive d'Eau\",\"title_bilan\":\"Notification par mail\",\"switch_label_bilan\":\"Je reçois la lettre mensuelle contenant un bilan et des conseils sur ma consommation.\",\"switch_label_alert\":\"Être prévenu d’un dépassement anormal de ma consommation d’eau\",\"input_label_alert\":\"Si ma consommation d’eau quotidienne dépasse :\",\"input_label_subtext_alert\":\"Votre consommation quotidienne maximum sur les 6 derniers mois : \",\"activate\":\"Activer\",\"deactivate\":\"Désactiver\"},\"accessibility\":{\"button_toggle_mail_report\":\"Recevoir mon bilan mensuel par mail\",\"button_toggle_consumption_alert\":\"Recevoir des alertes sur mes consommations journalières\",\"input_water_alert_report\":\"Indiquer une limite de consommation d'eau journalière\"}},\"profile_type\":{\"title_profile\":\"Mes données\",\"read_profile\":\"Ajuster mon profil\",\"button_update_profile\":\"J'ajuste mon profil\",\"your_profile\":\"Mon profil\",\"multi_choices\":\"Plusieurs réponses possibles\",\"housing_type\":{\"title\":\"Logement\",\"question\":\"De quel type de logement disposez-vous ?\",\"individual_house\":\"Maison individuelle\",\"apartment\":\"Appartement\"},\"construction_year\":{\"title\":\"Construction\",\"question\":\"Quelle est son année de construction ?\",\"text_before_1948\":\"Construit avant 1948\",\"text_between_1948_and_1974\":\"Construit entre 1948 et 1974\",\"text_between_1975_and_1989\":\"Construit entre 1975 et 1989\",\"text_between_1990_and_1998\":\"Construit entre 1990 et 1998\",\"text_after_1998\":\"Construit après 1998\",\"text_unknown\":\"Construit après 1998\",\"before_1948\":\"Avant 1948\",\"between_1948_and_1974\":\"Entre 1948 et 1974\",\"between_1975_and_1989\":\"Entre 1975 et 1989\",\"between_1990_and_1998\":\"Entre 1990 et 1998\",\"after_1998\":\"Après 1998\",\"unknown\":\"Je ne sais pas\"},\"occupantsNumber\":{\"single\":\" occupant\",\"multi\":\" occupants\"},\"area\":{\"title\":\"Surface\",\"question\":\"Quelle est sa surface en m² ?\",\"name\":\" m²\"},\"occupants_number\":{\"title\":\"Nombre d'occupants\",\"question\":\"Combien il y a-t-il d'occupants ?\"},\"outside_facing_walls\":{\"1\":\"1 façade\",\"2\":\"2 façades\",\"3\":\"3 façades\",\"4\":\"4 façades\",\"title\":\"Murs extérieurs\",\"question\":\"Combien de façades donnent sur l'extérieur ?\",\"text\":{\"single\":\" façade donne sur l'extérieur\",\"multi\":\" façades donnent sur l'extérieur\"}},\"floor\":{\"title\":\"Étage\",\"question\":\"À quel étage est votre appartement ?\",\"ground_floor\":\"Au rez-de-chaussée\",\"intermediate_floor\":\"Étage intermédiaire\",\"last_floor\":\"Dernier étage\",\"not_applicable\":\"Sans objet\"},\"heating\":{\"title\":\"Chauffage\",\"question\":\"Quel est votre type de chauffage ?\",\"individual\":\"Individuel\",\"collective\":\"Collectif\"},\"individual_insulation_work\":{\"title\":\"Travaux de rénovation\",\"question\":\"Quels travaux de rénovation avez-vous réalisés ces 10 dernières années ?\",\"none\":\"Aucun\",\"roof_insulation\":\"Isolation toiture\",\"window_replacement\":\"Remplacement fenêtres\",\"wall_insulation\":\"Isolation des murs\",\"window_replacement_and_wall_insulation\":\"Remplacement fenêtres et isolation des murs\",\"window_replacement_and_roof_insulation\":\"Remplacement fenêtres et isolation toiture\",\"roof_and_wall_insulation\":\"Isolation toiture et murs\",\"window_replacement_and_roof_and_wall_insulation\":\"Remplacement fenêtre et isolation des murs et isolation toiture\",\"built_after_1998\":\"construit après 1998\"},\"facilities_installation\":{\"title\":\"Équipement\"},\"ventilation\":{\"title\":\"Ventilation double flux\",\"question\":\"Êtes-vous équipé d'une ventilation double flux ?\",\"yes\":\"Oui\",\"no\":\"Non\",\"unknown\":\"Je ne sais pas\",\"text\":\"Équipé d'une ventilation double flux\"},\"heater_replacement\":{\"title\":\"Pompe à chaleur ou poêle à bois\",\"question\":\"Au cours de ces 10 dernières années, avez-vous remplacé votre chaudière ou vous êtes-vous équipé d'une pompe à chaleur ou d'un poêle à bois ?\",\"yes\":\"Oui\",\"no\":\"Non\",\"unknown\":\"Je ne sais pas\",\"text\":\"Équipé d'une pompe à chaleur ou poêle à bois\"},\"cold_water\":{\"title\":\"Eau\",\"question\":\"Votre eau est-elle comprise dans vos charges collectives ?\",\"individual\":\"Non\",\"collective\":\"Oui\",\"individual_text\":\"Individuelle\",\"collective_text\":\"Collective\"},\"hot_water\":{\"title\":\"Eau chaude\",\"question\":\"Quel est votre type de production d’eau chaude ?\",\"individual\":\"Individuelle\",\"collective\":\"Collective\"},\"hot_water_equipment\":{\"title\":\"Eau chaude\",\"question\":\"Utilisez-vous l’un de ces équipements pour produire votre eau chaude ?\",\"solar\":\"Chauffe-eau solaire\",\"thermodynamic\":\"Chauffe-eau thermodynamique\",\"other\":\"Aucun des deux\"},\"warming_fluid\":{\"0\":\"Électricité\",\"2\":\"Gaz\",\"3\":\"Bois\",\"4\":\"Fioul\",\"5\":\"Autre\",\"title\":\"Source chauffage\",\"question\":\"Quelle source d’énergie principale utilisez-vous pour vous chauffer ?\",\"no_fluid_text\":\"Produit ni par de l'électricité, ni par du gaz, ni par du bois ou du fuel\",\"0_text\":\"Produit grâce à de l'électricité\",\"2_text\":\"Produit grâce au gaz\",\"3_text\":\"Produit grâce au bois\",\"4_text\":\"Produit grâce au fioul\",\"5_text\":\"Produit grâce à un autre moyen\"},\"hot_water_fluid\":{\"0\":\"Électricité\",\"2\":\"Gaz\",\"3\":\"Autre (Fioul, Bois)\",\"title\":\"Source eau chaude\",\"question\":\"Avec quelle source d’énergie votre eau chaude est-elle produite ?\",\"no_fluid_text\":\"Produite ni par de l'électricité, ni par du gaz\",\"0_text\":\"Produite grâce à de l'électricité\",\"2_text\":\"Produite grâce au gaz\",\"3_text\":\"Produite à partir d'un autre moyen que l'électricité ou le gaz\"},\"cooking_fluid\":{\"0\":\"Électricité\",\"2\":\"Gaz\",\"title\":\"Source cuisson\",\"question\":\"Quel mode de cuisson principal utilisez-vous ?\"},\"update_date\":{\"title\":\"Date de prise d'effet\",\"question\":\"A partir de quelle date souhaitez-vous que ce nouveau profil soit pris en compte dans l'analyse de vos données ?\"},\"fluidType\":{\"0\":\"Électricité\",\"1\":\"Eau\",\"2\":\"Gaz\"},\"form\":{\"button_previous\":\"Précédent\",\"button_next\":\"Suivant\",\"button_end\":\"Terminer\",\"button_loading\":\"Chargement...\"},\"finished\":{\"title\":\"Terminé !\",\"label1\":\"Grâce à ces informations, vous pourrez comparer votre consommation avec celle d'un foyer vous ressemblant davantage !\",\"label2\":\"Nous pourrons aussi vous proposer des astuces pour maîtriser vos consommations adaptées à votre profil.\",\"button_validate\":\"OK\"},\"accessibility\":{\"button_end\":\"Terminer la mise à jour du profil\",\"button_next\":\"Aller à la section suivante\",\"button_previous\":\"Retour à la section précédente\",\"button_update_profile\":\"Ouvrir la page de mise à jour du profil\",\"button_toggle_detail_profile\":\"Afficher ou masquer le détail du profil\",\"button_toggle_export\":\"Afficher ou masquer l'export des données'\",\"button_toggle_average_home\":\"Afficher ou masquer les informations sur le comparatif'\",\"button_validate\":\"Valider\"}},\"export\":{\"title_export\":\"Télécharger mes données\",\"text1\":\"Vous allez télécharger l'historique mensuel de vos fluides sélectionnés\",\"fluid_select\":\"Pour quel(s) fluide(s) souhaitez vous exporter vos données ?\",\"no_data\":\"Vous n'avez aucune donnée de fluide...\",\"button_download\":\"Télécharger\",\"month\":\"Mois\",\"year\":\"Année\",\"consumption\":\"Consommation\",\"maxpower\":\"Puissance max (kVA)\",\"button_close\":\"Fermer la fenêtre\",\"modal_start\":{\"accessibility_title\":\"Commencer le téléchargement\",\"text1\":\"Vous allez télécharger des données personnelles, Ecolyo n’est plus responsable de celles-ci une fois téléchargées\",\"text2\":\"Les données seront téléchargées sous forme de document excel (.xls)\",\"text3\":\"Lancer le téléchargement ?\",\"button_cancel\":\"Annuler\"},\"modal_loading\":{\"accessibility_title\":\"Téléchargement en cours\",\"text1\":\"Données en cours de téléchargement\",\"text2\":\"Veuillez ne pas quitter l’application pendant la récupération et le téléchargement de vos données\",\"button_cancel\":\"Annuler le téléchargement\"},\"modal_done\":{\"accessibility_title\":\"Téléchargement terminé\",\"text1\":\"Vos données ont bien été téléchargées !\",\"text2\":\"Vous pouvez maintenant retrouver l’historique de vos données sur votre appareil\",\"error1\":\"Aïe !\",\"error2\":\"Il semblerait qu’une erreur se soit produite lors du téléchargement de vos données.\",\"button_close\":\"Fermer\",\"button_close_error\":\"Revenir plus tard\"}},\"quiz\":{\"explanation\":\"Répondez correctement aux 5 questions et remportez 5 des 15 étoiles nécessaires pour débloquer le duel final\",\"score_final\":\"SCORE FINAL\",\"correct\":\"Bravo !\",\"wrong\":\"Raté !\",\"rightAnswer\":\"Bonne réponse :\",\"earn\":\"Vous remportez\",\"button_go_back\":\"Retour\",\"button_end_quiz\":\"Youpi !\",\"button_try_again\":\"Réessayer\",\"button_validate\":\"Valider\",\"next\":\"Suivant\",\"consumption_question\":\"Question sur votre consommation\",\"accessibility\":{\"window_title\":\"Fenêtre de résultat\",\"button_end_quiz\":\"Terminer le quiz\",\"button_go_back\":\"Retour\",\"button_go_next\":\"Suivant\",\"button_try_again\":\"Relancer le quiz\",\"button_validate\":\"Valider\"}},\"splashscreen\":{\"error_loading\":\"Une erreur est survenue\",\"button_reload\":\"Réessayer\",\"accessibility\":{\"button_reload\":\"Recharger la page\"},\"migration_error\":\"Mise à jour de l'application\",\"consent_error\":\"Vérification de vos consentements pour partager vos données avec Ecolyo\",\"profile_error\":\"Chargement de votre profil utilisateur\",\"profileType_error\":\"Chargement de votre profil de consommation.\",\"challenges_error\":\"Actualisation de votre progression dans les défis\",\"analysis_error\":\"Chargement de votre analyse mensuelle\",\"index_error\":\"Chargement des index\",\"prices_error\":\"Mise à jour des prix\",\"consos_error\":\"Connexion à vos données de consommation\",\"partners_error\":\"Récupération de l'état des services partenaires\",\"unknown_error\":\"Veuillez vérifier votre connexion internet\",\"network_error\":\"Erreur de réseau\",\"step\":{\"0\":\"Mise à jour de l'application\",\"1\":\"Vérification de vos consentements pour partager vos données avec Ecolyo\",\"2\":\"Chargement de votre profil\",\"3\":\"Actualisation de votre progression dans les défis\",\"4\":\"Mise à jour des prix\",\"5\":\"Connexion à vos données de consommation\"}},\"timestep\":{\"today\":\"Aujourd'hui\",\"year\":{\"period\":\"5 ans\",\"comparelabel\":\"Comparer à l'année précédente\"},\"month\":{\"period\":\"Année\",\"comparelabel\":\"Comparer à l'année précédente\",\"current\":\"année actuelle\",\"last\":\"année précédente\"},\"day\":{\"period\":\"Mois\",\"comparelabel\":\"Comparer au mois précédent\",\"current\":\"mois actuel\",\"last\":\"mois précédent\"},\"week\":{\"period\":\"Semaine\",\"comparelabel\":\"Comparer à la semaine précédente\",\"current\":\"semaine actuelle\",\"last\":\"semaine précédente\"},\"half_an_hour\":{\"period\":\"Jour\",\"comparelabel\":\"Comparer à la journée précédente\",\"gather_data_title\":\"La récupération de vos données demi-horaires prend environ 24h.\",\"current\":\"jour actuel\",\"last\":\"jour précédent\",\"gather_data_subtitle\":\"Votre connexion a bien été prise en compte mais un délai de 24h est en général nécessaire à l’obtention de vos données.\\nÀ demain !\",\"analysis_waiting_data\":\"Pour bénéficier d'une analyse approfondie de votre consommation électrique, il nous faut récupérer vos données de consommation horaires. La récupération de ces données prend environ 24h. A bientôt !\"},\"accessibility\":{\"button_zoom_in\":\"Sélectionner le pas de temps précédent\",\"button_zoom_out\":\"Sélectionner le pas de temps suivant\"}},\"unsubscribe\":{\"title\":\"Êtes-vous sûr de ne plus vouloir recevoir notre email mensuel ?\",\"content\":\"Dans ce cas, vous ne recevrez plus la notification de votre bilan ainsi que les conseils associés au mois en cours.\",\"button_text\":\"Oui, je me désabonne\",\"button_accessibility\":\"Bouton de désinscription\"},\"welcome_modal\":{\"title\":\"Félicitations\",\"perso\":\"Votre espace personnel a bien été créé.\",\"connect\":\"Vous pouvez maintenant connecter vos compteurs d’énergie à Ecolyo en toute sécurité.\",\"button_valid\":\"Ok\",\"accessibility\":{\"title\":\"Fenêtre de félicitations\",\"button_valid\":\"Valider\"}}}"); /***/ }), @@ -9425,22 +9465,17 @@ var ConsumptionDataManager = /*#__PURE__*/function () { }; return result; } - /** - * Check that fluidTypes contains data over a timestep. - * @returns an array of FluidType that contains data - */ - }, { - key: "getFluidsWithData", + key: "getExportableFluids", value: function () { - var _getFluidsWithData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(fluidTypes, timeStep) { - var fluidsWithData, _iterator3, _step3, fluidType; + var _getExportableFluids = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(fluidTypes, timeStep) { + var exportableFluids, _iterator3, _step3, fluidType; return _regenerator.default.wrap(function _callee6$(_context6) { while (1) { switch (_context6.prev = _context6.next) { case 0: - fluidsWithData = []; + exportableFluids = []; _iterator3 = _createForOfIteratorHelper(fluidTypes); _context6.prev = 2; @@ -9462,7 +9497,7 @@ var ConsumptionDataManager = /*#__PURE__*/function () { break; } - fluidsWithData.push(fluidType); + exportableFluids.push(fluidType); case 10: _context6.next = 4; @@ -9486,7 +9521,7 @@ var ConsumptionDataManager = /*#__PURE__*/function () { return _context6.finish(17); case 20: - return _context6.abrupt("return", fluidsWithData); + return _context6.abrupt("return", exportableFluids); case 21: case "end": @@ -9496,30 +9531,24 @@ var ConsumptionDataManager = /*#__PURE__*/function () { }, _callee6, this, [[2, 14, 17, 20]]); })); - function getFluidsWithData(_x23, _x24) { - return _getFluidsWithData.apply(this, arguments); + function getExportableFluids(_x23, _x24) { + return _getExportableFluids.apply(this, arguments); } - return getFluidsWithData; + return getExportableFluids; }() }, { - key: "getFluidsWithDataForTimePeriod", + key: "fetchAllFirstDateData", value: function () { - var _getFluidsWithDataForTimePeriod = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(fluidTypes, timePeriod) { - var timeStep, - fluidsWithData, - _iterator4, - _step4, - fluidType, - data, - _args7 = arguments; + var _fetchAllFirstDateData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(fluidTypes, timeStep) { + var firstDay, firstDays, _iterator4, _step4, fluidType; return _regenerator.default.wrap(function _callee7$(_context7) { while (1) { switch (_context7.prev = _context7.next) { case 0: - timeStep = _args7.length > 2 && _args7[2] !== undefined ? _args7[2] : _timeStep.TimeStep.MONTH; - fluidsWithData = []; + firstDay = null; + firstDays = []; _iterator4 = _createForOfIteratorHelper(fluidTypes); _context7.prev = 3; @@ -9527,133 +9556,61 @@ var ConsumptionDataManager = /*#__PURE__*/function () { case 5: if ((_step4 = _iterator4.n()).done) { - _context7.next = 13; + _context7.next = 16; break; } fluidType = _step4.value; _context7.next = 9; - return this._queryRunnerService.fetchFluidData(timePeriod, timeStep, fluidType); - - case 9: - data = _context7.sent; - - if (data !== null && data !== void 0 && data.length) { - fluidsWithData.push(fluidType); - } - - case 11: - _context7.next = 5; - break; - - case 13: - _context7.next = 18; - break; - - case 15: - _context7.prev = 15; - _context7.t0 = _context7["catch"](3); - - _iterator4.e(_context7.t0); - - case 18: - _context7.prev = 18; - - _iterator4.f(); - - return _context7.finish(18); - - case 21: - return _context7.abrupt("return", fluidsWithData); - - case 22: - case "end": - return _context7.stop(); - } - } - }, _callee7, this, [[3, 15, 18, 21]]); - })); - - function getFluidsWithDataForTimePeriod(_x25, _x26) { - return _getFluidsWithDataForTimePeriod.apply(this, arguments); - } - - return getFluidsWithDataForTimePeriod; - }() - }, { - key: "fetchAllFirstDateData", - value: function () { - var _fetchAllFirstDateData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(fluidTypes, timeStep) { - var firstDay, firstDays, _iterator5, _step5, fluidType; - - return _regenerator.default.wrap(function _callee8$(_context8) { - while (1) { - switch (_context8.prev = _context8.next) { - case 0: - firstDay = null; - firstDays = []; - _iterator5 = _createForOfIteratorHelper(fluidTypes); - _context8.prev = 3; - - _iterator5.s(); - - case 5: - if ((_step5 = _iterator5.n()).done) { - _context8.next = 16; - break; - } - - fluidType = _step5.value; - _context8.next = 9; return this._queryRunnerService.getFirstDateData(fluidType, timeStep); case 9: - _context8.t0 = _context8.sent; + _context7.t0 = _context7.sent; - if (_context8.t0) { - _context8.next = 12; + if (_context7.t0) { + _context7.next = 12; break; } - _context8.t0 = null; + _context7.t0 = null; case 12: - firstDay = _context8.t0; + firstDay = _context7.t0; firstDays.push(firstDay); case 14: - _context8.next = 5; + _context7.next = 5; break; case 16: - _context8.next = 21; + _context7.next = 21; break; case 18: - _context8.prev = 18; - _context8.t1 = _context8["catch"](3); + _context7.prev = 18; + _context7.t1 = _context7["catch"](3); - _iterator5.e(_context8.t1); + _iterator4.e(_context7.t1); case 21: - _context8.prev = 21; + _context7.prev = 21; - _iterator5.f(); + _iterator4.f(); - return _context8.finish(21); + return _context7.finish(21); case 24: - return _context8.abrupt("return", firstDays); + return _context7.abrupt("return", firstDays); case 25: case "end": - return _context8.stop(); + return _context7.stop(); } } - }, _callee8, this, [[3, 18, 21, 24]]); + }, _callee7, this, [[3, 18, 21, 24]]); })); - function fetchAllFirstDateData(_x27, _x28) { + function fetchAllFirstDateData(_x25, _x26) { return _fetchAllFirstDateData.apply(this, arguments); } @@ -9662,108 +9619,108 @@ var ConsumptionDataManager = /*#__PURE__*/function () { }, { key: "fetchAllLastDateData", value: function () { - var _fetchAllLastDateData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(fluidTypes, timeStep) { - var lastDay, lastDays, _iterator6, _step6, fluidType; + var _fetchAllLastDateData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(fluidTypes, timeStep) { + var lastDay, lastDays, _iterator5, _step5, fluidType; - return _regenerator.default.wrap(function _callee9$(_context9) { + return _regenerator.default.wrap(function _callee8$(_context8) { while (1) { - switch (_context9.prev = _context9.next) { + switch (_context8.prev = _context8.next) { case 0: lastDay = null; lastDays = []; if (!(fluidTypes.length === 1)) { - _context9.next = 12; + _context8.next = 12; break; } - _context9.next = 5; + _context8.next = 5; return this._queryRunnerService.getLastDateData(fluidTypes[0], timeStep); case 5: - _context9.t0 = _context9.sent; + _context8.t0 = _context8.sent; - if (_context9.t0) { - _context9.next = 8; + if (_context8.t0) { + _context8.next = 8; break; } - _context9.t0 = null; + _context8.t0 = null; case 8: - lastDay = _context9.t0; + lastDay = _context8.t0; lastDays.push(lastDay); - _context9.next = 35; + _context8.next = 35; break; case 12: if (!(fluidTypes.length > 1)) { - _context9.next = 35; + _context8.next = 35; break; } - _iterator6 = _createForOfIteratorHelper(fluidTypes); - _context9.prev = 14; + _iterator5 = _createForOfIteratorHelper(fluidTypes); + _context8.prev = 14; - _iterator6.s(); + _iterator5.s(); case 16: - if ((_step6 = _iterator6.n()).done) { - _context9.next = 27; + if ((_step5 = _iterator5.n()).done) { + _context8.next = 27; break; } - fluidType = _step6.value; - _context9.next = 20; + fluidType = _step5.value; + _context8.next = 20; return this._queryRunnerService.getLastDateData(fluidType, timeStep); case 20: - _context9.t1 = _context9.sent; + _context8.t1 = _context8.sent; - if (_context9.t1) { - _context9.next = 23; + if (_context8.t1) { + _context8.next = 23; break; } - _context9.t1 = null; + _context8.t1 = null; case 23: - lastDay = _context9.t1; + lastDay = _context8.t1; lastDays.push(lastDay); case 25: - _context9.next = 16; + _context8.next = 16; break; case 27: - _context9.next = 32; + _context8.next = 32; break; case 29: - _context9.prev = 29; - _context9.t2 = _context9["catch"](14); + _context8.prev = 29; + _context8.t2 = _context8["catch"](14); - _iterator6.e(_context9.t2); + _iterator5.e(_context8.t2); case 32: - _context9.prev = 32; + _context8.prev = 32; - _iterator6.f(); + _iterator5.f(); - return _context9.finish(32); + return _context8.finish(32); case 35: - return _context9.abrupt("return", lastDays); + return _context8.abrupt("return", lastDays); case 36: case "end": - return _context9.stop(); + return _context8.stop(); } } - }, _callee9, this, [[14, 29, 32, 35]]); + }, _callee8, this, [[14, 29, 32, 35]]); })); - function fetchAllLastDateData(_x29, _x30) { + function fetchAllLastDateData(_x27, _x28) { return _fetchAllLastDateData.apply(this, arguments); } @@ -9772,37 +9729,37 @@ var ConsumptionDataManager = /*#__PURE__*/function () { }, { key: "checkDoctypeEntries", value: function () { - var _checkDoctypeEntries = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(fluideType, timeStep) { + var _checkDoctypeEntries = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(fluideType, timeStep) { var queryResult; - return _regenerator.default.wrap(function _callee10$(_context10) { + return _regenerator.default.wrap(function _callee9$(_context9) { while (1) { - switch (_context10.prev = _context10.next) { + switch (_context9.prev = _context9.next) { case 0: - _context10.next = 2; + _context9.next = 2; return this._queryRunnerService.getEntries(fluideType, timeStep); case 2: - queryResult = _context10.sent; + queryResult = _context9.sent; if (!((queryResult === null || queryResult === void 0 ? void 0 : queryResult.data.length) > 0)) { - _context10.next = 5; + _context9.next = 5; break; } - return _context10.abrupt("return", true); + return _context9.abrupt("return", true); case 5: - return _context10.abrupt("return", false); + return _context9.abrupt("return", false); case 6: case "end": - return _context10.stop(); + return _context9.stop(); } } - }, _callee10, this); + }, _callee9, this); })); - function checkDoctypeEntries(_x31, _x32) { + function checkDoctypeEntries(_x29, _x30) { return _checkDoctypeEntries.apply(this, arguments); } @@ -9835,14 +9792,14 @@ var ConsumptionDataManager = /*#__PURE__*/function () { var convertedValueDetail = []; var comparisonConvertedValueDetail = []; - var _iterator7 = _createForOfIteratorHelper(singleFluidCharts), - _step7; + var _iterator6 = _createForOfIteratorHelper(singleFluidCharts), + _step6; try { - for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) { + for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { var _singleFluidChart$cha; - var singleFluidChart = _step7.value; + var singleFluidChart = _step6.value; if (!singleFluidChart.chartData) break; if (!singleFluidChart.chartData.actualData[i]) break; var value = singleFluidChart.chartData.actualData[i].value; @@ -9872,9 +9829,9 @@ var ConsumptionDataManager = /*#__PURE__*/function () { } } } catch (err) { - _iterator7.e(err); + _iterator6.e(err); } finally { - _iterator7.f(); + _iterator6.f(); } if (singleFluidCharts.length === noDataCount) aggregatedConvertedValue = -1; @@ -9922,11 +9879,11 @@ var ConsumptionDataManager = /*#__PURE__*/function () { }, { key: "getLastHourData", value: function () { - var _getLastHourData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11(client, month) { + var _getLastHourData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(client, month) { var query, data; - return _regenerator.default.wrap(function _callee11$(_context11) { + return _regenerator.default.wrap(function _callee10$(_context10) { while (1) { - switch (_context11.prev = _context11.next) { + switch (_context10.prev = _context10.next) { case 0: query = (0, _cozyClient.Q)(_doctypes.ENEDIS_MINUTE_DOCTYPE).where({ month: { @@ -9939,22 +9896,22 @@ var ConsumptionDataManager = /*#__PURE__*/function () { }, { day: 'desc' }]).limitBy(1); - _context11.next = 3; + _context10.next = 3; return client.query(query); case 3: - data = _context11.sent; - return _context11.abrupt("return", data.data); + data = _context10.sent; + return _context10.abrupt("return", data.data); case 5: case "end": - return _context11.stop(); + return _context10.stop(); } } - }, _callee11); + }, _callee10); })); - function getLastHourData(_x33, _x34) { + function getLastHourData(_x31, _x32) { return _getLastHourData.apply(this, arguments); } @@ -9969,33 +9926,33 @@ var ConsumptionDataManager = /*#__PURE__*/function () { }, { key: "getFirsDataDateFromDoctype", value: function () { - var _getFirsDataDateFromDoctype = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12(doctype) { + var _getFirsDataDateFromDoctype = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11(doctype) { var query, data; - return _regenerator.default.wrap(function _callee12$(_context12) { + return _regenerator.default.wrap(function _callee11$(_context11) { while (1) { - switch (_context12.prev = _context12.next) { + switch (_context11.prev = _context11.next) { case 0: query = (0, _cozyClient.Q)(doctype).where({}).indexFields(['year', 'month']).sortBy([{ year: 'asc' }, { month: 'asc' }]).limitBy(1); - _context12.next = 3; + _context11.next = 3; return this._client.query(query); case 3: - data = _context12.sent; - return _context12.abrupt("return", data.data); + data = _context11.sent; + return _context11.abrupt("return", data.data); case 5: case "end": - return _context12.stop(); + return _context11.stop(); } } - }, _callee12, this); + }, _callee11, this); })); - function getFirsDataDateFromDoctype(_x35) { + function getFirsDataDateFromDoctype(_x33) { return _getFirsDataDateFromDoctype.apply(this, arguments); } @@ -10004,11 +9961,11 @@ var ConsumptionDataManager = /*#__PURE__*/function () { }, { key: "getFirstDataDateFromDoctypeWithPrice", value: function () { - var _getFirstDataDateFromDoctypeWithPrice = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee13(doctype) { + var _getFirstDataDateFromDoctypeWithPrice = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12(doctype) { var query, data; - return _regenerator.default.wrap(function _callee13$(_context13) { + return _regenerator.default.wrap(function _callee12$(_context12) { while (1) { - switch (_context13.prev = _context13.next) { + switch (_context12.prev = _context12.next) { case 0: query = (0, _cozyClient.Q)(doctype).where({ year: { @@ -10026,22 +9983,22 @@ var ConsumptionDataManager = /*#__PURE__*/function () { }, { month: 'asc' }]).limitBy(1); - _context13.next = 3; + _context12.next = 3; return this._client.query(query); case 3: - data = _context13.sent; - return _context13.abrupt("return", data.data[0]); + data = _context12.sent; + return _context12.abrupt("return", data.data[0]); case 5: case "end": - return _context13.stop(); + return _context12.stop(); } } - }, _callee13, this); + }, _callee12, this); })); - function getFirstDataDateFromDoctypeWithPrice(_x36) { + function getFirstDataDateFromDoctypeWithPrice(_x34) { return _getFirstDataDateFromDoctypeWithPrice.apply(this, arguments); } @@ -10056,30 +10013,30 @@ var ConsumptionDataManager = /*#__PURE__*/function () { }, { key: "saveDoc", value: function () { - var _saveDoc = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee14(consumptionDoc) { + var _saveDoc = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee13(consumptionDoc) { var _yield$this$_client$s, savedDoc; - return _regenerator.default.wrap(function _callee14$(_context14) { + return _regenerator.default.wrap(function _callee13$(_context13) { while (1) { - switch (_context14.prev = _context14.next) { + switch (_context13.prev = _context13.next) { case 0: - _context14.next = 2; + _context13.next = 2; return this._client.save(consumptionDoc); case 2: - _yield$this$_client$s = _context14.sent; + _yield$this$_client$s = _context13.sent; savedDoc = _yield$this$_client$s.data; - return _context14.abrupt("return", savedDoc); + return _context13.abrupt("return", savedDoc); case 5: case "end": - return _context14.stop(); + return _context13.stop(); } } - }, _callee14, this); + }, _callee13, this); })); - function saveDoc(_x37) { + function saveDoc(_x35) { return _saveDoc.apply(this, arguments); } @@ -10094,30 +10051,30 @@ var ConsumptionDataManager = /*#__PURE__*/function () { }, { key: "saveDocs", value: function () { - var _saveDocs = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee15(consumptionDocs) { + var _saveDocs = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee14(consumptionDocs) { var _yield$this$_client$s2, savedDocs; - return _regenerator.default.wrap(function _callee15$(_context15) { + return _regenerator.default.wrap(function _callee14$(_context14) { while (1) { - switch (_context15.prev = _context15.next) { + switch (_context14.prev = _context14.next) { case 0: - _context15.next = 2; + _context14.next = 2; return this._client.saveAll(consumptionDocs); case 2: - _yield$this$_client$s2 = _context15.sent; + _yield$this$_client$s2 = _context14.sent; savedDocs = _yield$this$_client$s2.data; - return _context15.abrupt("return", savedDocs); + return _context14.abrupt("return", savedDocs); case 5: case "end": - return _context15.stop(); + return _context14.stop(); } } - }, _callee15, this); + }, _callee14, this); })); - function saveDocs(_x38) { + function saveDocs(_x36) { return _saveDocs.apply(this, arguments); } @@ -10313,6 +10270,98 @@ var result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WE /***/ }), +/***/ "BhN1": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__("TqRt"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.defaultAction = exports.default = void 0; + +var _defineProperty2 = _interopRequireDefault(__webpack_require__("lSNA")); + +var Sentry = _interopRequireWildcard(__webpack_require__("agHs")); + +var _redux = __webpack_require__("ANjH"); + +var _reduxDevtoolsExtension = __webpack_require__("5HXA"); + +var _reduxThunk = _interopRequireDefault(__webpack_require__("sINF")); + +var _global = __webpack_require__("YNKm"); + +var _analysis = __webpack_require__("JQjK"); + +var _challenge = __webpack_require__("F6Xr"); + +var _chart = __webpack_require__("idK9"); + +var _modal = __webpack_require__("oKH6"); + +var _profile = __webpack_require__("QCMq"); + +var _profileEcogesture = __webpack_require__("L0ad"); + +var _profileType = __webpack_require__("ZI2v"); + +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; } + +var defaultAction = { + type: null, + payload: undefined +}; +exports.defaultAction = defaultAction; +var ecolyoReducer = (0, _redux.combineReducers)({ + analysis: _analysis.analysisSlice.reducer, + challenge: _challenge.challengeSlice.reducer, + chart: _chart.chartSlice.reducer, + global: _global.globalReducer, + modal: _modal.modalSlice.reducer, + profile: _profile.profileReducer, + profileEcogesture: _profileEcogesture.profileEcogestureReducer, + profileType: _profileType.profileTypeSlice.reducer +}); + +var appActions = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, _analysis.analysisSlice.actions), _challenge.challengeSlice.actions), _chart.chartSlice.actions), _modal.modalSlice.actions), _profileType.profileTypeSlice.actions); // TODO refactor types with AppActionsTypes = typeof appActions + + +var sentryReduxEnhancer = Sentry.createReduxEnhancer({}); + +var configureStore = function configureStore(client, persistedState) { + var middlewares = [_reduxThunk.default.withExtraArgument({ + client: client + })]; + + var composeEnhancers = (0, _reduxDevtoolsExtension.composeWithDevTools)({ + trace: true, + actionCreators: appActions + }) || _redux.compose; + + var store = (0, _redux.createStore)((0, _redux.combineReducers)({ + ecolyo: ecolyoReducer, + cozy: client.reducer(), + persistedState: persistedState + }), composeEnhancers( // eslint-disable-next-line prefer-spread + _redux.applyMiddleware.apply(null, middlewares), sentryReduxEnhancer)); + return store; +}; + +var _default = configureStore; +exports.default = _default; + +/***/ }), + /***/ "Bpne": /***/ (function(module, exports, __webpack_require__) { @@ -10453,9 +10502,9 @@ var _screen = __webpack_require__("41Xj"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _reactRouterDom = __webpack_require__("SOjZ"); +var _reactRedux = __webpack_require__("/MKj"); -var _hooks = __webpack_require__("Zlw4"); +var _reactRouterDom = __webpack_require__("SOjZ"); var _modal = __webpack_require__("oKH6"); @@ -10477,15 +10526,15 @@ var CozyBar = function CozyBar(_ref) { t = _useI18n.t; var navigate = (0, _reactRouterDom.useNavigate)(); + var dispatch = (0, _reactRedux.useDispatch)(); var BarLeft = _cozyBar.default.BarLeft, BarCenter = _cozyBar.default.BarCenter, BarRight = _cozyBar.default.BarRight; - var dispatch = (0, _hooks.useAppDispatch)(); - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo.global; }), - screenType = _useAppSelector.screenType; + screenType = _useSelector.screenType; var handleClickBack = (0, _react.useCallback)(function () { if (backFunction) { @@ -12926,17 +12975,24 @@ var _StyledIcon = _interopRequireDefault(__webpack_require__("I07j")); var _I18n = __webpack_require__("buk/"); -var _react = _interopRequireDefault(__webpack_require__("q1tI")); +var _react = _interopRequireWildcard(__webpack_require__("q1tI")); var _reactRouterDom = __webpack_require__("SOjZ"); __webpack_require__("IzCH"); +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 EcogestureSelectionEnd = function EcogestureSelectionEnd() { var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; var navigate = (0, _reactRouterDom.useNavigate)(); + var goToObjectives = (0, _react.useCallback)(function () { + navigate('/ecogestures?tab=0'); + }, [navigate]); return /*#__PURE__*/_react.default.createElement("div", { className: "eg-selection-end-container" }, /*#__PURE__*/_react.default.createElement("div", { @@ -12958,9 +13014,7 @@ var EcogestureSelectionEnd = function EcogestureSelectionEnd() { root: 'btn-highlight', label: 'text-16-bold' }, - onClick: function onClick() { - return navigate('/ecogestures?tab=0'); - } + onClick: goToObjectives }, t('ecogesture_selection.button_ok')))); }; @@ -12996,12 +13050,12 @@ var _cozyClient = __webpack_require__("SH7X"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); +var _reactRedux = __webpack_require__("/MKj"); + var _reactRouterDom = __webpack_require__("SOjZ"); var _quiz = _interopRequireDefault(__webpack_require__("CUhI")); -var _hooks = __webpack_require__("Zlw4"); - __webpack_require__("mFBf"); 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); } @@ -13031,10 +13085,10 @@ var QuizQuestion = function QuizQuestion(_ref) { var client = (0, _cozyClient.useClient)(); - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo.global; }), - fluidTypes = _useAppSelector.fluidTypes; + fluidTypes = _useSelector.fluidTypes; var navigate = (0, _reactRouterDom.useNavigate)(); @@ -13417,22 +13471,14 @@ var _classnames = _interopRequireDefault(__webpack_require__("TSYQ")); var _StyledIcon = _interopRequireDefault(__webpack_require__("I07j")); -var _cozyClient = __webpack_require__("SH7X"); - var _I18n = __webpack_require__("buk/"); var _userChallenge2 = __webpack_require__("dQx6"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _reactRedux = __webpack_require__("/MKj"); - var _reactRouterDom = __webpack_require__("SOjZ"); -var _challenge = _interopRequireDefault(__webpack_require__("kdea")); - -var _challenge2 = __webpack_require__("F6Xr"); - var _utils = __webpack_require__("c+yx"); __webpack_require__("uDaB"); @@ -13450,8 +13496,6 @@ var ChallengeCardDone = function ChallengeCardDone(_ref) { t = _useI18n.t; var navigate = (0, _reactRouterDom.useNavigate)(); - var client = (0, _cozyClient.useClient)(); - var dispatch = (0, _reactRedux.useDispatch)(); var _useState = (0, _react.useState)(_default2.default), _useState2 = (0, _slicedToArray2.default)(_useState, 2), @@ -13463,11 +13507,6 @@ var ChallengeCardDone = function ChallengeCardDone(_ref) { lossIcon = _useState4[0], setLossIcon = _useState4[1]; - var _useSelector = (0, _reactRedux.useSelector)(function (state) { - return state.ecolyo.challenge; - }), - currentChallenge = _useSelector.currentChallenge; - var getUserSaving = function getUserSaving(_userChallenge) { var label; if (_userChallenge.success === _userChallenge2.UserChallengeSuccess.WIN) label = t('challenge.card_done.saving');else label = t('challenge.card_done.depense'); @@ -13510,51 +13549,23 @@ var ChallengeCardDone = function ChallengeCardDone(_ref) { }; }(); - var handleChallengeReset = /*#__PURE__*/function () { - var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() { - var challengeService, updatedChallenge; - return _regenerator.default.wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - challengeService = new _challenge.default(client); - _context2.next = 3; - return challengeService.updateUserChallenge(userChallenge, _userChallenge2.UserChallengeUpdateFlag.DUEL_RESET); - - case 3: - updatedChallenge = _context2.sent; - dispatch((0, _challenge2.updateUserChallengeList)(updatedChallenge)); - - case 5: - case "end": - return _context2.stop(); - } - } - }, _callee2); - })); - - return function handleChallengeReset() { - return _ref3.apply(this, arguments); - }; - }(); - (0, _react.useEffect)(function () { function handleEcogestureIcon() { return _handleEcogestureIcon.apply(this, arguments); } function _handleEcogestureIcon() { - _handleEcogestureIcon = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() { + _handleEcogestureIcon = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() { var icon, icon2; - return _regenerator.default.wrap(function _callee3$(_context3) { + return _regenerator.default.wrap(function _callee2$(_context2) { while (1) { - switch (_context3.prev = _context3.next) { + switch (_context2.prev = _context2.next) { case 0: - _context3.next = 2; + _context2.next = 2; return (0, _utils.importIconById)(userChallenge.id + '-1', 'duelResult'); case 2: - icon = _context3.sent; + icon = _context2.sent; if (icon) { setWinIcon(icon); @@ -13562,11 +13573,11 @@ var ChallengeCardDone = function ChallengeCardDone(_ref) { setWinIcon(_default2.default); } - _context3.next = 6; + _context2.next = 6; return (0, _utils.importIconById)(userChallenge.id + '-0', 'duelResult'); case 6: - icon2 = _context3.sent; + icon2 = _context2.sent; if (icon2) { setLossIcon(icon2); @@ -13576,10 +13587,10 @@ var ChallengeCardDone = function ChallengeCardDone(_ref) { case 8: case "end": - return _context3.stop(); + return _context2.stop(); } } - }, _callee3); + }, _callee2); })); return _handleEcogestureIcon.apply(this, arguments); } @@ -13604,24 +13615,14 @@ var ChallengeCardDone = function ChallengeCardDone(_ref) { className: "text-18" }, getUserSaving(userChallenge), /*#__PURE__*/_react.default.createElement("span", { className: "text-18-bold" - }, (0, _utils.formatNumberValues)(Math.abs(userChallenge.duel.threshold - userChallenge.duel.userConsumption)) + ' ', "\u20AC"), /*#__PURE__*/_react.default.createElement("br", null), t('challenge.card_done.final_defi'))), /*#__PURE__*/_react.default.createElement("div", { - className: "buttons" - }, /*#__PURE__*/_react.default.createElement(_core.Button, { + }, (0, _utils.formatNumberValues)(Math.abs(userChallenge.duel.threshold - userChallenge.duel.userConsumption)) + ' ', "\u20AC"), /*#__PURE__*/_react.default.createElement("br", null), t('challenge.card_done.final_defi'))), /*#__PURE__*/_react.default.createElement(_core.Button, { "aria-label": t('challenge.card_done.final_defi_view'), onClick: goDuel, classes: { - root: 'btn-secondary-negative grey-border', + root: 'btn-secondary-negative review-btn', label: 'text-15-bold' } - }, t('challenge.card_done.final_defi_view')), /*#__PURE__*/_react.default.createElement(_core.Button, { - "aria-label": t('challenge.card_done.reset_defi'), - onClick: handleChallengeReset, - classes: { - root: userChallenge.success === _userChallenge2.UserChallengeSuccess.WIN ? 'btn-secondary-negative grey-border' : 'btn-primary-challenge', - label: 'text-15-bold' - }, - disabled: currentChallenge !== null - }, t('challenge.card_done.reset_defi')))); + }, t('challenge.card_done.final_defi_view'))); }; var _default = ChallengeCardDone; @@ -13738,7 +13739,7 @@ var challengeSlice = (0, _toolkit.createSlice)({ }); updatedList[findIndex] = action.payload; - if (typeof updatedList[findIndex + 1] !== 'undefined' && updatedList[findIndex + 1].state === _userChallenge.UserChallengeState.LOCKED) { + if (typeof updatedList[findIndex + 1] !== 'undefined') { updatedList[findIndex + 1] = _objectSpread(_objectSpread({}, updatedList[findIndex + 1]), {}, { state: _userChallenge.UserChallengeState.UNLOCKED }); @@ -14051,14 +14052,14 @@ var _userQuiz = __webpack_require__("Ush/"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); +var _reactRedux = __webpack_require__("/MKj"); + var _reactRouterDom = __webpack_require__("SOjZ"); var _challenge = _interopRequireDefault(__webpack_require__("kdea")); var _challenge2 = __webpack_require__("F6Xr"); -var _hooks = __webpack_require__("Zlw4"); - var _utils = __webpack_require__("c+yx"); var _ChallengeNoFluidModal = _interopRequireDefault(__webpack_require__("rDu6")); @@ -14082,16 +14083,8 @@ var ChallengeCardOnGoing = function ChallengeCardOnGoing(_ref) { var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; + var dispatch = (0, _reactRedux.useDispatch)(); var navigate = (0, _reactRouterDom.useNavigate)(); - var dispatch = (0, _hooks.useAppDispatch)(); - - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { - return state.ecolyo; - }), - currentDataload = _useAppSelector.challenge.currentDataload, - _useAppSelector$globa = _useAppSelector.global, - fluidTypes = _useAppSelector$globa.fluidTypes, - fluidStatus = _useAppSelector$globa.fluidStatus; var _useState = (0, _react.useState)(true), _useState2 = (0, _slicedToArray2.default)(_useState, 2), @@ -14113,6 +14106,14 @@ var ChallengeCardOnGoing = function ChallengeCardOnGoing(_ref) { isLoading = _useState8[0], setIsLoading = _useState8[1]; + var _useSelector = (0, _reactRedux.useSelector)(function (state) { + return state.ecolyo; + }), + currentDataload = _useSelector.challenge.currentDataload, + _useSelector$global = _useSelector.global, + fluidTypes = _useSelector$global.fluidTypes, + fluidStatus = _useSelector$global.fluidStatus; + var _userChallenge$progre = userChallenge.progress, actionProgress = _userChallenge$progre.actionProgress, explorationProgress = _userChallenge$progre.explorationProgress, @@ -14673,9 +14674,9 @@ var _I18n = __webpack_require__("buk/"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _reactRouterDom = __webpack_require__("SOjZ"); +var _reactRedux = __webpack_require__("/MKj"); -var _hooks = __webpack_require__("Zlw4"); +var _reactRouterDom = __webpack_require__("SOjZ"); var _profile = __webpack_require__("jPH6"); @@ -14686,17 +14687,21 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio 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 UnSubscribe = function UnSubscribe() { - var _useI18n = (0, _I18n.useI18n)(), - t = _useI18n.t; - - var navigate = (0, _reactRouterDom.useNavigate)(); - var dispatch = (0, _hooks.useAppDispatch)(); - var _useState = (0, _react.useState)(0), _useState2 = (0, _slicedToArray2.default)(_useState, 2), headerHeight = _useState2[0], setHeaderHeight = _useState2[1]; + var defineHeaderHeight = function defineHeaderHeight(height) { + setHeaderHeight(height); + }; + + var _useI18n = (0, _I18n.useI18n)(), + t = _useI18n.t; + + var dispatch = (0, _reactRedux.useDispatch)(); + var navigate = (0, _reactRouterDom.useNavigate)(); + var unSubscribe = /*#__PURE__*/function () { var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { return _regenerator.default.wrap(function _callee$(_context) { @@ -14724,10 +14729,10 @@ var UnSubscribe = function UnSubscribe() { return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_CozyBar.default, { titleKey: 'common.title_analysis' }), /*#__PURE__*/_react.default.createElement(_Header.default, { - setHeaderHeight: setHeaderHeight, + setHeaderHeight: defineHeaderHeight, desktopTitleKey: 'common.title_analysis' }), /*#__PURE__*/_react.default.createElement(_Content.default, { - heightOffset: headerHeight + height: headerHeight }, /*#__PURE__*/_react.default.createElement("div", { className: "unsubscribe-container" }, /*#__PURE__*/_react.default.createElement(_StyledIcon.default, { @@ -14944,13 +14949,13 @@ var _I18n = __webpack_require__("buk/"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); +var _reactRedux = __webpack_require__("/MKj"); + var _reactRouterDom = __webpack_require__("SOjZ"); var _terms = _interopRequireDefault(__webpack_require__("wPjT")); -var _global = __webpack_require__("b3rE"); - -var _hooks = __webpack_require__("Zlw4"); +var _global = __webpack_require__("c4IZ"); var _decoreText = __webpack_require__("j5h9"); @@ -14973,13 +14978,8 @@ var TermsView = function TermsView() { t = _useI18n.t; var client = (0, _cozyClient.useClient)(); + var dispatch = (0, _reactRedux.useDispatch)(); var navigate = (0, _reactRouterDom.useNavigate)(); - var dispatch = (0, _hooks.useAppDispatch)(); - - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { - return state.ecolyo.global; - }), - termsStatus = _useAppSelector.termsStatus; var _useState = (0, _react.useState)(false), _useState2 = (0, _slicedToArray2.default)(_useState, 2), @@ -15001,6 +15001,11 @@ var TermsView = function TermsView() { openLegalNoticeModal = _useState8[0], setOpenLegalNoticeModal = _useState8[1]; + var _useSelector = (0, _reactRedux.useSelector)(function (state) { + return state.ecolyo.global; + }), + termsStatus = _useSelector.termsStatus; + var toggleCGUModal = function toggleCGUModal() { setOpenCGUModal(function (prev) { return !prev; @@ -15042,7 +15047,7 @@ var TermsView = function TermsView() { } _context.t0 = dispatch; - _context.t1 = _global.updateTermsStatus; + _context.t1 = _global.updateTermValidation; _context.next = 9; return termsService.getTermsVersionType(); @@ -15278,7 +15283,7 @@ var _I18n = __webpack_require__("buk/"); var _react = _interopRequireDefault(__webpack_require__("q1tI")); -var _hooks = __webpack_require__("Zlw4"); +var _reactRedux = __webpack_require__("/MKj"); var _decoreText = __webpack_require__("j5h9"); @@ -15288,10 +15293,10 @@ var DataShareConsentContent = function DataShareConsentContent() { var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo.profile; }), - isFirstConnection = _useAppSelector.isFirstConnection; + isFirstConnection = _useSelector.isFirstConnection; return /*#__PURE__*/_react.default.createElement("div", { className: "dataShare-content-root" @@ -15737,12 +15742,12 @@ var _I18n = __webpack_require__("buk/"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); +var _reactRedux = __webpack_require__("/MKj"); + var _reactRouterDom = __webpack_require__("SOjZ"); var _ecogesture = _interopRequireDefault(__webpack_require__("w4u3")); -var _hooks = __webpack_require__("Zlw4"); - __webpack_require__("qzRO"); 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); } @@ -15760,11 +15765,6 @@ var EcogestureSelection = function EcogestureSelection() { var client = (0, _cozyClient.useClient)(); var navigate = (0, _reactRouterDom.useNavigate)(); - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { - return state.ecolyo; - }), - profileEcogesture = _useAppSelector.profileEcogesture; - var _useState = (0, _react.useState)(true), _useState2 = (0, _slicedToArray2.default)(_useState, 2), isLoading = _useState2[0], @@ -15800,9 +15800,15 @@ var EcogestureSelection = function EcogestureSelection() { openEcogestureSelectionModal = _useState14[0], setOpenEcogestureSelectionModal = _useState14[1]; + var defineHeaderHeight = (0, _react.useCallback)(function (height) { + setHeaderHeight(height); + }, []); var ecogestureService = (0, _react.useMemo)(function () { return new _ecogesture.default(client); }, [client]); + var profileEcogesture = (0, _reactRedux.useSelector)(function (state) { + return state.ecolyo.profileEcogesture; + }); var getTitle = (0, _react.useCallback)(function () { if (indexEcogesture <= ecogestureList.length - 1 && ecogestureList[indexEcogesture]) { return ecogestureList[indexEcogesture].shortName; @@ -15925,6 +15931,14 @@ var EcogestureSelection = function EcogestureSelection() { }; }, [ecogestureService, profileEcogesture]); + if (isLoading) { + return /*#__PURE__*/_react.default.createElement(_Content.default, { + height: headerHeight + }, /*#__PURE__*/_react.default.createElement("div", { + className: "eg-selection-loader" + }, /*#__PURE__*/_react.default.createElement(_Loader.default, null))); + } + var renderEcogestureSelection = function renderEcogestureSelection() { if (indexEcogesture <= ecogestureList.length - 1) { return /*#__PURE__*/_react.default.createElement(_EcogestureSelectionDetail.default, { @@ -15949,21 +15963,19 @@ var EcogestureSelection = function EcogestureSelection() { return navigate('/ecogestures'); } }), /*#__PURE__*/_react.default.createElement(_Header.default, { - setHeaderHeight: setHeaderHeight, + setHeaderHeight: defineHeaderHeight, desktopTitleKey: 'common.title_ecogestures_choice', displayBackArrow: true }, /*#__PURE__*/_react.default.createElement("div", { className: "eg-selection-header" }, indexEcogesture <= ecogestureList.length - 1 ? "".concat(totalViewed + indexEcogesture + 1, "/").concat(totalAvailable) : '')), /*#__PURE__*/_react.default.createElement(_Content.default, { - heightOffset: headerHeight - }, isLoading && /*#__PURE__*/_react.default.createElement("div", { - className: "loaderContainer" - }, /*#__PURE__*/_react.default.createElement(_Loader.default, null)), !isLoading && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, renderEcogestureSelection(), openEcogestureSelectionModal && /*#__PURE__*/_react.default.createElement(_EcogestureSelectionModal.default, { + height: headerHeight + }, renderEcogestureSelection()), openEcogestureSelectionModal && /*#__PURE__*/_react.default.createElement(_EcogestureSelectionModal.default, { open: openEcogestureSelectionModal, handleCloseClick: function handleCloseClick() { return setOpenEcogestureSelectionModal(false); } - })))); + })); }; var _default = EcogestureSelection; @@ -16125,7 +16137,7 @@ var _lodash = __webpack_require__("LvDl"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _hooks = __webpack_require__("Zlw4"); +var _reactRedux = __webpack_require__("/MKj"); 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); } @@ -16146,10 +16158,10 @@ var ProfileTypeFormMultiChoice = function ProfileTypeFormMultiChoice(_ref) { var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo.profile; }), - isProfileTypeCompleted = _useAppSelector.isProfileTypeCompleted; + isProfileTypeCompleted = _useSelector.isProfileTypeCompleted; var _useState = (0, _react.useState)([]), _useState2 = (0, _slicedToArray2.default)(_useState, 2), @@ -16270,7 +16282,7 @@ var _profileType2 = __webpack_require__("D9qV"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _hooks = __webpack_require__("Zlw4"); +var _reactRedux = __webpack_require__("/MKj"); 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); } @@ -16291,10 +16303,10 @@ var ProfileTypeFormNumberSelection = function ProfileTypeFormNumberSelection(_re var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo.profile; }), - isProfileTypeCompleted = _useAppSelector.isProfileTypeCompleted; + isProfileTypeCompleted = _useSelector.isProfileTypeCompleted; var _useState = (0, _react.useState)(''), _useState2 = (0, _slicedToArray2.default)(_useState, 2), @@ -16788,7 +16800,7 @@ var _profileType2 = __webpack_require__("D9qV"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _hooks = __webpack_require__("Zlw4"); +var _reactRedux = __webpack_require__("/MKj"); 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); } @@ -16809,13 +16821,13 @@ var ProfileTypeFormSingleChoice = function ProfileTypeFormSingleChoice(_ref) { var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo; }), - _useAppSelector$profi = _useAppSelector.profile, - isProfileTypeCompleted = _useAppSelector$profi.isProfileTypeCompleted, - isProfileEcogestureCompleted = _useAppSelector$profi.isProfileEcogestureCompleted, - profileEcogesture = _useAppSelector.profileEcogesture; + _useSelector$profile = _useSelector.profile, + isProfileTypeCompleted = _useSelector$profile.isProfileTypeCompleted, + isProfileEcogestureCompleted = _useSelector$profile.isProfileEcogestureCompleted, + profileEcogesture = _useSelector.profileEcogesture; var _useState = (0, _react.useState)(''), _useState2 = (0, _slicedToArray2.default)(_useState, 2), @@ -16850,7 +16862,7 @@ var ProfileTypeFormSingleChoice = function ProfileTypeFormSingleChoice(_ref) { }, t("profile_type.".concat(_profileType2.ProfileTypeStepForm[step].toLowerCase(), ".question"))), answerType.choices.map(function (value, index) { var _classNames; - if (value === null) return null; + if (!value && value !== 0) return null; return /*#__PURE__*/_react.default.createElement("label", { key: index, className: (0, _classnames.default)((_classNames = {}, (0, _defineProperty2.default)(_classNames, 'radio_short', answerType.choices.length < 5), (0, _defineProperty2.default)(_classNames, 'radio_long', answerType.choices.length > 4), (0, _defineProperty2.default)(_classNames, 'answer-checked', answer === value), _classNames)) @@ -17168,17 +17180,24 @@ var _Button = _interopRequireDefault(__webpack_require__("FtsS")); var _I18n = __webpack_require__("buk/"); -var _react = _interopRequireDefault(__webpack_require__("q1tI")); +var _react = _interopRequireWildcard(__webpack_require__("q1tI")); var _reactRouterDom = __webpack_require__("SOjZ"); __webpack_require__("k45u"); +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 ExplorationError = function ExplorationError() { var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; var navigate = (0, _reactRouterDom.useNavigate)(); + var goBack = (0, _react.useCallback)(function () { + navigate(-1); + }, [navigate]); return /*#__PURE__*/_react.default.createElement("div", { className: "exploration-error-container" }, /*#__PURE__*/_react.default.createElement("div", { @@ -17187,9 +17206,7 @@ var ExplorationError = function ExplorationError() { className: "exploration-error-button" }, /*#__PURE__*/_react.default.createElement(_Button.default, { "aria-label": t('exploration.accessibility.button_go_back'), - onClick: function onClick() { - return navigate(-1); - }, + onClick: goBack, classes: { root: 'btn-secondary-negative', label: 'text-16-normal' @@ -17358,12 +17375,12 @@ var ProfileEcogestureFormService = /*#__PURE__*/function () { value: function getNextFormStep(step) { switch (step) { case _ecogestureForm.EcogestureStepForm.HEATING_TYPE: - return this.profileEcogesture.heating === _profileType.IndividualOrCollective.INDIVIDUAL ? _ecogestureForm.EcogestureStepForm.WARMING_FLUID : _ecogestureForm.EcogestureStepForm.HOT_WATER; + return this.profileEcogesture.heating === _profileType.IndividualOrCollective.INDIVIDUAL ? _ecogestureForm.EcogestureStepForm.WARMING_FLUID : _ecogestureForm.EcogestureStepForm.HOT_WATER_TYPE; case _ecogestureForm.EcogestureStepForm.WARMING_FLUID: - return _ecogestureForm.EcogestureStepForm.HOT_WATER; + return _ecogestureForm.EcogestureStepForm.HOT_WATER_TYPE; - case _ecogestureForm.EcogestureStepForm.HOT_WATER: + case _ecogestureForm.EcogestureStepForm.HOT_WATER_TYPE: return _ecogestureForm.EcogestureStepForm.EQUIPMENTS; case _ecogestureForm.EcogestureStepForm.EQUIPMENTS: @@ -17384,9 +17401,9 @@ var ProfileEcogestureFormService = /*#__PURE__*/function () { value: function getPreviousFormStep(step) { switch (step) { case _ecogestureForm.EcogestureStepForm.EQUIPMENTS: - return _ecogestureForm.EcogestureStepForm.HOT_WATER; + return _ecogestureForm.EcogestureStepForm.HOT_WATER_TYPE; - case _ecogestureForm.EcogestureStepForm.HOT_WATER: + case _ecogestureForm.EcogestureStepForm.HOT_WATER_TYPE: return this.profileEcogesture.heating === _profileType.IndividualOrCollective.INDIVIDUAL ? _ecogestureForm.EcogestureStepForm.WARMING_FLUID : _ecogestureForm.EcogestureStepForm.HEATING_TYPE; case _ecogestureForm.EcogestureStepForm.WARMING_FLUID: @@ -17410,10 +17427,10 @@ var ProfileEcogestureFormService = /*#__PURE__*/function () { return { type: _ecogestureForm.ProfileEcogestureAnswerType.SINGLE_CHOICE, attribute: 'warmingFluid', - choices: [_profileType.WarmingType.ELECTRICITY, _profileType.WarmingType.GAS, _profileType.WarmingType.WOOD, _profileType.WarmingType.FUEL, _profileType.WarmingType.OTHER] + choices: [_profileType.WarmingType.ELECTRICITY, _profileType.WarmingType.GAS, _profileType.WarmingType.WOOD, _profileType.WarmingType.FUEL] }; - case _ecogestureForm.EcogestureStepForm.HOT_WATER: + case _ecogestureForm.EcogestureStepForm.HOT_WATER_TYPE: return { type: _ecogestureForm.ProfileEcogestureAnswerType.SINGLE_CHOICE, attribute: 'hotWater', @@ -17476,39 +17493,25 @@ var initialState = { explorationHash: '', isFirstConnection: false, partnersIssueSeenDate: { - enedis: _luxon.DateTime.fromISO('0000-01-01T00:00:00.000Z', { - zone: 'utc' - }), - egl: _luxon.DateTime.fromISO('0000-01-01T00:00:00.000Z', { - zone: 'utc' - }), - grdf: _luxon.DateTime.fromISO('0000-01-01T00:00:00.000Z', { - zone: 'utc' - }) + enedis: _luxon.DateTime.fromISO('0000-01-01T00:00:00.000Z'), + egl: _luxon.DateTime.fromISO('0000-01-01T00:00:00.000Z'), + grdf: _luxon.DateTime.fromISO('0000-01-01T00:00:00.000Z') }, - lastConnectionDate: _luxon.DateTime.fromISO('0000-01-01T00:00:00.000Z', { - zone: 'utc' - }), - customPopupDate: _luxon.DateTime.fromISO('0000-01-01T00:00:00.000Z', { - zone: 'utc' - }), + lastConnectionDate: _luxon.DateTime.fromISO('0000-01-01T00:00:00.000Z'), + customPopupDate: _luxon.DateTime.fromISO('0000-01-01T00:00:00.000Z'), haveSeenLastAnalysis: true, sendAnalysisNotification: true, sendConsumptionAlert: false, waterDailyConsumptionLimit: 0, mailToken: '', - monthlyAnalysisDate: _luxon.DateTime.fromISO('0000-01-01T00:00:00.000Z', { - zone: 'utc' - }), + monthlyAnalysisDate: _luxon.DateTime.fromISO('0000-01-01T00:00:00.000Z'), isProfileTypeCompleted: false, isProfileEcogestureCompleted: false, onboarding: { isWelcomeSeen: true }, haveSeenEcogestureModal: false, - activateHalfHourDate: _luxon.DateTime.fromISO('0000-01-01T00:00:00.000Z', { - zone: 'utc' - }) + activateHalfHourDate: _luxon.DateTime.fromISO('0000-01-01T00:00:00.000Z') }; var profileReducer = function profileReducer() { @@ -17607,14 +17610,14 @@ var _userChallenge = __webpack_require__("dQx6"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); +var _reactRedux = __webpack_require__("/MKj"); + var _challenge = _interopRequireDefault(__webpack_require__("kdea")); var _quiz = _interopRequireDefault(__webpack_require__("CUhI")); var _challenge2 = __webpack_require__("F6Xr"); -var _hooks = __webpack_require__("Zlw4"); - __webpack_require__("mFBf"); 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); } @@ -17629,8 +17632,6 @@ var QuizQuestionContent = function QuizQuestionContent(_ref) { var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; - var client = (0, _cozyClient.useClient)(); - var dispatch = (0, _hooks.useAppDispatch)(); var questionIndexLocked = userChallenge.quiz.questions.findIndex(function (answer) { return answer.result == 0; }); @@ -17655,6 +17656,8 @@ var QuizQuestionContent = function QuizQuestionContent(_ref) { questionIndex = _useState8[0], setQuestionIndex = _useState8[1]; + var client = (0, _cozyClient.useClient)(); + var dispatch = (0, _reactRedux.useDispatch)(); var quizService = new _quiz.default(client); var challengeService = new _challenge.default(client); @@ -17795,14 +17798,14 @@ var _userChallenge = __webpack_require__("dQx6"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); +var _reactRedux = __webpack_require__("/MKj"); + var _reactRouterDom = __webpack_require__("SOjZ"); var _challenge = _interopRequireDefault(__webpack_require__("kdea")); var _challenge2 = __webpack_require__("F6Xr"); -var _hooks = __webpack_require__("Zlw4"); - __webpack_require__("Giwf"); 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); } @@ -17811,13 +17814,13 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && var QuizFinish = function QuizFinish(_ref) { var userChallenge = _ref.userChallenge; + var client = (0, _cozyClient.useClient)(); var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; - var client = (0, _cozyClient.useClient)(); var navigate = (0, _reactRouterDom.useNavigate)(); - var dispatch = (0, _hooks.useAppDispatch)(); + var dispatch = (0, _reactRedux.useDispatch)(); var challengeService = (0, _react.useMemo)(function () { return new _challenge.default(client); }, [client]); @@ -18998,7 +19001,7 @@ var result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WE 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.quiz-finish-container {\n padding: 1.5rem;\n box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.55);\n border-radius: 4px;\n transition: all 300ms ease;\n color: #ffffff;\n background: linear-gradient(180deg, #323339 0%, #25262b 100%);\n text-align: center;\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n.quiz-finish-container button.btn-secondary-negative {\n border-color: #e0e0e0;\n}\n.quiz-finish-container .button-start {\n margin-top: 3rem;\n}\n\n.score-final-title {\n font-weight: bold;\n font-size: 2rem;\n margin: 2rem 0 0.5rem;\n}\n\n.score-final {\n font-size: 2.2rem;\n font-weight: bold;\n margin-bottom: 2rem;\n}\n.score-final span {\n color: #61f0f2;\n}\n\n.score-label {\n font-size: 1.15rem;\n font-weight: bold;\n margin-bottom: 0.5rem;\n}\n\n.score-stars {\n font-size: 1.8rem;\n font-weight: bold;\n display: flex;\n justify-content: center;\n align-items: center;\n color: #61f0f2;\n}\n.score-stars .quiz-icon {\n margin-left: 0.5rem;\n}", ""]); +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.quiz-finish-container {\n padding: 1.5rem;\n box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.55);\n border-radius: 4px;\n transition: all 300ms ease;\n color: #ffffff;\n background: linear-gradient(180deg, #323339 0%, #25262b 100%);\n text-align: center;\n}\n.quiz-finish-container button.btn-secondary-negative {\n border-color: #e0e0e0;\n min-width: 15rem;\n}\n.quiz-finish-container .button-start {\n margin-top: 3rem;\n}\n\n.score-final-title {\n font-weight: bold;\n font-size: 2rem;\n margin: 2rem 0 0.5rem;\n}\n\n.score-final {\n font-size: 2.2rem;\n font-weight: bold;\n margin-bottom: 2rem;\n}\n.score-final span {\n color: #61f0f2;\n}\n\n.score-label {\n font-size: 1.15rem;\n font-weight: bold;\n margin-bottom: 0.5rem;\n}\n\n.score-stars {\n font-size: 1.8rem;\n font-weight: bold;\n display: flex;\n justify-content: center;\n align-items: center;\n color: #61f0f2;\n}\n.score-stars .quiz-icon {\n margin-left: 0.5rem;\n}", ""]); @@ -19156,14 +19159,14 @@ var _userChallenge = __webpack_require__("dQx6"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); +var _reactRedux = __webpack_require__("/MKj"); + var _challenge = _interopRequireDefault(__webpack_require__("kdea")); var _usageEvent2 = _interopRequireDefault(__webpack_require__("dECN")); var _challenge2 = __webpack_require__("F6Xr"); -var _hooks = __webpack_require__("Zlw4"); - var _utils = __webpack_require__("c+yx"); __webpack_require__("g+8n"); @@ -19174,13 +19177,12 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && var DuelUnlocked = function DuelUnlocked(_ref) { var userChallenge = _ref.userChallenge; + var client = (0, _cozyClient.useClient)(); + var dispatch = (0, _reactRedux.useDispatch)(); var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; - var client = (0, _cozyClient.useClient)(); - var dispatch = (0, _hooks.useAppDispatch)(); - var _useState = (0, _react.useState)(_default2.default), _useState2 = (0, _slicedToArray2.default)(_useState, 2), duelIcon = _useState2[0], @@ -20232,7 +20234,7 @@ var _userQuiz = __webpack_require__("Ush/"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _hooks = __webpack_require__("Zlw4"); +var _reactRedux = __webpack_require__("/MKj"); var _QuizBegin = _interopRequireDefault(__webpack_require__("lMfa")); @@ -20245,16 +20247,20 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio 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 QuizView = function QuizView() { - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { - return state.ecolyo.challenge; - }), - currentChallenge = _useAppSelector.currentChallenge; - var _useState = (0, _react.useState)(0), _useState2 = (0, _slicedToArray2.default)(_useState, 2), headerHeight = _useState2[0], setHeaderHeight = _useState2[1]; + var _useSelector = (0, _reactRedux.useSelector)(function (state) { + return state.ecolyo.challenge; + }), + currentChallenge = _useSelector.currentChallenge; + + var defineHeaderHeight = (0, _react.useCallback)(function (height) { + setHeaderHeight(height); + }, []); + var renderQuiz = function renderQuiz(challenge) { switch (challenge.quiz.state) { case _userQuiz.UserQuizState.UNLOCKED: @@ -20283,11 +20289,11 @@ var QuizView = function QuizView() { titleKey: 'common.title_quiz', displayBackArrow: true }), /*#__PURE__*/_react.default.createElement(_Header.default, { - setHeaderHeight: setHeaderHeight, + setHeaderHeight: defineHeaderHeight, desktopTitleKey: 'common.title_quiz', displayBackArrow: true }), /*#__PURE__*/_react.default.createElement(_Content.default, { - heightOffset: headerHeight + height: headerHeight }, currentChallenge && renderQuiz(currentChallenge))); }; @@ -20370,9 +20376,11 @@ var _screen = __webpack_require__("41Xj"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _global = __webpack_require__("b3rE"); +var _reactRedux = __webpack_require__("/MKj"); + +var _global = __webpack_require__("c4IZ"); -var _hooks = __webpack_require__("Zlw4"); +var _modal = __webpack_require__("oKH6"); __webpack_require__("Tg1I"); @@ -20382,17 +20390,23 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && var Content = function Content(_ref) { var children = _ref.children, - _ref$heightOffset = _ref.heightOffset, - heightOffset = _ref$heightOffset === void 0 ? 0 : _ref$heightOffset; - var dispatch = (0, _hooks.useAppDispatch)(); + _ref$height = _ref.height, + height = _ref$height === void 0 ? 0 : _ref$height, + _ref$background = _ref.background, + background = _ref$background === void 0 ? 'inherit' : _ref$background; + var dispatch = (0, _reactRedux.useDispatch)(); - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { - return state.ecolyo.global; + var _useSelector = (0, _reactRedux.useSelector)(function (state) { + return state.ecolyo; }), - screenType = _useAppSelector.screenType; + screenType = _useSelector.global.screenType, + isFeedbacksOpen = _useSelector.modal.isFeedbacksOpen; var cozyBarHeight = 48; - var cozyNavHeight = 56; // Set listeners for scroll + var cozyNavHeight = 56; + var handleFeedbackModalClose = (0, _react.useCallback)(function () { + dispatch((0, _modal.openFeedbackModal)(false)); + }, [dispatch]); // Set listeners for scroll (0, _react.useEffect)(function () { window.scrollTo(0, 0); @@ -20414,12 +20428,16 @@ var Content = function Content(_ref) { window.removeEventListener('resize', handleResize); }; }, [dispatch]); - return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_FeedbackModal.default, null), /*#__PURE__*/_react.default.createElement("div", { + return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_FeedbackModal.default, { + open: isFeedbacksOpen, + handleCloseClick: handleFeedbackModalClose + }), /*#__PURE__*/_react.default.createElement("div", { className: 'content-view', style: { - marginTop: heightOffset, + marginTop: height, paddingBottom: 0, - minHeight: screenType !== _screen.ScreenType.DESKTOP ? "calc(100vh - ".concat(heightOffset, "px - ").concat(cozyBarHeight, "px - ").concat(cozyNavHeight, "px - env(safe-area-inset-top) - env(safe-area-inset-bottom) - env(safe-area-inset-bottom))") : "unset" + minHeight: screenType !== _screen.ScreenType.DESKTOP ? "calc(100vh - ".concat(height, "px - ").concat(cozyBarHeight, "px - ").concat(cozyNavHeight, "px - env(safe-area-inset-top) - env(safe-area-inset-bottom) - env(safe-area-inset-bottom))") : "unset", + background: background } }, children)); }; @@ -21522,41 +21540,6 @@ var DuelService = /*#__PURE__*/function () { return endUserDuel; }() - /** - * Return duel with updated state to UserDuelState.UNLOCKED - * @param {UserDuel} userDuel - userDuel to reset - * @returns {UserDuel} - */ - - }, { - key: "resetUserDuel", - value: function () { - var _resetUserDuel = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(userDuel) { - return _regenerator.default.wrap(function _callee10$(_context10) { - while (1) { - switch (_context10.prev = _context10.next) { - case 0: - return _context10.abrupt("return", _objectSpread(_objectSpread({}, userDuel), {}, { - startDate: null, - state: _userDuel.UserDuelState.UNLOCKED, - threshold: 0, - userConsumption: 0 - })); - - case 1: - case "end": - return _context10.stop(); - } - } - }, _callee10); - })); - - function resetUserDuel(_x12) { - return _resetUserDuel.apply(this, arguments); - } - - return resetUserDuel; - }() /** * Return duel created from duel entity * @param {DuelEntity} duel - userDuel to update @@ -21679,7 +21662,7 @@ var _userExploration = __webpack_require__("/rev"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _hooks = __webpack_require__("Zlw4"); +var _reactRedux = __webpack_require__("/MKj"); var _ExplorationError = _interopRequireDefault(__webpack_require__("PoS9")); @@ -21692,16 +21675,20 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio 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 ExplorationView = function ExplorationView() { - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { - return state.ecolyo.challenge; - }), - currentChallenge = _useAppSelector.currentChallenge; - var _useState = (0, _react.useState)(0), _useState2 = (0, _slicedToArray2.default)(_useState, 2), headerHeight = _useState2[0], setHeaderHeight = _useState2[1]; + var _useSelector = (0, _reactRedux.useSelector)(function (state) { + return state.ecolyo.challenge; + }), + currentChallenge = _useSelector.currentChallenge; + + var defineHeaderHeight = (0, _react.useCallback)(function (height) { + setHeaderHeight(height); + }, []); + var renderExploration = function renderExploration(challenge) { switch (challenge.exploration.state) { case _userExploration.UserExplorationState.UNLOCKED: @@ -21725,11 +21712,11 @@ var ExplorationView = function ExplorationView() { titleKey: 'common.title_exploration', displayBackArrow: true }), /*#__PURE__*/_react.default.createElement(_Header.default, { - setHeaderHeight: setHeaderHeight, + setHeaderHeight: defineHeaderHeight, desktopTitleKey: 'common.title_exploration', displayBackArrow: true }), /*#__PURE__*/_react.default.createElement(_Content.default, { - heightOffset: headerHeight + height: headerHeight }, currentChallenge && renderExploration(currentChallenge))); }; @@ -22505,7 +22492,7 @@ var _profileType2 = __webpack_require__("D9qV"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _hooks = __webpack_require__("Zlw4"); +var _reactRedux = __webpack_require__("/MKj"); 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); } @@ -22526,10 +22513,10 @@ var ProfileTypeFormNumber = function ProfileTypeFormNumber(_ref) { var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo.profile; }), - isProfileTypeCompleted = _useAppSelector.isProfileTypeCompleted; + isProfileTypeCompleted = _useSelector.isProfileTypeCompleted; var _useState = (0, _react.useState)(''), _useState2 = (0, _slicedToArray2.default)(_useState, 2), @@ -22586,6 +22573,235 @@ exports.push([module.i, "/** BLACK **/\n/** RED **/\n/** YELLOW **/\n/** ORANGE +/***/ }), + +/***/ "YNKm": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__("TqRt"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.globalReducer = void 0; + +var _toConsumableArray2 = _interopRequireDefault(__webpack_require__("RIqP")); + +var _defineProperty2 = _interopRequireDefault(__webpack_require__("lSNA")); + +var _fluid = __webpack_require__("5Wkc"); + +var _fluidSlug = __webpack_require__("jFN3"); + +var _screen = __webpack_require__("41Xj"); + +var _global = __webpack_require__("c4IZ"); + +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; } + +var initialState = { + screenType: _screen.ScreenType.MOBILE, + releaseNotes: { + show: false, + notes: [{ + title: '', + description: '' + }] + }, + challengeExplorationNotification: false, + challengeActionNotification: false, + challengeDuelNotification: false, + analysisNotification: false, + termsStatus: { + accepted: true, + versionType: 'init' + }, + fluidStatus: [{ + fluidType: _fluid.FluidType.ELECTRICITY, + status: _fluid.FluidState.KONNECTOR_NOT_FOUND, + maintenance: false, + firstDataDate: null, + lastDataDate: null, + connection: { + shouldLaunchKonnector: false, + isUpdating: false, + konnector: null, + account: null, + trigger: null, + triggerState: null, + konnectorConfig: { + name: '', + oauth: false, + slug: _fluidSlug.FluidSlugType.ELECTRICITY, + siteLink: '', + activation: '' + } + } + }, { + fluidType: _fluid.FluidType.WATER, + status: _fluid.FluidState.KONNECTOR_NOT_FOUND, + maintenance: false, + firstDataDate: null, + lastDataDate: null, + connection: { + shouldLaunchKonnector: false, + isUpdating: false, + konnector: null, + account: null, + trigger: null, + triggerState: null, + konnectorConfig: { + name: '', + oauth: false, + slug: _fluidSlug.FluidSlugType.WATER, + siteLink: '', + activation: '' + } + } + }, { + fluidType: _fluid.FluidType.GAS, + status: _fluid.FluidState.KONNECTOR_NOT_FOUND, + maintenance: false, + firstDataDate: null, + lastDataDate: null, + connection: { + shouldLaunchKonnector: false, + isUpdating: false, + konnector: null, + account: null, + trigger: null, + triggerState: null, + konnectorConfig: { + name: '', + oauth: false, + slug: _fluidSlug.FluidSlugType.GAS, + siteLink: '', + activation: '' + } + } + }], + fluidTypes: [], + partnersInfo: { + egl_failure: false, + enedis_failure: false, + grdf_failure: false, + notification_activated: false + }, + shouldRefreshConsent: false, + sgeConnect: { + currentStep: 0, + firstName: '', + lastName: '', + pdl: null, + address: '', + zipCode: null, + city: '', + dataConsent: false, + pdlConfirm: false, + shouldLaunchAccount: false + } +}; + +var getFluidTypesFromStatus = function getFluidTypesFromStatus(fluidStatus) { + var fluidTypes = []; + fluidStatus.forEach(function (fluid) { + if (fluid.status !== _fluid.FluidState.KONNECTOR_NOT_FOUND && fluid.status !== _fluid.FluidState.NOT_CONNECTED && fluid.status !== _fluid.FluidState.ERROR_LOGIN_FAILED || // Handle Login Error case for oauth konnectors + fluid.status === _fluid.FluidState.ERROR_LOGIN_FAILED && fluid.fluidType !== _fluid.FluidType.WATER) { + fluidTypes.push(fluid.fluidType); + } + }); + return fluidTypes.sort(); +}; + +var globalReducer = function globalReducer() { + var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState; + var action = arguments.length > 1 ? arguments[1] : undefined; + if (action.payload == undefined) return state; + + var updateState = function updateState(updates) { + return _objectSpread(_objectSpread({}, state), updates); + }; + + switch (action.type) { + case _global.CHANGE_SCREEN_TYPE: + return updateState({ + screenType: action.payload + }); + + case _global.TOGGLE_CHALLENGE_EXPLORATION_NOTIFICATION: + return updateState({ + challengeExplorationNotification: action.payload + }); + + case _global.TOGGLE_CHALLENGE_ACTION_NOTIFICATION: + return updateState({ + challengeActionNotification: action.payload + }); + + case _global.TOGGLE_CHALLENGE_DUEL_NOTIFICATION: + return updateState({ + challengeDuelNotification: action.payload + }); + + case _global.TOGGLE_ANALYSIS_NOTIFICATION: + return updateState({ + analysisNotification: action.payload + }); + + case _global.SET_FLUID_STATUS: + return updateState({ + fluidStatus: action.payload, + fluidTypes: getFluidTypesFromStatus(action.payload) + }); + + case _global.UPDATE_TERMS_VALIDATION: + return updateState({ + termsStatus: action.payload + }); + + case _global.SHOW_RELEASE_NOTES: + return updateState({ + releaseNotes: action.payload + }); + + case _global.SET_PARTNERS_INFO: + return updateState({ + partnersInfo: action.payload + }); + + case _global.SET_SHOULD_REFRESH_CONSENT: + return updateState({ + shouldRefreshConsent: action.payload + }); + + case _global.UPDATE_FLUID_CONNECTION: + var updatedFluidStatus = (0, _toConsumableArray2.default)(state.fluidStatus); + var fluidType = action.payload.fluidType; + var findIndex = state.fluidStatus.findIndex(function (fluid) { + return fluid.fluidType === fluidType; + }); + updatedFluidStatus[findIndex].connection = action.payload.fluidConnection; + return _objectSpread(_objectSpread({}, state), {}, { + fluidStatus: updatedFluidStatus + }); + + case _global.UPDATE_SGE_CONNECT: + return updateState({ + sgeConnect: action.payload + }); + + default: + return state; + } +}; + +exports.globalReducer = globalReducer; + /***/ }), /***/ "YmT2": @@ -22919,9 +23135,9 @@ var _luxon = __webpack_require__("ExVU"); var _react = _interopRequireDefault(__webpack_require__("q1tI")); -var _dateChart = _interopRequireDefault(__webpack_require__("Ty7+")); +var _reactRedux = __webpack_require__("/MKj"); -var _hooks = __webpack_require__("Zlw4"); +var _dateChart = _interopRequireDefault(__webpack_require__("Ty7+")); function TextAxis(_ref) { var index = _ref.index, @@ -23056,10 +23272,10 @@ var AxisBottom = function AxisBottom(_ref2) { _ref2$isDuel = _ref2.isDuel, isDuel = _ref2$isDuel === void 0 ? false : _ref2$isDuel; - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo.chart; }), - selectedDate = _useAppSelector.selectedDate; + selectedDate = _useSelector.selectedDate; var dashArray = "".concat(height / 30, " ").concat(height / 30); var dateChartService = new _dateChart.default(); @@ -23192,29 +23408,6 @@ if(false) {} /***/ }), -/***/ "Zlw4": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.useAppSelector = exports.useAppDispatch = void 0; - -var _reactRedux = __webpack_require__("/MKj"); - -// Typed hooks -// https://redux.js.org/tutorials/typescript-quick-start#define-typed-hooks -var useAppDispatch = _reactRedux.useDispatch; // TODO maybe use AppEcolyoStore - -exports.useAppDispatch = useAppDispatch; -var useAppSelector = _reactRedux.useSelector; -exports.useAppSelector = useAppSelector; - -/***/ }), - /***/ "Zmlh": /***/ (function(module, exports, __webpack_require__) { @@ -23544,31 +23737,23 @@ var _userExploration = __webpack_require__("/rev"); var _react = _interopRequireDefault(__webpack_require__("q1tI")); -var _hooks = __webpack_require__("Zlw4"); - -var _modal = __webpack_require__("oKH6"); - __webpack_require__("K//6"); -// what is the type ? -var FeedbackModal = function FeedbackModal() { +var FeedbackModal = function FeedbackModal(_ref) { + var open = _ref.open, + handleCloseClick = _ref.handleCloseClick; + var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; var client = (0, _cozyClient.useClient)(); - var dispatch = (0, _hooks.useAppDispatch)(); - - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { - return state.ecolyo.modal; - }), - isFeedbacksOpen = _useAppSelector.isFeedbacksOpen; var _useExploration = (0, _useExploration3.default)(), _useExploration2 = (0, _slicedToArray2.default)(_useExploration, 2), setValidExploration = _useExploration2[1]; var closeModal = function closeModal() { - dispatch((0, _modal.openFeedbackModal)(false)); + handleCloseClick(); }; var goToSAU = function goToSAU() { @@ -23577,10 +23762,11 @@ var FeedbackModal = function FeedbackModal() { }; return /*#__PURE__*/_react.default.createElement(_Dialog.default, { - open: isFeedbacksOpen, - onClose: function onClose() { - return closeModal(); + open: open, + onClose: function onClose(event, reason) { + event && reason !== 'backdropClick' && closeModal(); }, + disableEscapeKeyDown: true, "aria-labelledby": 'accessibility-title', classes: { root: 'modal-root', @@ -24159,221 +24345,6 @@ var result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WE /***/ }), -/***/ "b3rE": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__("TqRt"); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.updateTermsStatus = exports.updateSgeStore = exports.updateFluidConnection = exports.toggleChallengeExplorationNotification = exports.toggleChallengeDuelNotification = exports.toggleChallengeActionNotification = exports.toggleAnalysisNotification = exports.showReleaseNotes = exports.setShouldRefreshConsent = exports.setPartnersInfo = exports.setFluidStatus = exports.globalSlice = exports.changeScreenType = void 0; - -var _toConsumableArray2 = _interopRequireDefault(__webpack_require__("RIqP")); - -var _toolkit = __webpack_require__("i7Pf"); - -var _fluid = __webpack_require__("5Wkc"); - -var _fluidSlug = __webpack_require__("jFN3"); - -var _screen = __webpack_require__("41Xj"); - -var initialState = { - screenType: _screen.ScreenType.MOBILE, - releaseNotes: { - show: false, - notes: [{ - title: '', - description: '' - }] - }, - challengeExplorationNotification: false, - challengeActionNotification: false, - challengeDuelNotification: false, - analysisNotification: false, - termsStatus: { - accepted: true, - versionType: 'init' - }, - fluidStatus: [{ - fluidType: _fluid.FluidType.ELECTRICITY, - status: _fluid.FluidState.KONNECTOR_NOT_FOUND, - maintenance: false, - firstDataDate: null, - lastDataDate: null, - connection: { - shouldLaunchKonnector: false, - isUpdating: false, - konnector: null, - account: null, - trigger: null, - triggerState: null, - konnectorConfig: { - name: '', - oauth: false, - slug: _fluidSlug.FluidSlugType.ELECTRICITY, - siteLink: '', - activation: '' - } - } - }, { - fluidType: _fluid.FluidType.WATER, - status: _fluid.FluidState.KONNECTOR_NOT_FOUND, - maintenance: false, - firstDataDate: null, - lastDataDate: null, - connection: { - shouldLaunchKonnector: false, - isUpdating: false, - konnector: null, - account: null, - trigger: null, - triggerState: null, - konnectorConfig: { - name: '', - oauth: false, - slug: _fluidSlug.FluidSlugType.WATER, - siteLink: '', - activation: '' - } - } - }, { - fluidType: _fluid.FluidType.GAS, - status: _fluid.FluidState.KONNECTOR_NOT_FOUND, - maintenance: false, - firstDataDate: null, - lastDataDate: null, - connection: { - shouldLaunchKonnector: false, - isUpdating: false, - konnector: null, - account: null, - trigger: null, - triggerState: null, - konnectorConfig: { - name: '', - oauth: false, - slug: _fluidSlug.FluidSlugType.GAS, - siteLink: '', - activation: '' - } - } - }], - fluidTypes: [], - partnersInfo: { - egl_failure: false, - enedis_failure: false, - grdf_failure: false, - notification_activated: false - }, - shouldRefreshConsent: false, - sgeConnect: { - currentStep: 0, - firstName: '', - lastName: '', - pdl: null, - address: '', - zipCode: null, - city: '', - dataConsent: false, - pdlConfirm: false, - shouldLaunchAccount: false - } -}; - -var getFluidTypesFromStatus = function getFluidTypesFromStatus(fluidStatus) { - var fluidTypes = []; - fluidStatus.forEach(function (fluid) { - if (fluid.status !== _fluid.FluidState.KONNECTOR_NOT_FOUND && fluid.status !== _fluid.FluidState.NOT_CONNECTED && fluid.status !== _fluid.FluidState.ERROR_LOGIN_FAILED || // Handle Login Error case for oauth konnectors - fluid.status === _fluid.FluidState.ERROR_LOGIN_FAILED && fluid.fluidType !== _fluid.FluidType.WATER) { - fluidTypes.push(fluid.fluidType); - } - }); - return fluidTypes.sort(); -}; - -var globalSlice = (0, _toolkit.createSlice)({ - name: 'global', - initialState: initialState, - reducers: { - changeScreenType: function changeScreenType(state, action) { - state.screenType = action.payload; - }, - toggleChallengeExplorationNotification: function toggleChallengeExplorationNotification(state, action) { - state.challengeExplorationNotification = action.payload; - }, - toggleChallengeActionNotification: function toggleChallengeActionNotification(state, action) { - state.challengeActionNotification = action.payload; - }, - toggleChallengeDuelNotification: function toggleChallengeDuelNotification(state, action) { - state.challengeDuelNotification = action.payload; - }, - toggleAnalysisNotification: function toggleAnalysisNotification(state, action) { - state.analysisNotification = action.payload; - }, - setFluidStatus: function setFluidStatus(state, action) { - state.fluidStatus = action.payload; - state.fluidTypes = getFluidTypesFromStatus(action.payload); - }, - updateTermsStatus: function updateTermsStatus(state, action) { - state.termsStatus = action.payload; - }, - showReleaseNotes: function showReleaseNotes(state, action) { - state.releaseNotes = action.payload; - }, - setPartnersInfo: function setPartnersInfo(state, action) { - state.partnersInfo = action.payload; - }, - setShouldRefreshConsent: function setShouldRefreshConsent(state, action) { - state.shouldRefreshConsent = action.payload; - }, - updateFluidConnection: function updateFluidConnection(state, action) { - var updatedFluidStatus = (0, _toConsumableArray2.default)(state.fluidStatus); - var fluidType = action.payload.fluidType; - var findIndex = state.fluidStatus.findIndex(function (fluid) { - return fluid.fluidType === fluidType; - }); - updatedFluidStatus[findIndex].connection = action.payload.fluidConnection; - state.fluidStatus = updatedFluidStatus; - }, - updateSgeStore: function updateSgeStore(state, action) { - state.sgeConnect = action.payload; - } - } -}); -exports.globalSlice = globalSlice; -var _globalSlice$actions = globalSlice.actions, - changeScreenType = _globalSlice$actions.changeScreenType, - setFluidStatus = _globalSlice$actions.setFluidStatus, - setPartnersInfo = _globalSlice$actions.setPartnersInfo, - updateSgeStore = _globalSlice$actions.updateSgeStore, - setShouldRefreshConsent = _globalSlice$actions.setShouldRefreshConsent, - showReleaseNotes = _globalSlice$actions.showReleaseNotes, - toggleAnalysisNotification = _globalSlice$actions.toggleAnalysisNotification, - toggleChallengeActionNotification = _globalSlice$actions.toggleChallengeActionNotification, - toggleChallengeDuelNotification = _globalSlice$actions.toggleChallengeDuelNotification, - toggleChallengeExplorationNotification = _globalSlice$actions.toggleChallengeExplorationNotification, - updateFluidConnection = _globalSlice$actions.updateFluidConnection, - updateTermsStatus = _globalSlice$actions.updateTermsStatus; -exports.updateTermsStatus = updateTermsStatus; -exports.updateFluidConnection = updateFluidConnection; -exports.toggleChallengeExplorationNotification = toggleChallengeExplorationNotification; -exports.toggleChallengeDuelNotification = toggleChallengeDuelNotification; -exports.toggleChallengeActionNotification = toggleChallengeActionNotification; -exports.toggleAnalysisNotification = toggleAnalysisNotification; -exports.showReleaseNotes = showReleaseNotes; -exports.setShouldRefreshConsent = setShouldRefreshConsent; -exports.updateSgeStore = updateSgeStore; -exports.setPartnersInfo = setPartnersInfo; -exports.setFluidStatus = setFluidStatus; -exports.changeScreenType = changeScreenType; - -/***/ }), - /***/ "bCb1": /***/ (function(module, exports, __webpack_require__) { @@ -24409,7 +24380,7 @@ var result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WE 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.modal-overlay {\n width: 100%;\n height: 100%;\n}\n\n.cardUnlocked {\n background: linear-gradient(180deg, #323339 0%, #25262b 100%);\n filter: drop-shadow(0px 4px 16px rgba(0, 0, 0, 0.55));\n}\n.cardUnlocked button.btn-duel-active {\n padding: 1.2rem 1.5rem;\n}\n@media all and (max-height: 700px) {\n .cardUnlocked .challengeIcon {\n width: 65%;\n margin: auto;\n }\n}", ""]); +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.modal-overlay {\n width: 100%;\n height: 100%;\n}\n\n.cardUnlocked {\n background: linear-gradient(180deg, #323339 0%, #25262b 100%);\n filter: drop-shadow(0px 4px 16px rgba(0, 0, 0, 0.55));\n}\n.cardUnlocked button.btn-duel-active {\n margin: auto;\n padding: 1.2rem 1.5rem;\n}\n@media all and (max-height: 700px) {\n .cardUnlocked .challengeIcon {\n width: 65%;\n margin: auto;\n }\n}", ""]); @@ -24918,6 +24889,146 @@ exports.getTodayDate = getTodayDate; /***/ }), +/***/ "c4IZ": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.UPDATE_TERMS_VALIDATION = exports.UPDATE_SGE_CONNECT = exports.UPDATE_FLUID_CONNECTION = exports.TOGGLE_CHALLENGE_EXPLORATION_NOTIFICATION = exports.TOGGLE_CHALLENGE_DUEL_NOTIFICATION = exports.TOGGLE_CHALLENGE_ACTION_NOTIFICATION = exports.TOGGLE_ANALYSIS_NOTIFICATION = exports.SHOW_RELEASE_NOTES = exports.SET_SHOULD_REFRESH_CONSENT = exports.SET_PARTNERS_INFO = exports.SET_FLUID_STATUS = exports.CHANGE_SCREEN_TYPE = void 0; +exports.changeScreenType = changeScreenType; +exports.setFluidStatus = setFluidStatus; +exports.setPartnersInfo = setPartnersInfo; +exports.setShouldRefreshConsent = setShouldRefreshConsent; +exports.showReleaseNotes = showReleaseNotes; +exports.toggleAnalysisNotification = toggleAnalysisNotification; +exports.toggleChallengeActionNotification = toggleChallengeActionNotification; +exports.toggleChallengeDuelNotification = toggleChallengeDuelNotification; +exports.toggleChallengeExplorationNotification = toggleChallengeExplorationNotification; +exports.updateSgeStore = updateSgeStore; +exports.updateTermValidation = updateTermValidation; +exports.updatedFluidConnection = updatedFluidConnection; +var CHANGE_SCREEN_TYPE = 'CHANGE_SCREEN_TYPE'; +exports.CHANGE_SCREEN_TYPE = CHANGE_SCREEN_TYPE; +var SET_FLUID_STATUS = 'SET_FLUID_STATUS'; +exports.SET_FLUID_STATUS = SET_FLUID_STATUS; +var SET_PARTNERS_INFO = 'SET_PARTNERS_INFO'; +exports.SET_PARTNERS_INFO = SET_PARTNERS_INFO; +var SET_SHOULD_REFRESH_CONSENT = 'SET_SHOULD_REFRESH_CONSENT'; +exports.SET_SHOULD_REFRESH_CONSENT = SET_SHOULD_REFRESH_CONSENT; +var SHOW_RELEASE_NOTES = 'SHOW_RELEASE_NOTES'; +exports.SHOW_RELEASE_NOTES = SHOW_RELEASE_NOTES; +var TOGGLE_ANALYSIS_NOTIFICATION = 'TOGGLE_ANALYSIS_NOTIFICATION'; +exports.TOGGLE_ANALYSIS_NOTIFICATION = TOGGLE_ANALYSIS_NOTIFICATION; +var TOGGLE_CHALLENGE_ACTION_NOTIFICATION = 'TOGGLE_CHALLENGE_ACTION_NOTIFICATION'; +exports.TOGGLE_CHALLENGE_ACTION_NOTIFICATION = TOGGLE_CHALLENGE_ACTION_NOTIFICATION; +var TOGGLE_CHALLENGE_DUEL_NOTIFICATION = 'TOGGLE_CHALLENGE_DUEL_NOTIFICATION'; +exports.TOGGLE_CHALLENGE_DUEL_NOTIFICATION = TOGGLE_CHALLENGE_DUEL_NOTIFICATION; +var TOGGLE_CHALLENGE_EXPLORATION_NOTIFICATION = 'TOGGLE_CHALLENGE_EXPLORATION_NOTIFICATION'; +exports.TOGGLE_CHALLENGE_EXPLORATION_NOTIFICATION = TOGGLE_CHALLENGE_EXPLORATION_NOTIFICATION; +var UPDATE_FLUID_CONNECTION = 'UPDATE_FLUID_CONNECTION'; +exports.UPDATE_FLUID_CONNECTION = UPDATE_FLUID_CONNECTION; +var UPDATE_SGE_CONNECT = 'UPDATE_SGE_CONNECT'; +exports.UPDATE_SGE_CONNECT = UPDATE_SGE_CONNECT; +var UPDATE_TERMS_VALIDATION = 'UPDATE_TERMS_VALIDATION'; +exports.UPDATE_TERMS_VALIDATION = UPDATE_TERMS_VALIDATION; + +function changeScreenType(screenType) { + return { + type: CHANGE_SCREEN_TYPE, + payload: screenType + }; +} + +function showReleaseNotes(show, notes, redirectLink) { + return { + type: SHOW_RELEASE_NOTES, + payload: { + show: show, + notes: notes, + redirectLink: redirectLink + } + }; +} + +function toggleChallengeExplorationNotification(notification) { + return { + type: TOGGLE_CHALLENGE_EXPLORATION_NOTIFICATION, + payload: notification + }; +} + +function toggleChallengeActionNotification(notification) { + return { + type: TOGGLE_CHALLENGE_ACTION_NOTIFICATION, + payload: notification + }; +} + +function toggleChallengeDuelNotification(notification) { + return { + type: TOGGLE_CHALLENGE_DUEL_NOTIFICATION, + payload: notification + }; +} + +function toggleAnalysisNotification(notification) { + return { + type: TOGGLE_ANALYSIS_NOTIFICATION, + payload: notification + }; +} + +function setFluidStatus(fluidStatus) { + return { + type: SET_FLUID_STATUS, + payload: fluidStatus + }; +} + +function updatedFluidConnection(fluidType, fluidConnection) { + return { + type: UPDATE_FLUID_CONNECTION, + payload: { + fluidType: fluidType, + fluidConnection: fluidConnection + } + }; +} + +function updateTermValidation(termsStatus) { + return { + type: UPDATE_TERMS_VALIDATION, + payload: termsStatus + }; +} + +function setPartnersInfo(partnersInfo) { + return { + type: SET_PARTNERS_INFO, + payload: partnersInfo + }; +} + +function setShouldRefreshConsent(shouldRefreshConsent) { + return { + type: SET_SHOULD_REFRESH_CONSENT, + payload: shouldRefreshConsent + }; +} + +function updateSgeStore(sgeStore) { + return { + type: UPDATE_SGE_CONNECT, + payload: sgeStore + }; +} + +/***/ }), + /***/ "cKQ8": /***/ (function(module, exports, __webpack_require__) { @@ -25064,6 +25175,10 @@ var _slicedToArray2 = _interopRequireDefault(__webpack_require__("J4zp")); var _Content = _interopRequireDefault(__webpack_require__("VOVi")); +var _EcogestureFormEquipment = _interopRequireDefault(__webpack_require__("06WC")); + +var _EcogestureFormSingleChoice = _interopRequireDefault(__webpack_require__("45jH")); + var _EcogestureLaunchFormModal = _interopRequireDefault(__webpack_require__("Sft7")); var _CozyBar = _interopRequireDefault(__webpack_require__("CJMG")); @@ -25084,28 +25199,23 @@ var _reactRouterDom = __webpack_require__("SOjZ"); var _profileEcogestureForm = _interopRequireDefault(__webpack_require__("QCFg")); -var _hooks = __webpack_require__("Zlw4"); - var _profile = __webpack_require__("jPH6"); var _profileEcogesture2 = __webpack_require__("Zmlh"); -var _EcogestureFormEquipment = _interopRequireDefault(__webpack_require__("06WC")); - -var _EcogestureFormSingleChoice = _interopRequireDefault(__webpack_require__("45jH")); - 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 EcogestureFormView = function EcogestureFormView() { - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var dispatch = (0, _reactRedux.useDispatch)(); + + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo; }), - isProfileTypeCompleted = _useAppSelector.profile.isProfileTypeCompleted, - profileEcogesture = _useAppSelector.profileEcogesture; + isProfileTypeCompleted = _useSelector.profile.isProfileTypeCompleted, + profileEcogesture = _useSelector.profileEcogesture; - var dispatch = (0, _reactRedux.useDispatch)(); var navigate = (0, _reactRouterDom.useNavigate)(); var _useState = (0, _react.useState)(0), @@ -25113,6 +25223,10 @@ var EcogestureFormView = function EcogestureFormView() { headerHeight = _useState2[0], setHeaderHeight = _useState2[1]; + var defineHeaderHeight = function defineHeaderHeight(height) { + setHeaderHeight(height); + }; + var shouldOpenModal = new URLSearchParams((0, _reactRouterDom.useLocation)().search).get('modal'); var _useState3 = (0, _react.useState)(_ecogestureForm.EcogestureStepForm.HEATING_TYPE), @@ -25191,16 +25305,21 @@ var EcogestureFormView = function EcogestureFormView() { handleEndForm(); } }, [handleEndForm, step]); + + if (isLoading) { + return /*#__PURE__*/_react.default.createElement(_Content.default, { + height: headerHeight + }, /*#__PURE__*/_react.default.createElement(_Loader.default, null)); + } + return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_CozyBar.default, { titleKey: 'common.title_ecogestures' }), /*#__PURE__*/_react.default.createElement(_Header.default, { - setHeaderHeight: setHeaderHeight, + setHeaderHeight: defineHeaderHeight, desktopTitleKey: 'common.title_ecogestures' }), /*#__PURE__*/_react.default.createElement(_Content.default, { - heightOffset: headerHeight - }, isLoading && /*#__PURE__*/_react.default.createElement("div", { - className: "loaderContainer" - }, /*#__PURE__*/_react.default.createElement(_Loader.default, null)), isProfileTypeCompleted ? /*#__PURE__*/_react.default.createElement(_ProfileTypeView.default, null) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, step === _ecogestureForm.EcogestureStepForm.EQUIPMENTS && /*#__PURE__*/_react.default.createElement(_EcogestureFormEquipment.default, { + height: headerHeight + }, isProfileTypeCompleted ? /*#__PURE__*/_react.default.createElement(_ProfileTypeView.default, null) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, step === _ecogestureForm.EcogestureStepForm.EQUIPMENTS && /*#__PURE__*/_react.default.createElement(_EcogestureFormEquipment.default, { step: _ecogestureForm.EcogestureStepForm.EQUIPMENTS, currentProfileEcogesture: currentProfileEcogesture, setNextStepEcogestureForm: setNextStep, @@ -25716,7 +25835,6 @@ exports.UserChallengeUpdateFlag = UserChallengeUpdateFlag; UserChallengeUpdateFlag[UserChallengeUpdateFlag["DUEL_CONSUMPTION"] = 13] = "DUEL_CONSUMPTION"; UserChallengeUpdateFlag[UserChallengeUpdateFlag["DUEL_WIN"] = 14] = "DUEL_WIN"; UserChallengeUpdateFlag[UserChallengeUpdateFlag["DUEL_LOSS"] = 15] = "DUEL_LOSS"; - UserChallengeUpdateFlag[UserChallengeUpdateFlag["DUEL_RESET"] = 16] = "DUEL_RESET"; UserChallengeUpdateFlag[UserChallengeUpdateFlag["QUIZ"] = 20] = "QUIZ"; UserChallengeUpdateFlag[UserChallengeUpdateFlag["QUIZ_START"] = 21] = "QUIZ_START"; UserChallengeUpdateFlag[UserChallengeUpdateFlag["QUIZ_DONE"] = 22] = "QUIZ_DONE"; @@ -25798,6 +25916,8 @@ var _luxon = __webpack_require__("ExVU"); var _react2 = _interopRequireWildcard(__webpack_require__("q1tI")); +var _reactRedux = __webpack_require__("/MKj"); + var _reactRouterDom = __webpack_require__("SOjZ"); var _profileType = _interopRequireDefault(__webpack_require__("7e12")); @@ -25806,8 +25926,6 @@ var _profileTypeEntity = _interopRequireDefault(__webpack_require__("aypK")); var _usageEvent2 = _interopRequireDefault(__webpack_require__("dECN")); -var _hooks = __webpack_require__("Zlw4"); - var _profile = __webpack_require__("jPH6"); var _profileType2 = __webpack_require__("ZI2v"); @@ -25822,16 +25940,16 @@ var ProfileTypeFinished = function ProfileTypeFinished(_ref) { var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; - var client = (0, _cozyClient.useClient)(); var location = (0, _reactRouterDom.useLocation)(); + var dispatch = (0, _reactRedux.useDispatch)(); var navigate = (0, _reactRouterDom.useNavigate)(); - var dispatch = (0, _hooks.useAppDispatch)(); + var client = (0, _cozyClient.useClient)(); - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo; }), - currentChallenge = _useAppSelector.challenge.currentChallenge, - profile = _useAppSelector.profile; + currentChallenge = _useSelector.challenge.currentChallenge, + profile = _useSelector.profile; var handleClick = function handleClick() { if ((location === null || location === void 0 ? void 0 : location.pathname) === '/ecogesture-form') { @@ -26044,7 +26162,7 @@ var result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WE 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.challengeSlider {\n position: relative;\n user-select: none;\n display: flex;\n flex: 1;\n flex-direction: column;\n align-items: center;\n padding: 0 2rem;\n}\n\n.challenge-container {\n position: relative;\n width: 100%;\n display: flex;\n flex: 1;\n align-items: center;\n transition: all 300ms ease;\n}\n\n.cardContent {\n margin: auto;\n cursor: pointer;\n}\n.cardContent.onGoing {\n padding-top: 2.5rem;\n}\n.cardContent .title {\n font-weight: 400;\n text-align: center;\n text-transform: uppercase;\n font-family: Lato, sans-serif;\n font-size: 1.2rem;\n margin-bottom: 0;\n}\n.cardContent .challengeTitle {\n display: block;\n font-weight: 700;\n text-align: center;\n font-family: Lato, sans-serif;\n color: #e0e0e0;\n font-size: 1.5rem;\n margin-top: 1rem;\n}\n.cardContent .challengeIcon {\n width: 100%;\n max-width: 180px;\n margin: auto;\n height: auto;\n text-align: center;\n display: block;\n}\n\n.sliderButtons {\n text-align: center;\n margin: auto;\n margin-top: 1.5rem;\n}\n@media all and (max-width: 1023px) {\n .sliderButtons {\n display: none;\n }\n}", ""]); +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.challengeSlider {\n position: relative;\n user-select: none;\n display: flex;\n flex: 1;\n flex-direction: column;\n align-items: center;\n padding: 0 2rem;\n}\n\n.challenge-container {\n position: relative;\n width: 100%;\n display: flex;\n flex: 1;\n align-items: center;\n transition: all 300ms ease;\n}\n\n.cardContent {\n margin: auto;\n cursor: pointer;\n}\n.cardContent .title {\n font-weight: 400;\n text-align: center;\n text-transform: uppercase;\n font-family: Lato, sans-serif;\n font-size: 1.2rem;\n margin-bottom: 0;\n}\n.cardContent .challengeTitle {\n display: block;\n font-weight: 700;\n text-align: center;\n font-family: Lato, sans-serif;\n color: #e0e0e0;\n font-size: 1.5rem;\n margin-top: 1rem;\n}\n.cardContent .challengeIcon {\n width: 100%;\n max-width: 180px;\n margin: auto;\n height: auto;\n text-align: center;\n display: block;\n}\n\n.sliderButtons {\n text-align: center;\n margin: auto;\n margin-top: 1.5rem;\n}\n@media all and (max-width: 1023px) {\n .sliderButtons {\n display: none;\n }\n}", ""]); @@ -26637,9 +26755,9 @@ var _screen = __webpack_require__("41Xj"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _reactRouterDom = __webpack_require__("SOjZ"); +var _reactRedux = __webpack_require__("/MKj"); -var _hooks = __webpack_require__("Zlw4"); +var _reactRouterDom = __webpack_require__("SOjZ"); var _modal = __webpack_require__("oKH6"); @@ -26662,12 +26780,12 @@ var Header = function Header(_ref) { var navigate = (0, _reactRouterDom.useNavigate)(); var header = (0, _react.useRef)(null); - var dispatch = (0, _hooks.useAppDispatch)(); + var dispatch = (0, _reactRedux.useDispatch)(); - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo.global; }), - screenType = _useAppSelector.screenType; + screenType = _useSelector.screenType; var cozyBarHeight = 48; var handleClickBack = (0, _react.useCallback)(function () { @@ -26827,6 +26945,8 @@ var _userChallenge = __webpack_require__("dQx6"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); +var _reactRedux = __webpack_require__("/MKj"); + var _reactRouterDom = __webpack_require__("SOjZ"); var _challenge = _interopRequireDefault(__webpack_require__("kdea")); @@ -26835,9 +26955,7 @@ var _usageEvent2 = _interopRequireDefault(__webpack_require__("dECN")); var _challenge2 = __webpack_require__("F6Xr"); -var _global = __webpack_require__("b3rE"); - -var _hooks = __webpack_require__("Zlw4"); +var _global = __webpack_require__("c4IZ"); __webpack_require__("kVKB"); @@ -26852,7 +26970,7 @@ var ActionDone = function ActionDone(_ref) { t = _useI18n.t; var client = (0, _cozyClient.useClient)(); - var dispatch = (0, _hooks.useAppDispatch)(); + var dispatch = (0, _reactRedux.useDispatch)(); var navigate = (0, _reactRouterDom.useNavigate)(); var handleEndAction = (0, _react.useCallback)( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { var challengeService, updatedChallenge; @@ -27446,7 +27564,7 @@ var result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WE 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.duel-unlocked-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 0 1.25rem;\n}\n\n.duel-icon {\n margin-top: 2.5rem;\n}\n\n.duel-title {\n color: #a0a0a0;\n}\n\n.duel-description {\n color: #61f0f2;\n margin-top: 0.75rem;\n text-align: center;\n}\n\n.duel-average-info {\n color: #e0e0e0;\n margin-top: 2.5rem;\n text-align: center;\n}\n\n.button-start {\n margin-top: 1rem;\n width: 100%;\n max-width: 175px;\n}\n\nbutton.btn-secondary-negative {\n margin: 0;\n padding: 0.5rem;\n}", ""]); +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.duel-unlocked-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 0 1.25rem;\n}\n\n.duel-icon {\n margin-top: 2.5rem;\n}\n\n.duel-title {\n color: #a0a0a0;\n}\n\n.duel-description {\n color: #61f0f2;\n margin-top: 0.75rem;\n text-align: center;\n}\n\n.duel-average-info {\n color: #e0e0e0;\n margin-top: 2.5rem;\n text-align: center;\n}\n\n.button-start {\n margin-top: 1rem;\n}", ""]); @@ -27769,12 +27887,12 @@ var _usageEvent = __webpack_require__("/fHX"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); +var _reactRedux = __webpack_require__("/MKj"); + var _reactRouterDom = __webpack_require__("SOjZ"); var _usageEvent2 = _interopRequireDefault(__webpack_require__("dECN")); -var _hooks = __webpack_require__("Zlw4"); - __webpack_require__("eZUK"); 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); } @@ -27785,13 +27903,13 @@ var Navbar = function Navbar() { var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo.global; }), - challengeExplorationNotification = _useAppSelector.challengeExplorationNotification, - challengeActionNotification = _useAppSelector.challengeActionNotification, - challengeDuelNotification = _useAppSelector.challengeDuelNotification, - analysisNotification = _useAppSelector.analysisNotification; + challengeExplorationNotification = _useSelector.challengeExplorationNotification, + challengeActionNotification = _useSelector.challengeActionNotification, + challengeDuelNotification = _useSelector.challengeDuelNotification, + analysisNotification = _useSelector.analysisNotification; var _useLocation = (0, _reactRouterDom.useLocation)(), pathname = _useLocation.pathname; @@ -28444,7 +28562,7 @@ var _luxon = __webpack_require__("ExVU"); var _react = _interopRequireDefault(__webpack_require__("q1tI")); -var _hooks = __webpack_require__("Zlw4"); +var _reactRedux = __webpack_require__("/MKj"); var DuelBar = function DuelBar(_ref) { var userChallenge = _ref.userChallenge, @@ -28464,10 +28582,10 @@ var DuelBar = function DuelBar(_ref) { _ref$marginBottom = _ref.marginBottom, marginBottom = _ref$marginBottom === void 0 ? 50 : _ref$marginBottom; - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo.challenge; }), - currentDataload = _useAppSelector.currentDataload; + currentDataload = _useSelector.currentDataload; var dataload = finishedDataLoad ? finishedDataLoad : currentDataload; @@ -29015,7 +29133,7 @@ exports.EcogestureStepForm = EcogestureStepForm; (function (EcogestureStepForm) { EcogestureStepForm[EcogestureStepForm["HEATING_TYPE"] = 0] = "HEATING_TYPE"; EcogestureStepForm[EcogestureStepForm["WARMING_FLUID"] = 1] = "WARMING_FLUID"; - EcogestureStepForm[EcogestureStepForm["HOT_WATER"] = 2] = "HOT_WATER"; + EcogestureStepForm[EcogestureStepForm["HOT_WATER_TYPE"] = 2] = "HOT_WATER_TYPE"; EcogestureStepForm[EcogestureStepForm["EQUIPMENTS"] = 3] = "EQUIPMENTS"; EcogestureStepForm[EcogestureStepForm["END"] = 4] = "END"; })(EcogestureStepForm || (exports.EcogestureStepForm = EcogestureStepForm = {})); @@ -30266,12 +30384,12 @@ var ChallengeService = /*#__PURE__*/function () { explorationService = new _exploration.default(this._client); actionService = new _action.default(this._client); _context13.t0 = flag; - _context13.next = _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.CHALLENGE ? 11 : _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.DUEL_CONSUMPTION ? 11 : _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.DUEL_UNLOCK ? 13 : _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.DUEL_UPDATE_THRESHOLD ? 18 : _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.DUEL_START ? 23 : _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.DUEL_WIN ? 28 : _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.DUEL_LOSS ? 33 : _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.DUEL_RESET ? 38 : _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.QUIZ_START ? 43 : _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.QUIZ_DONE ? 48 : _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.QUIZ_UPDATE ? 54 : _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.QUIZ_RESET ? 56 : _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.EXPLORATION_START ? 61 : _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.EXPLORATION_UPDATE ? 66 : _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.EXPLORATION_NOTIFICATION ? 71 : _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.EXPLORATION_DONE ? 76 : _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.ACTION_START ? 79 : _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.ACTION_NOTIFICATION ? 83 : _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.ACTION_DONE ? 86 : 89; + _context13.next = _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.CHALLENGE ? 11 : _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.DUEL_CONSUMPTION ? 11 : _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.DUEL_UNLOCK ? 13 : _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.DUEL_UPDATE_THRESHOLD ? 18 : _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.DUEL_START ? 23 : _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.DUEL_WIN ? 28 : _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.DUEL_LOSS ? 33 : _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.QUIZ_START ? 38 : _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.QUIZ_DONE ? 43 : _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.QUIZ_UPDATE ? 49 : _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.QUIZ_RESET ? 51 : _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.EXPLORATION_START ? 56 : _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.EXPLORATION_UPDATE ? 61 : _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.EXPLORATION_NOTIFICATION ? 66 : _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.EXPLORATION_DONE ? 71 : _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.ACTION_START ? 74 : _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.ACTION_NOTIFICATION ? 78 : _context13.t0 === _userChallenge3.UserChallengeUpdateFlag.ACTION_DONE ? 81 : 84; break; case 11: updatedUserChallenge = userChallenge; - return _context13.abrupt("break", 91); + return _context13.abrupt("break", 86); case 13: _context13.next = 15; @@ -30283,7 +30401,7 @@ var ChallengeService = /*#__PURE__*/function () { state: _userChallenge3.UserChallengeState.DUEL, duel: updatedDuel }); - return _context13.abrupt("break", 91); + return _context13.abrupt("break", 86); case 18: _context13.next = 20; @@ -30295,7 +30413,7 @@ var ChallengeService = /*#__PURE__*/function () { state: _userChallenge3.UserChallengeState.DUEL, duel: updatedDuel }); - return _context13.abrupt("break", 91); + return _context13.abrupt("break", 86); case 23: _context13.next = 25; @@ -30307,7 +30425,7 @@ var ChallengeService = /*#__PURE__*/function () { state: _userChallenge3.UserChallengeState.DUEL, duel: updatedDuel }); - return _context13.abrupt("break", 91); + return _context13.abrupt("break", 86); case 28: _context13.next = 30; @@ -30323,7 +30441,7 @@ var ChallengeService = /*#__PURE__*/function () { }).startOf('day'), success: _userChallenge3.UserChallengeSuccess.WIN }); - return _context13.abrupt("break", 91); + return _context13.abrupt("break", 86); case 33: _context13.next = 35; @@ -30339,38 +30457,25 @@ var ChallengeService = /*#__PURE__*/function () { }).startOf('day'), success: _userChallenge3.UserChallengeSuccess.LOST }); - return _context13.abrupt("break", 91); + return _context13.abrupt("break", 86); case 38: _context13.next = 40; - return duelService.resetUserDuel(userChallenge.duel); - - case 40: - updatedDuel = _context13.sent; - updatedUserChallenge = _objectSpread(_objectSpread({}, userChallenge), {}, { - state: _userChallenge3.UserChallengeState.DUEL, - duel: updatedDuel, - success: _userChallenge3.UserChallengeSuccess.ONGOING - }); - return _context13.abrupt("break", 91); - - case 43: - _context13.next = 45; return quizService.startUserQuiz(userChallenge.quiz); - case 45: + case 40: updatedQuiz = _context13.sent; updatedUserChallenge = _objectSpread(_objectSpread({}, userChallenge), {}, { quiz: updatedQuiz }); - return _context13.abrupt("break", 91); + return _context13.abrupt("break", 86); - case 48: + case 43: updateQuizProgress = Math.min(userChallenge.quiz.result, 5); - _context13.next = 51; + _context13.next = 46; return quizService.endUserQuiz(userChallenge.quiz); - case 51: + case 46: updatedQuiz = _context13.sent; updatedUserChallenge = _objectSpread(_objectSpread({}, userChallenge), {}, { quiz: updatedQuiz, @@ -30378,59 +30483,59 @@ var ChallengeService = /*#__PURE__*/function () { quizProgress: updateQuizProgress }) }); - return _context13.abrupt("break", 91); + return _context13.abrupt("break", 86); - case 54: + case 49: updatedUserChallenge = _objectSpread(_objectSpread({}, userChallenge), {}, { quiz: quizWithUpdatedQuestions ? quizWithUpdatedQuestions : userChallenge.quiz }); - return _context13.abrupt("break", 91); + return _context13.abrupt("break", 86); - case 56: - _context13.next = 58; + case 51: + _context13.next = 53; return quizService.resetUserQuiz(userChallenge.quiz); - case 58: + case 53: updatedQuiz = _context13.sent; updatedUserChallenge = _objectSpread(_objectSpread({}, userChallenge), {}, { quiz: updatedQuiz }); - return _context13.abrupt("break", 91); + return _context13.abrupt("break", 86); - case 61: - _context13.next = 63; + case 56: + _context13.next = 58; return explorationService.startUserExploration(userChallenge.exploration); - case 63: + case 58: updatedExploration = _context13.sent; updatedUserChallenge = _objectSpread(_objectSpread({}, userChallenge), {}, { exploration: updatedExploration }); - return _context13.abrupt("break", 91); + return _context13.abrupt("break", 86); - case 66: - _context13.next = 68; + case 61: + _context13.next = 63; return explorationService.updateUserExploration(userChallenge.exploration); - case 68: + case 63: updatedExploration = _context13.sent; updatedUserChallenge = _objectSpread(_objectSpread({}, userChallenge), {}, { exploration: updatedExploration }); - return _context13.abrupt("break", 91); + return _context13.abrupt("break", 86); - case 71: - _context13.next = 73; + case 66: + _context13.next = 68; return explorationService.awaitNotificationUserExploration(userChallenge.exploration); - case 73: + case 68: updatedExploration = _context13.sent; updatedUserChallenge = _objectSpread(_objectSpread({}, userChallenge), {}, { exploration: updatedExploration }); - return _context13.abrupt("break", 91); + return _context13.abrupt("break", 86); - case 76: + case 71: updatedExploration = explorationService.endUserExploration(userChallenge.exploration); updatedUserChallenge = _objectSpread(_objectSpread({}, userChallenge), {}, { exploration: updatedExploration, @@ -30438,9 +30543,9 @@ var ChallengeService = /*#__PURE__*/function () { explorationProgress: updatedExploration.progress }) }); - return _context13.abrupt("break", 91); + return _context13.abrupt("break", 86); - case 79: + case 74: userAction = userChallenge.action; if (action) { @@ -30450,16 +30555,16 @@ var ChallengeService = /*#__PURE__*/function () { updatedUserChallenge = _objectSpread(_objectSpread({}, userChallenge), {}, { action: userAction }); - return _context13.abrupt("break", 91); + return _context13.abrupt("break", 86); - case 83: + case 78: updatedAction = actionService.awaitNotificationAction(userChallenge.action); updatedUserChallenge = _objectSpread(_objectSpread({}, userChallenge), {}, { action: updatedAction }); - return _context13.abrupt("break", 91); + return _context13.abrupt("break", 86); - case 86: + case 81: updatedAction = actionService.endAction(userChallenge.action); updatedUserChallenge = _objectSpread(_objectSpread({}, userChallenge), {}, { action: updatedAction, @@ -30467,26 +30572,26 @@ var ChallengeService = /*#__PURE__*/function () { actionProgress: 5 }) }); - return _context13.abrupt("break", 91); + return _context13.abrupt("break", 86); - case 89: + case 84: updatedUserChallenge = userChallenge; - return _context13.abrupt("break", 91); + return _context13.abrupt("break", 86); - case 91: - _context13.prev = 91; - _context13.next = 94; + case 86: + _context13.prev = 86; + _context13.next = 89; return this._client.save(updatedUserChallenge); - case 94: + case 89: _yield$this$_client$s = _context13.sent; userChallengeEntity = _yield$this$_client$s.data; result = this.parseUserChallengeEntityToUserChallenge(userChallengeEntity); return _context13.abrupt("return", result); - case 100: - _context13.prev = 100; - _context13.t1 = _context13["catch"](91); + case 95: + _context13.prev = 95; + _context13.t1 = _context13["catch"](86); errorMessage = "Update user challenge error: ".concat(JSON.stringify(_context13.t1)); logStack('error', errorMessage); @@ -30495,12 +30600,12 @@ var ChallengeService = /*#__PURE__*/function () { Sentry.captureException(errorMessage); throw _context13.t1; - case 107: + case 102: case "end": return _context13.stop(); } } - }, _callee12, this, [[91, 100]]); + }, _callee12, this, [[86, 95]]); })); function updateUserChallenge(_x22, _x23, _x24, _x25, _x26) { @@ -30667,12 +30772,16 @@ var _StyledIcon = _interopRequireDefault(__webpack_require__("I07j")); var _I18n = __webpack_require__("buk/"); -var _react = _interopRequireDefault(__webpack_require__("q1tI")); +var _react = _interopRequireWildcard(__webpack_require__("q1tI")); var _reactRouterDom = __webpack_require__("SOjZ"); __webpack_require__("jR4R"); +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 EcogestureSelectionRestart = function EcogestureSelectionRestart(_ref) { var listLength = _ref.listLength, restart = _ref.restart; @@ -30681,6 +30790,9 @@ var EcogestureSelectionRestart = function EcogestureSelectionRestart(_ref) { t = _useI18n.t; var navigate = (0, _reactRouterDom.useNavigate)(); + var goToObjectives = (0, _react.useCallback)(function () { + navigate('/ecogestures?tab=0'); + }, [navigate]); return /*#__PURE__*/_react.default.createElement("div", { className: "eg-selection-restart-container" }, /*#__PURE__*/_react.default.createElement("div", { @@ -30703,9 +30815,7 @@ var EcogestureSelectionRestart = function EcogestureSelectionRestart(_ref) { root: 'btn-secondary-negative', label: 'text-16-normal' }, - onClick: function onClick() { - return navigate('/ecogestures?tab=0'); - } + onClick: goToObjectives }, t('ecogesture_selection.button_go_to_ecogesture')), /*#__PURE__*/_react.default.createElement(_core.Button, { "aria-label": t('ecogesture_selection.accessibility.button_continue'), classes: { @@ -30828,12 +30938,12 @@ var _userChallenge = __webpack_require__("dQx6"); var _react = _interopRequireDefault(__webpack_require__("q1tI")); +var _reactRedux = __webpack_require__("/MKj"); + var _challenge = _interopRequireDefault(__webpack_require__("kdea")); var _challenge2 = __webpack_require__("F6Xr"); -var _hooks = __webpack_require__("Zlw4"); - __webpack_require__("HvHZ"); var QuizBegin = function QuizBegin(_ref) { @@ -30843,7 +30953,7 @@ var QuizBegin = function QuizBegin(_ref) { var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; - var dispatch = (0, _hooks.useAppDispatch)(); + var dispatch = (0, _reactRedux.useDispatch)(); var launchQuiz = /*#__PURE__*/function () { var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { @@ -30981,7 +31091,7 @@ var result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WE 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.cardContent.cardDone {\n border: 1px solid #e0e0e0;\n border-radius: 4px;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n gap: 1rem;\n align-items: center;\n}\n.cardContent.cardDone .challengeName {\n text-align: center;\n}\n.cardContent.cardDone .iconResult {\n display: flex;\n}\n@media all and (max-height: 700px) {\n .cardContent.cardDone .iconResult {\n width: 55%;\n margin: auto;\n }\n}\n.cardContent.cardDone .imgResult {\n width: 100%;\n height: 100%;\n}\n.cardContent.cardDone .labelResult {\n font-weight: bold;\n font-size: 28px;\n line-height: 120%;\n text-transform: uppercase;\n margin-bottom: 0.5rem;\n}\n.cardContent.cardDone .win {\n color: #e3b82a;\n}\n.cardContent.cardDone .lost {\n color: #d25959;\n}\n.cardContent.cardDone .statsResult {\n text-align: center;\n}\n.cardContent.cardDone .buttons {\n display: flex;\n flex-direction: column;\n gap: 8px;\n width: 100%;\n}\n.cardContent.cardDone .buttons button {\n padding: 0.625rem;\n margin: 0;\n}\n.cardContent.cardDone .buttons button.grey-border {\n border: 1px solid #e0e0e0;\n}", ""]); +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.cardContent.cardDone {\n border: 1px solid #e0e0e0;\n border-radius: 4px;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n gap: 1rem;\n align-items: center;\n}\n.cardContent.cardDone .challengeName {\n text-align: center;\n}\n.cardContent.cardDone .iconResult {\n display: flex;\n}\n@media all and (max-height: 700px) {\n .cardContent.cardDone .iconResult {\n width: 55%;\n margin: auto;\n }\n}\n.cardContent.cardDone .imgResult {\n width: 100%;\n height: 100%;\n}\n.cardContent.cardDone .labelResult {\n font-weight: bold;\n font-size: 28px;\n line-height: 120%;\n text-transform: uppercase;\n margin-bottom: 0.5rem;\n}\n.cardContent.cardDone .win {\n color: #e3b82a;\n}\n.cardContent.cardDone .lost {\n color: #d25959;\n}\n.cardContent.cardDone .statsResult {\n text-align: center;\n}\n.cardContent.cardDone .review-btn {\n padding: 0.625rem;\n margin: 0;\n border: 1px solid #e0e0e0;\n}", ""]); @@ -31078,7 +31188,7 @@ var _Icon = _interopRequireDefault(__webpack_require__("y6ex")); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _hooks = __webpack_require__("Zlw4"); +var _reactRedux = __webpack_require__("/MKj"); var _picto = __webpack_require__("6DBe"); @@ -31102,11 +31212,6 @@ var EcogestureModal = function EcogestureModal(_ref) { var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { - return state.ecolyo.challenge; - }), - currentChallenge = _useAppSelector.currentChallenge; - var _useState = (0, _react.useState)(''), _useState2 = (0, _slicedToArray2.default)(_useState, 2), ecogestureIcon = _useState2[0], @@ -31117,6 +31222,11 @@ var EcogestureModal = function EcogestureModal(_ref) { isMoreDetail = _useState4[0], setIsMoreDetail = _useState4[1]; + var _useSelector = (0, _reactRedux.useSelector)(function (state) { + return state.ecolyo.challenge; + }), + currentChallenge = _useSelector.currentChallenge; + var _useExploration = (0, _useExploration3.default)(), _useExploration2 = (0, _slicedToArray2.default)(_useExploration, 2), setValidExploration = _useExploration2[1]; @@ -31831,6 +31941,8 @@ var _userExploration = __webpack_require__("/rev"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); +var _reactRedux = __webpack_require__("/MKj"); + var _reactRouterDom = __webpack_require__("SOjZ"); var _challenge = _interopRequireDefault(__webpack_require__("kdea")); @@ -31839,9 +31951,7 @@ var _usageEvent2 = _interopRequireDefault(__webpack_require__("dECN")); var _challenge2 = __webpack_require__("F6Xr"); -var _global = __webpack_require__("b3rE"); - -var _hooks = __webpack_require__("Zlw4"); +var _global = __webpack_require__("c4IZ"); __webpack_require__("zqCP"); @@ -31851,12 +31961,12 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && var ExplorationFinished = function ExplorationFinished(_ref) { var userChallenge = _ref.userChallenge; + var client = (0, _cozyClient.useClient)(); var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; - var client = (0, _cozyClient.useClient)(); - var dispatch = (0, _hooks.useAppDispatch)(); + var dispatch = (0, _reactRedux.useDispatch)(); var navigate = (0, _reactRouterDom.useNavigate)(); var checkNotificationToEnd = (0, _react.useCallback)( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { var challengeService, updatedChallenge; @@ -32045,9 +32155,9 @@ var _luxon = __webpack_require__("ExVU"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _profileTypeForm = _interopRequireDefault(__webpack_require__("u4pq")); +var _reactRedux = __webpack_require__("/MKj"); -var _hooks = __webpack_require__("Zlw4"); +var _profileTypeForm = _interopRequireDefault(__webpack_require__("u4pq")); var _ProfileTypeFormDateSelection = _interopRequireDefault(__webpack_require__("/y87")); @@ -32060,12 +32170,12 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O 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; } var ProfileTypeView = function ProfileTypeView() { - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo; }), - profile = _useAppSelector.profile, - profileType = _useAppSelector.profileType, - profileEcogesture = _useAppSelector.profileEcogesture; + profile = _useSelector.profile, + profileType = _useSelector.profileType, + profileEcogesture = _useSelector.profileEcogesture; var _useState = (0, _react.useState)(0), _useState2 = (0, _slicedToArray2.default)(_useState, 2), @@ -32120,8 +32230,11 @@ var ProfileTypeView = function ProfileTypeView() { var _useState11 = (0, _react.useState)(-1), _useState12 = (0, _slicedToArray2.default)(_useState11, 2), viewedStep = _useState12[0], - setViewedStep = _useState12[1]; // if ecogesture profile is completed, update default profileType + setViewedStep = _useState12[1]; + var defineHeaderHeight = (0, _react.useCallback)(function (height) { + setHeaderHeight(height); + }, []); // if ecogesture profile is completed, update default profileType (0, _react.useEffect)(function () { if (profile.isProfileEcogestureCompleted) { @@ -32244,11 +32357,11 @@ var ProfileTypeView = function ProfileTypeView() { titleKey: 'common.title_profiletype', displayBackArrow: true }), /*#__PURE__*/_react.default.createElement(_Header.default, { - setHeaderHeight: setHeaderHeight, + setHeaderHeight: defineHeaderHeight, desktopTitleKey: 'common.title_profiletype', displayBackArrow: true }), /*#__PURE__*/_react.default.createElement(_Content.default, { - heightOffset: headerHeight + height: headerHeight }, /*#__PURE__*/_react.default.createElement("div", { className: 'profile-type-container' }, isLoading && /*#__PURE__*/_react.default.createElement(_Loader.default, null), !isLoading && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, step !== _profileType2.ProfileTypeStepForm.END && selectForm(), step === _profileType2.ProfileTypeStepForm.END && /*#__PURE__*/_react.default.createElement(_ProfileTypeFinished.default, { @@ -32634,7 +32747,7 @@ exports.i(__webpack_require__("tgIe"), ""); exports.push([module.i, "@import url(https://fonts.googleapis.com/css2?family=Lato:wght@400;700&display=swap);", ""]); // Module -exports.push([module.i, "/* Cozy UI utilities classes */\n/* Cozy UI React components styles */\n/* App styles */\n/** BLACK **/\n/** RED **/\n/** YELLOW **/\n/** ORANGE **/\n/** BLUE **/\n/** GREEN **/\n/** WHITE **/\n/** GREY **/\n/** App colors **/\n/** TABS GRADIENT **/\n/** SCROLLBAR **/\nhtml {\n background: #121212;\n}\n\nbody {\n background: #121212;\n overflow: unset !important;\n}\n\n.column {\n display: flex;\n flex-direction: column;\n}\n\n.row {\n display: flex;\n flex-direction: row;\n}\n\n.cozy-bar {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-left: 0;\n}\n\n[role=banner] .coz-bar-container {\n background-color: #ffffff;\n}\n@media only screen and (max-width : 768px) {\n [role=banner] .coz-bar-container {\n padding: 0.6rem 0 0 0;\n background-color: unset;\n }\n}\n\n.coz-bar-wrapper {\n box-shadow: unset !important;\n background: unset !important;\n}\n\n.coz-label {\n color: #32363f;\n}\n\n.content-view-loading {\n height: 80vh;\n width: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n color: #e0e0e0;\n}\n.content-view-loading .content-view-loading-text {\n padding-top: 1rem;\n margin: 0 2rem;\n text-align: center;\n}\n.content-view-loading .content-view-loading-button {\n max-width: 50vw;\n margin-top: 1rem;\n}\n\n[role=main] {\n /* width */\n /* Track */\n /* Handle */\n}\n[role=main]::-webkit-scrollbar {\n width: 10px;\n}\n[role=main]::-webkit-scrollbar-track {\n background: #3e4045;\n}\n[role=main]::-webkit-scrollbar-thumb {\n background: #6f7074;\n}\n\n/** BLACK **/\n/** RED **/\n/** YELLOW **/\n/** ORANGE **/\n/** BLUE **/\n/** GREEN **/\n/** WHITE **/\n/** GREY **/\n/** App colors **/\n/** TABS GRADIENT **/\n/** SCROLLBAR **/\n/** BLACK **/\n/** RED **/\n/** YELLOW **/\n/** ORANGE **/\n/** BLUE **/\n/** GREEN **/\n/** WHITE **/\n/** GREY **/\n/** App colors **/\n/** TABS GRADIENT **/\n/** SCROLLBAR **/\n* {\n font-family: Lato, sans-serif;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\np {\n color: #a0a0a0;\n font-family: Lato, sans-serif;\n}\n\n.home-title {\n font-size: 1rem;\n font-family: Lato, sans-serif;\n font-style: normal;\n font-weight: normal;\n line-height: 120%;\n text-transform: uppercase;\n}\n\n.app-title {\n font-family: Lato, sans-serif;\n font-style: normal;\n font-weight: bold;\n font-size: 21px;\n line-height: 24px;\n text-align: center;\n letter-spacing: 0.15px;\n color: #e0e0e0;\n text-shadow: 0px -1px 0px #060609, 0px 1px 0px rgba(255, 255, 255, 0.07);\n}\n\n.text-10, .text-10-italic, .text-10-bold, .text-10-bold-capitalize, .text-10-bold-uppercase, .text-10-normal, .text-10-normal-150, .text-10-normal-uppercase {\n font-style: normal;\n font-size: 0.625rem;\n line-height: 120%;\n}\n.text-10-normal, .text-10-normal-150, .text-10-normal-uppercase {\n font-weight: normal;\n}\n.text-10-normal-uppercase {\n text-transform: uppercase;\n}\n.text-10-normal-150 {\n line-height: 150%;\n}\n.text-10-bold, .text-10-bold-capitalize, .text-10-bold-uppercase {\n font-weight: 700;\n}\n.text-10-bold-uppercase {\n text-transform: uppercase;\n}\n.text-10-bold-capitalize {\n text-transform: capitalize;\n}\n.text-10-italic {\n font-style: italic;\n font-weight: normal;\n}\n\n.text-14, .text-14-italic, .text-14-bold, .text-14-bold-capitalize, .text-14-bold-uppercase, .text-14-normal, .text-14-normal-150, .text-14-normal-uppercase {\n font-style: normal;\n font-size: 0.875rem;\n line-height: 120%;\n}\n.text-14-normal, .text-14-normal-150, .text-14-normal-uppercase {\n font-weight: normal;\n}\n.text-14-normal-uppercase {\n text-transform: uppercase;\n}\n.text-14-normal-150 {\n line-height: 150%;\n}\n.text-14-bold, .text-14-bold-capitalize, .text-14-bold-uppercase {\n font-weight: 700;\n}\n.text-14-bold-uppercase {\n text-transform: uppercase;\n}\n.text-14-bold-capitalize {\n text-transform: capitalize;\n}\n.text-14-italic {\n font-style: italic;\n font-weight: normal;\n}\n\n.text-15, .text-15-italic, .text-15-bold, .text-15-bold-capitalize, .text-15-bold-uppercase, .text-15-normal, .text-15-normal-150, .text-15-normal-uppercase {\n font-style: normal;\n font-size: 0.938rem;\n line-height: 120%;\n}\n.text-15-normal, .text-15-normal-150, .text-15-normal-uppercase {\n font-weight: normal;\n}\n.text-15-normal-uppercase {\n text-transform: uppercase;\n}\n.text-15-normal-150 {\n line-height: 150%;\n}\n.text-15-bold, .text-15-bold-capitalize, .text-15-bold-uppercase {\n font-weight: 700;\n}\n.text-15-bold-uppercase {\n text-transform: uppercase;\n}\n.text-15-bold-capitalize {\n text-transform: capitalize;\n}\n.text-15-italic {\n font-style: italic;\n font-weight: normal;\n}\n\n.text-16, .text-16-italic, .text-16-bold, .text-16-bold-capitalize, .text-16-bold-uppercase, .text-16-normal, .text-16-normal-150, .text-16-normal-uppercase {\n font-style: normal;\n font-size: 1rem;\n line-height: 120%;\n}\n.text-16-normal, .text-16-normal-150, .text-16-normal-uppercase {\n font-weight: normal;\n}\n.text-16-normal-uppercase {\n text-transform: uppercase;\n}\n.text-16-normal-150 {\n line-height: 150%;\n}\n.text-16-bold, .text-16-bold-capitalize, .text-16-bold-uppercase {\n font-weight: 700;\n}\n.text-16-bold-uppercase {\n text-transform: uppercase;\n}\n.text-16-bold-capitalize {\n text-transform: capitalize;\n}\n.text-16-italic {\n font-style: italic;\n font-weight: normal;\n}\n\n.text-18, .text-18-italic, .text-18-bold, .text-18-bold-capitalize, .text-18-bold-uppercase, .text-18-normal, .text-18-normal-150, .text-18-normal-uppercase {\n font-style: normal;\n font-size: 1.125rem;\n line-height: 120%;\n}\n.text-18-normal, .text-18-normal-150, .text-18-normal-uppercase {\n font-weight: normal;\n}\n.text-18-normal-uppercase {\n text-transform: uppercase;\n}\n.text-18-normal-150 {\n line-height: 150%;\n}\n.text-18-bold, .text-18-bold-capitalize, .text-18-bold-uppercase {\n font-weight: 700;\n}\n.text-18-bold-uppercase {\n text-transform: uppercase;\n}\n.text-18-bold-capitalize {\n text-transform: capitalize;\n}\n.text-18-italic {\n font-style: italic;\n font-weight: normal;\n}\n\n.text-19, .text-19-italic, .text-19-bold, .text-19-bold-capitalize, .text-19-bold-uppercase, .text-19-normal, .text-19-normal-150, .text-19-normal-uppercase {\n font-style: normal;\n font-size: 1.188rem;\n line-height: 120%;\n}\n.text-19-normal, .text-19-normal-150, .text-19-normal-uppercase {\n font-weight: normal;\n}\n.text-19-normal-uppercase {\n text-transform: uppercase;\n}\n.text-19-normal-150 {\n line-height: 150%;\n}\n.text-19-bold, .text-19-bold-capitalize, .text-19-bold-uppercase {\n font-weight: 700;\n}\n.text-19-bold-uppercase {\n text-transform: uppercase;\n}\n.text-19-bold-capitalize {\n text-transform: capitalize;\n}\n.text-19-italic {\n font-style: italic;\n font-weight: normal;\n}\n\n.text-20, .text-20-italic, .text-20-bold, .text-20-bold-capitalize, .text-20-bold-uppercase, .text-20-normal, .text-20-normal-150, .text-20-normal-uppercase {\n font-style: normal;\n font-size: 1.25rem;\n line-height: 120%;\n}\n.text-20-normal, .text-20-normal-150, .text-20-normal-uppercase {\n font-weight: normal;\n}\n.text-20-normal-uppercase {\n text-transform: uppercase;\n}\n.text-20-normal-150 {\n line-height: 150%;\n}\n.text-20-bold, .text-20-bold-capitalize, .text-20-bold-uppercase {\n font-weight: 700;\n}\n.text-20-bold-uppercase {\n text-transform: uppercase;\n}\n.text-20-bold-capitalize {\n text-transform: capitalize;\n}\n.text-20-italic {\n font-style: italic;\n font-weight: normal;\n}\n\n.text-21, .text-21-italic, .text-21-bold, .text-21-bold-capitalize, .text-21-bold-uppercase, .text-21-normal, .text-21-normal-150, .text-21-normal-uppercase {\n font-style: normal;\n font-size: 1.313rem;\n line-height: 120%;\n}\n.text-21-normal, .text-21-normal-150, .text-21-normal-uppercase {\n font-weight: normal;\n}\n.text-21-normal-uppercase {\n text-transform: uppercase;\n}\n.text-21-normal-150 {\n line-height: 150%;\n}\n.text-21-bold, .text-21-bold-capitalize, .text-21-bold-uppercase {\n font-weight: 700;\n}\n.text-21-bold-uppercase {\n text-transform: uppercase;\n}\n.text-21-bold-capitalize {\n text-transform: capitalize;\n}\n.text-21-italic {\n font-style: italic;\n font-weight: normal;\n}\n\n.text-22, .text-22-italic, .text-22-bold, .text-22-bold-capitalize, .text-22-bold-uppercase, .text-22-normal, .text-22-normal-150, .text-22-normal-uppercase {\n font-style: normal;\n font-size: 1.375rem;\n line-height: 120%;\n}\n.text-22-normal, .text-22-normal-150, .text-22-normal-uppercase {\n font-weight: normal;\n}\n.text-22-normal-uppercase {\n text-transform: uppercase;\n}\n.text-22-normal-150 {\n line-height: 150%;\n}\n.text-22-bold, .text-22-bold-capitalize, .text-22-bold-uppercase {\n font-weight: 700;\n}\n.text-22-bold-uppercase {\n text-transform: uppercase;\n}\n.text-22-bold-capitalize {\n text-transform: capitalize;\n}\n.text-22-italic {\n font-style: italic;\n font-weight: normal;\n}\n\n.text-24, .text-24-italic, .text-24-bold, .text-24-bold-capitalize, .text-24-bold-uppercase, .text-24-normal, .text-24-normal-150, .text-24-normal-uppercase {\n font-style: normal;\n font-size: 1.5rem;\n line-height: 120%;\n}\n.text-24-normal, .text-24-normal-150, .text-24-normal-uppercase {\n font-weight: normal;\n}\n.text-24-normal-uppercase {\n text-transform: uppercase;\n}\n.text-24-normal-150 {\n line-height: 150%;\n}\n.text-24-bold, .text-24-bold-capitalize, .text-24-bold-uppercase {\n font-weight: 700;\n}\n.text-24-bold-uppercase {\n text-transform: uppercase;\n}\n.text-24-bold-capitalize {\n text-transform: capitalize;\n}\n.text-24-italic {\n font-style: italic;\n font-weight: normal;\n}\n\n.text-26, .text-26-italic, .text-26-bold, .text-26-bold-capitalize, .text-26-bold-uppercase, .text-26-normal, .text-26-normal-150, .text-26-normal-uppercase {\n font-style: normal;\n font-size: 1.625rem;\n line-height: 120%;\n}\n.text-26-normal, .text-26-normal-150, .text-26-normal-uppercase {\n font-weight: normal;\n}\n.text-26-normal-uppercase {\n text-transform: uppercase;\n}\n.text-26-normal-150 {\n line-height: 150%;\n}\n.text-26-bold, .text-26-bold-capitalize, .text-26-bold-uppercase {\n font-weight: 700;\n}\n.text-26-bold-uppercase {\n text-transform: uppercase;\n}\n.text-26-bold-capitalize {\n text-transform: capitalize;\n}\n.text-26-italic {\n font-style: italic;\n font-weight: normal;\n}\n\n.text-28, .text-28-italic, .text-28-bold, .text-28-bold-capitalize, .text-28-bold-uppercase, .text-28-normal, .text-28-normal-150, .text-28-normal-uppercase {\n font-style: normal;\n font-size: 1.75rem;\n line-height: 120%;\n}\n.text-28-normal, .text-28-normal-150, .text-28-normal-uppercase {\n font-weight: normal;\n}\n.text-28-normal-uppercase {\n text-transform: uppercase;\n}\n.text-28-normal-150 {\n line-height: 150%;\n}\n.text-28-bold, .text-28-bold-capitalize, .text-28-bold-uppercase {\n font-weight: 700;\n}\n.text-28-bold-uppercase {\n text-transform: uppercase;\n}\n.text-28-bold-capitalize {\n text-transform: capitalize;\n}\n.text-28-italic {\n font-style: italic;\n font-weight: normal;\n}\n\n.text-36, .text-36-italic, .text-36-bold, .text-36-bold-capitalize, .text-36-bold-uppercase, .text-36-normal, .text-36-normal-150, .text-36-normal-uppercase {\n font-style: normal;\n font-size: 2.25rem;\n line-height: 120%;\n}\n.text-36-normal, .text-36-normal-150, .text-36-normal-uppercase {\n font-weight: normal;\n}\n.text-36-normal-uppercase {\n text-transform: uppercase;\n}\n.text-36-normal-150 {\n line-height: 150%;\n}\n.text-36-bold, .text-36-bold-capitalize, .text-36-bold-uppercase {\n font-weight: 700;\n}\n.text-36-bold-uppercase {\n text-transform: uppercase;\n}\n.text-36-bold-capitalize {\n text-transform: capitalize;\n}\n.text-36-italic {\n font-style: italic;\n font-weight: normal;\n}\n\n/* Card */\n.card-title-on {\n font-family: Lato, sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 1.125rem;\n line-height: 120%;\n color: #e0e0e0;\n}\n\n.card-text-bold {\n font-family: Lato, sans-serif;\n font-style: normal;\n font-weight: bold;\n font-size: 1rem;\n line-height: 120%;\n color: #e0e0e0;\n}\n\n.card-indicator {\n font-family: Lato, sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 1rem;\n line-height: 120%;\n color: #e0e0e0;\n}\n\n.card-text {\n font-family: Lato, sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 1rem;\n line-height: 120%;\n color: #e0e0e0;\n}\n\n/* Chart */\n.chart-ticks-x-text {\n font-family: Lato, sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 1rem;\n line-height: 120%;\n}\n@media only screen and (max-width : 768px) {\n .chart-ticks-x-text {\n font-size: 0.685rem;\n }\n}\n\n.chart-ticks-y-text {\n font-family: Lato, sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 0.9rem;\n line-height: 120%;\n}\n@media only screen and (max-width : 768px) {\n .chart-ticks-y-text {\n font-size: 0.75rem;\n }\n}\n\n/* Cozy bar */\n.cozybar {\n font-family: Lato, sans-serif;\n font-style: normal;\n font-weight: bold;\n font-size: 1.3125rem;\n line-height: 120%;\n color: #e0e0e0;\n}\n\n/** BLACK **/\n/** RED **/\n/** YELLOW **/\n/** ORANGE **/\n/** BLUE **/\n/** GREEN **/\n/** WHITE **/\n/** GREY **/\n/** App colors **/\n/** TABS GRADIENT **/\n/** SCROLLBAR **/\n.axis {\n color: #7b7b7b;\n}\n.axis .tick-text {\n fill: #7b7b7b;\n}\n.axis .tick-text.tick-text-selected {\n fill: #e0e0e0;\n}\n.axis .separator {\n text-align: center;\n margin: 0 2px;\n font-size: 1rem !important;\n}\n\n.value-text {\n fill: #7b7b7b;\n}\n.value-text.selected {\n fill: #e0e0e0;\n}\n\n.barContainer.disabled *,\n.barFill.disabled * {\n cursor: default !important;\n}\n.barContainer:hover,\n.barFill:hover {\n cursor: pointer;\n}\n\n.background-true {\n opacity: 0.1;\n}\n.background-true:hover {\n cursor: pointer;\n}\n\n.background-false {\n opacity: 0;\n}\n\n.bar-compare-ELECTRICITY:hover,\n.bar-compare-GAS:hover,\n.bar-compare-WATER:hover,\n.bar-compare-MULTIFLUID:hover,\n.bar-MULTIFLUID:hover,\n.bar-WATER:hover,\n.bar-GAS:hover,\n.bar-ELECTRICITY:hover {\n cursor: pointer;\n}\n.bar-compare-ELECTRICITY:hover.disabled,\n.bar-compare-GAS:hover.disabled,\n.bar-compare-WATER:hover.disabled,\n.bar-compare-MULTIFLUID:hover.disabled,\n.bar-MULTIFLUID:hover.disabled,\n.bar-WATER:hover.disabled,\n.bar-GAS:hover.disabled,\n.bar-ELECTRICITY:hover.disabled {\n cursor: default;\n}\n\n.bar-ELECTRICITY {\n fill: #5d3d2a;\n}\n.bar-ELECTRICITY.selected {\n fill: #d87b39;\n filter: drop-shadow(0 -0.1rem 0.2rem #d87b39);\n}\n\n.bar-compare-ELECTRICITY {\n fill: #795c47;\n}\n.bar-compare-ELECTRICITY.selected {\n fill: #e2bca1;\n filter: drop-shadow(0 -0.1rem 0.2rem #e2bca1);\n}\n\n.bar-WATER {\n fill: #20415e;\n}\n.bar-WATER.selected {\n fill: #3a98ec;\n filter: drop-shadow(0 -0.1rem 0.2rem #3a98ec);\n}\n\n.bar-compare-WATER {\n fill: #4d5c6e;\n}\n.bar-compare-WATER.selected {\n fill: #abd4fa;\n filter: drop-shadow(0 -0.1rem 0.2rem #abd4fa);\n}\n\n.bar-GAS {\n fill: #184940;\n}\n.bar-GAS.selected {\n fill: #45d1b8;\n filter: drop-shadow(0 -0.1rem 0.2rem #45d1b8);\n}\n\n.bar-compare-GAS {\n fill: #597773;\n}\n.bar-compare-GAS.selected {\n fill: #a8f7e9;\n filter: drop-shadow(0 -0.1rem 0.2rem #a8f7e9);\n}\n\n.bar-MULTIFLUID {\n fill: #705d1d;\n}\n.bar-MULTIFLUID.selected {\n fill: #e3b82a;\n filter: drop-shadow(0 -0.1rem 0.2rem #e3b82a);\n}\n.bar-MULTIFLUID.disabled:hover {\n cursor: default;\n}\n\n.bar-duel {\n fill: #61f0f2;\n}\n.bar-duel.selected {\n fill: #61f0f2;\n filter: drop-shadow(0 -0.1rem 0.2rem #61f0f2);\n}\n.bar-duel.disabled:hover {\n cursor: default;\n}\n\n.bar-UNCOMING {\n fill: #242633;\n opacity: 0.6;\n}\n.bar-UNCOMING.selected {\n fill: #e3b82a;\n filter: drop-shadow(0 -0.1rem 0.2rem #e3b82a);\n}\n.bar-UNCOMING.disabled:hover {\n cursor: default;\n}\n\n.bar-compare-MULTIFLUID {\n fill: #7d6a4e;\n}\n.bar-compare-MULTIFLUID.selected {\n fill: #ffd597;\n filter: drop-shadow(0 -0.1rem 0.2rem #e3b82a);\n}\n\n.bar-average {\n stroke-width: 2;\n stroke: #e3b82a;\n}\n\n.week {\n fill: #e2bca1;\n}\n.week.selected {\n fill: #e2bca1;\n filter: drop-shadow(0 -0.1rem 0.2rem #e2bca1);\n}\n\n.weekend {\n fill: #ffd597;\n}\n.weekend.selected {\n fill: #ffd597;\n filter: drop-shadow(0 -0.1rem 0.2rem #e3b82a);\n}\n\n/** Animation **/\n.bounce-1 {\n animation-name: bounce-1;\n animation-timing-function: cubic-bezier(1, 1, 0.42, 1);\n animation-iteration-count: 1;\n transform-origin: bottom center;\n transform-box: fill-box;\n}\n\n@keyframes bounce-1 {\n 0% {\n transform: scale(0.1, 0.1);\n }\n 28% {\n transform: scale(0.1, 1.1);\n }\n 45% {\n transform: scale(0.8, 0.95);\n }\n 55% {\n transform: scale(1, 1);\n }\n 65% {\n transform: scale(1, 0.98);\n }\n 75% {\n transform: scale(1, 1);\n }\n}\n.bounce-2 {\n animation-name: bounce-2;\n animation-timing-function: cubic-bezier(1, 1, 0.42, 1);\n animation-iteration-count: 1;\n transform-origin: bottom center;\n transform-box: fill-box;\n}\n\n@keyframes bounce-2 {\n 0% {\n transform: scale(1, 1);\n }\n 28% {\n transform: scale(1, 1.1);\n }\n 45% {\n transform: scale(0.8, 0.95);\n }\n 55% {\n transform: scale(1, 1);\n }\n 65% {\n transform: scale(1, 0.98);\n }\n 75% {\n transform: scale(1, 1);\n }\n}\n.bounce-3 {\n animation-name: bounce-3;\n animation-timing-function: cubic-bezier(1, 1, 0.42, 1);\n animation-iteration-count: 1;\n transform-origin: bottom center;\n}\n\n@keyframes bounce-3 {\n 0% {\n opacity: 0.6;\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1.1);\n opacity: 0.8;\n }\n 100% {\n transform: scaleY(1);\n opacity: 1;\n }\n}\n/** Animatio ndelay **/\n.delay {\n animation-duration: 0.4s;\n}\n\n.delay--0 {\n animation-duration: 0.6s;\n}\n\n.delay--1 {\n animation-duration: 0.7s;\n}\n\n.delay--2 {\n animation-duration: 0.8s;\n}\n\n.delay--3 {\n animation-duration: 0.9s;\n}\n\n.delay--4 {\n animation-duration: 1s;\n}\n\n.delay--5 {\n animation-duration: 1.1s;\n}\n\n.delay--6 {\n animation-duration: 1.2s;\n}\n\n.delay--7 {\n animation-duration: 1.3s;\n}\n\n.delay--8 {\n animation-duration: 1.4s;\n}\n\n.delay--9 {\n animation-duration: 1.5s;\n}\n\n.delay--10 {\n animation-duration: 1.6s;\n}\n\n.delay--11 {\n animation-duration: 1.8s;\n}\n\n.delay--12 {\n animation-duration: 1.9s;\n}\n\n/** BLACK **/\n/** RED **/\n/** YELLOW **/\n/** ORANGE **/\n/** BLUE **/\n/** GREEN **/\n/** WHITE **/\n/** GREY **/\n/** App colors **/\n/** TABS GRADIENT **/\n/** SCROLLBAR **/\nbutton.btn-highlight {\n background: radial-gradient(105.25% 64.58% at 49.68% 70.83%, rgba(226, 137, 4, 0.5) 0%, rgba(255, 255, 255, 0) 100%), #f1c017;\n background-color: #e3b82a;\n border: none;\n border-radius: 2px;\n margin: 1.5rem 0 0;\n width: 100%;\n text-transform: initial;\n cursor: pointer;\n}\nbutton.btn-highlight span:first-child {\n color: #000000;\n}\nbutton.btn-highlight:hover, button.btn-highlight:focus, button.btn-highlight.active, button.btn-highlight:disabled {\n background-color: #b89318;\n}\nbutton.btn-highlight:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\nbutton.btn-primary-positive {\n background: transparent;\n background-color: transparent;\n border: 1px solid #121212;\n border-radius: 2px;\n margin: 1.5rem 0 0;\n width: 100%;\n text-transform: initial;\n cursor: pointer;\n}\nbutton.btn-primary-positive span:first-child {\n color: #e3b82a;\n}\nbutton.btn-primary-positive:hover, button.btn-primary-positive:focus, button.btn-primary-positive.active, button.btn-primary-positive:disabled {\n background-color: rgba(18, 18, 18, 0.2);\n}\nbutton.btn-primary-positive:hover span:first-child, button.btn-primary-positive:focus span:first-child, button.btn-primary-positive.active span:first-child, button.btn-primary-positive:disabled span:first-child {\n color: rgba(227, 184, 42, 0.7);\n}\nbutton.btn-primary-positive:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\nbutton.btn-primary-challenge {\n background: transparent;\n background-color: #61f0f2;\n border: 1px solid #61f0f2;\n border-radius: 2px;\n margin: 1.5rem 0 0;\n width: 100%;\n text-transform: initial;\n cursor: pointer;\n}\nbutton.btn-primary-challenge span:first-child {\n color: black;\n}\nbutton.btn-primary-challenge:hover, button.btn-primary-challenge:focus, button.btn-primary-challenge.active, button.btn-primary-challenge:disabled {\n background-color: rgba(97, 240, 242, 0.2);\n}\nbutton.btn-primary-challenge:hover span:first-child, button.btn-primary-challenge:focus span:first-child, button.btn-primary-challenge.active span:first-child, button.btn-primary-challenge:disabled span:first-child {\n color: black;\n}\nbutton.btn-primary-challenge:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\nbutton.btn-secondary {\n background: transparent;\n background-color: transparent;\n border: 1px solid #7b7b7b;\n border-radius: 2px;\n margin: 1.5rem 0 0;\n width: 100%;\n text-transform: initial;\n cursor: pointer;\n}\nbutton.btn-secondary span:first-child {\n color: #f1c017;\n}\nbutton.btn-secondary:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\nbutton.btn-secondary-positive {\n background: transparent;\n background-color: transparent;\n border: 1px solid #121212;\n border-radius: 2px;\n margin: 1.5rem 0 0;\n width: 100%;\n text-transform: initial;\n cursor: pointer;\n}\nbutton.btn-secondary-positive span:first-child {\n color: #e0e0e0;\n}\nbutton.btn-secondary-positive:hover, button.btn-secondary-positive:focus, button.btn-secondary-positive.active, button.btn-secondary-positive:disabled {\n background-color: rgba(18, 18, 18, 0.2);\n}\nbutton.btn-secondary-positive:hover span:first-child, button.btn-secondary-positive:focus span:first-child, button.btn-secondary-positive.active span:first-child, button.btn-secondary-positive:disabled span:first-child {\n color: rgba(224, 224, 224, 0.7);\n}\nbutton.btn-secondary-positive:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\nbutton.btn-secondary-negative {\n background: transparent;\n background-color: transparent;\n border: 1px solid #7b7b7b;\n border-radius: 2px;\n margin: 1.5rem 0 0;\n width: 100%;\n text-transform: initial;\n cursor: pointer;\n}\nbutton.btn-secondary-negative span:first-child {\n color: #e0e0e0;\n}\nbutton.btn-secondary-negative:hover, button.btn-secondary-negative:focus, button.btn-secondary-negative.active, button.btn-secondary-negative:disabled {\n background-color: rgba(123, 123, 123, 0.2);\n}\nbutton.btn-secondary-negative:hover span:first-child, button.btn-secondary-negative:focus span:first-child, button.btn-secondary-negative.active span:first-child, button.btn-secondary-negative:disabled span:first-child {\n color: rgba(224, 224, 224, 0.7);\n}\nbutton.btn-secondary-negative:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\nbutton.btn-duel-off {\n background: #121212;\n background-color: #121212;\n border: 1px solid rgba(97, 240, 242, 0.5);\n border-radius: 2px;\n margin: 1.5rem 0 0;\n width: 100%;\n text-transform: initial;\n cursor: pointer;\n}\nbutton.btn-duel-off span:first-child {\n color: #ffffff;\n}\nbutton.btn-duel-off:hover, button.btn-duel-off:focus, button.btn-duel-off.active, button.btn-duel-off:disabled {\n background-color: black;\n}\nbutton.btn-duel-off:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\nbutton.btn-duel-active {\n border-radius: 4px !important;\n background: radial-gradient(105.25% 64.58% at 49.68% 70.83%, rgba(1, 153, 163, 0.5) 0%, rgba(255, 255, 255, 0) 100%), #58ffff;\n background-color: radial-gradient(105.25% 64.58% at 49.68% 70.83%, rgba(1, 153, 163, 0.5) 0%, rgba(255, 255, 255, 0) 100%), #58ffff;\n border: none;\n border-radius: 2px;\n margin: 1.5rem 0 0;\n width: 100%;\n text-transform: initial;\n cursor: pointer;\n}\nbutton.btn-duel-active span:first-child {\n color: #121212;\n}\nbutton.btn-duel-active:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\nbutton.btn-duel-on {\n background: radial-gradient(60.65% 30.62% at 50% 3.13%, #2a2b30 0%, #1b1c22 100%);\n background-color: #121212;\n border: 1px solid #58ffff;\n border-radius: 2px;\n margin: 1.5rem 0 0;\n width: 100%;\n text-transform: initial;\n cursor: pointer;\n}\nbutton.btn-duel-on span:first-child {\n color: #ffffff;\n}\nbutton.btn-duel-on:hover, button.btn-duel-on:focus, button.btn-duel-on.active, button.btn-duel-on:disabled {\n background-color: black;\n}\nbutton.btn-duel-on:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\nbutton.btn-profile-next {\n background: radial-gradient(105.25% 64.58% at 49.68% 70.83%, rgba(226, 137, 4, 0.5) 0%, rgba(255, 255, 255, 0) 100%), #f1c017;\n background-color: #e3b82a;\n border: 1px solid #e3b82a;\n border-radius: 2px;\n margin: 1.5rem 0 0;\n width: 100%;\n text-transform: initial;\n cursor: pointer;\n}\nbutton.btn-profile-next span:first-child {\n color: #000000;\n}\nbutton.btn-profile-next:hover, button.btn-profile-next:focus, button.btn-profile-next.active, button.btn-profile-next:disabled {\n background-color: #b89318;\n}\nbutton.btn-profile-next:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\nbutton.btn-profile-back {\n background: none;\n background-color: none;\n border: 1px solid #e0e0e0;\n border-radius: 2px;\n margin: 1.5rem 0 0;\n width: 100%;\n text-transform: initial;\n cursor: pointer;\n}\nbutton.btn-profile-back span:first-child {\n color: #e0e0e0;\n}\nbutton.btn-profile-back:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n/** BLACK **/\n/** RED **/\n/** YELLOW **/\n/** ORANGE **/\n/** BLUE **/\n/** GREEN **/\n/** WHITE **/\n/** GREY **/\n/** App colors **/\n/** TABS GRADIENT **/\n/** SCROLLBAR **/\n.card {\n background: linear-gradient(180deg, #323339 0%, #25262b 100%);\n box-sizing: border-box;\n box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.75);\n border-radius: 4px;\n padding: 16px;\n}\n.card:hover {\n background: linear-gradient(180deg, rgba(70, 71, 77, 0.7) 0%, rgba(57, 58, 63, 0.7) 100%);\n}\n.card.rich-card {\n padding: 16px;\n}\n\n/** BLACK **/\n/** RED **/\n/** YELLOW **/\n/** ORANGE **/\n/** BLUE **/\n/** GREEN **/\n/** WHITE **/\n/** GREY **/\n/** App colors **/\n/** TABS GRADIENT **/\n/** SCROLLBAR **/\ndiv.modal-root .MuiBackdrop-root {\n background-color: hsla(231deg, 11%, 12%, 0.85);\n}\n\ndiv.modal-paper {\n background: linear-gradient(180deg, #323339 0%, #25262b 100%);\n width: 36rem;\n max-width: 100%;\n max-height: 90vh;\n padding: 2rem;\n box-sizing: border-box;\n box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.55);\n border-radius: 4px;\n margin: 0 0 0 13.75rem;\n align-items: center;\n color: #ffffff;\n}\n@media only screen and (max-width : 1023px) {\n div.modal-paper {\n width: 35rem;\n margin: 0;\n }\n}\n@media only screen and (max-width : 768px) {\n div.modal-paper {\n padding: 1rem 1rem 1.5rem;\n width: 85%;\n max-width: 35rem;\n margin: 0;\n }\n}\ndiv.modal-paper.no-padding {\n padding: 0;\n}\ndiv.modal-paper.blue-border {\n border: 1px solid rgba(88, 255, 255, 0.2509803922);\n}\ndiv.modal-paper.blue-light-border {\n border: 1px solid #61f0f2;\n}\ndiv.modal-paper.yellow-border {\n border: 1px solid rgba(227, 184, 42, 0.4);\n}\ndiv.modal-paper .modal-paper-close-button {\n position: absolute;\n top: 0.5rem;\n right: 0.5rem;\n padding: 5px 5px;\n z-index: 10;\n}\n\ndiv.modal-paper-full-screen {\n background: linear-gradient(180deg, #323339 0%, #25262b 100%);\n width: 100%;\n max-width: 100%;\n height: 100%;\n max-height: 100%;\n padding: 0;\n margin: 0;\n box-sizing: border-box;\n box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.55);\n border-radius: 4px;\n color: #ffffff;\n display: flex;\n align-items: center;\n}\ndiv.modal-paper-full-screen.dark-background {\n background: #121212;\n}\n\n/** BLACK **/\n/** RED **/\n/** YELLOW **/\n/** ORANGE **/\n/** BLUE **/\n/** GREEN **/\n/** WHITE **/\n/** GREY **/\n/** App colors **/\n/** TABS GRADIENT **/\n/** SCROLLBAR **/\ndiv.expansion-panel-root {\n margin: 1.2rem 0;\n color: #e0e0e0;\n background: linear-gradient(180deg, #323339 0%, #25262b 100%);\n border-radius: 4px;\n box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.75);\n transition: background-color 0.6s ease;\n box-sizing: border-box;\n}\ndiv.expansion-panel-root.Mui-expanded:first-child {\n margin: 1.2rem 0;\n}\ndiv.expansion-panel-root.Mui-expanded:last-child {\n margin: 1.2rem 0;\n}\ndiv.expansion-panel-root.red-border {\n border: 1px solid #d25959;\n}\n\ndiv.expansion-panel-summary {\n padding: 0.25rem 1.2rem;\n min-height: 4rem;\n}\ndiv.expansion-panel-summary.Mui-focused {\n border-radius: 4px;\n background-color: unset;\n box-shadow: 0 0 0 1px #e0e0e0;\n}\ndiv.expansion-panel-summary.Mui-expanded {\n min-height: 4rem;\n}\ndiv.expansion-panel-summary.Mui-expanded.small {\n min-height: 3rem;\n}\ndiv.expansion-panel-summary.small {\n padding: 0 1.2rem;\n min-height: 3rem;\n}\ndiv.expansion-panel-summary.bold-text {\n font-weight: bold;\n}\n\ndiv.expansion-panel-content {\n display: flex;\n align-items: center;\n}\ndiv.expansion-panel-content.Mui-expanded {\n margin: 0.75rem 0;\n}\n\ndiv.expansion-panel-details {\n padding: 0 1.2rem 1.2rem;\n}\n\n/** BLACK **/\n/** RED **/\n/** YELLOW **/\n/** ORANGE **/\n/** BLUE **/\n/** GREEN **/\n/** WHITE **/\n/** GREY **/\n/** App colors **/\n/** TABS GRADIENT **/\n/** SCROLLBAR **/\na {\n color: #deaf0e;\n}\na:visited {\n color: #deaf0e;\n}\n\na:focus {\n outline: none;\n box-shadow: inset 0 0 0 1px #e0e0e0;\n}\na:focus > div:first-child {\n box-shadow: 0 0 0 1px #e0e0e0;\n}\n\na.MuiLink-underlineHover:hover {\n text-decoration: none;\n}\n\na.MuiTypography-colorPrimary {\n color: #e0e0e0;\n}\n\n:root {\n white-space: pre-line;\n --blue: #58ffff;\n --blue40: rgba(88, 255, 255, 0.2509803922);\n --blueBackground: radial-gradient(105.25% 64.58% at 49.68% 70.83%, rgba(1, 153, 163, 0.5) 0%, rgba(255, 255, 255, 0) 100%), #58ffff;\n --blueRadialGradient: radial-gradient(105.25% 64.58% at 49.68% 70.83%, rgba(1, 153, 163, 0.5) 0%, rgba(255, 255, 255, 0) 100%), #58ffff;\n --blueRadialGradientTrans: radial-gradient(circle, #58ffff 0%, rgba(255, 255, 255, 0) 100%);\n --elecColor: #d87b39;\n --elecColor40: rgba(216, 123, 57, 0.4);\n --elecCompareColor: #e2bca1;\n --gasColor: #45d1b8;\n --gasColor40: rgba(69, 209, 184, 0.4);\n --gasCompareColor: #a8f7e9;\n --waterColor: #3a98ec;\n --waterColor40: rgba(58, 152, 236, 0.4);\n --waterCompareColor: #abd4fa;\n --multiColor: #e3b82a;\n --multiCompareColor: #ffd597;\n --redPrimary: #d25959;\n --greyBright: #e0e0e0;\n --greyDark: #7b7b7b;\n --textWhite: #ffffff;\n --softGrey: #a0a0a0;\n --darkLight: #25262b;\n --darkLight2: #121212;\n --textFont: Lato, sans-serif;\n --greyLinearGradientBackground: linear-gradient(180deg, #323339 0%, #25262b 100%);\n --multiColorRadialGradientTrans: radial-gradient(circle, #e3b82a 0%, rgba(255, 255, 255, 0) 100%);\n --elecColorRadialGradientTrans: radial-gradient(circle, #d87b39 0%, rgba(255, 255, 255, 0) 100%);\n --waterColorRadialGradientTrans: radial-gradient(circle, #3a98ec 0%, rgba(255, 255, 255, 0) 100%);\n --gasColorRadialGradientTrans: radial-gradient(circle, #e3b82a 0%, rgba(255, 255, 255, 0) 100%);\n --multiColorRadialGradient: radial-gradient(105.25% 64.58% at 49.68% 70.83%, rgba(226, 137, 4, 0.5) 0%, rgba(255, 255, 255, 0) 100%), #f1c017;\n --elecColorRadialGradient: radial-gradient(105.25% 64.58% at 49.68% 70.83%, rgba(158, 67, 2, 0.5) 0%, rgba(255, 255, 255, 0) 100%), #d87b39;\n --gasColorRadialGradient: radial-gradient(105.25% 64.58% at 49.68% 70.83%, rgba(4, 106, 88, 0.5) 0%, rgba(255, 255, 255, 0) 100%), #45d1b8;\n --waterColorRadialGradient: radial-gradient(105.25% 64.58% at 49.68% 70.83%, rgba(2, 93, 174, 0.5) 0%, rgba(255, 255, 255, 0) 100%), #3a98ec;\n}\n\n.application {\n overflow-x: hidden;\n background-color: #121212;\n}\n\n.accordion-icon {\n color: #ffffff;\n}\n\n.loaderContainer {\n height: 80vh;\n display: flex;\n flex: 1;\n justify-content: center;\n align-items: center;\n}", ""]); +exports.push([module.i, "/* Cozy UI utilities classes */\n/* Cozy UI React components styles */\n/* App styles */\n/** BLACK **/\n/** RED **/\n/** YELLOW **/\n/** ORANGE **/\n/** BLUE **/\n/** GREEN **/\n/** WHITE **/\n/** GREY **/\n/** App colors **/\n/** TABS GRADIENT **/\n/** SCROLLBAR **/\nhtml {\n background: #121212;\n}\n\nbody {\n background: #121212;\n overflow: unset !important;\n}\n\n.column {\n display: flex;\n flex-direction: column;\n}\n\n.row {\n display: flex;\n flex-direction: row;\n}\n\n.cozy-bar {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-left: 0;\n}\n\n[role=banner] .coz-bar-container {\n background-color: #ffffff;\n}\n@media only screen and (max-width : 768px) {\n [role=banner] .coz-bar-container {\n padding: 0.6rem 0 0 0;\n background-color: unset;\n }\n}\n\n.coz-bar-wrapper {\n box-shadow: unset !important;\n background: unset !important;\n}\n\n.coz-label {\n color: #32363f;\n}\n\n.content-view-loading {\n height: 80vh;\n width: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n color: #e0e0e0;\n}\n.content-view-loading .content-view-loading-text {\n padding-top: 1rem;\n margin: 0 2rem;\n text-align: center;\n}\n.content-view-loading .content-view-loading-button {\n max-width: 50vw;\n margin-top: 1rem;\n}\n\n[role=main] {\n /* width */\n /* Track */\n /* Handle */\n}\n[role=main]::-webkit-scrollbar {\n width: 10px;\n}\n[role=main]::-webkit-scrollbar-track {\n background: #3e4045;\n}\n[role=main]::-webkit-scrollbar-thumb {\n background: #6f7074;\n}\n\n/** BLACK **/\n/** RED **/\n/** YELLOW **/\n/** ORANGE **/\n/** BLUE **/\n/** GREEN **/\n/** WHITE **/\n/** GREY **/\n/** App colors **/\n/** TABS GRADIENT **/\n/** SCROLLBAR **/\n/** BLACK **/\n/** RED **/\n/** YELLOW **/\n/** ORANGE **/\n/** BLUE **/\n/** GREEN **/\n/** WHITE **/\n/** GREY **/\n/** App colors **/\n/** TABS GRADIENT **/\n/** SCROLLBAR **/\n* {\n font-family: Lato, sans-serif;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\np {\n color: #a0a0a0;\n font-family: Lato, sans-serif;\n}\n\n.home-title {\n font-size: 1rem;\n font-family: Lato, sans-serif;\n font-style: normal;\n font-weight: normal;\n line-height: 120%;\n text-transform: uppercase;\n}\n\n.app-title {\n font-family: Lato, sans-serif;\n font-style: normal;\n font-weight: bold;\n font-size: 21px;\n line-height: 24px;\n text-align: center;\n letter-spacing: 0.15px;\n color: #e0e0e0;\n text-shadow: 0px -1px 0px #060609, 0px 1px 0px rgba(255, 255, 255, 0.07);\n}\n\n.text-10, .text-10-italic, .text-10-bold, .text-10-bold-capitalize, .text-10-bold-uppercase, .text-10-normal, .text-10-normal-150, .text-10-normal-uppercase {\n font-style: normal;\n font-size: 0.625rem;\n line-height: 120%;\n}\n.text-10-normal, .text-10-normal-150, .text-10-normal-uppercase {\n font-weight: normal;\n}\n.text-10-normal-uppercase {\n text-transform: uppercase;\n}\n.text-10-normal-150 {\n line-height: 150%;\n}\n.text-10-bold, .text-10-bold-capitalize, .text-10-bold-uppercase {\n font-weight: 700;\n}\n.text-10-bold-uppercase {\n text-transform: uppercase;\n}\n.text-10-bold-capitalize {\n text-transform: capitalize;\n}\n.text-10-italic {\n font-style: italic;\n font-weight: normal;\n}\n\n.text-14, .text-14-italic, .text-14-bold, .text-14-bold-capitalize, .text-14-bold-uppercase, .text-14-normal, .text-14-normal-150, .text-14-normal-uppercase {\n font-style: normal;\n font-size: 0.875rem;\n line-height: 120%;\n}\n.text-14-normal, .text-14-normal-150, .text-14-normal-uppercase {\n font-weight: normal;\n}\n.text-14-normal-uppercase {\n text-transform: uppercase;\n}\n.text-14-normal-150 {\n line-height: 150%;\n}\n.text-14-bold, .text-14-bold-capitalize, .text-14-bold-uppercase {\n font-weight: 700;\n}\n.text-14-bold-uppercase {\n text-transform: uppercase;\n}\n.text-14-bold-capitalize {\n text-transform: capitalize;\n}\n.text-14-italic {\n font-style: italic;\n font-weight: normal;\n}\n\n.text-15, .text-15-italic, .text-15-bold, .text-15-bold-capitalize, .text-15-bold-uppercase, .text-15-normal, .text-15-normal-150, .text-15-normal-uppercase {\n font-style: normal;\n font-size: 0.938rem;\n line-height: 120%;\n}\n.text-15-normal, .text-15-normal-150, .text-15-normal-uppercase {\n font-weight: normal;\n}\n.text-15-normal-uppercase {\n text-transform: uppercase;\n}\n.text-15-normal-150 {\n line-height: 150%;\n}\n.text-15-bold, .text-15-bold-capitalize, .text-15-bold-uppercase {\n font-weight: 700;\n}\n.text-15-bold-uppercase {\n text-transform: uppercase;\n}\n.text-15-bold-capitalize {\n text-transform: capitalize;\n}\n.text-15-italic {\n font-style: italic;\n font-weight: normal;\n}\n\n.text-16, .text-16-italic, .text-16-bold, .text-16-bold-capitalize, .text-16-bold-uppercase, .text-16-normal, .text-16-normal-150, .text-16-normal-uppercase {\n font-style: normal;\n font-size: 1rem;\n line-height: 120%;\n}\n.text-16-normal, .text-16-normal-150, .text-16-normal-uppercase {\n font-weight: normal;\n}\n.text-16-normal-uppercase {\n text-transform: uppercase;\n}\n.text-16-normal-150 {\n line-height: 150%;\n}\n.text-16-bold, .text-16-bold-capitalize, .text-16-bold-uppercase {\n font-weight: 700;\n}\n.text-16-bold-uppercase {\n text-transform: uppercase;\n}\n.text-16-bold-capitalize {\n text-transform: capitalize;\n}\n.text-16-italic {\n font-style: italic;\n font-weight: normal;\n}\n\n.text-18, .text-18-italic, .text-18-bold, .text-18-bold-capitalize, .text-18-bold-uppercase, .text-18-normal, .text-18-normal-150, .text-18-normal-uppercase {\n font-style: normal;\n font-size: 1.125rem;\n line-height: 120%;\n}\n.text-18-normal, .text-18-normal-150, .text-18-normal-uppercase {\n font-weight: normal;\n}\n.text-18-normal-uppercase {\n text-transform: uppercase;\n}\n.text-18-normal-150 {\n line-height: 150%;\n}\n.text-18-bold, .text-18-bold-capitalize, .text-18-bold-uppercase {\n font-weight: 700;\n}\n.text-18-bold-uppercase {\n text-transform: uppercase;\n}\n.text-18-bold-capitalize {\n text-transform: capitalize;\n}\n.text-18-italic {\n font-style: italic;\n font-weight: normal;\n}\n\n.text-19, .text-19-italic, .text-19-bold, .text-19-bold-capitalize, .text-19-bold-uppercase, .text-19-normal, .text-19-normal-150, .text-19-normal-uppercase {\n font-style: normal;\n font-size: 1.188rem;\n line-height: 120%;\n}\n.text-19-normal, .text-19-normal-150, .text-19-normal-uppercase {\n font-weight: normal;\n}\n.text-19-normal-uppercase {\n text-transform: uppercase;\n}\n.text-19-normal-150 {\n line-height: 150%;\n}\n.text-19-bold, .text-19-bold-capitalize, .text-19-bold-uppercase {\n font-weight: 700;\n}\n.text-19-bold-uppercase {\n text-transform: uppercase;\n}\n.text-19-bold-capitalize {\n text-transform: capitalize;\n}\n.text-19-italic {\n font-style: italic;\n font-weight: normal;\n}\n\n.text-20, .text-20-italic, .text-20-bold, .text-20-bold-capitalize, .text-20-bold-uppercase, .text-20-normal, .text-20-normal-150, .text-20-normal-uppercase {\n font-style: normal;\n font-size: 1.25rem;\n line-height: 120%;\n}\n.text-20-normal, .text-20-normal-150, .text-20-normal-uppercase {\n font-weight: normal;\n}\n.text-20-normal-uppercase {\n text-transform: uppercase;\n}\n.text-20-normal-150 {\n line-height: 150%;\n}\n.text-20-bold, .text-20-bold-capitalize, .text-20-bold-uppercase {\n font-weight: 700;\n}\n.text-20-bold-uppercase {\n text-transform: uppercase;\n}\n.text-20-bold-capitalize {\n text-transform: capitalize;\n}\n.text-20-italic {\n font-style: italic;\n font-weight: normal;\n}\n\n.text-21, .text-21-italic, .text-21-bold, .text-21-bold-capitalize, .text-21-bold-uppercase, .text-21-normal, .text-21-normal-150, .text-21-normal-uppercase {\n font-style: normal;\n font-size: 1.313rem;\n line-height: 120%;\n}\n.text-21-normal, .text-21-normal-150, .text-21-normal-uppercase {\n font-weight: normal;\n}\n.text-21-normal-uppercase {\n text-transform: uppercase;\n}\n.text-21-normal-150 {\n line-height: 150%;\n}\n.text-21-bold, .text-21-bold-capitalize, .text-21-bold-uppercase {\n font-weight: 700;\n}\n.text-21-bold-uppercase {\n text-transform: uppercase;\n}\n.text-21-bold-capitalize {\n text-transform: capitalize;\n}\n.text-21-italic {\n font-style: italic;\n font-weight: normal;\n}\n\n.text-22, .text-22-italic, .text-22-bold, .text-22-bold-capitalize, .text-22-bold-uppercase, .text-22-normal, .text-22-normal-150, .text-22-normal-uppercase {\n font-style: normal;\n font-size: 1.375rem;\n line-height: 120%;\n}\n.text-22-normal, .text-22-normal-150, .text-22-normal-uppercase {\n font-weight: normal;\n}\n.text-22-normal-uppercase {\n text-transform: uppercase;\n}\n.text-22-normal-150 {\n line-height: 150%;\n}\n.text-22-bold, .text-22-bold-capitalize, .text-22-bold-uppercase {\n font-weight: 700;\n}\n.text-22-bold-uppercase {\n text-transform: uppercase;\n}\n.text-22-bold-capitalize {\n text-transform: capitalize;\n}\n.text-22-italic {\n font-style: italic;\n font-weight: normal;\n}\n\n.text-24, .text-24-italic, .text-24-bold, .text-24-bold-capitalize, .text-24-bold-uppercase, .text-24-normal, .text-24-normal-150, .text-24-normal-uppercase {\n font-style: normal;\n font-size: 1.5rem;\n line-height: 120%;\n}\n.text-24-normal, .text-24-normal-150, .text-24-normal-uppercase {\n font-weight: normal;\n}\n.text-24-normal-uppercase {\n text-transform: uppercase;\n}\n.text-24-normal-150 {\n line-height: 150%;\n}\n.text-24-bold, .text-24-bold-capitalize, .text-24-bold-uppercase {\n font-weight: 700;\n}\n.text-24-bold-uppercase {\n text-transform: uppercase;\n}\n.text-24-bold-capitalize {\n text-transform: capitalize;\n}\n.text-24-italic {\n font-style: italic;\n font-weight: normal;\n}\n\n.text-26, .text-26-italic, .text-26-bold, .text-26-bold-capitalize, .text-26-bold-uppercase, .text-26-normal, .text-26-normal-150, .text-26-normal-uppercase {\n font-style: normal;\n font-size: 1.625rem;\n line-height: 120%;\n}\n.text-26-normal, .text-26-normal-150, .text-26-normal-uppercase {\n font-weight: normal;\n}\n.text-26-normal-uppercase {\n text-transform: uppercase;\n}\n.text-26-normal-150 {\n line-height: 150%;\n}\n.text-26-bold, .text-26-bold-capitalize, .text-26-bold-uppercase {\n font-weight: 700;\n}\n.text-26-bold-uppercase {\n text-transform: uppercase;\n}\n.text-26-bold-capitalize {\n text-transform: capitalize;\n}\n.text-26-italic {\n font-style: italic;\n font-weight: normal;\n}\n\n.text-28, .text-28-italic, .text-28-bold, .text-28-bold-capitalize, .text-28-bold-uppercase, .text-28-normal, .text-28-normal-150, .text-28-normal-uppercase {\n font-style: normal;\n font-size: 1.75rem;\n line-height: 120%;\n}\n.text-28-normal, .text-28-normal-150, .text-28-normal-uppercase {\n font-weight: normal;\n}\n.text-28-normal-uppercase {\n text-transform: uppercase;\n}\n.text-28-normal-150 {\n line-height: 150%;\n}\n.text-28-bold, .text-28-bold-capitalize, .text-28-bold-uppercase {\n font-weight: 700;\n}\n.text-28-bold-uppercase {\n text-transform: uppercase;\n}\n.text-28-bold-capitalize {\n text-transform: capitalize;\n}\n.text-28-italic {\n font-style: italic;\n font-weight: normal;\n}\n\n.text-36, .text-36-italic, .text-36-bold, .text-36-bold-capitalize, .text-36-bold-uppercase, .text-36-normal, .text-36-normal-150, .text-36-normal-uppercase {\n font-style: normal;\n font-size: 2.25rem;\n line-height: 120%;\n}\n.text-36-normal, .text-36-normal-150, .text-36-normal-uppercase {\n font-weight: normal;\n}\n.text-36-normal-uppercase {\n text-transform: uppercase;\n}\n.text-36-normal-150 {\n line-height: 150%;\n}\n.text-36-bold, .text-36-bold-capitalize, .text-36-bold-uppercase {\n font-weight: 700;\n}\n.text-36-bold-uppercase {\n text-transform: uppercase;\n}\n.text-36-bold-capitalize {\n text-transform: capitalize;\n}\n.text-36-italic {\n font-style: italic;\n font-weight: normal;\n}\n\n/* Card */\n.card-title-on {\n font-family: Lato, sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 1.125rem;\n line-height: 120%;\n color: #e0e0e0;\n}\n\n.card-text-bold {\n font-family: Lato, sans-serif;\n font-style: normal;\n font-weight: bold;\n font-size: 1rem;\n line-height: 120%;\n color: #e0e0e0;\n}\n\n.card-indicator {\n font-family: Lato, sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 1rem;\n line-height: 120%;\n color: #e0e0e0;\n}\n\n.card-text {\n font-family: Lato, sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 1rem;\n line-height: 120%;\n color: #e0e0e0;\n}\n\n/* Chart */\n.chart-ticks-x-text {\n font-family: Lato, sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 1rem;\n line-height: 120%;\n}\n@media only screen and (max-width : 768px) {\n .chart-ticks-x-text {\n font-size: 0.685rem;\n }\n}\n\n.chart-ticks-y-text {\n font-family: Lato, sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 0.9rem;\n line-height: 120%;\n}\n@media only screen and (max-width : 768px) {\n .chart-ticks-y-text {\n font-size: 0.75rem;\n }\n}\n\n/* Cozy bar */\n.cozybar {\n font-family: Lato, sans-serif;\n font-style: normal;\n font-weight: bold;\n font-size: 1.3125rem;\n line-height: 120%;\n color: #e0e0e0;\n}\n\n/** BLACK **/\n/** RED **/\n/** YELLOW **/\n/** ORANGE **/\n/** BLUE **/\n/** GREEN **/\n/** WHITE **/\n/** GREY **/\n/** App colors **/\n/** TABS GRADIENT **/\n/** SCROLLBAR **/\n.axis {\n color: #7b7b7b;\n}\n.axis .tick-text {\n fill: #7b7b7b;\n}\n.axis .tick-text.tick-text-selected {\n fill: #e0e0e0;\n}\n.axis .separator {\n text-align: center;\n margin: 0 2px;\n font-size: 1rem !important;\n}\n\n.value-text {\n fill: #7b7b7b;\n}\n.value-text.selected {\n fill: #e0e0e0;\n}\n\n.barContainer.disabled *,\n.barFill.disabled * {\n cursor: default !important;\n}\n.barContainer:hover,\n.barFill:hover {\n cursor: pointer;\n}\n\n.background-true {\n opacity: 0.1;\n}\n.background-true:hover {\n cursor: pointer;\n}\n\n.background-false {\n opacity: 0;\n}\n\n.bar-compare-ELECTRICITY:hover,\n.bar-compare-GAS:hover,\n.bar-compare-WATER:hover,\n.bar-compare-MULTIFLUID:hover,\n.bar-MULTIFLUID:hover,\n.bar-WATER:hover,\n.bar-GAS:hover,\n.bar-ELECTRICITY:hover {\n cursor: pointer;\n}\n.bar-compare-ELECTRICITY:hover.disabled,\n.bar-compare-GAS:hover.disabled,\n.bar-compare-WATER:hover.disabled,\n.bar-compare-MULTIFLUID:hover.disabled,\n.bar-MULTIFLUID:hover.disabled,\n.bar-WATER:hover.disabled,\n.bar-GAS:hover.disabled,\n.bar-ELECTRICITY:hover.disabled {\n cursor: default;\n}\n\n.bar-ELECTRICITY {\n fill: #5d3d2a;\n}\n.bar-ELECTRICITY.selected {\n fill: #d87b39;\n filter: drop-shadow(0 -0.1rem 0.2rem #d87b39);\n}\n\n.bar-compare-ELECTRICITY {\n fill: #795c47;\n}\n.bar-compare-ELECTRICITY.selected {\n fill: #e2bca1;\n filter: drop-shadow(0 -0.1rem 0.2rem #e2bca1);\n}\n\n.bar-WATER {\n fill: #20415e;\n}\n.bar-WATER.selected {\n fill: #3a98ec;\n filter: drop-shadow(0 -0.1rem 0.2rem #3a98ec);\n}\n\n.bar-compare-WATER {\n fill: #4d5c6e;\n}\n.bar-compare-WATER.selected {\n fill: #abd4fa;\n filter: drop-shadow(0 -0.1rem 0.2rem #abd4fa);\n}\n\n.bar-GAS {\n fill: #184940;\n}\n.bar-GAS.selected {\n fill: #45d1b8;\n filter: drop-shadow(0 -0.1rem 0.2rem #45d1b8);\n}\n\n.bar-compare-GAS {\n fill: #597773;\n}\n.bar-compare-GAS.selected {\n fill: #a8f7e9;\n filter: drop-shadow(0 -0.1rem 0.2rem #a8f7e9);\n}\n\n.bar-MULTIFLUID {\n fill: #705d1d;\n}\n.bar-MULTIFLUID.selected {\n fill: #e3b82a;\n filter: drop-shadow(0 -0.1rem 0.2rem #e3b82a);\n}\n.bar-MULTIFLUID.disabled:hover {\n cursor: default;\n}\n\n.bar-duel {\n fill: #61f0f2;\n}\n.bar-duel.selected {\n fill: #61f0f2;\n filter: drop-shadow(0 -0.1rem 0.2rem #61f0f2);\n}\n.bar-duel.disabled:hover {\n cursor: default;\n}\n\n.bar-UNCOMING {\n fill: #242633;\n opacity: 0.6;\n}\n.bar-UNCOMING.selected {\n fill: #e3b82a;\n filter: drop-shadow(0 -0.1rem 0.2rem #e3b82a);\n}\n.bar-UNCOMING.disabled:hover {\n cursor: default;\n}\n\n.bar-compare-MULTIFLUID {\n fill: #7d6a4e;\n}\n.bar-compare-MULTIFLUID.selected {\n fill: #ffd597;\n filter: drop-shadow(0 -0.1rem 0.2rem #e3b82a);\n}\n\n.bar-average {\n stroke-width: 2;\n stroke: #e3b82a;\n}\n\n.week {\n fill: #e2bca1;\n}\n.week.selected {\n fill: #e2bca1;\n filter: drop-shadow(0 -0.1rem 0.2rem #e2bca1);\n}\n\n.weekend {\n fill: #ffd597;\n}\n.weekend.selected {\n fill: #ffd597;\n filter: drop-shadow(0 -0.1rem 0.2rem #e3b82a);\n}\n\n/** Animation **/\n.bounce-1 {\n animation-name: bounce-1;\n animation-timing-function: cubic-bezier(1, 1, 0.42, 1);\n animation-iteration-count: 1;\n transform-origin: bottom center;\n transform-box: fill-box;\n}\n\n@keyframes bounce-1 {\n 0% {\n transform: scale(0.1, 0.1);\n }\n 28% {\n transform: scale(0.1, 1.1);\n }\n 45% {\n transform: scale(0.8, 0.95);\n }\n 55% {\n transform: scale(1, 1);\n }\n 65% {\n transform: scale(1, 0.98);\n }\n 75% {\n transform: scale(1, 1);\n }\n}\n.bounce-2 {\n animation-name: bounce-2;\n animation-timing-function: cubic-bezier(1, 1, 0.42, 1);\n animation-iteration-count: 1;\n transform-origin: bottom center;\n transform-box: fill-box;\n}\n\n@keyframes bounce-2 {\n 0% {\n transform: scale(1, 1);\n }\n 28% {\n transform: scale(1, 1.1);\n }\n 45% {\n transform: scale(0.8, 0.95);\n }\n 55% {\n transform: scale(1, 1);\n }\n 65% {\n transform: scale(1, 0.98);\n }\n 75% {\n transform: scale(1, 1);\n }\n}\n.bounce-3 {\n animation-name: bounce-3;\n animation-timing-function: cubic-bezier(1, 1, 0.42, 1);\n animation-iteration-count: 1;\n transform-origin: bottom center;\n}\n\n@keyframes bounce-3 {\n 0% {\n opacity: 0.6;\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1.1);\n opacity: 0.8;\n }\n 100% {\n transform: scaleY(1);\n opacity: 1;\n }\n}\n/** Animatio ndelay **/\n.delay {\n animation-duration: 0.4s;\n}\n\n.delay--0 {\n animation-duration: 0.6s;\n}\n\n.delay--1 {\n animation-duration: 0.7s;\n}\n\n.delay--2 {\n animation-duration: 0.8s;\n}\n\n.delay--3 {\n animation-duration: 0.9s;\n}\n\n.delay--4 {\n animation-duration: 1s;\n}\n\n.delay--5 {\n animation-duration: 1.1s;\n}\n\n.delay--6 {\n animation-duration: 1.2s;\n}\n\n.delay--7 {\n animation-duration: 1.3s;\n}\n\n.delay--8 {\n animation-duration: 1.4s;\n}\n\n.delay--9 {\n animation-duration: 1.5s;\n}\n\n.delay--10 {\n animation-duration: 1.6s;\n}\n\n.delay--11 {\n animation-duration: 1.8s;\n}\n\n.delay--12 {\n animation-duration: 1.9s;\n}\n\n/** BLACK **/\n/** RED **/\n/** YELLOW **/\n/** ORANGE **/\n/** BLUE **/\n/** GREEN **/\n/** WHITE **/\n/** GREY **/\n/** App colors **/\n/** TABS GRADIENT **/\n/** SCROLLBAR **/\nbutton.btn-highlight {\n background: radial-gradient(105.25% 64.58% at 49.68% 70.83%, rgba(226, 137, 4, 0.5) 0%, rgba(255, 255, 255, 0) 100%), #f1c017;\n background-color: #e3b82a;\n border: none;\n border-radius: 2px;\n margin: 1.5rem 0 0;\n width: 100%;\n text-transform: initial;\n cursor: pointer;\n}\nbutton.btn-highlight span:first-child {\n color: #000000;\n}\nbutton.btn-highlight:hover, button.btn-highlight:focus, button.btn-highlight.active, button.btn-highlight:disabled {\n background-color: #b89318;\n}\nbutton.btn-highlight:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\nbutton.btn-primary-positive {\n background: transparent;\n background-color: transparent;\n border: 1px solid #121212;\n border-radius: 2px;\n margin: 1.5rem 0 0;\n width: 100%;\n text-transform: initial;\n cursor: pointer;\n}\nbutton.btn-primary-positive span:first-child {\n color: #e3b82a;\n}\nbutton.btn-primary-positive:hover, button.btn-primary-positive:focus, button.btn-primary-positive.active, button.btn-primary-positive:disabled {\n background-color: rgba(18, 18, 18, 0.2);\n}\nbutton.btn-primary-positive:hover span:first-child, button.btn-primary-positive:focus span:first-child, button.btn-primary-positive.active span:first-child, button.btn-primary-positive:disabled span:first-child {\n color: rgba(227, 184, 42, 0.7);\n}\nbutton.btn-primary-positive:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\nbutton.btn-primary-negative {\n background: transparent;\n background-color: transparent;\n border: 1px solid #7b7b7b;\n border-radius: 2px;\n margin: 1.5rem 0 0;\n width: 100%;\n text-transform: initial;\n cursor: pointer;\n}\nbutton.btn-primary-negative span:first-child {\n color: #e3b82a;\n}\nbutton.btn-primary-negative:hover, button.btn-primary-negative:focus, button.btn-primary-negative.active, button.btn-primary-negative:disabled {\n background-color: rgba(123, 123, 123, 0.2);\n}\nbutton.btn-primary-negative:hover span:first-child, button.btn-primary-negative:focus span:first-child, button.btn-primary-negative.active span:first-child, button.btn-primary-negative:disabled span:first-child {\n color: rgba(227, 184, 42, 0.7);\n}\nbutton.btn-primary-negative:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\nbutton.btn-secondary {\n background: transparent;\n background-color: transparent;\n border: 1px solid #7b7b7b;\n border-radius: 2px;\n margin: 1.5rem 0 0;\n width: 100%;\n text-transform: initial;\n cursor: pointer;\n}\nbutton.btn-secondary span:first-child {\n color: #f1c017;\n}\nbutton.btn-secondary:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\nbutton.btn-secondary-positive {\n background: transparent;\n background-color: transparent;\n border: 1px solid #121212;\n border-radius: 2px;\n margin: 1.5rem 0 0;\n width: 100%;\n text-transform: initial;\n cursor: pointer;\n}\nbutton.btn-secondary-positive span:first-child {\n color: #e0e0e0;\n}\nbutton.btn-secondary-positive:hover, button.btn-secondary-positive:focus, button.btn-secondary-positive.active, button.btn-secondary-positive:disabled {\n background-color: rgba(18, 18, 18, 0.2);\n}\nbutton.btn-secondary-positive:hover span:first-child, button.btn-secondary-positive:focus span:first-child, button.btn-secondary-positive.active span:first-child, button.btn-secondary-positive:disabled span:first-child {\n color: rgba(224, 224, 224, 0.7);\n}\nbutton.btn-secondary-positive:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\nbutton.btn-secondary-negative {\n background: transparent;\n background-color: transparent;\n border: 1px solid #7b7b7b;\n border-radius: 2px;\n margin: 1.5rem 0 0;\n width: 100%;\n text-transform: initial;\n cursor: pointer;\n}\nbutton.btn-secondary-negative span:first-child {\n color: #e0e0e0;\n}\nbutton.btn-secondary-negative:hover, button.btn-secondary-negative:focus, button.btn-secondary-negative.active, button.btn-secondary-negative:disabled {\n background-color: rgba(123, 123, 123, 0.2);\n}\nbutton.btn-secondary-negative:hover span:first-child, button.btn-secondary-negative:focus span:first-child, button.btn-secondary-negative.active span:first-child, button.btn-secondary-negative:disabled span:first-child {\n color: rgba(224, 224, 224, 0.7);\n}\nbutton.btn-secondary-negative:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\nbutton.btn-duel-off {\n background: #121212;\n background-color: #121212;\n border: 1px solid rgba(97, 240, 242, 0.5);\n border-radius: 2px;\n margin: 1.5rem 0 0;\n width: 100%;\n text-transform: initial;\n cursor: pointer;\n}\nbutton.btn-duel-off span:first-child {\n color: #ffffff;\n}\nbutton.btn-duel-off:hover, button.btn-duel-off:focus, button.btn-duel-off.active, button.btn-duel-off:disabled {\n background-color: black;\n}\nbutton.btn-duel-off:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\nbutton.btn-duel-active {\n border-radius: 4px !important;\n background: radial-gradient(105.25% 64.58% at 49.68% 70.83%, rgba(1, 153, 163, 0.5) 0%, rgba(255, 255, 255, 0) 100%), #58ffff;\n background-color: radial-gradient(105.25% 64.58% at 49.68% 70.83%, rgba(1, 153, 163, 0.5) 0%, rgba(255, 255, 255, 0) 100%), #58ffff;\n border: none;\n border-radius: 2px;\n margin: 1.5rem 0 0;\n width: 100%;\n text-transform: initial;\n cursor: pointer;\n}\nbutton.btn-duel-active span:first-child {\n color: #121212;\n}\nbutton.btn-duel-active:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\nbutton.btn-duel-on {\n background: radial-gradient(60.65% 30.62% at 50% 3.13%, #2a2b30 0%, #1b1c22 100%);\n background-color: #121212;\n border: 1px solid #58ffff;\n border-radius: 2px;\n margin: 1.5rem 0 0;\n width: 100%;\n text-transform: initial;\n cursor: pointer;\n}\nbutton.btn-duel-on span:first-child {\n color: #ffffff;\n}\nbutton.btn-duel-on:hover, button.btn-duel-on:focus, button.btn-duel-on.active, button.btn-duel-on:disabled {\n background-color: black;\n}\nbutton.btn-duel-on:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\nbutton.btn-profile-next {\n background: radial-gradient(105.25% 64.58% at 49.68% 70.83%, rgba(226, 137, 4, 0.5) 0%, rgba(255, 255, 255, 0) 100%), #f1c017;\n background-color: #e3b82a;\n border: 1px solid #e3b82a;\n border-radius: 2px;\n margin: 1.5rem 0 0;\n width: 100%;\n text-transform: initial;\n cursor: pointer;\n}\nbutton.btn-profile-next span:first-child {\n color: #000000;\n}\nbutton.btn-profile-next:hover, button.btn-profile-next:focus, button.btn-profile-next.active, button.btn-profile-next:disabled {\n background-color: #b89318;\n}\nbutton.btn-profile-next:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\nbutton.btn-profile-back {\n background: none;\n background-color: none;\n border: 1px solid #e0e0e0;\n border-radius: 2px;\n margin: 1.5rem 0 0;\n width: 100%;\n text-transform: initial;\n cursor: pointer;\n}\nbutton.btn-profile-back span:first-child {\n color: #e0e0e0;\n}\nbutton.btn-profile-back:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n/** BLACK **/\n/** RED **/\n/** YELLOW **/\n/** ORANGE **/\n/** BLUE **/\n/** GREEN **/\n/** WHITE **/\n/** GREY **/\n/** App colors **/\n/** TABS GRADIENT **/\n/** SCROLLBAR **/\n.card {\n background: linear-gradient(180deg, #323339 0%, #25262b 100%);\n box-sizing: border-box;\n box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.75);\n border-radius: 4px;\n padding: 16px;\n}\n.card:hover {\n background: linear-gradient(180deg, rgba(70, 71, 77, 0.7) 0%, rgba(57, 58, 63, 0.7) 100%);\n}\n.card.rich-card {\n padding: 24px 16px;\n}\n\n/** BLACK **/\n/** RED **/\n/** YELLOW **/\n/** ORANGE **/\n/** BLUE **/\n/** GREEN **/\n/** WHITE **/\n/** GREY **/\n/** App colors **/\n/** TABS GRADIENT **/\n/** SCROLLBAR **/\ndiv.modal-root .MuiBackdrop-root {\n background-color: hsla(231deg, 11%, 12%, 0.85);\n}\n\ndiv.modal-paper {\n background: linear-gradient(180deg, #323339 0%, #25262b 100%);\n width: 36rem;\n max-width: 100%;\n max-height: 90vh;\n padding: 2rem;\n box-sizing: border-box;\n box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.55);\n border-radius: 4px;\n margin: 0 0 0 13.75rem;\n align-items: center;\n color: #ffffff;\n}\n@media only screen and (max-width : 1023px) {\n div.modal-paper {\n width: 35rem;\n margin: 0;\n }\n}\n@media only screen and (max-width : 768px) {\n div.modal-paper {\n padding: 1rem 1rem 1.5rem;\n width: 85%;\n max-width: 35rem;\n margin: 0;\n }\n}\ndiv.modal-paper.no-padding {\n padding: 0;\n}\ndiv.modal-paper.blue-border {\n border: 1px solid rgba(88, 255, 255, 0.2509803922);\n}\ndiv.modal-paper.blue-light-border {\n border: 1px solid #61f0f2;\n}\ndiv.modal-paper.yellow-border {\n border: 1px solid rgba(227, 184, 42, 0.4);\n}\ndiv.modal-paper .modal-paper-close-button {\n position: absolute;\n top: 0.5rem;\n right: 0.5rem;\n padding: 5px 5px;\n z-index: 10;\n}\n\ndiv.modal-paper-full-screen {\n background: linear-gradient(180deg, #323339 0%, #25262b 100%);\n width: 100%;\n max-width: 100%;\n height: 100%;\n max-height: 100%;\n padding: 0;\n margin: 0;\n box-sizing: border-box;\n box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.55);\n border-radius: 4px;\n color: #ffffff;\n display: flex;\n align-items: center;\n}\ndiv.modal-paper-full-screen.dark-background {\n background: #121212;\n}\n\n/** BLACK **/\n/** RED **/\n/** YELLOW **/\n/** ORANGE **/\n/** BLUE **/\n/** GREEN **/\n/** WHITE **/\n/** GREY **/\n/** App colors **/\n/** TABS GRADIENT **/\n/** SCROLLBAR **/\ndiv.expansion-panel-root {\n margin: 1.2rem 0;\n color: #e0e0e0;\n background: linear-gradient(180deg, #323339 0%, #25262b 100%);\n border-radius: 4px;\n box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.75);\n transition: background-color 0.6s ease;\n box-sizing: border-box;\n}\ndiv.expansion-panel-root.Mui-expanded:first-child {\n margin: 1.2rem 0;\n}\ndiv.expansion-panel-root.Mui-expanded:last-child {\n margin: 1.2rem 0;\n}\ndiv.expansion-panel-root.red-border {\n border: 1px solid #d25959;\n}\n\ndiv.expansion-panel-summary {\n padding: 0.25rem 1.2rem;\n min-height: 4rem;\n}\ndiv.expansion-panel-summary.Mui-focused {\n border-radius: 4px;\n background-color: unset;\n box-shadow: 0 0 0 1px #e0e0e0;\n}\ndiv.expansion-panel-summary.Mui-expanded {\n min-height: 4rem;\n}\ndiv.expansion-panel-summary.Mui-expanded.small {\n min-height: 3rem;\n}\ndiv.expansion-panel-summary.small {\n padding: 0 1.2rem;\n min-height: 3rem;\n}\ndiv.expansion-panel-summary.bold-text {\n font-weight: bold;\n}\n\ndiv.expansion-panel-content {\n display: flex;\n align-items: center;\n}\ndiv.expansion-panel-content.Mui-expanded {\n margin: 0.75rem 0;\n}\n\ndiv.expansion-panel-details {\n padding: 0 1.2rem 1.2rem;\n}\n\n/** BLACK **/\n/** RED **/\n/** YELLOW **/\n/** ORANGE **/\n/** BLUE **/\n/** GREEN **/\n/** WHITE **/\n/** GREY **/\n/** App colors **/\n/** TABS GRADIENT **/\n/** SCROLLBAR **/\na {\n color: #deaf0e;\n}\na:visited {\n color: #deaf0e;\n}\n\na:focus {\n outline: none;\n box-shadow: inset 0 0 0 1px #e0e0e0;\n}\na:focus > div:first-child {\n box-shadow: 0 0 0 1px #e0e0e0;\n}\n\na.MuiLink-underlineHover:hover {\n text-decoration: none;\n}\n\na.MuiTypography-colorPrimary {\n color: #e0e0e0;\n}\n\n:root {\n white-space: pre-line;\n --blue: #58ffff;\n --blue40: rgba(88, 255, 255, 0.2509803922);\n --blueBackground: radial-gradient(105.25% 64.58% at 49.68% 70.83%, rgba(1, 153, 163, 0.5) 0%, rgba(255, 255, 255, 0) 100%), #58ffff;\n --blueRadialGradient: radial-gradient(105.25% 64.58% at 49.68% 70.83%, rgba(1, 153, 163, 0.5) 0%, rgba(255, 255, 255, 0) 100%), #58ffff;\n --blueRadialGradientTrans: radial-gradient(circle, #58ffff 0%, rgba(255, 255, 255, 0) 100%);\n --elecColor: #d87b39;\n --elecColor40: rgba(216, 123, 57, 0.4);\n --elecCompareColor: #e2bca1;\n --gasColor: #45d1b8;\n --gasColor40: rgba(69, 209, 184, 0.4);\n --gasCompareColor: #a8f7e9;\n --waterColor: #3a98ec;\n --waterColor40: rgba(58, 152, 236, 0.4);\n --waterCompareColor: #abd4fa;\n --multiColor: #e3b82a;\n --multiCompareColor: #ffd597;\n --redPrimary: #d25959;\n --greyBright: #e0e0e0;\n --greyDark: #7b7b7b;\n --textWhite: #ffffff;\n --softGrey: #a0a0a0;\n --darkLight: #25262b;\n --darkLight2: #121212;\n --textFont: Lato, sans-serif;\n --greyLinearGradientBackground: linear-gradient(180deg, #323339 0%, #25262b 100%);\n --multiColorRadialGradientTrans: radial-gradient(circle, #e3b82a 0%, rgba(255, 255, 255, 0) 100%);\n --elecColorRadialGradientTrans: radial-gradient(circle, #d87b39 0%, rgba(255, 255, 255, 0) 100%);\n --waterColorRadialGradientTrans: radial-gradient(circle, #3a98ec 0%, rgba(255, 255, 255, 0) 100%);\n --gasColorRadialGradientTrans: radial-gradient(circle, #e3b82a 0%, rgba(255, 255, 255, 0) 100%);\n --multiColorRadialGradient: radial-gradient(105.25% 64.58% at 49.68% 70.83%, rgba(226, 137, 4, 0.5) 0%, rgba(255, 255, 255, 0) 100%), #f1c017;\n --elecColorRadialGradient: radial-gradient(105.25% 64.58% at 49.68% 70.83%, rgba(158, 67, 2, 0.5) 0%, rgba(255, 255, 255, 0) 100%), #d87b39;\n --gasColorRadialGradient: radial-gradient(105.25% 64.58% at 49.68% 70.83%, rgba(4, 106, 88, 0.5) 0%, rgba(255, 255, 255, 0) 100%), #45d1b8;\n --waterColorRadialGradient: radial-gradient(105.25% 64.58% at 49.68% 70.83%, rgba(2, 93, 174, 0.5) 0%, rgba(255, 255, 255, 0) 100%), #3a98ec;\n}\n\n.application {\n overflow-x: hidden;\n background-color: #121212;\n}\n\n.accordion-icon {\n color: #ffffff;\n}\n\n.loaderContainer {\n height: 80vh;\n justify-content: center;\n display: flex;\n}", ""]); @@ -32924,12 +33037,12 @@ var _luxon = __webpack_require__("ExVU"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); +var _reactRedux = __webpack_require__("/MKj"); + var _dateChart = _interopRequireDefault(__webpack_require__("Ty7+")); var _chart = __webpack_require__("idK9"); -var _hooks = __webpack_require__("Zlw4"); - 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; } @@ -32950,12 +33063,12 @@ var Bar = function Bar(_ref) { weekdays = _ref.weekdays, _ref$clickable = _ref.clickable, clickable = _ref$clickable === void 0 ? true : _ref$clickable; - var dispatch = (0, _hooks.useAppDispatch)(); + var dispatch = (0, _reactRedux.useDispatch)(); - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo.chart; }), - selectedDate = _useAppSelector.selectedDate; + selectedDate = _useSelector.selectedDate; var _useState = (0, _react.useState)(false), _useState2 = (0, _slicedToArray2.default)(_useState, 2), @@ -33483,7 +33596,9 @@ var _userChallenge = __webpack_require__("dQx6"); var _userExploration = __webpack_require__("/rev"); -var _react = _interopRequireDefault(__webpack_require__("q1tI")); +var _react = _interopRequireWildcard(__webpack_require__("q1tI")); + +var _reactRedux = __webpack_require__("/MKj"); var _reactRouterDom = __webpack_require__("SOjZ"); @@ -33493,19 +33608,24 @@ var _usageEvent2 = _interopRequireDefault(__webpack_require__("dECN")); var _challenge2 = __webpack_require__("F6Xr"); -var _hooks = __webpack_require__("Zlw4"); - __webpack_require__("1RIw"); +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 ExplorationOngoing = function ExplorationOngoing(_ref) { var userChallenge = _ref.userChallenge; + var client = (0, _cozyClient.useClient)(); var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; - var client = (0, _cozyClient.useClient)(); - var dispatch = (0, _hooks.useAppDispatch)(); + var dispatch = (0, _reactRedux.useDispatch)(); var navigate = (0, _reactRouterDom.useNavigate)(); + var goBack = (0, _react.useCallback)(function () { + navigate(-1); + }, [navigate]); var startExploration = /*#__PURE__*/function () { var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { @@ -33595,9 +33715,7 @@ var ExplorationOngoing = function ExplorationOngoing(_ref) { } }, t('exploration.button_already_done')), /*#__PURE__*/_react.default.createElement(_Button.default, { "aria-label": t('exploration.accessibility.button_already_done'), - onClick: function onClick() { - return navigate(-1); - }, + onClick: goBack, classes: { root: 'btn-secondary-negative', label: 'text-16-normal' @@ -33876,22 +33994,22 @@ var _userExploration = __webpack_require__("/rev"); var _react = __webpack_require__("q1tI"); +var _reactRedux = __webpack_require__("/MKj"); + var _exploration = _interopRequireDefault(__webpack_require__("z8s1")); var _challenge = __webpack_require__("F6Xr"); -var _global = __webpack_require__("b3rE"); - -var _hooks = __webpack_require__("Zlw4"); +var _global = __webpack_require__("c4IZ"); var useExploration = function useExploration() { var client = (0, _cozyClient.useClient)(); - var dispatch = (0, _hooks.useAppDispatch)(); + var dispatch = (0, _reactRedux.useDispatch)(); - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo.challenge; }), - currentChallenge = _useAppSelector.currentChallenge; + currentChallenge = _useSelector.currentChallenge; var exploration = currentChallenge ? currentChallenge.exploration : null; var ecogestureId = exploration ? exploration.ecogesture_id : ''; @@ -34023,9 +34141,9 @@ var _cozyClient = __webpack_require__("SH7X"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _action = _interopRequireDefault(__webpack_require__("5e6O")); +var _reactRedux = __webpack_require__("/MKj"); -var _hooks = __webpack_require__("Zlw4"); +var _action = _interopRequireDefault(__webpack_require__("5e6O")); __webpack_require__("09DC"); @@ -34038,11 +34156,11 @@ var ActionList = function ActionList(_ref) { setShowList = _ref.setShowList; var client = (0, _cozyClient.useClient)(); - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo; }), - fluidTypes = _useAppSelector.global.fluidTypes, - isProfileTypeCompleted = _useAppSelector.profile.isProfileTypeCompleted; + fluidTypes = _useSelector.global.fluidTypes, + isProfileTypeCompleted = _useSelector.profile.isProfileTypeCompleted; var _useState = (0, _react.useState)(), _useState2 = (0, _slicedToArray2.default)(_useState, 2), @@ -34715,105 +34833,12 @@ if(false) {} /***/ }), -/***/ "uFCc": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__("TqRt"); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.defaultAction = exports.default = void 0; - -var _defineProperty2 = _interopRequireDefault(__webpack_require__("lSNA")); - -var Sentry = _interopRequireWildcard(__webpack_require__("agHs")); - -var _redux = __webpack_require__("ANjH"); - -var _reduxDevtoolsExtension = __webpack_require__("5HXA"); - -var _reduxThunk = _interopRequireDefault(__webpack_require__("sINF")); - -var _analysis = __webpack_require__("JQjK"); - -var _challenge = __webpack_require__("F6Xr"); - -var _chart = __webpack_require__("idK9"); - -var _global = __webpack_require__("b3rE"); - -var _modal = __webpack_require__("oKH6"); - -var _profile = __webpack_require__("QCMq"); - -var _profileEcogesture = __webpack_require__("L0ad"); - -var _profileType = __webpack_require__("ZI2v"); - -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; } - -var defaultAction = { - type: null, - payload: undefined -}; -exports.defaultAction = defaultAction; -var ecolyoReducer = (0, _redux.combineReducers)({ - analysis: _analysis.analysisSlice.reducer, - challenge: _challenge.challengeSlice.reducer, - chart: _chart.chartSlice.reducer, - global: _global.globalSlice.reducer, - modal: _modal.modalSlice.reducer, - profile: _profile.profileReducer, - profileEcogesture: _profileEcogesture.profileEcogestureReducer, - profileType: _profileType.profileTypeSlice.reducer -}); - -var appActions = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, _analysis.analysisSlice.actions), _challenge.challengeSlice.actions), _chart.chartSlice.actions), _modal.modalSlice.actions), _profileType.profileTypeSlice.actions), _global.globalSlice.actions); // TODO refactor types with AppActionsTypes = typeof appActions - - -var sentryReduxEnhancer = Sentry.createReduxEnhancer({}); - -var configureStore = function configureStore(client, persistedState) { - var middlewares = [_reduxThunk.default.withExtraArgument({ - client: client - })]; - - var composeEnhancers = (0, _reduxDevtoolsExtension.composeWithDevTools)({ - trace: true, - actionCreators: appActions - }) || _redux.compose; - - var store = (0, _redux.createStore)((0, _redux.combineReducers)({ - ecolyo: ecolyoReducer, - cozy: client.reducer(), - persistedState: persistedState - }), composeEnhancers( // eslint-disable-next-line prefer-spread - _redux.applyMiddleware.apply(null, middlewares), sentryReduxEnhancer)); - return store; -}; - -var _default = configureStore; // Infer the `RootState` and `AppDispatch` types from the store itself - -exports.default = _default; - -/***/ }), - /***/ "uHV9": /***/ (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.eg-selection-header {\n color: #e0e0e0;\n text-align: center;\n margin-top: -1rem;\n margin-bottom: 1rem;\n}", ""]); +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.eg-selection-loader {\n min-height: inherit;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n@media all and (min-width: 1023px) {\n .eg-selection-loader {\n min-height: 80vh;\n }\n}\n\n.eg-selection-header {\n color: #e0e0e0;\n text-align: center;\n margin-top: -1rem;\n margin-bottom: 1rem;\n}", ""]); @@ -35534,9 +35559,9 @@ var _Layout = __webpack_require__("Bh3+"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _reactRouterDom = __webpack_require__("SOjZ"); +var _reactRedux = __webpack_require__("/MKj"); -var _hooks = __webpack_require__("Zlw4"); +var _reactRouterDom = __webpack_require__("SOjZ"); 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); } @@ -35546,11 +35571,11 @@ var App = function App(_ref) { var tracker = _ref.tracker; var location = (0, _reactRouterDom.useLocation)(); - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { + var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.ecolyo; }), - termsStatus = _useAppSelector.global.termsStatus, - onboarding = _useAppSelector.profile.onboarding; + termsStatus = _useSelector.global.termsStatus, + onboarding = _useSelector.profile.onboarding; var webviewIntent = (0, _cozyIntent.useWebviewIntent)(); (0, _react.useEffect)(function () { @@ -36977,14 +37002,14 @@ var _usageEvent = __webpack_require__("/fHX"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); +var _reactRedux = __webpack_require__("/MKj"); + var _challenge = _interopRequireDefault(__webpack_require__("kdea")); var _usageEvent2 = _interopRequireDefault(__webpack_require__("dECN")); var _challenge2 = __webpack_require__("F6Xr"); -var _hooks = __webpack_require__("Zlw4"); - var _utils = __webpack_require__("c+yx"); var _ChallengeNoFluidModal = _interopRequireDefault(__webpack_require__("rDu6")); @@ -36997,27 +37022,23 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && var ChallengeCardUnlocked = function ChallengeCardUnlocked(_ref) { var userChallenge = _ref.userChallenge; + var client = (0, _cozyClient.useClient)(); + var dispatch = (0, _reactRedux.useDispatch)(); var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; - var client = (0, _cozyClient.useClient)(); - - var _useAppSelector = (0, _hooks.useAppSelector)(function (state) { - return state.ecolyo; - }), - currentChallenge = _useAppSelector.challenge.currentChallenge, - _useAppSelector$globa = _useAppSelector.global, - fluidTypes = _useAppSelector$globa.fluidTypes, - fluidStatus = _useAppSelector$globa.fluidStatus; - - var dispatch = (0, _hooks.useAppDispatch)(); - var _useState = (0, _react.useState)(false), _useState2 = (0, _slicedToArray2.default)(_useState, 2), openNoFluidModal = _useState2[0], setopenNoFluidModal = _useState2[1]; + var _useSelector = (0, _reactRedux.useSelector)(function (state) { + return state.ecolyo.global; + }), + fluidTypes = _useSelector.fluidTypes, + fluidStatus = _useSelector.fluidStatus; + var _useState3 = (0, _react.useState)(_challengeLocked.default), _useState4 = (0, _slicedToArray2.default)(_useState3, 2), challengeIcon = _useState4[0], @@ -37121,8 +37142,7 @@ var ChallengeCardUnlocked = function ChallengeCardUnlocked(_ref) { classes: { root: 'btn-duel-active', label: 'text-16-bold' - }, - disabled: currentChallenge !== null + } }, t('challenge.card_unlocked.button_launch'))), /*#__PURE__*/_react.default.createElement(_ChallengeNoFluidModal.default, { open: openNoFluidModal, handleCloseClick: toggleNoFluidModal @@ -37222,12 +37242,12 @@ var _userChallenge = __webpack_require__("dQx6"); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); +var _reactRedux = __webpack_require__("/MKj"); + var _challenge = _interopRequireDefault(__webpack_require__("kdea")); var _challenge2 = __webpack_require__("F6Xr"); -var _hooks = __webpack_require__("Zlw4"); - __webpack_require__("8Eoq"); 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); } @@ -37239,12 +37259,12 @@ var ActionModal = function ActionModal(_ref) { action = _ref.action, handleCloseClick = _ref.handleCloseClick, userChallenge = _ref.userChallenge; + var dispatch = (0, _reactRedux.useDispatch)(); var client = (0, _cozyClient.useClient)(); var _useI18n = (0, _I18n.useI18n)(), t = _useI18n.t; - var dispatch = (0, _hooks.useAppDispatch)(); var launchAction = (0, _react.useCallback)( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { var challengeService, updatedChallenge; return _regenerator.default.wrap(function _callee$(_context) { diff --git a/index.html b/index.html index 6ee494a90e09caa23452dde5e3de6d42a7dc7e31..54b5fcac61da30ddb43d94f55f49f5ccadabdd2c 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -<!DOCTYPE html><html lang="{{.Locale}}"><head><meta charset="utf-8"><title>Ecolyo</title><link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32"><link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16"><!-- PWA Manifest --><link rel="manifest" href="/manifest.json" crossorigin="use-credentials"><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#297EF2"><meta name="viewport" content="width=device-width,height=device-height,initial-scale=1,viewport-fit=cover"><!-- PWA Chrome --><link rel="icon" sizes="192x192" href="/android-chrome-192x192.png"><link rel="icon" sizes="512x512" href="/android-chrome-512x512.png"><!-- PWA iOS --><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="apple-touch-startup-image" href="/apple-touch-icon.png"><meta name="apple-mobile-web-app-title" content="Ecolyo"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><!-- PWA Colors --><meta name="theme-color" content="#343641"><meta name="background-color" content="#121212">{{.ThemeCSS}} {{.CozyBar}}<script src="//{{.Domain}}/assets/js/piwik.js"></script></head><body><div role="application" class="application" data-cozy="{{.CozyData}}"><script src="vendors/ecolyo.69beab954af56959f24c.js"></script><script src="app/ecolyo.ed0861bcd1528132798c.js"></script></div></body></html> \ No newline at end of file +<!DOCTYPE html><html lang="{{.Locale}}"><head><meta charset="utf-8"><title>Ecolyo</title><link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32"><link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16"><!-- PWA Manifest --><link rel="manifest" href="/manifest.json" crossorigin="use-credentials"><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#297EF2"><meta name="viewport" content="width=device-width,height=device-height,initial-scale=1,viewport-fit=cover"><!-- PWA Chrome --><link rel="icon" sizes="192x192" href="/android-chrome-192x192.png"><link rel="icon" sizes="512x512" href="/android-chrome-512x512.png"><!-- PWA iOS --><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="apple-touch-startup-image" href="/apple-touch-icon.png"><meta name="apple-mobile-web-app-title" content="Ecolyo"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><!-- PWA Colors --><meta name="theme-color" content="#343641"><meta name="background-color" content="#121212">{{.ThemeCSS}} {{.CozyBar}}<script src="//{{.Domain}}/assets/js/piwik.js"></script></head><body><div role="application" class="application" data-cozy="{{.CozyData}}"><script src="vendors/ecolyo.69beab954af56959f24c.js"></script><script src="app/ecolyo.9c6f20e5996a8ab34cd7.js"></script></div></body></html> \ No newline at end of file diff --git a/services/aggregatorUsageEvents/ecolyo.js b/services/aggregatorUsageEvents/ecolyo.js index e4c8c0ba30957ababcbf9a4bf770295dbe77b069..0208c1ccea52ce4a099763b4610e9ddcace06d23 100644 --- a/services/aggregatorUsageEvents/ecolyo.js +++ b/services/aggregatorUsageEvents/ecolyo.js @@ -19068,7 +19068,6 @@ exports.UserChallengeUpdateFlag = UserChallengeUpdateFlag; UserChallengeUpdateFlag[UserChallengeUpdateFlag["DUEL_CONSUMPTION"] = 13] = "DUEL_CONSUMPTION"; UserChallengeUpdateFlag[UserChallengeUpdateFlag["DUEL_WIN"] = 14] = "DUEL_WIN"; UserChallengeUpdateFlag[UserChallengeUpdateFlag["DUEL_LOSS"] = 15] = "DUEL_LOSS"; - UserChallengeUpdateFlag[UserChallengeUpdateFlag["DUEL_RESET"] = 16] = "DUEL_RESET"; UserChallengeUpdateFlag[UserChallengeUpdateFlag["QUIZ"] = 20] = "QUIZ"; UserChallengeUpdateFlag[UserChallengeUpdateFlag["QUIZ_START"] = 21] = "QUIZ_START"; UserChallengeUpdateFlag[UserChallengeUpdateFlag["QUIZ_DONE"] = 22] = "QUIZ_DONE"; @@ -44525,15 +44524,6 @@ class ChallengeService { }); break; - case _userChallenge2.UserChallengeUpdateFlag.DUEL_RESET: - updatedDuel = await duelService.resetUserDuel(userChallenge.duel); - updatedUserChallenge = _objectSpread(_objectSpread({}, userChallenge), {}, { - state: _userChallenge2.UserChallengeState.DUEL, - duel: updatedDuel, - success: _userChallenge2.UserChallengeSuccess.ONGOING - }); - break; - case _userChallenge2.UserChallengeUpdateFlag.QUIZ_START: updatedQuiz = await quizService.startUserQuiz(userChallenge.quiz); updatedUserChallenge = _objectSpread(_objectSpread({}, userChallenge), {}, { @@ -96754,36 +96744,17 @@ class ConsumptionDataManager { }; return result; } - /** - * Check that fluidTypes contains data over a timestep. - * @returns an array of FluidType that contains data - */ - - async getFluidsWithData(fluidTypes, timeStep) { - const fluidsWithData = []; + async getExportableFluids(fluidTypes, timeStep) { + const exportableFluids = []; for (const fluidType of fluidTypes) { if (await this.checkDoctypeEntries(fluidType, timeStep)) { - fluidsWithData.push(fluidType); - } - } - - return fluidsWithData; - } - - async getFluidsWithDataForTimePeriod(fluidTypes, timePeriod, timeStep = _timeStep.TimeStep.MONTH) { - const fluidsWithData = []; - - for (const fluidType of fluidTypes) { - const data = await this._queryRunnerService.fetchFluidData(timePeriod, timeStep, fluidType); - - if (data !== null && data !== void 0 && data.length) { - fluidsWithData.push(fluidType); + exportableFluids.push(fluidType); } } - return fluidsWithData; + return exportableFluids; } async fetchAllFirstDateData(fluidTypes, timeStep) { @@ -100256,21 +100227,6 @@ class DuelService { return updatedUserDuel; } - /** - * Return duel with updated state to UserDuelState.UNLOCKED - * @param {UserDuel} userDuel - userDuel to reset - * @returns {UserDuel} - */ - - - async resetUserDuel(userDuel) { - return _objectSpread(_objectSpread({}, userDuel), {}, { - startDate: null, - state: _userDuel.UserDuelState.UNLOCKED, - threshold: 0, - userConsumption: 0 - }); - } /** * Return duel created from duel entity * @param {DuelEntity} duel - userDuel to update diff --git a/services/consumptionAlert/ecolyo.js b/services/consumptionAlert/ecolyo.js index 964d2ec46c699366146f739b4efd142052a02614..ae4f62b3feb4f96920a91657b3f364039cd2e009 100644 --- a/services/consumptionAlert/ecolyo.js +++ b/services/consumptionAlert/ecolyo.js @@ -94435,36 +94435,17 @@ class ConsumptionDataManager { }; return result; } - /** - * Check that fluidTypes contains data over a timestep. - * @returns an array of FluidType that contains data - */ - - async getFluidsWithData(fluidTypes, timeStep) { - const fluidsWithData = []; + async getExportableFluids(fluidTypes, timeStep) { + const exportableFluids = []; for (const fluidType of fluidTypes) { if (await this.checkDoctypeEntries(fluidType, timeStep)) { - fluidsWithData.push(fluidType); - } - } - - return fluidsWithData; - } - - async getFluidsWithDataForTimePeriod(fluidTypes, timePeriod, timeStep = _timeStep.TimeStep.MONTH) { - const fluidsWithData = []; - - for (const fluidType of fluidTypes) { - const data = await this._queryRunnerService.fetchFluidData(timePeriod, timeStep, fluidType); - - if (data !== null && data !== void 0 && data.length) { - fluidsWithData.push(fluidType); + exportableFluids.push(fluidType); } } - return fluidsWithData; + return exportableFluids; } async fetchAllFirstDateData(fluidTypes, timeStep) { diff --git a/services/enedisHalfHourMonthlyAnalysis/ecolyo.js b/services/enedisHalfHourMonthlyAnalysis/ecolyo.js index 8f9e163e54553dfddbca4f02411668ecf2aca046..d3629c5f63d24ba971241cb0ae227a01e6b26976 100644 --- a/services/enedisHalfHourMonthlyAnalysis/ecolyo.js +++ b/services/enedisHalfHourMonthlyAnalysis/ecolyo.js @@ -94435,36 +94435,17 @@ class ConsumptionDataManager { }; return result; } - /** - * Check that fluidTypes contains data over a timestep. - * @returns an array of FluidType that contains data - */ - - async getFluidsWithData(fluidTypes, timeStep) { - const fluidsWithData = []; + async getExportableFluids(fluidTypes, timeStep) { + const exportableFluids = []; for (const fluidType of fluidTypes) { if (await this.checkDoctypeEntries(fluidType, timeStep)) { - fluidsWithData.push(fluidType); - } - } - - return fluidsWithData; - } - - async getFluidsWithDataForTimePeriod(fluidTypes, timePeriod, timeStep = _timeStep.TimeStep.MONTH) { - const fluidsWithData = []; - - for (const fluidType of fluidTypes) { - const data = await this._queryRunnerService.fetchFluidData(timePeriod, timeStep, fluidType); - - if (data !== null && data !== void 0 && data.length) { - fluidsWithData.push(fluidType); + exportableFluids.push(fluidType); } } - return fluidsWithData; + return exportableFluids; } async fetchAllFirstDateData(fluidTypes, timeStep) { diff --git a/services/fluidsPrices/ecolyo.js b/services/fluidsPrices/ecolyo.js index cb44f7e2c482a421ac0bc6ec51be1e87093f5de6..a80b12264a3699e7e926c6300c0b46b59186d1a6 100644 --- a/services/fluidsPrices/ecolyo.js +++ b/services/fluidsPrices/ecolyo.js @@ -94435,36 +94435,17 @@ class ConsumptionDataManager { }; return result; } - /** - * Check that fluidTypes contains data over a timestep. - * @returns an array of FluidType that contains data - */ - - async getFluidsWithData(fluidTypes, timeStep) { - const fluidsWithData = []; + async getExportableFluids(fluidTypes, timeStep) { + const exportableFluids = []; for (const fluidType of fluidTypes) { if (await this.checkDoctypeEntries(fluidType, timeStep)) { - fluidsWithData.push(fluidType); - } - } - - return fluidsWithData; - } - - async getFluidsWithDataForTimePeriod(fluidTypes, timePeriod, timeStep = _timeStep.TimeStep.MONTH) { - const fluidsWithData = []; - - for (const fluidType of fluidTypes) { - const data = await this._queryRunnerService.fetchFluidData(timePeriod, timeStep, fluidType); - - if (data !== null && data !== void 0 && data.length) { - fluidsWithData.push(fluidType); + exportableFluids.push(fluidType); } } - return fluidsWithData; + return exportableFluids; } async fetchAllFirstDateData(fluidTypes, timeStep) { diff --git a/services/monthlyReportNotification/ecolyo.js b/services/monthlyReportNotification/ecolyo.js index b93976e58e1ee62d8cdbe595a74caff1c9d6dc59..fdf331d5738a15963b54c2148900a98fc8e26aba 100644 --- a/services/monthlyReportNotification/ecolyo.js +++ b/services/monthlyReportNotification/ecolyo.js @@ -94435,36 +94435,17 @@ class ConsumptionDataManager { }; return result; } - /** - * Check that fluidTypes contains data over a timestep. - * @returns an array of FluidType that contains data - */ - - async getFluidsWithData(fluidTypes, timeStep) { - const fluidsWithData = []; + async getExportableFluids(fluidTypes, timeStep) { + const exportableFluids = []; for (const fluidType of fluidTypes) { if (await this.checkDoctypeEntries(fluidType, timeStep)) { - fluidsWithData.push(fluidType); - } - } - - return fluidsWithData; - } - - async getFluidsWithDataForTimePeriod(fluidTypes, timePeriod, timeStep = _timeStep.TimeStep.MONTH) { - const fluidsWithData = []; - - for (const fluidType of fluidTypes) { - const data = await this._queryRunnerService.fetchFluidData(timePeriod, timeStep, fluidType); - - if (data !== null && data !== void 0 && data.length) { - fluidsWithData.push(fluidType); + exportableFluids.push(fluidType); } } - return fluidsWithData; + return exportableFluids; } async fetchAllFirstDateData(fluidTypes, timeStep) {