Skip to content

Commit bcd3b05

Browse files
committed
Break out the server box into a component
1 parent 0d56ed1 commit bcd3b05

File tree

2 files changed

+60
-37
lines changed

2 files changed

+60
-37
lines changed

resources/assets/scripts/components/dashboard/Dashboard.vue

Lines changed: 10 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -15,42 +15,12 @@
1515
</div>
1616
</div>
1717
<transition-group class="w-full m-auto mt-4 animate fadein sm:flex flex-wrap content-start" v-else>
18-
<div class="server-box animate fadein" :key="index" v-for="(server, index) in servers.models">
19-
<router-link :to="{ name: 'server', params: { id: server.identifier }}" class="content">
20-
<div class="float-right">
21-
<div class="indicator"></div>
22-
</div>
23-
<div class="mb-4">
24-
<div class="text-black font-bold text-xl">
25-
{{ server.name }}
26-
</div>
27-
</div>
28-
<div class="mb-0 flex">
29-
<div class="usage">
30-
<div class="indicator-title">{{ $t('dashboard.index.cpu_title') }}</div>
31-
</div>
32-
<div class="usage">
33-
<div class="indicator-title">{{ $t('dashboard.index.memory_title') }}</div>
34-
</div>
35-
</div>
36-
<div class="mb-4 flex text-center">
37-
<div class="inline-block border border-grey-lighter border-l-0 p-4 flex-1">
38-
<span class="font-bold text-xl">---</span>
39-
<span class="font-light text-sm">%</span>
40-
</div>
41-
<div class="inline-block border border-grey-lighter border-l-0 border-r-0 p-4 flex-1">
42-
<span class="font-bold text-xl">---</span>
43-
<span class="font-light text-sm">Mb</span>
44-
</div>
45-
</div>
46-
<div class="flex items-center">
47-
<div class="text-sm">
48-
<p class="text-grey">{{ server.node }}</p>
49-
<p class="text-grey-dark">{{ server.allocation.ip }}:{{ server.allocation.port }}</p>
50-
</div>
51-
</div>
52-
</router-link>
53-
</div>
18+
<server-box
19+
v-for="(server, index) in servers.models"
20+
v-bind:key="index"
21+
v-bind:server="server"
22+
v-bind:resources="resources[server.uuid]"
23+
/>
5424
</transition-group>
5525
</div>
5626
</template>
@@ -59,15 +29,17 @@
5929
import { ServerCollection } from '../../models/server';
6030
import _ from 'lodash';
6131
import Flash from '../Flash';
32+
import ServerBox from './ServerBox';
6233
6334
export default {
6435
name: 'dashboard',
65-
components: { Flash },
36+
components: { ServerBox, Flash },
6637
data: function () {
6738
return {
6839
loading: true,
6940
search: '',
7041
servers: new ServerCollection,
42+
resources: {},
7143
}
7244
},
7345
@@ -92,6 +64,7 @@
9264
.then(response => {
9365
this.servers = new ServerCollection;
9466
response.data.data.forEach(obj => {
67+
this.resources[obj.attributes.uuid] = { cpu: 0, memory: 0 };
9568
this.servers.add(obj.attributes);
9669
});
9770
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<template>
2+
<div class="server-box animate fadein">
3+
<router-link :to="{ name: 'server', params: { id: server.identifier }}" class="content">
4+
<div class="float-right">
5+
<div class="indicator"></div>
6+
</div>
7+
<div class="mb-4">
8+
<div class="text-black font-bold text-xl">
9+
{{ server.name }}
10+
</div>
11+
</div>
12+
<div class="mb-0 flex">
13+
<div class="usage">
14+
<div class="indicator-title">{{ $t('dashboard.index.cpu_title') }}</div>
15+
</div>
16+
<div class="usage">
17+
<div class="indicator-title">{{ $t('dashboard.index.memory_title') }}</div>
18+
</div>
19+
</div>
20+
<div class="mb-4 flex text-center">
21+
<div class="inline-block border border-grey-lighter border-l-0 p-4 flex-1">
22+
<span class="font-bold text-xl">{{ resources.cpu > 0 ? resources.cpu : '&mdash;' }}</span>
23+
<span class="font-light text-sm">%</span>
24+
</div>
25+
<div class="inline-block border border-grey-lighter border-l-0 border-r-0 p-4 flex-1">
26+
<span class="font-bold text-xl">{{ resources.memory > 0 ? resources.memory : '&mdash;' }}</span>
27+
<span class="font-light text-sm">Mb</span>
28+
</div>
29+
</div>
30+
<div class="flex items-center">
31+
<div class="text-sm">
32+
<p class="text-grey">{{ server.node }}</p>
33+
<p class="text-grey-dark">{{ server.allocation.ip }}:{{ server.allocation.port }}</p>
34+
</div>
35+
</div>
36+
</router-link>
37+
</div>
38+
</template>
39+
40+
<script>
41+
import { Server } from '../../models/server';
42+
43+
export default {
44+
name: 'server-box',
45+
props: {
46+
server: { type: Server, required: true },
47+
resources: { type: Object, required: true },
48+
}
49+
};
50+
</script>

0 commit comments

Comments
 (0)