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'; 9import i18n from '@/i18n'; 10const roles = { 11 administrator: 'Administrator', 12 operator: 'Operator', 13 readonly: 'ReadOnly', 14 noaccess: 'NoAccess', 15}; 16 17const AppNavigationMixin = { 18 components: { 19 iconOverview: IconDashboard, 20 iconLogs: IconTextLinkAnalysis, 21 iconHealth: IconDataCheck, 22 iconControl: IconSettingsAdjust, 23 iconSettings: IconSettings, 24 iconSecurityAndAccess: IconSecurity, 25 iconExpand: IconChevronUp, 26 iconResourceManagement: IconDataBase, 27 }, 28 data() { 29 return { 30 navigationItems: [ 31 { 32 id: 'overview', 33 label: i18n.global.t('appNavigation.overview'), 34 route: '/', 35 icon: 'iconOverview', 36 }, 37 { 38 id: 'logs', 39 label: i18n.global.t('appNavigation.logs'), 40 icon: 'iconLogs', 41 children: [ 42 { 43 id: 'event-logs', 44 label: i18n.global.t('appNavigation.eventLogs'), 45 route: '/logs/event-logs', 46 }, 47 { 48 id: 'post-code-logs', 49 label: i18n.global.t('appNavigation.postCodeLogs'), 50 route: '/logs/post-code-logs', 51 }, 52 { 53 id: 'dumps', 54 label: i18n.global.t('appNavigation.dumps'), 55 route: '/logs/dumps', 56 }, 57 ], 58 }, 59 { 60 id: 'hardware-status', 61 label: i18n.global.t('appNavigation.hardwareStatus'), 62 icon: 'iconHealth', 63 children: [ 64 { 65 id: 'inventory', 66 label: i18n.global.t('appNavigation.inventory'), 67 route: '/hardware-status/inventory', 68 }, 69 { 70 id: 'sensors', 71 label: i18n.global.t('appNavigation.sensors'), 72 route: '/hardware-status/sensors', 73 }, 74 ], 75 }, 76 { 77 id: 'operations', 78 label: i18n.global.t('appNavigation.operations'), 79 icon: 'iconControl', 80 children: [ 81 { 82 id: 'factory-reset', 83 label: i18n.global.t('appNavigation.factoryReset'), 84 route: '/operations/factory-reset', 85 }, 86 { 87 id: 'kvm', 88 label: i18n.global.t('appNavigation.kvm'), 89 route: '/operations/kvm', 90 }, 91 { 92 id: 'key-clear', 93 label: i18n.global.t('appNavigation.keyClear'), 94 route: '/operations/key-clear', 95 }, 96 { 97 id: 'firmware', 98 label: i18n.global.t('appNavigation.firmware'), 99 route: '/operations/firmware', 100 }, 101 { 102 id: 'reboot-bmc', 103 label: i18n.global.t('appNavigation.rebootBmc'), 104 route: '/operations/reboot-bmc', 105 }, 106 { 107 id: 'serial-over-lan', 108 label: i18n.global.t('appNavigation.serialOverLan'), 109 route: '/operations/serial-over-lan', 110 exclusiveToRoles: [roles.administrator], 111 }, 112 { 113 id: 'server-power-operations', 114 label: i18n.global.t('appNavigation.serverPowerOperations'), 115 route: '/operations/server-power-operations', 116 }, 117 { 118 id: 'virtual-media', 119 label: i18n.global.t('appNavigation.virtualMedia'), 120 route: '/operations/virtual-media', 121 exclusiveToRoles: [roles.administrator], 122 }, 123 ], 124 }, 125 { 126 id: 'settings', 127 label: i18n.global.t('appNavigation.settings'), 128 icon: 'iconSettings', 129 children: [ 130 { 131 id: 'date-time', 132 label: i18n.global.t('appNavigation.dateTime'), 133 route: '/settings/date-time', 134 }, 135 { 136 id: 'network', 137 label: i18n.global.t('appNavigation.network'), 138 route: '/settings/network', 139 }, 140 { 141 id: 'power-restore-policy', 142 label: i18n.global.t('appNavigation.powerRestorePolicy'), 143 route: '/settings/power-restore-policy', 144 }, 145 { 146 id: 'snmp-alerts', 147 label: i18n.global.t('appNavigation.snmpAlerts'), 148 route: '/settings/snmp-alerts', 149 }, 150 ], 151 }, 152 { 153 id: 'security-and-access', 154 label: i18n.global.t('appNavigation.securityAndAccess'), 155 icon: 'iconSecurityAndAccess', 156 children: [ 157 { 158 id: 'sessions', 159 label: i18n.global.t('appNavigation.sessions'), 160 route: '/security-and-access/sessions', 161 }, 162 { 163 id: 'ldap', 164 label: i18n.global.t('appNavigation.ldap'), 165 route: '/security-and-access/ldap', 166 }, 167 { 168 id: 'user-management', 169 label: i18n.global.t('appNavigation.userManagement'), 170 route: '/security-and-access/user-management', 171 }, 172 { 173 id: 'policies', 174 label: i18n.global.t('appNavigation.policies'), 175 route: '/security-and-access/policies', 176 }, 177 { 178 id: 'certificates', 179 label: i18n.global.t('appNavigation.certificates'), 180 route: '/security-and-access/certificates', 181 }, 182 ], 183 }, 184 { 185 id: 'resource-management', 186 label: i18n.global.t('appNavigation.resourceManagement'), 187 icon: 'iconResourceManagement', 188 children: [ 189 { 190 id: 'power', 191 label: i18n.global.t('appNavigation.power'), 192 route: '/resource-management/power', 193 }, 194 ], 195 }, 196 ], 197 }; 198 }, 199}; 200 201export default AppNavigationMixin; 202