summaryrefslogtreecommitdiff
path: root/packages/client/src/widgets/activity.vue
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2021-11-12 02:02:25 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2021-11-12 02:02:25 +0900
commit0e4a111f81cceed275d9bec2695f6e401fb654d8 (patch)
tree40874799472fa07416f17b50a398ac33b7771905 /packages/client/src/widgets/activity.vue
parentupdate deps (diff)
downloadmisskey-0e4a111f81cceed275d9bec2695f6e401fb654d8.tar.gz
misskey-0e4a111f81cceed275d9bec2695f6e401fb654d8.tar.bz2
misskey-0e4a111f81cceed275d9bec2695f6e401fb654d8.zip
refactoring
Resolve #7779
Diffstat (limited to 'packages/client/src/widgets/activity.vue')
-rw-r--r--packages/client/src/widgets/activity.vue82
1 files changed, 82 insertions, 0 deletions
diff --git a/packages/client/src/widgets/activity.vue b/packages/client/src/widgets/activity.vue
new file mode 100644
index 0000000000..eaac1455ad
--- /dev/null
+++ b/packages/client/src/widgets/activity.vue
@@ -0,0 +1,82 @@
+<template>
+<MkContainer :show-header="props.showHeader" :naked="props.transparent">
+ <template #header><i class="fas fa-chart-bar"></i>{{ $ts._widgets.activity }}</template>
+ <template #func><button @click="toggleView()" class="_button"><i class="fas fa-sort"></i></button></template>
+
+ <div>
+ <MkLoading v-if="fetching"/>
+ <template v-else>
+ <XCalendar v-show="props.view === 0" :data="[].concat(activity)"/>
+ <XChart v-show="props.view === 1" :data="[].concat(activity)"/>
+ </template>
+ </div>
+</MkContainer>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import MkContainer from '@/components/ui/container.vue';
+import define from './define';
+import XCalendar from './activity.calendar.vue';
+import XChart from './activity.chart.vue';
+import * as os from '@/os';
+
+const widget = define({
+ name: 'activity',
+ props: () => ({
+ showHeader: {
+ type: 'boolean',
+ default: true,
+ },
+ transparent: {
+ type: 'boolean',
+ default: false,
+ },
+ view: {
+ type: 'number',
+ default: 0,
+ hidden: true,
+ },
+ })
+});
+
+export default defineComponent({
+ extends: widget,
+ components: {
+ MkContainer,
+ XCalendar,
+ XChart,
+ },
+ data() {
+ return {
+ fetching: true,
+ activity: null,
+ };
+ },
+ mounted() {
+ os.api('charts/user/notes', {
+ userId: this.$i.id,
+ span: 'day',
+ limit: 7 * 21
+ }).then(activity => {
+ this.activity = activity.diffs.normal.map((_, i) => ({
+ total: activity.diffs.normal[i] + activity.diffs.reply[i] + activity.diffs.renote[i],
+ notes: activity.diffs.normal[i],
+ replies: activity.diffs.reply[i],
+ renotes: activity.diffs.renote[i]
+ }));
+ this.fetching = false;
+ });
+ },
+ methods: {
+ toggleView() {
+ if (this.props.view === 1) {
+ this.props.view = 0;
+ } else {
+ this.props.view++;
+ }
+ this.save();
+ }
+ }
+});
+</script>