From 7739546714a180ed7a815f772624cd5145fa47e3 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sun, 17 Apr 2022 22:07:17 +0200 Subject: [PATCH] #663 - added basic status page --- .../migration/MigrationController.java | 16 ++++++ .../resources/languages/base_de.properties | 3 ++ .../resources/languages/base_en.properties | 4 ++ .../src/main/resources/static/js/migration.js | 24 +++++++++ .../resources/templates/migration/status.ftl | 50 +++++++++++++++++++ .../templates/migration/statusFragment.ftl | 15 ++++++ 6 files changed, 112 insertions(+) create mode 100644 BudgetMasterServer/src/main/resources/static/js/migration.js create mode 100644 BudgetMasterServer/src/main/resources/templates/migration/status.ftl create mode 100644 BudgetMasterServer/src/main/resources/templates/migration/statusFragment.ftl diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/migration/MigrationController.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/migration/MigrationController.java index 6887159e4..ca6c3b86b 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/migration/MigrationController.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/migration/MigrationController.java @@ -30,11 +30,14 @@ public class MigrationController extends BaseController { public static final String ERROR = "error"; public static final String MIGRATION_SETTINGS = "migrationSettings"; + public static final String STATUS_TEXT_KEY = "statusTextKey"; } private static class ReturnValues { public static final String MIGRATION_SETTINGS = "migration/migration"; + public static final String STATUS = "migration/status"; + public static final String STATUS_FRAGMENT = "migration/statusFragment"; } private final MigrationService migrationService; @@ -106,4 +109,17 @@ public class MigrationController extends BaseController // TODO: redirect to success page return ReturnValues.MIGRATION_SETTINGS; } + + @GetMapping("/status") + public String status() + { + return ReturnValues.STATUS; + } + + @GetMapping("/getStatus") + public String getMigrationStatus(Model model) + { + model.addAttribute(ModelAttributes.STATUS_TEXT_KEY, "migration.status.running"); + return ReturnValues.STATUS_FRAGMENT; + } } \ No newline at end of file diff --git a/BudgetMasterServer/src/main/resources/languages/base_de.properties b/BudgetMasterServer/src/main/resources/languages/base_de.properties index b8de58e06..deac41168 100644 --- a/BudgetMasterServer/src/main/resources/languages/base_de.properties +++ b/BudgetMasterServer/src/main/resources/languages/base_de.properties @@ -649,3 +649,6 @@ migration.settings.password=Passwort migration.settings.verification.password.description=Bitte gib dein aktuelles BudgetMaster Passwort ein, um den Migrationsprozess zu bestätigen.<br><span class="red-text bold">Die Migration kann nicht abgebrochen werden.</span><br>Deine bestehende BudgetMaster Datenbank wird weder geändert noch gelöscht. migration.settings.verification.password=Aktuelles BudgetMaster Passwort migration.settings.verification.password.wrong=Ungültiges Bestätigungspasswort +migration.status.running=Migration läuft... +migration.status.finished=Migration fertiggestellt! +migration.status.error=Migration fehlgeschlagen! diff --git a/BudgetMasterServer/src/main/resources/languages/base_en.properties b/BudgetMasterServer/src/main/resources/languages/base_en.properties index ff69f2097..8166a4ba4 100644 --- a/BudgetMasterServer/src/main/resources/languages/base_en.properties +++ b/BudgetMasterServer/src/main/resources/languages/base_en.properties @@ -648,3 +648,7 @@ migration.settings.password=Password migration.settings.verification.password.description=Please enter your current BudgetMaster password to confirm the migration process.<br><span class="red-text bold">The migration can not be canceled.</span><br>Your existing BudgetMaster database will neither be modified nor deleted. migration.settings.verification.password=Current BudgetMaster password migration.settings.verification.password.wrong=Invalid verification password +migration.status.running=Migration is running... +migration.status.finished=Migration finished! +migration.status.error=Migration failed! + diff --git a/BudgetMasterServer/src/main/resources/static/js/migration.js b/BudgetMasterServer/src/main/resources/static/js/migration.js new file mode 100644 index 000000000..fc1b6d02b --- /dev/null +++ b/BudgetMasterServer/src/main/resources/static/js/migration.js @@ -0,0 +1,24 @@ +$(document).ready(function() +{ + getMigrationStatus(); +}); + +function getMigrationStatus() +{ + console.log("ja") + + $.ajax({ + type: 'GET', + url: $('#migration-status').attr('data-url'), + data: {}, + success: function(data) + { + $('#migration-status').html(data); + }, + complete: function() + { + // schedule the next request when the current one is complete + setTimeout(getMigrationStatus, 3000); + } + }); +} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/resources/templates/migration/status.ftl b/BudgetMasterServer/src/main/resources/templates/migration/status.ftl new file mode 100644 index 000000000..5943e03b2 --- /dev/null +++ b/BudgetMasterServer/src/main/resources/templates/migration/status.ftl @@ -0,0 +1,50 @@ +<html> + <head> + <#import "../helpers/header.ftl" as header> + <@header.globals/> + <@header.header "BudgetMaster - ${locale.getString('title.migration')}"/> + <#import "/spring.ftl" as s> + </head> + <@header.body> + <#import "../helpers/navbar.ftl" as navbar> + <@navbar.navbar "migration" settings/> + <#import "../helpers/validation.ftl" as validation> + + <main> + <div class="card main-card background-color"> + <div class="container"> + <div class="section center-align"> + <div class="headline">${locale.getString("title.migration")}</div> + </div> + </div> + + <div class="container center-align"> + <div class="row"> + <div class="col s12 m12 l8 offset-l2"> + <div class="preloader-wrapper small active"> + <div class="spinner-layer spinner-blue-only"> + <div class="circle-clipper left"> + <div class="circle"></div> + </div> + <div class="gap-patch"> + <div class="circle"></div> + </div> + <div class="circle-clipper right"> + <div class="circle"></div> + </div> + </div> + </div> + </div> + </div> + + <div id="migration-status" data-url="<@s.url '/migration/getStatus'/>"></div> + </div> + </div> + </main> + + <!-- Scripts--> + <#import "../helpers/scripts.ftl" as scripts> + <@scripts.scripts/> + <script src="<@s.url '/js/migration.js'/>"></script> + </@header.body> +</html> \ No newline at end of file diff --git a/BudgetMasterServer/src/main/resources/templates/migration/statusFragment.ftl b/BudgetMasterServer/src/main/resources/templates/migration/statusFragment.ftl new file mode 100644 index 000000000..80073e5b8 --- /dev/null +++ b/BudgetMasterServer/src/main/resources/templates/migration/statusFragment.ftl @@ -0,0 +1,15 @@ +<#global locale = static["de.thecodelabs.utils.util.Localization"]> +<#import "/spring.ftl" as s> +<#import "../helpers/header.ftl" as header> + +<div class="row"> + <div class="col s12 m12 l8 offset-l2"> + <div class="headline-small">${locale.getString(statusTextKey)}</div> + </div> +</div> + +<div class="row"> + <div class="col s12 m12 l8 offset-l2"> + Status: + </div> +</div> \ No newline at end of file -- GitLab