From 5bfcf88acd0d4ed3f2d495b7c46bf3ab4a2cd385 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 11 Jan 2025 10:51:35 +0200 Subject: [PATCH] chore(client/ts): port options/advanced --- ...ymization.js => database_anonymization.ts} | 24 +++++++++++++++---- ...y_check.js => database_integrity_check.ts} | 17 ++++++++++--- .../options/advanced/{sync.js => sync.ts} | 11 ++++++--- ...{vacuum_database.js => vacuum_database.ts} | 6 +++-- 4 files changed, 46 insertions(+), 12 deletions(-) rename src/public/app/widgets/type_widgets/options/advanced/{database_anonymization.js => database_anonymization.ts} (80%) rename src/public/app/widgets/type_widgets/options/advanced/{database_integrity_check.js => database_integrity_check.ts} (84%) rename src/public/app/widgets/type_widgets/options/advanced/{sync.js => sync.ts} (81%) rename src/public/app/widgets/type_widgets/options/advanced/{vacuum_database.js => vacuum_database.ts} (94%) diff --git a/src/public/app/widgets/type_widgets/options/advanced/database_anonymization.js b/src/public/app/widgets/type_widgets/options/advanced/database_anonymization.ts similarity index 80% rename from src/public/app/widgets/type_widgets/options/advanced/database_anonymization.js rename to src/public/app/widgets/type_widgets/options/advanced/database_anonymization.ts index e47f40b39..1b17253ea 100644 --- a/src/public/app/widgets/type_widgets/options/advanced/database_anonymization.js +++ b/src/public/app/widgets/type_widgets/options/advanced/database_anonymization.ts @@ -2,6 +2,7 @@ import OptionsWidget from "../options_widget.js"; import toastService from "../../../../services/toast.js"; import server from "../../../../services/server.js"; import { t } from "../../../../services/i18n.js"; +import type { OptionMap } from "../../../../../../services/options_interface.js"; const TPL = `
@@ -33,7 +34,22 @@ const TPL = `
`; +// TODO: Deduplicate with server +interface AnonymizeResponse { + success: boolean; + anonymizedFilePath: string; +} + +interface AnonymizedDbResponse { + filePath: string; +} + export default class DatabaseAnonymizationOptions extends OptionsWidget { + + private $anonymizeFullButton!: JQuery; + private $anonymizeLightButton!: JQuery; + private $existingAnonymizedDatabases!: JQuery; + doRender() { this.$widget = $(TPL); this.$anonymizeFullButton = this.$widget.find(".anonymize-full-button"); @@ -41,7 +57,7 @@ export default class DatabaseAnonymizationOptions extends OptionsWidget { this.$anonymizeFullButton.on("click", async () => { toastService.showMessage(t("database_anonymization.creating_fully_anonymized_database")); - const resp = await server.post("database/anonymize/full"); + const resp = await server.post("database/anonymize/full"); if (!resp.success) { toastService.showError(t("database_anonymization.error_creating_anonymized_database")); @@ -55,7 +71,7 @@ export default class DatabaseAnonymizationOptions extends OptionsWidget { this.$anonymizeLightButton.on("click", async () => { toastService.showMessage(t("database_anonymization.creating_lightly_anonymized_database")); - const resp = await server.post("database/anonymize/light"); + const resp = await server.post("database/anonymize/light"); if (!resp.success) { toastService.showError(t("database_anonymization.error_creating_anonymized_database")); @@ -69,8 +85,8 @@ export default class DatabaseAnonymizationOptions extends OptionsWidget { this.$existingAnonymizedDatabases = this.$widget.find(".existing-anonymized-databases"); } - optionsLoaded(options) { - server.get("database/anonymized-databases").then((anonymizedDatabases) => { + optionsLoaded(options: OptionMap) { + server.get("database/anonymized-databases").then((anonymizedDatabases) => { this.$existingAnonymizedDatabases.empty(); if (!anonymizedDatabases.length) { diff --git a/src/public/app/widgets/type_widgets/options/advanced/database_integrity_check.js b/src/public/app/widgets/type_widgets/options/advanced/database_integrity_check.ts similarity index 84% rename from src/public/app/widgets/type_widgets/options/advanced/database_integrity_check.js rename to src/public/app/widgets/type_widgets/options/advanced/database_integrity_check.ts index 48b6927ae..ecd9c3b95 100644 --- a/src/public/app/widgets/type_widgets/options/advanced/database_integrity_check.js +++ b/src/public/app/widgets/type_widgets/options/advanced/database_integrity_check.ts @@ -6,22 +6,33 @@ import { t } from "../../../../services/i18n.js"; const TPL = `

${t("database_integrity_check.title")}

- +

${t("database_integrity_check.description")}

- +
`; +// TODO: Deduplicate with server +interface Response { + results: { + integrity_check: string; + }[]; +} + export default class DatabaseIntegrityCheckOptions extends OptionsWidget { + + private $checkIntegrityButton!: JQuery; + private $findAndFixConsistencyIssuesButton!: JQuery; + doRender() { this.$widget = $(TPL); this.$checkIntegrityButton = this.$widget.find(".check-integrity-button"); this.$checkIntegrityButton.on("click", async () => { toastService.showMessage(t("database_integrity_check.checking_integrity")); - const { results } = await server.get("database/check-integrity"); + const { results } = await server.get("database/check-integrity"); if (results.length === 1 && results[0].integrity_check === "ok") { toastService.showMessage(t("database_integrity_check.integrity_check_succeeded")); diff --git a/src/public/app/widgets/type_widgets/options/advanced/sync.js b/src/public/app/widgets/type_widgets/options/advanced/sync.ts similarity index 81% rename from src/public/app/widgets/type_widgets/options/advanced/sync.js rename to src/public/app/widgets/type_widgets/options/advanced/sync.ts index 472ff8dbd..a98a7d6c9 100644 --- a/src/public/app/widgets/type_widgets/options/advanced/sync.js +++ b/src/public/app/widgets/type_widgets/options/advanced/sync.ts @@ -2,16 +2,21 @@ import OptionsWidget from "../options_widget.js"; import server from "../../../../services/server.js"; import toastService from "../../../../services/toast.js"; import { t } from "../../../../services/i18n.js"; +import type { OptionMap } from "../../../../../../services/options_interface.js"; const TPL = `

${t("sync.title")}

- - + +
`; export default class AdvancedSyncOptions extends OptionsWidget { + + private $forceFullSyncButton!: JQuery; + private $fillEntityChangesButton!: JQuery; + doRender() { this.$widget = $(TPL); this.$forceFullSyncButton = this.$widget.find(".force-full-sync-button"); @@ -31,5 +36,5 @@ export default class AdvancedSyncOptions extends OptionsWidget { }); } - async optionsLoaded(options) {} + async optionsLoaded(options: OptionMap) {} } diff --git a/src/public/app/widgets/type_widgets/options/advanced/vacuum_database.js b/src/public/app/widgets/type_widgets/options/advanced/vacuum_database.ts similarity index 94% rename from src/public/app/widgets/type_widgets/options/advanced/vacuum_database.js rename to src/public/app/widgets/type_widgets/options/advanced/vacuum_database.ts index 19c4a21a8..f4b007e61 100644 --- a/src/public/app/widgets/type_widgets/options/advanced/vacuum_database.js +++ b/src/public/app/widgets/type_widgets/options/advanced/vacuum_database.ts @@ -6,13 +6,15 @@ import { t } from "../../../../services/i18n.js"; const TPL = `

${t("vacuum_database.title")}

- +

${t("vacuum_database.description")}

- +
`; export default class VacuumDatabaseOptions extends OptionsWidget { + private $vacuumDatabaseButton!: JQuery; + doRender() { this.$widget = $(TPL); this.$vacuumDatabaseButton = this.$widget.find(".vacuum-database-button");