summaryrefslogtreecommitdiff
path: root/src/web/app/desktop/views/components/widgets/server.vue
blob: 1c0da84225ca002f8014f630ffe72abda057d67d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<template>
<div class="mkw-server" :data-melt="props.design == 2">
	<template v-if="props.design == 0">
		<p class="title">%fa:server%%i18n:desktop.tags.mk-server-home-widget.title%</p>
		<button @click="toggle" title="%i18n:desktop.tags.mk-server-home-widget.toggle%">%fa:sort%</button>
	</template>
	<p class="fetching" v-if="fetching">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
	<template v-if="!fetching">
		<x-cpu-memory v-show="props.view == 0" :connection="connection"/>
		<x-cpu v-show="props.view == 1" :connection="connection" :meta="meta"/>
		<x-memory v-show="props.view == 2" :connection="connection"/>
		<x-disk v-show="props.view == 3" :connection="connection"/>
		<x-uptimes v-show="props.view == 4" :connection="connection"/>
		<x-info v-show="props.view == 5" :connection="connection" :meta="meta"/>
	</template>
</div>
</template>

<script lang="ts">
import define from '../../../../common/define-widget';
import XCpuMemory from './server.cpu-memory.vue';
import XCpu from './server.cpu.vue';
import XMemory from './server.memory.vue';
import XDisk from './server.disk.vue';
import XUptimes from './server.uptimes.vue';
import XInfo from './server.info.vue';

export default define({
	name: 'server',
	props: () => ({
		design: 0,
		view: 0
	})
}).extend({
	components: {
		XCpuMemory,
		XCpu,
		XMemory,
		XDisk,
		XUptimes,
		XInfo
	},
	data() {
		return {
			fetching: true,
			meta: null,
			connection: null,
			connectionId: null
		};
	},
	mounted() {
		(this as any).os.getMeta().then(meta => {
			this.meta = meta;
			this.fetching = false;
		});

		this.connection = (this as any).os.streams.serverStream.getConnection();
		this.connectionId = (this as any).os.streams.serverStream.use();
	},
	beforeDestroy() {
		(this as any).os.streams.serverStream.dispose(this.connectionId);
	},
	methods: {
		toggle() {
			if (this.props.view == 5) {
				this.props.view = 0;
			} else {
				this.props.view++;
			}
		},
		func() {
			if (this.props.design == 2) {
				this.props.design = 0;
			} else {
				this.props.design++;
			}
		}
	}
});
</script>

<style lang="stylus" scoped>
.mkw-server
	background #fff
	border solid 1px rgba(0, 0, 0, 0.075)
	border-radius 6px

	&[data-melt]
		background transparent !important
		border none !important

	> .title
		z-index 1
		margin 0
		padding 0 16px
		line-height 42px
		font-size 0.9em
		font-weight bold
		color #888
		box-shadow 0 1px rgba(0, 0, 0, 0.07)

		> [data-fa]
			margin-right 4px

	> button
		position absolute
		z-index 2
		top 0
		right 0
		padding 0
		width 42px
		font-size 0.9em
		line-height 42px
		color #ccc

		&:hover
			color #aaa

		&:active
			color #999

	> .fetching
		margin 0
		padding 16px
		text-align center
		color #aaa

		> [data-fa]
			margin-right 4px

</style>