diff --git a/src/components/ConsumptionVisualizer/InfoDataConsumptionVisualizer.spec.tsx b/src/components/ConsumptionVisualizer/InfoDataConsumptionVisualizer.spec.tsx index 8dd1a1c779f26d63751c650bfa524caba7633bbb..820c51c87f34f60aae8393d871386b55e919efca 100644 --- a/src/components/ConsumptionVisualizer/InfoDataConsumptionVisualizer.spec.tsx +++ b/src/components/ConsumptionVisualizer/InfoDataConsumptionVisualizer.spec.tsx @@ -47,7 +47,7 @@ describe('InfoDataConsumptionVisualizer component', () => { </Provider> ) expect(wrapper.find('span').text()).toBe( - 'consumption_visualizer.last_available_data : 01/10/20' + 'consumption_visualizer.last_available_data' ) }) it('case state UPCOMING', () => { @@ -62,7 +62,7 @@ describe('InfoDataConsumptionVisualizer component', () => { </Provider> ) expect(wrapper.find('span').text()).toBe( - 'consumption_visualizer.last_available_data : 01/10/20' + 'consumption_visualizer.last_available_data' ) }) it('case state COMING', () => { @@ -80,7 +80,7 @@ describe('InfoDataConsumptionVisualizer component', () => { </Provider> ) expect(wrapper.find('span').text()).toBe( - 'consumption_visualizer.last_available_data : 01/10/20' + 'consumption_visualizer.last_available_data' ) }) it('case state AGGREGATED_HOLE_OR_MISSING', () => { @@ -98,7 +98,7 @@ describe('InfoDataConsumptionVisualizer component', () => { </Provider> ) expect(wrapper.find('span').text()).toBe( - 'consumption_visualizer.last_valid_data_multi : 01/10/20' + 'consumption_visualizer.last_valid_data_multi' ) }) it('case state AGGREGATED_WITH_HOLE_OR_MISSING', () => { @@ -116,7 +116,7 @@ describe('InfoDataConsumptionVisualizer component', () => { </Provider> ) expect(wrapper.find('span').text()).toBe( - 'consumption_visualizer.last_valid_data_multi : 01/10/20' + 'consumption_visualizer.last_valid_data_multi' ) }) it('case state AGGREGATED_COMING', () => { @@ -134,7 +134,7 @@ describe('InfoDataConsumptionVisualizer component', () => { </Provider> ) expect(wrapper.find('span').text()).toBe( - 'consumption_visualizer.last_valid_data_multi : 01/10/20' + 'consumption_visualizer.last_valid_data_multi' ) }) }) diff --git a/src/components/ConsumptionVisualizer/InfoDataConsumptionVisualizer.tsx b/src/components/ConsumptionVisualizer/InfoDataConsumptionVisualizer.tsx index 0ab530ca8262e60bd9d686e8d67f352c06e1636f..025ae8b405d34c288b2bb5e9c8f999cbb9bb41d4 100644 --- a/src/components/ConsumptionVisualizer/InfoDataConsumptionVisualizer.tsx +++ b/src/components/ConsumptionVisualizer/InfoDataConsumptionVisualizer.tsx @@ -53,13 +53,17 @@ const InfoDataConsumptionVisualizer = ({ dataload.state === DataloadState.AGGREGATED_WITH_HOLE_OR_MISSING || dataload.state === DataloadState.AGGREGATED_COMING ) { + const lastDate = lastDataDate ? lastDataDate.toFormat("dd'/'MM'/'yy") : '-' return ( <div onClick={() => moveToDate()} className="error-line"> <span className={`text-16-normal underlined-error`}> - {(fluidType === FluidType.MULTIFLUID - ? `${t('consumption_visualizer.last_valid_data_multi')}` - : `${t('consumption_visualizer.last_available_data')}`) + - ` : ${lastDataDate ? lastDataDate.toFormat("dd'/'MM'/'yy") : '-'}`} + {fluidType === FluidType.MULTIFLUID + ? t('consumption_visualizer.last_valid_data_multi', { + date: lastDate, + }) + : t('consumption_visualizer.last_available_data', { + date: lastDate, + })} </span> </div> ) diff --git a/src/components/ConsumptionVisualizer/NoDataModal.tsx b/src/components/ConsumptionVisualizer/NoDataModal.tsx index 98112d8f7eaa8dddd35673abbf820fe22e08b618..d4561bbab048d43fa96844b3a41dc89460865a8e 100644 --- a/src/components/ConsumptionVisualizer/NoDataModal.tsx +++ b/src/components/ConsumptionVisualizer/NoDataModal.tsx @@ -46,22 +46,12 @@ const NoDataModal = ({ open, handleCloseClick }: NoDataModalProps) => { <div className="text-16-normal"> {t('consumption_visualizer.dataModal.list_title')} </div> - <div className="text-16-normal justified-text"> - <span>• </span> - {t('consumption_visualizer.dataModal.item1')} - </div> - <div className="text-16-normal justified-text"> - <span>• </span> - {t('consumption_visualizer.dataModal.item2')} - </div> - <div className="text-16-normal justified-text"> - <span>• </span> - {t('consumption_visualizer.dataModal.item3')} - </div> - <div className="text-16-normal justified-text"> - <span>• </span> - {t('consumption_visualizer.dataModal.item4')} - </div> + <ul> + <li>{t('consumption_visualizer.dataModal.item1')}</li> + <li>{t('consumption_visualizer.dataModal.item2')}</li> + <li>{t('consumption_visualizer.dataModal.item3')}</li> + <li>{t('consumption_visualizer.dataModal.item4')}</li> + </ul> <Button aria-label={t('ecogesture_info_modal.button_close')} onClick={handleCloseClick} diff --git a/src/components/ConsumptionVisualizer/__snapshots__/NoDataModal.spec.tsx.snap b/src/components/ConsumptionVisualizer/__snapshots__/NoDataModal.spec.tsx.snap index 4ba5dadffb05d55b024bdf1f20f047eb8fc940d8..e36ce72786e54b7fb820a9a8c2c1a126fefef6ae 100644 --- a/src/components/ConsumptionVisualizer/__snapshots__/NoDataModal.spec.tsx.snap +++ b/src/components/ConsumptionVisualizer/__snapshots__/NoDataModal.spec.tsx.snap @@ -457,38 +457,20 @@ exports[`NoDataModal component should render correctly 1`] = ` > consumption_visualizer.dataModal.list_title </div> - <div - class="text-16-normal justified-text" - > - <span> - • - </span> - consumption_visualizer.dataModal.item1 - </div> - <div - class="text-16-normal justified-text" - > - <span> - • - </span> - consumption_visualizer.dataModal.item2 - </div> - <div - class="text-16-normal justified-text" - > - <span> - • - </span> - consumption_visualizer.dataModal.item3 - </div> - <div - class="text-16-normal justified-text" - > - <span> - • - </span> - consumption_visualizer.dataModal.item4 - </div> + <ul> + <li> + consumption_visualizer.dataModal.item1 + </li> + <li> + consumption_visualizer.dataModal.item2 + </li> + <li> + consumption_visualizer.dataModal.item3 + </li> + <li> + consumption_visualizer.dataModal.item4 + </li> + </ul> <button aria-label="ecogesture_info_modal.button_close" class="MuiButtonBase-root MuiButton-root btn-highlight MuiButton-text" @@ -882,38 +864,20 @@ exports[`NoDataModal component should render correctly 1`] = ` > consumption_visualizer.dataModal.list_title </div> - <div - className="text-16-normal justified-text" - > - <span> - • - </span> - consumption_visualizer.dataModal.item1 - </div> - <div - className="text-16-normal justified-text" - > - <span> - • - </span> - consumption_visualizer.dataModal.item2 - </div> - <div - className="text-16-normal justified-text" - > - <span> - • - </span> - consumption_visualizer.dataModal.item3 - </div> - <div - className="text-16-normal justified-text" - > - <span> - • - </span> - consumption_visualizer.dataModal.item4 - </div> + <ul> + <li> + consumption_visualizer.dataModal.item1 + </li> + <li> + consumption_visualizer.dataModal.item2 + </li> + <li> + consumption_visualizer.dataModal.item3 + </li> + <li> + consumption_visualizer.dataModal.item4 + </li> + </ul> <WithStyles(ForwardRef(Button)) aria-label="ecogesture_info_modal.button_close" classes={ diff --git a/src/components/ConsumptionVisualizer/noDataModal.scss b/src/components/ConsumptionVisualizer/noDataModal.scss index bbb047c844054b312f2c0e4da61d0eabc997792d..cec39c2fb28facfe06cc26d0c86b5107128cfb4e 100644 --- a/src/components/ConsumptionVisualizer/noDataModal.scss +++ b/src/components/ConsumptionVisualizer/noDataModal.scss @@ -20,4 +20,10 @@ display: flex; justify-content: start; } + ul { + padding-left: 1rem; + li { + margin-block: 0.5rem; + } + } } diff --git a/src/components/Duel/DuelResultModal/DuelResultModal.tsx b/src/components/Duel/DuelResultModal/DuelResultModal.tsx index 0eb992461c5700377333b7ec88c03cf964d69a38..5e9a16b2a4a6836869dfd5d24b6cc87bf1f2e528 100644 --- a/src/components/Duel/DuelResultModal/DuelResultModal.tsx +++ b/src/components/Duel/DuelResultModal/DuelResultModal.tsx @@ -25,10 +25,12 @@ const DuelResultModal = ({ const { t } = useI18n() const [winIcon, setWinIcon] = useState<string>(defaultIcon) const [lossIcon, setLossIcon] = useState<string>(defaultIcon) - const result: string | number = formatNumberValues( + const result = formatNumberValues( Math.abs(userChallenge.duel.threshold - userChallenge.duel.userConsumption) ) + const statusKey = win ? 'success' : 'lost' + useEffect(() => { async function handleEcogestureIcon() { const icon = await importIconById(userChallenge.id + '-1', 'duelResult') @@ -64,34 +66,26 @@ const DuelResultModal = ({ /> </div> <div className="text-28-normal-uppercase title"> - {win - ? t('duel_result_modal.sucess.title') - : t('duel_result_modal.lost.title')} + {t(`duel_result_modal.${statusKey}.title`)} </div> - <div className="text-18-normal"> - {win - ? t('duel_result_modal.sucess.message1') + result + ' €' - : t('duel_result_modal.lost.message1') + result + ' €'} + <div className="text-18-bold"> + {t(`duel_result_modal.${statusKey}.message1`, { value: result })} </div> - <div className="text-18-normal"> - {win - ? t('duel_result_modal.sucess.message2') + userChallenge.title - : t('duel_result_modal.lost.message2') + - userChallenge.title + - '...'} + <div className="text-18-bold"> + {t(`duel_result_modal.${statusKey}.message2`, { + title: userChallenge.title, + })} </div> <Button aria-label={t('duel_result_modal.accessibility.button_validate')} - className="button" + className="buttonCloseModal" onClick={handleCloseClick} classes={{ root: 'btn-secondary-negative', label: 'text-16-normal', }} > - {win - ? t('duel_result_modal.sucess.button_validate') - : t('duel_result_modal.lost.button_validate')} + {t(`duel_result_modal.${statusKey}.button_validate`)} </Button> </div> </Dialog> diff --git a/src/components/Duel/DuelResultModal/__snapshots__/DuelResultModal.spec.tsx.snap b/src/components/Duel/DuelResultModal/__snapshots__/DuelResultModal.spec.tsx.snap index 99029ebbc233b10ce774ad17a8ee9ab1e809b214..c56eab4eef66848d8bb71598d8b4557e534f5822 100644 --- a/src/components/Duel/DuelResultModal/__snapshots__/DuelResultModal.spec.tsx.snap +++ b/src/components/Duel/DuelResultModal/__snapshots__/DuelResultModal.spec.tsx.snap @@ -580,28 +580,28 @@ exports[`DuelResultModal component should render correctly 1`] = ` <div class="text-28-normal-uppercase title" > - duel_result_modal.sucess.title + duel_result_modal.success.title </div> <div - class="text-18-normal" + class="text-18-bold" > - duel_result_modal.sucess.message10,00 € + duel_result_modal.success.message1 </div> <div - class="text-18-normal" + class="text-18-bold" > - duel_result_modal.sucess.message2Challenge 2 + duel_result_modal.success.message2 </div> <button aria-label="duel_result_modal.accessibility.button_validate" - class="MuiButtonBase-root MuiButton-root btn-secondary-negative MuiButton-text button" + class="MuiButtonBase-root MuiButton-root btn-secondary-negative MuiButton-text buttonCloseModal" tabindex="0" type="button" > <span class="MuiButton-label text-16-normal" > - duel_result_modal.sucess.button_validate + duel_result_modal.success.button_validate </span> <span class="MuiTouchRipple-root" @@ -878,21 +878,21 @@ exports[`DuelResultModal component should render correctly 1`] = ` <div className="text-28-normal-uppercase title" > - duel_result_modal.sucess.title + duel_result_modal.success.title </div> <div - className="text-18-normal" + className="text-18-bold" > - duel_result_modal.sucess.message10,00 € + duel_result_modal.success.message1 </div> <div - className="text-18-normal" + className="text-18-bold" > - duel_result_modal.sucess.message2Challenge 2 + duel_result_modal.success.message2 </div> <WithStyles(ForwardRef(Button)) aria-label="duel_result_modal.accessibility.button_validate" - className="button" + className="buttonCloseModal" classes={ Object { "label": "text-16-normal", @@ -903,7 +903,7 @@ exports[`DuelResultModal component should render correctly 1`] = ` > <ForwardRef(Button) aria-label="duel_result_modal.accessibility.button_validate" - className="button" + className="buttonCloseModal" classes={ Object { "colorInherit": "MuiButton-colorInherit", @@ -941,7 +941,7 @@ exports[`DuelResultModal component should render correctly 1`] = ` > <WithStyles(ForwardRef(ButtonBase)) aria-label="duel_result_modal.accessibility.button_validate" - className="MuiButton-root btn-secondary-negative MuiButton-text button" + className="MuiButton-root btn-secondary-negative MuiButton-text buttonCloseModal" component="button" disabled={false} focusRipple={true} @@ -951,7 +951,7 @@ exports[`DuelResultModal component should render correctly 1`] = ` > <ForwardRef(ButtonBase) aria-label="duel_result_modal.accessibility.button_validate" - className="MuiButton-root btn-secondary-negative MuiButton-text button" + className="MuiButton-root btn-secondary-negative MuiButton-text buttonCloseModal" classes={ Object { "disabled": "Mui-disabled", @@ -968,7 +968,7 @@ exports[`DuelResultModal component should render correctly 1`] = ` > <button aria-label="duel_result_modal.accessibility.button_validate" - className="MuiButtonBase-root MuiButton-root btn-secondary-negative MuiButton-text button" + className="MuiButtonBase-root MuiButton-root btn-secondary-negative MuiButton-text buttonCloseModal" disabled={false} onBlur={[Function]} onClick={[MockFunction]} @@ -988,7 +988,7 @@ exports[`DuelResultModal component should render correctly 1`] = ` <span className="MuiButton-label text-16-normal" > - duel_result_modal.sucess.button_validate + duel_result_modal.success.button_validate </span> <WithStyles(memo) center={false} diff --git a/src/components/Duel/DuelResultModal/duelResultModal.scss b/src/components/Duel/DuelResultModal/duelResultModal.scss index ba90fa755ea6d27f55b8bdf887ca4ded86bb2154..0c34d5c749566b0d3ca14c16aef87a990e85d396 100644 --- a/src/components/Duel/DuelResultModal/duelResultModal.scss +++ b/src/components/Duel/DuelResultModal/duelResultModal.scss @@ -1,8 +1,11 @@ +@import 'src/styles/base/color'; + .duel-result-modal-root { text-align: center; overflow-x: hidden; .title { margin: 2rem 0 1rem; + color: $grey-bright; } } @@ -24,3 +27,7 @@ transform: translate(-50%, 32%); } } + +.buttonCloseModal { + margin-top: 1rem !important; +} diff --git a/src/components/Exploration/ExplorationFinished.spec.tsx b/src/components/Exploration/ExplorationFinished.spec.tsx index 8daffa84a7912563618badc5a146c455b15fef0c..50c40cda1ad626c09baf5c2cabc6a8a1ace2c87a 100644 --- a/src/components/Exploration/ExplorationFinished.spec.tsx +++ b/src/components/Exploration/ExplorationFinished.spec.tsx @@ -18,7 +18,7 @@ describe('ExplorationFinished', () => { expect(wrapper.find(StyledIcon).exists()).toBeTruthy() expect(wrapper.find('.congratulation').exists()).toBeTruthy() expect(wrapper.find('.exploration-earn').exists()).toBeTruthy() - expect(wrapper.find('.msg-sucess').text()).toEqual( + expect(wrapper.find('.msg-success').text()).toEqual( userChallengeData[0].exploration.message_success ) }) diff --git a/src/components/Exploration/ExplorationFinished.tsx b/src/components/Exploration/ExplorationFinished.tsx index 0ffced2e3584d29ddf8eedd977250d5a362c7424..e1251181a9918a1896d979231eacf183339d3594 100644 --- a/src/components/Exploration/ExplorationFinished.tsx +++ b/src/components/Exploration/ExplorationFinished.tsx @@ -55,7 +55,7 @@ const ExplorationFinished = ({ userChallenge }: ExplorationFinishedProps) => { <div className="exploration-card"> <div className="exploration-finish"> <div className="congratulation">{t('exploration.congratulation')}</div> - <div className="msg-sucess"> + <div className="msg-success"> {userChallenge.exploration.message_success} </div> <div className="exploration-earn">{t('exploration.earn')}</div> diff --git a/src/components/FluidChart/FluidChart.tsx b/src/components/FluidChart/FluidChart.tsx index 3b0b2083619d99f0580935c602ac8c3329e644bb..7e19631f377ecc5de54197bac890ba10310f73c2 100644 --- a/src/components/FluidChart/FluidChart.tsx +++ b/src/components/FluidChart/FluidChart.tsx @@ -144,9 +144,9 @@ const FluidChart = ({ fluidType, setActive }: FluidChartProps) => { const LastDataValid = () => ( <div className="lastValidData"> <span className={`text-16-normal date`} onClick={moveToDate}> - {t('consumption_visualizer.last_valid_data')} - {' : '} - {currentFluidStatus?.lastDataDate?.toFormat('dd/MM/yy') || '-'} + {t('consumption_visualizer.last_valid_data', { + date: currentFluidStatus?.lastDataDate?.toFormat('dd/MM/yy') || '-', + })} </span> <p>{t('auth.warningOfflineData')}</p> <Button diff --git a/src/enums/dacc.enum.ts b/src/enums/dacc.enum.ts index e07106c4813c77fec8ac2282d9c71737c3104325..707054fda7dc96682b4dd4cf4f1dd07e02dfde20 100644 --- a/src/enums/dacc.enum.ts +++ b/src/enums/dacc.enum.ts @@ -11,7 +11,7 @@ export enum DaccEvent { QUIZ_STARS = 'quiz-stars', SUMMARY_SUBSCRIPTION_MONTHLY = 'summary-subscription-monthly', FLUID_DATA_GRANULARITY = 'fluid-data-granularity-monthly', - PARTNER_SUCESS_MONTHLY = 'konnector-attempts-before-success', + PARTNER_SUCCESS_MONTHLY = 'konnector-attempts-before-success', UNINITIALIZED_KONNECTOR_ATTEMPTS_MONTHLY = 'uninitialized-konnector-attempts-monthly', CONNECTION_COUNT_MONTHLY = 'connection-count-monthly', PROFILE_COUNT_MONTHLY = 'profile-count', diff --git a/src/locales/fr.json b/src/locales/fr.json index d576c7b441b2022a1c9c8b06f225db6f24986e94..c54d909a3d371335e5ea9ee5e0692bff71508f8c 100644 --- a/src/locales/fr.json +++ b/src/locales/fr.json @@ -326,17 +326,16 @@ "missing_data": "Données manquantes", "no_data": "Pas de données", "why_no_data": "Pourquoi n'ai-je pas de données\u00a0?", - "last_data": "Dernières données", - "last_valid_data": "Dernières données valides", - "last_available_data": "Dernières données disponibles", - "last_valid_data_multi": "Dernières données complètes", + "last_valid_data": "Dernières données valides : %{date}", + "last_available_data": "Dernières données disponibles : %{date}", + "last_valid_data_multi": "Dernières données complètes : %{date}", "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.", + "item1": "le lien entre Ecolyo et le fournisseur de données est rompu\u00a0: 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\u00a0: se connecter directement chez ce gestionnaire pour vérifier que cette donnée apparaît.", "item3": "pour le gaz : vous n'avez pas autorisé Ecolyo à accéder aux données de consommation de cette période.", "item4": "vous n'aviez tout simplement pas de compteur communicant à l'époque\u00a0!" @@ -384,17 +383,17 @@ } }, "duel_result_modal": { - "sucess": { - "title": "Félicitations !", - "message1": "Vous avez économisé ", - "message2": "et gagné le badge ", - "button_validate": "Youpi !" + "success": { + "title": "Félicitations", + "message1": "Vous avez économisé %{value} €", + "message2": "et gagné le badge %{title} !", + "button_validate": "Youpi" }, "lost": { - "title": "Presque !", - "message1": "Vous avez dépassé de ", - "message2": "et manqué le badge ", - "button_validate": "Zut alors !" + "title": "Presque", + "message1": "Vous avez dépassé de %{value} €", + "message2": "et manqué le badge %{title}", + "button_validate": "Zut alors" }, "accessibility": { "window_title": "Fenêtre de résultat", @@ -934,25 +933,6 @@ } } }, - "old_fluid_data_modal": { - "errorTxt": "Aïe !", - "oldData": "Vos données semblent anciennes", - "verify": "Veuillez vérifier l’état de vos connecteurs : ", - "problem": "Vos connecteurs semblent bien connectés, il se peut qu’il y ait un problème au niveau du ou des fournisseurs de données :", - "problem_electricity": "pour l'électricité.", - "problem_water": "pour l'eau.", - "problem_gas": "pour le gaz.", - "contact": "Veuillez prendre contact directement avec eux.", - "accessButton": "Accéder aux connecteurs", - "later": "Plus tard", - "ok": "Ok", - "accessibility": { - "window_title": "Fenêtre d'information", - "button_ok": "Fermer la fenêtre", - "button_later": "Fermer la fenêtre", - "button_goto_konnector": "Aller aux connecteurs" - } - }, "performance_indicator": { "bilan": { "text1": "Par rapport à ", diff --git a/src/targets/services/aggregatorUsageEvents.ts b/src/targets/services/aggregatorUsageEvents.ts index f02823d202cd0dede96f8cd207dbd17f6d7f6c16..6bf0bda5d7d83543edd461f59db26f3770996e8c 100644 --- a/src/targets/services/aggregatorUsageEvents.ts +++ b/src/targets/services/aggregatorUsageEvents.ts @@ -771,7 +771,7 @@ const sendKonnectorEvents = async (client: Client) => { const konnectorSuccess: Indicator = { createdBy: 'ecolyo', - measureName: DaccEvent.PARTNER_SUCESS_MONTHLY, + measureName: DaccEvent.PARTNER_SUCCESS_MONTHLY, // eslint-disable-next-line camelcase group1: { fluid_type: slug }, startDate: DateTime.local()