1import IconDashboard from '@carbon/icons-vue/es/dashboard/16'; 2import IconTextLinkAnalysis from '@carbon/icons-vue/es/text-link--analysis/16'; 3import IconDataCheck from '@carbon/icons-vue/es/data--check/16'; 4import IconSettingsAdjust from '@carbon/icons-vue/es/settings--adjust/16'; 5import IconSettings from '@carbon/icons-vue/es/settings/16'; 6import IconSecurity from '@carbon/icons-vue/es/security/16'; 7import IconChevronUp from '@carbon/icons-vue/es/chevron--up/16'; 8import IconDataBase from '@carbon/icons-vue/es/data--base--alt/16'; 9 10const AppNavigationMixin = { 11 components: { 12 iconOverview: IconDashboard, 13 iconLogs: IconTextLinkAnalysis, 14 iconHealth: IconDataCheck, 15 iconControl: IconSettingsAdjust, 16 iconSettings: IconSettings, 17 iconSecurityAndAccess: IconSecurity, 18 iconExpand: IconChevronUp, 19 iconResourceManagement: IconDataBase, 20 }, 21 data() { 22 return { 23 navigationItems: [ 24 { 25 id: 'overview', 26 label: this.$t('appNavigation.overview'), 27 route: '/', 28 icon: 'iconOverview', 29 }, 30 { 31 id: 'logs', 32 label: this.$t('appNavigation.logs'), 33 icon: 'iconLogs', 34 children: [ 35 { 36 id: 'dumps', 37 label: this.$t('appNavigation.dumps'), 38 route: '/logs/dumps', 39 }, 40 { 41 id: 'event-logs', 42 label: this.$t('appNavigation.eventLogs'), 43 route: '/logs/event-logs', 44 }, 45 { 46 id: 'post-code-logs', 47 label: this.$t('appNavigation.postCodeLogs'), 48 route: '/logs/post-code-logs', 49 }, 50 ], 51 }, 52 { 53 id: 'hardware-status', 54 label: this.$t('appNavigation.hardwareStatus'), 55 icon: 'iconHealth', 56 children: [ 57 { 58 id: 'inventory', 59 label: this.$t('appNavigation.inventory'), 60 route: '/hardware-status/inventory', 61 }, 62 { 63 id: 'sensors', 64 label: this.$t('appNavigation.sensors'), 65 route: '/hardware-status/sensors', 66 }, 67 ], 68 }, 69 { 70 id: 'operations', 71 label: this.$t('appNavigation.operations'), 72 icon: 'iconControl', 73 children: this.operationsNavigationItems(), 74 }, 75 { 76 id: 'settings', 77 label: this.$t('appNavigation.settings'), 78 icon: 'iconSettings', 79 children: [ 80 { 81 id: 'date-time', 82 label: this.$t('appNavigation.dateTime'), 83 route: '/settings/date-time', 84 }, 85 { 86 id: 'network', 87 label: this.$t('appNavigation.network'), 88 route: '/settings/network', 89 }, 90 { 91 id: 'power-restore-policy', 92 label: this.$t('appNavigation.powerRestorePolicy'), 93 route: '/settings/power-restore-policy', 94 }, 95 ], 96 }, 97 { 98 id: 'security-and-access', 99 label: this.$t('appNavigation.securityAndAccess'), 100 icon: 'iconSecurityAndAccess', 101 children: [ 102 { 103 id: 'sessions', 104 label: this.$t('appNavigation.sessions'), 105 route: '/security-and-access/sessions', 106 }, 107 { 108 id: 'ldap', 109 label: this.$t('appNavigation.ldap'), 110 route: '/security-and-access/ldap', 111 }, 112 { 113 id: 'user-management', 114 label: this.$t('appNavigation.userManagement'), 115 route: '/security-and-access/user-management', 116 }, 117 { 118 id: 'policies', 119 label: this.$t('appNavigation.policies'), 120 route: '/security-and-access/policies', 121 }, 122 { 123 id: 'certificates', 124 label: this.$t('appNavigation.certificates'), 125 route: '/security-and-access/certificates', 126 }, 127 ], 128 }, 129 { 130 id: 'resource-management', 131 label: this.$t('appNavigation.resourceManagement'), 132 icon: 'iconResourceManagement', 133 children: [ 134 { 135 id: 'power', 136 label: this.$t('appNavigation.power'), 137 route: '/resource-management/power', 138 }, 139 ], 140 }, 141 ], 142 }; 143 }, 144 methods: { 145 operationsNavigationItems() { 146 const username = this.$store.getters['global/username']; 147 let operationNavigationItems = [ 148 { 149 id: 'factory-reset', 150 label: this.$t('appNavigation.factoryReset'), 151 route: '/operations/factory-reset', 152 }, 153 { 154 id: 'firmware', 155 label: this.$t('appNavigation.firmware'), 156 route: '/operations/firmware', 157 }, 158 { 159 id: 'reboot-bmc', 160 label: this.$t('appNavigation.rebootBmc'), 161 route: '/operations/reboot-bmc', 162 }, 163 { 164 id: 'serial-over-lan', 165 label: this.$t('appNavigation.serialOverLan'), 166 route: '/operations/serial-over-lan', 167 }, 168 { 169 id: 'server-power-operations', 170 label: this.$t('appNavigation.serverPowerOperations'), 171 route: '/operations/server-power-operations', 172 }, 173 ]; 174 let pageKeyClear = { 175 id: 'key-clear', 176 label: this.$t('appNavigation.keyClear'), 177 route: '/operations/key-clear', 178 }; 179 if (username === 'service' || username === 'admin') { 180 operationNavigationItems.splice(2, 0, pageKeyClear); 181 } 182 return operationNavigationItems; 183 }, 184 }, 185}; 186 187export default AppNavigationMixin; 188