diff --git a/dashboard/public/views/app.html b/dashboard/public/views/app.html
index a32c39536..27806f94d 100644
--- a/dashboard/public/views/app.html
+++ b/dashboard/public/views/app.html
@@ -737,7 +737,7 @@
{{ 'app.infoTabTitle' | tr }}
{{ 'app.displayTabTitle' | tr }}
{{ 'app.locationTabTitle' | tr }}
- Proxy
+
{{ 'app.accessControlTabTitle' | tr }}
{{ 'app.resourcesTabTitle' | tr }}
{{ 'app.servicesTabTitle' | tr }}
diff --git a/dashboard/src/components/app/Info.vue b/dashboard/src/components/app/Info.vue
index 02dfa484c..5cb811500 100644
--- a/dashboard/src/components/app/Info.vue
+++ b/dashboard/src/components/app/Info.vue
@@ -1,16 +1,145 @@
- Info {{ app.id }}
+
+
+
Show Checklist
+
Hide Checklist
+
+
+
+
+
+
+ {{ item.changedBy }} {{ prettyDate(item.changedAt) }}
+
+
+
+
+
+
+
{{ $t('app.updates.info.description') }}
+
{{ manifest.title }} {{ app.upstreamVersion }}
+
{{ manifest.dockerImage }}
+
+
+
+
{{ $t('app.updates.info.appId') }}
+
{{ app.id }}
+
+
+
+
{{ $t('app.updates.info.packageVersion') }}
+
+
{{ manifest.version }}
+
+
+
+
{{ $t('app.updates.info.installedAt') }}
+
{{ prettyDate(app.creationTime) }}
+
+
+
+
{{ $t('app.updates.info.lastUpdated') }}
+
{{ prettyDate(app.updateTime) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dashboard/src/models/AppsModel.js b/dashboard/src/models/AppsModel.js
index c6590d180..af5fefec0 100644
--- a/dashboard/src/models/AppsModel.js
+++ b/dashboard/src/models/AppsModel.js
@@ -188,7 +188,18 @@ function create() {
await sleep(2000);
}
- }
+ },
+ async configure(id, setting, data) {
+ let result;
+ try {
+ result = await fetcher.post(`${origin}/api/v1/apps/${id}/configure/${setting}`, data, { access_token: accessToken });
+ } catch (e) {
+ return [e];
+ }
+
+ if (result.status !== 200 && result.status !== 202) return [result];
+ return [null];
+ },
};
}
diff --git a/dashboard/src/views/AppConfigureView.vue b/dashboard/src/views/AppConfigureView.vue
index 26af269ff..26f220330 100644
--- a/dashboard/src/views/AppConfigureView.vue
+++ b/dashboard/src/views/AppConfigureView.vue
@@ -6,14 +6,15 @@ import { useI18n } from 'vue-i18n';
const i18n = useI18n();
const t = i18n.t;
-import { ref, onMounted } from 'vue';
+import { ref, onMounted, useTemplateRef } from 'vue';
import { Button, ButtonGroup, TabView } from 'pankow';
-import Section from '../components/Section.vue';
import Info from '../components/app/Info.vue';
import AppsModel from '../models/AppsModel.js';
import { APP_TYPES } from '../constants.js';
const appsModel = AppsModel.create();
+
+const tabView = useTemplateRef('tabView');
const tabs = ref({
info: t('app.infoTabTitle'),
display: t('app.displayTabTitle'),
@@ -33,7 +34,6 @@ const tabs = ref({
eventlog: t('app.eventlogTabTitle'),
uninstall: t('app.uninstallTabTitle'),
});
-const view = ref('info');
const id = ref('');
const app = ref({});
const link = ref('');
@@ -103,22 +103,23 @@ onMounted(async () => {
if (parts.length !== 2) return;
id.value = parts[0];
- view.value = parts[1];
await refresh();
+
+ tabView.value.open(parts[1] || 'info');
});
-
+
{{ app.label || app.fqdn }}
-
-
+
Display