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: 'event-logs',
37              label: this.$t('appNavigation.eventLogs'),
38              route: '/logs/event-logs',
39            },
40            {
41              id: 'post-code-logs',
42              label: this.$t('appNavigation.postCodeLogs'),
43              route: '/logs/post-code-logs',
44            },
45          ],
46        },
47        {
48          id: 'hardware-status',
49          label: this.$t('appNavigation.hardwareStatus'),
50          icon: 'iconHealth',
51          children: [
52            {
53              id: 'inventory',
54              label: this.$t('appNavigation.inventory'),
55              route: '/hardware-status/inventory',
56            },
57            {
58              id: 'sensors',
59              label: this.$t('appNavigation.sensors'),
60              route: '/hardware-status/sensors',
61            },
62          ],
63        },
64        {
65          id: 'operations',
66          label: this.$t('appNavigation.operations'),
67          icon: 'iconControl',
68          children: [
69            {
70              id: 'factory-reset',
71              label: this.$t('appNavigation.factoryReset'),
72              route: '/operations/factory-reset',
73            },
74            {
75              id: 'kvm',
76              label: this.$t('appNavigation.kvm'),
77              route: '/operations/kvm',
78            },
79            {
80              id: 'key-clear',
81              label: this.$t('appNavigation.keyClear'),
82              route: '/operations/key-clear',
83            },
84            {
85              id: 'firmware',
86              label: this.$t('appNavigation.firmware'),
87              route: '/operations/firmware',
88            },
89            {
90              id: 'reboot-bmc',
91              label: this.$t('appNavigation.rebootBmc'),
92              route: '/operations/reboot-bmc',
93            },
94            {
95              id: 'serial-over-lan',
96              label: this.$t('appNavigation.serialOverLan'),
97              route: '/operations/serial-over-lan',
98            },
99            {
100              id: 'server-power-operations',
101              label: this.$t('appNavigation.serverPowerOperations'),
102              route: '/operations/server-power-operations',
103            },
104            {
105              id: 'virtual-media',
106              label: this.$t('appNavigation.virtualMedia'),
107              route: '/operations/virtual-media',
108            },
109          ],
110        },
111        {
112          id: 'settings',
113          label: this.$t('appNavigation.settings'),
114          icon: 'iconSettings',
115          children: [
116            {
117              id: 'date-time',
118              label: this.$t('appNavigation.dateTime'),
119              route: '/settings/date-time',
120            },
121            {
122              id: 'network',
123              label: this.$t('appNavigation.network'),
124              route: '/settings/network',
125            },
126            {
127              id: 'power-restore-policy',
128              label: this.$t('appNavigation.powerRestorePolicy'),
129              route: '/settings/power-restore-policy',
130            },
131          ],
132        },
133        {
134          id: 'security-and-access',
135          label: this.$t('appNavigation.securityAndAccess'),
136          icon: 'iconSecurityAndAccess',
137          children: [
138            {
139              id: 'sessions',
140              label: this.$t('appNavigation.sessions'),
141              route: '/security-and-access/sessions',
142            },
143            {
144              id: 'ldap',
145              label: this.$t('appNavigation.ldap'),
146              route: '/security-and-access/ldap',
147            },
148            {
149              id: 'user-management',
150              label: this.$t('appNavigation.userManagement'),
151              route: '/security-and-access/user-management',
152            },
153            {
154              id: 'policies',
155              label: this.$t('appNavigation.policies'),
156              route: '/security-and-access/policies',
157            },
158            {
159              id: 'certificates',
160              label: this.$t('appNavigation.certificates'),
161              route: '/security-and-access/certificates',
162            },
163          ],
164        },
165        {
166          id: 'resource-management',
167          label: this.$t('appNavigation.resourceManagement'),
168          icon: 'iconResourceManagement',
169          children: [
170            {
171              id: 'power',
172              label: this.$t('appNavigation.power'),
173              route: '/resource-management/power',
174            },
175          ],
176        },
177      ],
178    };
179  },
180};
181
182export default AppNavigationMixin;
183