Sharkey/src/client/app/admin/views/dashboard.vue

187 lines
3.2 KiB
Vue
Raw Normal View History

2018-11-02 16:05:53 +02:00
<template>
<div class="obdskegsannmntldydackcpzezagxqfy">
2018-11-02 20:30:28 +02:00
<header v-if="meta">
<p><b>Misskey</b><span>{{ meta.version }}</span></p>
<p><b>Machine</b><span>{{ meta.machine }}</span></p>
<p><b>OS</b><span>{{ meta.os }}</span></p>
<p><b>Node</b><span>{{ meta.node }}</span></p>
<p>藍ちゃかわいい</p>
</header>
2018-11-02 16:05:53 +02:00
<div v-if="stats" class="stats">
<div>
<div>
2018-11-02 19:06:34 +02:00
<div>%fa:user%</div>
<div>
<span>%i18n:@accounts%</span>
<b class="primary">{{ stats.originalUsersCount | number }}</b>
</div>
</div>
<div>
<span>%fa:home% %i18n:@this-instance%</span>
2018-11-02 16:05:53 +02:00
</div>
</div>
<div>
<div>
2018-11-02 19:06:34 +02:00
<div>%fa:pencil-alt%</div>
<div>
<span>%i18n:@notes%</span>
<b class="primary">{{ stats.originalNotesCount | number }}</b>
</div>
</div>
<div>
<span>%fa:home% %i18n:@this-instance%</span>
2018-11-02 16:05:53 +02:00
</div>
</div>
<div>
<div>
2018-11-02 19:06:34 +02:00
<div>%fa:user%</div>
<div>
<span>%i18n:@accounts%</span>
<b>{{ stats.usersCount | number }}</b>
</div>
</div>
<div>
<span>%fa:globe% %i18n:@federated%</span>
2018-11-02 16:05:53 +02:00
</div>
</div>
<div>
<div>
2018-11-02 19:06:34 +02:00
<div>%fa:pencil-alt%</div>
<div>
<span>%i18n:@notes%</span>
<b>{{ stats.notesCount | number }}</b>
</div>
</div>
<div>
<span>%fa:globe% %i18n:@federated%</span>
2018-11-02 16:05:53 +02:00
</div>
</div>
</div>
2018-11-02 20:00:23 +02:00
<div class="charts">
<x-charts/>
</div>
2018-11-02 16:05:53 +02:00
<div class="cpu-memory">
<x-cpu-memory :connection="connection"/>
</div>
</div>
</template>
<script lang="ts">
import Vue from "vue";
import XCpuMemory from "./cpu-memory.vue";
2018-11-02 20:00:23 +02:00
import XCharts from "./charts.vue";
2018-11-02 16:05:53 +02:00
export default Vue.extend({
components: {
2018-11-02 20:00:23 +02:00
XCpuMemory,
XCharts
2018-11-02 16:05:53 +02:00
},
data() {
return {
stats: null,
2018-11-02 20:30:28 +02:00
connection: null,
meta: null
2018-11-02 16:05:53 +02:00
};
},
created() {
this.connection = (this as any).os.stream.useSharedConnection('serverStats');
(this as any).os.getMeta().then(meta => {
2018-11-02 20:30:28 +02:00
this.meta = meta;
2018-11-02 16:05:53 +02:00
});
(this as any).api('stats').then(stats => {
this.stats = stats;
});
},
beforeDestroy() {
this.connection.dispose();
}
});
</script>
<style lang="stylus" scoped>
.obdskegsannmntldydackcpzezagxqfy
2018-11-02 20:30:28 +02:00
> header
display flex
margin-bottom 16px
padding-bottom 16px
border-bottom solid 1px #ccc
color #777
font-size 14px
> p
display inline
margin 0 32px 0 0
> b
&:after
content ':'
margin-right 8px
&:last-child
margin-left auto
margin-right 0
2018-11-02 16:05:53 +02:00
> .stats
display flex
justify-content space-between
margin-bottom 16px
> div
flex 1
max-width 300px
margin-right 16px
color var(--text)
box-shadow 0 2px 4px rgba(0, 0, 0, 0.1)
background var(--face)
border-radius 8px
&:last-child
2018-11-02 19:06:34 +02:00
margin-right 0
2018-11-02 16:05:53 +02:00
> div:first-child
2018-11-02 19:06:34 +02:00
display flex
align-items center
text-align center
&:last-child
margin-right 0
> div:first-child
padding 16px 24px
font-size 28px
> div:last-child
flex 1
padding 16px 32px 16px 0
text-align right
> span
font-size 70%
opacity 0.7
> b
display block
&.primary
color var(--primary)
2018-11-02 16:05:53 +02:00
> div:last-child
2018-11-02 19:06:34 +02:00
padding 6px 16px
border-top solid 1px #eee
2018-11-02 16:05:53 +02:00
> span
2018-11-02 19:06:34 +02:00
font-size 70%
2018-11-02 16:05:53 +02:00
opacity 0.7
2018-11-02 20:00:23 +02:00
> .charts
margin-bottom 16px
2018-11-02 16:05:53 +02:00
> .cpu-memory
margin-bottom 16px
</style>