diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2022-12-27 14:31:24 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2022-12-27 14:31:24 +0900 |
| commit | db6fff6f2659e7f8dd82d3e56010ff3e08eea184 (patch) | |
| tree | 523da8384140212c9a92d5f39137bc81c1ed9311 /packages/client/src | |
| parent | 13.0.0-beta.1 (diff) | |
| download | sharkey-db6fff6f2659e7f8dd82d3e56010ff3e08eea184.tar.gz sharkey-db6fff6f2659e7f8dd82d3e56010ff3e08eea184.tar.bz2 sharkey-db6fff6f2659e7f8dd82d3e56010ff3e08eea184.zip | |
wip: retention for dashboard
Diffstat (limited to 'packages/client/src')
| -rw-r--r-- | packages/client/src/pages/admin/overview.retention.vue | 49 | ||||
| -rw-r--r-- | packages/client/src/pages/admin/overview.vue | 6 |
2 files changed, 55 insertions, 0 deletions
diff --git a/packages/client/src/pages/admin/overview.retention.vue b/packages/client/src/pages/admin/overview.retention.vue new file mode 100644 index 0000000000..feac6f8118 --- /dev/null +++ b/packages/client/src/pages/admin/overview.retention.vue @@ -0,0 +1,49 @@ +<template> +<div> + <MkLoading v-if="fetching"/> + <div v-else :class="$style.root"> + <div v-for="row in retention" class="row"> + <div v-for="value in getValues(row)" v-tooltip="value.percentage" class="cell"> + </div> + </div> + </div> +</div> +</template> + +<script lang="ts" setup> +import { onMounted, onUnmounted, ref } from 'vue'; +import * as os from '@/os'; +import number from '@/filters/number'; +import { i18n } from '@/i18n'; + +let retention: any = $ref(null); +let fetching = $ref(true); + +function getValues(row) { + const data = []; + for (const key in row.data) { + data.push({ + date: new Date(key), + value: number(row.data[key]), + percentage: `${Math.ceil(row.data[key] / row.users) * 100}%`, + }); + } + data.sort((a, b) => a.date > b.date); + return data; +} + +onMounted(async () => { + retention = await os.apiGet('retention', {}); + + fetching = false; +}); +</script> + +<style lang="scss" module> +.root { + + &:global { + + } +} +</style> diff --git a/packages/client/src/pages/admin/overview.vue b/packages/client/src/pages/admin/overview.vue index cc5b9b7b68..d656e55200 100644 --- a/packages/client/src/pages/admin/overview.vue +++ b/packages/client/src/pages/admin/overview.vue @@ -17,6 +17,11 @@ </MkFolder> <MkFolder class="item"> + <template #header>Retention rate</template> + <XRetention/> + </MkFolder> + + <MkFolder class="item"> <template #header>Moderators</template> <XModerators/> </MkFolder> @@ -63,6 +68,7 @@ import XApRequests from './overview.ap-requests.vue'; import XUsers from './overview.users.vue'; import XActiveUsers from './overview.active-users.vue'; import XStats from './overview.stats.vue'; +import XRetention from './overview.retention.vue'; import XModerators from './overview.moderators.vue'; import XHeatmap from './overview.heatmap.vue'; import MkTagCloud from '@/components/MkTagCloud.vue'; |