diff --git a/src/views/HardwareStatus/Inventory/Inventory.vue b/src/views/HardwareStatus/Inventory/Inventory.vue
index fcdbf8d..d05e32e 100644
--- a/src/views/HardwareStatus/Inventory/Inventory.vue
+++ b/src/views/HardwareStatus/Inventory/Inventory.vue
@@ -163,7 +163,7 @@
     });
     const powerSuppliesTablePromise = new Promise((resolve) => {
       this.$root.$on('hardware-status-power-supplies-complete', () =>
-        resolve()
+        resolve(),
       );
     });
     const processorsTablePromise = new Promise((resolve) => {
diff --git a/src/views/Logs/Dumps/Dumps.vue b/src/views/Logs/Dumps/Dumps.vue
index 81c9de0..77161d4 100644
--- a/src/views/Logs/Dumps/Dumps.vue
+++ b/src/views/Logs/Dumps/Dumps.vue
@@ -294,13 +294,13 @@
         this.allDumps,
         this.filterStartDate,
         this.filterEndDate,
-        'dateTime'
+        'dateTime',
       );
     },
     filteredDumps() {
       return this.getFilteredTableData(
         this.filteredDumpsByDate,
-        this.activeFilters
+        this.activeFilters,
       );
     },
   },
@@ -356,19 +356,19 @@
           .msgBoxConfirm(
             this.$tc(
               'pageDumps.modal.deleteDumpConfirmation',
-              this.selectedRows.length
+              this.selectedRows.length,
             ),
             {
               title: this.$tc(
                 'pageDumps.modal.deleteDump',
-                this.selectedRows.length
+                this.selectedRows.length,
               ),
               okTitle: this.$tc(
                 'pageDumps.modal.deleteDump',
-                this.selectedRows.length
+                this.selectedRows.length,
               ),
               cancelTitle: this.$t('global.action.cancel'),
-            }
+            },
           )
           .then((deleteConfrimed) => {
             if (deleteConfrimed) {
diff --git a/src/views/Logs/Dumps/DumpsForm.vue b/src/views/Logs/Dumps/DumpsForm.vue
index 07f4a06..0a9b058 100644
--- a/src/views/Logs/Dumps/DumpsForm.vue
+++ b/src/views/Logs/Dumps/DumpsForm.vue
@@ -73,7 +73,7 @@
             this.infoToast(this.$t('pageDumps.toast.successStartBmcDump'), {
               title: this.$t('pageDumps.toast.successStartBmcDumpTitle'),
               timestamp: true,
-            })
+            }),
           )
           .catch(({ message }) => this.errorToast(message));
       }
@@ -88,7 +88,7 @@
           this.infoToast(this.$t('pageDumps.toast.successStartSystemDump'), {
             title: this.$t('pageDumps.toast.successStartSystemDumpTitle'),
             timestamp: true,
-          })
+          }),
         )
         .catch(({ message }) => this.errorToast(message));
     },
diff --git a/src/views/Logs/EventLogs/EventLogs.vue b/src/views/Logs/EventLogs/EventLogs.vue
index ff0473e..6994849 100644
--- a/src/views/Logs/EventLogs/EventLogs.vue
+++ b/src/views/Logs/EventLogs/EventLogs.vue
@@ -453,13 +453,13 @@
       return this.getFilteredTableDataByDate(
         this.allLogs,
         this.filterStartDate,
-        this.filterEndDate
+        this.filterEndDate,
       );
     },
     filteredLogs() {
       return this.getFilteredTableData(
         this.filteredLogsByDate,
-        this.activeFilters
+        this.activeFilters,
       );
     },
   },
@@ -548,16 +548,16 @@
           .msgBoxConfirm(
             this.$tc(
               'pageEventLogs.modal.deleteMessage',
-              this.selectedRows.length
+              this.selectedRows.length,
             ),
             {
               title: this.$tc(
                 'pageEventLogs.modal.deleteTitle',
-                this.selectedRows.length
+                this.selectedRows.length,
               ),
               okTitle: this.$t('global.action.delete'),
               cancelTitle: this.$t('global.action.cancel'),
-            }
+            },
           )
           .then((deleteConfirmed) => {
             if (deleteConfirmed) {
@@ -565,11 +565,14 @@
                 this.$store
                   .dispatch(
                     'eventLog/deleteAllEventLogs',
-                    this.selectedRows.length
+                    this.selectedRows.length,
                   )
                   .then(() => {
                     this.successToast(
-                      this.$tc('pageEventLogs.toast.successDelete', uris.length)
+                      this.$tc(
+                        'pageEventLogs.toast.successDelete',
+                        uris.length,
+                      ),
                     );
                   })
                   .catch(({ message }) => this.errorToast(message));
diff --git a/src/views/Logs/PostCodeLogs/PostCodeLogs.vue b/src/views/Logs/PostCodeLogs/PostCodeLogs.vue
index a68047b..57bbdb5 100644
--- a/src/views/Logs/PostCodeLogs/PostCodeLogs.vue
+++ b/src/views/Logs/PostCodeLogs/PostCodeLogs.vue
@@ -286,7 +286,7 @@
               },
             ],
           };
-        }
+        },
       );
     },
     batchExportData() {
@@ -296,13 +296,13 @@
       return this.getFilteredTableDataByDate(
         this.allLogs,
         this.filterStartDate,
-        this.filterEndDate
+        this.filterEndDate,
       );
     },
     filteredLogs() {
       return this.getFilteredTableData(
         this.filteredLogsByDate,
-        this.activeFilters
+        this.activeFilters,
       );
     },
   },
@@ -337,7 +337,7 @@
           (postCodes) => {
             const allLogsString = JSON.stringify(postCodes);
             return allLogsString;
-          }
+          },
         );
       }
     },
diff --git a/src/views/Operations/FactoryReset/FactoryResetModal.vue b/src/views/Operations/FactoryReset/FactoryResetModal.vue
index 170bf28..55ac176 100644
--- a/src/views/Operations/FactoryReset/FactoryResetModal.vue
+++ b/src/views/Operations/FactoryReset/FactoryResetModal.vue
@@ -12,7 +12,7 @@
     <ul class="pl-3 mb-4">
       <li
         v-for="(item, index) in $t(
-          `pageFactoryReset.modal.${resetType}SettingsList`
+          `pageFactoryReset.modal.${resetType}SettingsList`,
         )"
         :key="index"
         class="mt-1 mb-1"
diff --git a/src/views/Operations/Firmware/FirmwareCardsBmc.vue b/src/views/Operations/Firmware/FirmwareCardsBmc.vue
index 8fb31aa..bfca14c 100644
--- a/src/views/Operations/Firmware/FirmwareCardsBmc.vue
+++ b/src/views/Operations/Firmware/FirmwareCardsBmc.vue
@@ -128,7 +128,7 @@
         .then(() =>
           this.infoToast(this.$t('pageFirmware.toast.rebootStartedMessage'), {
             title: this.$t('pageFirmware.toast.rebootStarted'),
-          })
+          }),
         )
         .catch(({ message }) => {
           this.errorToast(message);
diff --git a/src/views/Operations/Kvm/KvmConsole.vue b/src/views/Operations/Kvm/KvmConsole.vue
index 8483c4f..62dd47a 100644
--- a/src/views/Operations/Kvm/KvmConsole.vue
+++ b/src/views/Operations/Kvm/KvmConsole.vue
@@ -112,7 +112,7 @@
       this.rfb = new RFB(
         this.$refs.panel,
         `wss://${window.location.host}/kvm/0`,
-        { wsProtocols: [token] }
+        { wsProtocols: [token] },
       );
 
       this.rfb.scaleViewport = true;
@@ -166,7 +166,7 @@
       this.$eventBus.$consoleWindow = window.open(
         '#/console/kvm',
         'kvmConsoleWindow',
-        'directories=no,titlebar=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=yes,width=700,height=550'
+        'directories=no,titlebar=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=yes,width=700,height=550',
       );
     },
   },
diff --git a/src/views/Operations/SerialOverLan/SerialOverLanConsole.vue b/src/views/Operations/SerialOverLan/SerialOverLanConsole.vue
index fc80739..ca81385 100644
--- a/src/views/Operations/SerialOverLan/SerialOverLanConsole.vue
+++ b/src/views/Operations/SerialOverLan/SerialOverLanConsole.vue
@@ -135,7 +135,7 @@
             'websocket console/default closed. code: ' +
               event.code +
               ' reason: ' +
-              event.reason
+              event.reason,
           );
         };
       } catch (error) {
@@ -153,7 +153,7 @@
       window.open(
         '#/console/serial-over-lan-console',
         '_blank',
-        'directories=no,titlebar=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=yes,width=600,height=550'
+        'directories=no,titlebar=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=yes,width=600,height=550',
       );
     },
   },
diff --git a/src/views/Operations/ServerPowerOperations/BootSettings.vue b/src/views/Operations/ServerPowerOperations/BootSettings.vue
index 4896286..c74fd01 100644
--- a/src/views/Operations/ServerPowerOperations/BootSettings.vue
+++ b/src/views/Operations/ServerPowerOperations/BootSettings.vue
@@ -98,7 +98,7 @@
     this.$store
       .dispatch('serverBootSettings/getTpmPolicy')
       .finally(() =>
-        this.$root.$emit('server-power-operations-boot-settings-complete')
+        this.$root.$emit('server-power-operations-boot-settings-complete'),
       );
   },
   methods: {
diff --git a/src/views/Operations/ServerPowerOperations/ServerPowerOperations.vue b/src/views/Operations/ServerPowerOperations/ServerPowerOperations.vue
index ba9ebce..e3864b4 100644
--- a/src/views/Operations/ServerPowerOperations/ServerPowerOperations.vue
+++ b/src/views/Operations/ServerPowerOperations/ServerPowerOperations.vue
@@ -189,9 +189,8 @@
       return this.$store.getters['serverBootSettings/overrideEnabled'];
     },
     hasBootSourceOptions() {
-      let bootOptions = this.$store.getters[
-        'serverBootSettings/bootSourceOptions'
-      ];
+      let bootOptions =
+        this.$store.getters['serverBootSettings/bootSourceOptions'];
       return bootOptions.length !== 0;
     },
   },
@@ -199,7 +198,7 @@
     this.startLoader();
     const bootSettingsPromise = new Promise((resolve) => {
       this.$root.$on('server-power-operations-boot-settings-complete', () =>
-        resolve()
+        resolve(),
       );
     });
     Promise.all([
@@ -214,7 +213,7 @@
     },
     rebootServer() {
       const modalMessage = this.$t(
-        'pageServerPowerOperations.modal.confirmRebootMessage'
+        'pageServerPowerOperations.modal.confirmRebootMessage',
       );
       const modalOptions = {
         title: this.$t('pageServerPowerOperations.modal.confirmRebootTitle'),
@@ -238,7 +237,7 @@
     },
     shutdownServer() {
       const modalMessage = this.$t(
-        'pageServerPowerOperations.modal.confirmShutdownMessage'
+        'pageServerPowerOperations.modal.confirmShutdownMessage',
       );
       const modalOptions = {
         title: this.$t('pageServerPowerOperations.modal.confirmShutdownTitle'),
diff --git a/src/views/Operations/VirtualMedia/VirtualMedia.vue b/src/views/Operations/VirtualMedia/VirtualMedia.vue
index 80dff5b..9ad1b1e 100644
--- a/src/views/Operations/VirtualMedia/VirtualMedia.vue
+++ b/src/views/Operations/VirtualMedia/VirtualMedia.vue
@@ -141,7 +141,7 @@
         `wss://${window.location.host}${device.websocket}`,
         device.file,
         device.id,
-        token
+        token,
       );
       device.nbd.socketStarted = () =>
         this.successToast(this.$t('pageVirtualMedia.toast.serverRunning'));
@@ -150,11 +150,11 @@
       device.nbd.socketClosed = (code) => {
         if (code === 1000)
           this.successToast(
-            this.$t('pageVirtualMedia.toast.serverClosedSuccessfully')
+            this.$t('pageVirtualMedia.toast.serverClosedSuccessfully'),
           );
         else
           this.errorToast(
-            this.$t('pageVirtualMedia.toast.serverClosedWithErrors')
+            this.$t('pageVirtualMedia.toast.serverClosedWithErrors'),
           );
         device.file = null;
         device.isActive = false;
@@ -180,7 +180,7 @@
         })
         .then(() => {
           this.successToast(
-            this.$t('pageVirtualMedia.toast.serverConnectionEstablished')
+            this.$t('pageVirtualMedia.toast.serverConnectionEstablished'),
           );
           connectionData.isActive = true;
         })
@@ -195,12 +195,12 @@
         .dispatch('virtualMedia/unmountImage', connectionData.id)
         .then(() => {
           this.successToast(
-            this.$t('pageVirtualMedia.toast.serverClosedSuccessfully')
+            this.$t('pageVirtualMedia.toast.serverClosedSuccessfully'),
           );
           connectionData.isActive = false;
         })
         .catch(() =>
-          this.errorToast(this.$t('pageVirtualMedia.toast.errorUnmounting'))
+          this.errorToast(this.$t('pageVirtualMedia.toast.errorUnmounting')),
         )
         .finally(() => this.endLoader());
     },
diff --git a/src/views/Overview/OverviewEvents.vue b/src/views/Overview/OverviewEvents.vue
index af7e294..73853bb 100644
--- a/src/views/Overview/OverviewEvents.vue
+++ b/src/views/Overview/OverviewEvents.vue
@@ -47,7 +47,7 @@
       return this.eventLogData
         .filter(
           (log) =>
-            log.severity === 'Critical' && log.filterByStatus === 'Unresolved'
+            log.severity === 'Critical' && log.filterByStatus === 'Unresolved',
         )
         .map((log) => {
           return log;
@@ -57,7 +57,7 @@
       return this.eventLogData
         .filter(
           (log) =>
-            log.severity === 'Warning' && log.filterByStatus === 'Unresolved'
+            log.severity === 'Warning' && log.filterByStatus === 'Unresolved',
         )
         .map((log) => {
           return log;
diff --git a/src/views/Overview/OverviewNetwork.vue b/src/views/Overview/OverviewNetwork.vue
index b81e5c7..f25c7e0 100644
--- a/src/views/Overview/OverviewNetwork.vue
+++ b/src/views/Overview/OverviewNetwork.vue
@@ -37,7 +37,7 @@
               dataFormatter(
                 network.dhcpAddress.length !== 0
                   ? network.dhcpAddress[0].Address
-                  : null
+                  : null,
               )
             }}
           </dd>
diff --git a/src/views/ProfileSettings/ProfileSettings.vue b/src/views/ProfileSettings/ProfileSettings.vue
index bfd47ca..5d84cce 100644
--- a/src/views/ProfileSettings/ProfileSettings.vue
+++ b/src/views/ProfileSettings/ProfileSettings.vue
@@ -227,7 +227,7 @@
       localStorage.setItem('storedUtcDisplay', this.form.isUtcDisplay);
       this.$store.commit('global/setUtcTime', this.form.isUtcDisplay);
       this.successToast(
-        this.$t('pageProfileSettings.toast.successUpdatingTimeZone')
+        this.$t('pageProfileSettings.toast.successUpdatingTimeZone'),
       );
     },
     submitForm() {
@@ -259,7 +259,7 @@
         .catch(() => {
           this.$v.$reset();
           this.errorToast(
-            this.$t('pageProfileSettings.toast.wrongCredentials')
+            this.$t('pageProfileSettings.toast.wrongCredentials'),
           );
         });
     },
diff --git a/src/views/SecurityAndAccess/Certificates/Certificates.vue b/src/views/SecurityAndAccess/Certificates/Certificates.vue
index 06caab6..0dc1d5e 100644
--- a/src/views/SecurityAndAccess/Certificates/Certificates.vue
+++ b/src/views/SecurityAndAccess/Certificates/Certificates.vue
@@ -250,7 +250,7 @@
             title: this.$t('pageCertificates.deleteCertificate'),
             okTitle: this.$t('global.action.delete'),
             cancelTitle: this.$t('global.action.cancel'),
-          }
+          },
         )
         .then((deleteConfirmed) => {
           if (deleteConfirmed) this.deleteCertificate(certificate);
@@ -267,7 +267,7 @@
             this.$t('pageCertificates.alert.incorrectCertificateFileType'),
             {
               title: this.$t('pageCertificates.toast.errorAddCertificate'),
-            }
+            },
           );
         }
       } else {
diff --git a/src/views/SecurityAndAccess/Ldap/Ldap.vue b/src/views/SecurityAndAccess/Ldap/Ldap.vue
index 9d62da3..a5ee475 100644
--- a/src/views/SecurityAndAccess/Ldap/Ldap.vue
+++ b/src/views/SecurityAndAccess/Ldap/Ldap.vue
@@ -262,9 +262,8 @@
       form: {
         ldapAuthenticationEnabled: this.$store.getters['ldap/isServiceEnabled'],
         secureLdapEnabled: false,
-        activeDirectoryEnabled: this.$store.getters[
-          'ldap/isActiveDirectoryEnabled'
-        ],
+        activeDirectoryEnabled:
+          this.$store.getters['ldap/isActiveDirectoryEnabled'],
         serverUri: '',
         bindDn: '',
         bindPassword: '',
diff --git a/src/views/SecurityAndAccess/Ldap/TableRoleGroups.vue b/src/views/SecurityAndAccess/Ldap/TableRoleGroups.vue
index 5ae3e3d..ed75989 100644
--- a/src/views/SecurityAndAccess/Ldap/TableRoleGroups.vue
+++ b/src/views/SecurityAndAccess/Ldap/TableRoleGroups.vue
@@ -191,13 +191,13 @@
         .msgBoxConfirm(
           this.$tc(
             'pageLdap.modal.deleteRoleGroupBatchConfirmMessage',
-            this.selectedRows.length
+            this.selectedRows.length,
           ),
           {
             title: this.$t('pageLdap.modal.deleteRoleGroup'),
             okTitle: this.$t('global.action.delete'),
             cancelTitle: this.$t('global.action.cancel'),
-          }
+          },
         )
         .then((deleteConfirmed) => {
           if (deleteConfirmed) {
@@ -227,7 +227,7 @@
                 title: this.$t('pageLdap.modal.deleteRoleGroup'),
                 okTitle: this.$t('global.action.delete'),
                 cancelTitle: this.$t('global.action.cancel'),
-              }
+              },
             )
             .then((deleteConfirmed) => {
               if (deleteConfirmed) {
diff --git a/src/views/SecurityAndAccess/Sessions/Sessions.vue b/src/views/SecurityAndAccess/Sessions/Sessions.vue
index f74fa47..7436465 100644
--- a/src/views/SecurityAndAccess/Sessions/Sessions.vue
+++ b/src/views/SecurityAndAccess/Sessions/Sessions.vue
@@ -274,16 +274,16 @@
           .msgBoxConfirm(
             this.$tc(
               'pageSessions.modal.disconnectMessage',
-              this.selectedRows.length
+              this.selectedRows.length,
             ),
             {
               title: this.$tc(
                 'pageSessions.modal.disconnectTitle',
-                this.selectedRows.length
+                this.selectedRows.length,
               ),
               okTitle: this.$t('pageSessions.action.disconnect'),
               cancelTitle: this.$t('global.action.cancel'),
-            }
+            },
           )
           .then((deleteConfirmed) => {
             if (deleteConfirmed) {
diff --git a/src/views/SecurityAndAccess/UserManagement/ModalUser.vue b/src/views/SecurityAndAccess/UserManagement/ModalUser.vue
index 5a1dc61..16f0b9c 100644
--- a/src/views/SecurityAndAccess/UserManagement/ModalUser.vue
+++ b/src/views/SecurityAndAccess/UserManagement/ModalUser.vue
@@ -71,7 +71,7 @@
                 <br />
                 {{
                   $t(
-                    'pageUserManagement.modal.noSpecialCharactersExceptUnderscore'
+                    'pageUserManagement.modal.noSpecialCharactersExceptUnderscore',
                   )
                 }}
               </b-form-text>
diff --git a/src/views/SecurityAndAccess/UserManagement/TableRoles.vue b/src/views/SecurityAndAccess/UserManagement/TableRoles.vue
index cbdec35..9fb8013 100644
--- a/src/views/SecurityAndAccess/UserManagement/TableRoles.vue
+++ b/src/views/SecurityAndAccess/UserManagement/TableRoles.vue
@@ -35,7 +35,7 @@
       items: [
         {
           description: this.$t(
-            'pageUserManagement.tableRoles.configureComponentsManagedByThisService'
+            'pageUserManagement.tableRoles.configureComponentsManagedByThisService',
           ),
           administrator: true,
           operator: true,
@@ -44,7 +44,7 @@
         },
         {
           description: this.$t(
-            'pageUserManagement.tableRoles.configureManagerResources'
+            'pageUserManagement.tableRoles.configureManagerResources',
           ),
           administrator: true,
           operator: false,
@@ -53,7 +53,7 @@
         },
         {
           description: this.$t(
-            'pageUserManagement.tableRoles.updatePasswordForCurrentUserAccount'
+            'pageUserManagement.tableRoles.updatePasswordForCurrentUserAccount',
           ),
           administrator: true,
           operator: true,
@@ -62,7 +62,7 @@
         },
         {
           description: this.$t(
-            'pageUserManagement.tableRoles.configureUsersAndTheirAccounts'
+            'pageUserManagement.tableRoles.configureUsersAndTheirAccounts',
           ),
           administrator: true,
           operator: false,
@@ -71,7 +71,7 @@
         },
         {
           description: this.$t(
-            'pageUserManagement.tableRoles.logInToTheServiceAndReadResources'
+            'pageUserManagement.tableRoles.logInToTheServiceAndReadResources',
           ),
           administrator: true,
           operator: true,
diff --git a/src/views/SecurityAndAccess/UserManagement/UserManagement.vue b/src/views/SecurityAndAccess/UserManagement/UserManagement.vue
index 0af271d..e9b1fda 100644
--- a/src/views/SecurityAndAccess/UserManagement/UserManagement.vue
+++ b/src/views/SecurityAndAccess/UserManagement/UserManagement.vue
@@ -213,8 +213,8 @@
           status: user.Locked
             ? 'Locked'
             : user.Enabled
-            ? 'Enabled'
-            : 'Disabled',
+              ? 'Enabled'
+              : 'Disabled',
           actions: [
             {
               value: 'edit',
@@ -227,8 +227,8 @@
                 user.UserName === this.$store.getters['global/username']
                   ? false
                   : true && user.UserName === 'root'
-                  ? false
-                  : true,
+                    ? false
+                    : true,
               title: this.$tc('pageUserManagement.deleteUser'),
             },
           ],
@@ -274,7 +274,7 @@
             title: this.$tc('pageUserManagement.deleteUser'),
             okTitle: this.$tc('pageUserManagement.deleteUser'),
             cancelTitle: this.$t('global.action.cancel'),
-          }
+          },
         )
         .then((deleteConfirmed) => {
           if (deleteConfirmed) {
@@ -317,19 +317,19 @@
             .msgBoxConfirm(
               this.$tc(
                 'pageUserManagement.modal.batchDeleteConfirmMessage',
-                this.selectedRows.length
+                this.selectedRows.length,
               ),
               {
                 title: this.$tc(
                   'pageUserManagement.deleteUser',
-                  this.selectedRows.length
+                  this.selectedRows.length,
                 ),
                 okTitle: this.$tc(
                   'pageUserManagement.deleteUser',
-                  this.selectedRows.length
+                  this.selectedRows.length,
                 ),
                 cancelTitle: this.$t('global.action.cancel'),
-              }
+              },
             )
             .then((deleteConfirmed) => {
               if (deleteConfirmed) {
diff --git a/src/views/Settings/DateTime/DateTime.vue b/src/views/Settings/DateTime/DateTime.vue
index f5e063d..a3fec36 100644
--- a/src/views/Settings/DateTime/DateTime.vue
+++ b/src/views/Settings/DateTime/DateTime.vue
@@ -297,7 +297,7 @@
     },
     bmcTime() {
       this.form.manual.date = this.$options.filters.formatDate(
-        this.$store.getters['global/bmcTime']
+        this.$store.getters['global/bmcTime'],
       );
       this.form.manual.time = this.$options.filters
         .formatTime(this.$store.getters['global/bmcTime'])
@@ -408,7 +408,7 @@
         parseInt(datesArray[1]) - 1, // User input month
         datesArray[2], // User input day
         timeArray[0], // User input hour
-        timeArray[1] // User input minute
+        timeArray[1], // User input minute
       );
       return new Date(utcDate);
     },
diff --git a/src/views/Settings/Network/Network.vue b/src/views/Settings/Network/Network.vue
index 2abbcd7..f731c25 100644
--- a/src/views/Settings/Network/Network.vue
+++ b/src/views/Settings/Network/Network.vue
@@ -117,24 +117,27 @@
   },
   methods: {
     getModalInfo() {
-      this.defaultGateway = this.$store.getters[
-        'network/globalNetworkSettings'
-      ][this.tabIndex].defaultGateway;
+      this.defaultGateway =
+        this.$store.getters['network/globalNetworkSettings'][
+          this.tabIndex
+        ].defaultGateway;
 
-      this.currentHostname = this.$store.getters[
-        'network/globalNetworkSettings'
-      ][this.tabIndex].hostname;
+      this.currentHostname =
+        this.$store.getters['network/globalNetworkSettings'][
+          this.tabIndex
+        ].hostname;
 
-      this.currentMacAddress = this.$store.getters[
-        'network/globalNetworkSettings'
-      ][this.tabIndex].macAddress;
+      this.currentMacAddress =
+        this.$store.getters['network/globalNetworkSettings'][
+          this.tabIndex
+        ].macAddress;
     },
     getTabIndex(selectedIndex) {
       this.tabIndex = selectedIndex;
       this.$store.dispatch('network/setSelectedTabIndex', this.tabIndex);
       this.$store.dispatch(
         'network/setSelectedTabId',
-        this.ethernetData[selectedIndex].Id
+        this.ethernetData[selectedIndex].Id,
       );
       this.getModalInfo();
     },
diff --git a/src/views/Settings/Network/TableIpv4.vue b/src/views/Settings/Network/TableIpv4.vue
index 8f10d62..8bd21cb 100644
--- a/src/views/Settings/Network/TableIpv4.vue
+++ b/src/views/Settings/Network/TableIpv4.vue
@@ -224,7 +224,7 @@
               : this.$t('global.action.disable'),
             okVariant: 'danger',
             cancelTitle: this.$t('global.action.cancel'),
-          }
+          },
         )
         .then((dhcpEnableConfirmed) => {
           if (dhcpEnableConfirmed) {
diff --git a/src/views/Settings/PowerRestorePolicy/PowerRestorePolicy.vue b/src/views/Settings/PowerRestorePolicy/PowerRestorePolicy.vue
index 06e30f3..9f20629 100644
--- a/src/views/Settings/PowerRestorePolicy/PowerRestorePolicy.vue
+++ b/src/views/Settings/PowerRestorePolicy/PowerRestorePolicy.vue
@@ -78,7 +78,7 @@
       this.$store
         .dispatch(
           'powerPolicy/setPowerRestorePolicy',
-          this.policyValue || this.currentPowerRestorePolicy
+          this.policyValue || this.currentPowerRestorePolicy,
         )
         .then((message) => this.successToast(message))
         .catch(({ message }) => this.errorToast(message))
diff --git a/src/views/Settings/SnmpAlerts/SnmpAlerts.vue b/src/views/Settings/SnmpAlerts/SnmpAlerts.vue
index 8a9b8e7..528033b 100644
--- a/src/views/Settings/SnmpAlerts/SnmpAlerts.vue
+++ b/src/views/Settings/SnmpAlerts/SnmpAlerts.vue
@@ -209,7 +209,7 @@
             title: this.$tc('pageSnmpAlerts.modal.deleteSnmpDestinationTitle'),
             okTitle: this.$tc('pageSnmpAlerts.deleteDestination'),
             cancelTitle: this.$t('global.action.cancel'),
-          }
+          },
         )
         .then((deleteConfirmed) => {
           if (deleteConfirmed) {
@@ -231,19 +231,19 @@
           .msgBoxConfirm(
             this.$tc(
               'pageSnmpAlerts.modal.batchDeleteConfirmMessage',
-              this.selectedRows.length
+              this.selectedRows.length,
             ),
             {
               title: this.$tc(
                 'pageSnmpAlerts.modal.deleteSnmpDestinationTitle',
-                this.selectedRows.length
+                this.selectedRows.length,
               ),
               okTitle: this.$tc(
                 'pageSnmpAlerts.deleteDestination',
-                this.selectedRows.length
+                this.selectedRows.length,
               ),
               cancelTitle: this.$t('global.action.cancel'),
-            }
+            },
           )
           .then((deleteConfirmed) => {
             if (deleteConfirmed) {
@@ -251,7 +251,7 @@
               this.$store
                 .dispatch(
                   'snmpAlerts/deleteMultipleDestinations',
-                  this.selectedRows
+                  this.selectedRows,
                 )
                 .then((messages) => {
                   messages.forEach(({ type, message }) => {
