From f1e1681fe5314591b312b8d73e3cd340118b42de Mon Sep 17 00:00:00 2001 From: Lorenzo Corallo Date: Sun, 23 Apr 2023 23:24:34 +0200 Subject: [PATCH 01/26] style(TopControls): refactor and better mobile support --- .../QuestionsForm/QuestionsForm.tsx | 2 +- src/components/QuestionsForm/SectionRecap.tsx | 3 +- src/components/QuestionsForm/Timer.tsx | 13 +-- src/components/QuestionsForm/TopControls.tsx | 96 ++++++++++++------- 4 files changed, 67 insertions(+), 47 deletions(-) diff --git a/src/components/QuestionsForm/QuestionsForm.tsx b/src/components/QuestionsForm/QuestionsForm.tsx index 51431d5..f320a1b 100644 --- a/src/components/QuestionsForm/QuestionsForm.tsx +++ b/src/components/QuestionsForm/QuestionsForm.tsx @@ -221,7 +221,7 @@ export default function QuestionsForm(props: QuestionsFormProps) { active={view == 'TOL-testing'} answers={answers} closeSection={closeSection} - exitTest={handleExitTest} + onExitTest={handleExitTest} currentSection={currentSection} questions={props.questions} timer={timer} diff --git a/src/components/QuestionsForm/SectionRecap.tsx b/src/components/QuestionsForm/SectionRecap.tsx index 8709f6c..73cc8e5 100644 --- a/src/components/QuestionsForm/SectionRecap.tsx +++ b/src/components/QuestionsForm/SectionRecap.tsx @@ -10,7 +10,8 @@ const styles = StyleSheet.create({ paddingTop: '10px', paddingBottom: '20px', alignItems: 'center', - flexDirection: 'column' + flexDirection: 'column', + textAlign: 'center' } }) diff --git a/src/components/QuestionsForm/Timer.tsx b/src/components/QuestionsForm/Timer.tsx index cf819bf..9bc9176 100644 --- a/src/components/QuestionsForm/Timer.tsx +++ b/src/components/QuestionsForm/Timer.tsx @@ -41,7 +41,7 @@ const styles = StyleSheet.create({ }, p: { display: 'flex', - fontSize: '0.75em', + fontSize: '0.8em', maxWidth: '12em', textAlign: 'left', wordWrap: 'normal' @@ -56,16 +56,7 @@ export default function Timer(props: TimerProps) { const { timer } = props return ( -
+
void - exitTest: () => void + onExitTest: () => void currentSection: Section timer: TimerResult questions: QuestionsData @@ -53,36 +62,55 @@ interface TopControlsProps { export default function TopControls(props: TopControlsProps) { const { mobile } = useContext(MobileContext) - const { currentSection } = props + const { timer, active } = props - return ( -
-
-
-

- Sezione: {getSectionName(currentSection)}
- Riposte:{' '} - { - props.answers[currentSection].filter((a) => !!a.letter).length - } / {props.questions[currentSection].length} - {mobile &&
} - {props.active && - ` (${props.answers[currentSection].reduce( - (acc, curr) => acc + (curr.flagged ? 1 : 0), - 0 - )} da rivedere)`} -

-
- {props.active && ( - <> - - - )} + return mobile ? ( +
+
+ +
- + + {active && ( +
+ +
+ )}
+ ) : ( +
+ + {active && ( +
+ +
+ )} + +
+ ) +} + +function SectionInfo(props: TopControlsProps) { + const { currentSection, answers, questions, active } = props + const { mobile } = useContext(MobileContext) + return ( +

+ Sezione: {getSectionName(currentSection)}
+ Risposte: { + answers[currentSection].filter((a) => !!a.letter).length + } / {questions[currentSection].length} + {mobile &&
} + {active && + ` (${props.answers[currentSection].reduce( + (acc, curr) => acc + (curr.flagged ? 1 : 0), + 0 + )} da rivedere)`} +

) } From 1fabd264e66c927b4d2a3034ef4f78ce1a75b742 Mon Sep 17 00:00:00 2001 From: Lorenzo Corallo Date: Mon, 24 Apr 2023 00:49:33 +0200 Subject: [PATCH 02/26] style(Home): fix DSA-info indent --- src/components/pages/Home.tsx | 5 ++++- src/locales/en.json | 2 +- src/locales/it.json | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/components/pages/Home.tsx b/src/components/pages/Home.tsx index beedc33..9b5346e 100644 --- a/src/components/pages/Home.tsx +++ b/src/components/pages/Home.tsx @@ -18,6 +18,9 @@ const styles = StyleSheet.create({ display: 'flex', fontSize: 14, gap: 6 + }, + dsaInfo: { + maxWidth: '755px' } }) @@ -62,7 +65,7 @@ export default function Home({ viewState }: InfoStartProps) {
} open={isDsa} transitionTime={150}> -

+

home.dsaInfo

diff --git a/src/locales/en.json b/src/locales/en.json index 01b59e7..950d4dc 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -5,7 +5,7 @@ "languageInfo": "*The test simulation will be in Italian", "startBtn": "Start the test", "dsaBtn": "Student with SLD", - "dsaInfo": "Students with Specific Learning Disorders (SLD) taking the TOL are eligible for an additional 30 percent time, provided they disclose it when registering for the test. A certification stating the SLD diagnosis is also required.
Selecting \"Student with SLD\" will apply the bonus time in this simulation as well." + "dsaInfo": "Students with Specific Learning Disorders (SLD) taking the TOL are eligible for an additional 30 percent time, provided they disclose it when registering for the test. A certification stating the SLD diagnosis is also required. Selecting \"Student with SLD\" will apply the bonus time in this simulation as well." }, "about": { "main": "In order to be admitted to the Engineering school of Politecnico di Milano (PoliMi), the aspiring freshmen must pass the admission test (TOL).
Among the resources that PoliMi offers for free to prepare, you can find: the Politest, a collection of commented and solved exercises, the DOL, an online demo with a limited number of questions, and two complete self-assessment tests (pdf with questions, xls with exact answers).

Thus, we did not have a complete, web-based TOL simulation, that is, in the same environment in which the future freshmen will take the admission test.
We have set ourself the goal of creating a complete and free TOL simulation, in order to provide aspiring freshmen with a familiar environment in which to practice, very similar to the one they will encounter at the admission test.
The project is fully managed by students, from developing the web application to creating the TOL questions.", diff --git a/src/locales/it.json b/src/locales/it.json index 46c62aa..aae94e1 100644 --- a/src/locales/it.json +++ b/src/locales/it.json @@ -5,7 +5,7 @@ "languageInfo": "", "startBtn": "Inizia il test", "dsaBtn": "Studente con DSA", - "dsaInfo": "Gli studenti con Disturbi Specifici dell'Apprendimento (DSA) che affrontano il TOL, possono usufruire di un tempo supplementare pari al 30%, previa segnalazione in fase di iscrizione al test. È inoltre richiesta una certificazione attestante la diagnosi di DSA.
Selezionando \"Studente con DSA\" verrà applicato il tempo bonus in questa simulazione." + "dsaInfo": "Gli studenti con Disturbi Specifici dell'Apprendimento (DSA) che affrontano il TOL, possono usufruire di un tempo supplementare pari al 30%, previa segnalazione in fase di iscrizione al test. È inoltre richiesta una certificazione attestante la diagnosi di DSA. elezionando \"Studente con DSA\" verrà applicato il tempo bonus in questa simulazione." }, "about": { "main": "Per poter essere ammessi alla scuola di Ingegneria del Politecnico di Milano (PoliMi), le aspiranti matricole devono superare il test di ammissione (TOL).
Tra le risorse che il PoliMi offre gratuitamente per prepararsi abbiamo: il Politest, una raccolta di esercizi commentati e risolti, la DOL, una demo online con un numero ridotto di domande, e due test di autovalutazione completi (pdf con domande, xls con risposte esatte).

Non avevamo dunque una simulazione TOL completa e basata sul web, ovvero nello stesso ambiente in cui le future matricole sosterranno il test di ammissione.
Ci siamo posti l'obiettivo di creare una simulazione TOL completa e gratuita, al fine di fornire alle aspiranti matricole un ambiente familiare dove esercitarsi, molto simile a quello che incontreranno al test di ammissione.
Il progetto è completamente gestito dagli studenti, dallo sviluppo dell'applicazione web alla creazione delle domande TOL. ", From 08f678c9e188f98c36879b7a853dae00ce10d4de Mon Sep 17 00:00:00 2001 From: Lorenzo Corallo Date: Mon, 24 Apr 2023 01:39:11 +0200 Subject: [PATCH 03/26] chore(deps): update i18n packages --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9463773..1c0f312 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,7 @@ "gh-pages": "^3.2.3", "google-spreadsheet": "^3.1.15", "googleapis": "^39.2.0", - "i18next": "^22.4.13", + "i18next": "^22.4.15", "i18next-browser-languagedetector": "^7.0.1", "mkdirp": "^1.0.4", "prettier": "^2.4.1", @@ -9940,9 +9940,9 @@ } }, "node_modules/i18next": { - "version": "22.4.13", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-22.4.13.tgz", - "integrity": "sha512-GX7flMHRRqQA0I1yGLmaZ4Hwt1JfLqagk8QPDPZsqekbKtXsuIngSVWM/s3SLgNkrEXjA+0sMGNuOEkkmyqmWg==", + "version": "22.4.15", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-22.4.15.tgz", + "integrity": "sha512-yYudtbFrrmWKLEhl6jvKUYyYunj4bTBCe2qIUYAxbXoPusY7YmdwPvOE6fx6UIfWvmlbCWDItr7wIs8KEBZ5Zg==", "funding": [ { "type": "individual", @@ -27354,9 +27354,9 @@ "version": "1.1.1" }, "i18next": { - "version": "22.4.13", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-22.4.13.tgz", - "integrity": "sha512-GX7flMHRRqQA0I1yGLmaZ4Hwt1JfLqagk8QPDPZsqekbKtXsuIngSVWM/s3SLgNkrEXjA+0sMGNuOEkkmyqmWg==", + "version": "22.4.15", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-22.4.15.tgz", + "integrity": "sha512-yYudtbFrrmWKLEhl6jvKUYyYunj4bTBCe2qIUYAxbXoPusY7YmdwPvOE6fx6UIfWvmlbCWDItr7wIs8KEBZ5Zg==", "requires": { "@babel/runtime": "^7.20.6" }, diff --git a/package.json b/package.json index 52c64b9..1256fff 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "gh-pages": "^3.2.3", "google-spreadsheet": "^3.1.15", "googleapis": "^39.2.0", - "i18next": "^22.4.13", + "i18next": "^22.4.15", "i18next-browser-languagedetector": "^7.0.1", "mkdirp": "^1.0.4", "prettier": "^2.4.1", From 213151228819b0359e2c952aa7904a8d32f348e7 Mon Sep 17 00:00:00 2001 From: Lorenzo Corallo Date: Mon, 24 Apr 2023 01:42:10 +0200 Subject: [PATCH 04/26] feat(i18n): translate save instructions on results page --- .../ExtendCorrection/ExtendedCorrection.tsx | 48 ++++++++++--------- src/locales/en.json | 11 ++++- src/locales/it.json | 11 ++++- 3 files changed, 46 insertions(+), 24 deletions(-) diff --git a/src/components/ExtendCorrection/ExtendedCorrection.tsx b/src/components/ExtendCorrection/ExtendedCorrection.tsx index 90c39e5..a747223 100644 --- a/src/components/ExtendCorrection/ExtendedCorrection.tsx +++ b/src/components/ExtendCorrection/ExtendedCorrection.tsx @@ -96,7 +96,7 @@ export default function ExtendedCorrection(props: ExtendedCorrectionProps) { return (
- {printSupported ? ( + {!printSupported ? (
( PrintDocument.displayName = 'Document' function FirefoxInstructions() { + const { t } = useTranslation() return (
-

Salva i tuoi risultati

-

Il tuo browser (Firefox Android) non supporta la stampa automatica.

-

Per salvare i risultati segui questi passaggi:

+

{t('results.saveTitle')}

+

{t('results.saveFirefoxP1')}

+

{t('results.saveFirefoxP2')}

    -
  1. Apri il menu di Firefox
  2. +
  3. {t('results.saveFirefoxLi1')}
  4. -
  5. Premi il tasto per condividere
  6. +
  7. {t('results.saveFirefoxLi2')}
  8. -
  9. Nel menu che si apre, premi su "Salva come PDF"
  10. +
  11. {t('results.saveFirefoxLi3')}
@@ -213,24 +214,27 @@ function FirefoxInstructions() { } function FallbackInstructions() { + const { t, i18n } = useTranslation() return (
-

Salva i tuoi risultati

-

- Per il tuo browser non è supportata la stampa automatica del PDF con i - risultati. -

-

- Puoi provare ad utilizzare la funzione "Sala come PDF" del tuo browser - che potrebbe essere nel menu di condivisione oppure nel menu principale - del browser. -

+

{t('results.saveTitle')}

+

{t('results.saveFallbackP1')}

+

{t('results.saveFallbackP2')}

- Ti invitiamo a segnalare il tuo browser{' '} - - qui - {' '} - in modo da poter risolvere il problema{' '} + + ) + }} + > + results.saveFallbackP3 +

) diff --git a/src/locales/en.json b/src/locales/en.json index 950d4dc..a92e3c4 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -50,6 +50,15 @@ "pdfTitle": "Simulation of {{- date}} at {{- time}}", "pdfInfo1": "Do you have any doubts about the questions and their resolution? Ask on the ", "tgGroup": "PoliNetwork's TOL Prepration Group", - "pdfInfo2": "On the following pages you will find, divided by section, the questions that have been proposed to you with the related outcome." + "pdfInfo2": "On the following pages you will find, divided by section, the questions that have been proposed to you with the related outcome.", + "saveTitle": "Save your results", + "saveFirefoxP1": "Your browser (Firefox Android) does not support automatic printing of the PDF with the results.", + "saveFirefoxP2": "Follow these instructions to save your results:", + "saveFirefoxLi1": "Open the Firefox menu", + "saveFirefoxLi2": "Click on the share button", + "saveFirefoxLi3": "In the menu that opens, press on \"Save as PDF\"", + "saveFallbackP1": "Your browser does not support automatic printing of the PDF with the results.", + "saveFallbackP2": "You can try using your browser's \"Save as PDF\" feature, which may be in the sharing menu or in the main browser menu.", + "saveFallbackP3": "Please report your browser here so we can fix the problem." } } diff --git a/src/locales/it.json b/src/locales/it.json index aae94e1..daf5e92 100644 --- a/src/locales/it.json +++ b/src/locales/it.json @@ -50,6 +50,15 @@ "pdfTitle": "Simulazione del {{- date}} alle {{- time}}", "pdfInfo1": "Hai delle domande sui quesiti e la loro risoluzione? Falle sul ", "tgGroup": "Gruppo Preprazione TOL di PoliNetwork", - "pdfInfo2": "Nelle pagine successive troverai, suddivisi per sezione, i quesiti che ti sono stati proposti con il relativo esito." + "pdfInfo2": "Nelle pagine successive troverai, suddivisi per sezione, i quesiti che ti sono stati proposti con il relativo esito.", + "saveTitle": "Salva i tuoi risultati", + "saveFirefoxP1": "Il tuo browser (Firefox Android) non supporta la stampa automatica.", + "saveFirefoxP2": "Per salvare i risultati segui questi passaggi:", + "saveFirefoxLi1": "Apri il menu di Firefox", + "saveFirefoxLi2": "Premi il tasto per condividere", + "saveFirefoxLi3": "Nel menu che si apre, premi su \"Salva come PDF\"", + "saveFallbackP1": "Per il tuo browser non è supportata la stampa automatica del PDF con i risultati.", + "saveFallbackP2": "Puoi provare ad utilizzare la funzione \"Salva come PDF\" del tuo browser che potrebbe essere nel menu di condivisione oppure nel menu principale del browser.", + "saveFallbackP3": "Ti invitiamo a segnalare il tuo browser qui in modo da poter risolvere il problema." } } From 4343dac13c197fc127751f38f6e0ad2e189dcf24 Mon Sep 17 00:00:00 2001 From: Lorenzo Corallo Date: Mon, 24 Apr 2023 01:44:40 +0200 Subject: [PATCH 05/26] fix(i18n): replace DSA with PSD in en.json --- src/locales/en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locales/en.json b/src/locales/en.json index a92e3c4..843a537 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -20,7 +20,7 @@ "main": "The TOL Project by PoliNetwork is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License
Permissions beyond the scope of this license may be available here." }, "privacy": { - "localStorage": "This website uses the browser to save user preferences, for example the test mode (regular or DSA) or the website language. These settings are never sent to any server, instead they are handled locally by the browser. Moreover, preferences are deleted after 6 months from the last change." + "localStorage": "This website uses the browser to save user preferences, for example the test mode (regular or SLD) or the website language. These settings are never sent to any server, instead they are handled locally by the browser. Moreover, preferences are deleted after 6 months from the last change." }, "results": { "exitWarn": "You did not save your results. Are you sure you want to exit?", From 3fec2b5d11da9f0e0d98f4e291102613b9b177b3 Mon Sep 17 00:00:00 2001 From: Lorenzo Corallo Date: Mon, 24 Apr 2023 01:47:05 +0200 Subject: [PATCH 06/26] fix: remove code for previous debug --- src/components/ExtendCorrection/ExtendedCorrection.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ExtendCorrection/ExtendedCorrection.tsx b/src/components/ExtendCorrection/ExtendedCorrection.tsx index a747223..cfdca14 100644 --- a/src/components/ExtendCorrection/ExtendedCorrection.tsx +++ b/src/components/ExtendCorrection/ExtendedCorrection.tsx @@ -96,7 +96,7 @@ export default function ExtendedCorrection(props: ExtendedCorrectionProps) { return (
- {!printSupported ? ( + {printSupported ? (
Date: Mon, 24 Apr 2023 02:03:36 +0200 Subject: [PATCH 07/26] chore: remove unused style --- src/components/ExtendCorrection/ExtendedCorrection.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/ExtendCorrection/ExtendedCorrection.tsx b/src/components/ExtendCorrection/ExtendedCorrection.tsx index cfdca14..5d2247a 100644 --- a/src/components/ExtendCorrection/ExtendedCorrection.tsx +++ b/src/components/ExtendCorrection/ExtendedCorrection.tsx @@ -24,7 +24,6 @@ const styles = StyleSheet.create({ padding: '15px', gap: '10px' }, - doc: {}, printButton: { display: 'inline-flex', alignItems: 'center', @@ -144,7 +143,7 @@ const PrintDocument = forwardRef( ) return ( -
+

From ce32cdd3e2969fe71eb29326c6e22f6711df7270 Mon Sep 17 00:00:00 2001 From: Lorenzo Corallo Date: Mon, 24 Apr 2023 12:54:17 +0200 Subject: [PATCH 08/26] fix(Header): hide i18n switch during the test --- src/components/Header.tsx | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/components/Header.tsx b/src/components/Header.tsx index c34f7ef..d8eff39 100644 --- a/src/components/Header.tsx +++ b/src/components/Header.tsx @@ -1,4 +1,4 @@ -import { useContext, useState } from 'react' +import { useContext, useMemo, useState } from 'react' import { StyleSheet } from '../utils/style' import { statePair } from '../utils/types' import logo from '../static/logo3000.webp' @@ -51,6 +51,11 @@ export default function Header({ viewState }: HeaderProps) { setLang(lang) } + const isTestView = useMemo( + () => viewState[0] === 'TOL-testing' || viewState[0] === 'TOL-secRecap', + [viewState[0]] + ) + return (

@@ -58,7 +63,7 @@ export default function Header({ viewState }: HeaderProps) { style={{ ...styles.logoDiv, // disable logo link when doing the test - pointerEvents: viewState[0].startsWith('TOL') ? 'none' : 'all' + pointerEvents: isTestView ? 'none' : 'all' }} rel="noreferrer noopener" target="_blank" @@ -74,10 +79,12 @@ export default function Header({ viewState }: HeaderProps) {
- + {!isTestView && ( + + )}
) From 196f91a1431f49f2fa634c0c8feafd638939b4ef Mon Sep 17 00:00:00 2001 From: Lorenzo Corallo Date: Mon, 24 Apr 2023 13:03:27 +0200 Subject: [PATCH 09/26] fix(i18n): unify related translations using Trans component --- .../ExtendCorrection/ExtendedCorrection.tsx | 23 +++++++++++-------- src/locales/en.json | 3 +-- src/locales/it.json | 3 +-- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/components/ExtendCorrection/ExtendedCorrection.tsx b/src/components/ExtendCorrection/ExtendedCorrection.tsx index 5d2247a..9de894f 100644 --- a/src/components/ExtendCorrection/ExtendedCorrection.tsx +++ b/src/components/ExtendCorrection/ExtendedCorrection.tsx @@ -153,16 +153,21 @@ const PrintDocument = forwardRef(

{resultTable}

- {t('results.pdfInfo1')} - + ) + }} > - {t('results.tgGroup')} - - ! + results.pdfInfo1 +

{t('results.pdfInfo2')}

diff --git a/src/locales/en.json b/src/locales/en.json index 843a537..700df93 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -48,8 +48,7 @@ "homeBtn": "Go back to home", "saveBtn": "Save test results", "pdfTitle": "Simulation of {{- date}} at {{- time}}", - "pdfInfo1": "Do you have any doubts about the questions and their resolution? Ask on the ", - "tgGroup": "PoliNetwork's TOL Prepration Group", + "pdfInfo1": "Do you have any doubts about the questions and their resolution? Ask on the PoliNetwork's TOL Preparation Group!", "pdfInfo2": "On the following pages you will find, divided by section, the questions that have been proposed to you with the related outcome.", "saveTitle": "Save your results", "saveFirefoxP1": "Your browser (Firefox Android) does not support automatic printing of the PDF with the results.", diff --git a/src/locales/it.json b/src/locales/it.json index daf5e92..fe043ec 100644 --- a/src/locales/it.json +++ b/src/locales/it.json @@ -48,8 +48,7 @@ "homeBtn": "Torna alla home", "saveBtn": "Salva risultati della simulazione", "pdfTitle": "Simulazione del {{- date}} alle {{- time}}", - "pdfInfo1": "Hai delle domande sui quesiti e la loro risoluzione? Falle sul ", - "tgGroup": "Gruppo Preprazione TOL di PoliNetwork", + "pdfInfo1": "Hai delle domande sui quesiti e la loro risoluzione? Falle sul Gruppo Preprazione TOL di PoliNetwork!", "pdfInfo2": "Nelle pagine successive troverai, suddivisi per sezione, i quesiti che ti sono stati proposti con il relativo esito.", "saveTitle": "Salva i tuoi risultati", "saveFirefoxP1": "Il tuo browser (Firefox Android) non supporta la stampa automatica.", From b1a90c9ff9219f70702e2bdf469dff20643d6cfe Mon Sep 17 00:00:00 2001 From: Lorenzo Corallo Date: Mon, 24 Apr 2023 14:00:06 +0200 Subject: [PATCH 10/26] style: adjust icons and page layout of results PDF --- .../ExtendCorrection/ExtendedCorrection.css | 14 ++++++-------- .../ExtendCorrection/ExtendedCorrection.tsx | 8 ++++++-- src/components/Util/Question.tsx | 12 ++++++++---- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/src/components/ExtendCorrection/ExtendedCorrection.css b/src/components/ExtendCorrection/ExtendedCorrection.css index 8f2a55f..9dea333 100644 --- a/src/components/ExtendCorrection/ExtendedCorrection.css +++ b/src/components/ExtendCorrection/ExtendedCorrection.css @@ -8,20 +8,22 @@ } @media print { + @page { + size: A4; + margin: 20mm !important; + } html, body { height: initial !important; overflow: initial !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; - } -} -@media print { + } .page-break { margin-top: 1rem; display: block; - page-break-before: always; + page-break-before: always !important; } .print-only { display: block; @@ -34,7 +36,3 @@ } } -@page { - size: auto; - margin: 20mm !important; -} diff --git a/src/components/ExtendCorrection/ExtendedCorrection.tsx b/src/components/ExtendCorrection/ExtendedCorrection.tsx index 9de894f..fcd4a74 100644 --- a/src/components/ExtendCorrection/ExtendedCorrection.tsx +++ b/src/components/ExtendCorrection/ExtendedCorrection.tsx @@ -54,7 +54,11 @@ const styles = StyleSheet.create({ height: 'auto', objectFit: 'cover' }, - nowrap: { whiteSpace: 'nowrap' } + nowrap: { whiteSpace: 'nowrap' }, + printDoc: { + maxWidth: '210mm', + margin: '0 auto' + } }) // using 'other' as fallback because @@ -143,7 +147,7 @@ const PrintDocument = forwardRef( ) return ( -
+

diff --git a/src/components/Util/Question.tsx b/src/components/Util/Question.tsx index 7567b8d..413e9dc 100644 --- a/src/components/Util/Question.tsx +++ b/src/components/Util/Question.tsx @@ -10,18 +10,22 @@ const styles = StyleSheet.create({ }, option: { display: 'flex', - gap: 4, - margin: 4 + gap: 8, + margin: '4px 0' }, result: { textDecoration: 'underline', paddingTop: 4, display: 'block' + }, + icon: { + width: '10px', + height: '10px' } }) const TickSign = () => <>✓ -const CrossSign = () => <>✗ +const CrossSign = () => <>✕ interface Props { q: IQuestion @@ -65,7 +69,7 @@ export default function Question({ const visibility = isCorrect || choice === letter ? 'visible' : 'hidden' return (

- + {isCorrect ? : } {letter.toUpperCase()}. From 4e55b34e9c1dad4d6245c806eef9f493b8ff092d Mon Sep 17 00:00:00 2001 From: Lorenzo Corallo Date: Mon, 24 Apr 2023 14:00:29 +0200 Subject: [PATCH 11/26] fix(deps): update react-to-print to fix a Firefox-related bug --- package-lock.json | 32 +++++++++++++++++++------------- package.json | 2 +- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1c0f312..eb7ee5b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -41,7 +41,7 @@ "react-router-dom": "^6.10.0", "react-scripts": "4.0.3", "react-timer-hook": "^3.0.5", - "react-to-print": "^2.14.0", + "react-to-print": "^2.14.12", "rimraf": "^3.0.2", "ts-node": "^10.3.0", "ts-prune": "^0.10.1", @@ -15528,12 +15528,13 @@ } }, "node_modules/prop-types": { - "version": "15.7.2", - "license": "MIT", + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", - "react-is": "^16.8.1" + "react-is": "^16.13.1" } }, "node_modules/prop-types/node_modules/react-is": { @@ -16157,14 +16158,15 @@ } }, "node_modules/react-to-print": { - "version": "2.14.0", - "license": "MIT", + "version": "2.14.12", + "resolved": "https://registry.npmjs.org/react-to-print/-/react-to-print-2.14.12.tgz", + "integrity": "sha512-qFJAwvDFd95Z+FWNqitt+HaB1/z+Zdd0MMrNOPUSus3fG32vqv512yB+HXhQ94J3HKoyqaIg44v0Zfc6xUBqlg==", "dependencies": { - "prop-types": "^15.7.2" + "prop-types": "^15.8.1" }, "peerDependencies": { - "react": "^15.0.0 || ^16.0.0 || ^17.0.0", - "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0" + "react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" } }, "node_modules/read-pkg": { @@ -30918,11 +30920,13 @@ } }, "prop-types": { - "version": "15.7.2", + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "requires": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", - "react-is": "^16.8.1" + "react-is": "^16.13.1" }, "dependencies": { "react-is": { @@ -31348,9 +31352,11 @@ "requires": {} }, "react-to-print": { - "version": "2.14.0", + "version": "2.14.12", + "resolved": "https://registry.npmjs.org/react-to-print/-/react-to-print-2.14.12.tgz", + "integrity": "sha512-qFJAwvDFd95Z+FWNqitt+HaB1/z+Zdd0MMrNOPUSus3fG32vqv512yB+HXhQ94J3HKoyqaIg44v0Zfc6xUBqlg==", "requires": { - "prop-types": "^15.7.2" + "prop-types": "^15.8.1" } }, "read-pkg": { diff --git a/package.json b/package.json index 1256fff..84378b1 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "react-router-dom": "^6.10.0", "react-scripts": "4.0.3", "react-timer-hook": "^3.0.5", - "react-to-print": "^2.14.0", + "react-to-print": "^2.14.12", "rimraf": "^3.0.2", "ts-node": "^10.3.0", "ts-prune": "^0.10.1", From ebab67ac5cbb701573c68474b65c6c47553ddba0 Mon Sep 17 00:00:00 2001 From: Lorenzo Corallo Date: Mon, 24 Apr 2023 14:08:49 +0200 Subject: [PATCH 12/26] style: add Wrapper to Results page apply max-width like the other pages (Home, About, ...) --- src/components/pages/Results.tsx | 153 ++++++++++++++++--------------- 1 file changed, 78 insertions(+), 75 deletions(-) diff --git a/src/components/pages/Results.tsx b/src/components/pages/Results.tsx index dd90291..6e02dd9 100644 --- a/src/components/pages/Results.tsx +++ b/src/components/pages/Results.tsx @@ -21,6 +21,7 @@ import { import { useEffect, useState } from 'react' import { statePair } from '../../utils/types' import { Trans, useTranslation } from 'react-i18next' +import Wrapper from '../Util/Wrapper' const styles = StyleSheet.create({ div: { @@ -218,89 +219,91 @@ export default function Results(props: ResultsProps) { ) return ( -

-
{resultTable()}
+ +
+
{resultTable()}
- setIsResultSaved(true)} - /> + setIsResultSaved(true)} + /> -
-

{t('results.pointsCalcTitle')}

-

- - results.pointsCalcBody1 - - {t('results.pointsCalcUl1')} -

    -
  • - - results.pointsCalcItem1 - -
  • -
  • - - results.pointsCalcItem2 - -
  • -
  • - - results.pointsCalcItem3 - -
  • -
- {t('results.pointsCalcUl2')} -
    - {Object.entries(sectionInfo).map(([, info], index) => ( -
  • - {typeof info.coeff == 'number' - ? formatNumber(info.coeff) - : info.coeff.toFraction()} +
    +

    {t('results.pointsCalcTitle')}

    +

    + + results.pointsCalcBody1 + + {t('results.pointsCalcUl1')} +

      +
    • - results.pointsCalcItem4 + results.pointsCalcItem1
    • - ))} -
    - results.pointsCalcBody2 -

    -
    -

    {t('results.saveReminder')}

    -
+ {t('results.pointsCalcUl2')} +
    + {Object.entries(sectionInfo).map(([, info], index) => ( +
  • + {typeof info.coeff == 'number' + ? formatNumber(info.coeff) + : info.coeff.toFraction()} + + results.pointsCalcItem4 + +
  • + ))} +
+ results.pointsCalcBody2 +

+
+

{t('results.saveReminder')}

+
-
+ ) } From 74aabdad47fdc5e02dbae8d1f9494d87d7ab72d0 Mon Sep 17 00:00:00 2001 From: Lorenzo Corallo Date: Mon, 24 Apr 2023 14:15:13 +0200 Subject: [PATCH 13/26] chore(i18n): update it.json --- src/locales/it.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locales/it.json b/src/locales/it.json index fe043ec..04fdc50 100644 --- a/src/locales/it.json +++ b/src/locales/it.json @@ -5,7 +5,7 @@ "languageInfo": "", "startBtn": "Inizia il test", "dsaBtn": "Studente con DSA", - "dsaInfo": "Gli studenti con Disturbi Specifici dell'Apprendimento (DSA) che affrontano il TOL, possono usufruire di un tempo supplementare pari al 30%, previa segnalazione in fase di iscrizione al test. È inoltre richiesta una certificazione attestante la diagnosi di DSA. elezionando \"Studente con DSA\" verrà applicato il tempo bonus in questa simulazione." + "dsaInfo": "Gli studenti con Disturbi Specifici dell'Apprendimento (DSA) che affrontano il TOL possono usufruire di un tempo supplementare pari al 30%, previa segnalazione in fase di iscrizione al test. È inoltre richiesta una certificazione attestante la diagnosi di DSA. Selezionando \"Studente con DSA\" verrà applicato il tempo bonus in questa simulazione." }, "about": { "main": "Per poter essere ammessi alla scuola di Ingegneria del Politecnico di Milano (PoliMi), le aspiranti matricole devono superare il test di ammissione (TOL).
Tra le risorse che il PoliMi offre gratuitamente per prepararsi abbiamo: il Politest, una raccolta di esercizi commentati e risolti, la DOL, una demo online con un numero ridotto di domande, e due test di autovalutazione completi (pdf con domande, xls con risposte esatte).

Non avevamo dunque una simulazione TOL completa e basata sul web, ovvero nello stesso ambiente in cui le future matricole sosterranno il test di ammissione.
Ci siamo posti l'obiettivo di creare una simulazione TOL completa e gratuita, al fine di fornire alle aspiranti matricole un ambiente familiare dove esercitarsi, molto simile a quello che incontreranno al test di ammissione.
Il progetto è completamente gestito dagli studenti, dallo sviluppo dell'applicazione web alla creazione delle domande TOL. ", From 921d7b1b874761c7d890daf353c03326045b4117 Mon Sep 17 00:00:00 2001 From: Lorenzo Corallo Date: Mon, 24 Apr 2023 14:59:59 +0200 Subject: [PATCH 14/26] feat(i18n): add screenshots in English for Firefox instructions --- .../ExtendCorrection/ExtendedCorrection.tsx | 23 ++++++++++++++---- src/static/firefox_1.png | Bin src/static/firefox_2.png | Bin src/static/firefox_2_en.png | Bin 0 -> 24262 bytes src/static/firefox_3.png | Bin src/static/firefox_3_en.png | Bin 0 -> 26704 bytes 6 files changed, 18 insertions(+), 5 deletions(-) mode change 100755 => 100644 src/static/firefox_1.png mode change 100755 => 100644 src/static/firefox_2.png create mode 100644 src/static/firefox_2_en.png mode change 100755 => 100644 src/static/firefox_3.png create mode 100644 src/static/firefox_3_en.png diff --git a/src/components/ExtendCorrection/ExtendedCorrection.tsx b/src/components/ExtendCorrection/ExtendedCorrection.tsx index fcd4a74..4fef7ec 100644 --- a/src/components/ExtendCorrection/ExtendedCorrection.tsx +++ b/src/components/ExtendCorrection/ExtendedCorrection.tsx @@ -14,9 +14,12 @@ import DocumentHeader from './DocumentHeader' import firefoxImg1 from '../../static/firefox_1.png' import firefoxImg2 from '../../static/firefox_2.png' import firefoxImg3 from '../../static/firefox_3.png' +import firefoxImg2En from '../../static/firefox_2_en.png' +import firefoxImg3En from '../../static/firefox_3_en.png' import Question from '../Util/Question' import { Trans, useTranslation } from 'react-i18next' +const IMG_WIDTH = 320 const styles = StyleSheet.create({ collapsible: { display: 'flex', @@ -44,12 +47,16 @@ const styles = StyleSheet.create({ listStyleType: 'none' }, ol: { - paddingLeft: 20 + paddingLeft: 20, + maxWidth: IMG_WIDTH, + margin: '0 auto', + textAlign: 'left', + gap: 10 }, img: { marginTop: 5, marginBottom: 10, - maxWidth: 320, + maxWidth: IMG_WIDTH, width: '100%', height: 'auto', objectFit: 'cover' @@ -201,7 +208,7 @@ const PrintDocument = forwardRef( PrintDocument.displayName = 'Document' function FirefoxInstructions() { - const { t } = useTranslation() + const { t, i18n } = useTranslation() return (

{t('results.saveTitle')}

@@ -212,10 +219,16 @@ function FirefoxInstructions() {
  • {t('results.saveFirefoxLi2')}
  • - +
  • {t('results.saveFirefoxLi3')}
  • - +
    ) diff --git a/src/static/firefox_1.png b/src/static/firefox_1.png old mode 100755 new mode 100644 diff --git a/src/static/firefox_2.png b/src/static/firefox_2.png old mode 100755 new mode 100644 diff --git a/src/static/firefox_2_en.png b/src/static/firefox_2_en.png new file mode 100644 index 0000000000000000000000000000000000000000..8025ddccfd2b42f6b1fdca26345b6bf476a8b8e5 GIT binary patch literal 24262 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 UtL3wy?a}Wk$*IehNt*=yA5wr)F#rGn literal 0 HcmV?d00001 diff --git a/src/static/firefox_3.png b/src/static/firefox_3.png old mode 100755 new mode 100644 diff --git a/src/static/firefox_3_en.png b/src/static/firefox_3_en.png new file mode 100644 index 0000000000000000000000000000000000000000..2f3077c74562b728ae86c997bd957c113caedec4 GIT binary patch literal 26704 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≈$M@l^++|*&}I26Bpn3 zSo8De!lq#Q(*ikP<(*Z%Lbq%cmq%h>U@dSZCMM)kXw0S5;p`+`Jek?Gt|$ zqLTXibF@iZa=zt=+c(=mRvvgEegQ5|c_b4A@y=wE|FV-$t*v;kS!y3kTDknQ zW2`s8OnIOsvn$kaTuOg?QUMca|8Yb_?W7=o>_108(0On~@3S|iR8;dq)YetUR82~m zcBT+V=a3|=R_=v?v2~P4+^*RK&jTK7_sHs6#)UR1kB`OuxlB6nInW01Xf4t#_vUYheOFd#sp9*N%Zei z9A1@G3Hd}=F;*spsc1!(6SH0h>{v1ka{r*qN9}i>YrT3-y(^rC`R--5rk-<;RJbqF zqJ&^RpB3qWMlpnDD~uG2N0^k*GPpRO%r_aVabjE6XM@*+W$+%HeSG`R$;%<(G8iQc zZG@;GK2fH72pNtr*+=mk4|B(`65XUVo`n$i>}J47dOaMEjy9tsoA{1c#`hwOebL>F zUc+D0+E$kqGWbOwm_si!JT?)!aVLZFPu8WLnj#h%FNCe6g;f{Pa-s;mK0O{%>f7{O z<{OUv$Pg&kom~*dl(ymO{qQqhi?NZ#K})b@EFg35Ilczs)ZE@p?`HfGx-L~6ihM$w zp_0XV@&o4{c}Gc`)UpslwhZY#jvdCiPBxA3)snDpu2g%p(5SHpA+mt9B8*=13xrbE zI&UVT89!d~cRs|isOR>!z?tv&?Tp1{HY6isgaZeZ5V}(NI3G;tP;$`V0)*b4-M&*- zmu%4A!wC|3A#ya2S$JQTJHy2o^g*{rl+)!zAj;&rAK@koV>84rh3b-R+*Um1y~Tpb zPsB+>$?mzRs+u-2OTG|{#$F(Ge(RBXf}AR6=Z6aLXur=)Q@UQ)c}1kojhHW1+VRme zL#utpWEc2X!F#CrJLyTgb;Ha(aKM$h5=F&87G(z~>T6SXekH&_Gb-Gm8ZJKSM>;)=Ve z^V5Q?%?RorIQ0X0Xq)#1BJ+4{anJk&b0*}}r$DF3SdlVNmMKNKLKCPc$S6PsrHH!% zZ(__fgH{8#i)IQy;()aP!OrJZswNGRg8W+47g*pZwhq4d6NRFrQsKo zVeyg^lPo11R<}Q*nz$r8q4;;=OfQ4}BSzas&O2gDxa?Sh{W;sjGV9aqtcpwV`snF& zldc@mlr5y3=Zp@;DkFW-K}K_LQ%(S?5kw)IB*i57FKdOcq__cHm6ZsEyl&W1a!n(i zQF3Z}3Oe_M8_b3Yd1Bb+|B83;8C~J=t0OFQ@0jH~wC)+mB0r6=YJ;DGKRu^(*b59J z#Gp7%wy!?4ipBeb=9sE#e977w;#4Xl)hL+7_m|(a66>Q&8&VCi!Kzs7eYf6Y-_Vn`SPVeIM{XtLfum78v`DiCEt9 z>V1xMEn~MlN_CisG&2pZI9~X=sYw?W8mg^xMz|}PP0)ZF79R>tYo#?Vy|Ha5oUH_nlpLM+J$+#LRSBe{BC3`c+CDX(k4z!UWI~Ls(!j|or8;`+B76AwfB(H zZSo8viC#U5{lur3$sR*T!hKl~XQU0&{l{Dx@2UPbf-h)r<3&4b+RKU|z*DV$wS5x9 zKUJ~POUmu*aJ%Q>+@BsO-yeuEn}(5k*oGkapL0xVp!j1}Jj=cnKml@F5)Rr3^6XaY zS!2cT%mk@0h~K*@5W$;2Dm|CUW3=_xUZd|+qbTs`DpTR#pL1oLQ{PQffs_xfToZzW z)7pPlWh{s%fK&p*6Pi$!BfaqPHGH=>CQ|W)7P=0G#4#%Pgx_-Gkg{xgJrb$D<5d&0{1}@UoAP0m{h`Z^3YS&E zU^Pqp=3r&g8z(nehhF61NX>M3MFO0wRU?>Lz1Oo+T@9;l`AO5zO>rS8;3V!00%e`Q z6cjPZJr81<_PbFs8(3a)Ur2D$0=#qAER)XT&n1V|*?Ye9s5&xQV$wBjpF;jFxxk9s zI7`zx7%Xl%8h5nS!Jqzd|I$wH@0|1S$Z)R?w&)wAL%s#%yB z<_AzBL0^x4q66qgw!jG6y5&5OxaA&Kk%GvKgVF4+GXMus$sFwnSf;&(Sm+1sYv&Ek zl<7?W9HNZ9t+dIgv^eJS4xP4%Q6&gMGy*U417y9)uGDa^JKtX$y)(q{^Tq`Dwdoat z7CZxy>|-dZ7*ex`(DHL&KzzM(pEm1@mnd@9m_K|h7kE#HpwEfWbOZHM6CRn6QZLdx zRo4cJ0Wd5(nXl^U!3FmO3Q^opD8yf(Tou#nL6xjP59{|@T|ukhjxt&CPHW0guZ`2|+fj)r%z+}%S-N5T;2Rln zM?nZ)wpQ&#WSv__?S3BeZqd)to*6!~qZAPgY@ma}A7>eBd6K2T_66w^RGI0QfYgQLT@8 z)LnNot-a(>y?8n^?_I2Dox(BM78B*o}pcm_n3C6xnjGd+I23x08s&nN1cK&#HlQZK-)4;_6V+cOP^tIpoDuHzgt`bn_qa$yd>7s@@T(3%f?Xq{2B*8Rl>XiPy6 zXdDmAKPw)3jq3NLu{Eb3nM1ZX{M(N;yA?ejH3leGDqjjXo9Z#6u}Okz3)>mjHi4Q3 zUF1GAMbHM3$DNccD5l&fAKyyyQJSC4D2i>$6^gxFYbwi`#oiE>H0PakbzB#7JernK z91jPi35Vj9j4>z@w_b`j+nfm`bE=5FxOfEq!Po+=1qV!YRk!*$J%AI|x4GO1*cDrJmBgliXO@sYQ_dfmvd&{~SLS&j zn;sQI{~$24b|@wlS5!FK*p_qCL1pOkSLi|32?Fu$)}9ICJNuxC_8zky|H1H{4-!!L zdYnZmc-q8z6JU&=w;Z%qNGO-k>EB4UPG4jLxv{2*Hb#(?cI!U!+bh=PO^`puIeLpF;-K`%S|^Lz(v+y zKcRdss{Mxz3P^Q)=JfL9Qe@nV$A` zGHc}dvSiRwD1!f;rs+Gn6o=JxOK!L$8kio#RrznKx!OZUChh=i6UAm?iV%_!L`)1t zoR)fiM%^g;qR}MAA>10m&)b9~v{BT@%JWsmu8^d;&dWG#i!h{>XU_?iC zRt8qya*?%*f1HxEruZMFl4`5(4Wl9U(tOcYTl(cL z{I52ct^RJp_zGk!hmrIpS?jm~jPLh!@G&?0y}iEo%J}BD|1e9Xw(b6`^WAvhvkk8B zdH!tKY+^M?z%9n@5)kTjib_AxpCuL;%wiv4UO`sf_4+b8?tlNT>IsGgxqSP4WjB;q z@VX2e`KliR0%7=GUf?vFAki%i_2gET)Z#|VRqd5MEoXGRPqMiYL1r*=$ffDYyHb(; z4=zNMr9e&GIs6+n>bzzWWO+(Nld zEeh~tvnnJCIr0d%ID+8#U!xA_v^iav5yj{^mm*AW-7=)qlXhNRu1<5W%%f&>>*Pp0 zUlSunWuus$hpq-cI8uC`P8>_7HLdW&efidLbg(3QD{9H8c)9#w? z9tr28NP<_UYB(>-Q|N!-AmkdHYpJAzYn{V&T?mfC2@JJ!bt%A1T#(>8n`tH(k6bLi zqL}ve@w3Yi?ve~;UtuD1Uy@q9px--WnH)i4@R{F0P4(|~oPfd{K-3uw?J|xL-2%WA z^ze)8dA~%TB&ZIki*vnO@iO*`as>fSWf;)`_L~-0dmNs6&V)avx?&pM5ihY{dxlhc z+RwMtyKlSS_Aj1rM4fkt zhzPIxGc#O{2ucn>eK`auYSJYl9Qd%4{`70Pi7HCjq4h+q@%#(YbdT-1c(WRngJx?~ zh5sgDp0gKY8aZb9&MxAh&{^B;7TAKGU@&w*Q{{92X&z<3!`j=Cf>KO=_rRn#cgqjd zk9X!pQeXzcbQP2JKY!;1wzxstX?VJ}qbv?_JGsX|Gij3}adBPGni{+iL3Hv0pn<_R zgpMI@w7rO@Q{OH#wqCZfGbN#cS4ooR53+5qkK`r1+TMpA6%}M=(=63xGc!iF3P>y% z$1o_=wKd+D#nJ^i#%4*j7jGga4n>W03D~<7lb~UT!1<2l&Y2yrjhr0Pjb*cd@Eq6`{3~DSg8(&}t)fk#3 z$ChNt)~%aesf~UQ3U+5EwOP0PmNI^o3DlEDnkf`~ikbAXvDbo8naWwb{g5ZPUXRFT z0y&`<0AI3TzG*+R0l#vJ85@2u8!Ehmf03s5rv`UAmNSdz z0~#3!x+8bMmRQZ=P;T#%$+B7V5JQCJfEy4{o?|v<##Mk<9S{8yNp7mFUNsk}Ua7Gm z-!WCvk~Q>0VB2TbH1QhEQ9QTT5Y@kl+ogG$4?^OoXb=F1zGm)jI&RWARo?H8p8eHQ zCnwi5Yh=_n^fSR#U1RuQQ~o*D3z{#Y)KWk#Sbrrvx$jjj%9-*nq23taa(GT^qFk6> zcw=Z=_R%NbRSZXH`G8InzxpscK1kmE(pfN6E&5~og20`{AOSssJ}LsiIht*A4qiE$ z`m&?osu3zX_bX&XxdvG~gO$=-8t?i!eyY^3!dnub89mf1H{BZSno2oT`=`6O4+%*q z8kJ$lUtZSO@`_A;{hONsOXDppM3}@h+^EID#UtoKXVIlw&z& zwvi282)X;T6@^Y`x4JhvSQ7kYL%FML$hfbq1*u;C*w!@3Itov5IN4V;5?YG<0HA z3{`d+q>m#}uFGH@qq##YmaxX<5H#N~QOj?!rFTP887wEckDxRkHCF(RZb(gtg^YUD zvLEt8RD>+o#}}364>sqOgt4|fH!Leug7tHX%&*Vk2phW7-8|2X^LZnMMnr(gOEGu# z2o+n|3mYBp6HbnKmdPJLT}Zk7=LOe`oVUW7kr&bvHPd1qLjo`amIxFVO{imGYM4jt zbo81<>60L!1%x%R(v07$O9Ot>hDJOBzh(&`5XVHUK@A`Q@rkk-ZUs}2uEb-#iTJ%2 zLpT#>vAkQ%=x6ASKIEEpd8a_7-lQbCPpGYx|hu{^H>fMxvC=3iO?Z{bo zRwh4H*E-l+2flUEbPjbM-QDM|6S_nSl;cvDJJek}lgr6~)4r|P*hSbcbG^Pl{?3A~ z5LUCv?&@+uEoq339z99(^M*PtjHRo@WrXZ2YZx1IeP5&o;hbj!;a0}kxt+)O;r7Dg z4?pVpXI%fX`Gpp!k-wzBRK={0fmvGGaH!EvaY4zFFsCfP+zO$}`s+-M83zeN?4<-( zfuC9cP)Sf&V*>?}SpJcjkEnqA&ZbmYxDFjznhc<;>kZ+UH>qLJ@~_?03a7a#$S4vo zP>jwI?8=Z2;yAO7_DFK?J`+~_3;+y|lJ-tk)cmMp#jx}LX#4p*ww^G~(+KBC@Y{(J z#T?(Czklz&8Vony>`_N6o=obnMby|tNnFMQ5;xMKMjvDU-ZYoC4vareH5{DD>&pP> zbmKL`qGt!|ZXEZse?_SN+ou%fW$c=!tj_(QSvrRfJ2A8W?zvGp+x$t$2U zN7#RwZBZhR@EeG=qfcVdu7!~-7>X^mcUxxcUE|U|hA&*{t++9-+JI$dXLE8U(l*2@ z7WbR+WJc&=gJ63XtmK{Qi8|s|lo-MJ#VHY5yjj!SU|0AqjoazZ^uZ^+gNZc*_(*pd zBv_G&1L1_NJt?)gUMutH_hxd==|*OpHjpx@qMn*^h2$*(O&TVZjftQEJed8snf3eh zEC=@gfi!03{J~lb>;d4+U5whHA@b=YKTJb*robSXZw zd@OUs_>r*g1QW!4$wEIefBZRNo;Avpb!#+fnN(d4OECV^NF>@eRq#)!Yl1B+*Z=&K zMrwhBHMGF}0b2b3Q=$hHZFMRU#~=&S^nU^PDL#OL&mMTH`2U)uX$H}V4$<~0(#d0D z{>LQ$398@&3|ic6RWM`0|Jm}tCh2?@Jb=Bu{c*IbdFKB#{HN3*W(4rV1D85yY2-l9 z{|YL?1Z`~glS9l4{+}QN0@!n>rVXh5e^m|BK2k7g?;!#3|C36zLo$P7nU5T}{C_<~ zVw5SG#DV{J29@|jx^QKx{)P)~i$9#ZlEJ3#T9*3`YcX?-%vaua^Wg(+ZHb+H3%=)f z^|!gtrEBh!dQTjafqPV|&DXky{QHhwI(KJP+KOIb)kcmriZIy8cA9x-HA6>H%avoJMa?+bQ2Yz|E-gUW zX4)%J9?y_ObwBsozo(AAe1`Wo+v3A-p0=sS)nkFWUCX~Kx<+5FEE!cQT%6);cQb~! zkvHZ%{puaEZAxSRB7;p$ZL2tIz1Ge(-nva?*WgV(V!_trj2Dd*^ojg8=eEipO?wsC zZSB!CNhZ)sC$q@Hb#%a+O_g@NL9wbbNIs+pN|G#?F+G@w;bGZ>O3ui{RgvO4bWnBT zxv9fX8-+Z^xTx&9cnW4demb|BtU`3qMcSa$<*G_PiVhn`Qtev7XS1i3<)vsH>HIRh zg>_P5_O2^25DP^cDB!EM;a{QZ2t(8)0aEB)-Forq2|?560F8GL3sr z8V1WuBQFp>iOf*o4}C^3XY=&GMLi2M-Sv)w^~r*_K$E_Huf?)dUw&>!2r*RuO7ZOq z6G37L=1spOv$F#1*U+k2oJ%I#_)#ZM+#c`J!jB#rb}T~*)dF^f?&{^2hcxnXw~SQv zoLltwOTQm`6eXi&MJhBFi?ryyf6|@@Mro%;vSZ6 zO%>Y@_v{5eF&P$tXmf^UdN3VaY<}^ipe~(}+YC*pe$%@3;kH$9cFbdRveT55XY6b| z>72W^I$E2%VYqADxbi$y+=5)oJejLmHk^CuFG*u^9lBmsLgwf7+gb{+Wq`nlf6}*; zg#!_fO(*&~L&p^@W7rx%R5l~LhBCcH3<2(^kI@P}BJ{Ems1Xk2#HrV=3_A#&E)F(B zjrO0~`I+G`h8lyn7ZrcK-Jg67O{$m*ntySe`zU< z{JPGT-ofD;xrfzE9`+!yMEd%2^ed}>6T49&z!7Yj#gz3Z+hpDQaU4@aBlFHW+AsGY zk!0qs$on(mU3muIMxsZ^98N-sx6X-D=T)G#(a^rszKap(@%MC|0h&(!D@jHiT~K#* zjq4B`mG#zJ-6BtKZb|+SjM+lr8vEvzdH`TJv%RgP~uR zwQVK8(gK^X$j_7D#2e({obfXUrf7$^QP+gSvPpQHkA)q-sMTCtC@EQ?QF-W}7p$H2SAg>C7Jp z+vJ<2^Jg*aY&<*w<3P9i5n^2SkIbVChX1pF<)hN5S(?9%cf9;l6KpDJ@h;7#nu`5m zhARQPrp(4cD*Il`Qa#CGT;q>a7R7KZ%#pi-#p5gyI6gWE=`wK9pZcV*K+Hc&=3ilq z&gcybkF;^~fL#$?YDi4~C%zabf#+7^VL)&x_jwXA!Vfl}gV`z7f$fXG(JM+-Gl1ia za<2T>E#Euf?X+I)`g>N{1}kMP0HCh!e&A8fuw9Udc=xFcMxNZ(PnOI5yEujSPLDm4 zHm#l(4Zzjby2>B6yDZu(+q3vpQ>kT$ZKAr);y|gCy|I$JM02c)5As>3LeDb#CnpgJ zNraDnY}1^T6^!mzpyU0E1uE)4DwWGN^1H0;>PYoBT|SC) zrdCEu7F+M|hZqoYb^)G#L*G@pq2wdq0YB(sf(!iaW4R@RFFJf~zSY*vWqeBAyE8Go z$b3^b0yKeSkXlIK*|tt9?@k>=>Um7Zi3t{_R!_2|d}>-+mK}8IOv3bn0)zekjz>I$CL8=0kFEUlB!dlltHM%lpbrGF zK=3$VMHxLn+3U+wL@16R;22iN8lNM%bH#l#H!bMfd!_@IygAyNBf2|p zCE!srYQpq={kxJGpOagA?Kh-fpWk}11{7%Re5>h)LYsbo>#P0A^Cn@-ba~aYUxvVa zWeRqe)MQqOdvHk4Nu%q|2-N*Rqp`&2?)2mgr~_ajT8e(hVwUjVlFx=mSo|J1-Lr%x zXoX2%FpI(R55|{3I6(%c!bcJ)w7y+amSL2k^PAM*j82@`*0dCjfd;dBMt%sN$|T(! zTFPZCvoXz>@#@0rqu5__54Q{_FIfGh+n?F>zT$d(M1(xu8}IyvL3~>N%Kj~V z)y@W~cIMNrsEnx2T`=5jgllL1DX{;VtGO~Y8Mr*y3R1t5DjWIBGd1FLiQ&xQu%~-U zqWqX6Pddp>do){`Fx&6{JQ;W`*2x^M__?XCAg<+)(-d0TW{h(G8*Kgugp_>mD64bX z$b(f{k^aS)c7I>A`l_X+HEw%E;NuFNkwF!~H=XhZV}uVn{d~9XUE@t%MPuaoGWkOMSJ^V$SR09HDQ;MD?+u@==V;Qxf{g zPlxTQ+r{}OuIV~ozY4r$Z;l8jOnB1`K>3ib^|dHr?(@VFy`^8I_zj7{GP^(LP~^bzCqCb01q77?UI% z#$JoS6}|7OP$9yUR6xKA{)o(>R0Nm2=xtUoqL-ouao+J}KTNJ4Ye&Nxp7f`Y1zN%!;X|pcEb5q7LV` zW?P!mlfh+9;RS&YF?PpPea+@~G6Jx2k9s=zbMjr^)fh3D?iqSs@1?WqZj#C~%YU9V zE}JjMxWSfxfZ$)+bNLy1{4A?-DQ+0-Tj?1}qHhn3+A3)$9Eq>cs~*&ld zQOhm=bU0U3RW>M92W@%30Te}Z*E6+@F*P-;w>ISh@s_1O(O2|+Sm2eKXw+2adGjjx zGi8SU;f`@mQbJ;LX+}v%llj}+s%ESHX^wmfBe*bL@Z*0>W5%gyB>@I)X?6A7@yq$J z#aio#|A?N#ulHN*05EDa!%1{XS%u6w$-}YHoVt%`10yzoj_r7$CYdF{_m^B6Pv?Ezvrb6A1P`dH$cC&N?WnH{9cN zcPtU_GJ6DQg~A^a@5r4 zn$uIGYRpUFPLaZ!WQ>l*zsS-U5}r_h?vojA(VF!?okn9JH5~y8@tb z)Tn^4>HGMDF)@b*Ej|L($IxijPU=hTy*b^t)~Z>J3T3_b?z z3Aa)@|RUK=zbE5^X0(hSw zw~Nwk!{}XG1zWGT%lWXVA$j6%g-af&aB0L^g3RKB8O&U+)+Y4@i>yxnY>DZcwU}4< zAYCjxPuqXGPu%MZ$kub$>GspZ*{2HUeef)~C^Yoe;YAE#{jt+R^P4kQ-%XGTY)bWKZe!lHvQ4??+o_=1wacPQ|6VP+E|UJ??02g(m{L*c{DB=442C z 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 Date: Mon, 24 Apr 2023 17:47:23 +0200 Subject: [PATCH 15/26] fix(RecapBar): replace href (causing page reload) with css cursor:pointer --- src/components/QuestionsForm/RecapBar.tsx | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/components/QuestionsForm/RecapBar.tsx b/src/components/QuestionsForm/RecapBar.tsx index f5fa370..385cd13 100644 --- a/src/components/QuestionsForm/RecapBar.tsx +++ b/src/components/QuestionsForm/RecapBar.tsx @@ -50,11 +50,12 @@ interface RecapBarProps { export default function RecapBar(props: RecapBarProps) { return (
    ) } From e745d5a4591c8a15e9e80c35c35e5b6b9778b844 Mon Sep 17 00:00:00 2001 From: Lorenzo Corallo Date: Mon, 24 Apr 2023 20:48:34 +0200 Subject: [PATCH 16/26] fix(i18n): crop src/static/firefox_3_en.png hide italian words from the share menu --- src/static/firefox_3_en.png | Bin 26704 -> 15151 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/static/firefox_3_en.png b/src/static/firefox_3_en.png index 2f3077c74562b728ae86c997bd957c113caedec4..fa30b20a532ff9d0a35bb7c4eaa0833f867e9900 100644 GIT binary patch literal 15151 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

    2bdolQ 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 literal 26704 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≈$M@l^++|*&}I26Bpn3 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 z zx~jIT1MNYdH|Lap=8wrwF1#+zH-y&Ib6Ce3~Yv}U(YdB9ZKemB>I-AzA!$g21+Vu4= zKh=93a&VG?QMM)-G(Omrql)cK;*i#&3Ws3&hfj$YbdBXX?zLri3#hj++;N-F(6Y@4 z=dnWHtLSzZLFl&1$^{h731PCkp|QjnRkcg2(A#4A4vIOYZloHhbLc-&j@1Ovq^D42 z-F(;g&}Ilu1t_~m3s5e6n%GZ7J;ag@}*Q`%RZ`FJVcF`zamst-vQx!4NKCfbtKIcSdiemkFq*=s;!(& znYkjP)W%N6D=ol~LwqE<1gARfQxd6Dh~pa>pH%XL4Cw$r)X?@XV$QW=&*p49)p}D$ ztU7NXnKQz~XJKL|!aId~&;NYJ?k=N@n}RyYseg5~J)*pc?ekKJzEP-7pqt>!N~l*6 z)*=v7pwO5KYa>ZgN2eMwABu@U{kL6$SpUn8Vh)wWzhGq1!KHd&+cA=7F&C3ma`Y#f z=h|#hz+p9&rTRQENpqVlMX1MwqEur!oRQFawZ1mRN9n6ln{)G(;_6xTnL2B zut3Rm>+Z6aZfzfRFD75sA~5V~h(;bYDn|){e{yrivH@B|;hpzC_#dpN0}^t0&nL*z zKqh1yS~F6+ft`!@Mj5>g1O(3dw>Ybkn<4ch{(DkfyKN(EgJD@@o5OiF)dFhVz~P2n zxX4P$H&W8P=H0awMC>ov^e?p7QtHUy(CdhAGM);Jr&dq#Z+2VKpVGWBshwSOZuOX? ztJ|3uzHWD2T6FRKxEZ4r*>*lVY^6Tmau?>dlI@{I^7NtSQQty(C+dI`D9UVhZ~e<#OI#AXHHJoYvQwae7E7uLsN zmi6$76>4S6qWx9TonmO6Bov$j;(QPLpl{FRh!F~I2VoklRn-W+eDV{?c_u0I)U=0! zxYGKER^Tvn<3g%Bv|YC8P<4KN;98!YlI!U8PW6ZM@?`%y7qvygqr2jH28pal_TqZi z`>`KCbfz~b7y~6S(&T!X72F1>!}4F8H+CBvtnS!FfL)awg_$!%o=LKONv8VC2DbWB zlDL9Oa5N8VMxrJ;pC%6UVc=SweXHe*xV^0BuF7CzjqI>v_HVm!!o?Xj!Xl@8Q**q` zv#~7%gR&pSyoE+nocpeMEsc~I-12+hm|mdCq)`idQO#_mo4M59BtAMTL>vhn3lKF# zPituh>CSIxyM16)?5m%y3CiuJVFmkTey6_!vnGOC%7>_?vLWk#zI9{MWFN$=p?0pU zmLXsQRyd`Wq~LDL!KdQq{31Noa4-w?WJj#J;2CMJVv$Q}zH&)ub7kXd45TwSxjT+d zxLZSPfePY#EF*bZsuh6bcxeUF^T{@H^7sq#Okc&OF(x}-aCLQDDugU}$>4iz4tZn4 zP-coq;StGkP>0)!n%TAd<*7}c*AR@al)p_=jV?(=)T#!rrO+}1Z1IlCac}(RJ}I^f zZ^4JJK%###{nyXxFNN zzx9!C9KN8VDaw@$l~+*VV%3jP<(t-ENkN?hAD>ZF#aZ#vZ~~y+E1qH<46$LBIiI$Y zPQKfoYTqrL#ryX3;qs>oIx|^RH!vgQUI1j9*Ms(h5%47wla&VjP z%wv|(+eh7h`;9%@52OuCn_(!w#PoKC?TvW+$rK_yc78)iZxgjESvrQk2AiBs1}2F8 z{24()w;z*OgTgRgB>b@0SYa}1_RO$jkAK?HR>f0T{by=j;%#t)Crd_wS}R zR=?RO$r|U{Yobh2O~QBJBApE!JfxiR`_?yB%8TLRiE7Z>lOB`CKZA;iokpnVF1Hs$ z>E@&nSgIAxtZL6M;26V`V;@67M%sdHb;O>_DCTlg%#PC=@!MU?GtpgD=)P{Z&}K|A z0EzQmLtR{42X|iEVC!o#2uL+;>c6+){3fQwG8s60bpn_bHyEqy34VTUJrnGWoPIkf zAv8W4ZKgqw6LiGR+|oU~1y@Jge58mLAJJA; z2A^RJhhz!c#S;clF(Pu*#rUpCV~Gu;(sfMj?K5~H?k<*=sJ5gC``4v2l!Z3)bYc=jaR4Emtc{AEGBJ_Oel$9X-O8J z7f?XTa73!`NjUiAgmNm=IY2R!X|a9RDqpqRbz`{s1CNe*^op3_h|p@6{N!aDky9V!oACa;ps}Y5}r+n0>MJB7;bK!; zhE0~KgkI419NY#^E|vm2epbNH>}k>n-PD`XY_JO&+lbzz_$>Mcio4C~Sj^VhGd+B~ zJDW0QDLmB{Zv<4&>w&7=iwGJ2{Af%VJJ{hx$MaKFBaB-N2H3SBuTp!P55M^md}gXK z2~F)l*th*%Y+-Z-H$_{jPBJ2U(>4FXvz7i**p%IJq8$`7Hdi&!iD(c_myZVUrDUR2^(KA=aXNz z`PZi5(on`oyP3EZ9Cncr;;Uiz_BXRYxoRG?)eYdnwnK+>G8@82LDF3Epb|<=@h+>> z8qp-|ewFjWUy^H0rZ(_22WN|u=4ab|81evG?JKs&m%`TDiF;*^)TxMvOuwN(nzs6Nie911ePB z0DwENf3YYxT!M=|(jlc~w4$O9`j4SUCkyor&t)3<0b(PwSP4AXvLT?I(;4cwg(+o>*;k zjHEf|vyRpelgewW3WDDn|MfasCnUsZpxOJOG02_PXkJv&h;bzoP0dUEBilX3NUjkI zd3wAwz?rv;blN~ZSt5v%!gZrxMObznZKMaznwVHOvwT-cHAP`yQV%gU zL+(2bT6yiZy>|;(f}GNvTYrJ!tE&`mguX{jHK~z@XPh3W`WNS2Bu+;BCcy%w3C5rz zn&g#XDUjf##`PpMDDOD5gC|FCKIx$S22SWqbQKsZaeYPy8=4G1NOTH%*u}oL@De#TGP^=O5jiH}po?tX5OPahQ*3NSX>)pY0)dws zGE@|DXI-JVO*@LE?RZU(J~-*}v!UlLd2g+$GBJknqO2o>{2mzPYPjw$O}eBb8Qi0I zSi(3f#X(Fdl(jxo6sY%oS7=WpIwsPjBzZchQ~E?5P^{NTm};Qu_ZJs5Su9EXlg?2u zR?Cf@$$Q!Y@ao0%f@vdFleXV-99lTQ_D-EmeNv3GOY-)xdstABiUpONe%chTsBY^OKX%;@1RX; zRO?#Wu^I9*@RT(VqL$NWS2LQy^2OS)S;SgU1S~Wwq;eNySz(+3l4pAU9wswhu3su; zx~qz7xa{$-tek!{`!XN@$;SIoa}F1S3O19`hGi}_eM$i?;aLSU;k0!LFP@<^S)gg@ z(CBGmn7YjaK1e}AA|L}h_d)KHiirn_3AON~%orw{QKoJer~?d`Ncx|cN2U$=7uG475IeJ+GY zzKbVD#UdWU+TVytpIQ!;0?X@`xr-gQcuxkA9I8|Wu1Po1=y1%c=ZjB$VKQJ*?xovUBxEvi!V9E<~Vg`io4jj9VZ9vgohWLIv(3(s{i z`Aq^sD#mj2z80!`VH9_6>CBAPmEr@cMvZc=)${DgvhhY^V%S9G5!iP@LAW%Qe0Y9g z#+KxNnq<$!KL`A@i4qyFGRxorxpTs1AzE(yRXuyN%NOmp$MkxiGMX08&)t);8%2g& zTGu|Yy^fwxdg{2Bjnr}CQ~~yT#9}Nio6agNSq}WxEXp{MxuA5sK{?KxcUq;HG$pp! zXqIc{$08Xlu?wML=zv7gZ4J27n5YG`OLgqGQPYG|VM@kw=Q{eQw@^KTsf`dJu1rrt|i9^NefRK%bw z9*BYvVkP+PwZOl|2o0|w6MZkieetk6awUe9+T-YCZyy>)H%5p8`ATy#8W#Vma%(4X zu#D{xUW2Ump*d1mh5OpN!7`dtFxhT0p1sGZ!`1xodSxxiiT1B>-71-l@ z!i|V>#%<&wy?8pg^6xh*V0i;{TFg(9A%T})f0*|uL$1=?O6+Y~$5T`S;S z{CljG_J5-5o$EG`k)HyCtl!M83n(CitCE~MAPF@m3K?EJ_)OlWw0dC&z8Q^85Pc7w zG-OI@7IcC8crR0XIoI5h65W(73DvwYH61ChYF}{^gB0?*TXnajC~`cbB>0zzNW#z% zBATiXwbOUAo^!AL-{ITVwYg(y>EqxGJ>I}%kC)<)3kH#A*w)d{r#6_aeHB2gx4ypM zH|o!3oKn!ar)V-ljPZDlt$;$d4@4iaY*rhp&ZfIkxL#hPwWA8`tSLJ7o8=6%B3v`P zGqc-O8m7OpTw2+Uj^l_GbBuH$t3D!dI`PtJ!RDGmB_orz?nf&^zsD%_~ zM&JNG_Tft#hb-ZhjwT?~3FS7`uY>u)mS@ye4(bpN{1J*lB6D%7E-!d-I3~M5W-Xss z(cE}gzGnP>_Pk$L?Ob_hDy7}nc~ak9`zfJxat%kf61vHuH zaL-8mDC@nhqoj2PZr1&?^vOSMt;b-F-`4x{tq?Fsm;Xw8pfs8Ehd_7>ncIS; zpn1UW2>*kCS-5(0r9JTc7re3YDL3-TO*3GfW~(!@=9K3P3>M( z0a~j#w}|t1yGqd_K9?(z*Se7z!pW@LsPi&o_g_J?!?>iRLJjYjD%V8_z)z)6HnHXv zPV2fq?&`77qJz#`K$Y8tdFZ&2qdze+N7cwT%?_AnP0Qz8+Vjl8)LOZjXA)$Xl#nE- zy(_7O!@5MnYv?k$L4ThCRTp|fO%JNuV1PQ$F{J3B###=iKi!4N`?LHm>ol*ZT|TYe zk4}jKdF^YAKU}8Xhjzb9Chd=@oDass4_P6V@=V7*NsnB*-4x5M?|Z5rIlX$G<4qGj44MbI+EZ;8%_`O(Yl+s}U1$Txk(e?1ZFfBIg zxG#Wn%&aV}`Jj#~jF`ISrFT|2w!8r)P<2b6fEyww_Xc*iMrWlsO~7Vm&DtNd6gIZ&kq2W0mh0`S3GS;QJq+CefNm zES9Ykf3k|kAkc1wTA7V0HF$~z9yB?*UEU9B!Jk=GI^W*RaN$PS6u*5WD5x=V;IPMm zf3v^?ibNm+;ZzA#6l~X?N4qbF3-mJLkl-m<2H`2Uhq9~2_&^l!LRdnmH-ZaK zYO69y(6GcH#SDA0zf2Q$#p6YI%F8PG26}oZl)X($E@#XnRO{V{Sdo1+ZzEZkB>z%MHhUF}O8`K5>Ttw=OISI}g6Y)BlA*v>>0x8OZ5^_| zd2n8X6`M)%wmGZa;2|wk_J>JGgS4C3Kj+Z0utX;szOJn_k@G8+8@qZKN+xcAl?uih zbR)HfpY76p#q)4z)~}nC809{T;eMJAXwg_2=Vsj-^bN+P13;n8PiUJyOPH z$ls+D8DPJ4Ua#-BiHwT}lzZE*Fp<}Z|lgz2*W0D!P-O4{W57b4l)7%1N_%`x%~`q{5VYI+~y(9|?z#kth@ zXp2}}-(O|@_1HS8&4;||aLui7Ea0v+*?Hw^N2RN@QQ-LwN?py!qbjf&a^1`-nOjM&|dzY9MNpvQvaBg~dKsHi!VUVj&!t~<^Xf~ylc z2KOGv7UK` zvNGRSjQFsCr1zD3ls<_2kpY%vHZ(|N7e(zHxfu117WI_oiuS;ggre}dc(q`EQqj59 z0b;+I+LSGq=;9oLx`gcWp1HTOeSRp4jt8R#_NLyB5Dg8-`tch9V|#W#P$yL93Wnca zd;4|ay@}}Xi0X+Az@)@bVADUCpY~hBQMF0h854RBH(2g@>^COesQOgmNfRv@Q)??& z^vG*0QEUuU!+{F;Q$qHUj_VX_b|PjXGU^Xm0;%!@oQfT>73FZ+k#G2O-}D*R!+A-# zMhqY1V_@f;3M_tcp#LzgbQUrz0}~u)kT~Y!Ndi?2_~XOvEZA?bInq)mXJF#Ggq+~4 z8bKOW6(b=Xj>**cPV)fG|4_P0Mdpki_<{iEKKpciqwD7)9~7H`Svmx-vmZeqR=ci$ zYvRY4*e7oFg=jv*O^-M20xmB-GWxH3s zMVxb9odpe>(~x7g!)FvNjH1I5WM$^`J`cMJSB1m9^g{Q(KK(z|%+K=h5Z3=yFyKsR zXM0p}K#%|hkSRPyY?R?o-qdsNc38`0;RKGBYcVe}{{N34m;C~B=lE)7PF?PYtG+Ai zFAg@6;QxW%Fgn)JB}twiLm70}Gyc~I#!K6!`=g$f;l=|$Zu=a~X67%~F0OM@vqHzJ zZ+={nlvLoS4`q`_ysIK(Su%=hjkaX2sZ1FwbY)a90|ylczuPJv)^fkcg++L_ z?WIrX=Ka&BOKGTduQRRi%HegU7%t>7q95zP-vwM7K^)}jcr`LU*sRJfGh7gVh?`8eT56|2mWpWoHQ1zoy$B{!VZDtEZ0l zq4dEJ=8(`g^l6}vaPP#9gS26@>x|9}pMMVUKAYc`iCWV!|8oWn<*YxPj*&Y?ZT6NX zFbdBJghBru2AHE$y?F8_zGmiK@ynnt!dEBUO9tDkCy$t9g8cH9TsPtbGxAzNge9Q3x=nHbz@D{T z?2=1^m4UrdPM+{i&L}7A;Vfo#6x$;YOCN+*sYT*;x99yboUXVIMKk{6#u7EKXc`j= zyx;rQ7v7X6@}Zck;;3A&kw+lQwWa(C+2Ci?;u4j@Xs2&!+e|wnNg!e*-xqaNi!*Y* z{xm)7Fb@o8FY28I+3EqIjCy>eR?g%{=7Vh9)gVMj{pa@8oar=-iOUAm69VwQ@K^q= zoi7o>aNJe+ zvz{1v6A2A&e=SaP&rJ5rRI(?ms;2!a(22VdfH?gWI$smR*XebkeJkdJ=TwJCA`7uk z2gA<5{%+L`%;}8f|5TMT-rw&dxtb)^v@f2|28uEhWG+fM^0Eifdd?v2+51~1DJS`? zjVhf8H0pfe=HniFlbo}eDHQB47xZGsQ{)=9eZn~z8XLCg-tPhha#U)O$LB>bvb)@h z;_En$dH8AQcv`T(u*Tl01`mVo*WzjoLd(0{tK4F)65%5IG1!jH%{LwR)FYD1uv2$)_D<7jK)p>fQg3>_BNSY%SQ+ zwEx>#|GNr%!3yiL-^=p&_RRTz( Date: Tue, 25 Apr 2023 12:48:48 +0200 Subject: [PATCH 17/26] style(Button): add cursor pointer --- src/components/Util/Button.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/Util/Button.tsx b/src/components/Util/Button.tsx index 1b9deb3..1ae8083 100644 --- a/src/components/Util/Button.tsx +++ b/src/components/Util/Button.tsx @@ -5,7 +5,8 @@ const styles = StyleSheet.create({ display: 'flex', fontFamily: ' Arial', fontSize: '9.5pt', - alignItems: 'center' + alignItems: 'center', + cursor: 'pointer' }, p: { display: 'inline-block', From ae65ced2c404d0b862aabb4b0478fcb81fc0c8b4 Mon Sep 17 00:00:00 2001 From: Lorenzo Corallo Date: Tue, 25 Apr 2023 13:04:13 +0200 Subject: [PATCH 18/26] style: fix PDF style on Firefox Android --- .../ExtendCorrection/ExtendedCorrection.css | 3 ++ .../ExtendCorrection/ExtendedCorrection.tsx | 3 +- src/components/Util/Wrapper.tsx | 41 +++++++++++-------- src/components/pages/Results.tsx | 2 +- 4 files changed, 30 insertions(+), 19 deletions(-) diff --git a/src/components/ExtendCorrection/ExtendedCorrection.css b/src/components/ExtendCorrection/ExtendedCorrection.css index 9dea333..66a3f54 100644 --- a/src/components/ExtendCorrection/ExtendedCorrection.css +++ b/src/components/ExtendCorrection/ExtendedCorrection.css @@ -28,6 +28,9 @@ .print-only { display: block; } + .print-only li { + page-break-inside: avoid; + } div { break-inside: avoid; } diff --git a/src/components/ExtendCorrection/ExtendedCorrection.tsx b/src/components/ExtendCorrection/ExtendedCorrection.tsx index 4fef7ec..0374a6f 100644 --- a/src/components/ExtendCorrection/ExtendedCorrection.tsx +++ b/src/components/ExtendCorrection/ExtendedCorrection.tsx @@ -41,7 +41,8 @@ const styles = StyleSheet.create({ textAlign: 'center' }, li: { - margin: '10px' + margin: '10px', + display: 'block' }, ul: { listStyleType: 'none' diff --git a/src/components/Util/Wrapper.tsx b/src/components/Util/Wrapper.tsx index 8c066ae..ef08dd0 100644 --- a/src/components/Util/Wrapper.tsx +++ b/src/components/Util/Wrapper.tsx @@ -1,27 +1,34 @@ import { StyleSheet } from '../../utils/style' -const styles = StyleSheet.create({ - wrapper: { - display: 'flex', - flexDirection: 'column', - alignItems: 'center', - margin: '10px auto', - marginBlock: '16px', - maxWidth: 900, - textAlign: 'center' - }, - h2: { - fontSize: '16pt' - } -}) - interface Props extends React.HTMLAttributes { title?: string + center?: boolean } -export default function Wrapper({ children, style, title, ...props }: Props) { +export default function Wrapper({ + children, + center = true, + style, + title, + ...props +}: Props) { + const styles = StyleSheet.create({ + wrapper: { + display: 'flex', + flexDirection: 'column', + alignItems: center ? 'center' : 'flex-start', + margin: '10px auto', + marginBlock: '16px', + maxWidth: 900, + textAlign: center ? 'center' : 'initial', + ...style + }, + h2: { + fontSize: '16pt' + } + }) return ( -

    +
    {title &&

    {title}

    } {children}
    diff --git a/src/components/pages/Results.tsx b/src/components/pages/Results.tsx index 6e02dd9..462afff 100644 --- a/src/components/pages/Results.tsx +++ b/src/components/pages/Results.tsx @@ -219,7 +219,7 @@ export default function Results(props: ResultsProps) { ) return ( - +
    {resultTable()}
    From d00e5278e96669d71ece68b1f9052827fb74b40b Mon Sep 17 00:00:00 2001 From: Lorenzo Corallo Date: Tue, 25 Apr 2023 13:50:16 +0200 Subject: [PATCH 19/26] style(Results): fix overflow-x on mobile (caused by score table) --- src/components/pages/Results.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/pages/Results.tsx b/src/components/pages/Results.tsx index 462afff..acfc528 100644 --- a/src/components/pages/Results.tsx +++ b/src/components/pages/Results.tsx @@ -33,7 +33,8 @@ const styles = StyleSheet.create({ tableDiv: { alignSelf: 'center', width: '100%', - overflow: 'auto', + maxWidth: '90vw', + overflowX: 'auto', display: 'flex' }, table: { borderSpacing: 0, margin: 'auto' }, From def153e00fe61c441d9c66e52989b36401d63867 Mon Sep 17 00:00:00 2001 From: Lorenzo Corallo Date: Tue, 25 Apr 2023 17:27:48 +0200 Subject: [PATCH 20/26] chore(i18n): add visual hierarchy to results translations --- .../ExtendCorrection/ExtendedCorrection.tsx | 28 ++--- src/components/pages/Results.tsx | 44 ++++---- src/locales/en.json | 102 ++++++++++++------ src/locales/it.json | 99 +++++++++++------ 4 files changed, 173 insertions(+), 100 deletions(-) diff --git a/src/components/ExtendCorrection/ExtendedCorrection.tsx b/src/components/ExtendCorrection/ExtendedCorrection.tsx index 0374a6f..d06486a 100644 --- a/src/components/ExtendCorrection/ExtendedCorrection.tsx +++ b/src/components/ExtendCorrection/ExtendedCorrection.tsx @@ -112,7 +112,7 @@ export default function ExtendedCorrection(props: ExtendedCorrectionProps) { ref.current} - trigger={() =>
    @@ -160,7 +160,7 @@ const PrintDocument = forwardRef(

    - results.pdfTitle + results.pdf.title

    {resultTable} @@ -178,10 +178,10 @@ const PrintDocument = forwardRef( ) }} > - results.pdfInfo1 + results.pdf.info.1

    -

    {t('results.pdfInfo2')}

    +

    {t('results.pdf.info.2')}

    {(Object.entries(questions) as [Section, IQuestion[]][]) .sort((a, b) => sectionInfo[a[0]].order - sectionInfo[b[0]].order) @@ -212,20 +212,20 @@ function FirefoxInstructions() { const { t, i18n } = useTranslation() return (
    -

    {t('results.saveTitle')}

    -

    {t('results.saveFirefoxP1')}

    -

    {t('results.saveFirefoxP2')}

    +

    {t('results.save.title')}

    +

    {t('results.save.firefox.body.1')}

    +

    {t('results.save.firefox.body.2')}

      -
    1. {t('results.saveFirefoxLi1')}
    2. +
    3. {t('results.save.firefox.li.1')}
    4. -
    5. {t('results.saveFirefoxLi2')}
    6. +
    7. {t('results.save.firefox.li.2')}
    8. -
    9. {t('results.saveFirefoxLi3')}
    10. +
    11. {t('results.save.firefox.li.3')}
    12. -

      {t('results.saveTitle')}

      -

      {t('results.saveFallbackP1')}

      -

      {t('results.saveFallbackP2')}

      +

      {t('results.save.title')}

      +

      {t('results.save.fallback.1')}

      +

      {t('results.save.fallback.2')}

      - results.saveFallbackP3 + results.save.fallback.3

    diff --git a/src/components/pages/Results.tsx b/src/components/pages/Results.tsx index acfc528..64023b0 100644 --- a/src/components/pages/Results.tsx +++ b/src/components/pages/Results.tsx @@ -174,12 +174,12 @@ export default function Results(props: ResultsProps) {
    TOL{' '} {testPassed - ? `${t('results.testPassed')} ${!tengPassed ? ' (OFA TENG)' : ''}` - : `${t('results.testFailed')}: OFA TEST${ + ? `${t('results.test.passed')} ${!tengPassed ? ' (OFA TENG)' : ''}` + : `${t('results.test.failed')}: OFA TEST${ !tengPassed ? ' + OFA TENG' : '' }`}
    - {t('results.testPoints')}: {formatNumber(score)} /{' '} + {t('results.test.points')}: {formatNumber(score)} /{' '} {formatNumber(testTotalScore)} ({formatNumber(score, true)})


    @@ -188,11 +188,19 @@ export default function Results(props: ResultsProps) { - - - - - + + + + + {( Object.entries(correctionGrid) as [ @@ -232,7 +240,7 @@ export default function Results(props: ResultsProps) { />
    -

    {t('results.pointsCalcTitle')}

    +

    {t('results.pointsCalc.title')}

    - results.pointsCalcBody1 + results.pointsCalc.body.1 - {t('results.pointsCalcUl1')} + {t('results.pointsCalc.ul.1')}

    • - results.pointsCalcItem1 + results.pointsCalc.ul.item.1
    • @@ -262,7 +270,7 @@ export default function Results(props: ResultsProps) { values={{ v: formatNumber(correctionWeight.wrong) }} count={correctionWeight.wrong === 1 ? 1 : 2} > - results.pointsCalcItem2 + results.pointsCalc.ul.item.2
    • @@ -271,11 +279,11 @@ export default function Results(props: ResultsProps) { values={{ v: formatNumber(correctionWeight.notGiven) }} count={correctionWeight.notGiven === 1 ? 1 : 2} > - results.pointsCalcItem3 + results.pointsCalc.ul.item.3
    - {t('results.pointsCalcUl2')} + {t('results.pointsCalc.ul.2')}
      {Object.entries(sectionInfo).map(([, info], index) => (
    • @@ -288,17 +296,17 @@ export default function Results(props: ResultsProps) { sec: info.name }} > - results.pointsCalcItem4 + results.pointsCalc.ul.item.4
    • ))}
    - results.pointsCalcBody2 + results.pointsCalc.body.2

    {t('results.saveReminder')}

    - + ))} + +
    + ) +} + +function TgGroups() { + const { t, i18n } = useTranslation() + const components = { + tgProject: ( + + ), + tgHelp: ( + + ), + tgLogo: + } + return ( +
    + {t('about.supportGroups.head')} +
      +
    • + + about.supportGroups.1 + +
    • +
    • + + about.supportGroups.2 + +
    • +
    +
    ) } diff --git a/src/locales/en.json b/src/locales/en.json index 157cfe9..76652a1 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -16,8 +16,8 @@ "projectTeam": "Project team", "supportGroups": { "head": "Support groups", - "1": "Project feedback & info: ", - "2": "TOL questions and their resolution: " + "1": "Project feedback & info: $t(tg.project) ", + "2": "TOL questions and their resolution: $t(tg.help) " } }, "license": { diff --git a/src/locales/it.json b/src/locales/it.json index 082fbf6..f003e21 100644 --- a/src/locales/it.json +++ b/src/locales/it.json @@ -16,8 +16,8 @@ "projectTeam": "Team del progetto", "supportGroups": { "head": "Gruppi di supporto", - "1": "Segnalazioni e informazioni sul progetto: ", - "2": "Quesiti TOL e loro risoluzione: " + "1": "Segnalazioni e informazioni sul progetto: $t(tg.project) ", + "2": "Quesiti TOL e loro risoluzione: $t(tg.help) " } }, "license": { From abc8b394e54a2359dc0cc5d6fe08b3d3cc5ed3e8 Mon Sep 17 00:00:00 2001 From: Lorenzo Corallo Date: Wed, 26 Apr 2023 14:43:27 +0200 Subject: [PATCH 24/26] fix(i18n): fix structure of it.json (based on en.json) --- src/locales/it.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/locales/it.json b/src/locales/it.json index f003e21..a6daa46 100644 --- a/src/locales/it.json +++ b/src/locales/it.json @@ -72,7 +72,10 @@ "info": { "1": "Hai delle domande sui quesiti e la loro risoluzione? Falle sul $t(tg.help) di PoliNetwork!", "2": "Nelle pagine successive troverai, suddivisi per sezione, i quesiti che ti sono stati proposti con il relativo esito." - }, + } + }, + "save": { + "title": "Salva i tuoi risultati", "firefox": { "body": { "1": "Il tuo browser (Firefox Android) non supporta la stampa automatica.", From 7bced5464b15fae2b71b3369d374a082edff047b Mon Sep 17 00:00:00 2001 From: Lorenzo Corallo Date: Wed, 26 Apr 2023 16:03:44 +0200 Subject: [PATCH 25/26] chore(i18n): update locales --- src/locales/en.json | 2 +- src/locales/it.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/locales/en.json b/src/locales/en.json index 76652a1..740bf8a 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -70,7 +70,7 @@ "pdf": { "title": "Simulation of {{- date}} at {{- time}}", "info": { - "1": "Do you have any doubts about the questions and their resolution? Ask on the PoliNetwork's TOL Preparation Group!", + "1": "Do you have any doubts about the questions and their resolution? Ask on the PoliNetwork's $t(tg.help)!", "2": "On the following pages you will find, divided by section, the questions that have been proposed to you with the related outcome." } }, diff --git a/src/locales/it.json b/src/locales/it.json index a6daa46..af634cf 100644 --- a/src/locales/it.json +++ b/src/locales/it.json @@ -29,8 +29,8 @@ "results": { "exitWarn": "Non hai salvato i tuoi risultati. Sicuro di voler uscire?", "test": { - "passed": "passato", - "failed": "non passato", + "passed": "superato", + "failed": "non superato", "points": "Punteggio" }, "table": { From 68665ae61a832e4d3d005a01875e5d4ed9067832 Mon Sep 17 00:00:00 2001 From: Lorenzo Corallo Date: Wed, 26 Apr 2023 16:05:08 +0200 Subject: [PATCH 26/26] style(Footer): fix overflow --- src/components/Footer.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx index 8eea30b..220c6f0 100644 --- a/src/components/Footer.tsx +++ b/src/components/Footer.tsx @@ -8,7 +8,6 @@ const styles = StyleSheet.create({ container: { display: 'flex', justifyContent: 'space-between', - paddingInline: '15em', margin: '15px auto', fontSize: '10pt', color: theme.softBlack,
    {t('results.tableHeader1')}{t('results.tableHeader2')}{t('results.tableHeader3')}{t('results.tableHeader4')}{t('results.tableHeader5')} + {t('results.table.header.score')} + {t('results.table.header.numQ')} + {t('results.table.header.correct')} + + {t('results.table.header.wrong')} + + {t('results.table.header.notGiven')} +