summaryrefslogtreecommitdiff
path: root/src/client/app/mobile/views
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-11-03 16:44:05 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-11-03 16:44:05 +0900
commite88f7ca7b2c06cac067c54dd18695ab27f303fab (patch)
treeb8fa1d6b38f406a82b69fd60da6b4831449abde6 /src/client/app/mobile/views
parent[API] Increase chart limit (diff)
downloadmisskey-e88f7ca7b2c06cac067c54dd18695ab27f303fab.tar.gz
misskey-e88f7ca7b2c06cac067c54dd18695ab27f303fab.tar.bz2
misskey-e88f7ca7b2c06cac067c54dd18695ab27f303fab.zip
[Client] Fix some charts
Diffstat (limited to 'src/client/app/mobile/views')
-rw-r--r--src/client/app/mobile/views/components/activity.vue111
1 files changed, 79 insertions, 32 deletions
diff --git a/src/client/app/mobile/views/components/activity.vue b/src/client/app/mobile/views/components/activity.vue
index dcd319cb69..627bebbd32 100644
--- a/src/client/app/mobile/views/components/activity.vue
+++ b/src/client/app/mobile/views/components/activity.vue
@@ -1,23 +1,13 @@
<template>
<div class="mk-activity">
- <svg v-if="data" ref="canvas" viewBox="0 0 30 1" preserveAspectRatio="none">
- <g v-for="(d, i) in data">
- <rect width="0.8" :height="d.notesH"
- :x="i + 0.1" :y="1 - d.notesH - d.repliesH - d.renotesH"
- fill="#41ddde"/>
- <rect width="0.8" :height="d.repliesH"
- :x="i + 0.1" :y="1 - d.repliesH - d.renotesH"
- fill="#f7796c"/>
- <rect width="0.8" :height="d.renotesH"
- :x="i + 0.1" :y="1 - d.renotesH"
- fill="#a1de41"/>
- </g>
- </svg>
+ <div ref="chart"></div>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
+import * as ApexCharts from 'apexcharts';
+
export default Vue.extend({
props: ['user'],
data() {
@@ -28,19 +18,84 @@ export default Vue.extend({
};
},
mounted() {
- (this as any).api('aggregation/users/activity', {
+ (this as any).api('charts/user/notes', {
userId: this.user.id,
- limit: 30
- }).then(data => {
- data.forEach(d => d.total = d.notes + d.replies + d.renotes);
- this.peak = Math.max.apply(null, data.map(d => d.total));
- data.forEach(d => {
- d.notesH = d.notes / this.peak;
- d.repliesH = d.replies / this.peak;
- d.renotesH = d.renotes / this.peak;
+ span: 'day',
+ limit: 21
+ }).then(stats => {
+ const normal = [];
+ const reply = [];
+ const renote = [];
+
+ const now = new Date();
+ const y = now.getFullYear();
+ const m = now.getMonth();
+ const d = now.getDate();
+
+ for (let i = 0; i < 21; i++) {
+ const x = new Date(y, m, d - i);
+ normal.push([
+ x,
+ stats.diffs.normal[i]
+ ]);
+ reply.push([
+ x,
+ stats.diffs.reply[i]
+ ]);
+ renote.push([
+ x,
+ stats.diffs.renote[i]
+ ]);
+ }
+
+ const chart = new ApexCharts(this.$refs.chart, {
+ chart: {
+ type: 'bar',
+ stacked: true,
+ height: 100,
+ sparkline: {
+ enabled: true
+ },
+ },
+ plotOptions: {
+ bar: {
+ columnWidth: '90%',
+ endingShape: 'rounded'
+ }
+ },
+ grid: {
+ clipMarkers: false,
+ padding: {
+ top: 0,
+ right: 8,
+ bottom: 0,
+ left: 8
+ }
+ },
+ tooltip: {
+ shared: true,
+ intersect: false
+ },
+ series: [{
+ name: 'Normal',
+ data: normal
+ }, {
+ name: 'Reply',
+ data: reply
+ }, {
+ name: 'Renote',
+ data: renote
+ }],
+ xaxis: {
+ type: 'datetime',
+ crosshairs: {
+ width: 1,
+ opacity: 1
+ }
+ }
});
- data.reverse();
- this.data = data;
+
+ chart.render();
});
}
});
@@ -51,12 +106,4 @@ export default Vue.extend({
max-width 600px
margin 0 auto
- > svg
- display block
- width 100%
- height 80px
-
- > rect
- transform-origin center
-
</style>