AppManager: improve installation status page
* Status is refreshed in the background
* Render release item infos instead of internal names
Change-Id: I63a6082656e4e6772a4b5c734c5dd5c23141f70b
diff --git a/core/installer/welcome/appmanager-tmpl/app.html b/core/installer/welcome/appmanager-tmpl/app.html
index b97a187..5ce3534 100644
--- a/core/installer/welcome/appmanager-tmpl/app.html
+++ b/core/installer/welcome/appmanager-tmpl/app.html
@@ -1,7 +1,7 @@
{{ define "task" }}
{{ range . }}
<li aria-busy="{{ eq .Status 1 }}">
- {{ if eq .Status 3 }}<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none"><circle cx="12" cy="12" r="8" fill="green" fill-opacity="0.25"/><path stroke="green" stroke-width="1.2" d="m8.5 11l2.894 2.894a.15.15 0 0 0 .212 0L19.5 6"/><path stroke="green" stroke-linecap="round" d="M19.358 10.547a7.5 7.5 0 1 1-3.608-5.042"/></g></svg>{{ end }}{{ .Title }}{{ if .Err }} - {{ .Err.Error }} {{ end }}
+ {{ if eq .Status 3 }}<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="black" d="M21 7L9 19l-5.5-5.5l1.41-1.41L9 16.17L19.59 5.59z"/></svg>{{ end }}{{ .Title }}{{ if .Err }} - {{ .Err.Error }} {{ end }}
{{ if .Subtasks }}
<ul>
{{ template "task" .Subtasks }}
@@ -104,7 +104,6 @@
<ul class="progress">
{{ template "task" .Task.Subtasks }}
</ul>
- <script>setTimeout(() => location.reload(), 3000);</script>
{{ end }}
{{ end }}
@@ -228,14 +227,40 @@
{{ end }}
}
- document.getElementById("config-form").addEventListener("submit", (event) => {
- event.preventDefault();
- if (event.submitter.id === "submit") {
- install();
- } if (event.submitter.id === "uninstall") {
- uninstall();
- }
- });
+ const configForm = document.getElementById("config-form");
+ if (configForm) {
+ configForm.addEventListener("submit", (event) => {
+ event.preventDefault();
+ if (event.submitter.id === "submit") {
+ install();
+ } if (event.submitter.id === "uninstall") {
+ uninstall();
+ }
+ });
+ }
+
+ {{ if .Task }}
+ async function refresh() {
+ try {
+ const resp = await fetch(window.location.href);
+ if (resp.ok) {
+ var tmp = document.createElement("html");
+ tmp.innerHTML = await resp.text();
+ const progress = tmp.getElementsByClassName("progress")[0];
+ if (progress) {
+ document.getElementsByClassName("progress")[0].innerHTML = progress.innerHTML;
+ } else {
+ location.reload();
+ }
+ }
+ } catch (error) {
+ console.log(error);
+ } finally {
+ setTimeout(refresh, 3000);
+ }
+ }
+ setTimeout(refresh, 3000);
+ {{ end }}
</script>
{{end}}