OpenDTU-old/webapp/src/components/SystemInfoView.vue
2022-10-12 00:17:40 +02:00

117 lines
3.8 KiB
Vue

<template>
<div class="container-xxl" role="main">
<div class="page-header">
<h1>System Info</h1>
</div>
<div class="text-center" v-if="dataLoading">
<div class="spinner-border" role="status">
<span class="visually-hidden">Loading...</span>
</div>
</div>
<template v-if="!dataLoading">
<FirmwareInfo v-bind="systemDataList" />
<div class="mt-5"></div>
<HardwareInfo v-bind="systemDataList" />
<div class="mt-5"></div>
<MemoryInfo v-bind="systemDataList" />
<div class="mt-5"></div>
<RadioInfo v-bind="systemDataList" />
<div class="mt-5"></div>
</template>
</div>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
import HardwareInfo from "@/components/partials/HardwareInfo.vue";
import FirmwareInfo from "@/components/partials/FirmwareInfo.vue";
import MemoryInfo from "@/components/partials/MemoryInfo.vue";
import RadioInfo from "@/components/partials/RadioInfo.vue";
export default defineComponent({
components: {
HardwareInfo,
FirmwareInfo,
MemoryInfo,
RadioInfo,
},
data() {
return {
dataLoading: true,
systemDataList: {
// HardwareInfo
chipmodel: "",
chiprevision: 0,
chipcores: 0,
cpufreq: 0,
// FirmwareInfo
hostname: "",
sdkversion: "",
config_version: "",
git_hash: "",
resetreason_0: "",
resetreason_1: "",
cfgsavecount: 0,
uptime: 0,
update_text: "",
update_url: "",
update_status: "",
// MemoryInfo
heap_total: 0,
heap_used: 0,
littlefs_total: 0,
littlefs_used: 0,
sketch_total: 0,
sketch_used: 0,
// RadioInfo
radio_connected: false,
radio_pvariant: false,
}
}
},
created() {
this.getSystemInfo();
},
methods: {
getSystemInfo() {
this.dataLoading = true;
fetch("/api/system/status")
.then((response) => response.json())
.then((data) => {
this.systemDataList = data;
this.dataLoading = false;
this.getUpdateInfo();
})
},
getUpdateInfo() {
const fetchUrl = "https://api.github.com/repos/tbnobody/OpenDTU/compare/"
+ this.systemDataList.git_hash?.substring(1) + "...HEAD";
fetch(fetchUrl)
.then((response) => {
if (response.ok) {
return response.json()
}
throw new Error('Error fetching version information');
})
.then((data) => {
if (data.total_commits > 0) {
this.systemDataList.update_text = "New version available! Show changes!"
this.systemDataList.update_status = "text-bg-danger";
this.systemDataList.update_url = data.html_url;
} else {
this.systemDataList.update_text = "Up to date!"
this.systemDataList.update_status = "text-bg-success";
}
})
.catch((error: Error) => {
this.systemDataList.update_text = error.message;
this.systemDataList.update_status = "text-bg-secondary";
});
}
},
});
</script>