diff --git a/10/ecolyo.b99f6862feeb715a9d3f.js b/10/ecolyo.2c80746565ffb33a7e2c.js similarity index 93% rename from 10/ecolyo.b99f6862feeb715a9d3f.js rename to 10/ecolyo.2c80746565ffb33a7e2c.js index b8285fccaa6bff0d26f7580f62d4f450b9224a1a..4bb240295fc5d0c5de8ba90b0876ea29788fed5d 100644 --- a/10/ecolyo.b99f6862feeb715a9d3f.js +++ b/10/ecolyo.2c80746565ffb33a7e2c.js @@ -88,6 +88,7 @@ var SingleEcogesture = function SingleEcogesture(_ref) { t = _useI18n.t; var client = (0, _cozyClient.useClient)(); + var history = (0, _reactRouterDom.useHistory)(); var location = (0, _reactRouterDom.useLocation)(); var _useState = (0, _react.useState)(), @@ -303,7 +304,10 @@ var SingleEcogesture = function SingleEcogesture(_ref) { return ecogesture ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_CozyBar.default, { titleKey: t('common.title_ecogesture'), isNotKey: true, - displayBackArrow: true + displayBackArrow: true, + backFunction: function backFunction() { + return history.push('/ecogestures'); + } }), /*#__PURE__*/_react.default.createElement(_Header.default, { setHeaderHeight: defineHeaderHeight, desktopTitleKey: t('common.title_ecogesture'), @@ -334,7 +338,7 @@ var SingleEcogesture = function SingleEcogesture(_ref) { }, /*#__PURE__*/_react.default.createElement("div", { className: "long-name text-18-bold" }, ecogesture.longName), /*#__PURE__*/_react.default.createElement("div", { - className: (0, _classnames.default)('description text-18-normal-150', (0, _defineProperty2.default)({}, 'block', isMoreDetail === true)) + className: (0, _classnames.default)('description text-16-normal-150', (0, _defineProperty2.default)({}, 'block', isMoreDetail === true)) }, ecogesture.longDescription), /*#__PURE__*/_react.default.createElement("div", { className: "toggle-text text-15-normal", onClick: toggleMoreDetail @@ -437,7 +441,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.se-loader-container {\n min-height: inherit;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n@media all and (min-width: 1023px) {\n .se-loader-container {\n min-height: 80vh;\n }\n}\n\n.single-ecogesture {\n color: #e0e0e0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 1rem 1.2rem;\n}\n.single-ecogesture .icon-container {\n margin: auto;\n max-width: 180px;\n width: 100%;\n display: flex;\n}\n.single-ecogesture .icon-container .icon-big {\n margin: auto;\n}\n.single-ecogesture .details {\n flex-direction: column;\n display: flex;\n}\n.single-ecogesture .details .title {\n color: #a0a0a0;\n font-weight: 700;\n}\n.single-ecogesture .details .efficiency {\n display: flex;\n text-align: center;\n margin: 0.7rem auto 0;\n}\n.single-ecogesture .details .efficiency .text {\n margin-right: 0.7rem;\n}\n.single-ecogesture .styled-container {\n line-height: 150%;\n background: radial-gradient(60.65% 30.62% at 50% 3.13%, #2a2b30 0%, #1b1c22 100%);\n border: 3px solid rgba(88, 255, 255, 0.2509803922);\n padding: 1.5rem 0.6rem;\n border-radius: 50px 1px 50px 1px;\n margin: 1.5rem 0 1rem;\n max-width: 500px;\n}\n.single-ecogesture .styled-container .long-name {\n text-align: center;\n font-weight: bold;\n color: white;\n}\n.single-ecogesture .styled-container .description {\n display: none;\n margin: 0.5rem;\n text-align: left;\n}\n.single-ecogesture .styled-container .block {\n display: block !important;\n}\n.single-ecogesture .styled-container .toggle-text {\n text-align: center;\n text-decoration: underline;\n margin-top: 1.5rem;\n cursor: pointer;\n}\n.single-ecogesture .buttons-selection {\n display: flex;\n width: 100%;\n justify-content: center;\n}\n.single-ecogesture .buttons-selection button.btn-secondary-negative {\n height: 45px;\n max-width: 160px;\n width: 100%;\n border-radius: 4px;\n}\n.single-ecogesture .buttons-selection .objective-btn {\n margin-right: 0.5rem;\n}\n.single-ecogesture .buttons-selection .objective-btn span {\n color: #e0e0e0;\n}\n.single-ecogesture .buttons-selection .objective-btn.active {\n background: radial-gradient(105.25% 64.58% at 49.68% 70.83%, rgba(12, 44, 91, 0.5) 0%, rgba(255, 255, 255, 0) 100%), #4470b3;\n border-color: transparent;\n}\n.single-ecogesture .buttons-selection .objective-btn.active span {\n color: white;\n}\n.single-ecogesture .buttons-selection .doing-btn span {\n color: #e0e0e0;\n}\n.single-ecogesture .buttons-selection .doing-btn.active {\n background: radial-gradient(105.25% 64.58% at 49.68% 70.83%, rgba(41, 87, 33, 0.5) 0%, rgba(255, 255, 255, 0) 100%), #21a90b;\n border-color: transparent;\n}\n.single-ecogesture .buttons-selection .doing-btn.active span {\n color: white;\n}\n.single-ecogesture .buttons-selection .MuiIconButton-label {\n justify-content: flex-start;\n color: white;\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.se-loader-container {\n min-height: inherit;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n@media all and (min-width: 1023px) {\n .se-loader-container {\n min-height: 80vh;\n }\n}\n\n.single-ecogesture {\n color: #e0e0e0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 1rem 1.2rem;\n}\n.single-ecogesture .icon-container {\n margin: auto;\n max-width: 180px;\n width: 100%;\n display: flex;\n}\n.single-ecogesture .icon-container .icon-big {\n margin: auto;\n}\n.single-ecogesture .details {\n flex-direction: column;\n display: flex;\n}\n.single-ecogesture .details .title {\n color: #a0a0a0;\n font-weight: 700;\n}\n.single-ecogesture .details .efficiency {\n display: flex;\n text-align: center;\n margin: 0.7rem auto 0;\n}\n.single-ecogesture .details .efficiency .text {\n margin-right: 0.7rem;\n}\n.single-ecogesture .styled-container {\n line-height: 150%;\n padding: 1rem;\n margin: 1.5rem 0 1rem;\n max-width: 500px;\n}\n.single-ecogesture .styled-container .long-name {\n text-align: center;\n color: white;\n}\n.single-ecogesture .styled-container .description {\n display: none;\n margin: 1.5rem 0.5rem 0.5rem 0.5rem;\n text-align: left;\n}\n.single-ecogesture .styled-container .block {\n display: block !important;\n}\n.single-ecogesture .styled-container .toggle-text {\n text-align: center;\n text-decoration: underline;\n margin-top: 1.5rem;\n cursor: pointer;\n}\n.single-ecogesture .buttons-selection {\n width: 100%;\n display: flex;\n gap: 0.5rem;\n justify-content: center;\n}\n.single-ecogesture .buttons-selection button {\n margin: 0;\n}\n.single-ecogesture .buttons-selection button.btn-secondary-negative {\n height: 45px;\n max-width: 160px;\n width: 100%;\n border-radius: 4px;\n}\n.single-ecogesture .buttons-selection .objective-btn span {\n color: #e0e0e0;\n}\n.single-ecogesture .buttons-selection .objective-btn.active {\n background: radial-gradient(105.25% 64.58% at 49.68% 70.83%, rgba(12, 44, 91, 0.5) 0%, rgba(255, 255, 255, 0) 100%), #4470b3;\n border-color: transparent;\n}\n.single-ecogesture .buttons-selection .objective-btn.active span {\n color: white;\n}\n.single-ecogesture .buttons-selection .doing-btn span {\n color: #e0e0e0;\n}\n.single-ecogesture .buttons-selection .doing-btn.active {\n background: radial-gradient(105.25% 64.58% at 49.68% 70.83%, rgba(41, 87, 33, 0.5) 0%, rgba(255, 255, 255, 0) 100%), #21a90b;\n border-color: transparent;\n}\n.single-ecogesture .buttons-selection .doing-btn.active span {\n color: white;\n}\n.single-ecogesture .buttons-selection .MuiIconButton-label {\n justify-content: flex-start;\n color: white;\n}", ""]); diff --git a/2/ecolyo.5c7bdecea22cf638bde5.js b/2/ecolyo.7e00bbcedd3d4f071dd4.js similarity index 99% rename from 2/ecolyo.5c7bdecea22cf638bde5.js rename to 2/ecolyo.7e00bbcedd3d4f071dd4.js index ad81cb181f4d9274fcc27c2779e5a9bfecdf150b..fd7730033953c58b06eca225fbcec541949bee9e 100644 --- a/2/ecolyo.5c7bdecea22cf638bde5.js +++ b/2/ecolyo.7e00bbcedd3d4f071dd4.js @@ -2174,7 +2174,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.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: 0px 16px;\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}\n.no-profile div {\n text-align: center;\n color: #ffffff;\n}\n.no-profile button {\n max-width: 320px;\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}", ""]); +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: 0px 16px;\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}", ""]); @@ -2185,7 +2185,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.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 .loader-container {\n text-align: center;\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 1rem 0;\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}", ""]); +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 .loader-container {\n text-align: center;\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}", ""]); diff --git a/3/ecolyo.0e05e201cde1d79de774.js b/3/ecolyo.b6b6d00740ffe3a09bc9.js similarity index 99% rename from 3/ecolyo.0e05e201cde1d79de774.js rename to 3/ecolyo.b6b6d00740ffe3a09bc9.js index 12bb2ee65475b633864b7c7c8055db71dc3679db..c087a20507d601919f776ba6ef3fa99375986ebf 100644 --- a/3/ecolyo.0e05e201cde1d79de774.js +++ b/3/ecolyo.b6b6d00740ffe3a09bc9.js @@ -3335,6 +3335,10 @@ Object.defineProperty(exports, "__esModule", { }); exports.default = void 0; +var _regenerator = _interopRequireDefault(__webpack_require__("o0o1")); + +var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__("yXPU")); + var _slicedToArray2 = _interopRequireDefault(__webpack_require__("J4zp")); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); @@ -3359,6 +3363,10 @@ var _reactRedux = __webpack_require__("/MKj"); var _global = __webpack_require__("c4IZ"); +var _usageEvent = __webpack_require__("/fHX"); + +var _usageEvent2 = _interopRequireDefault(__webpack_require__("dECN")); + 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; } @@ -3393,17 +3401,33 @@ var FormOAuth = function FormOAuth(_ref) { dispatch((0, _global.setShouldRefreshConsent)(false)); }, [dispatch]); - var startOAuth = (0, _react.useCallback)(function () { - // If first connexion, send the usage event - // if (konnector?.slug && fluidStatus.lastDataDate === null) { - // await UsageEventService.addEvent(client, { - // type: UsageEventType.KONNECTOR_ATTEMPT_EVENT, - // target: konnector.slug, - // result: 'error', - // }) - // } - setStatus(WAITING); - }, []); + var startOAuth = (0, _react.useCallback)( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { + return _regenerator.default.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + if (!(konnector !== null && konnector !== void 0 && konnector.slug && fluidStatus.lastDataDate === null)) { + _context.next = 3; + break; + } + + _context.next = 3; + return _usageEvent2.default.addEvent(client, { + type: _usageEvent.UsageEventType.KONNECTOR_ATTEMPT_EVENT, + target: konnector.slug, + result: 'error' + }); + + case 3: + setStatus(WAITING); + + case 4: + case "end": + return _context.stop(); + } + } + }, _callee); + })), [client, fluidStatus.lastDataDate, konnector]); var handleAccountId = (0, _react.useCallback)(function (accountId) { endOAuth(); onSuccess(accountId); @@ -6643,7 +6667,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.timestep-selector {\n display: flex;\n flex-direction: row;\n justify-content: space-evenly;\n align-items: flex-end;\n margin: auto;\n max-width: 45.75rem;\n height: 36px;\n}\n.timestep-selector .btn-today {\n background: transparent;\n background-color: transparent;\n border: 1px solid #a0a0a0;\n border-radius: 2px;\n margin: 1.5rem 0 0;\n width: 100%;\n text-transform: initial;\n cursor: pointer;\n max-width: 90px;\n border-radius: 4px;\n margin-top: 0;\n}\n.timestep-selector .btn-today span:first-child {\n color: #e0e0e0;\n}\n.timestep-selector .btn-today:disabled {\n cursor: not-allowed;\n}\n.timestep-selector .timestep-container {\n width: 100%;\n}\n.timestep-selector .timestep-bar {\n margin: 0 1rem 0 1.7rem;\n padding: 0;\n display: flex;\n justify-content: space-evenly;\n align-items: center;\n height: 3rem;\n}\n.timestep-selector .timestep-bar.elec-bar {\n margin-left: 1rem;\n}\n.timestep-selector .timestep-bar .circle {\n cursor: pointer;\n position: relative;\n display: block;\n width: 8px;\n height: 8px;\n border-radius: 100%;\n text-align: center;\n background-color: #a0a0a0;\n z-index: 1;\n transition: all 300ms ease;\n margin: 0 2px;\n}\n.timestep-selector .timestep-bar .circle .clickable-area {\n position: absolute;\n width: 35px;\n height: 35px;\n display: block;\n left: -14px;\n top: -15px;\n}\n.timestep-selector .timestep-bar .text {\n position: relative;\n display: block;\n top: 15px;\n left: -20px;\n text-align: center;\n color: #7b7b7b;\n width: 50px;\n overflow: visible;\n}\n@media only screen and (max-width: 355px) {\n .timestep-selector .timestep-bar .text {\n opacity: 0;\n }\n}\n.timestep-selector .timestep-bar .bar {\n width: 100%;\n position: relative;\n display: block;\n background-color: transparent;\n border-top: 1px dashed #a0a0a0;\n height: 0;\n z-index: 0;\n padding: 0 2px;\n}\n.timestep-selector .timestep-bar .bar:last-of-type {\n display: none;\n}\n.timestep-selector .timestep-bar .circle.active {\n background-color: white;\n width: 10px;\n height: 10px;\n}\n.timestep-selector .timestep-bar .circle.active .text {\n opacity: 1;\n top: 16px;\n color: white;\n transition: 300ms ease;\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.timestep-selector {\n display: flex;\n flex-direction: row;\n justify-content: space-evenly;\n align-items: flex-end;\n margin: auto;\n max-width: 45.75rem;\n height: 36px;\n}\n.timestep-selector .btn-today {\n background: transparent;\n background-color: transparent;\n border: 1px solid #a0a0a0;\n border-radius: 2px;\n margin: 1.5rem 0 0;\n width: 100%;\n text-transform: initial;\n cursor: pointer;\n max-width: 90px;\n border-radius: 4px;\n margin-top: 0;\n}\n.timestep-selector .btn-today span:first-child {\n color: #e0e0e0;\n}\n.timestep-selector .btn-today:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n.timestep-selector .timestep-container {\n width: 100%;\n}\n.timestep-selector .timestep-bar {\n margin: 0 1rem 0 1.7rem;\n padding: 0;\n display: flex;\n justify-content: space-evenly;\n align-items: center;\n height: 3rem;\n}\n.timestep-selector .timestep-bar.elec-bar {\n margin-left: 1rem;\n}\n.timestep-selector .timestep-bar .circle {\n cursor: pointer;\n position: relative;\n display: block;\n width: 8px;\n height: 8px;\n border-radius: 100%;\n text-align: center;\n background-color: #a0a0a0;\n z-index: 1;\n transition: all 300ms ease;\n margin: 0 2px;\n}\n.timestep-selector .timestep-bar .circle .clickable-area {\n position: absolute;\n width: 35px;\n height: 35px;\n display: block;\n left: -14px;\n top: -15px;\n}\n.timestep-selector .timestep-bar .text {\n position: relative;\n display: block;\n top: 15px;\n left: -20px;\n text-align: center;\n color: #7b7b7b;\n width: 50px;\n overflow: visible;\n}\n@media only screen and (max-width: 355px) {\n .timestep-selector .timestep-bar .text {\n opacity: 0;\n }\n}\n.timestep-selector .timestep-bar .bar {\n width: 100%;\n position: relative;\n display: block;\n background-color: transparent;\n border-top: 1px dashed #a0a0a0;\n height: 0;\n z-index: 0;\n padding: 0 2px;\n}\n.timestep-selector .timestep-bar .bar:last-of-type {\n display: none;\n}\n.timestep-selector .timestep-bar .circle.active {\n background-color: white;\n width: 10px;\n height: 10px;\n}\n.timestep-selector .timestep-bar .circle.active .text {\n opacity: 1;\n top: 16px;\n color: white;\n transition: 300ms ease;\n}", ""]); diff --git a/5/ecolyo.916c87ce67343a62a356.js b/5/ecolyo.9a0ab13eae90cfe2c5f4.js similarity index 98% rename from 5/ecolyo.916c87ce67343a62a356.js rename to 5/ecolyo.9a0ab13eae90cfe2c5f4.js index bd3d96bfa5ff470976222c14fc409e6f74b38681..3ee298c24259fd6a64c9fd7bed1cd4a770463c55 100644 --- a/5/ecolyo.916c87ce67343a62a356.js +++ b/5/ecolyo.9a0ab13eae90cfe2c5f4.js @@ -408,7 +408,7 @@ exports.default = _default; 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.ec-empty-container {\n margin-top: 6rem;\n}\n.ec-empty-container .ec-empty-content {\n color: #e0e0e0;\n text-align: center;\n padding: 0 0.5rem;\n margin: 0 auto;\n max-width: 80%;\n}\n@media (min-width: 576px) {\n .ec-empty-container .ec-empty-content {\n max-width: 45%;\n }\n}\n@media (min-width: 1200px) {\n .ec-empty-container .ec-empty-content {\n max-width: 35%;\n }\n}\n.ec-empty-container .ec-empty-content .text {\n margin: 1rem 0;\n}\n.ec-empty-container .ec-empty-content .btn-container {\n display: flex;\n}\n.ec-empty-container .ec-empty-content .btn-container button.btn2 {\n margin-left: 1rem;\n}\n.ec-empty-container .ec-empty-content .reinit-button {\n margin-left: 15px;\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.ec-empty-container {\n margin-top: 6rem;\n}\n.ec-empty-container .ec-empty-content {\n color: #e0e0e0;\n text-align: center;\n padding: 0 1.5rem;\n display: flex;\n gap: 1rem;\n flex-direction: column;\n align-items: center;\n margin: 0 auto;\n}\n@media (min-width: 576px) {\n .ec-empty-container .ec-empty-content {\n max-width: 45%;\n }\n}\n@media (min-width: 1200px) {\n .ec-empty-container .ec-empty-content {\n max-width: 35%;\n }\n}\n.ec-empty-container .ec-empty-content .btn-container {\n margin-top: 1rem;\n display: flex;\n gap: 1rem;\n}\n.ec-empty-container .ec-empty-content .btn-container button {\n margin: 0;\n}\n.ec-empty-container .ec-empty-content .btn-container button.btn2 {\n margin-left: 1rem;\n}\n.ec-empty-container .ec-empty-content .reinit-button {\n margin-left: 15px;\n}", ""]); @@ -1121,7 +1121,7 @@ if(false) {} 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-reinit-modal {\n color: #e0e0e0;\n margin: 1rem 0;\n text-align: center;\n}\n.eg-reinit-modal .title {\n color: #ffffff;\n}\n.eg-reinit-modal .warn-title {\n color: #ec9d41;\n margin: 0 0.3rem;\n}\n.eg-reinit-modal .text {\n margin: 1rem 0;\n text-align: left;\n}\n.eg-reinit-modal .buttons-container {\n display: flex;\n}\n.eg-reinit-modal .buttons-container button {\n min-height: 45px;\n cursor: pointer;\n}\n.eg-reinit-modal .buttons-container button.btn1 {\n margin-right: 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-reinit-modal {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n align-items: center;\n color: #e0e0e0;\n}\n.eg-reinit-modal .title {\n text-align: center;\n color: #ffffff;\n}\n.eg-reinit-modal .warn-title {\n color: #ec9d41;\n margin: 0 0.3rem;\n}\n.eg-reinit-modal .buttons-container {\n display: flex;\n gap: 1rem;\n width: 100%;\n}\n.eg-reinit-modal .buttons-container button {\n margin: 0;\n min-height: 45px;\n}", ""]); diff --git a/8/ecolyo.214f2310a7c7f8692c15.js b/8/ecolyo.bbf213875c65dc7c68ce.js similarity index 96% rename from 8/ecolyo.214f2310a7c7f8692c15.js rename to 8/ecolyo.bbf213875c65dc7c68ce.js index f685bb81a53c8b92c8889807538043d7320d4f33..9d4e5d4bf44a4fe547a5aea2366b15711776c353 100644 --- a/8/ecolyo.214f2310a7c7f8692c15.js +++ b/8/ecolyo.bbf213875c65dc7c68ce.js @@ -24,17 +24,6 @@ if(content.locals) module.exports = content.locals; if(false) {} -/***/ }), - -/***/ "4BkF": -/***/ (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.help-root {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 0 1.5rem;\n margin-top: 1rem;\n}\n.help-root .help-content {\n width: 45.75rem;\n}\n.help-root .help-content a {\n color: #ffffff;\n text-decoration: none;\n}\n@media only screen and (max-width : 768px) {\n .help-root .help-content {\n width: 100%;\n }\n}\n.help-root .help-content .help-header {\n color: #e0e0e0;\n margin-bottom: 1rem;\n}\n\n.help-card-link {\n color: #ffffff;\n}\n\n.help-card {\n display: flex;\n flex-direction: row;\n margin: -0.75rem 0;\n width: 100%;\n}\n@media only screen and (max-width : 768px) {\n .help-card {\n width: 100%;\n }\n}\n.help-card .help-card-content {\n display: flex;\n flex-direction: row;\n}\n.help-card .help-card-content .help-card-content-icon {\n margin: 0.5rem 0;\n min-width: 42px;\n}\n.help-card .help-card-content .help-card-content-title {\n margin: 0 1rem;\n align-self: center;\n text-decoration: none;\n}", ""]); - - - /***/ }), /***/ "73/N": @@ -864,12 +853,12 @@ var ExportLoadingModal = function ExportLoadingModal(_ref) { case 0: consumptionService = new _consumption.default(client); _context.next = 3; - return consumptionService.fetchAllFirstDateData([fluidType]); + return consumptionService.fetchAllFirstDateData([fluidType], _timeStep.TimeStep.MONTH); case 3: firstDataDate = _context.sent; _context.next = 6; - return consumptionService.fetchAllLastDateData([fluidType]); + return consumptionService.fetchAllLastDateData([fluidType], _timeStep.TimeStep.MONTH); case 6: lastDataDate = _context.sent; @@ -1167,63 +1156,6 @@ if(false) {} /***/ }), -/***/ "Tszi": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__("TqRt"); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; - -var _react = _interopRequireDefault(__webpack_require__("q1tI")); - -__webpack_require__("zMEy"); - -var _Link = _interopRequireDefault(__webpack_require__("36Cw")); - -var _I18n = __webpack_require__("buk/"); - -var _StyledIcon = _interopRequireDefault(__webpack_require__("I07j")); - -var _questionMark = _interopRequireDefault(__webpack_require__("H9Js")); - -var HelpLink = function HelpLink() { - var _useI18n = (0, _I18n.useI18n)(), - t = _useI18n.t; - - return /*#__PURE__*/_react.default.createElement("div", { - className: "help-root" - }, /*#__PURE__*/_react.default.createElement("div", { - className: "help-content" - }, /*#__PURE__*/_react.default.createElement("div", { - className: "help-header text-16-normal-uppercase" - }, t('help.title_help')), /*#__PURE__*/_react.default.createElement(_Link.default, { - className: "help-card-link" - }, /*#__PURE__*/_react.default.createElement("div", { - className: "card optionCard" - }, /*#__PURE__*/_react.default.createElement("div", { - className: "help-card" - }, /*#__PURE__*/_react.default.createElement("div", { - className: "help-card-content" - }, /*#__PURE__*/_react.default.createElement(_StyledIcon.default, { - className: "help-card-content-icon", - icon: _questionMark.default, - size: 42 - }), /*#__PURE__*/_react.default.createElement("div", { - className: "help-card-content-title" - }, t('help.read_help')))))))); -}; - -var _default = HelpLink; -exports.default = _default; - -/***/ }), - /***/ "Ugpr": /***/ (function(module, exports, __webpack_require__) { @@ -1796,8 +1728,6 @@ var _Version = _interopRequireDefault(__webpack_require__("ArYA")); var _react = _interopRequireWildcard(__webpack_require__("q1tI")); -var _HelpLink = _interopRequireDefault(__webpack_require__("Tszi")); - var _MatomoOptOut = __webpack_require__("RlUw"); var _ProfileTypeOptions = _interopRequireDefault(__webpack_require__("Z4wg")); @@ -1806,6 +1736,7 @@ 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; } +// import HelpLink from './HelpLink' var OptionsView = function OptionsView() { var _useState = (0, _react.useState)(0), _useState2 = (0, _slicedToArray2.default)(_useState, 2), @@ -1823,7 +1754,7 @@ var OptionsView = function OptionsView() { desktopTitleKey: 'common.title_options' }), /*#__PURE__*/_react.default.createElement(_Content.default, { height: headerHeight - }, /*#__PURE__*/_react.default.createElement(_ProfileTypeOptions.default, null), /*#__PURE__*/_react.default.createElement(_exportOptions.default, null), /*#__PURE__*/_react.default.createElement(_ReportOptions.default, null), /*#__PURE__*/_react.default.createElement(_FAQLink.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(_MatomoOptOut.MatomoOptOut, null), /*#__PURE__*/_react.default.createElement("div", { + }, /*#__PURE__*/_react.default.createElement(_ProfileTypeOptions.default, null), /*#__PURE__*/_react.default.createElement(_exportOptions.default, null), /*#__PURE__*/_react.default.createElement(_ReportOptions.default, null), /*#__PURE__*/_react.default.createElement(_FAQLink.default, null), /*#__PURE__*/_react.default.createElement(_LegalNoticeLink.default, null), /*#__PURE__*/_react.default.createElement(_GCULink.default, null), /*#__PURE__*/_react.default.createElement(_MatomoOptOut.MatomoOptOut, null), /*#__PURE__*/_react.default.createElement("div", { className: "parameters-logos" }, /*#__PURE__*/_react.default.createElement("img", { src: _logos.default, @@ -2278,32 +2209,6 @@ var ExportDoneModal = function ExportDoneModal(_ref) { var _default = ExportDoneModal; exports.default = _default; -/***/ }), - -/***/ "zMEy": -/***/ (function(module, exports, __webpack_require__) { - - -var content = __webpack_require__("4BkF"); - -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) {} - /***/ }) }]); \ No newline at end of file diff --git a/README.md b/README.md index 345e1b2624638e39efab6cac6ce7bd0aec360f48..ca7215d9dba20f54724adf184838ccb4ad1f5cb7 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,9 @@ -# Ecolyo +#  Ecolyo ## What's Ecolyo? Ecolyo is a mobile-first app allowing citizen to visualise easily their energy consumption (electricity, gas, water ...). The app allow simple and more advanced data visualisation -but give also some tips on how to reduce energy consumption. - +but give also some tips on how to reduce energy consumption. ## Hack @@ -26,10 +25,10 @@ $ yarn install Cozy's apps use a standard set of _npm scripts_ to run common tasks, like watch, lint, test, build… - ### Run it inside a default Cozy using Docker First of all get cozy dev image : + ```sh $ docker pull cozy/cozy-app-dev ``` @@ -45,6 +44,7 @@ $ yarn start After the build and the stack launched, your app is now available at http://ecolyo.cozy.tools:8080. ### Run it inside custom Docker + For the project we have created our own docker container. For more information on how to use it, please refer to wiki section. ### Tests @@ -58,7 +58,6 @@ $ yarn test :pushpin: Don't forget to update / create new tests when you contribute to code to keep the app the consistent. - ## Models The Cozy datastore stores documents, which can be seen as JSON objects. A `doctype` is simply a declaration of the fields in a given JSON object, to store similar objects in an homogeneous fashion. @@ -70,7 +69,6 @@ Whenever your app needs to use a given `doctype`, you should: - Check if this is a standard `doctype` defined in Cozy itself. If this is the case, you should add a model declaration in your app containing at least the fields listed in the [main fields list for this `doctype`][doctypes]. Note that you can extend the Cozy-provided `doctype` with your own customs fields. This is typically what is done in [Konnectors] for the [Bill `doctype`][bill-doctype]. - If no standards `doctypes` fit your needs, you should define your own `doctype` in your app. In this case, you do not have to put any field you want in your model, but you should crosscheck other cozy apps to try to homogeneize the names of your fields, so that your `doctype` data could be reused by other apps. This is typically the case for the [Konnector `doctype`][konnector-doctype] in [Konnectors]. - ### Open a Pull-Request If you want to work on Ecolyo and submit code modifications, feel free to open pull-requests! See the [contributing guide][contribute] for more information about how to properly open pull-requests. @@ -79,7 +77,6 @@ If you want to work on Ecolyo and submit code modifications, feel free to open p You must follow these rules to write your commit messages : [Conventional Commits Specification][conventional-commits] - ## Community ### What's Cozy? @@ -91,7 +88,7 @@ You must follow these rules to write your commit messages : [Conventional Commit </div> </br> -[Cozy] is a platform that brings all your web services in the same private space. With it, your webapps and your devices can share data easily, providing you with a new experience. You can install Cozy on your own hardware where no one's tracking you. +[Cozy] is a platform that brings all your web services in the same private space. With it, your webapps and your devices can share data easily, providing you with a new experience. You can install Cozy on your own hardware where no one's tracking you. ### Localization @@ -101,12 +98,10 @@ As a _translator_, you can login to [Transifex][tx-signin] (using your Github ac As a _developer_, you must [configure the transifex client][tx-client], and claim an access as _maintainer_ to the [app repository][tx-app]. Then please **only update** the source locale file (usually `en.json` in client and/or server parts), and push it to Transifex repository using the `tx push -s` command. - ### Maintainer The lead maintainer for Ecolyo is [hsubtil](https://forge.grandlyon.com/ext.sopra.husubtil), send him/her a :beers: to say hello! - ### Get in touch You can reach the Cozy Community by: @@ -116,17 +111,14 @@ You can reach the Cozy Community by: - Posting issues on the [Github repos][github] - Say Hi! on [Twitter][twitter] - ## License Ecolyo is developed by "La métropole de Lyon" and distributed under the [AGPL v3 license][agpl-3.0]. - - [conventional-commits]: https://conventionalcommits.org [standard-version]: https://github.com/conventional-changelog/standard-version -[cozy]: https://cozy.io "Cozy Cloud" -[setup]: https://dev.cozy.io/#set-up-the-development-environment "Cozy dev docs: Set up the Development Environment" +[cozy]: https://cozy.io 'Cozy Cloud' +[setup]: https://dev.cozy.io/#set-up-the-development-environment 'Cozy dev docs: Set up the Development Environment' [yarn]: https://yarnpkg.com/ [yarn-install]: https://yarnpkg.com/en/docs/install [cozy-ui]: https://github.com/cozy/cozy-ui diff --git a/android-chrome-192x192.png b/android-chrome-192x192.png index 484cf8d5b725602c0769ca600c1e4394cb7628f0..8099efe9e64a487c65cd43124539328bb7ca600f 100644 Binary files a/android-chrome-192x192.png and b/android-chrome-192x192.png differ diff --git a/android-chrome-512x512.png b/android-chrome-512x512.png index 35d99717937073d405f90c5a5e029d4ce57548ae..3a9c589993c73d602e95ab9e1c4ab20fbfbdad47 100644 Binary files a/android-chrome-512x512.png and b/android-chrome-512x512.png differ diff --git a/app/ecolyo.f6b3706cd66c531df4c7.js b/app/ecolyo.b5f67bdffc5b58b68859.js similarity index 98% rename from app/ecolyo.f6b3706cd66c531df4c7.js rename to app/ecolyo.b5f67bdffc5b58b68859.js index e5456cd7e3f58235231af1a8e2c901d9891ea4f4..aec92d73da17e7253148d067ef7246db20784f57 100644 --- a/app/ecolyo.f6b3706cd66c531df4c7.js +++ b/app/ecolyo.b5f67bdffc5b58b68859.js @@ -64,7 +64,7 @@ /******/ /******/ // script path function /******/ function jsonpScriptSrc(chunkId) { -/******/ return __webpack_require__.p + "" + ({}[chunkId]||chunkId) + "/ecolyo." + {"2":"5c7bdecea22cf638bde5","3":"0e05e201cde1d79de774","4":"99e0fa1742cfe21c53ce","5":"916c87ce67343a62a356","6":"1228a468bb34bc1e20f3","7":"8e0088481e1baf094fa4","8":"214f2310a7c7f8692c15","9":"cef536e96c5efd865b2c","10":"b99f6862feeb715a9d3f","11":"9cb80588b9255f7c6d85"}[chunkId] + ".js" +/******/ return __webpack_require__.p + "" + ({}[chunkId]||chunkId) + "/ecolyo." + {"2":"7e00bbcedd3d4f071dd4","3":"b6b6d00740ffe3a09bc9","4":"99e0fa1742cfe21c53ce","5":"9a0ab13eae90cfe2c5f4","6":"1228a468bb34bc1e20f3","7":"8e0088481e1baf094fa4","8":"bbf213875c65dc7c68ce","9":"cef536e96c5efd865b2c","10":"2c80746565ffb33a7e2c","11":"9cb80588b9255f7c6d85"}[chunkId] + ".js" /******/ } /******/ /******/ // The require function @@ -1784,7 +1784,7 @@ var SplashRoot = function SplashRoot(_ref) { case 87: customModalInfo = _context.sent; - if (customModalInfo && today !== (profile === null || profile === void 0 ? void 0 : profile.customPopupDate.toISO())) { + if (customModalInfo && today !== (profile === null || profile === void 0 ? void 0 : profile.customPopupDate.toISO()) && !(profile !== null && profile !== void 0 && profile.isFirstConnection)) { dispatch((0, _global.setCustomPopup)(customModalInfo)); } @@ -1804,7 +1804,7 @@ var SplashRoot = function SplashRoot(_ref) { case 97: partnersInfo = _context.sent; - if (!(partnersInfo && partnersInfo.notification_activated)) { + if (!(partnersInfo && partnersInfo.notification_activated && !(profile !== null && profile !== void 0 && profile.isFirstConnection))) { _context.next = 108; break; } @@ -1910,7 +1910,7 @@ exports.default = _default; 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.fb-root {\n overflow-y: auto;\n min-width: 70%;\n margin: 1rem 0;\n}\n.fb-root .fb-header {\n color: #e3b82a;\n padding: 0.5rem 0.5rem 0rem 0.5rem;\n display: flex;\n justify-content: center;\n}\n.fb-root .fb-content {\n padding: 1rem 0.5rem 1.5rem 0.5rem;\n display: flex;\n flex-direction: column;\n}\n.fb-root .fb-content .fb-content-success {\n color: #e0e0e0;\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n}\n.fb-root .fb-content .fb-content-error {\n color: #e0e0e0;\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n}\n.fb-root .fb-content .fb-icon {\n display: flex;\n justify-content: center;\n margin: 0 0 1.5rem 0;\n}\n.fb-root .fb-content .fb-label {\n margin: 0.5rem 0 0 0;\n}\n.fb-root .fb-content .fb-selector {\n margin: 0.5rem 0;\n display: flex;\n flex-direction: row;\n align-content: space-around;\n justify-content: space-around;\n padding: 0;\n border: none;\n}\n.fb-root .fb-content .fb-selector .fb-selector-item {\n height: 3.125rem;\n width: 3.125rem;\n}\n.fb-root .fb-content .fb-selector .fb-selector-item .fb-selector-item-label {\n color: #e0e0e0;\n}\n.fb-root .fb-content .fb-selector .fb-selector-item .fb-selector-item-selectedlabel {\n color: #ffffff;\n}\n.fb-root .fb-content .fb-form {\n margin: 0.5rem 0;\n border: 1px solid #7b7b7b;\n border-radius: 4px;\n color: #e0e0e0;\n background: rgba(0, 0, 0, 0.3);\n padding: 0 1rem;\n outline: none;\n}\n.fb-root .fb-content .fb-form:focus {\n border: 1px solid #e3b82a;\n}\n.fb-root .fb-content .fb-textarea {\n height: 8.725rem;\n padding: 0.5rem 1rem;\n resize: none;\n}\n.fb-root .fb-content .fb-input {\n height: 2rem;\n}\n.fb-root .fb-content button.btn-highlight {\n max-width: 9.375rem;\n align-self: center;\n width: 38%;\n padding-top: 0.5rem;\n padding-bottom: 0.6rem;\n margin: 0 !important;\n}\n\n.upload-label {\n appearance: none;\n padding: 0.5rem;\n text-align: center;\n max-width: 180px;\n width: 50% !important;\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 background-color: rgba(123, 123, 123, 0.2);\n margin: 0.8rem auto;\n transition: all 300ms ease;\n}\n.upload-label span:first-child {\n color: rgba(224, 224, 224, 0.7);\n}\n.upload-label:disabled {\n cursor: not-allowed;\n}\n.upload-label:hover {\n opacity: 0.7;\n}\n\n.styledLink {\n color: #deaf0e;\n text-decoration: underline;\n}\n\n.fileName {\n display: flex;\n justify-content: space-between;\n padding: 0 0.5rem;\n color: #e0e0e0;\n border: solid 1px #7b7b7b;\n border-radius: 3px;\n margin: 0.5rem 0;\n align-items: center;\n}\n\n.validate_row {\n display: flex;\n justify-content: space-evenly;\n}\n\n#accessibility-title {\n display: none;\n}\n\n#suggestFaq {\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.fb-root {\n overflow-y: auto;\n min-width: 70%;\n margin: 1rem 0;\n}\n.fb-root .fb-header {\n color: #e3b82a;\n padding: 0.5rem 0.5rem 0rem 0.5rem;\n display: flex;\n justify-content: center;\n}\n.fb-root .fb-content {\n padding: 1rem 0.5rem 1.5rem 0.5rem;\n display: flex;\n flex-direction: column;\n}\n.fb-root .fb-content .fb-content-success {\n color: #e0e0e0;\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n}\n.fb-root .fb-content .fb-content-error {\n color: #e0e0e0;\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n}\n.fb-root .fb-content .fb-icon {\n display: flex;\n justify-content: center;\n margin: 0 0 1.5rem 0;\n}\n.fb-root .fb-content .fb-label {\n margin: 0.5rem 0 0 0;\n}\n.fb-root .fb-content .fb-selector {\n margin: 0.5rem 0;\n display: flex;\n flex-direction: row;\n align-content: space-around;\n justify-content: space-around;\n padding: 0;\n border: none;\n}\n.fb-root .fb-content .fb-selector .fb-selector-item {\n height: 3.125rem;\n width: 3.125rem;\n}\n.fb-root .fb-content .fb-selector .fb-selector-item .fb-selector-item-label {\n color: #e0e0e0;\n}\n.fb-root .fb-content .fb-selector .fb-selector-item .fb-selector-item-selectedlabel {\n color: #ffffff;\n}\n.fb-root .fb-content .fb-form {\n margin: 0.5rem 0;\n border: 1px solid #7b7b7b;\n border-radius: 4px;\n color: #e0e0e0;\n background: rgba(0, 0, 0, 0.3);\n padding: 0 1rem;\n outline: none;\n}\n.fb-root .fb-content .fb-form:focus {\n border: 1px solid #e3b82a;\n}\n.fb-root .fb-content .fb-textarea {\n height: 8.725rem;\n padding: 0.5rem 1rem;\n resize: none;\n}\n.fb-root .fb-content .fb-input {\n height: 2rem;\n}\n.fb-root .fb-content button.btn-highlight {\n max-width: 9.375rem;\n align-self: center;\n width: 38%;\n padding-top: 0.5rem;\n padding-bottom: 0.6rem;\n margin: 0 !important;\n}\n\n.upload-label {\n appearance: none;\n padding: 0.5rem;\n text-align: center;\n max-width: 180px;\n width: 50% !important;\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 background-color: rgba(123, 123, 123, 0.2);\n margin: 0.8rem auto;\n transition: all 300ms ease;\n}\n.upload-label span:first-child {\n color: rgba(224, 224, 224, 0.7);\n}\n.upload-label:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n.upload-label:hover {\n opacity: 0.7;\n}\n\n.styledLink {\n color: #deaf0e;\n text-decoration: underline;\n}\n\n.fileName {\n display: flex;\n justify-content: space-between;\n padding: 0 0.5rem;\n color: #e0e0e0;\n border: solid 1px #7b7b7b;\n border-radius: 3px;\n margin: 0.5rem 0;\n align-items: center;\n}\n\n.validate_row {\n display: flex;\n justify-content: space-evenly;\n}\n\n#accessibility-title {\n display: none;\n}\n\n#suggestFaq {\n margin-bottom: 1rem;\n}", ""]); @@ -4070,8 +4070,9 @@ var SgeConnectView = function SgeConnectView() { handlePrevious: handlePrev, handleNext: handleNext, disableNextButton: !isNextValid(), - isEcogesture: false, - isLastConnectStep: currentStep === _sgeStep.SgeStep.Consent + disablePrevButton: currentStep === _sgeStep.SgeStep.IdentityAndPDL, + isLastConnectStep: currentStep === _sgeStep.SgeStep.Consent, + isEcogesture: false })))); }; @@ -4195,7 +4196,7 @@ exports.default = PartnersInfoService; 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-detail-container {\n position: relative;\n min-height: inherit;\n margin: auto;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n text-align: center;\n color: #e0e0e0;\n max-width: 45.75rem;\n}\n@media only screen and (max-width : 768px) {\n .eg-selection-detail-container {\n margin: 0 1rem;\n max-width: unset;\n }\n}\n.eg-selection-detail-container .content {\n display: flex;\n flex-direction: column;\n flex: 1;\n justify-content: center;\n align-items: center;\n}\n.eg-selection-detail-container .content .icon {\n margin: 5rem 0 0;\n}\n@media only screen and (max-width : 768px) {\n .eg-selection-detail-container .content .icon {\n margin: 1rem 0 0;\n }\n}\n@media only screen and (max-width : 576px) {\n .eg-selection-detail-container .content .icon {\n width: 50%;\n height: 50%;\n }\n}\n@media only screen and (max-width : 320px) {\n .eg-selection-detail-container .content .icon {\n width: 30%;\n height: 30%;\n }\n}\n.eg-selection-detail-container .content .text {\n min-height: 4.875rem;\n display: flex;\n align-items: center;\n margin: 0 1rem;\n}\n.eg-selection-detail-container .buttons {\n margin: 1rem 0;\n display: flex;\n flex-direction: row;\n justify-content: center;\n width: 100%;\n}\n.eg-selection-detail-container .buttons button.btn-secondary-negative {\n padding: 0.75rem 0.25rem;\n margin: 0 0.25rem;\n height: 7.375rem;\n width: 6.5rem;\n border-radius: 0.25rem;\n}\n.eg-selection-detail-container .buttons button.btn-secondary-negative:focus, .eg-selection-detail-container .buttons button.btn-secondary-negative.active, .eg-selection-detail-container .buttons button.btn-secondary-negative:disabled, .eg-selection-detail-container .buttons button.btn-secondary-negative:hover {\n background: transparent;\n}\n.eg-selection-detail-container .buttons button.btn-secondary-negative span {\n flex-direction: column;\n color: #e0e0e0;\n}\n.eg-selection-detail-container .buttons button.noFocus {\n background: transparent;\n}\n.eg-selection-detail-container .title {\n margin-top: 1rem;\n color: #a0a0a0;\n font-weight: 700;\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-detail-container {\n position: relative;\n min-height: inherit;\n margin: auto;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n text-align: center;\n color: #e0e0e0;\n max-width: 45.75rem;\n}\n@media only screen and (max-width : 768px) {\n .eg-selection-detail-container {\n margin: 0 1rem;\n max-width: unset;\n }\n}\n.eg-selection-detail-container .content {\n display: flex;\n gap: 0.5rem;\n flex-direction: column;\n flex: 1;\n justify-content: center;\n align-items: center;\n}\n.eg-selection-detail-container .content .title {\n color: #a0a0a0;\n font-weight: 700;\n}\n@media only screen and (max-width : 576px) {\n .eg-selection-detail-container .content .icon {\n width: 50%;\n height: 50%;\n }\n}\n@media only screen and (max-width : 320px) {\n .eg-selection-detail-container .content .icon {\n width: 30%;\n height: 30%;\n }\n}\n.eg-selection-detail-container .content .text {\n min-height: 4.875rem;\n display: flex;\n align-items: center;\n margin: 0 1rem;\n}\n.eg-selection-detail-container .buttons {\n margin: 1rem 0;\n display: flex;\n gap: 0.5rem;\n flex-direction: row;\n justify-content: center;\n width: 100%;\n}\n.eg-selection-detail-container .buttons button.btn-secondary-negative {\n margin: 0;\n padding: 0.75rem 0.25rem;\n height: 7.375rem;\n border: 1px solid #e0e0e0;\n border-radius: 0.25rem;\n}\n.eg-selection-detail-container .buttons button.btn-secondary-negative:focus, .eg-selection-detail-container .buttons button.btn-secondary-negative.active, .eg-selection-detail-container .buttons button.btn-secondary-negative:disabled, .eg-selection-detail-container .buttons button.btn-secondary-negative:hover {\n background: transparent;\n}\n.eg-selection-detail-container .buttons button.btn-secondary-negative span {\n flex-direction: column;\n color: #e0e0e0;\n}\n.eg-selection-detail-container .buttons button.noFocus {\n background: transparent;\n}", ""]); @@ -7888,7 +7889,7 @@ if(false) {} 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-end-container {\n position: relative;\n min-height: inherit;\n margin: auto;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n text-align: center;\n color: #e0e0e0;\n max-width: 45.75rem;\n}\n@media only screen and (max-width : 768px) {\n .eg-selection-end-container {\n margin: 0 1rem;\n max-width: unset;\n }\n}\n.eg-selection-end-container .content {\n display: flex;\n flex-direction: column;\n flex: 1;\n justify-content: center;\n align-items: center;\n}\n.eg-selection-end-container .content .title {\n color: #e3b82a;\n margin: 1rem;\n}\n@media all and (min-width: 1023px) {\n .eg-selection-end-container .content .title {\n margin: 5rem;\n }\n}\n.eg-selection-end-container .content .text {\n margin-top: 1rem;\n}\n.eg-selection-end-container .buttons {\n margin: 1rem 0;\n display: flex;\n flex-direction: row;\n justify-content: center;\n width: 100%;\n}\n.eg-selection-end-container .buttons button.btn-highlight {\n padding: 0.75rem 0.5rem;\n margin: 0 0.5rem;\n max-width: 25rem;\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-end-container {\n position: relative;\n min-height: inherit;\n margin: auto;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n text-align: center;\n color: #e0e0e0;\n max-width: 45.75rem;\n}\n@media only screen and (max-width : 768px) {\n .eg-selection-end-container {\n margin: 0 1rem;\n max-width: unset;\n }\n}\n.eg-selection-end-container .content {\n display: flex;\n flex-direction: column;\n flex: 1;\n gap: 1rem;\n justify-content: center;\n align-items: center;\n}\n.eg-selection-end-container .content .title {\n color: #e3b82a;\n margin: 1rem;\n}\n@media all and (min-width: 1023px) {\n .eg-selection-end-container .content .title {\n margin: 5rem;\n }\n}\n.eg-selection-end-container .buttons {\n margin: 1rem 0;\n display: flex;\n flex-direction: row;\n justify-content: center;\n width: 100%;\n}\n.eg-selection-end-container .buttons button.btn-highlight {\n padding: 0.75rem 0.5rem;\n margin: 0 0.5rem;\n max-width: 25rem;\n}", ""]); @@ -8209,7 +8210,7 @@ exports.default = _default; /***/ "9pOX": /***/ (function(module) { -module.exports = JSON.parse("{\"common\":{\"title_app\":\"Ecolyo\",\"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_faq\":\"FAQ\",\"title_legal_notice\":\"Mentions légales\",\"title_gcu\":\"CGU\",\"title_sge_connect\":\"Connexion à l'électricité\",\"accessibility\":{\"loading\":\"Chargement\"}},\"FLUID\":{\"ELECTRICITY\":{\"NAME\":\"Electricité\",\"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 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\":\"Aller à la page de profil\"},\"max_day\":\"Jour où vous avez le plus consommé\",\"compare\":{\"title\":\"Comparateur\"},\"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 de \",\"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’éléctricité (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 à votre compte Enedis\",\"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 chiffes)\",\"pdlHint\":\"Où trouver le n° de PDL ?\",\"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\":{\"connect\":{\"label1\":\"Je me connecte à mon\",\"label2\":\"compte GRDF\"},\"no_account\":{\"title\":\"Ecolyo doit se connecter à votre compte GRDF\",\"subtitle1\":\"Si vous n’avez pas de compte GRDF\",\"button_create_account\":\"Je crée mon compte GRDF\",\"subtitle2\":\"Si vous avez déjà un compte GRDF,\",\"subtitle2_info\":\"votre accord est nécessaire pour connecter GRDF et Ecolyo\",\"info\":\"GRDF est responsable de votre compteur Gazpar et en charge de relever vos consommations.\"},\"with_account\":{\"title\":\"Votre compte GRDF a bien été créé ?\",\"subtitle1\":\"Plus qu’à donner votre accord pour connecter GRDF et Ecolyo !\",\"subtitle1_info\":\"Une période de consentement minimale d'un an est recommandée\",\"subtitle2\":\"Si vous n’avez pas de compte GRDF\",\"button_create_account\":\"Je crée mon compte\",\"subtitle2_info\":\"En cas de soucis pour créer votre compte ou pour vous y connecter, un guide en pas-à-pas est disponible pour vous y aider.\",\"button_goto_guide\":\"Voir le guide\"}},\"eglgrandlyon\":{\"connect\":{\"login\":\"Identifiant Eau du Grand Lyon (7 chiffres)\",\"password\":\"Mot de passe\",\"label1\":\"Je me connecte à mon\",\"label2\":\"compte Eau du Grand Lyon\"},\"no_account\":{\"title\":\"Ecolyo doit se connecter à votre compte Eau du Grand Lyon\",\"subtitle1\":\"Si vous n’avez pas de compte EGL\",\"button_create_account\":\"Je crée mon compte EGL\",\"subtitle2\":\"Si vous avez déjà un compte EGL,\",\"subtitle2_info\":\"renseignez votre identifiant Eau Du Grand Lyon.\"},\"with_account\":{\"title\":\"Votre compte Eau du Grand Lyon a bien été créé ?\",\"subtitle1\":\"Plus qu’à donner votre accord pour connecter EGL et Ecolyo !\",\"subtitle2\":\"Si vous n’avez pas de compte EGL\",\"button_create_account\":\"Je crée mon compte\",\"subtitle2_info\":\"En cas de soucis pour créer votre compte ou pour vous y connecter, un guide en pas-à-pas est disponible pour vous y aider.\",\"button_goto_guide\":\"Voir le guide\"}},\"accessibility\":{\"button_reveal_password\":\"Afficher le mot de passe\",\"button_connect\":\"Se connecter\",\"button_create_account\":\"Se créer un compte\",\"button_goto_guide\":\"Voir le guide\"}},\"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\"},\"partners_issue_modal\":{\"title\":\"Un problème dans la récupération de vos données\",\"text_1\":\"Ces partenaires nous indiquent qu’ils subissent en ce moment un soucis technique :\",\"text_2\":\"La visualisation de vos consommations peut s’en trouver affectée.\",\"button_validate\":\"J'ai compris\",\"ok\":\"Ok\"}},\"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 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\":\"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\":\"Retour\",\"accessibility\":{\"window_title\":\"Fenêtre de notifications\",\"button_go_back\":\"J'ai compris\"}}},\"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 jaune.\"},\"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\":\"Tous\",\"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_go_to_profil\":\"Aller à la page de profil\",\"button_close\":\"Fermer la fenetre\",\"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\":\"Aucun 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\":\"Aucun 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 ecogeste\",\"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 interessé\",\"accessibility\":{\"window_title\":\"Fenêtre d'information'\",\"button_close\":\"Fermer la fenetre\",\"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.\"},\"faq\":{\"title_faq\":\"Foire aux questions\",\"read_faq\":\"Lire la FAQ\",\"accessibility\":{\"button_toggle_detail\":\"Afficher ou masquer le détail de la question\"}},\"help\":{\"title_help\":\"Besoin d'aide ?\",\"read_help\":\"Accéder au Service d'Assistance Utilisateur\"},\"feedback\":{\"title\":\"Partagez-nous vos retours\",\"type\":\"Motif du retour :\",\"suggest_faq\":\"Avez-vous pensé à consulter la \",\"description\":\"Description :\",\"description_placeholder\":\"Vos remarques\",\"send\":\"Envoyer\",\"ok\":\"Ok\",\"type_bug\":\"Bug\",\"type_idea\":\"Idée\",\"type_other\":\"Autre\",\"success_sending\":\"Nous vous remercions pour votre retour.\",\"warning\":\"Attention !\",\"error_empty_description\":\"Le champ de description est vide.\",\"error_sending\":\"Erreur lors de l'envoi, veuillez essayer ultérieurement.\",\"upload\":\"Joindre une image\",\"imageLabel\":\"Image :\",\"accessibility\":{\"window_title\":\"Fenêtre de partage de retours\",\"select_type_bug\":\"Sélectionner le motif bug\",\"select_type_idea\":\"Sélectionner le motif idée\",\"select_type_other\":\"Sélectionner le motif autre\",\"button_send\":\"Envoyer le retour\",\"button_ok\":\"Valider\",\"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. \",\"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 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\",\"subtitle\":\"Envie de prendre le temps de relire ces CGU ces Conditions Générales d’Utilisation plus tard ? Vous pourrez les retrouver dans la page Options du service.\",\"version\":\"3.0 du 27.06.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 éco-gestes vous sont aussi proposés 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 éco-gestes, 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 retrouver les connecteurs - services vous permettant d’aller récupérer vos données d’électricité, de gaz et d’eau - , une foire aux questions, et de quoi ajuster votre profil.\",\"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 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 Enedis, GRDF et Eau 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 maitrise 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 connecteurs dans la page Options. À ce moment-là, et à 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 les données électriques (chez Enedis), elle est par défaut de 6 mois. Pour les données gaz, cela sera à vous de la définir (nous vous recommandons 1 an pour une expérience optimale).\",\"part5_2\":\"Vos connecteurs, une fois configurés, permettent le transfert de vos données de consommations au service Ecolyo. Le transfert de cette donnée 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 Options.\",\"part5_3_list2\":\"Attention : lors de la désinstallation du connecteur qui collecte vos données au sein du cloud, celui-ci ne va plus aller chercher vos données. Par contre, votre consentement chez le partenaire fournisseur est toujours actif jusqu’à votre révocation de consentement auprès de ce dernier. Pour révoquer votre consentement, il vous faudra contacter ou agir directement chez le partenaire en question : Enedis pour l’électricité ou GRDF pour le gaz. Pour l’électricité, vous pouvez peut supprimer votre consentement à partager vos données en écrivant directement à dataconnect(at)enedis.fr. Pour le gaz, il vous faudra vous connecter à <a href=\\\"https://monespace.grdf.fr/monespace/connexion\\\">votre espace GRDF</a> et supprimer le consentement donné à la Métropole de Lyon dans la partie « Suivi de Consommations » puis « Données Consultées ». Au terme de la durée initiale de validité du consentement de 6 mois ou de la durée que vous aurez définie librement, votre consentement sera considéré comme révolu. Tout nouveau transfert de données sera donc soumis à nouveau au recueil préalable de votre consentement.\",\"part5_3_list3\":\"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 du Grand Lyon, un jeton d’identification Enedis et/ou GRDF ainsi que vos numéros de compteurs sont stockés dans votre cloud personnel – sans droit de regard de la Métropole de Lyon.\",\"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 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\":\"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 présente dans le service (page Options) ou à nous contacter via le formulaire de contact (la petite bulle jaune) 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 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\"}},\"gcu_option\":{\"title\":\"Conditions générales d’utilisation\",\"read_gcu\":\"Lire les CGU\"},\"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\",\"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é.\",\"button_oauth_reload\":\"Redonner mon consentement\",\"OK\":\"Ok\",\"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\",\"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_update_electricity\":\"Vos données de consommation d'électricité sont maintenant à jour dans Ecolyo.\",\"success_data_update_water\":\"Vos données de consommation d'eau sont maintenant à jour dans Ecolyo.\",\"success_data_update_gas\":\"Vos données de consommation de gaz sont maintenant à jour dans Ecolyo.\",\"error_txt\":\"Aïe !\",\"no_insee_code\":\"Il semblerait que votre code postal ne soit pas pris en compte par Ecolyo.\",\"no_insee_code_txt\":\"Ecolyo est un service créé par la Métropole de Lyon et n’est aujourd’hui utilisable que par les habitants du territoire de la Métropôle de Lyon.\",\"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\":\"Vos nom 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 consommmation de gaz ne seront pas chargées.\",\"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_come_back_later\":\"Revenir plus tard\",\"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\":\"V3.0 du 27.06.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 Energie Climat\",\"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 - <a href=\\\"https://florentdufier.myportfolio.com/\\\">https://florentdufier.myportfolio.com/</a>\",\"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, eslint-config-cozy-app, global, lodash, luxon, moment, moment-timezone, node-sass, object-hash, react, react-dom, react-lottie, react-redux, react-router-dom, react-swipeable-views, redux-devtools-extension, sass-loader. Les tests de l’application s’appuient sur les biliothè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 Ecolyo – Enedis, GRDF et Eau du Grand Lyon sont responsables exclusivement des seuls traitements de Données Personnelles relatifs à la collecte des données de consommation de l’usager et à leur transmission sur la plateforme de cloud personnel, après consentement de l’usager ;\",\"part2-2\":\"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-2-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-2-2\":\"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-2-3\":\"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-2-4\":\"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-2-5\":\"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-3\":\"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 du Grand Lyon seulement qu’à sa demande expresse après la saisie de ses identifiants.\",\"part2-4\":\"L’utilisateur est donc le seul à accéder :\",\"part2-4-1\":\"À ses données de consommation d’électricité horaires, journalières, hebdomadaires, mensuelles et annuelles.\",\"part2-4-2\":\"À ses données de consommation de gaz journalières, hebdomadaires, mensuelles et annuelles.\",\"part2-4-3\":\"À ses données de consommation eau journalières, hebdomadaires, mensuelles et annuelles.\",\"part2-5\":\"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-6\":\"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 auprès d’Enedis et de GRDF.\",\"part2-7\":\"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-8\":\"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-9\":\"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\"}},\"navigation\":{\"consumption\":\"Conso\",\"challenges\":\"Défis\",\"ecogestures\":\"Astuces\",\"options\":\"Options\",\"analysis\":\"Analyse\"},\"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\"}},\"partner_connection_steps\":{\"water\":{\"step1\":{\"info1\":\"Munissez-vous d’une <span>facture d'eau</span> et d’un zeste de patience.\",\"info2\":\"\"},\"step2\":{\"info1\":\"Une fois votre compte créé, <span>revenez sur Ecolyo</span> pour finaliser la connexion.\",\"info2\":\"\"},\"button_validate\":\"Aller sur EGL\"},\"gas\":{\"step1\":{\"info1\":\"Munissez-vous d’une <span>facture de gaz</span> et d’un zeste de patience.\",\"info2\":\"\"},\"step2\":{\"info1\":\"Une fois votre compte créé, <span>revenez sur Ecolyo</span> pour finaliser la connexion.\",\"info2\":\"\"},\"button_validate\":\"Aller sur GRDF\"},\"button_previous\":\"Précédent\",\"button_next\":\"Suivant\",\"accessibility\":{\"window_title\":\"Fenêtre d'information sur la création de compte.\",\"button_validate\":\"Aller sur le site du partenaire.\",\"button_close\":\"Fermer la fenètre.\",\"button_previous\":\"Précédent\",\"button_next\":\"Suivant\"}},\"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 fuite 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\",\"appartment\":\"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\":\"Etes-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\",\"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\"},\"hot_water_fluid\":{\"0\":\"Électricité\",\"2\":\"Gaz\",\"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\"},\"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\"},\"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\",\"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ééssayer\",\"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ééssayer\",\"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.\",\"ecogesture_error\":\"Chargement des astuces 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\":\"Test de la 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\":\"Chargement des astuces de consommations\",\"4\":\"Actualisation de votre progression dans les défis\",\"5\":\"Mise à jour des prix\",\"6\":\"Test de la 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\"},\"day\":{\"period\":\"Mois\",\"comparelabel\":\"Comparer au mois précédent\"},\"week\":{\"period\":\"Semaine\",\"comparelabel\":\"Comparer à la 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.\",\"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\":\"Etes-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_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_faq\":\"FAQ\",\"title_legal_notice\":\"Mentions légales\",\"title_gcu\":\"CGU\",\"title_sge_connect\":\"Connexion à l'électricité\",\"accessibility\":{\"loading\":\"Chargement\"}},\"FLUID\":{\"ELECTRICITY\":{\"NAME\":\"Electricité\",\"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 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\":\"Aller à la page de profil\"},\"max_day\":\"Jour où vous avez le plus consommé\",\"compare\":{\"title\":\"Comparateur\"},\"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 de \",\"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’éléctricité (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 à votre compte Enedis\",\"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 chiffes)\",\"pdlHint\":\"Où trouver le n° de PDL ?\",\"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\":{\"connect\":{\"label1\":\"Je me connecte à mon\",\"label2\":\"compte GRDF\"},\"no_account\":{\"title\":\"Ecolyo doit se connecter à votre compte GRDF\",\"subtitle1\":\"Si vous n’avez pas de compte GRDF\",\"button_create_account\":\"Je crée mon compte GRDF\",\"subtitle2\":\"Si vous avez déjà un compte GRDF,\",\"subtitle2_info\":\"votre accord est nécessaire pour connecter GRDF et Ecolyo\",\"info\":\"GRDF est responsable de votre compteur Gazpar et en charge de relever vos consommations.\"},\"with_account\":{\"title\":\"Votre compte GRDF a bien été créé ?\",\"subtitle1\":\"Plus qu’à donner votre accord pour connecter GRDF et Ecolyo !\",\"subtitle1_info\":\"Une période de consentement minimale d'un an est recommandée\",\"subtitle2\":\"Si vous n’avez pas de compte GRDF\",\"button_create_account\":\"Je crée mon compte\",\"subtitle2_info\":\"En cas de soucis pour créer votre compte ou pour vous y connecter, un guide en pas-à-pas est disponible pour vous y aider.\",\"button_goto_guide\":\"Voir le guide\"}},\"eglgrandlyon\":{\"connect\":{\"login\":\"Identifiant Eau du Grand Lyon (7 chiffres)\",\"password\":\"Mot de passe\",\"label1\":\"Je me connecte à mon\",\"label2\":\"compte Eau du Grand Lyon\"},\"no_account\":{\"title\":\"Ecolyo doit se connecter à votre compte Eau du Grand Lyon\",\"subtitle1\":\"Si vous n’avez pas de compte EGL\",\"button_create_account\":\"Je crée mon compte EGL\",\"subtitle2\":\"Si vous avez déjà un compte EGL,\",\"subtitle2_info\":\"renseignez votre identifiant Eau Du Grand Lyon.\"},\"with_account\":{\"title\":\"Votre compte Eau du Grand Lyon a bien été créé ?\",\"subtitle1\":\"Plus qu’à donner votre accord pour connecter EGL et Ecolyo !\",\"subtitle2\":\"Si vous n’avez pas de compte EGL\",\"button_create_account\":\"Je crée mon compte\",\"subtitle2_info\":\"En cas de soucis pour créer votre compte ou pour vous y connecter, un guide en pas-à-pas est disponible pour vous y aider.\",\"button_goto_guide\":\"Voir le guide\"}},\"accessibility\":{\"button_reveal_password\":\"Afficher le mot de passe\",\"button_connect\":\"Se connecter\",\"button_create_account\":\"Se créer un compte\",\"button_goto_guide\":\"Voir le guide\"}},\"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\"},\"partners_issue_modal\":{\"title\":\"Un problème dans la récupération de vos données\",\"text_1\":\"Ces partenaires nous indiquent qu’ils subissent en ce moment un soucis technique :\",\"text_2\":\"La visualisation de vos consommations peut s’en trouver affectée.\",\"button_validate\":\"J'ai compris\",\"ok\":\"Ok\"}},\"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 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\":\"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\"}}},\"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 jaune.\"},\"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\":\"Tous\",\"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_go_to_profil\":\"Aller à la page de profil\",\"button_close\":\"Fermer la fenetre\",\"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\":\"Aucun 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\":\"Aucun 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 ecogeste\",\"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 interessé\",\"accessibility\":{\"window_title\":\"Fenêtre d'information'\",\"button_close\":\"Fermer la fenetre\",\"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.\"},\"faq\":{\"title_faq\":\"Foire aux questions\",\"read_faq\":\"Lire la FAQ\",\"accessibility\":{\"button_toggle_detail\":\"Afficher ou masquer le détail de la question\"}},\"help\":{\"title_help\":\"Besoin d'aide ?\",\"read_help\":\"Accéder au Service d'Assistance Utilisateur\"},\"feedback\":{\"title\":\"Partagez-nous vos retours\",\"type\":\"Motif du retour :\",\"suggest_faq\":\"Avez-vous pensé à consulter la \",\"description\":\"Description :\",\"description_placeholder\":\"Vos remarques\",\"send\":\"Envoyer\",\"ok\":\"Ok\",\"type_bug\":\"Bug\",\"type_idea\":\"Idée\",\"type_other\":\"Autre\",\"success_sending\":\"Nous vous remercions pour votre retour.\",\"warning\":\"Attention !\",\"error_empty_description\":\"Le champ de description est vide.\",\"error_sending\":\"Erreur lors de l'envoi, veuillez essayer ultérieurement.\",\"upload\":\"Joindre une image\",\"imageLabel\":\"Image :\",\"accessibility\":{\"window_title\":\"Fenêtre de partage de retours\",\"select_type_bug\":\"Sélectionner le motif bug\",\"select_type_idea\":\"Sélectionner le motif idée\",\"select_type_other\":\"Sélectionner le motif autre\",\"button_send\":\"Envoyer le retour\",\"button_ok\":\"Valider\",\"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. \",\"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 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\",\"subtitle\":\"Envie de prendre le temps de relire ces CGU ces Conditions Générales d’Utilisation plus tard ? Vous pourrez les retrouver dans la page Options du service.\",\"version\":\"3.0 du 27.06.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 éco-gestes vous sont aussi proposés 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 éco-gestes, 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 retrouver les connecteurs - services vous permettant d’aller récupérer vos données d’électricité, de gaz et d’eau - , une foire aux questions, et de quoi ajuster votre profil.\",\"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 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 Enedis, GRDF et Eau 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 maitrise 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 connecteurs dans la page Options. À ce moment-là, et à 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 les données électriques (chez Enedis), elle est par défaut de 6 mois. Pour les données gaz, cela sera à vous de la définir (nous vous recommandons 1 an pour une expérience optimale).\",\"part5_2\":\"Vos connecteurs, une fois configurés, permettent le transfert de vos données de consommations au service Ecolyo. Le transfert de cette donnée 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 Options.\",\"part5_3_list2\":\"Attention : lors de la désinstallation du connecteur qui collecte vos données au sein du cloud, celui-ci ne va plus aller chercher vos données. Par contre, votre consentement chez le partenaire fournisseur est toujours actif jusqu’à votre révocation de consentement auprès de ce dernier. Pour révoquer votre consentement, il vous faudra contacter ou agir directement chez le partenaire en question : Enedis pour l’électricité ou GRDF pour le gaz. Pour l’électricité, vous pouvez peut supprimer votre consentement à partager vos données en écrivant directement à dataconnect(at)enedis.fr. Pour le gaz, il vous faudra vous connecter à <a href=\\\"https://monespace.grdf.fr/monespace/connexion\\\">votre espace GRDF</a> et supprimer le consentement donné à la Métropole de Lyon dans la partie « Suivi de Consommations » puis « Données Consultées ». Au terme de la durée initiale de validité du consentement de 6 mois ou de la durée que vous aurez définie librement, votre consentement sera considéré comme révolu. Tout nouveau transfert de données sera donc soumis à nouveau au recueil préalable de votre consentement.\",\"part5_3_list3\":\"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 du Grand Lyon, un jeton d’identification Enedis et/ou GRDF ainsi que vos numéros de compteurs sont stockés dans votre cloud personnel – sans droit de regard de la Métropole de Lyon.\",\"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 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\":\"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 présente dans le service (page Options) ou à nous contacter via le formulaire de contact (la petite bulle jaune) 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 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\"}},\"gcu_option\":{\"title\":\"Conditions générales d’utilisation\",\"read_gcu\":\"Lire les CGU\"},\"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\",\"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é.\",\"button_oauth_reload\":\"Redonner mon consentement\",\"OK\":\"Ok\",\"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\",\"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_update_electricity\":\"Vos données de consommation d'électricité sont maintenant à jour dans Ecolyo.\",\"success_data_update_water\":\"Vos données de consommation d'eau sont maintenant à jour dans Ecolyo.\",\"success_data_update_gas\":\"Vos données de consommation de gaz sont maintenant à jour dans Ecolyo.\",\"error_txt\":\"Aïe !\",\"no_insee_code\":\"Il semblerait que votre code postal ne soit pas pris en compte par Ecolyo.\",\"no_insee_code_txt\":\"Ecolyo est un service créé par la Métropole de Lyon et n’est aujourd’hui utilisable que par les habitants du territoire de la Métropôle de Lyon.\",\"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\":\"Vos nom 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 consommmation de gaz ne seront pas chargées.\",\"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_come_back_later\":\"Revenir plus tard\",\"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\":\"V3.0 du 27.06.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 Energie Climat\",\"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 - <a href=\\\"https://florentdufier.myportfolio.com/\\\">https://florentdufier.myportfolio.com/</a>\",\"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, eslint-config-cozy-app, global, lodash, luxon, moment, moment-timezone, node-sass, object-hash, react, react-dom, react-lottie, react-redux, react-router-dom, react-swipeable-views, redux-devtools-extension, sass-loader. Les tests de l’application s’appuient sur les biliothè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 Ecolyo – Enedis, GRDF et Eau du Grand Lyon sont responsables exclusivement des seuls traitements de Données Personnelles relatifs à la collecte des données de consommation de l’usager et à leur transmission sur la plateforme de cloud personnel, après consentement de l’usager ;\",\"part2-2\":\"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-2-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-2-2\":\"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-2-3\":\"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-2-4\":\"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-2-5\":\"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-3\":\"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 du Grand Lyon seulement qu’à sa demande expresse après la saisie de ses identifiants.\",\"part2-4\":\"L’utilisateur est donc le seul à accéder :\",\"part2-4-1\":\"À ses données de consommation d’électricité horaires, journalières, hebdomadaires, mensuelles et annuelles.\",\"part2-4-2\":\"À ses données de consommation de gaz journalières, hebdomadaires, mensuelles et annuelles.\",\"part2-4-3\":\"À ses données de consommation eau journalières, hebdomadaires, mensuelles et annuelles.\",\"part2-5\":\"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-6\":\"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 auprès d’Enedis et de GRDF.\",\"part2-7\":\"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-8\":\"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-9\":\"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\"}},\"navigation\":{\"consumption\":\"Conso\",\"challenges\":\"Défis\",\"ecogestures\":\"Astuces\",\"options\":\"Options\",\"analysis\":\"Analyse\"},\"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\"}},\"partner_connection_steps\":{\"water\":{\"step1\":{\"info1\":\"Munissez-vous d’une <span>facture d'eau</span> et d’un zeste de patience.\",\"info2\":\"\"},\"step2\":{\"info1\":\"Une fois votre compte créé, <span>revenez sur Ecolyo</span> pour finaliser la connexion.\",\"info2\":\"\"},\"button_validate\":\"Aller sur EGL\"},\"gas\":{\"step1\":{\"info1\":\"Munissez-vous d’une <span>facture de gaz</span> et d’un zeste de patience.\",\"info2\":\"\"},\"step2\":{\"info1\":\"Une fois votre compte créé, <span>revenez sur Ecolyo</span> pour finaliser la connexion.\",\"info2\":\"\"},\"button_validate\":\"Aller sur GRDF\"},\"button_previous\":\"Précédent\",\"button_next\":\"Suivant\",\"accessibility\":{\"window_title\":\"Fenêtre d'information sur la création de compte.\",\"button_validate\":\"Aller sur le site du partenaire.\",\"button_close\":\"Fermer la fenètre.\",\"button_previous\":\"Précédent\",\"button_next\":\"Suivant\"}},\"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 fuite 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\",\"appartment\":\"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\":\"Etes-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\",\"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\"},\"hot_water_fluid\":{\"0\":\"Électricité\",\"2\":\"Gaz\",\"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\"},\"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\"},\"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\",\"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ééssayer\",\"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ééssayer\",\"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.\",\"ecogesture_error\":\"Chargement des astuces 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\":\"Test de la 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\":\"Chargement des astuces de consommations\",\"4\":\"Actualisation de votre progression dans les défis\",\"5\":\"Mise à jour des prix\",\"6\":\"Test de la 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\"},\"day\":{\"period\":\"Mois\",\"comparelabel\":\"Comparer au mois précédent\"},\"week\":{\"period\":\"Semaine\",\"comparelabel\":\"Comparer à la 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.\",\"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\":\"Etes-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\"}}}"); /***/ }), @@ -8773,7 +8774,7 @@ var ConsumptionDataManager = /*#__PURE__*/function () { }, { key: "fetchAllFirstDateData", value: function () { - var _fetchAllFirstDateData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(fluidTypes) { + var _fetchAllFirstDateData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(fluidTypes, timeStep) { var firstDay, firstDays, _iterator3, _step3, fluidType; return _regenerator.default.wrap(function _callee6$(_context6) { @@ -8789,7 +8790,7 @@ var ConsumptionDataManager = /*#__PURE__*/function () { } _context6.next = 5; - return this._queryRunnerService.getFirstDateData(fluidTypes[0]); + return this._queryRunnerService.getFirstDateData(fluidTypes[0], timeStep); case 5: _context6.t0 = _context6.sent; @@ -8826,7 +8827,7 @@ var ConsumptionDataManager = /*#__PURE__*/function () { fluidType = _step3.value; _context6.next = 20; - return this._queryRunnerService.getFirstDateData(fluidType); + return this._queryRunnerService.getFirstDateData(fluidType, timeStep); case 20: _context6.t1 = _context6.sent; @@ -8874,7 +8875,7 @@ var ConsumptionDataManager = /*#__PURE__*/function () { }, _callee6, this, [[14, 29, 32, 35]]); })); - function fetchAllFirstDateData(_x23) { + function fetchAllFirstDateData(_x23, _x24) { return _fetchAllFirstDateData.apply(this, arguments); } @@ -8883,7 +8884,7 @@ var ConsumptionDataManager = /*#__PURE__*/function () { }, { key: "fetchAllLastDateData", value: function () { - var _fetchAllLastDateData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(fluidTypes) { + var _fetchAllLastDateData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(fluidTypes, timeStep) { var lastDay, lastDays, _iterator4, _step4, fluidType; return _regenerator.default.wrap(function _callee7$(_context7) { @@ -8899,7 +8900,7 @@ var ConsumptionDataManager = /*#__PURE__*/function () { } _context7.next = 5; - return this._queryRunnerService.getLastDateData(fluidTypes[0]); + return this._queryRunnerService.getLastDateData(fluidTypes[0], timeStep); case 5: _context7.t0 = _context7.sent; @@ -8936,7 +8937,7 @@ var ConsumptionDataManager = /*#__PURE__*/function () { fluidType = _step4.value; _context7.next = 20; - return this._queryRunnerService.getLastDateData(fluidType); + return this._queryRunnerService.getLastDateData(fluidType, timeStep); case 20: _context7.t1 = _context7.sent; @@ -8984,7 +8985,7 @@ var ConsumptionDataManager = /*#__PURE__*/function () { }, _callee7, this, [[14, 29, 32, 35]]); })); - function fetchAllLastDateData(_x24) { + function fetchAllLastDateData(_x25, _x26) { return _fetchAllLastDateData.apply(this, arguments); } @@ -9023,7 +9024,7 @@ var ConsumptionDataManager = /*#__PURE__*/function () { }, _callee8, this); })); - function checkDoctypeEntries(_x25, _x26) { + function checkDoctypeEntries(_x27, _x28) { return _checkDoctypeEntries.apply(this, arguments); } @@ -9173,7 +9174,7 @@ var ConsumptionDataManager = /*#__PURE__*/function () { }, _callee9); })); - function getLastHourData(_x27, _x28) { + function getLastHourData(_x29, _x30) { return _getLastHourData.apply(this, arguments); } @@ -9214,7 +9215,7 @@ var ConsumptionDataManager = /*#__PURE__*/function () { }, _callee10, this); })); - function getFirsDataDateFromDoctype(_x29) { + function getFirsDataDateFromDoctype(_x31) { return _getFirsDataDateFromDoctype.apply(this, arguments); } @@ -9257,7 +9258,7 @@ var ConsumptionDataManager = /*#__PURE__*/function () { }, _callee11, this); })); - function getFirstDataDateFromDoctypeWithPrice(_x30) { + function getFirstDataDateFromDoctypeWithPrice(_x32) { return _getFirstDataDateFromDoctypeWithPrice.apply(this, arguments); } @@ -9295,7 +9296,7 @@ var ConsumptionDataManager = /*#__PURE__*/function () { }, _callee12, this); })); - function saveDoc(_x31) { + function saveDoc(_x33) { return _saveDoc.apply(this, arguments); } @@ -9333,7 +9334,7 @@ var ConsumptionDataManager = /*#__PURE__*/function () { }, _callee13, this); })); - function saveDocs(_x32) { + function saveDocs(_x34) { return _saveDocs.apply(this, arguments); } @@ -11745,7 +11746,7 @@ var EcogestureSelectionEnd = function EcogestureSelectionEnd() { }, /*#__PURE__*/_react.default.createElement("div", { className: "content" }, /*#__PURE__*/_react.default.createElement("div", { - className: "title text-21-bold" + className: "title text-28-bold" }, t('ecogesture_selection.title_final')), /*#__PURE__*/_react.default.createElement(_StyledIcon.default, { icon: _finish.default, size: 120 @@ -12206,32 +12207,17 @@ Object.defineProperty(exports, "__esModule", { }); exports.default = void 0; -var _react = _interopRequireDefault(__webpack_require__("q1tI")); - -var _reactLottie = _interopRequireDefault(__webpack_require__("hxQi")); +var _logoLoading = _interopRequireDefault(__webpack_require__("FeLS")); var _logos_partenaires = _interopRequireDefault(__webpack_require__("mrO1")); -var loadingData = _interopRequireWildcard(__webpack_require__("noA/")); - -__webpack_require__("a3QZ"); - -var _initialisationSteps = __webpack_require__("3HG6"); - var _I18n = __webpack_require__("buk/"); -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 _initialisationSteps = __webpack_require__("3HG6"); -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 _react = _interopRequireDefault(__webpack_require__("q1tI")); -var loadingOptions = { - loop: true, - autoplay: true, - animationData: loadingData, - rendererSettings: { - preserveAspectRatio: 'xMidYMid slice' - } -}; +__webpack_require__("a3QZ"); var SplashScreen = function SplashScreen(_ref) { var initStep = _ref.initStep; @@ -12249,10 +12235,10 @@ var SplashScreen = function SplashScreen(_ref) { className: "splash-content" }, /*#__PURE__*/_react.default.createElement("div", { className: "splash-loader" - }, /*#__PURE__*/_react.default.createElement(_reactLottie.default, { - options: loadingOptions, - height: 200, - width: 200 + }, /*#__PURE__*/_react.default.createElement("img", { + src: _logoLoading.default, + alt: "Chargement", + height: 200 }), /*#__PURE__*/_react.default.createElement("div", { className: "splash-progress" }, /*#__PURE__*/_react.default.createElement("div", { @@ -12568,6 +12554,13 @@ var result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WE /***/ }), +/***/ "FeLS": +/***/ (function(module, exports) { + +module.exports = "/img/logoLoading.41630e31f573f38a1a4bff912f43a959.gif"; + +/***/ }), + /***/ "FwHM": /***/ (function(module, __webpack_exports__, __webpack_require__) { @@ -14532,6 +14525,8 @@ var _StyledSpinner = _interopRequireDefault(__webpack_require__("HTwM")); var _fluid = __webpack_require__("5Wkc"); +var _reactRouterDom = __webpack_require__("55Ip"); + 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; } @@ -14545,6 +14540,7 @@ var EcogestureSelection = function EcogestureSelection() { t = _useI18n.t; var client = (0, _cozyClient.useClient)(); + var history = (0, _reactRouterDom.useHistory)(); var _useState = (0, _react.useState)(true), _useState2 = (0, _slicedToArray2.default)(_useState, 2), @@ -14726,22 +14722,15 @@ var EcogestureSelection = function EcogestureSelection() { return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_CozyBar.default, { titleKey: t('common.title_ecogestures_choice'), isNotKey: true, - displayBackArrow: indexEcogesture === 0 ? false : true, + displayBackArrow: true, backFunction: function backFunction() { - return setIndexEcogesture(function (prev) { - return prev - 1; - }); + return history.push('/ecogestures'); } }), /*#__PURE__*/_react.default.createElement(_Header.default, { setHeaderHeight: defineHeaderHeight, desktopTitleKey: t('common.title_ecogestures_choice'), - displayBackArrow: indexEcogesture === 0 ? false : true, - isNotKey: true, - backFunction: function backFunction() { - return setIndexEcogesture(function (prev) { - return prev - 1; - }); - } + displayBackArrow: true, + isNotKey: 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, { @@ -15799,7 +15788,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.splash-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n}\n.splash-content .splash-loader {\n width: 100%;\n margin-top: 20vh;\n}\n.splash-content .splash-logos-container {\n margin-top: auto;\n margin-bottom: 1rem;\n width: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n.splash-content .step-label {\n margin: 1rem 0;\n max-width: 350px;\n color: white;\n text-align: center;\n height: 40px;\n}\n.splash-content .splash-error-text {\n text-align: center;\n color: #d25959;\n margin: 0.5rem;\n}\n\n.splash-footer {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: flex-start;\n height: 10rem;\n}\n.splash-footer button.btn-highlight {\n max-width: 230px;\n width: 100%;\n margin: 0.5rem 0 0;\n height: 40px;\n}\n\n.splash-progress {\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 100%;\n margin: 1rem auto;\n padding: 1rem;\n transition: all 300ms ease;\n border-radius: 12px;\n box-sizing: border-box;\n max-width: 350px;\n}\n.splash-progress .splash-progress-bar-container {\n flex: 1;\n height: 12px;\n box-sizing: border-box;\n background-image: linear-gradient(45deg, #e3b82a 11.11%, #1b1c22 11.11%, #1b1c22 50%, #e3b82a 50%, #e3b82a 61.11%, #1b1c22 61.11%, #1b1c22 100%);\n background-size: 9px 9px;\n border: solid 1px #e3b82a;\n border-radius: 12px;\n}\n.splash-progress .splash-progress-bar-container .splash-progress-bar-content {\n height: 12px;\n box-sizing: border-box;\n background-color: #e3b82a;\n border: solid 1px #e3b82a;\n border-radius: 12px 4px 0 12px;\n border-right: none;\n transition: all 300ms ease;\n position: relative;\n overflow: hidden;\n top: -1px;\n left: -1px;\n}\n.splash-progress .splash-progress-bar-container .splash-progress-bar-content:after {\n content: \"\";\n position: absolute;\n display: block;\n transform: rotate(45deg);\n background-color: #1b1c22;\n width: 15px;\n height: 15px;\n right: -9px;\n top: -8px;\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.splash-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n}\n.splash-content .splash-loader {\n width: 100%;\n margin-top: 20vh;\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n.splash-content .splash-logos-container {\n margin-top: auto;\n margin-bottom: 1rem;\n width: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n.splash-content .step-label {\n margin: 1rem 0;\n max-width: 350px;\n color: white;\n text-align: center;\n height: 40px;\n}\n.splash-content .splash-error-text {\n text-align: center;\n color: #d25959;\n margin: 0.5rem;\n}\n\n.splash-footer {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: flex-start;\n height: 10rem;\n}\n.splash-footer button.btn-highlight {\n max-width: 230px;\n width: 100%;\n margin: 0.5rem 0 0;\n height: 40px;\n}\n\n.splash-progress {\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 100%;\n margin: 1rem auto;\n padding: 1rem;\n transition: all 300ms ease;\n border-radius: 12px;\n box-sizing: border-box;\n max-width: 350px;\n}\n.splash-progress .splash-progress-bar-container {\n flex: 1;\n height: 12px;\n box-sizing: border-box;\n background-image: linear-gradient(45deg, #e3b82a 11.11%, #1b1c22 11.11%, #1b1c22 50%, #e3b82a 50%, #e3b82a 61.11%, #1b1c22 61.11%, #1b1c22 100%);\n background-size: 9px 9px;\n border: solid 1px #e3b82a;\n border-radius: 12px;\n}\n.splash-progress .splash-progress-bar-container .splash-progress-bar-content {\n height: 12px;\n box-sizing: border-box;\n background-color: #e3b82a;\n border: solid 1px #e3b82a;\n border-radius: 12px 4px 0 12px;\n border-right: none;\n transition: all 300ms ease;\n position: relative;\n overflow: hidden;\n top: -1px;\n left: -1px;\n}\n.splash-progress .splash-progress-bar-container .splash-progress-bar-content:after {\n content: \"\";\n position: absolute;\n display: block;\n transform: rotate(45deg);\n background-color: #1b1c22;\n width: 15px;\n height: 15px;\n right: -9px;\n top: -8px;\n}", ""]); @@ -15889,6 +15878,7 @@ var FormNavigation = function FormNavigation(_ref) { handlePrevious = _ref.handlePrevious, handleNext = _ref.handleNext, disableNextButton = _ref.disableNextButton, + disablePrevButton = _ref.disablePrevButton, isEcogesture = _ref.isEcogesture, isLastConnectStep = _ref.isLastConnectStep; @@ -15915,7 +15905,7 @@ var FormNavigation = function FormNavigation(_ref) { "aria-label": t('profile_type.accessibility.button_previous'), onClick: handlePreviousClick, className: 'profile-navigation-button', - disabled: step === _profileType.ProfileTypeStepForm.HOUSING_TYPE, + disabled: disablePrevButton || step === _profileType.ProfileTypeStepForm.HOUSING_TYPE, classes: { root: 'btn-profile-back', label: 'text-16-bold' @@ -16920,8 +16910,8 @@ var QueryRunner = /*#__PURE__*/function () { } }, { key: "buildFirstDateQuery", - value: function buildFirstDateQuery(fluidType, limit) { - var doctype = this.getRelevantDoctype(fluidType, _timeStep.TimeStep.DAY); + value: function buildFirstDateQuery(fluidType, limit, timeStep) { + var doctype = this.getRelevantDoctype(fluidType, timeStep || _timeStep.TimeStep.DAY); return (0, _cozyClient.Q)(doctype).where({}).indexFields(['year', 'month', 'day']).sortBy([{ year: 'asc' }, { @@ -16932,8 +16922,8 @@ var QueryRunner = /*#__PURE__*/function () { } }, { key: "buildLastDateQuery", - value: function buildLastDateQuery(fluidType, limit) { - var doctype = this.getRelevantDoctype(fluidType, _timeStep.TimeStep.DAY); + value: function buildLastDateQuery(fluidType, limit, timeStep) { + var doctype = this.getRelevantDoctype(fluidType, timeStep || _timeStep.TimeStep.DAY); return (0, _cozyClient.Q)(doctype).where({}).indexFields(['year', 'month', 'day']).sortBy([{ year: 'desc' }, { @@ -17337,7 +17327,7 @@ var QueryRunner = /*#__PURE__*/function () { }, { key: "getFirstDateData", value: function () { - var _getFirstDateData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(fluidType) { + var _getFirstDateData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(fluidType, timeStep) { var _result$data$, _result$data$2, _result$data$3; var query, result; @@ -17345,19 +17335,19 @@ var QueryRunner = /*#__PURE__*/function () { while (1) { switch (_context5.prev = _context5.next) { case 0: - query = this.buildFirstDateQuery(fluidType, 1); + query = this.buildFirstDateQuery(fluidType, 1, timeStep); _context5.next = 3; return this.fetchData(query); case 3: result = _context5.sent; - if (!(result !== null && result !== void 0 && (_result$data$ = result.data[0]) !== null && _result$data$ !== void 0 && _result$data$.year && result !== null && result !== void 0 && (_result$data$2 = result.data[0]) !== null && _result$data$2 !== void 0 && _result$data$2.month && result !== null && result !== void 0 && (_result$data$3 = result.data[0]) !== null && _result$data$3 !== void 0 && _result$data$3.day)) { + if (!(result !== null && result !== void 0 && (_result$data$ = result.data[0]) !== null && _result$data$ !== void 0 && _result$data$.year && result !== null && result !== void 0 && (_result$data$2 = result.data[0]) !== null && _result$data$2 !== void 0 && _result$data$2.month && (result === null || result === void 0 ? void 0 : (_result$data$3 = result.data[0]) === null || _result$data$3 === void 0 ? void 0 : _result$data$3.day) >= 0)) { _context5.next = 6; break; } - return _context5.abrupt("return", _luxon.DateTime.local(result.data[0].year, result.data[0].month, result.data[0].day, result.data[0].hour ? result.data[0].hour : 0, result.data[0].minute ? result.data[0].minute : 0).setZone('utc', { + return _context5.abrupt("return", _luxon.DateTime.local(result.data[0].year, result.data[0].month, result.data[0].day === 0 ? 1 : result.data[0].day, result.data[0].hour || 0, result.data[0].minute || 0).setZone('utc', { keepLocalTime: true })); @@ -17372,7 +17362,7 @@ var QueryRunner = /*#__PURE__*/function () { }, _callee5, this); })); - function getFirstDateData(_x12) { + function getFirstDateData(_x12, _x13) { return _getFirstDateData.apply(this, arguments); } @@ -17381,7 +17371,7 @@ var QueryRunner = /*#__PURE__*/function () { }, { key: "getLastDateData", value: function () { - var _getLastDateData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(fluidType) { + var _getLastDateData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(fluidType, timeStep) { var _result$data$4, _result$data$5, _result$data$6; var query, result; @@ -17389,19 +17379,19 @@ var QueryRunner = /*#__PURE__*/function () { while (1) { switch (_context6.prev = _context6.next) { case 0: - query = this.buildLastDateQuery(fluidType, 1); + query = this.buildLastDateQuery(fluidType, 1, timeStep); _context6.next = 3; return this.fetchData(query); case 3: result = _context6.sent; - if (!(result !== null && result !== void 0 && (_result$data$4 = result.data[0]) !== null && _result$data$4 !== void 0 && _result$data$4.year && result !== null && result !== void 0 && (_result$data$5 = result.data[0]) !== null && _result$data$5 !== void 0 && _result$data$5.month && result !== null && result !== void 0 && (_result$data$6 = result.data[0]) !== null && _result$data$6 !== void 0 && _result$data$6.day)) { + if (!(result !== null && result !== void 0 && (_result$data$4 = result.data[0]) !== null && _result$data$4 !== void 0 && _result$data$4.year && result !== null && result !== void 0 && (_result$data$5 = result.data[0]) !== null && _result$data$5 !== void 0 && _result$data$5.month && (result === null || result === void 0 ? void 0 : (_result$data$6 = result.data[0]) === null || _result$data$6 === void 0 ? void 0 : _result$data$6.day) >= 0)) { _context6.next = 6; break; } - return _context6.abrupt("return", _luxon.DateTime.local(result.data[0].year, result.data[0].month, result.data[0].day, result.data[0].hour ? result.data[0].hour : 0, result.data[0].minute ? result.data[0].minute : 0).setZone('utc', { + return _context6.abrupt("return", _luxon.DateTime.local(result.data[0].year, result.data[0].month, result.data[0].day === 0 ? 1 : result.data[0].day, result.data[0].hour || 0, result.data[0].minute || 0).setZone('utc', { keepLocalTime: true })); @@ -17416,7 +17406,7 @@ var QueryRunner = /*#__PURE__*/function () { }, _callee6, this); })); - function getLastDateData(_x13) { + function getLastDateData(_x14, _x15) { return _getLastDateData.apply(this, arguments); } @@ -17454,7 +17444,7 @@ var QueryRunner = /*#__PURE__*/function () { }, _callee7, this, [[1, 9]]); })); - function getEntries(_x14, _x15) { + function getEntries(_x16, _x17) { return _getEntries.apply(this, arguments); } @@ -21257,7 +21247,7 @@ var EnvironmentService = /*#__PURE__*/function () { key: "getPublicURL", value: function getPublicURL() { if (!this.isAlpha()) { - return 'https://ecolyo-agent.grandlyon.com'; + return 'https://ecolyo-agent.apps.grandlyon.com'; } else { return 'https://ecolyo-agent-rec.grandlyon.com'; } @@ -25207,7 +25197,7 @@ var ProfileTypeFinished = function ProfileTypeFinished(_ref) { onClick: handleClick, className: 'profile-type-finished-button', classes: { - root: 'btn-secondary-negative', + root: 'btn-primary-positive', label: 'text-16-normal' } }, t('profile_type.finished.button_validate'))); @@ -31581,7 +31571,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@media only screen and (max-width : 768px) {\n .cozy-bar {\n margin-left: 1.25rem;\n }\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.cv-button {\n width: 4.25rem;\n}\n\n.coz-label {\n color: #32363f;\n}\n\n.header {\n display: flex;\n align-items: center;\n flex-direction: column;\n overflow: hidden;\n width: 100%;\n z-index: 18;\n position: fixed;\n top: 48px;\n left: 0;\n}\n@media only screen and (max-width : 768px) {\n .header {\n top: 0;\n }\n}\n.header .header-top {\n background: radial-gradient(circle, rgb(52, 54, 65) 0%, rgb(27, 28, 34) 100%);\n width: 100%;\n}\n.header .header-top .header-text {\n padding: 0 1rem 1rem 1rem;\n color: #e0e0e0;\n}\n.header .header-content {\n margin: 0 0 0 220px;\n display: flex;\n flex-direction: column;\n}\n@media only screen and (max-width : 1023px) {\n .header .header-content {\n margin: 0;\n }\n}\n@media only screen and (max-width : 768px) {\n .header .header-content {\n margin: 60px 0 0 0;\n }\n}\n.header .header-content .header-content-top {\n display: flex;\n flex-direction: row;\n}\n.header .header-content .header-content-top.header-content-top-right {\n justify-content: flex-end;\n}\n.header .header-content .header-content-top .header-text {\n padding: 2rem 1rem;\n flex: 1;\n}\n.header .header-content .header-content-top .header-text-desktop {\n display: flex;\n flex: 1;\n padding: 2rem 1.25rem;\n color: #e0e0e0;\n}\n.header .header-content .header-content-top .header-back-button {\n padding: 0 0.75rem;\n}\n@media only screen and (max-width : 768px) {\n .header .header-content .header-content-top .header-text {\n padding: 0 1rem 1rem 1rem;\n color: #e0e0e0;\n }\n .header .header-content .header-content-top .header-text-desktop {\n display: none;\n }\n .header .header-content .header-content-top .header-feedbacks-button {\n display: none;\n }\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.isBuilding {\n color: #e3b82a;\n margin-left: 0.8rem;\n margin-right: 0.8rem;\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-result {\n font-family: Lato, sans-serif;\n font-style: normal;\n font-weight: 900;\n font-size: 1.75rem;\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: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\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}\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}\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}\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}\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}\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}\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}\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}\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}\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}\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 margin-top: 1rem;\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;\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}", ""]); +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@media only screen and (max-width : 768px) {\n .cozy-bar {\n margin-left: 1.25rem;\n }\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.cv-button {\n width: 4.25rem;\n}\n\n.coz-label {\n color: #32363f;\n}\n\n.header {\n display: flex;\n align-items: center;\n flex-direction: column;\n overflow: hidden;\n width: 100%;\n z-index: 18;\n position: fixed;\n top: 48px;\n left: 0;\n}\n@media only screen and (max-width : 768px) {\n .header {\n top: 0;\n }\n}\n.header .header-top {\n background: radial-gradient(circle, rgb(52, 54, 65) 0%, rgb(27, 28, 34) 100%);\n width: 100%;\n}\n.header .header-top .header-text {\n padding: 0 1rem 1rem 1rem;\n color: #e0e0e0;\n}\n.header .header-content {\n margin: 0 0 0 220px;\n display: flex;\n flex-direction: column;\n}\n@media only screen and (max-width : 1023px) {\n .header .header-content {\n margin: 0;\n }\n}\n@media only screen and (max-width : 768px) {\n .header .header-content {\n margin: 60px 0 0 0;\n }\n}\n.header .header-content .header-content-top {\n display: flex;\n flex-direction: row;\n}\n.header .header-content .header-content-top.header-content-top-right {\n justify-content: flex-end;\n}\n.header .header-content .header-content-top .header-text {\n padding: 2rem 1rem;\n flex: 1;\n}\n.header .header-content .header-content-top .header-text-desktop {\n display: flex;\n flex: 1;\n padding: 2rem 1.25rem;\n color: #e0e0e0;\n}\n.header .header-content .header-content-top .header-back-button {\n padding: 0 0.75rem;\n}\n@media only screen and (max-width : 768px) {\n .header .header-content .header-content-top .header-text {\n padding: 0 1rem 1rem 1rem;\n color: #e0e0e0;\n }\n .header .header-content .header-content-top .header-text-desktop {\n display: none;\n }\n .header .header-content .header-content-top .header-feedbacks-button {\n display: none;\n }\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.isBuilding {\n color: #e3b82a;\n margin-left: 0.8rem;\n margin-right: 0.8rem;\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-result {\n font-family: Lato, sans-serif;\n font-style: normal;\n font-weight: 900;\n font-size: 1.75rem;\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: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\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-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 margin-top: 1rem;\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;\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}", ""]); @@ -31590,7 +31580,7 @@ exports.push([module.i, "/* Cozy UI utilities classes */\n/* Cozy UI React compo /***/ "pZg0": /***/ (function(module, exports) { -module.exports = {"name":"Ecolyo","slug":"ecolyo","icon":"icon.svg","categories":["energy"],"version":"1.12.0","licence":"AGPL-3.0","editor":"Métropole de Lyon","default_locale":"fr","locales":{"fr":{"short_description":"Ecolyo est le service proposé par la Métropole de Lyon pour suivre et comprendre les consommations d’énergie et d’eau de votre foyer.","long_description":"Ecolyo est le service proposé par la Métropole de Lyon pour suivre et comprendre les consommations d’énergie et d’eau de votre foyer afin de vous accompagner dans la gestion quotidienne de ces consommations et ce, de façon ludique en vous lançant des défis personnalisés.","permissions":{"ecolyo":{"description":"Requises pour le fonctionnement des différentes parties de l’application (Analyse, liste d’astuces personnalisée, …)."},"enedis":{"description":"Requises pour l’affichage et l’analyse de vos consommations électriques dans Ecolyo. Issues du connecteur Enedis."},"grdf":{"description":"Requises pour l’affichage et l’analyse de vos consommations de gaz dans Ecolyo. Issues du connecteur GRDF."},"egl":{"description":"Requises pour l’affichage et l’analyse de vos consommations d’eau dans Ecolyo. Issues du connecteur Eau du Grand Lyon."},"konnectors":{"description":"Requis pour vérifier la présence des connecteurs Enedis, GRDF et Eau du Grand Lyon ainsi que pour pouvoir les configurer à partir de l’application Ecolyo."},"accounts":{"description":"Requis pour stocker des informations propres aux comptes énergie et eau (Enedis, GRDF, Eau du Grand Lyon). Sont stockés votre numéro de PDL pour Enedis, votre numéro de PCE pour GRDF, vos logins et mots de passe pour Eau du Grand Lyon."},"triggers":{"description":"Requis pour le bon fonctionnement des connecteurs énergie et eau."},"jobs":{"description":"Requis pour le bon fonctionnement des connecteurs énergie et eau."},"terms":{"description":"Nécessaire pour la gestion des consentements de l'application"},"apps":{"description":"Requis par Cozy pour afficher les icônes des applications installées dans la barre Cozy."},"settings":{"description":"Requis pour afficher les paramètres Cozy dans la barre Cozy."},"ecolyo-dju":{"description":"Requis pour la récupération des DJU (Degrés Jours Unifiés), informations météorologiques permettant d’ajuster le modèle de comparaison des consommations énergétiques."},"dacc-dev":{"description":"Requis pour la récupération et l’envoi de statistiques d’utilisation anonymisées dans un environnement de test."},"dacc":{"description":"Requis pour envoyer des statistiques d'utilisation anonymisées."},"backoffice-rec":{"description":"Requis pour la récupération des données de la newsletter dans un environment de test."},"backoffice":{"description":"Requis pour la récupération des données de la newsletter."},"backoffice-partners-info-rec":{"description":"Requis pour la récupération du status des services partenaires dans un environment de test."},"backoffice-partners-info":{"description":"Requis pour la récupération du status des services partenaires"},"backoffice-prices-rec":{"description":"Requis pour la récupération du prix des fluides dans un environnement de test."},"backoffice-prices":{"description":"Requis pour la récupération du prix des fluides."}}},"en":{"short_description":"Ecolyo a free service developed by Métropole de Lyon to help you to monitor and understand the energy and water consumption of your home.","long_description":"Ecolyo a free service developed by the Métropole de Lyon to help you to monitor and understand the energy and water consumption of your home. To help you in reducing your daily consumption it gives you best energy consumption practices, consumption analysis and challenges to take up. At least one Smartmeter is needed among Linky (for electricity), Gazpar (for gas) or Téléo (for water).","permissions":{"ecolyo":{"description":"Required for the operation of the different parts of the application (Analysis, customized eco-gesture lists, etc...)."},"enedis":{"description":"Required for the display and analysis of your electricity consumption in Ecolyo. Retrieved by the Enedis connector."},"grdf":{"description":"Required for the display and analysis of your gas consumption in Ecolyo. Retrieved by the GRDF connector."},"egl":{"description":"Required for the display and analysis of your water consumption in Ecolyo. Retrieved by the Eau du Grand Lyon connector."},"konnectors":{"description":"Required to verify the presence of the Enedis, GRDF and Eau du Grand Lyon connectors as well as to be able to configure them from the Ecolyo application."},"accounts":{"description":"Required to store information specific to energy and water accounts (Enedis, GRDF, Eau du Grand Lyon). Your PDL number for Enedis, your PCE number for GRDF, your logins and passwords for Eau du Grand Lyon are stored."},"triggers":{"description":"Required for the correct functioning of the energy and water connectors."},"jobs":{"description":"Required for the correct functioning of the energy and water connectors."},"terms":{"description":"Required for the correct managment of CGU."},"apps":{"description":"Required to display the icons of installed applications in the Cozy bar."},"settings":{"description":"Required for the application's consents managment"},"ecolyo-dju":{"description":"Required to gather udd data (Unified Degree Days), a meteorological data allowing the app to adjust our energical consumption model. "},"dacc-dev":{"description":"Required for gathering and sending anonymous usage statistics for test environment."},"dacc":{"description":"Required for sending cozy anonymized stats."},"backoffice-rec":{"description":"Required for retrieving newsletter informations from backoffice rec."},"backoffice":{"description":"Required for retrieving newsletter informations from backoffice prod."},"backoffice-partners-info-rec":{"description":"Required for getting the status of partners' services in test environment."},"backoffice-partners-info":{"description":"Required for getting the status of partners' services"},"backoffice-prices-rec":{"description":"Required for getting fluid prices form backoffice rec."},"backoffice-prices":{"description":"Required for getting fluid prices form backoffice prod"}}}},"langs":["fr"],"developer":{"name":"Métropole de Lyon","url":"https://www.grandlyon.com/"},"routes":{"/":{"folder":"/","index":"index.html","public":false}},"services":{"enedisHalfHourMonthlyAnalysis":{"type":"node","file":"services/enedisHalfHourMonthlyAnalysis/ecolyo.js","trigger":"@cron 0 0 8 3 * *"},"monthlyReportNotification":{"type":"node","file":"services/monthlyReportNotification/ecolyo.js","trigger":"@cron 0 0 10 3 * *"},"consumptionAlert":{"type":"node","file":"services/consumptionAlert/ecolyo.js","trigger":"@cron 0 3 * * *"},"aggregatorUsageEvents":{"type":"node","file":"services/aggregatorUsageEvents/ecolyo.js","trigger":"@cron 0 1 * * *"},"fluidsPrices":{"type":"node","file":"services/fluidsPrices/ecolyo.js","trigger":"@cron 0 2 * * *"}},"permissions":{"ecolyo":{"type":"com.grandlyon.ecolyo.*"},"enedis":{"type":"com.grandlyon.enedis.*"},"grdf":{"type":"com.grandlyon.grdf.*"},"egl":{"type":"com.grandlyon.egl.*"},"konnectors":{"type":"io.cozy.konnectors"},"accounts":{"type":"io.cozy.accounts"},"triggers":{"type":"io.cozy.triggers"},"jobs":{"type":"io.cozy.jobs"},"terms":{"type":"io.cozy.terms"},"apps":{"type":"io.cozy.apps","verbs":["GET"]},"settings":{"type":"io.cozy.settings","verbs":["GET"]},"ecolyo-dju":{"type":"org.ecolyo.dju","verbs":["GET"]},"dacc":{"type":"cc.cozycloud.dacc_v2","verbs":["ALL"]},"dacc-dev":{"type":"cc.cozycloud.dacc.dev_v2","verbs":["ALL"]},"backoffice-rec":{"type":"org.ecolyo.backoffice.rec","verbs":["ALL"]},"backoffice-prod":{"type":"org.ecolyo.backoffice","verbs":["ALL"]},"backoffice-custom-popup-rec":{"type":"org.ecolyo.backoffice.custom.popup.rec","verbs":["ALL"]},"backoffice-custom-popup":{"type":"org.ecolyo.backoffice.custom.popup","verbs":["ALL"]},"backoffice-partners-info-rec":{"type":"org.ecolyo.backoffice.partners.info.rec","verbs":["ALL"]},"backoffice-partners-info":{"type":"org.ecolyo.backoffice.partners.info","verbs":["ALL"]},"backoffice-prices-rec":{"type":"org.ecolyo.backoffice.prices.rec","verbs":["ALL"]},"backoffice-prices":{"type":"org.ecolyo.backoffice.prices","verbs":["ALL"]}}} +module.exports = {"name":"Ecolyo","slug":"ecolyo","icon":"icon.svg","categories":["energy"],"version":"2.0.0","licence":"AGPL-3.0","editor":"Métropole de Lyon","default_locale":"fr","locales":{"fr":{"short_description":"Ecolyo est le service proposé par la Métropole de Lyon pour suivre et comprendre les consommations d’énergie et d’eau de votre foyer.","long_description":"Ecolyo est le service proposé par la Métropole de Lyon pour suivre et comprendre les consommations d’énergie et d’eau de votre foyer afin de vous accompagner dans la gestion quotidienne de ces consommations et ce, de façon ludique en vous lançant des défis personnalisés.","permissions":{"ecolyo":{"description":"Requises pour le fonctionnement des différentes parties de l’application (Analyse, liste d’astuces personnalisée, …)."},"enedis":{"description":"Requises pour l’affichage et l’analyse de vos consommations électriques dans Ecolyo. Issues du connecteur Enedis."},"grdf":{"description":"Requises pour l’affichage et l’analyse de vos consommations de gaz dans Ecolyo. Issues du connecteur GRDF."},"egl":{"description":"Requises pour l’affichage et l’analyse de vos consommations d’eau dans Ecolyo. Issues du connecteur Eau du Grand Lyon."},"konnectors":{"description":"Requis pour vérifier la présence des connecteurs Enedis, GRDF et Eau du Grand Lyon ainsi que pour pouvoir les configurer à partir de l’application Ecolyo."},"accounts":{"description":"Requis pour stocker des informations propres aux comptes énergie et eau (Enedis, GRDF, Eau du Grand Lyon). Sont stockés votre numéro de PDL pour Enedis, votre numéro de PCE pour GRDF, vos logins et mots de passe pour Eau du Grand Lyon."},"triggers":{"description":"Requis pour le bon fonctionnement des connecteurs énergie et eau."},"jobs":{"description":"Requis pour le bon fonctionnement des connecteurs énergie et eau."},"terms":{"description":"Nécessaire pour la gestion des consentements de l'application"},"apps":{"description":"Requis par Cozy pour afficher les icônes des applications installées dans la barre Cozy."},"settings":{"description":"Requis pour afficher les paramètres Cozy dans la barre Cozy."},"ecolyo-dju":{"description":"Requis pour la récupération des DJU (Degrés Jours Unifiés), informations météorologiques permettant d’ajuster le modèle de comparaison des consommations énergétiques."},"dacc-dev":{"description":"Requis pour la récupération et l’envoi de statistiques d’utilisation anonymisées dans un environnement de test."},"dacc":{"description":"Requis pour envoyer des statistiques d'utilisation anonymisées."},"backoffice-prod":{"description":"Requis pour la récupération des données de la newsletter."},"backoffice-rec":{"description":"Requis pour la récupération des données de la newsletter dans un environment de test."},"backoffice-custom-popup":{"description":"Requis pour la récupération des alertes personnalisées."},"backoffice-custom-popup-rec":{"description":"Requis pour la récupération des alertes personnalisées dans un environment de test."},"backoffice-partners-info":{"description":"Requis pour la récupération du status des services partenaires"},"backoffice-partners-info-rec":{"description":"Requis pour la récupération du status des services partenaires dans un environment de test."},"backoffice-prices":{"description":"Requis pour la récupération du prix des fluides."},"backoffice-prices-rec":{"description":"Requis pour la récupération du prix des fluides dans un environnement de test."}}},"en":{"short_description":"Ecolyo a free service developed by Métropole de Lyon to help you to monitor and understand the energy and water consumption of your home.","long_description":"Ecolyo a free service developed by the Métropole de Lyon to help you to monitor and understand the energy and water consumption of your home. To help you in reducing your daily consumption it gives you best energy consumption practices, consumption analysis and challenges to take up. At least one Smartmeter is needed among Linky (for electricity), Gazpar (for gas) or Téléo (for water).","permissions":{"ecolyo":{"description":"Required for the operation of the different parts of the application (Analysis, customized eco-gesture lists, etc...)."},"enedis":{"description":"Required for the display and analysis of your electricity consumption in Ecolyo. Retrieved by the Enedis connector."},"grdf":{"description":"Required for the display and analysis of your gas consumption in Ecolyo. Retrieved by the GRDF connector."},"egl":{"description":"Required for the display and analysis of your water consumption in Ecolyo. Retrieved by the Eau du Grand Lyon connector."},"konnectors":{"description":"Required to verify the presence of the Enedis, GRDF and Eau du Grand Lyon connectors as well as to be able to configure them from the Ecolyo application."},"accounts":{"description":"Required to store information specific to energy and water accounts (Enedis, GRDF, Eau du Grand Lyon). Your PDL number for Enedis, your PCE number for GRDF, your logins and passwords for Eau du Grand Lyon are stored."},"triggers":{"description":"Required for the correct functioning of the energy and water connectors."},"jobs":{"description":"Required for the correct functioning of the energy and water connectors."},"terms":{"description":"Required for the correct managment of CGU."},"apps":{"description":"Required to display the icons of installed applications in the Cozy bar."},"settings":{"description":"Required for the application's consents managment"},"ecolyo-dju":{"description":"Required to gather udd data (Unified Degree Days), a meteorological data allowing the app to adjust our energical consumption model. "},"dacc-dev":{"description":"Required for gathering and sending anonymous usage statistics for test environment."},"dacc":{"description":"Required for sending cozy anonymized stats."},"backoffice-prod":{"description":"Required for retrieving newsletter informations from backoffice prod."},"backoffice-rec":{"description":"Required for retrieving newsletter informations from backoffice rec."},"backoffice-custom-popup":{"description":"Required for retrieving custom alerts."},"backoffice-custom-popup-rec":{"description":"Required for retrieving custom alerts in test environment."},"backoffice-partners-info":{"description":"Required for getting the status of partners' services"},"backoffice-partners-info-rec":{"description":"Required for getting the status of partners' services in test environment."},"backoffice-prices":{"description":"Required for getting fluid prices form backoffice prod"},"backoffice-prices-rec":{"description":"Required for getting fluid prices form backoffice rec."}}}},"langs":["fr"],"developer":{"name":"Métropole de Lyon","url":"https://www.grandlyon.com/"},"routes":{"/":{"folder":"/","index":"index.html","public":false}},"services":{"enedisHalfHourMonthlyAnalysis":{"type":"node","file":"services/enedisHalfHourMonthlyAnalysis/ecolyo.js","trigger":"@cron 0 0 8 3 * *"},"monthlyReportNotification":{"type":"node","file":"services/monthlyReportNotification/ecolyo.js","trigger":"@cron 0 0 10 3 * *"},"consumptionAlert":{"type":"node","file":"services/consumptionAlert/ecolyo.js","trigger":"@cron 0 3 * * *"},"aggregatorUsageEvents":{"type":"node","file":"services/aggregatorUsageEvents/ecolyo.js","trigger":"@cron 0 1 * * *"},"fluidsPrices":{"type":"node","file":"services/fluidsPrices/ecolyo.js","trigger":"@cron 0 2 * * *"}},"permissions":{"ecolyo":{"type":"com.grandlyon.ecolyo.*"},"enedis":{"type":"com.grandlyon.enedis.*"},"grdf":{"type":"com.grandlyon.grdf.*"},"egl":{"type":"com.grandlyon.egl.*"},"konnectors":{"type":"io.cozy.konnectors"},"accounts":{"type":"io.cozy.accounts"},"triggers":{"type":"io.cozy.triggers"},"jobs":{"type":"io.cozy.jobs"},"terms":{"type":"io.cozy.terms"},"apps":{"type":"io.cozy.apps","verbs":["GET"]},"settings":{"type":"io.cozy.settings","verbs":["GET"]},"ecolyo-dju":{"type":"org.ecolyo.dju","verbs":["GET"]},"dacc":{"type":"cc.cozycloud.dacc_v2","verbs":["ALL"]},"dacc-dev":{"type":"cc.cozycloud.dacc.dev_v2","verbs":["ALL"]},"backoffice-prod":{"type":"org.ecolyo.agent","verbs":["ALL"]},"backoffice-rec":{"type":"org.ecolyo.agent.rec","verbs":["ALL"]},"backoffice-custom-popup":{"type":"org.ecolyo.agent.custom.popup","verbs":["ALL"]},"backoffice-custom-popup-rec":{"type":"org.ecolyo.agent.custom.popup.rec","verbs":["ALL"]},"backoffice-partners-info":{"type":"org.ecolyo.agent.partners.info","verbs":["ALL"]},"backoffice-partners-info-rec":{"type":"org.ecolyo.agent.partners.info.rec","verbs":["ALL"]},"backoffice-prices":{"type":"org.ecolyo.agent.prices","verbs":["ALL"]},"backoffice-prices-rec":{"type":"org.ecolyo.agent.prices.rec","verbs":["ALL"]}}} /***/ }), @@ -32351,7 +32341,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.profile-navigation {\n border-top: 1px solid #7b7b7b;\n background: #1b1c22;\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 1.5rem;\n padding: 1rem;\n}\n@media (min-width: 1023px) {\n .profile-navigation {\n background: #121212;\n height: 3rem;\n }\n}\n.profile-navigation .disabled {\n opacity: 0.5;\n}\n.profile-navigation button.profile-navigation-button {\n max-width: 12.5rem;\n margin: 0;\n padding: 0.5rem 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.profile-navigation {\n border-top: 1px solid #7b7b7b;\n background: #1b1c22;\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 1.5rem;\n padding: 1rem;\n}\n@media (min-width: 1023px) {\n .profile-navigation {\n background: #121212;\n height: 3rem;\n }\n}\n.profile-navigation button.profile-navigation-button {\n max-width: 12.5rem;\n margin: 0;\n padding: 0.5rem 1rem;\n}", ""]); diff --git a/apple-touch-icon.png b/apple-touch-icon.png index 6e9f08491e80c9b5b19817c83ab15140f032525a..8099efe9e64a487c65cd43124539328bb7ca600f 100644 Binary files a/apple-touch-icon.png and b/apple-touch-icon.png differ diff --git a/favicon-16x16.ico b/favicon-16x16.ico index 9de53fc215d7c5f6237dc683a227df9bef053ced..29787005e1efcabcff52a2fd4c3ca4db9c869453 100644 Binary files a/favicon-16x16.ico and b/favicon-16x16.ico differ diff --git a/favicon-16x16.png b/favicon-16x16.png index a8fefecc1d2c2d1e5970cdc0bcd110a19edeea31..29787005e1efcabcff52a2fd4c3ca4db9c869453 100644 Binary files a/favicon-16x16.png and b/favicon-16x16.png differ diff --git a/favicon-32x32.png b/favicon-32x32.png index 6cc0fb12ad9afd1702985556560b2bc30a19fe86..c065b0c2909a48cf49774d75ef8271a0c251aef3 100644 Binary files a/favicon-32x32.png and b/favicon-32x32.png differ diff --git a/icon.svg b/icon.svg index 93d43df6d411414ebb0b71525f7776b74419ac65..095c840823808a19cecc00dd4cd24fe6e164245a 100644 --- a/icon.svg +++ b/icon.svg @@ -1 +1 @@ -<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="M8.013 15.059c6.841-2.67 6.31-6.466 5.955-12.128-2.197-.097-4.147-.772-5.955-1.898C6.205 2.159 4.256 2.834 2.058 2.93c-.354 5.662-.886 9.458 5.955 12.128z" fill="#1B1C22"/><path d="M8.013 0L7.55.289c-1.695 1.055-3.5 1.677-5.53 1.766l-.787.035-.05.786c-.014.234-.03.466-.045.697-.162 2.486-.315 4.817.37 6.826.788 2.317 2.619 4.084 6.187 5.477l.318.124v-.941c-6.573-2.566-6.34-6.17-5.997-11.47l.042-.658c2.198-.097 4.147-.772 5.955-1.898V0z" fill="#FFC600"/><path d="M8.013 0l.464.289c1.694 1.055 3.5 1.677 5.53 1.766l.787.035.05.786.044.697c.163 2.486.315 4.817-.37 6.826-.788 2.317-2.618 4.084-6.186 5.477L8.013 16v-.941c6.573-2.566 6.34-6.17 5.997-11.47l-.042-.658c-2.197-.097-4.147-.772-5.955-1.898V0z" fill="#DB8300"/><path d="M5.851 5.514h.311c.125 0 .244.049.332.136a.46.46 0 01.137.327v4.699H5.383V5.977c0-.123.05-.24.137-.327a.471.471 0 01.331-.136zm2.161 2.288h.311c.125 0 .244.049.331.136a.46.46 0 01.138.327v2.41H7.544v-2.41c0-.123.05-.24.137-.327a.471.471 0 01.331-.136zm2.29-.885h.311a.47.47 0 01.331.136.46.46 0 01.137.327v3.296H9.834V7.38c0-.123.049-.24.137-.327a.471.471 0 01.331-.136z" fill="#FFC600"/></svg> \ No newline at end of file +<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M15.482 30.899c.327.135.71.135 1.036 0 13.446-5.562 12.9-13.352 12.178-24.754a1.484 1.484 0 00-1.34-1.38c-3.85-.366-7.341-1.609-10.607-3.558a1.458 1.458 0 00-1.498 0c-3.266 1.95-6.756 3.192-10.606 3.559a1.484 1.484 0 00-1.341 1.379c-.722 11.402-1.268 19.192 12.178 24.754z" fill="url(#paint0_radial_14017_3981)"/><path fill-rule="evenodd" clip-rule="evenodd" d="M27.957 5.9c.391 6.068.643 10.648-.753 14.468-1.33 3.64-4.294 6.861-11.204 9.685-6.91-2.824-9.873-6.045-11.204-9.685-1.396-3.82-1.144-8.4-.753-14.468C8.39 5.457 12.335 4.078 16 1.962c3.666 2.116 7.61 3.495 11.957 3.938zM16.565 31.892a1.531 1.531 0 01-1.13 0C.823 25.982 1.358 17.715 2.141 5.629l.009-.141c.05-.782.682-1.398 1.463-1.471C7.813 3.625 11.62 2.3 15.183.22a1.622 1.622 0 011.634 0c3.563 2.08 7.37 3.404 11.57 3.796.781.073 1.413.689 1.464 1.47l.009.142c.782 12.086 1.317 20.354-13.295 26.263z" fill="#FFC600"/><path fill-rule="evenodd" clip-rule="evenodd" d="M27.957 5.9c.391 6.068.643 10.648-.753 14.468-1.33 3.64-4.294 6.861-11.204 9.685-6.91-2.824-9.873-6.045-11.204-9.685-1.396-3.82-1.144-8.4-.753-14.468C8.39 5.457 12.335 4.078 16 1.962c3.666 2.116 7.61 3.495 11.957 3.938zM16.565 31.892a1.531 1.531 0 01-1.13 0C.823 25.982 1.358 17.715 2.141 5.629l.009-.141c.05-.782.682-1.398 1.463-1.471C7.813 3.625 11.62 2.3 15.183.22a1.622 1.622 0 011.634 0c3.563 2.08 7.37 3.404 11.57 3.796.781.073 1.413.689 1.464 1.47l.009.142c.782 12.086 1.317 20.354-13.295 26.263z" fill="url(#paint1_linear_14017_3981)" fill-opacity=".75"/><path fill-rule="evenodd" clip-rule="evenodd" d="M16 32c.194 0 .387-.036.565-.108 14.612-5.91 14.077-14.177 13.295-26.263l-.01-.141c-.05-.782-.682-1.398-1.462-1.471-4.2-.392-8.008-1.717-11.57-3.796A1.62 1.62 0 0016 0v1.963c3.666 2.115 7.61 3.494 11.957 3.937.391 6.068.643 10.648-.753 14.468-1.33 3.64-4.294 6.86-11.204 9.685V32z" fill="#DB8300"/><path fill-rule="evenodd" clip-rule="evenodd" d="M16 32c.194 0 .387-.036.565-.108 14.612-5.91 14.077-14.177 13.295-26.263l-.01-.141c-.05-.782-.682-1.398-1.462-1.471-4.2-.392-8.008-1.717-11.57-3.796A1.62 1.62 0 0016 0v1.963c3.666 2.115 7.61 3.494 11.957 3.937.391 6.068.643 10.648-.753 14.468-1.33 3.64-4.294 6.86-11.204 9.685V32z" fill="url(#paint2_linear_14017_3981)" fill-opacity=".75"/><path fill-rule="evenodd" clip-rule="evenodd" d="M10 10.342a1.342 1.342 0 112.684 0v9.402a.375.375 0 01-.375.375h-1.934a.375.375 0 01-.375-.375v-9.402zm4.793 4.793a1.342 1.342 0 012.684 0v4.61a.375.375 0 01-.375.375h-1.934a.375.375 0 01-.375-.375v-4.61zm6.135-3.259c-.74 0-1.342.6-1.342 1.342v6.526c0 .208.168.375.376.375h1.933a.375.375 0 00.375-.375v-6.526c0-.741-.6-1.342-1.342-1.342z" fill="#FFC600"/><path fill-rule="evenodd" clip-rule="evenodd" d="M10 10.342a1.342 1.342 0 112.684 0v9.402a.375.375 0 01-.375.375h-1.934a.375.375 0 01-.375-.375v-9.402zm4.793 4.793a1.342 1.342 0 012.684 0v4.61a.375.375 0 01-.375.375h-1.934a.375.375 0 01-.375-.375v-4.61zm6.135-3.259c-.74 0-1.342.6-1.342 1.342v6.526c0 .208.168.375.376.375h1.933a.375.375 0 00.375-.375v-6.526c0-.741-.6-1.342-1.342-1.342z" fill="url(#paint3_linear_14017_3981)"/><defs><linearGradient id="paint1_linear_14017_3981" x1="15.425" y1="30.966" x2="5.172" y2="3.753" gradientUnits="userSpaceOnUse"><stop stop-color="#CB6E00"/><stop offset="1" stop-color="#FFC600" stop-opacity="0"/></linearGradient><linearGradient id="paint2_linear_14017_3981" x1="24.816" y1="31.062" x2="16" y2="1.741" gradientUnits="userSpaceOnUse"><stop stop-color="#793A00"/><stop offset="1" stop-color="#DB8300" stop-opacity="0"/></linearGradient><linearGradient id="paint3_linear_14017_3981" x1="22.27" y1="19.737" x2="10.575" y2="9" gradientUnits="userSpaceOnUse"><stop stop-color="#DB8300"/><stop offset="1" stop-color="#FFC600"/></linearGradient><radialGradient id="paint0_radial_14017_3981" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(6.58783 21.47034 -22.0474 6.7649 9.412 4.608)"><stop stop-color="#2B2D37"/><stop offset="1" stop-color="#15161B"/></radialGradient></defs></svg> \ No newline at end of file diff --git a/img/logoLoading.41630e31f573f38a1a4bff912f43a959.gif b/img/logoLoading.41630e31f573f38a1a4bff912f43a959.gif new file mode 100644 index 0000000000000000000000000000000000000000..22ca03a34246002e5dc5a850aad11675cbd19d96 Binary files /dev/null and b/img/logoLoading.41630e31f573f38a1a4bff912f43a959.gif differ diff --git a/index.html b/index.html index e0283156d99ac98ffd5c5da39bfcb1278533c84a..29f794161d2ea1de5a653d410e2177f2c113f1f1 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,user-scalable=0,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.0d9221201ffbd1127b31.js"></script><script src="app/ecolyo.f6b3706cd66c531df4c7.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,user-scalable=0,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"><!-- PWA iOS title --><meta name="apple-mobile-web-app-title" content="Ecolyo">{{.ThemeCSS}} {{.CozyBar}}<script src="//{{.Domain}}/assets/js/piwik.js"></script></head><body><div role="application" class="application" data-cozy="{{.CozyData}}"><script src="vendors/ecolyo.0d9221201ffbd1127b31.js"></script><script src="app/ecolyo.b5f67bdffc5b58b68859.js"></script></div></body></html> \ No newline at end of file diff --git a/manifest.webapp b/manifest.webapp index 515e5540313877583a4883ce9913c7515a8b6075..a652ef6dd3edeae1d677725b26c586b0dba7289b 100644 --- a/manifest.webapp +++ b/manifest.webapp @@ -5,7 +5,7 @@ "categories": [ "energy" ], - "version": "1.12.0", + "version": "2.0.0", "licence": "AGPL-3.0", "editor": "Métropole de Lyon", "default_locale": "fr", @@ -56,23 +56,29 @@ "dacc": { "description": "Requis pour envoyer des statistiques d'utilisation anonymisées." }, + "backoffice-prod": { + "description": "Requis pour la récupération des données de la newsletter." + }, "backoffice-rec": { "description": "Requis pour la récupération des données de la newsletter dans un environment de test." }, - "backoffice": { - "description": "Requis pour la récupération des données de la newsletter." + "backoffice-custom-popup": { + "description": "Requis pour la récupération des alertes personnalisées." }, - "backoffice-partners-info-rec": { - "description": "Requis pour la récupération du status des services partenaires dans un environment de test." + "backoffice-custom-popup-rec": { + "description": "Requis pour la récupération des alertes personnalisées dans un environment de test." }, "backoffice-partners-info": { "description": "Requis pour la récupération du status des services partenaires" }, - "backoffice-prices-rec": { - "description": "Requis pour la récupération du prix des fluides dans un environnement de test." + "backoffice-partners-info-rec": { + "description": "Requis pour la récupération du status des services partenaires dans un environment de test." }, "backoffice-prices": { "description": "Requis pour la récupération du prix des fluides." + }, + "backoffice-prices-rec": { + "description": "Requis pour la récupération du prix des fluides dans un environnement de test." } } }, @@ -122,23 +128,29 @@ "dacc": { "description": "Required for sending cozy anonymized stats." }, + "backoffice-prod": { + "description": "Required for retrieving newsletter informations from backoffice prod." + }, "backoffice-rec": { "description": "Required for retrieving newsletter informations from backoffice rec." }, - "backoffice": { - "description": "Required for retrieving newsletter informations from backoffice prod." + "backoffice-custom-popup": { + "description": "Required for retrieving custom alerts." }, - "backoffice-partners-info-rec": { - "description": "Required for getting the status of partners' services in test environment." + "backoffice-custom-popup-rec": { + "description": "Required for retrieving custom alerts in test environment." }, "backoffice-partners-info": { "description": "Required for getting the status of partners' services" }, - "backoffice-prices-rec": { - "description": "Required for getting fluid prices form backoffice rec." + "backoffice-partners-info-rec": { + "description": "Required for getting the status of partners' services in test environment." }, "backoffice-prices": { "description": "Required for getting fluid prices form backoffice prod" + }, + "backoffice-prices-rec": { + "description": "Required for getting fluid prices form backoffice rec." } } } @@ -242,50 +254,50 @@ "ALL" ] }, - "backoffice-rec": { - "type": "org.ecolyo.backoffice.rec", - "verbs": [ - "ALL" - ] - }, "backoffice-prod": { - "type": "org.ecolyo.backoffice", + "type": "org.ecolyo.agent", "verbs": [ "ALL" ] }, - "backoffice-custom-popup-rec": { - "type": "org.ecolyo.backoffice.custom.popup.rec", + "backoffice-rec": { + "type": "org.ecolyo.agent.rec", "verbs": [ "ALL" ] }, "backoffice-custom-popup": { - "type": "org.ecolyo.backoffice.custom.popup", + "type": "org.ecolyo.agent.custom.popup", "verbs": [ "ALL" ] }, - "backoffice-partners-info-rec": { - "type": "org.ecolyo.backoffice.partners.info.rec", + "backoffice-custom-popup-rec": { + "type": "org.ecolyo.agent.custom.popup.rec", "verbs": [ "ALL" ] }, "backoffice-partners-info": { - "type": "org.ecolyo.backoffice.partners.info", + "type": "org.ecolyo.agent.partners.info", "verbs": [ "ALL" ] }, - "backoffice-prices-rec": { - "type": "org.ecolyo.backoffice.prices.rec", + "backoffice-partners-info-rec": { + "type": "org.ecolyo.agent.partners.info.rec", "verbs": [ "ALL" ] }, "backoffice-prices": { - "type": "org.ecolyo.backoffice.prices", + "type": "org.ecolyo.agent.prices", + "verbs": [ + "ALL" + ] + }, + "backoffice-prices-rec": { + "type": "org.ecolyo.agent.prices.rec", "verbs": [ "ALL" ] diff --git a/offline.html b/offline.html index 4962d28bf1449b87fb09e3cdc313956f6d4006c1..7e4c5e3733ad8de929ff0899bbccbe23a168775c 100644 --- a/offline.html +++ b/offline.html @@ -1,69 +1,83 @@ <!DOCTYPE html> <html lang="en"> - <head> - <meta charset="UTF-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <meta - name="description" - content="Ecolyo est le service proposé par la Métropole de Lyon pour suivre et comprendre la consommation énergétique globale de votre foyer." - /> - <link rel="stylesheet" href="./style.css" /> - <link - href="https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,700;0,900;1,400;1,700;1,900&display=swap" - rel="stylesheet" - /> - <link rel="icon" href="assets/ecolyo-icon.svg" /> - <title>Ecolyo</title> - <style type="text/css"> - * { - margin: 0; - line-height: 1; - font-family: "Lato", sans-serif; - color: white; - } - html, - body { - height: 100%; - margin: auto; - background: #121212; - - } - p { - margin-top: 1rem; - } - .container{ - height: 100%; - display: flex; - align-items: center; - text-align: center; - justify-content: center; - } - .text-16-white { - font-weight: 900; - font-size: 1rem; - color: white; - } - - </style> - </head> - <body> - <nav></nav> - <div class="container"> - <section> - <svg width="80" height="80" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> - <path d="M8.01323 15.059C14.8544 12.3888 14.3227 8.59276 13.9682 2.93081C11.7705 2.8343 9.82099 2.15873 8.01323 1.03278C6.20546 2.15873 4.25592 2.8343 2.05825 2.93081C1.70378 8.59276 1.17209 12.3888 8.01323 15.059Z" fill="#1B1C22"/> - <path d="M8.01325 0L7.54979 0.288665C5.85495 1.34429 4.05006 1.96586 2.01981 2.05502L1.23259 2.08959L1.18335 2.87604C1.16873 3.10958 1.15353 3.34193 1.13842 3.57294C0.97583 6.05878 0.823332 8.39029 1.50758 10.3994C2.29645 12.7158 4.12651 14.483 7.69452 15.8756L8.01325 16V15.059C1.44034 12.4935 1.67345 8.88869 2.01622 3.58822C2.03021 3.37192 2.04438 3.1528 2.05827 2.93081C4.25595 2.8343 6.20549 2.15873 8.01325 1.03277V0Z" fill="#FFC600"/> - <path d="M8.01323 0L8.4767 0.288665C10.1715 1.34429 11.9764 1.96586 14.0067 2.05502L14.7939 2.08959L14.8431 2.87604C14.8578 3.10958 14.873 3.34193 14.8881 3.57294C15.0507 6.05878 15.2032 8.39029 14.5189 10.3994C13.73 12.7158 11.9 14.483 8.33197 15.8756L8.01323 16V15.059C14.5862 12.4935 14.353 8.88869 14.0103 3.58822C13.9963 3.37192 13.9821 3.1528 13.9682 2.93081C11.7705 2.8343 9.821 2.15873 8.01323 1.03277V0Z" fill="#DB8300"/> - <path d="M5.85148 5.51416H6.16248C6.28668 5.51416 6.4058 5.56292 6.49363 5.64973C6.58146 5.73653 6.6308 5.85427 6.6308 5.97703V10.6758H5.38316V5.97703C5.38316 5.85427 5.4325 5.73653 5.52033 5.64973C5.60815 5.56292 5.72727 5.51416 5.85148 5.51416ZM8.01233 7.80214H8.32333C8.44754 7.80214 8.56666 7.85091 8.65448 7.93771C8.74231 8.02452 8.79165 8.14225 8.79165 8.26502V10.6758H7.54401V8.26502C7.54401 8.14225 7.59335 8.02452 7.68118 7.93771C7.76901 7.85091 7.88813 7.80214 8.01233 7.80214ZM10.302 6.91708H10.613C10.7372 6.91708 10.8563 6.96584 10.9441 7.05265C11.032 7.13945 11.0813 7.25719 11.0813 7.37995V10.6758H9.83366V7.37995C9.83366 7.25719 9.883 7.13945 9.97083 7.05265C10.0587 6.96584 10.1778 6.91708 10.302 6.91708Z" fill="#FFC600"/> - </svg> - <p class="text-16-white"> - Hors ligne - </p> - <p class="text-16-white"> - Vérifiez votre connexion pour lancer Ecolyo. - </p> - </section> - </div> - <footer></footer> - </body> + <head> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <meta + name="description" + content="Ecolyo est le service proposé par la Métropole de Lyon pour suivre et comprendre la consommation énergétique globale de votre foyer." + /> + <link rel="stylesheet" href="./style.css" /> + <link + href="https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,700;0,900;1,400;1,700;1,900&display=swap" + rel="stylesheet" + /> + <link rel="icon" href="assets/icon.svg" /> + <title>Ecolyo</title> + <style type="text/css"> + * { + margin: 0; + line-height: 1; + font-family: 'Lato', sans-serif; + color: white; + } + html, + body { + height: 100%; + margin: auto; + background: #121212; + } + p { + margin-top: 1rem; + } + .container { + height: 100%; + display: flex; + align-items: center; + text-align: center; + justify-content: center; + } + .text-16-white { + font-weight: 900; + font-size: 1rem; + color: white; + } + </style> + </head> + <body> + <nav></nav> + <div class="container"> + <section> + <svg + width="80" + height="80" + viewBox="0 0 16 16" + fill="none" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M8.01323 15.059C14.8544 12.3888 14.3227 8.59276 13.9682 2.93081C11.7705 2.8343 9.82099 2.15873 8.01323 1.03278C6.20546 2.15873 4.25592 2.8343 2.05825 2.93081C1.70378 8.59276 1.17209 12.3888 8.01323 15.059Z" + fill="#1B1C22" + /> + <path + d="M8.01325 0L7.54979 0.288665C5.85495 1.34429 4.05006 1.96586 2.01981 2.05502L1.23259 2.08959L1.18335 2.87604C1.16873 3.10958 1.15353 3.34193 1.13842 3.57294C0.97583 6.05878 0.823332 8.39029 1.50758 10.3994C2.29645 12.7158 4.12651 14.483 7.69452 15.8756L8.01325 16V15.059C1.44034 12.4935 1.67345 8.88869 2.01622 3.58822C2.03021 3.37192 2.04438 3.1528 2.05827 2.93081C4.25595 2.8343 6.20549 2.15873 8.01325 1.03277V0Z" + fill="#FFC600" + /> + <path + d="M8.01323 0L8.4767 0.288665C10.1715 1.34429 11.9764 1.96586 14.0067 2.05502L14.7939 2.08959L14.8431 2.87604C14.8578 3.10958 14.873 3.34193 14.8881 3.57294C15.0507 6.05878 15.2032 8.39029 14.5189 10.3994C13.73 12.7158 11.9 14.483 8.33197 15.8756L8.01323 16V15.059C14.5862 12.4935 14.353 8.88869 14.0103 3.58822C13.9963 3.37192 13.9821 3.1528 13.9682 2.93081C11.7705 2.8343 9.821 2.15873 8.01323 1.03277V0Z" + fill="#DB8300" + /> + <path + d="M5.85148 5.51416H6.16248C6.28668 5.51416 6.4058 5.56292 6.49363 5.64973C6.58146 5.73653 6.6308 5.85427 6.6308 5.97703V10.6758H5.38316V5.97703C5.38316 5.85427 5.4325 5.73653 5.52033 5.64973C5.60815 5.56292 5.72727 5.51416 5.85148 5.51416ZM8.01233 7.80214H8.32333C8.44754 7.80214 8.56666 7.85091 8.65448 7.93771C8.74231 8.02452 8.79165 8.14225 8.79165 8.26502V10.6758H7.54401V8.26502C7.54401 8.14225 7.59335 8.02452 7.68118 7.93771C7.76901 7.85091 7.88813 7.80214 8.01233 7.80214ZM10.302 6.91708H10.613C10.7372 6.91708 10.8563 6.96584 10.9441 7.05265C11.032 7.13945 11.0813 7.25719 11.0813 7.37995V10.6758H9.83366V7.37995C9.83366 7.25719 9.883 7.13945 9.97083 7.05265C10.0587 6.96584 10.1778 6.91708 10.302 6.91708Z" + fill="#FFC600" + /> + </svg> + <p class="text-16-white">Hors ligne</p> + <p class="text-16-white"> + Vérifiez votre connexion pour lancer Ecolyo. + </p> + </section> + </div> + <footer></footer> + </body> </html> diff --git a/safari-pinned-tab.svg b/safari-pinned-tab.svg index 7c0e38096960afb18746a2285ee2533ede3f46ef..86ecc043a096ea79cba52125e977db6f36e31002 100644 --- a/safari-pinned-tab.svg +++ b/safari-pinned-tab.svg @@ -1,6 +1,27 @@ <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M8.01323 15.059C14.8544 12.3888 14.3227 8.59276 13.9682 2.93081C11.7705 2.8343 9.82099 2.15873 8.01323 1.03278C6.20546 2.15873 4.25592 2.8343 2.05825 2.93081C1.70378 8.59276 1.17209 12.3888 8.01323 15.059Z" fill="#1B1C22"/> -<path d="M8.01325 0L7.54979 0.288665C5.85495 1.34429 4.05006 1.96586 2.01981 2.05502L1.23259 2.08959L1.18335 2.87604C1.16873 3.10958 1.15353 3.34193 1.13842 3.57294C0.97583 6.05878 0.823332 8.39029 1.50758 10.3994C2.29645 12.7158 4.12651 14.483 7.69452 15.8756L8.01325 16V15.059C1.44034 12.4935 1.67345 8.88869 2.01622 3.58822C2.03021 3.37192 2.04438 3.1528 2.05827 2.93081C4.25595 2.8343 6.20549 2.15873 8.01325 1.03277V0Z" fill="#FFC600"/> -<path d="M8.01323 0L8.4767 0.288665C10.1715 1.34429 11.9764 1.96586 14.0067 2.05502L14.7939 2.08959L14.8431 2.87604C14.8578 3.10958 14.873 3.34193 14.8881 3.57294C15.0507 6.05878 15.2032 8.39029 14.5189 10.3994C13.73 12.7158 11.9 14.483 8.33197 15.8756L8.01323 16V15.059C14.5862 12.4935 14.353 8.88869 14.0103 3.58822C13.9963 3.37192 13.9821 3.1528 13.9682 2.93081C11.7705 2.8343 9.821 2.15873 8.01323 1.03277V0Z" fill="#DB8300"/> -<path d="M5.85148 5.51416H6.16248C6.28668 5.51416 6.4058 5.56292 6.49363 5.64973C6.58146 5.73653 6.6308 5.85427 6.6308 5.97703V10.6758H5.38316V5.97703C5.38316 5.85427 5.4325 5.73653 5.52033 5.64973C5.60815 5.56292 5.72727 5.51416 5.85148 5.51416ZM8.01233 7.80214H8.32333C8.44754 7.80214 8.56666 7.85091 8.65448 7.93771C8.74231 8.02452 8.79165 8.14225 8.79165 8.26502V10.6758H7.54401V8.26502C7.54401 8.14225 7.59335 8.02452 7.68118 7.93771C7.76901 7.85091 7.88813 7.80214 8.01233 7.80214ZM10.302 6.91708H10.613C10.7372 6.91708 10.8563 6.96584 10.9441 7.05265C11.032 7.13945 11.0813 7.25719 11.0813 7.37995V10.6758H9.83366V7.37995C9.83366 7.25719 9.883 7.13945 9.97083 7.05265C10.0587 6.96584 10.1778 6.91708 10.302 6.91708Z" fill="#FFC600"/> +<path d="M7.71752 15.9459C7.89575 16.018 8.1044 16.018 8.28262 15.9459C15.617 12.9798 15.3188 8.82513 14.9253 2.74386C14.9 2.35282 14.584 2.04484 14.1938 2.00845C12.0938 1.81258 10.19 1.15013 8.40862 0.110419C8.15637 -0.0368062 7.84377 -0.0368062 7.59152 0.110419C5.81012 1.15013 3.90634 1.81258 1.80631 2.00845C1.41616 2.04484 1.10016 2.35282 1.07486 2.74386C0.68138 8.82513 0.383192 12.9798 7.71752 15.9459Z" fill="url(#paint0_radial_14017_3992)"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M13.9784 2.9502C14.1742 5.98388 14.3001 8.2739 13.6019 10.1841C12.9366 12.0042 11.4549 13.6145 8.00007 15.0264C4.54525 13.6145 3.06355 12.0042 2.39825 10.1841C1.70001 8.2739 1.82595 5.98388 2.02175 2.9502C4.1949 2.72861 6.16707 2.03889 8.00007 0.981219C9.83308 2.03889 11.8052 2.72861 13.9784 2.9502ZM8.28262 15.9459C8.1044 16.018 7.89575 16.018 7.71752 15.9459C0.411623 12.9913 0.679183 8.85733 1.07029 2.81449L1.07486 2.74386C1.10016 2.35282 1.41616 2.04484 1.80631 2.00845C3.90634 1.81258 5.81012 1.15013 7.59152 0.110419C7.84377 -0.0368062 8.15637 -0.0368062 8.40862 0.110419C10.19 1.15013 12.0938 1.81258 14.1938 2.00845C14.584 2.04484 14.9 2.35282 14.9253 2.74386L14.9299 2.81449C15.321 8.85732 15.5885 12.9913 8.28262 15.9459Z" fill="#FFC600"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M13.9784 2.9502C14.1742 5.98388 14.3001 8.2739 13.6019 10.1841C12.9366 12.0042 11.4549 13.6145 8.00007 15.0264C4.54525 13.6145 3.06355 12.0042 2.39825 10.1841C1.70001 8.2739 1.82595 5.98388 2.02175 2.9502C4.1949 2.72861 6.16707 2.03889 8.00007 0.981219C9.83308 2.03889 11.8052 2.72861 13.9784 2.9502ZM8.28262 15.9459C8.1044 16.018 7.89575 16.018 7.71752 15.9459C0.411623 12.9913 0.679183 8.85733 1.07029 2.81449L1.07486 2.74386C1.10016 2.35282 1.41616 2.04484 1.80631 2.00845C3.90634 1.81258 5.81012 1.15013 7.59152 0.110419C7.84377 -0.0368062 8.15637 -0.0368062 8.40862 0.110419C10.19 1.15013 12.0938 1.81258 14.1938 2.00845C14.584 2.04484 14.9 2.35282 14.9253 2.74386L14.9299 2.81449C15.321 8.85732 15.5885 12.9913 8.28262 15.9459Z" fill="url(#paint1_linear_14017_3992)" fill-opacity="0.75"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M8.00049 16C8.09714 16 8.19379 15.982 8.28284 15.9459C15.5887 12.9913 15.3212 8.85733 14.9301 2.8145L14.9255 2.74386C14.9002 2.35282 14.5842 2.04484 14.194 2.00845C12.094 1.81258 10.1902 1.15013 8.40884 0.110419C8.28277 0.0368413 8.14163 3.51217e-05 8.00049 0V0.981335C9.83344 2.03895 11.8055 2.72862 13.9786 2.9502C14.1744 5.98388 14.3004 8.2739 13.6021 10.1841C12.9368 12.0042 11.4552 13.6145 8.00049 15.0263V16Z" fill="#DB8300"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M8.00049 16C8.09714 16 8.19379 15.982 8.28284 15.9459C15.5887 12.9913 15.3212 8.85733 14.9301 2.8145L14.9255 2.74386C14.9002 2.35282 14.5842 2.04484 14.194 2.00845C12.094 1.81258 10.1902 1.15013 8.40884 0.110419C8.28277 0.0368413 8.14163 3.51217e-05 8.00049 0V0.981335C9.83344 2.03895 11.8055 2.72862 13.9786 2.9502C14.1744 5.98388 14.3004 8.2739 13.6021 10.1841C12.9368 12.0042 11.4552 13.6145 8.00049 15.0263V16Z" fill="url(#paint2_linear_14017_3992)" fill-opacity="0.75"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M5 5.67099C5 5.30041 5.30041 5 5.67099 5C6.04156 5 6.34198 5.30041 6.34198 5.67099V10.3721C6.34198 10.4756 6.258 10.5596 6.15441 10.5596H5.18756C5.08398 10.5596 5 10.4756 5 10.3721V5.67099ZM7.39637 8.06776C7.39637 7.69718 7.69678 7.39677 8.06735 7.39677C8.43793 7.39677 8.73834 7.69718 8.73834 8.06776V10.3724C8.73834 10.476 8.65437 10.56 8.55078 10.56H7.58393C7.48034 10.56 7.39637 10.476 7.39637 10.3724V8.06776ZM10.4642 6.43798C10.0936 6.43798 9.79318 6.73839 9.79318 7.10897V10.3722C9.79318 10.4758 9.87715 10.5598 9.98074 10.5598H10.9476C11.0512 10.5598 11.1352 10.4758 11.1352 10.3722V7.10897C11.1352 6.73839 10.8347 6.43798 10.4642 6.43798Z" fill="#FFC600"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M5 5.67099C5 5.30041 5.30041 5 5.67099 5C6.04156 5 6.34198 5.30041 6.34198 5.67099V10.3721C6.34198 10.4756 6.258 10.5596 6.15441 10.5596H5.18756C5.08398 10.5596 5 10.4756 5 10.3721V5.67099ZM7.39637 8.06776C7.39637 7.69718 7.69678 7.39677 8.06735 7.39677C8.43793 7.39677 8.73834 7.69718 8.73834 8.06776V10.3724C8.73834 10.476 8.65437 10.56 8.55078 10.56H7.58393C7.48034 10.56 7.39637 10.476 7.39637 10.3724V8.06776ZM10.4642 6.43798C10.0936 6.43798 9.79318 6.73839 9.79318 7.10897V10.3722C9.79318 10.4758 9.87715 10.5598 9.98074 10.5598H10.9476C11.0512 10.5598 11.1352 10.4758 11.1352 10.3722V7.10897C11.1352 6.73839 10.8347 6.43798 10.4642 6.43798Z" fill="url(#paint3_linear_14017_3992)"/> +<defs> +<radialGradient id="paint0_radial_14017_3992" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(4.40671 1.92427) rotate(72.5777) scale(12.0014 12.5544)"> +<stop stop-color="#2B2D37"/> +<stop offset="1" stop-color="#15161B"/> +</radialGradient> +<linearGradient id="paint1_linear_14017_3992" x1="7.7126" y1="15.4832" x2="2.58608" y2="1.87636" gradientUnits="userSpaceOnUse"> +<stop stop-color="#CB6E00"/> +<stop offset="1" stop-color="#FFC600" stop-opacity="0"/> +</linearGradient> +<linearGradient id="paint2_linear_14017_3992" x1="12.4082" y1="15.5311" x2="8.00024" y2="0.870295" gradientUnits="userSpaceOnUse"> +<stop stop-color="#793A00"/> +<stop offset="1" stop-color="#DB8300" stop-opacity="0"/> +</linearGradient> +<linearGradient id="paint3_linear_14017_3992" x1="11.1352" y1="10.3683" x2="5.28757" y2="5.00002" gradientUnits="userSpaceOnUse"> +<stop stop-color="#DB8300"/> +<stop offset="1" stop-color="#FFC600"/> +</linearGradient> +</defs> </svg> diff --git a/services/aggregatorUsageEvents/ecolyo.js b/services/aggregatorUsageEvents/ecolyo.js index 87201488f45246974f8905fa273bf4071d1549ce..407c2add8d082323c6bc098b755a138361003a00 100644 --- a/services/aggregatorUsageEvents/ecolyo.js +++ b/services/aggregatorUsageEvents/ecolyo.js @@ -79288,16 +79288,16 @@ class ConsumptionDataManager { return result; } - async fetchAllFirstDateData(fluidTypes) { + async fetchAllFirstDateData(fluidTypes, timeStep) { let firstDay = null; const firstDays = []; if (fluidTypes.length === 1) { - firstDay = (await this._queryRunnerService.getFirstDateData(fluidTypes[0])) || null; + firstDay = (await this._queryRunnerService.getFirstDateData(fluidTypes[0], timeStep)) || null; firstDays.push(firstDay); } else if (fluidTypes.length > 1) { for (const fluidType of fluidTypes) { - firstDay = (await this._queryRunnerService.getFirstDateData(fluidType)) || null; + firstDay = (await this._queryRunnerService.getFirstDateData(fluidType, timeStep)) || null; firstDays.push(firstDay); } } @@ -79305,16 +79305,16 @@ class ConsumptionDataManager { return firstDays; } - async fetchAllLastDateData(fluidTypes) { + async fetchAllLastDateData(fluidTypes, timeStep) { let lastDay = null; const lastDays = []; if (fluidTypes.length === 1) { - lastDay = (await this._queryRunnerService.getLastDateData(fluidTypes[0])) || null; + lastDay = (await this._queryRunnerService.getLastDateData(fluidTypes[0], timeStep)) || null; lastDays.push(lastDay); } else if (fluidTypes.length > 1) { for (const fluidType of fluidTypes) { - lastDay = (await this._queryRunnerService.getLastDateData(fluidType)) || null; + lastDay = (await this._queryRunnerService.getLastDateData(fluidType, timeStep)) || null; lastDays.push(lastDay); } } @@ -80582,8 +80582,8 @@ class QueryRunner { }]); } - buildFirstDateQuery(fluidType, limit) { - const doctype = this.getRelevantDoctype(fluidType, _timeStep.TimeStep.DAY); + buildFirstDateQuery(fluidType, limit, timeStep) { + const doctype = this.getRelevantDoctype(fluidType, timeStep || _timeStep.TimeStep.DAY); return (0, _cozyClient.Q)(doctype).where({}).indexFields(['year', 'month', 'day']).sortBy([{ year: 'asc' }, { @@ -80593,8 +80593,8 @@ class QueryRunner { }]).limitBy(limit); } - buildLastDateQuery(fluidType, limit) { - const doctype = this.getRelevantDoctype(fluidType, _timeStep.TimeStep.DAY); + buildLastDateQuery(fluidType, limit, timeStep) { + const doctype = this.getRelevantDoctype(fluidType, timeStep || _timeStep.TimeStep.DAY); return (0, _cozyClient.Q)(doctype).where({}).indexFields(['year', 'month', 'day']).sortBy([{ year: 'desc' }, { @@ -80862,14 +80862,14 @@ class QueryRunner { return null; } - async getFirstDateData(fluidType) { + async getFirstDateData(fluidType, timeStep) { var _result$data$, _result$data$2, _result$data$3; - const query = this.buildFirstDateQuery(fluidType, 1); + const query = this.buildFirstDateQuery(fluidType, 1, timeStep); const result = await this.fetchData(query); - if (result !== null && result !== void 0 && (_result$data$ = result.data[0]) !== null && _result$data$ !== void 0 && _result$data$.year && result !== null && result !== void 0 && (_result$data$2 = result.data[0]) !== null && _result$data$2 !== void 0 && _result$data$2.month && result !== null && result !== void 0 && (_result$data$3 = result.data[0]) !== null && _result$data$3 !== void 0 && _result$data$3.day) { - return _luxon.DateTime.local(result.data[0].year, result.data[0].month, result.data[0].day, result.data[0].hour ? result.data[0].hour : 0, result.data[0].minute ? result.data[0].minute : 0).setZone('utc', { + if (result !== null && result !== void 0 && (_result$data$ = result.data[0]) !== null && _result$data$ !== void 0 && _result$data$.year && result !== null && result !== void 0 && (_result$data$2 = result.data[0]) !== null && _result$data$2 !== void 0 && _result$data$2.month && (result === null || result === void 0 ? void 0 : (_result$data$3 = result.data[0]) === null || _result$data$3 === void 0 ? void 0 : _result$data$3.day) >= 0) { + return _luxon.DateTime.local(result.data[0].year, result.data[0].month, result.data[0].day === 0 ? 1 : result.data[0].day, result.data[0].hour || 0, result.data[0].minute || 0).setZone('utc', { keepLocalTime: true }); } @@ -80877,14 +80877,14 @@ class QueryRunner { return null; } - async getLastDateData(fluidType) { + async getLastDateData(fluidType, timeStep) { var _result$data$4, _result$data$5, _result$data$6; - const query = this.buildLastDateQuery(fluidType, 1); + const query = this.buildLastDateQuery(fluidType, 1, timeStep); const result = await this.fetchData(query); - if (result !== null && result !== void 0 && (_result$data$4 = result.data[0]) !== null && _result$data$4 !== void 0 && _result$data$4.year && result !== null && result !== void 0 && (_result$data$5 = result.data[0]) !== null && _result$data$5 !== void 0 && _result$data$5.month && result !== null && result !== void 0 && (_result$data$6 = result.data[0]) !== null && _result$data$6 !== void 0 && _result$data$6.day) { - return _luxon.DateTime.local(result.data[0].year, result.data[0].month, result.data[0].day, result.data[0].hour ? result.data[0].hour : 0, result.data[0].minute ? result.data[0].minute : 0).setZone('utc', { + if (result !== null && result !== void 0 && (_result$data$4 = result.data[0]) !== null && _result$data$4 !== void 0 && _result$data$4.year && result !== null && result !== void 0 && (_result$data$5 = result.data[0]) !== null && _result$data$5 !== void 0 && _result$data$5.month && (result === null || result === void 0 ? void 0 : (_result$data$6 = result.data[0]) === null || _result$data$6 === void 0 ? void 0 : _result$data$6.day) >= 0) { + return _luxon.DateTime.local(result.data[0].year, result.data[0].month, result.data[0].day === 0 ? 1 : result.data[0].day, result.data[0].hour || 0, result.data[0].minute || 0).setZone('utc', { keepLocalTime: true }); } @@ -99113,7 +99113,7 @@ class EnvironmentService { getPublicURL() { if (!this.isAlpha()) { - return 'https://ecolyo-agent.grandlyon.com'; + return 'https://ecolyo-agent.apps.grandlyon.com'; } else { return 'https://ecolyo-agent-rec.grandlyon.com'; } diff --git a/services/consumptionAlert/ecolyo.js b/services/consumptionAlert/ecolyo.js index 14961a7f5b3ffbc9b20a307d09c0a8853dcb730a..4b775341e65f80aec9abda8290f2ce8fbb10ad39 100644 --- a/services/consumptionAlert/ecolyo.js +++ b/services/consumptionAlert/ecolyo.js @@ -77918,16 +77918,16 @@ class ConsumptionDataManager { return result; } - async fetchAllFirstDateData(fluidTypes) { + async fetchAllFirstDateData(fluidTypes, timeStep) { let firstDay = null; const firstDays = []; if (fluidTypes.length === 1) { - firstDay = (await this._queryRunnerService.getFirstDateData(fluidTypes[0])) || null; + firstDay = (await this._queryRunnerService.getFirstDateData(fluidTypes[0], timeStep)) || null; firstDays.push(firstDay); } else if (fluidTypes.length > 1) { for (const fluidType of fluidTypes) { - firstDay = (await this._queryRunnerService.getFirstDateData(fluidType)) || null; + firstDay = (await this._queryRunnerService.getFirstDateData(fluidType, timeStep)) || null; firstDays.push(firstDay); } } @@ -77935,16 +77935,16 @@ class ConsumptionDataManager { return firstDays; } - async fetchAllLastDateData(fluidTypes) { + async fetchAllLastDateData(fluidTypes, timeStep) { let lastDay = null; const lastDays = []; if (fluidTypes.length === 1) { - lastDay = (await this._queryRunnerService.getLastDateData(fluidTypes[0])) || null; + lastDay = (await this._queryRunnerService.getLastDateData(fluidTypes[0], timeStep)) || null; lastDays.push(lastDay); } else if (fluidTypes.length > 1) { for (const fluidType of fluidTypes) { - lastDay = (await this._queryRunnerService.getLastDateData(fluidType)) || null; + lastDay = (await this._queryRunnerService.getLastDateData(fluidType, timeStep)) || null; lastDays.push(lastDay); } } @@ -79212,8 +79212,8 @@ class QueryRunner { }]); } - buildFirstDateQuery(fluidType, limit) { - const doctype = this.getRelevantDoctype(fluidType, _timeStep.TimeStep.DAY); + buildFirstDateQuery(fluidType, limit, timeStep) { + const doctype = this.getRelevantDoctype(fluidType, timeStep || _timeStep.TimeStep.DAY); return (0, _cozyClient.Q)(doctype).where({}).indexFields(['year', 'month', 'day']).sortBy([{ year: 'asc' }, { @@ -79223,8 +79223,8 @@ class QueryRunner { }]).limitBy(limit); } - buildLastDateQuery(fluidType, limit) { - const doctype = this.getRelevantDoctype(fluidType, _timeStep.TimeStep.DAY); + buildLastDateQuery(fluidType, limit, timeStep) { + const doctype = this.getRelevantDoctype(fluidType, timeStep || _timeStep.TimeStep.DAY); return (0, _cozyClient.Q)(doctype).where({}).indexFields(['year', 'month', 'day']).sortBy([{ year: 'desc' }, { @@ -79492,14 +79492,14 @@ class QueryRunner { return null; } - async getFirstDateData(fluidType) { + async getFirstDateData(fluidType, timeStep) { var _result$data$, _result$data$2, _result$data$3; - const query = this.buildFirstDateQuery(fluidType, 1); + const query = this.buildFirstDateQuery(fluidType, 1, timeStep); const result = await this.fetchData(query); - if (result !== null && result !== void 0 && (_result$data$ = result.data[0]) !== null && _result$data$ !== void 0 && _result$data$.year && result !== null && result !== void 0 && (_result$data$2 = result.data[0]) !== null && _result$data$2 !== void 0 && _result$data$2.month && result !== null && result !== void 0 && (_result$data$3 = result.data[0]) !== null && _result$data$3 !== void 0 && _result$data$3.day) { - return _luxon.DateTime.local(result.data[0].year, result.data[0].month, result.data[0].day, result.data[0].hour ? result.data[0].hour : 0, result.data[0].minute ? result.data[0].minute : 0).setZone('utc', { + if (result !== null && result !== void 0 && (_result$data$ = result.data[0]) !== null && _result$data$ !== void 0 && _result$data$.year && result !== null && result !== void 0 && (_result$data$2 = result.data[0]) !== null && _result$data$2 !== void 0 && _result$data$2.month && (result === null || result === void 0 ? void 0 : (_result$data$3 = result.data[0]) === null || _result$data$3 === void 0 ? void 0 : _result$data$3.day) >= 0) { + return _luxon.DateTime.local(result.data[0].year, result.data[0].month, result.data[0].day === 0 ? 1 : result.data[0].day, result.data[0].hour || 0, result.data[0].minute || 0).setZone('utc', { keepLocalTime: true }); } @@ -79507,14 +79507,14 @@ class QueryRunner { return null; } - async getLastDateData(fluidType) { + async getLastDateData(fluidType, timeStep) { var _result$data$4, _result$data$5, _result$data$6; - const query = this.buildLastDateQuery(fluidType, 1); + const query = this.buildLastDateQuery(fluidType, 1, timeStep); const result = await this.fetchData(query); - if (result !== null && result !== void 0 && (_result$data$4 = result.data[0]) !== null && _result$data$4 !== void 0 && _result$data$4.year && result !== null && result !== void 0 && (_result$data$5 = result.data[0]) !== null && _result$data$5 !== void 0 && _result$data$5.month && result !== null && result !== void 0 && (_result$data$6 = result.data[0]) !== null && _result$data$6 !== void 0 && _result$data$6.day) { - return _luxon.DateTime.local(result.data[0].year, result.data[0].month, result.data[0].day, result.data[0].hour ? result.data[0].hour : 0, result.data[0].minute ? result.data[0].minute : 0).setZone('utc', { + if (result !== null && result !== void 0 && (_result$data$4 = result.data[0]) !== null && _result$data$4 !== void 0 && _result$data$4.year && result !== null && result !== void 0 && (_result$data$5 = result.data[0]) !== null && _result$data$5 !== void 0 && _result$data$5.month && (result === null || result === void 0 ? void 0 : (_result$data$6 = result.data[0]) === null || _result$data$6 === void 0 ? void 0 : _result$data$6.day) >= 0) { + return _luxon.DateTime.local(result.data[0].year, result.data[0].month, result.data[0].day === 0 ? 1 : result.data[0].day, result.data[0].hour || 0, result.data[0].minute || 0).setZone('utc', { keepLocalTime: true }); } @@ -81540,7 +81540,7 @@ class EnvironmentService { getPublicURL() { if (!this.isAlpha()) { - return 'https://ecolyo-agent.grandlyon.com'; + return 'https://ecolyo-agent.apps.grandlyon.com'; } else { return 'https://ecolyo-agent-rec.grandlyon.com'; } diff --git a/services/enedisHalfHourMonthlyAnalysis/ecolyo.js b/services/enedisHalfHourMonthlyAnalysis/ecolyo.js index cb8cfa50da49ffceb8e96cd4f4c5abf01343bbf6..20a45cff59cc0bc0b236eb715eeb7e1adf8186a4 100644 --- a/services/enedisHalfHourMonthlyAnalysis/ecolyo.js +++ b/services/enedisHalfHourMonthlyAnalysis/ecolyo.js @@ -77829,16 +77829,16 @@ class ConsumptionDataManager { return result; } - async fetchAllFirstDateData(fluidTypes) { + async fetchAllFirstDateData(fluidTypes, timeStep) { let firstDay = null; const firstDays = []; if (fluidTypes.length === 1) { - firstDay = (await this._queryRunnerService.getFirstDateData(fluidTypes[0])) || null; + firstDay = (await this._queryRunnerService.getFirstDateData(fluidTypes[0], timeStep)) || null; firstDays.push(firstDay); } else if (fluidTypes.length > 1) { for (const fluidType of fluidTypes) { - firstDay = (await this._queryRunnerService.getFirstDateData(fluidType)) || null; + firstDay = (await this._queryRunnerService.getFirstDateData(fluidType, timeStep)) || null; firstDays.push(firstDay); } } @@ -77846,16 +77846,16 @@ class ConsumptionDataManager { return firstDays; } - async fetchAllLastDateData(fluidTypes) { + async fetchAllLastDateData(fluidTypes, timeStep) { let lastDay = null; const lastDays = []; if (fluidTypes.length === 1) { - lastDay = (await this._queryRunnerService.getLastDateData(fluidTypes[0])) || null; + lastDay = (await this._queryRunnerService.getLastDateData(fluidTypes[0], timeStep)) || null; lastDays.push(lastDay); } else if (fluidTypes.length > 1) { for (const fluidType of fluidTypes) { - lastDay = (await this._queryRunnerService.getLastDateData(fluidType)) || null; + lastDay = (await this._queryRunnerService.getLastDateData(fluidType, timeStep)) || null; lastDays.push(lastDay); } } @@ -79123,8 +79123,8 @@ class QueryRunner { }]); } - buildFirstDateQuery(fluidType, limit) { - const doctype = this.getRelevantDoctype(fluidType, _timeStep.TimeStep.DAY); + buildFirstDateQuery(fluidType, limit, timeStep) { + const doctype = this.getRelevantDoctype(fluidType, timeStep || _timeStep.TimeStep.DAY); return (0, _cozyClient.Q)(doctype).where({}).indexFields(['year', 'month', 'day']).sortBy([{ year: 'asc' }, { @@ -79134,8 +79134,8 @@ class QueryRunner { }]).limitBy(limit); } - buildLastDateQuery(fluidType, limit) { - const doctype = this.getRelevantDoctype(fluidType, _timeStep.TimeStep.DAY); + buildLastDateQuery(fluidType, limit, timeStep) { + const doctype = this.getRelevantDoctype(fluidType, timeStep || _timeStep.TimeStep.DAY); return (0, _cozyClient.Q)(doctype).where({}).indexFields(['year', 'month', 'day']).sortBy([{ year: 'desc' }, { @@ -79403,14 +79403,14 @@ class QueryRunner { return null; } - async getFirstDateData(fluidType) { + async getFirstDateData(fluidType, timeStep) { var _result$data$, _result$data$2, _result$data$3; - const query = this.buildFirstDateQuery(fluidType, 1); + const query = this.buildFirstDateQuery(fluidType, 1, timeStep); const result = await this.fetchData(query); - if (result !== null && result !== void 0 && (_result$data$ = result.data[0]) !== null && _result$data$ !== void 0 && _result$data$.year && result !== null && result !== void 0 && (_result$data$2 = result.data[0]) !== null && _result$data$2 !== void 0 && _result$data$2.month && result !== null && result !== void 0 && (_result$data$3 = result.data[0]) !== null && _result$data$3 !== void 0 && _result$data$3.day) { - return _luxon.DateTime.local(result.data[0].year, result.data[0].month, result.data[0].day, result.data[0].hour ? result.data[0].hour : 0, result.data[0].minute ? result.data[0].minute : 0).setZone('utc', { + if (result !== null && result !== void 0 && (_result$data$ = result.data[0]) !== null && _result$data$ !== void 0 && _result$data$.year && result !== null && result !== void 0 && (_result$data$2 = result.data[0]) !== null && _result$data$2 !== void 0 && _result$data$2.month && (result === null || result === void 0 ? void 0 : (_result$data$3 = result.data[0]) === null || _result$data$3 === void 0 ? void 0 : _result$data$3.day) >= 0) { + return _luxon.DateTime.local(result.data[0].year, result.data[0].month, result.data[0].day === 0 ? 1 : result.data[0].day, result.data[0].hour || 0, result.data[0].minute || 0).setZone('utc', { keepLocalTime: true }); } @@ -79418,14 +79418,14 @@ class QueryRunner { return null; } - async getLastDateData(fluidType) { + async getLastDateData(fluidType, timeStep) { var _result$data$4, _result$data$5, _result$data$6; - const query = this.buildLastDateQuery(fluidType, 1); + const query = this.buildLastDateQuery(fluidType, 1, timeStep); const result = await this.fetchData(query); - if (result !== null && result !== void 0 && (_result$data$4 = result.data[0]) !== null && _result$data$4 !== void 0 && _result$data$4.year && result !== null && result !== void 0 && (_result$data$5 = result.data[0]) !== null && _result$data$5 !== void 0 && _result$data$5.month && result !== null && result !== void 0 && (_result$data$6 = result.data[0]) !== null && _result$data$6 !== void 0 && _result$data$6.day) { - return _luxon.DateTime.local(result.data[0].year, result.data[0].month, result.data[0].day, result.data[0].hour ? result.data[0].hour : 0, result.data[0].minute ? result.data[0].minute : 0).setZone('utc', { + if (result !== null && result !== void 0 && (_result$data$4 = result.data[0]) !== null && _result$data$4 !== void 0 && _result$data$4.year && result !== null && result !== void 0 && (_result$data$5 = result.data[0]) !== null && _result$data$5 !== void 0 && _result$data$5.month && (result === null || result === void 0 ? void 0 : (_result$data$6 = result.data[0]) === null || _result$data$6 === void 0 ? void 0 : _result$data$6.day) >= 0) { + return _luxon.DateTime.local(result.data[0].year, result.data[0].month, result.data[0].day === 0 ? 1 : result.data[0].day, result.data[0].hour || 0, result.data[0].minute || 0).setZone('utc', { keepLocalTime: true }); } diff --git a/services/fluidsPrices/ecolyo.js b/services/fluidsPrices/ecolyo.js index 4f705391dffebb595fcc995315c2a5b310718ecb..504a4aaae81201b459f79f8f40519c66b2ec984a 100644 --- a/services/fluidsPrices/ecolyo.js +++ b/services/fluidsPrices/ecolyo.js @@ -77829,16 +77829,16 @@ class ConsumptionDataManager { return result; } - async fetchAllFirstDateData(fluidTypes) { + async fetchAllFirstDateData(fluidTypes, timeStep) { let firstDay = null; const firstDays = []; if (fluidTypes.length === 1) { - firstDay = (await this._queryRunnerService.getFirstDateData(fluidTypes[0])) || null; + firstDay = (await this._queryRunnerService.getFirstDateData(fluidTypes[0], timeStep)) || null; firstDays.push(firstDay); } else if (fluidTypes.length > 1) { for (const fluidType of fluidTypes) { - firstDay = (await this._queryRunnerService.getFirstDateData(fluidType)) || null; + firstDay = (await this._queryRunnerService.getFirstDateData(fluidType, timeStep)) || null; firstDays.push(firstDay); } } @@ -77846,16 +77846,16 @@ class ConsumptionDataManager { return firstDays; } - async fetchAllLastDateData(fluidTypes) { + async fetchAllLastDateData(fluidTypes, timeStep) { let lastDay = null; const lastDays = []; if (fluidTypes.length === 1) { - lastDay = (await this._queryRunnerService.getLastDateData(fluidTypes[0])) || null; + lastDay = (await this._queryRunnerService.getLastDateData(fluidTypes[0], timeStep)) || null; lastDays.push(lastDay); } else if (fluidTypes.length > 1) { for (const fluidType of fluidTypes) { - lastDay = (await this._queryRunnerService.getLastDateData(fluidType)) || null; + lastDay = (await this._queryRunnerService.getLastDateData(fluidType, timeStep)) || null; lastDays.push(lastDay); } } @@ -79123,8 +79123,8 @@ class QueryRunner { }]); } - buildFirstDateQuery(fluidType, limit) { - const doctype = this.getRelevantDoctype(fluidType, _timeStep.TimeStep.DAY); + buildFirstDateQuery(fluidType, limit, timeStep) { + const doctype = this.getRelevantDoctype(fluidType, timeStep || _timeStep.TimeStep.DAY); return (0, _cozyClient.Q)(doctype).where({}).indexFields(['year', 'month', 'day']).sortBy([{ year: 'asc' }, { @@ -79134,8 +79134,8 @@ class QueryRunner { }]).limitBy(limit); } - buildLastDateQuery(fluidType, limit) { - const doctype = this.getRelevantDoctype(fluidType, _timeStep.TimeStep.DAY); + buildLastDateQuery(fluidType, limit, timeStep) { + const doctype = this.getRelevantDoctype(fluidType, timeStep || _timeStep.TimeStep.DAY); return (0, _cozyClient.Q)(doctype).where({}).indexFields(['year', 'month', 'day']).sortBy([{ year: 'desc' }, { @@ -79403,14 +79403,14 @@ class QueryRunner { return null; } - async getFirstDateData(fluidType) { + async getFirstDateData(fluidType, timeStep) { var _result$data$, _result$data$2, _result$data$3; - const query = this.buildFirstDateQuery(fluidType, 1); + const query = this.buildFirstDateQuery(fluidType, 1, timeStep); const result = await this.fetchData(query); - if (result !== null && result !== void 0 && (_result$data$ = result.data[0]) !== null && _result$data$ !== void 0 && _result$data$.year && result !== null && result !== void 0 && (_result$data$2 = result.data[0]) !== null && _result$data$2 !== void 0 && _result$data$2.month && result !== null && result !== void 0 && (_result$data$3 = result.data[0]) !== null && _result$data$3 !== void 0 && _result$data$3.day) { - return _luxon.DateTime.local(result.data[0].year, result.data[0].month, result.data[0].day, result.data[0].hour ? result.data[0].hour : 0, result.data[0].minute ? result.data[0].minute : 0).setZone('utc', { + if (result !== null && result !== void 0 && (_result$data$ = result.data[0]) !== null && _result$data$ !== void 0 && _result$data$.year && result !== null && result !== void 0 && (_result$data$2 = result.data[0]) !== null && _result$data$2 !== void 0 && _result$data$2.month && (result === null || result === void 0 ? void 0 : (_result$data$3 = result.data[0]) === null || _result$data$3 === void 0 ? void 0 : _result$data$3.day) >= 0) { + return _luxon.DateTime.local(result.data[0].year, result.data[0].month, result.data[0].day === 0 ? 1 : result.data[0].day, result.data[0].hour || 0, result.data[0].minute || 0).setZone('utc', { keepLocalTime: true }); } @@ -79418,14 +79418,14 @@ class QueryRunner { return null; } - async getLastDateData(fluidType) { + async getLastDateData(fluidType, timeStep) { var _result$data$4, _result$data$5, _result$data$6; - const query = this.buildLastDateQuery(fluidType, 1); + const query = this.buildLastDateQuery(fluidType, 1, timeStep); const result = await this.fetchData(query); - if (result !== null && result !== void 0 && (_result$data$4 = result.data[0]) !== null && _result$data$4 !== void 0 && _result$data$4.year && result !== null && result !== void 0 && (_result$data$5 = result.data[0]) !== null && _result$data$5 !== void 0 && _result$data$5.month && result !== null && result !== void 0 && (_result$data$6 = result.data[0]) !== null && _result$data$6 !== void 0 && _result$data$6.day) { - return _luxon.DateTime.local(result.data[0].year, result.data[0].month, result.data[0].day, result.data[0].hour ? result.data[0].hour : 0, result.data[0].minute ? result.data[0].minute : 0).setZone('utc', { + if (result !== null && result !== void 0 && (_result$data$4 = result.data[0]) !== null && _result$data$4 !== void 0 && _result$data$4.year && result !== null && result !== void 0 && (_result$data$5 = result.data[0]) !== null && _result$data$5 !== void 0 && _result$data$5.month && (result === null || result === void 0 ? void 0 : (_result$data$6 = result.data[0]) === null || _result$data$6 === void 0 ? void 0 : _result$data$6.day) >= 0) { + return _luxon.DateTime.local(result.data[0].year, result.data[0].month, result.data[0].day === 0 ? 1 : result.data[0].day, result.data[0].hour || 0, result.data[0].minute || 0).setZone('utc', { keepLocalTime: true }); } @@ -79909,7 +79909,7 @@ class EnvironmentService { getPublicURL() { if (!this.isAlpha()) { - return 'https://ecolyo-agent.grandlyon.com'; + return 'https://ecolyo-agent.apps.grandlyon.com'; } else { return 'https://ecolyo-agent-rec.grandlyon.com'; } diff --git a/services/monthlyReportNotification/ecolyo.js b/services/monthlyReportNotification/ecolyo.js index 34bf58e32d88e0d2acc5d9eece7d73a60dda2f5c..f63955e8f48babde32ffb83553d0020cf0253ec8 100644 --- a/services/monthlyReportNotification/ecolyo.js +++ b/services/monthlyReportNotification/ecolyo.js @@ -77918,16 +77918,16 @@ class ConsumptionDataManager { return result; } - async fetchAllFirstDateData(fluidTypes) { + async fetchAllFirstDateData(fluidTypes, timeStep) { let firstDay = null; const firstDays = []; if (fluidTypes.length === 1) { - firstDay = (await this._queryRunnerService.getFirstDateData(fluidTypes[0])) || null; + firstDay = (await this._queryRunnerService.getFirstDateData(fluidTypes[0], timeStep)) || null; firstDays.push(firstDay); } else if (fluidTypes.length > 1) { for (const fluidType of fluidTypes) { - firstDay = (await this._queryRunnerService.getFirstDateData(fluidType)) || null; + firstDay = (await this._queryRunnerService.getFirstDateData(fluidType, timeStep)) || null; firstDays.push(firstDay); } } @@ -77935,16 +77935,16 @@ class ConsumptionDataManager { return firstDays; } - async fetchAllLastDateData(fluidTypes) { + async fetchAllLastDateData(fluidTypes, timeStep) { let lastDay = null; const lastDays = []; if (fluidTypes.length === 1) { - lastDay = (await this._queryRunnerService.getLastDateData(fluidTypes[0])) || null; + lastDay = (await this._queryRunnerService.getLastDateData(fluidTypes[0], timeStep)) || null; lastDays.push(lastDay); } else if (fluidTypes.length > 1) { for (const fluidType of fluidTypes) { - lastDay = (await this._queryRunnerService.getLastDateData(fluidType)) || null; + lastDay = (await this._queryRunnerService.getLastDateData(fluidType, timeStep)) || null; lastDays.push(lastDay); } } @@ -79212,8 +79212,8 @@ class QueryRunner { }]); } - buildFirstDateQuery(fluidType, limit) { - const doctype = this.getRelevantDoctype(fluidType, _timeStep.TimeStep.DAY); + buildFirstDateQuery(fluidType, limit, timeStep) { + const doctype = this.getRelevantDoctype(fluidType, timeStep || _timeStep.TimeStep.DAY); return (0, _cozyClient.Q)(doctype).where({}).indexFields(['year', 'month', 'day']).sortBy([{ year: 'asc' }, { @@ -79223,8 +79223,8 @@ class QueryRunner { }]).limitBy(limit); } - buildLastDateQuery(fluidType, limit) { - const doctype = this.getRelevantDoctype(fluidType, _timeStep.TimeStep.DAY); + buildLastDateQuery(fluidType, limit, timeStep) { + const doctype = this.getRelevantDoctype(fluidType, timeStep || _timeStep.TimeStep.DAY); return (0, _cozyClient.Q)(doctype).where({}).indexFields(['year', 'month', 'day']).sortBy([{ year: 'desc' }, { @@ -79492,14 +79492,14 @@ class QueryRunner { return null; } - async getFirstDateData(fluidType) { + async getFirstDateData(fluidType, timeStep) { var _result$data$, _result$data$2, _result$data$3; - const query = this.buildFirstDateQuery(fluidType, 1); + const query = this.buildFirstDateQuery(fluidType, 1, timeStep); const result = await this.fetchData(query); - if (result !== null && result !== void 0 && (_result$data$ = result.data[0]) !== null && _result$data$ !== void 0 && _result$data$.year && result !== null && result !== void 0 && (_result$data$2 = result.data[0]) !== null && _result$data$2 !== void 0 && _result$data$2.month && result !== null && result !== void 0 && (_result$data$3 = result.data[0]) !== null && _result$data$3 !== void 0 && _result$data$3.day) { - return _luxon.DateTime.local(result.data[0].year, result.data[0].month, result.data[0].day, result.data[0].hour ? result.data[0].hour : 0, result.data[0].minute ? result.data[0].minute : 0).setZone('utc', { + if (result !== null && result !== void 0 && (_result$data$ = result.data[0]) !== null && _result$data$ !== void 0 && _result$data$.year && result !== null && result !== void 0 && (_result$data$2 = result.data[0]) !== null && _result$data$2 !== void 0 && _result$data$2.month && (result === null || result === void 0 ? void 0 : (_result$data$3 = result.data[0]) === null || _result$data$3 === void 0 ? void 0 : _result$data$3.day) >= 0) { + return _luxon.DateTime.local(result.data[0].year, result.data[0].month, result.data[0].day === 0 ? 1 : result.data[0].day, result.data[0].hour || 0, result.data[0].minute || 0).setZone('utc', { keepLocalTime: true }); } @@ -79507,14 +79507,14 @@ class QueryRunner { return null; } - async getLastDateData(fluidType) { + async getLastDateData(fluidType, timeStep) { var _result$data$4, _result$data$5, _result$data$6; - const query = this.buildLastDateQuery(fluidType, 1); + const query = this.buildLastDateQuery(fluidType, 1, timeStep); const result = await this.fetchData(query); - if (result !== null && result !== void 0 && (_result$data$4 = result.data[0]) !== null && _result$data$4 !== void 0 && _result$data$4.year && result !== null && result !== void 0 && (_result$data$5 = result.data[0]) !== null && _result$data$5 !== void 0 && _result$data$5.month && result !== null && result !== void 0 && (_result$data$6 = result.data[0]) !== null && _result$data$6 !== void 0 && _result$data$6.day) { - return _luxon.DateTime.local(result.data[0].year, result.data[0].month, result.data[0].day, result.data[0].hour ? result.data[0].hour : 0, result.data[0].minute ? result.data[0].minute : 0).setZone('utc', { + if (result !== null && result !== void 0 && (_result$data$4 = result.data[0]) !== null && _result$data$4 !== void 0 && _result$data$4.year && result !== null && result !== void 0 && (_result$data$5 = result.data[0]) !== null && _result$data$5 !== void 0 && _result$data$5.month && (result === null || result === void 0 ? void 0 : (_result$data$6 = result.data[0]) === null || _result$data$6 === void 0 ? void 0 : _result$data$6.day) >= 0) { + return _luxon.DateTime.local(result.data[0].year, result.data[0].month, result.data[0].day === 0 ? 1 : result.data[0].day, result.data[0].hour || 0, result.data[0].minute || 0).setZone('utc', { keepLocalTime: true }); } @@ -81540,7 +81540,7 @@ class EnvironmentService { getPublicURL() { if (!this.isAlpha()) { - return 'https://ecolyo-agent.grandlyon.com'; + return 'https://ecolyo-agent.apps.grandlyon.com'; } else { return 'https://ecolyo-agent-rec.grandlyon.com'; }