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