From d329ec84b105c55abafc53db061bbfc57494c582 Mon Sep 17 00:00:00 2001 From: Yoshie Muranaka Date: Tue, 11 Aug 2020 18:24:59 -0700 Subject: Refactor navigation component We are anticipating necessary customizations to the app navigation for different environments. This refactoring will allow for a more programmatic approach. By abstracting the navigation into a JS object we can leverage the Vue mixin to isolate customizations while sharing a standard template and styles. There may be slight changes to data-test-id-* hooks. Signed-off-by: Yoshie Muranaka Change-Id: I0d095acfee29cfdd4ce1094b860d754f45dc6db9 --- src/components/AppNavigation/AppNavigationMixin.js | 144 +++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 src/components/AppNavigation/AppNavigationMixin.js (limited to 'src/components/AppNavigation/AppNavigationMixin.js') diff --git a/src/components/AppNavigation/AppNavigationMixin.js b/src/components/AppNavigation/AppNavigationMixin.js new file mode 100644 index 00000000..8cd54c5f --- /dev/null +++ b/src/components/AppNavigation/AppNavigationMixin.js @@ -0,0 +1,144 @@ +import IconAnalytics from '@carbon/icons-vue/es/analytics/16'; +import IconDataCheck from '@carbon/icons-vue/es/data--check/16'; +import IconSettingsAdjust from '@carbon/icons-vue/es/settings--adjust/16'; +import IconSettings from '@carbon/icons-vue/es/settings/16'; +import IconPassword from '@carbon/icons-vue/es/password/16'; +import IconChevronUp from '@carbon/icons-vue/es/chevron--up/16'; + +const AppNavigationMixin = { + components: { + iconOverview: IconAnalytics, + iconHealth: IconDataCheck, + iconControl: IconSettingsAdjust, + iconConfiguration: IconSettings, + iconAccessControl: IconPassword, + iconExpand: IconChevronUp + }, + data() { + return { + navigationItems: [ + { + id: 'overview', + label: this.$t('appNavigation.overview'), + route: '/', + icon: 'iconOverview' + }, + { + id: 'health', + label: this.$t('appNavigation.health'), + icon: 'iconHealth', + children: [ + { + id: 'event-logs', + label: this.$t('appNavigation.eventLogs'), + route: '/health/event-logs' + }, + { + id: 'hardware-status', + label: this.$t('appNavigation.hardwareStatus'), + route: '/health/hardware-status' + }, + { + id: 'sensors', + label: this.$t('appNavigation.sensors'), + route: '/health/sensors' + } + ] + }, + { + id: 'control', + label: this.$t('appNavigation.control'), + icon: 'iconControl', + children: [ + { + id: 'kvm', + label: this.$t('appNavigation.kvm'), + route: '/control/kvm' + }, + { + id: 'manage-power-usage', + label: this.$t('appNavigation.managePowerUsage'), + route: '/control/manage-power-usage' + }, + { + id: 'reboot-bmc', + label: this.$t('appNavigation.rebootBmc'), + route: '/control/reboot-bmc' + }, + { + id: 'serial-over-lan', + label: this.$t('appNavigation.serialOverLan'), + route: '/control/serial-over-lan' + }, + { + id: 'server-led', + label: this.$t('appNavigation.serverLed'), + route: '/control/server-led' + }, + { + id: 'server-power-operations', + label: this.$t('appNavigation.serverPowerOperations'), + route: '/control/server-power-operations' + }, + { + id: 'virtual-media', + label: this.$t('appNavigation.virtualMedia'), + route: '/control/virtual-media' + } + ] + }, + { + id: 'configuration', + label: this.$t('appNavigation.configuration'), + icon: 'iconConfiguration', + children: [ + { + id: 'date-time-settings', + label: this.$t('appNavigation.dateTimeSettings'), + route: '/configuration/date-time-settings' + }, + { + id: 'firmware', + label: this.$t('appNavigation.firmware'), + route: '/configuration/firmware' + }, + { + id: 'network-settings', + label: this.$t('appNavigation.networkSettings'), + route: '/configuration/network-settings' + }, + { + id: 'snmp-settings', + label: this.$t('appNavigation.snmpSettings'), + route: '' + } + ] + }, + { + id: 'access-control', + label: this.$t('appNavigation.configuration'), + icon: 'iconAccessControl', + children: [ + { + id: 'ldap', + label: this.$t('appNavigation.ldap'), + route: '/access-control/ldap' + }, + { + id: 'local-user-management', + label: this.$t('appNavigation.localUserManagement'), + route: '/access-control/local-user-management' + }, + { + id: 'ssl-certificates', + label: this.$t('appNavigation.sslCertificates'), + route: '/access-control/ssl-certificates' + } + ] + } + ] + }; + } +}; + +export default AppNavigationMixin; -- cgit v1.2.3