From fa610f6ee12c2232975558e7d4739bfe7e43be22 Mon Sep 17 00:00:00 2001 From: Spythere Date: Thu, 25 May 2023 19:06:42 +0200 Subject: [PATCH] =?UTF-8?q?feature:=20losowanie=20obszar=C3=B3w=20konstr.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/tabs/NumberGeneratorTab.vue | 62 ++++++++++++++++------ src/constants/numberGeneratorData.json | 2 +- src/styles/global.scss | 2 + 3 files changed, 48 insertions(+), 18 deletions(-) diff --git a/src/components/tabs/NumberGeneratorTab.vue b/src/components/tabs/NumberGeneratorTab.vue index ffb4136..28dcaff 100644 --- a/src/components/tabs/NumberGeneratorTab.vue +++ b/src/components/tabs/NumberGeneratorTab.vue @@ -6,31 +6,40 @@
- - -
- Wygenerowany numer pociągu: {{ trainNumber }} - Wybierz obszary konstrukcyjne i kategorię! + + Wygenerowany numer pociągu: {{ trainNumber }} + + Wybierz kategorię oraz obszary konstrukcyjne (opcjonalnie)
-
- + + +
+
- + +
@@ -49,22 +58,36 @@ const categoryRules = ref(null) as Ref; const trainNumber = ref(null) as Ref; -const randomizeTrainNumber = () => { - if (beginRegionName.value == null || endRegionName.value == null || categoryRules.value == null) return ''; +const randomizeTrainNumber = (randomizeRegions = false) => { + if (categoryRules.value == null) return; + + const regionKeys = Object.keys(genData.regionNumbers); + + if (beginRegionName.value == null || randomizeRegions) + beginRegionName.value = regionKeys[(regionKeys.length * Math.random()) << 0] as RegionName; + + if (endRegionName.value == null || randomizeRegions) + endRegionName.value = regionKeys[(regionKeys.length * Math.random()) << 0] as RegionName; let number = ''; if (beginRegionName.value == endRegionName.value) { - const sameRegionsNumbers = genData.sameRegions[beginRegionName.value]; + const sameRegionsNumbers = genData.sameRegions[beginRegionName.value!]; const randRegionNumber = sameRegionsNumbers[Math.floor(Math.random() * sameRegionsNumbers.length)]; number += randRegionNumber.toString(); } else { - const beginRegionNumber = genData.regionNumbers[beginRegionName.value]; - const endRegionNumber = genData.regionNumbers[endRegionName.value]; + const beginRegionNumber = genData.regionNumbers[beginRegionName.value!]; + const endRegionNumber = genData.regionNumbers[endRegionName.value!]; number += `${beginRegionNumber}${endRegionNumber}`; } + // Do not roll the rest of number again if only randomize regions + if (randomizeRegions) { + trainNumber.value = number + trainNumber.value?.substring(2); + return; + } + const rulesArray = categoryRules.value.split(';').map((r) => ({ index: r.split(':')[0], rule: r.split(':')[1], @@ -104,6 +127,9 @@ const randomizeTrainNumber = () => { .generated-number { font-size: 1.3em; font-weight: bold; + text-align: center; + + cursor: pointer; margin: 0.5em 0; padding: 0.5em; @@ -111,11 +137,13 @@ const randomizeTrainNumber = () => { } .tab_actions { - margin-top: 0.5em; + grid-template-columns: 1fr 1fr; + margin: 0.5em 0; +} - button { - grid-column: 3; - } +.tab_links { + display: flex; + justify-content: flex-end; } @media screen and (max-width: $breakpointMd) { diff --git a/src/constants/numberGeneratorData.json b/src/constants/numberGeneratorData.json index df3c640..ad6cd4c 100644 --- a/src/constants/numberGeneratorData.json +++ b/src/constants/numberGeneratorData.json @@ -28,7 +28,7 @@ "categories": { "ekspres krajowy (EI)": "2:00-99:2", "(między)wojewódzki pośpieszny (MP/RP)": "2:050-169:3", - "wojewódzki osobowy (RO)": "2:200-999:3:", + "wojewódzki osobowy (RO)": "2:200-999:3", "próżny \"służbowy\" (PW)": "2:6;3:0-899:3", "towarowy do przewozów masowych (TM)": "2:4;3:0-899:3", "towarowy do obsługi stacji (TK)": "2:3;3:0-899:3", diff --git a/src/styles/global.scss b/src/styles/global.scss index 0a389a3..1160b4e 100644 --- a/src/styles/global.scss +++ b/src/styles/global.scss @@ -48,6 +48,8 @@ a { color: white; text-decoration: none; + transition: color 250ms; + &:visited { color: white; }