From dc6b3cde1a064e55560798a94deaba14247bcae4 Mon Sep 17 00:00:00 2001 From: Dixsie Wolmers Date: Thu, 20 May 2021 19:01:42 -0500 Subject: Add quicklinks to hardware status page - Renames SetFocusMixin to JumpLinkMixin to better describe what the mixin is for: jump links like quick links and skip to main content - Adds scrollToOffset method to JumpLinkMixin methods to scroll to selected page elements - Scroll offset is required to show table header below the nav header - Setting focus is required for accessibility Signed-off-by: Dixsie Wolmers Change-Id: I500a2d70727c5a78aeae4a6193ba22a38e4f0b6f --- src/views/Health/HardwareStatus/HardwareStatus.vue | 95 ++++++++++++++++++++-- 1 file changed, 87 insertions(+), 8 deletions(-) (limited to 'src/views') diff --git a/src/views/Health/HardwareStatus/HardwareStatus.vue b/src/views/Health/HardwareStatus/HardwareStatus.vue index 0869e286..0e37f6e8 100644 --- a/src/views/Health/HardwareStatus/HardwareStatus.vue +++ b/src/views/Health/HardwareStatus/HardwareStatus.vue @@ -2,26 +2,43 @@ + + + + +
+ + {{ item.linkText }} + +
+
+
+
+ - + - + - + - + - + - + - +
@@ -35,6 +52,12 @@ import TableBmcManager from './HardwareStatusTableBmcManager'; import TableChassis from './HardwareStatusTableChassis'; import TableProcessors from './HardwareStatusTableProcessors'; import LoadingBarMixin from '@/components/Mixins/LoadingBarMixin'; +import PageSection from '@/components/Global/PageSection'; +import JumpLink16 from '@carbon/icons-vue/es/jump-link/16'; + +import JumpLinkMixin from '@/components/Mixins/JumpLinkMixin'; + +import { chunk } from 'lodash'; export default { components: { @@ -46,14 +69,70 @@ export default { TableBmcManager, TableChassis, TableProcessors, + PageSection, + JumpLink: JumpLink16, }, - mixins: [LoadingBarMixin], + mixins: [LoadingBarMixin, JumpLinkMixin], beforeRouteLeave(to, from, next) { // Hide loader if user navigates away from page // before requests complete this.hideLoader(); next(); }, + data() { + return { + links: [ + { + id: 'bmc', + dataRef: 'bmc', + href: '#bmc', + linkText: this.$t('pageHardwareStatus.bmcManager'), + }, + { + id: 'chassis', + dataRef: 'chassis', + href: '#chassis', + linkText: this.$t('pageHardwareStatus.chassis'), + }, + { + id: 'dimms', + dataRef: 'dimms', + href: '#dimms', + linkText: this.$t('pageHardwareStatus.dimmSlot'), + }, + { + id: 'fans', + dataRef: 'fans', + href: '#fans', + linkText: this.$t('pageHardwareStatus.fans'), + }, + { + id: 'powerSupply', + dataRef: 'powerSupply', + href: '#powerSupply', + linkText: this.$t('pageHardwareStatus.powerSupplies'), + }, + { + id: 'processors', + dataRef: 'processors', + href: '#processors', + linkText: this.$t('pageHardwareStatus.processors'), + }, + { + id: 'system', + dataRef: 'system', + href: '#system', + linkText: this.$t('pageHardwareStatus.system'), + }, + ], + }; + }, + computed: { + quicklinkColumns() { + // Chunk links array to 3 array's to display 3 items per column + return chunk(this.links, 3); + }, + }, created() { this.startLoader(); const systemTablePromise = new Promise((resolve) => { -- cgit v1.2.3