From 1d648a2187a2ff311db5e83348ead86824b28c33 Mon Sep 17 00:00:00 2001 From: evlist Date: Tue, 13 Dec 2022 16:16:30 +0100 Subject: [PATCH] Basic structure for recording UI --- .../gpx-record/GpxRecord.module.css | 7 + src/components/gpx-record/GpxRecord.tsx | 120 ++++++++++++++++++ src/components/gpx-record/index.ts | 1 + src/components/map/Map.tsx | 2 + src/i18n/en.ts | 12 +- src/i18n/fr.ts | 11 +- 6 files changed, 151 insertions(+), 2 deletions(-) create mode 100644 src/components/gpx-record/GpxRecord.module.css create mode 100644 src/components/gpx-record/GpxRecord.tsx create mode 100644 src/components/gpx-record/index.ts diff --git a/src/components/gpx-record/GpxRecord.module.css b/src/components/gpx-record/GpxRecord.module.css new file mode 100644 index 0000000..b0da3f2 --- /dev/null +++ b/src/components/gpx-record/GpxRecord.module.css @@ -0,0 +1,7 @@ +.control { + opacity: 1; + position: fixed !important; + top: 0px; + margin-left: calc(100% - 190px) !important; + z-index: 1; +} diff --git a/src/components/gpx-record/GpxRecord.tsx b/src/components/gpx-record/GpxRecord.tsx new file mode 100644 index 0000000..ee86aa6 --- /dev/null +++ b/src/components/gpx-record/GpxRecord.tsx @@ -0,0 +1,120 @@ +import { + Box, + Button, + DialogActions, + IconButton, + Typography, +} from '@suid/material'; +import FiberManualRecordIcon from '@suid/icons-material/FiberManualRecord'; +import { Component, createEffect, createSignal, Show } from 'solid-js'; +import style from './GpxRecord.module.css'; +import Dialog from '../dialog'; +import { useI18n } from '@solid-primitives/i18n'; +import GpxChooser from '../gpx-chooser'; +import { currentGpxId } from '../gpx-dialog'; + +const GpxRecord: Component<{}> = (props) => { + const [t] = useI18n(); + const [state, setState] = createSignal('stopped'); + const [open, setOpen] = createSignal(false); + const [gpxId, setGpxId] = createSignal(''); + const [trkId, setTrkId] = createSignal(''); + + const handleClickOpen = () => { + if (state() === 'stopped') { + setGpxId(currentGpxId()); + } + setOpen(true); + }; + const handleClose = () => { + setOpen(false); + }; + const startRecordingHandler = () => { + setState('recording'); + setOpen(false); + }; + const pauseRecordingHandler = () => { + setState('paused'); + setOpen(false); + }; + const resumeRecordingHandler = () => { + setState('recording'); + setOpen(false); + }; + const stopRecordingHandler = () => { + setState('stopped'); + setOpen(false); + }; + return ( + <> +
+ + + +
+ + + + + {t(`gpx_${state()}`)} + + + + + + + + + + + + + + + + + + ); +}; + +export default GpxRecord; diff --git a/src/components/gpx-record/index.ts b/src/components/gpx-record/index.ts new file mode 100644 index 0000000..7c79fa5 --- /dev/null +++ b/src/components/gpx-record/index.ts @@ -0,0 +1 @@ +export { default } from './GpxRecord'; diff --git a/src/components/map/Map.tsx b/src/components/map/Map.tsx index 963e45e..99feb59 100644 --- a/src/components/map/Map.tsx +++ b/src/components/map/Map.tsx @@ -35,6 +35,7 @@ import MouseWheelZoom from 'ol/interaction/MouseWheelZoom'; import DragZoom from 'ol/interaction/DragZoom'; import Infos, { clickHandler } from '../infos'; import GpxDialog from '../gpx-dialog'; +import GpxRecord from '../gpx-record'; const [getState, setState] = createSignal({ lon: 0, @@ -202,6 +203,7 @@ const Map: Component = () => { + diff --git a/src/i18n/en.ts b/src/i18n/en.ts index 3ffe5d9..7f4cd53 100644 --- a/src/i18n/en.ts +++ b/src/i18n/en.ts @@ -22,6 +22,7 @@ const dict = { cancel: 'CANCEL', gpxImport: 'GPX import', + import: 'Import', file: 'File: ', gpxStats: 'This file has been created with "{{creator}}" and includes {{nbWpts}} place(s), {{nbRte}} routes(s) et {{nbTrks}} track(s).', @@ -37,11 +38,20 @@ const dict = { gpxDialog: 'Current journey', gpxChooser: 'Journey', gpxName: 'Name', - gpxNoName:'No name', + gpxNoName: 'No name', gpxDesc: 'Description', gpxTime: 'Start date', gpxSave: 'Save', newGpx: '-- new journey --', + + gpxRecord: 'Track recording', + gpx_stopped: 'Not recording', + gpx_paused: 'Recording paused', + gpx_recording: 'Recording', + gpxStartRecording: 'Start recording', + gpxPauseRecording: 'Suspend recording', + ResumeRecording: 'Resume recording', + StopRecording: 'Stop recording', }; export default dict; diff --git a/src/i18n/fr.ts b/src/i18n/fr.ts index c7b853a..8b21c1b 100644 --- a/src/i18n/fr.ts +++ b/src/i18n/fr.ts @@ -43,11 +43,20 @@ const dict = { gpxDialog: 'Voyage en cours', gpxChooser: 'Voyage', gpxName: 'Nom', - gpxNoName:'Pas de nom', + gpxNoName: 'Pas de nom', gpxDesc: 'Description', gpxTime: 'Date de début', gpxSave: 'Sauvegarder', newGpx: '-- nouveau voyage --', + + gpxRecord: 'Enregistrement de trace', + gpx_stopped: "Pas d'enregistrement en cours", + gpx_paused: 'Enregistrement en pause', + gpx_recording: 'Enregistrement en cours', + gpxStartRecording: "Démarrer l'enregistrement", + gpxPauseRecording: "Mettre l'enregistrement en pause", + gpxResumeRecording: "Reprendre l'enregistrement", + gpxStopRecording: "Arrêter l'enregistrement", }; export default dict;