From 78db5942d4b04817b9babea62254155de1c375a9 Mon Sep 17 00:00:00 2001 From: Spythere Date: Fri, 12 Nov 2021 13:49:01 +0100 Subject: [PATCH] =?UTF-8?q?Wygl=C4=85d,=20responsywno=C5=9B=C4=87,=20popra?= =?UTF-8?q?wki=20funkcjonalno=C5=9Bci?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- src/App.vue | 559 +++++++++++++++++++++++++++------------------------ 2 files changed, 298 insertions(+), 263 deletions(-) diff --git a/package.json b/package.json index 61c0545..6bf1d25 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pojazdownik", - "version": "1.0.0", + "version": "1.0.1", "private": true, "scripts": { "serve": "vue-cli-service serve", diff --git a/src/App.vue b/src/App.vue index a840c8f..4ccb7bb 100644 --- a/src/App.vue +++ b/src/App.vue @@ -5,223 +5,225 @@
-
-
-

LOKOMOTYWA / ZESP. TRAKCYJNY

-
- -
+
+
+
+

LOKOMOTYWA / ZESP. TRAKCYJNY

+
+ +
-
- - - -
-
-
- -
-
-

RODZAJ WAGONU

-
- -
- -
- - - -
- -
- - {{ cargo.id }} - - + + + + + +
+ +
+ +
-
-
-
-
-
- POGLĄD WYBRANEGO POJAZDU +
+
+

RODZAJ WAGONU

+
+
-
- ŁADOWANIE OBRAZU... +
+ + +
- - - +
+ +
- -
-
-
- - -
- -
- Masa: {{ totalMass }} t | Długość: - {{ totalLength }} - m | Vmax: {{ maxSpeed }} km/h -
- -
    -
  • - Lista pojazdów jest pusta! -
  • - -
  • -
    - - {{ stock.isLoco ? stock.type : getCarSpecFromType(stock.type) }} - -   ({{ stock.cargo?.id }}) -   - {{ stock.length }}m -   - {{ stock.cargo ? stock.cargo.totalMass : stock.mass }}t +
    +
    +
    +
    +
    + POGLĄD WYBRANEGO POJAZDU +
    +
    + ŁADOWANIE OBRAZU... +
    + +
    +
    + +
    -
    -
    - +
    - {{ stock.count }} +
    +
    + + +
    +
    + Masa: {{ totalMass }} t | Długość: + {{ totalLength }} + m | Vmax składu: + {{ maxSpeed }} km/h +
    +
      +
    • +
      Lista pojazdów jest pusta!
      +
    • - +
    • +
      + + {{ stock.isLoco ? stock.type : getCarSpecFromType(stock.type) }} + +   ({{ stock.cargo?.id }}) +   + {{ stock.length }}m +   + {{ stock.cargo ? stock.cargo.totalMass : stock.mass }}t
      - - - - - -
    - -
  • -
-
+
+
+ + {{ stock.count }} + +
+ + + +
+ + + +
@@ -314,6 +316,8 @@ export default class App extends Vue { }, ]; + showSupporter = false; + chosenLocoPower = "loco-e"; chosenCarUseType = "car-passenger"; @@ -479,6 +483,10 @@ export default class App extends Vue { } downloadStock() { + const fileName = prompt("Nazwij plik:", "sklad"); + + if (!fileName) return; + const stockString = this.stockList .map((stock) => { let s = @@ -493,8 +501,6 @@ export default class App extends Vue { }) .join(";"); - const fileName = prompt("Nazwij plik:", "sklad"); - const blob = new Blob([stockString]); const file = fileName + ".con"; @@ -505,8 +511,6 @@ export default class App extends Vue { a.dataset.downloadurl = ["", a.download, a.href].join(":"); e.initEvent("click", true, false); a.dispatchEvent(e); - - console.log(stockString); } get locoDataList() { @@ -516,6 +520,8 @@ export default class App extends Vue { const locoVehiclesData = (vehicleDataJSON as VehicleData)[vehicleTypeKey]; locoVehiclesData.forEach((loco) => { + if (loco[4] && !this.showSupporter) return; + const locoType = loco[0] as string; let length = 0, @@ -599,6 +605,8 @@ export default class App extends Vue { const carVehiclesData = (vehicleDataJSON as VehicleData)[vehicleTypeKey]; carVehiclesData.forEach((car) => { + if (car[3] && !this.showSupporter) return; + const carPropsData = vehiclePropsJSON.find((v) => car[0].toString().includes(v.type) ); @@ -632,6 +640,10 @@ export default class App extends Vue { const vehicle = this.chosenCar || this.chosenLoco; if (!vehicle) return; + if (vehicle.length + this.totalLength > 650) { + alert("Maksymalna długość składu to 650m!"); + return; + } const previousStock = this.stockList.length > 0 @@ -772,32 +784,25 @@ h2 { /* MAIN SECTION */ main { - display: grid; + /* display: grid; */ - grid-template-areas: "loco car" "image list"; - gap: 4em 2em; + /* grid-template-areas: + "loco car" + "image image" + "stock stock"; */ - align-content: flex-start; - - margin-top: 6em; - - @media screen and (max-width: 800px) { - grid-template-areas: "loco" "car" "image" "list"; - justify-content: center; - - margin-top: 2.5em; - gap: 2em; - } + margin-top: 8em; } .inputs { - &_loco { - grid-area: "loco"; + display: flex; + justify-content: space-between; + + @media screen and (max-width: 800px) { + flex-direction: column; } &_car { - grid-area: "car"; - &.disabled { opacity: 0.75; pointer-events: none; @@ -811,19 +816,44 @@ main { } &_radio { + label span { + padding: 0.25em 0.55em; + border: 2px solid white; + } + } + + &_checkbox { + label span { + /* padding: 0.25em 0.55em; */ + /* border: 2px solid white; */ + color: #aaa; + + &::before { + content: ""; + display: inline-block; + + width: 1.5ex; + height: 1.5ex; + background: #aaa; + + margin-right: 0.5em; + } + } + + input:checked + span::before { + background-color: $accentColor; + } + } + + &_radio, + &_checkbox { margin: 1em 0; label { cursor: pointer; - margin-right: 0.5em; - span { - padding: 0.25em 0.55em; - border: 2px solid white; - } - - & > input { + input { display: none; &:checked + span { @@ -858,23 +888,42 @@ main { } } -.images { +.bottom { display: flex; justify-content: space-between; - flex-wrap: wrap; - .image { - position: relative; + margin-top: 2.5em; - grid-area: "image"; + @media screen and (max-width: 800px) { + flex-direction: column; + align-items: center; + + .image { + display: flex; + padding: 0 0 2em 0; + } + } +} + +.spacer { + flex: 2 1 10%; +} + +.image { + flex-grow: 2; + padding: 0 1em 0 0; + + &__wrapper { max-width: 380px; width: 22em; height: 13em; - border: 1px solid white; + } - &-content { - height: 100%; - } + &__content { + border: 1px solid white; + position: relative; + + height: 100%; img { width: 100%; @@ -900,28 +949,17 @@ main { background: rgba(#000, 0.75); } } - - button { - position: absolute; - right: 0; - top: 0; - - margin: 0.25em; - } - - img { - width: 100%; - height: 100%; - } } .stock-list { - grid-area: "list"; + flex-grow: 3; + + width: 100%; &_buttons { button { font-size: 0.9em; - padding: 0.2em 0.5em; + padding: 0.4em 0.5em; margin-bottom: 0.5em; } } @@ -934,6 +972,11 @@ main { outline: none; cursor: pointer; + &.list-empty { + border: 1px solid whitesmoke; + padding: 0 0.5em; + } + &:focus .item-content { color: $accentColor; } @@ -990,17 +1033,12 @@ main { font-size: calc(0.75vw + 0.6rem); } - header { - font-size: 0.85em; + main { + margin-top: 3.5em; } - .images { - justify-content: center; - - > .image { - width: 25em; - height: 15em; - } + header { + font-size: 0.85em; } .input { @@ -1012,12 +1050,9 @@ main { text-align: center; } - &_radio { - display: flex; - justify-content: center; - } - - &_list { + &_radio, + &_list, + &_checkbox { display: flex; justify-content: center; }