Add drive chart
This commit is contained in:
		
							parent
							
								
									f59c68022f
								
							
						
					
					
						commit
						8ecf3db608
					
				
					 4 changed files with 94 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -946,6 +946,11 @@ desktop/views/pages/admin/admin.users-chart.vue:
 | 
			
		|||
  local: "ローカル"
 | 
			
		||||
  remote: "リモート"
 | 
			
		||||
 | 
			
		||||
desktop/views/pages/admin/admin.drive-chart.vue:
 | 
			
		||||
  title: "ドライブ"
 | 
			
		||||
  local: "ローカル"
 | 
			
		||||
  remote: "リモート"
 | 
			
		||||
 | 
			
		||||
desktop/views/pages/deck/deck.tl-column.vue:
 | 
			
		||||
  is-media-only: "メディア投稿のみ"
 | 
			
		||||
  is-media-view: "メディアビュー"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,51 @@
 | 
			
		|||
<template>
 | 
			
		||||
<svg :viewBox="`0 0 ${ viewBoxX } ${ viewBoxY }`">
 | 
			
		||||
	<polyline
 | 
			
		||||
		:points="points"
 | 
			
		||||
		fill="none"
 | 
			
		||||
		stroke-width="1"
 | 
			
		||||
		stroke="#555"/>
 | 
			
		||||
</svg>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
import Vue from 'vue';
 | 
			
		||||
 | 
			
		||||
export default Vue.extend({
 | 
			
		||||
	props: {
 | 
			
		||||
		chart: {
 | 
			
		||||
			required: true
 | 
			
		||||
		},
 | 
			
		||||
		type: {
 | 
			
		||||
			type: String,
 | 
			
		||||
			required: true
 | 
			
		||||
		}
 | 
			
		||||
	},
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			viewBoxX: 365,
 | 
			
		||||
			viewBoxY: 70,
 | 
			
		||||
			points: null
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	created() {
 | 
			
		||||
		const peak = Math.max.apply(null, this.chart.map(d => this.type == 'local' ? d.drive.local.totalSize : d.drive.remote.totalSize));
 | 
			
		||||
 | 
			
		||||
		if (peak != 0) {
 | 
			
		||||
			const data = this.chart.slice().reverse().map(x => ({
 | 
			
		||||
				size: this.type == 'local' ? x.drive.local.totalSize : x.drive.remote.totalSize
 | 
			
		||||
			}));
 | 
			
		||||
 | 
			
		||||
			this.points = data.map((d, i) => `${i},${(1 - (d.size / peak)) * this.viewBoxY}`).join(' ');
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
});
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="stylus" scoped>
 | 
			
		||||
svg
 | 
			
		||||
	display block
 | 
			
		||||
	padding 10px
 | 
			
		||||
	width 100%
 | 
			
		||||
 | 
			
		||||
</style>
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,34 @@
 | 
			
		|||
<template>
 | 
			
		||||
<div class="card">
 | 
			
		||||
	<header>%i18n:@title%</header>
 | 
			
		||||
	<div class="card">
 | 
			
		||||
		<header>%i18n:@local%</header>
 | 
			
		||||
		<x-chart v-if="chart" :chart="chart" type="local"/>
 | 
			
		||||
	</div>
 | 
			
		||||
	<div class="card">
 | 
			
		||||
		<header>%i18n:@remote%</header>
 | 
			
		||||
		<x-chart v-if="chart" :chart="chart" type="remote"/>
 | 
			
		||||
	</div>
 | 
			
		||||
</div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
import Vue from "vue";
 | 
			
		||||
import XChart from "./admin.drive-chart.chart.vue";
 | 
			
		||||
 | 
			
		||||
export default Vue.extend({
 | 
			
		||||
	components: {
 | 
			
		||||
		XChart
 | 
			
		||||
	},
 | 
			
		||||
	props: {
 | 
			
		||||
		chart: {
 | 
			
		||||
			required: true
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
});
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="stylus" scoped>
 | 
			
		||||
@import '~const.styl'
 | 
			
		||||
 | 
			
		||||
</style>
 | 
			
		||||
| 
						 | 
				
			
			@ -13,6 +13,7 @@
 | 
			
		|||
			<x-dashboard/>
 | 
			
		||||
			<x-users-chart :chart="chart"/>
 | 
			
		||||
			<x-notes-chart :chart="chart"/>
 | 
			
		||||
			<x-drive-chart :chart="chart"/>
 | 
			
		||||
		</div>
 | 
			
		||||
		<div v-if="page == 'users'">
 | 
			
		||||
			<x-suspend-user/>
 | 
			
		||||
| 
						 | 
				
			
			@ -35,6 +36,7 @@ import XVerifyUser from "./admin.verify-user.vue";
 | 
			
		|||
import XUnverifyUser from "./admin.unverify-user.vue";
 | 
			
		||||
import XUsersChart from "./admin.users-chart.vue";
 | 
			
		||||
import XNotesChart from "./admin.notes-chart.vue";
 | 
			
		||||
import XDriveChart from "./admin.drive-chart.vue";
 | 
			
		||||
 | 
			
		||||
export default Vue.extend({
 | 
			
		||||
	components: {
 | 
			
		||||
| 
						 | 
				
			
			@ -44,7 +46,8 @@ export default Vue.extend({
 | 
			
		|||
		XVerifyUser,
 | 
			
		||||
		XUnverifyUser,
 | 
			
		||||
		XUsersChart,
 | 
			
		||||
		XNotesChart
 | 
			
		||||
		XNotesChart,
 | 
			
		||||
		XDriveChart
 | 
			
		||||
	},
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue