blob: 302876736856a9649ef1d0e1b7ab985654eec81c [file] [log] [blame]
Dixsie Wolmersc4b87572021-10-07 16:15:50 -05001<template>
2 <page-section
3 v-if="firstInterface"
4 :section-title="$t('pageNetwork.networkSettings')"
5 >
6 <b-row>
7 <b-col md="3">
8 <dl>
Dixsie Wolmers12dc20c2021-12-03 14:29:26 -06009 <dt>
10 {{ $t('pageNetwork.hostname') }}
11 <b-button variant="link" class="p-1" @click="initSettingsModal()">
12 <icon-edit :title="$t('pageNetwork.modal.editHostnameTitle')" />
13 </b-button>
14 </dt>
Dixsie Wolmersc4b87572021-10-07 16:15:50 -050015 <dd>{{ dataFormatter(firstInterface.hostname) }}</dd>
16 </dl>
17 </b-col>
18 <b-col md="3">
19 <dl>
20 <dt>{{ $t('pageNetwork.useDomainName') }}</dt>
21 <dd>
22 <b-form-checkbox
23 id="useDomainNameSwitch"
24 v-model="useDomainNameState"
25 data-test-id="networkSettings-switch-useDomainName"
26 switch
27 @change="changeDomainNameState"
28 >
29 <span v-if="useDomainNameState">
30 {{ $t('global.status.enabled') }}
31 </span>
32 <span v-else>{{ $t('global.status.disabled') }}</span>
33 </b-form-checkbox>
34 </dd>
35 </dl>
36 </b-col>
37 <b-col md="3">
38 <dl>
39 <dt>{{ $t('pageNetwork.useDns') }}</dt>
40 <dd>
41 <b-form-checkbox
42 id="useDnsSwitch"
43 v-model="useDnsState"
44 data-test-id="networkSettings-switch-useDns"
45 switch
46 @change="changeDnsState"
47 >
48 <span v-if="useDnsState">
49 {{ $t('global.status.enabled') }}
50 </span>
51 <span v-else>{{ $t('global.status.disabled') }}</span>
52 </b-form-checkbox>
53 </dd>
54 </dl>
55 </b-col>
56 <b-col md="3">
57 <dl>
58 <dt>{{ $t('pageNetwork.useNtp') }}</dt>
59 <dd>
60 <b-form-checkbox
61 id="useNtpSwitch"
62 v-model="useNtpState"
63 data-test-id="networkSettings-switch-useNtp"
64 switch
65 @change="changeNtpState"
66 >
67 <span v-if="useNtpState">
68 {{ $t('global.status.enabled') }}
69 </span>
70 <span v-else>{{ $t('global.status.disabled') }}</span>
71 </b-form-checkbox>
72 </dd>
73 </dl>
74 </b-col>
75 </b-row>
76 </page-section>
77</template>
78
79<script>
80import BVToastMixin from '@/components/Mixins/BVToastMixin';
Dixsie Wolmers12dc20c2021-12-03 14:29:26 -060081import IconEdit from '@carbon/icons-vue/es/edit/16';
Dixsie Wolmersc4b87572021-10-07 16:15:50 -050082import DataFormatterMixin from '@/components/Mixins/DataFormatterMixin';
83import PageSection from '@/components/Global/PageSection';
84import { mapState } from 'vuex';
85
86export default {
87 name: 'GlobalNetworkSettings',
Dixsie Wolmers12dc20c2021-12-03 14:29:26 -060088 components: { IconEdit, PageSection },
Dixsie Wolmersc4b87572021-10-07 16:15:50 -050089 mixins: [BVToastMixin, DataFormatterMixin],
90
91 data() {
92 return {
93 hostname: '',
94 };
95 },
96 computed: {
97 ...mapState('network', ['ethernetData']),
98 firstInterface() {
99 return this.$store.getters['network/globalNetworkSettings'][0];
100 },
101 useDomainNameState: {
102 get() {
103 return this.$store.getters['network/globalNetworkSettings'][0]
104 .useDomainNameEnabled;
105 },
106 set(newValue) {
107 return newValue;
108 },
109 },
110 useDnsState: {
111 get() {
112 return this.$store.getters['network/globalNetworkSettings'][0]
113 .useDnsEnabled;
114 },
115 set(newValue) {
116 return newValue;
117 },
118 },
119 useNtpState: {
120 get() {
121 return this.$store.getters['network/globalNetworkSettings'][0]
122 .useNtpEnabled;
123 },
124 set(newValue) {
125 return newValue;
126 },
127 },
128 },
129 created() {
130 this.$store.dispatch('network/getEthernetData').finally(() => {
131 // Emit initial data fetch complete to parent component
132 this.$root.$emit('network-global-settings-complete');
133 });
134 },
135 methods: {
136 changeDomainNameState(state) {
137 this.$store
138 .dispatch('network/saveDomainNameState', state)
139 .then((success) => {
140 this.successToast(success);
141 })
142 .catch(({ message }) => this.errorToast(message));
143 },
144 changeDnsState(state) {
145 this.$store
146 .dispatch('network/saveDnsState', state)
147 .then((message) => this.successToast(message))
148 .catch(({ message }) => this.errorToast(message));
149 },
150 changeNtpState(state) {
151 this.$store
152 .dispatch('network/saveNtpState', state)
153 .then((message) => this.successToast(message))
154 .catch(({ message }) => this.errorToast(message));
155 },
Dixsie Wolmers12dc20c2021-12-03 14:29:26 -0600156 initSettingsModal() {
157 this.$bvModal.show('modal-hostname');
158 },
Dixsie Wolmersc4b87572021-10-07 16:15:50 -0500159 },
160};
161</script>