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 6887159e4986cb773ef8215d3c7a61e0a1a370c0..ca6c3b86bd2073aee7000fd77c7b833eaf10fb0e 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 b8de58e0677550f56b1f4ccbe7285a3c83514285..deac411684821ee2151fb2181f7a1fd989de4448 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 ff69f2097e9df3df1f0f3e42670114ca6e2a31c3..8166a4ba44d9156d1c4fbc778160a1c99e1c19bb 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 0000000000000000000000000000000000000000..fc1b6d02b397411333213d218a1f2b4a95370f42 --- /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 0000000000000000000000000000000000000000..5943e03b24b7250c7a3e9088a5825d6679d73645 --- /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 0000000000000000000000000000000000000000..80073e5b80ded45dff24a0ef1408d4285e9f0e04 --- /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