blob: 8c7cc0c449ffebf9ecf7f33157f2f56bf1013cf4 [file] [log] [blame]
<template>
<div class="page-header-index-wide">
<a-row :gutter="24">
<a-col
:sm="12"
:md="12"
:xl="6"
:style="{ marginTop: '24px' }"
v-for="stat in stats"
:key="stat.type">
<chart-card :loading="loading" style="padding-top: 24px">
<div style="text-align: center">
<h4>{{ stat.name }}</h4>
<h1>{{ stat.count == undefined ? 0 : stat.count }}</h1>
</div>
</chart-card>
</a-col>
</a-row>
</div>
</template>
<script>
import { api } from '@/api'
import ChartCard from '@/components/chart/ChartCard'
import ACol from 'ant-design-vue/es/grid/Col'
import ATooltip from 'ant-design-vue/es/tooltip/Tooltip'
import MiniArea from '@/components/chart/MiniArea'
import MiniBar from '@/components/chart/MiniBar'
import MiniProgress from '@/components/chart/MiniProgress'
import Bar from '@/components/chart/Bar'
import Trend from '@/components/Trend'
export default {
name: 'UsageDashboard',
components: {
ATooltip,
ACol,
ChartCard,
MiniArea,
MiniBar,
MiniProgress,
Bar,
Trend
},
data () {
return {
loading: false,
stats: []
}
},
mounted () {
this.fetchData()
},
watch: {
'$route' (to, from) {
if (to.name === 'dashboard') {
this.fetchData()
}
}
},
methods: {
fetchData () {
this.stats = []
api('listVirtualMachines', { state: 'Running', listall: true }).then(json => {
var count = 0
if (json && json.listvirtualmachinesresponse) {
count = json.listvirtualmachinesresponse.count
}
this.stats.push({ name: 'Running VMs', count: count })
})
api('listVirtualMachines', { state: 'Stopped', listall: true }).then(json => {
var count = 0
if (json && json.listvirtualmachinesresponse) {
count = json.listvirtualmachinesresponse.count
}
this.stats.push({ name: 'Stopped VMs', count: count })
})
api('listVirtualMachines', { listall: true }).then(json => {
var count = 0
if (json && json.listvirtualmachinesresponse) {
count = json.listnetworksresponse.count
}
this.stats.push({ name: 'Total VMs', count: count })
})
api('listNetworks', { listall: true }).then(json => {
var count = 0
if (json && json.listnetworksresponse) {
count = json.listnetworksresponse.count
}
this.stats.push({ name: 'Isolated Networks', count: count })
})
api('listPublicIpAddresses', { listall: true }).then(json => {
var count = 0
if (json && json.listpublicipaddressesresponse) {
count = json.listpublicipaddressesresponse.count
}
this.stats.push({ name: 'Public IP Addresses', count: count })
})
api('listEvents', { listall: true }).then(json => {
var count = 0
if (json && json.listeventsresponse) {
count = json.listeventsresponse.count
}
this.stats.push({ name: 'Events', count: count })
})
}
}
}
</script>
<style lang="less" scoped>
.extra-wrapper {
line-height: 55px;
//padding-right: 24px;
.extra-item {
display: inline-block;
//margin-right: 24px;
a {
//margin-left: 24px;
}
}
}
</style>