diff --git a/apps/portal/locale/en.json b/apps/portal/locale/en.json index 3844c27d4..c78292e31 100644 --- a/apps/portal/locale/en.json +++ b/apps/portal/locale/en.json @@ -238,7 +238,9 @@ "title": "Robot Game Scorer", "no-equipment-constraint-title": "No Equipment Constraint:", "no-equipment-constraint": "When this symbol appears in the top-right corner of a mission, the following constraint is applied: “No equipment may be touching any part of this mission model at the end of the match to score for this mission.”", - "score": "{points} pts" + "score": "{points} pts", + "final-score": "Final Score", + "points": "Points" }, "rubrics": { "title": "Rubrics", diff --git a/apps/portal/locale/he.json b/apps/portal/locale/he.json index 7f33c78b3..841fb547c 100644 --- a/apps/portal/locale/he.json +++ b/apps/portal/locale/he.json @@ -236,9 +236,11 @@ "tools": { "scorer": { "title": "מחשבון ניקוד", - "no-equipment-constraint-title": "מגבלת ”ללא מגע ציוד של הקבוצה“:", + "no-equipment-constraint-title": "מגבלת \"ללא מגע ציוד של הקבוצה\":", "no-equipment-constraint": "כאשר סמל זה מופיע בפינה השמאלית העליונה של משימה, החוק הבא חל: דגם משימה אינו יכול לקבל נקודות אם הוא נוגע בציוד בסיום המקצה.", - "score": "{points} נק'" + "score": "{points} נק'", + "final-score": "ניקוד סופי", + "points": "נקודות" }, "rubrics": { "title": "מחווני שיפוט", diff --git a/apps/portal/src/app/[locale]/tools/rubrics/components/rubric-print-styles.tsx b/apps/portal/src/app/[locale]/tools/rubrics/components/rubric-print-styles.tsx new file mode 100644 index 000000000..34be70960 --- /dev/null +++ b/apps/portal/src/app/[locale]/tools/rubrics/components/rubric-print-styles.tsx @@ -0,0 +1,98 @@ +'use client'; + +export const RubricPrintStyles = () => { + return ( + + ); +}; diff --git a/apps/portal/src/app/[locale]/tools/rubrics/page.tsx b/apps/portal/src/app/[locale]/tools/rubrics/page.tsx index 91eac089f..f080a3129 100644 --- a/apps/portal/src/app/[locale]/tools/rubrics/page.tsx +++ b/apps/portal/src/app/[locale]/tools/rubrics/page.tsx @@ -1,23 +1,34 @@ 'use client'; -import { Container } from '@mui/material'; +import { Container, Box } from '@mui/material'; import { ResponsiveComponent } from '@lems/shared'; import { RubricTable } from './components/desktop'; import { MobileRubricForm } from './components/mobile/rubric-form'; import { RubricProvider } from './components/rubric-context'; import { JudgingTimer } from './components/judging-timer'; import { RubricHeader } from './components/rubric-header'; +import { RubricPrintStyles } from './components/rubric-print-styles'; export default function RubricsPage() { return ( - - - + <> + - } mobile={} /> + + + + + - - - + + } mobile={} /> + + + + + + + + ); } diff --git a/apps/portal/src/app/[locale]/tools/scorer/components/print-score-summary.tsx b/apps/portal/src/app/[locale]/tools/scorer/components/print-score-summary.tsx new file mode 100644 index 000000000..bd6b72556 --- /dev/null +++ b/apps/portal/src/app/[locale]/tools/scorer/components/print-score-summary.tsx @@ -0,0 +1,58 @@ +'use client'; + +import { useContext } from 'react'; +import { Box, Typography, Paper } from '@mui/material'; +import { useTranslations } from 'next-intl'; +import { MissionContext } from './mission-context'; + +export const PrintScoreSummary = () => { + const t = useTranslations('pages.tools.scorer'); + const { points } = useContext(MissionContext); + + if (!points) return null; + + return ( + + + + {t('final-score')}: {points} {t('points')} + + + + ); +}; diff --git a/apps/portal/src/app/[locale]/tools/scorer/components/score-floater.tsx b/apps/portal/src/app/[locale]/tools/scorer/components/score-floater.tsx index dbd4a0bda..08f5ec3fe 100644 --- a/apps/portal/src/app/[locale]/tools/scorer/components/score-floater.tsx +++ b/apps/portal/src/app/[locale]/tools/scorer/components/score-floater.tsx @@ -18,6 +18,7 @@ export const ScoreFloater = () => { alignItems="center" justifyContent="center" spacing={3} + className="score-floater" sx={{ p: 4, position: 'fixed', @@ -29,7 +30,10 @@ export const ScoreFloater = () => { zIndex: 1, bgcolor: 'primary.main', borderRadius: 4, - height: 50 + height: 50, + '@media print': { + display: 'none !important' + } }} > diff --git a/apps/portal/src/app/[locale]/tools/scorer/components/scorer-print-styles.tsx b/apps/portal/src/app/[locale]/tools/scorer/components/scorer-print-styles.tsx new file mode 100644 index 000000000..cb5a71b0a --- /dev/null +++ b/apps/portal/src/app/[locale]/tools/scorer/components/scorer-print-styles.tsx @@ -0,0 +1,77 @@ +'use client'; + +export const ScorerPrintStyles = () => { + return ( + + ); +}; diff --git a/apps/portal/src/app/[locale]/tools/scorer/page.tsx b/apps/portal/src/app/[locale]/tools/scorer/page.tsx index b6f1e2694..f4cb7f135 100644 --- a/apps/portal/src/app/[locale]/tools/scorer/page.tsx +++ b/apps/portal/src/app/[locale]/tools/scorer/page.tsx @@ -6,30 +6,36 @@ import { MissionProvider } from './components/mission-context'; import { ScoreFloater } from './components/score-floater'; import { FieldTimer } from './components/field-timer'; import { ScoresheetForm } from './components/scoresheet-form'; +import { ScorerPrintStyles } from './components/scorer-print-styles'; +import { PrintScoreSummary } from './components/print-score-summary'; export default async function ScorerPage() { const t = await getTranslations('pages.tools.scorer'); return ( - - - - - {t('title')} - - - איסור ציוד - - {t('no-equipment-constraint-title')} - {t('no-equipment-constraint')} + <> + + + + + + {t('title')} + + + איסור ציוד + + {t('no-equipment-constraint-title')} + {t('no-equipment-constraint')} + - - - - - - - + + + + + + + + ); }