Files
watchstate/frontend/pages/report.vue
2024-08-02 23:33:05 +03:00

75 lines
2.7 KiB
Vue

<template>
<div>
<div class="columns is-multiline">
<div class="column is-12 is-clearfix is-unselectable">
<span class="title is-4">
<span class="icon"><i class="fas fa-flag"></i></span>
System Report
</span>
<div class="is-pulled-right" v-if="false === show_report_warning">
<div class="field is-grouped">
<p class="control">
<button class="button is-primary" @click="copyText(data.join('\n'))" v-tooltip.bottom="'Copy Report'">
<span class="icon"><i class="fas fa-copy"></i></span>
</button>
</p>
</div>
</div>
<div class="subtitle is-hidden-mobile">
This page shows basic information about the various components of the system.
</div>
</div>
<div class="column is-12">
<template v-if="show_report_warning">
<Message message_class="has-background-warning-80 has-text-dark" title="Warning"
icon="fas fa-exclamation-triangle">
While we try to make sure no sensitive information is leaked via the report, it's possible that something
might be missed. Please review the report before posting it. If you notice any sensitive information, please
report it to the developers. so we can fix it.
</Message>
<div class="mt-4 has-text-centered">
<NuxtLink class="is-block is-fullwidth is-primary" @click="show_report_warning = false">
<span class="icon-text">
<span class="icon"><i class="fas fa-thumbs-up"></i></span>
<span>I Understand. Show me the report.</span>
</span>
</NuxtLink>
</div>
</template>
<Message message_class="has-background-info-90 has-text-dark" v-if="!show_report_warning && data.length < 1"
title="Loading" icon="fas fa-spinner fa-spin" message="Generating the report. Please wait..."/>
<template v-if="!show_report_warning && data.length > 0">
<pre style="min-height: 60vh;max-height:70vh; overflow-y: scroll" id="report-content"
><code><span v-for="(item, index) in data" :key="index" class="is-block">{{ item }}</span></code></pre>
</template>
</div>
</div>
</div>
</template>
<script setup>
import {copyText} from '~/utils/index'
import request from '~/utils/request'
useHead({title: `System Report`})
const data = ref([])
const show_report_warning = ref(true)
watch(show_report_warning, async v => {
if (false !== v) {
return
}
const response = await request(`/system/report`)
const json = await response.json()
if (useRoute().name !== 'report') {
return
}
data.value = json
})
</script>