From 586ea759404e2905fe53ad9c1dad8e563a5cde7f Mon Sep 17 00:00:00 2001 From: Allen Bai Date: Dec 17 2019 15:48:28 +0000 Subject: coreos-download: add tab view for coreos download page The current view for coreos download page requires users scrolling a lot in order to view cloud operators download because of the long list of cloud launchable instances. To improve this, tab view is added. Related to: https://pagure.io/fedora-websites/issue/964 Signed-off-by: Allen Bai --- diff --git a/sites/getfedora.org/site/coreos/download/index.html b/sites/getfedora.org/site/coreos/download/index.html index a39b66d..5954170 100644 --- a/sites/getfedora.org/site/coreos/download/index.html +++ b/sites/getfedora.org/site/coreos/download/index.html @@ -21,7 +21,7 @@

-
+
diff --git a/sites/static/js/coreos-download.js b/sites/static/js/coreos-download.js index 1d4aa0e..826f077 100644 --- a/sites/static/js/coreos-download.js +++ b/sites/static/js/coreos-download.js @@ -238,6 +238,36 @@ var coreos_download_app = new Vue({ } else { return stringize(Math.floor(elapsed/msPerYear), "year"); } + }, + toggleHidden: function(e) { + const id_list = ['cloud-launchable', 'metal-virt', 'cloud-operator']; + switch(e.target.innerText) { + case "Cloud Launchable": + show_id = 'cloud-launchable'; + id_list.map(id => document.getElementById(id).hidden = (id !== show_id)); + break; + case "Bare Metal & Virtualized": + show_id = 'metal-virt'; + id_list.map(id => document.getElementById(id).hidden = (id !== show_id)); + break; + case "For Cloud Operators": + show_id = 'cloud-operator'; + id_list.map(id => document.getElementById(id).hidden = (id !== show_id)); + break; + } + }, + getNavbar: function(h) { + nav_cloud_launchable_btn = h('button', { class: "nav-link active", attrs: { "data-toggle": "tab" }, on: { click: this.toggleHidden } }, "Cloud Launchable"); + nav_cloud_launchable = h('li', { class: "nav-item mr-3 ml-3" }, [ nav_cloud_launchable_btn ]); + + nav_metal_virt_btn = h('button', { class: "nav-link", attrs: { "data-toggle": "tab" }, on: { click: this.toggleHidden } }, "Bare Metal & Virtualized"); + nav_metal_virt = h('li', { class: "nav-item mr-3" }, [ nav_metal_virt_btn ]); + + nav_cloud_operator_btn = h('button', { class: "nav-link", attrs: { "data-toggle": "tab" }, on: { click: this.toggleHidden } }, "For Cloud Operators"); + nav_cloud_operator = h('li', { class: "nav-item" }, [ nav_cloud_operator_btn ]); + + navbar = h('ul', { class: "nav nav-tabs" }, [ nav_cloud_launchable, nav_metal_virt, nav_cloud_operator ]); + return navbar } }, render: function(h) { @@ -426,22 +456,20 @@ var coreos_download_app = new Vue({ ]) ]); + let navbar = this.getNavbar(h); + + let bare_metal_container = h('div', { class: "col-12 p-0" }, [ bareMetalTitle, verifyBlurb, bareMetal ]); + let virtualized_container = h('div', { class: "col-12 p-0" }, [ virtualizedTitle, verifyBlurb, virtualized ]); + + let cloud_launchable_container = h('div', { class: "col-12 py-2 my-2", attrs: { id: "cloud-launchable", hidden: false} }, [ cloudLaunchableTitle, streamName, cloudLaunchable ]); + let metal_virt_container = h('div', { class: "col-12 py-2 my-2", attrs: { id: "metal-virt", hidden: true } }, [ bare_metal_container, virtualized_container ]); + let cloud_operators_container = h('div', { class: "col-12 py-2 my-2", attrs: { id: "cloud-operator", hidden: true } }, [ cloudTitle, verifyBlurb, cloud ]); + return h('div', {}, [ - streamName, - cloudLaunchableTitle, - cloudLaunchable, - h('hr'), - bareMetalTitle, - verifyBlurb, - bareMetal, - h('hr'), - virtualizedTitle, - verifyBlurb, - virtualized, - h('hr'), - cloudTitle, - verifyBlurb, - cloud + navbar, + cloud_launchable_container, + metal_virt_container, + cloud_operators_container ]); } else {