From 30a66f1441313bb980af5364a8d5a9cdb41ad461 Mon Sep 17 00:00:00 2001 From: j433866 Date: Wed, 3 Jul 2019 16:05:20 +0100 Subject: [PATCH] Use reduce to find smallest and largest inputNums. Tab shadows are now displayed using css classes --- src/web/stylesheets/layout/_io.css | 8 ++++++++ src/web/waiters/TabWaiter.mjs | 23 ++++++++--------------- src/web/workers/InputWorker.mjs | 20 ++++++++------------ 3 files changed, 24 insertions(+), 27 deletions(-) diff --git a/src/web/stylesheets/layout/_io.css b/src/web/stylesheets/layout/_io.css index 004411d6..d7d628cb 100755 --- a/src/web/stylesheets/layout/_io.css +++ b/src/web/stylesheets/layout/_io.css @@ -153,6 +153,14 @@ width: fit-content; } +.tabs-left > li:first-child { + box-shadow: 15px 0px 15px -15px var(--primary-border-colour) inset; +} + +.tabs-right > li:last-child { + box-shadow: -15px 0px 15px -15px var(--primary-border-colour) inset; +} + #input-wrapper, #output-wrapper, #input-wrapper > * , diff --git a/src/web/waiters/TabWaiter.mjs b/src/web/waiters/TabWaiter.mjs index 6e4df13d..384b1ab7 100644 --- a/src/web/waiters/TabWaiter.mjs +++ b/src/web/waiters/TabWaiter.mjs @@ -251,23 +251,16 @@ class TabWaiter { tabsList.appendChild(this.createTabElement(nums[i], active, io)); } - const firstTab = tabsList.firstElementChild, - lastTab = tabsList.lastElementChild; - // Display shadows if there are tabs left / right of the displayed tabs - if (firstTab) { - if (tabsLeft) { - firstTab.style.boxShadow = "15px 0px 15px -15px var(--primary-border-colour) inset"; - } else { - firstTab.style.boxShadow = ""; - } + if (tabsLeft) { + tabsList.classList.add("tabs-left"); + } else { + tabsList.classList.remove("tabs-left"); } - if (lastTab) { - if (tabsRight) { - lastTab.style.boxShadow = "-15px 0px 15px -15px var(--primary-border-colour) inset"; - } else { - lastTab.style.boxShadow = ""; - } + if (tabsRight) { + tabsList.classList.add("tabs-right"); + } else { + tabsList.classList.remove("tabs-right"); } // Show or hide the tab bar depending on how many tabs we have diff --git a/src/web/workers/InputWorker.mjs b/src/web/workers/InputWorker.mjs index 17d09b93..a4395d1c 100644 --- a/src/web/workers/InputWorker.mjs +++ b/src/web/workers/InputWorker.mjs @@ -315,13 +315,10 @@ self.getInputProgress = function(inputNum) { * @returns {number} */ self.getLargestInputNum = function(inputNums) { - let max = -1; - for (let i = 0; i < inputNums.length; i++) { - // Object.keys() returns a string array, so parseInt here - const num = parseInt(inputNums[i], 10); - if (num > max) max = num; - } - return max; + return inputNums.reduce((acc, val) => { + val = parseInt(val, 10); + return val > acc ? val : acc; + }, -1); }; /** @@ -331,11 +328,10 @@ self.getLargestInputNum = function(inputNums) { * @returns {number} */ self.getSmallestInputNum = function(inputNums) { - let min = Number.MAX_SAFE_INTEGER; - for (let i = 0; i < inputNums.length; i++) { - const num = parseInt(inputNums[i], 10); - if (num < min) min = num; - } + const min = inputNums.reduce((acc, val) => { + val = parseInt(val, 10); + return val < acc ? val : acc; + }, Number.MAX_SAFE_INTEGER); // Assume we don't have this many tabs! if (min === Number.MAX_SAFE_INTEGER) return -1;