From 49105c1d1b9e396931719a60c28aae095d41aeb1 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sun, 17 Apr 2022 23:23:00 +0200
Subject: [PATCH] #663 - show button after successful migration

---
 .../migration/MigrationController.java        |  3 ++-
 .../src/main/resources/static/js/migration.js | 27 +++++++++++++++++++
 .../resources/templates/migration/status.ftl  | 12 ++++++++-
 .../templates/migration/statusFragment.ftl    |  6 ++++-
 4 files changed, 45 insertions(+), 3 deletions(-)

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 84d8e2885..63dab7369 100644
--- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/migration/MigrationController.java
+++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/migration/MigrationController.java
@@ -95,8 +95,9 @@ public class MigrationController extends BaseController
 	}
 
 	@GetMapping("/status")
-	public String status()
+	public String status(Model model)
 	{
+		model.addAttribute(ModelAttributes.STATUS, migrationService.getMigrationStatus());
 		return ReturnValues.STATUS;
 	}
 
diff --git a/BudgetMasterServer/src/main/resources/static/js/migration.js b/BudgetMasterServer/src/main/resources/static/js/migration.js
index 1f053df3b..dc8c9c876 100644
--- a/BudgetMasterServer/src/main/resources/static/js/migration.js
+++ b/BudgetMasterServer/src/main/resources/static/js/migration.js
@@ -5,6 +5,33 @@ $(document).ready(function()
 
 function getMigrationStatus()
 {
+    if(typeof migrationStatus === 'undefined')
+    {
+        document.getElementById('progress-spinner').style.display = 'none';
+    }
+    else
+    {
+        switch(migrationStatus)
+        {
+            case 'NOT_RUNNING':
+                document.getElementById('button-migration-home').style.display = 'none';
+                document.getElementById('progress-spinner').style.display = 'none';
+                break;
+            case 'SUCCESS':
+                document.getElementById('button-migration-home').style.display = '';
+                document.getElementById('progress-spinner').style.display = 'none';
+                break;
+            case 'RUNNING':
+                document.getElementById('button-migration-home').style.display = 'none';
+                document.getElementById('progress-spinner').style.display = '';
+                break;
+            default:
+                document.getElementById('button-migration-home').style.display = 'none';
+                document.getElementById('progress-spinner').style.display = 'none';
+                return;
+        }
+    }
+
     $.ajax({
         type: 'GET',
         url: $('#migration-status').attr('data-url'),
diff --git a/BudgetMasterServer/src/main/resources/templates/migration/status.ftl b/BudgetMasterServer/src/main/resources/templates/migration/status.ftl
index 5943e03b2..f45365e36 100644
--- a/BudgetMasterServer/src/main/resources/templates/migration/status.ftl
+++ b/BudgetMasterServer/src/main/resources/templates/migration/status.ftl
@@ -21,7 +21,7 @@
                 <div class="container center-align">
                     <div class="row">
                         <div class="col s12 m12 l8 offset-l2">
-                            <div class="preloader-wrapper small active">
+                            <div class="preloader-wrapper small active" id="progress-spinner">
                                 <div class="spinner-layer spinner-blue-only">
                                     <div class="circle-clipper left">
                                         <div class="circle"></div>
@@ -38,10 +38,20 @@
                     </div>
 
                     <div id="migration-status" data-url="<@s.url '/migration/getStatus'/>"></div>
+
+                    <div class="row" id="button-migration-home">
+                        <div class="col s12 m12 l8 offset-l2">
+                            <@header.buttonLink url='/' icon='home' localizationKey='menu.home'/>
+                        </div>
+                    </div>
                 </div>
             </div>
         </main>
 
+        <script>
+            migrationStatus = "${status.name()}";
+        </script>
+
         <!-- Scripts-->
         <#import "../helpers/scripts.ftl" as scripts>
         <@scripts.scripts/>
diff --git a/BudgetMasterServer/src/main/resources/templates/migration/statusFragment.ftl b/BudgetMasterServer/src/main/resources/templates/migration/statusFragment.ftl
index 9d676d04e..8a379152a 100644
--- a/BudgetMasterServer/src/main/resources/templates/migration/statusFragment.ftl
+++ b/BudgetMasterServer/src/main/resources/templates/migration/statusFragment.ftl
@@ -11,4 +11,8 @@
 <div class="row">
     <div class="col s12 m12 l8 offset-l2">
     </div>
-</div>
\ No newline at end of file
+</div>
+
+<script>
+    migrationStatus = "${status.name()}";
+</script>
\ No newline at end of file
-- 
GitLab