From e3d8e49ce0f3522fb811d660b1d64ed7fb19822e Mon Sep 17 00:00:00 2001 From: Dorian Koch <doriank@fsmpi.rwth-aachen.de> Date: Thu, 5 Sep 2024 21:34:55 +0200 Subject: [PATCH] Translations for Download Manager, Fix error handling in lecture import --- lang/de.slf | 10 ++++++++++ lang/en.slf | 10 ++++++++++ src/components/DownloadManager.tsx | 20 ++++++++++++------- src/pages/internal/import.tsx | 32 ++++++++++++++++++++++++------ 4 files changed, 59 insertions(+), 13 deletions(-) diff --git a/lang/de.slf b/lang/de.slf index 97792e6..64d8631 100644 --- a/lang/de.slf +++ b/lang/de.slf @@ -150,6 +150,7 @@ ui.generic.create = "Erstellen" // ui.generic.download = "Download" ui.generic.search = "Suche" ui.generic.login = "Anmelden" +ui.generic.close = "Schließen" ui.generic.filter.any = "Alle" @@ -167,6 +168,15 @@ ui.course_list.show_only_public_courses = "Nur öffentliche Veranstaltungen anze ui.course.back_to_list = "Zur Kursliste" ui.course.download_all_videos = "Download aller Videos" +// ui.download_manager.title = "Download Manager" +// ui.download_manager.start_download = "Start Download" +// ui.download_manager.stop_download = "Stop Download" +ui.download_manager.select_all = "Alle auswählen" +ui.download_manager.select_none = "Keine auswählen" +ui.download_manager.quality = "Qualität" +// ui.download_manager.download_now = #ui.generic.download +// ui.download_manager.close = #ui.generic.close + ui.video_player.back_to_course = "Zur Veranstaltungsseite" ui.video_player.suggest_chapter = "Kapitelmarker vorschlagen" ui.video_player.embed = "Einbetten" diff --git a/lang/en.slf b/lang/en.slf index 8b09fb8..956c5f4 100644 --- a/lang/en.slf +++ b/lang/en.slf @@ -154,6 +154,7 @@ ui.generic.create = "Create" ui.generic.download = "Download" ui.generic.search = "Search" ui.generic.login = "Login" +ui.generic.close = "Close" ui.generic.filter.any = "Any" @@ -171,6 +172,15 @@ ui.course_list.show_only_public_courses = "Show only public courses" ui.course.back_to_list = "Back to course list" ui.course.download_all_videos = "Download all videos" +ui.download_manager.title = "Download Manager" +ui.download_manager.start_download = "Start Download" +ui.download_manager.stop_download = "Stop Download" +ui.download_manager.select_all = "Select all" +ui.download_manager.select_none = "Select none" +ui.download_manager.quality = "Quality" +ui.download_manager.download_now = #ui.generic.download +ui.download_manager.close = #ui.generic.close + ui.video_player.back_to_course = "Back to course" ui.video_player.suggest_chapter = "Suggest chapter" ui.video_player.embed = "Embed" diff --git a/src/components/DownloadManager.tsx b/src/components/DownloadManager.tsx index 3881c3a..161929b 100644 --- a/src/components/DownloadManager.tsx +++ b/src/components/DownloadManager.tsx @@ -408,7 +408,7 @@ export default function DownloadAllModal({ course }: { course: GetCourseResponse className="btn btn-primary" disabled={chosenQualities.current.get(lecture.id) === undefined} > - Download Now + {language.get("ui.download_manager.download_now")} </button> </a> ); @@ -566,7 +566,7 @@ export default function DownloadAllModal({ course }: { course: GetCourseResponse </button> <Modal show={showModal} size="xl" onHide={closeClicked}> <Modal.Header closeButton> - <Modal.Title>Download Manager</Modal.Title> + <Modal.Title>{language.get("ui.download_manager.title")}</Modal.Title> </Modal.Header> <Modal.Body> <div className="mb-2"> @@ -582,7 +582,9 @@ export default function DownloadAllModal({ course }: { course: GetCourseResponse (downloadStarted ? "bi-pause-fill" : "bi-play-fill") } /> - {downloadStarted ? "Stop" : "Start"} Download + {downloadStarted + ? language.get("ui.download_manager.stop_download") + : language.get("ui.download_manager.start_download")} </button> </div> <div className="mb-2 d-flex"> @@ -592,7 +594,7 @@ export default function DownloadAllModal({ course }: { course: GetCourseResponse onClick={selectAll} disabled={downloadStarted} > - Select All + {language.get("ui.download_manager.select_all")} </button> <button @@ -601,10 +603,14 @@ export default function DownloadAllModal({ course }: { course: GetCourseResponse onClick={selectNone} disabled={downloadStarted} > - Select None + {language.get("ui.download_manager.select_none")} </button> - <DropdownButton variant="primary" title={"Quality"} className=""> + <DropdownButton + variant="primary" + title={language.get("ui.download_manager.quality")} + className="" + > {allQualities.map((q) => ( <DropdownItem key={q} @@ -630,7 +636,7 @@ export default function DownloadAllModal({ course }: { course: GetCourseResponse onClick={closeClicked} disabled={downloadStarted} > - Close + {language.get("ui.download_manager.close")} </button> </Modal.Footer> </Modal> diff --git a/src/pages/internal/import.tsx b/src/pages/internal/import.tsx index d56b1a9..63314cc 100644 --- a/src/pages/internal/import.tsx +++ b/src/pages/internal/import.tsx @@ -80,7 +80,7 @@ function TerminBody({ .then((res: GetNewConfigurationResponse) => { const defaultValues: any = {}; res.fields?.forEach((field) => { - if (field.default_value !== undefined && field.default_value !== undefined) { + if (field.default_value !== undefined) { defaultValues[field.id] = field.default_value; } else if ( field.type === "string" && @@ -124,7 +124,7 @@ function TerminBody({ .then((res: GetNewConfigurationResponse) => { const defaultValues: any = {}; res.fields?.forEach((field) => { - if (field.default_value !== undefined && field.default_value !== undefined) { + if (field.default_value !== undefined) { defaultValues[field.id] = field.default_value; } else if ( field.type === "string" && @@ -151,8 +151,18 @@ function TerminBody({ }), ); }) - .catch((e) => { - showError(e, "Unable to create lectures"); + .then((results) => { + let failed = 0; + results.forEach((result, idx) => { + if (result.status === "rejected") { + failed++; + } + }); + if (failed > 0) { + showErrorToast( + `${failed} lectures could not be imported, see console for details`, + ); + } }) .then(reloadFunc) .finally(() => { @@ -200,8 +210,18 @@ function TerminBody({ return [api.deleteOMObject("lecture", event.id_in_videoag_system)]; }); Promise.allSettled(promises) - .catch((e) => { - showError(e, "Unable to delete lectures"); + .then((results) => { + let failed = 0; + results.forEach((result, idx) => { + if (result.status === "rejected") { + failed++; + } + }); + if (failed > 0) { + showErrorToast( + `${failed} lectures could not be deleted, see console for details`, + ); + } }) .then(reloadFunc) .finally(() => { -- GitLab