OpenDTU/webapp/src/views/MqttInfoView.vue
Bernhard Kirchen 866b539757 webapp: MQTT: no login with cert if TLS disabled
in the settings view we hide the "login with cert" setting while TLS is
disabled, so we should also hide that info in the info view when TLS is
disabled.
2024-11-01 23:46:01 +01:00

215 lines
9.0 KiB
Vue

<template>
<BasePage
:title="$t('mqttinfo.MqttInformation')"
:isLoading="dataLoading"
:show-reload="true"
@reload="getMqttInfo"
>
<CardElement :text="$t('mqttinfo.ConfigurationSummary')" textVariant="text-bg-primary" table>
<div class="table-responsive">
<table class="table table-hover table-condensed">
<tbody>
<tr>
<th>{{ $t('mqttinfo.Status') }}</th>
<td>
<StatusBadge
:status="mqttDataList.mqtt_enabled"
true_text="mqttinfo.Enabled"
false_text="mqttinfo.Disabled"
/>
</td>
</tr>
<tr>
<th>{{ $t('mqttinfo.Server') }}</th>
<td>{{ mqttDataList.mqtt_hostname }}</td>
</tr>
<tr>
<th>{{ $t('mqttinfo.Port') }}</th>
<td>{{ mqttDataList.mqtt_port }}</td>
</tr>
<tr>
<th>{{ $t('mqttinfo.ClientId') }}</th>
<td>{{ mqttDataList.mqtt_clientid }}</td>
</tr>
<tr>
<th>{{ $t('mqttinfo.Username') }}</th>
<td>{{ mqttDataList.mqtt_username }}</td>
</tr>
<tr>
<th>{{ $t('mqttinfo.BaseTopic') }}</th>
<td>{{ mqttDataList.mqtt_topic }}</td>
</tr>
<tr>
<th>{{ $t('mqttinfo.PublishInterval') }}</th>
<td>
{{
$t('mqttinfo.Seconds', {
sec: mqttDataList.mqtt_publish_interval,
})
}}
</td>
</tr>
<tr>
<th>{{ $t('mqttinfo.CleanSession') }}</th>
<td>
<StatusBadge
:status="mqttDataList.mqtt_clean_session"
true_text="mqttinfo.Enabled"
false_text="mqttinfo.Disabled"
/>
</td>
</tr>
<tr>
<th>{{ $t('mqttinfo.Retain') }}</th>
<td>
<StatusBadge
:status="mqttDataList.mqtt_retain"
true_text="mqttinfo.Enabled"
false_text="mqttinfo.Disabled"
/>
</td>
</tr>
<tr>
<th>{{ $t('mqttinfo.Tls') }}</th>
<td>
<StatusBadge
:status="mqttDataList.mqtt_tls"
true_text="mqttinfo.Enabled"
false_text="mqttinfo.Disabled"
/>
</td>
</tr>
<tr v-if="mqttDataList.mqtt_tls">
<th>{{ $t('mqttinfo.RootCertifcateInfo') }}</th>
<td>{{ mqttDataList.mqtt_root_ca_cert_info }}</td>
</tr>
<tr v-if="mqttDataList.mqtt_tls">
<th>{{ $t('mqttinfo.TlsCertLogin') }}</th>
<td>
<StatusBadge
:status="mqttDataList.mqtt_tls_cert_login"
true_text="mqttinfo.Enabled"
false_text="mqttinfo.Disabled"
/>
</td>
</tr>
<tr v-if="mqttDataList.mqtt_tls && mqttDataList.mqtt_tls_cert_login">
<th>{{ $t('mqttinfo.ClientCertifcateInfo') }}</th>
<td>{{ mqttDataList.mqtt_client_cert_info }}</td>
</tr>
</tbody>
</table>
</div>
</CardElement>
<CardElement :text="$t('mqttinfo.HassSummary')" textVariant="text-bg-primary" add-space table>
<div class="table-responsive">
<table class="table table-hover table-condensed">
<tbody>
<tr>
<th>{{ $t('mqttinfo.Status') }}</th>
<td>
<StatusBadge
:status="mqttDataList.mqtt_hass_enabled"
true_text="mqttinfo.Enabled"
false_text="mqttinfo.Disabled"
/>
</td>
</tr>
<tr>
<th>{{ $t('mqttinfo.BaseTopic') }}</th>
<td>{{ mqttDataList.mqtt_hass_topic }}</td>
</tr>
<tr>
<th>{{ $t('mqttinfo.Retain') }}</th>
<td>
<StatusBadge
:status="mqttDataList.mqtt_hass_retain"
true_text="mqttinfo.Enabled"
false_text="mqttinfo.Disabled"
/>
</td>
</tr>
<tr>
<th>{{ $t('mqttinfo.Expire') }}</th>
<td>
<StatusBadge
:status="mqttDataList.mqtt_hass_expire"
true_text="mqttinfo.Enabled"
false_text="mqttinfo.Disabled"
/>
</td>
</tr>
<tr>
<th>{{ $t('mqttinfo.IndividualPanels') }}</th>
<td>
<StatusBadge
:status="mqttDataList.mqtt_hass_individualpanels"
true_text="mqttinfo.Enabled"
false_text="mqttinfo.Disabled"
/>
</td>
</tr>
</tbody>
</table>
</div>
</CardElement>
<CardElement :text="$t('mqttinfo.RuntimeSummary')" textVariant="text-bg-primary" add-space table>
<div class="table-responsive">
<table class="table table-hover table-condensed">
<tbody>
<tr>
<th>{{ $t('mqttinfo.ConnectionStatus') }}</th>
<td>
<StatusBadge
:status="mqttDataList.mqtt_connected"
true_text="mqttinfo.Connected"
false_text="mqttinfo.Disconnected"
/>
</td>
</tr>
</tbody>
</table>
</div>
</CardElement>
</BasePage>
</template>
<script lang="ts">
import BasePage from '@/components/BasePage.vue';
import CardElement from '@/components/CardElement.vue';
import StatusBadge from '@/components/StatusBadge.vue';
import type { MqttStatus } from '@/types/MqttStatus';
import { authHeader, handleResponse } from '@/utils/authentication';
import { defineComponent } from 'vue';
export default defineComponent({
components: {
BasePage,
CardElement,
StatusBadge,
},
data() {
return {
dataLoading: true,
mqttDataList: {} as MqttStatus,
};
},
created() {
this.getMqttInfo();
},
methods: {
getMqttInfo() {
this.dataLoading = true;
fetch('/api/mqtt/status', { headers: authHeader() })
.then((response) => handleResponse(response, this.$emitter, this.$router))
.then((data) => {
this.mqttDataList = data;
this.dataLoading = false;
});
},
},
});
</script>