diff --git a/client/components/admin/admin-dashboard.vue b/client/components/admin/admin-dashboard.vue index 2dbb91a0..28e80e24 100644 --- a/client/components/admin/admin-dashboard.vue +++ b/client/components/admin/admin-dashboard.vue @@ -60,7 +60,7 @@ v-spacer v-data-table.pb-2( :items='recentPages' - :headers='headers' + :headers='recentPagesHeaders' :loading='recentPagesLoading' hide-default-footer hide-default-header @@ -77,23 +77,20 @@ v-card.radius-7.animated.fadeInUp.wait-p4s v-toolbar(:color='$vuetify.theme.dark ? `grey darken-2` : `grey lighten-5`', dense, flat) v-spacer - .overline {{$t('admin:dashboard.mostPopularPages')}} + .overline {{$t('admin:dashboard.lastLogins')}} v-spacer v-data-table.pb-2( - :items='popularPages' - :headers='headers' - :loading='popularPagesLoading' + :items='lastLogins' + :headers='lastLoginsHeaders' + :loading='lastLoginsLoading' hide-default-footer hide-default-header ) template(slot='item', slot-scope='props') - tr.is-clickable(:active='props.selected', @click='$router.push(`/pages/` + props.item.id)') + tr.is-clickable(:active='props.selected', @click='$router.push(`/users/` + props.item.id)') td - .body-2: strong {{ props.item.title }} - td.admin-pages-path - v-chip(label, small, :color='$vuetify.theme.dark ? `grey darken-4` : `grey lighten-4`') {{ props.item.locale }} - span.ml-2.grey--text(:class='$vuetify.theme.dark ? `text--lighten-1` : `text--darken-2`') / {{ props.item.path }} - td.text-right.caption(width='250') {{ props.item.updatedAt | moment('calendar') }} + .body-2: strong {{ props.item.name }} + td.text-right.caption(width='250') {{ props.item.lastLoginAt | moment('calendar') }} v-flex(xs12) v-card.dashboard-contribute.animated.fadeInUp.wait-p4s @@ -112,8 +109,7 @@ import _ from 'lodash' import AnimatedNumber from 'animated-number-vue' import { get } from 'vuex-pathify' - -import recentPagesQuery from 'gql/admin/dashboard/dashboard-query-recentpages.gql' +import gql from 'graphql-tag' export default { components: { @@ -123,13 +119,16 @@ export default { return { recentPages: [], recentPagesLoading: false, - popularPages: [], - popularPagesLoading: false, - headers: [ - { text: 'ID', value: 'id', width: 80 }, + recentPagesHeaders: [ { text: 'Title', value: 'title' }, { text: 'Path', value: 'path' }, { text: 'Last Updated', value: 'updatedAt', width: 250 } + ], + lastLogins: [], + lastLoginsLoading: false, + lastLoginsHeaders: [ + { text: 'User', value: 'displayName' }, + { text: 'Last Login', value: 'lastLoginAt', width: 250 } ] } }, @@ -154,12 +153,49 @@ export default { }, apollo: { recentPages: { - query: recentPagesQuery, + query: gql` + query { + pages { + list(limit: 10, orderBy: UPDATED, orderByDirection: DESC) { + id + locale + path + title + description + contentType + isPublished + isPrivate + privateNS + createdAt + updatedAt + } + } + } + `, update: (data) => data.pages.list, watchLoading (isLoading) { this.recentPagesLoading = isLoading this.$store.commit(`loading${isLoading ? 'Start' : 'Stop'}`, 'admin-dashboard-recentpages') } + }, + lastLogins: { + query: gql` + query { + users { + lastLogins { + id + name + lastLoginAt + } + } + } + `, + fetchPolicy: 'network-only', + update: (data) => data.users.lastLogins, + watchLoading (isLoading) { + this.lastLoginsLoading = isLoading + this.$store.commit(`loading${isLoading ? 'Start' : 'Stop'}`, 'admin-dashboard-lastlogins') + } } } } diff --git a/client/graph/admin/dashboard/dashboard-query-recentpages.gql b/client/graph/admin/dashboard/dashboard-query-recentpages.gql deleted file mode 100644 index c8959484..00000000 --- a/client/graph/admin/dashboard/dashboard-query-recentpages.gql +++ /dev/null @@ -1,17 +0,0 @@ -query { - pages { - list(limit: 10, orderBy: UPDATED, orderByDirection: DESC) { - id - locale - path - title - description - contentType - isPublished - isPrivate - privateNS - createdAt - updatedAt - } - } -} diff --git a/client/themes/default/components/nav-sidebar.vue b/client/themes/default/components/nav-sidebar.vue index 35feb3cd..ca13c8c6 100644 --- a/client/themes/default/components/nav-sidebar.vue +++ b/client/themes/default/components/nav-sidebar.vue @@ -1,6 +1,6 @@