From b9ca6862de1f8ae69e714d9078d31cf9a5c95781 Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Mon, 11 Jul 2022 04:18:12 +0000 Subject: [PATCH] feat: admin dashboard stats + actions --- ux/src/layouts/AdminLayout.vue | 11 ++-- ux/src/pages/AdminDashboard.vue | 95 ++++++++++++++++++++++++--------- ux/src/stores/admin.js | 18 ++++++- 3 files changed, 93 insertions(+), 31 deletions(-) diff --git a/ux/src/layouts/AdminLayout.vue b/ux/src/layouts/AdminLayout.vue index f9fbe198..9262f08c 100644 --- a/ux/src/layouts/AdminLayout.vue +++ b/ux/src/layouts/AdminLayout.vue @@ -50,6 +50,8 @@ q-layout.admin(view='hHh Lpr lff') q-item-section(avatar) q-icon(name='img:/_assets/icons/fluent-change-theme.svg') q-item-section {{ t('admin.sites.title') }} + q-item-section(side) + q-badge(color='dark-3', :label='adminStore.sites.length') q-item-label.q-mt-sm(header).text-caption.text-blue-grey-4 {{ t('admin.nav.site') }} q-item.q-mb-md q-item-section @@ -118,13 +120,13 @@ q-layout.admin(view='hHh Lpr lff') q-icon(name='img:/_assets/icons/fluent-people.svg') q-item-section {{ t('admin.groups.title') }} q-item-section(side) - q-badge(color='dark-3', :label='info.groupsTotal') + q-badge(color='dark-3', :label='adminStore.info.groupsTotal') q-item(to='/_admin/users', v-ripple, active-class='bg-primary text-white') q-item-section(avatar) q-icon(name='img:/_assets/icons/fluent-account.svg') q-item-section {{ t('admin.users.title') }} q-item-section(side) - q-badge(color='dark-3', :label='info.usersTotal') + q-badge(color='dark-3', :label='adminStore.info.usersTotal') q-item-label.q-mt-sm(header).text-caption.text-blue-grey-4 {{ t('admin.nav.system') }} q-item(to='/_admin/api', v-ripple, active-class='bg-primary text-white') q-item-section(avatar) @@ -235,10 +237,6 @@ const user = reactive({ email: 'test@example.com', picture: null }) -const info = reactive({ - groupsTotal: 3, - usersTotal: 2 -}) const thumbStyle = { right: '1px', borderRadius: '5px', @@ -277,6 +275,7 @@ onMounted(async () => { currentSiteId: route.params.siteid }) } + adminStore.fetchInfo() }) diff --git a/ux/src/pages/AdminDashboard.vue b/ux/src/pages/AdminDashboard.vue index 4598777b..127e4315 100644 --- a/ux/src/pages/AdminDashboard.vue +++ b/ux/src/pages/AdminDashboard.vue @@ -7,81 +7,85 @@ q-page.admin-dashboard .text-h5.text-primary.animated.fadeInLeft {{ t('admin.dashboard.title') }} .text-subtitle1.text-grey.animated.fadeInLeft.wait-p2s {{ t('admin.dashboard.subtitle') }} .row.q-px-md.q-col-gutter-md - .col-3 + .col-12.col-sm-6.col-lg-3 q-card.shadow-1 q-card-section.admin-dashboard-card img(src='/_assets/icons/fluent-change-theme.svg') div - strong Sites - span 4 + strong {{ t('admin.sites.title') }} + span {{adminStore.sites.length}} q-separator q-card-actions(align='right') q-btn( flat color='primary' - icon='las la-plus' - label='New' + icon='las la-plus-circle' + :label='t(`common.actions.new`)' + @click='newSite' ) q-separator.q-mx-sm(vertical) q-btn( flat color='primary' icon='las la-sitemap' - label='Manage' + :label='t(`common.actions.manage`)' to='/_admin/sites' ) - .col-3 + .col-12.col-sm-6.col-lg-3 q-card.shadow-1 q-card-section.admin-dashboard-card img(src='/_assets/icons/fluent-account.svg') div - strong Users - span 123 + strong {{ t('admin.users.title') }} + span {{adminStore.info.usersTotal}} q-separator q-card-actions(align='right') q-btn( flat color='primary' - icon='las la-plus' - label='New' + icon='las la-user-plus' + :label='t(`common.actions.new`)' + @click='newUser' ) q-separator.q-mx-sm(vertical) q-btn( flat color='primary' icon='las la-users' - label='Manage' + :label='t(`common.actions.manage`)' to='/_admin/users' ) - .col-3 + .col-12.col-sm-6.col-lg-3 q-card.shadow-1 q-card-section.admin-dashboard-card img(src='/_assets/icons/fluent-female-working-with-a-laptop.svg') div strong Logins - small 45 / last 24h + small {{adminStore.info.loginsPastDay}} #[i / last 24h] q-separator q-card-actions(align='right') q-btn( flat color='primary' icon='las la-chart-area' - label='Analytics' + :label='t(`admin.analytics.title`)' + :to='`/_admin/` + adminStore.currentSiteId + `/analytics`' ) - .col-3 + .col-12.col-sm-6.col-lg-3 q-card.shadow-1 q-card-section.admin-dashboard-card img(src='/_assets/icons/fluent-ssd-animated.svg') div - strong Storage - small Operational + strong {{ t('admin.storage.title') }} + small.text-positive Operational q-separator q-card-actions(align='right') q-btn( flat color='primary' icon='las la-server' - label='Manage' + :label='t(`common.actions.manage`)' + :to='`/_admin/` + adminStore.currentSiteId + `/storage`' ) .col-12 q-banner.bg-positive.text-white( @@ -89,12 +93,13 @@ q-page.admin-dashboard rounded ) i.las.la-check.q-mr-sm - span.text-weight-medium Your Wiki.js server is running the latest version! (3.0.0) + span.text-weight-medium Your Wiki.js server is running the latest version! template(#action) q-btn( flat label='Check' ) + q-separator.q-mx-sm(vertical, dark) q-btn( flat label='System Info' @@ -211,10 +216,30 @@ q-page.admin-dashboard