calc-general-boatcat #435
| @@ -17,17 +17,8 @@ jobs: | ||||
|     - name: Run Test DB Script | ||||
|       run: ./test_db.sh | ||||
|  | ||||
|     - name: Set up cargo cache | ||||
|       uses: actions/cache@v3 | ||||
|       with: | ||||
|         path: | | ||||
|           ~/.cargo/bin/ | ||||
|           ~/.cargo/registry/index/ | ||||
|           ~/.cargo/registry/cache/ | ||||
|           ~/.cargo/git/db/ | ||||
|           target/ | ||||
|         key: ${{ runner.os }}-cargo-debug-rowt-${{ hashFiles('**/Cargo.lock') }} | ||||
|         restore-keys: ${{ runner.os }}-cargo-debug-rowt- | ||||
|     - name: Cache Cargo dependencies | ||||
|       uses: Swatinem/rust-cache@v2 | ||||
|  | ||||
|     - name: Build | ||||
|       run: | | ||||
| @@ -56,17 +47,9 @@ jobs: | ||||
|       - name: Run Test DB Script | ||||
|         run: ./test_db.sh | ||||
|  | ||||
|       - name: Set up cargo cache | ||||
|         uses: actions/cache@v3 | ||||
|         with: | ||||
|           path: | | ||||
|             ~/.cargo/bin/ | ||||
|             ~/.cargo/registry/index/ | ||||
|             ~/.cargo/registry/cache/ | ||||
|             ~/.cargo/git/db/ | ||||
|             target/ | ||||
|           key: ${{ runner.os }}-cargo-release-rowt-${{ hashFiles('**/Cargo.lock') }} | ||||
|           restore-keys: ${{ runner.os }}-cargo-release-rowt- | ||||
|       - name: Cache Cargo dependencies | ||||
|         uses: Swatinem/rust-cache@v2 | ||||
|  | ||||
|       - name: Build | ||||
|         run: | | ||||
|           cargo build --release --target $CARGO_TARGET | ||||
| @@ -107,17 +90,8 @@ jobs: | ||||
|       - name: Run Test DB Script | ||||
|         run: ./test_db.sh | ||||
|        | ||||
|       - name: Set up cargo cache | ||||
|         uses: actions/cache@v3 | ||||
|         with: | ||||
|           path: | | ||||
|             ~/.cargo/bin/ | ||||
|             ~/.cargo/registry/index/ | ||||
|             ~/.cargo/registry/cache/ | ||||
|             ~/.cargo/git/db/ | ||||
|             target/ | ||||
|           key: ${{ runner.os }}-cargo-release-rowt-${{ hashFiles('**/Cargo.lock') }} | ||||
|           restore-keys: ${{ runner.os }}-cargo-release-rowt- | ||||
|       - name: Cache Cargo dependencies | ||||
|         uses: Swatinem/rust-cache@v2 | ||||
|  | ||||
|       - name: Build | ||||
|         run: | | ||||
|   | ||||
| @@ -15,7 +15,7 @@ test("Cox can start and cancel trip", async ({ page }, testInfo) => { | ||||
|     await page.getByText("Kaputtes Boot :-( (7x)").nth(1).click(); | ||||
|     await page.getByRole("option", { name: "Joe" }).click(); | ||||
|   } else { | ||||
|     await page.getByText('2x').click(); | ||||
|     await page.getByText('2x', { exact: true }).click(); | ||||
|     await page.getByText("Joe", { exact: true }).click(); | ||||
|   } | ||||
|   await page.getByPlaceholder("Ruderer auswählen").click(); | ||||
| @@ -56,7 +56,7 @@ test("Cox can start and finish trip", async ({ page }, testInfo) => { | ||||
|     await page.getByText("Kaputtes Boot :-( (7x)").nth(1).click();   | ||||
|     await page.getByRole("option", { name: "Joe" }).click(); | ||||
|   } else { | ||||
|     await page.getByText('2x').click(); | ||||
|     await page.getByText('2x', { exact: true }).click(); | ||||
|     await page.getByText("Joe", { exact: true }).click(); | ||||
|   } | ||||
|   await page.getByPlaceholder("Ruderer auswählen").click(); | ||||
| @@ -108,7 +108,7 @@ test("Kiosk can start and cancel trip", async ({ page }, testInfo) => { | ||||
|     await page.getByText("Kaputtes Boot :-( (7x)").nth(1).click(); | ||||
|     await page.getByRole("option", { name: "Joe" }).click(); | ||||
|   } else { | ||||
|     await page.getByText('2x').click(); | ||||
|     await page.getByText('2x', { exact: true }).click(); | ||||
|     await page.getByText("Joe", { exact: true }).click(); | ||||
|   } | ||||
|   await page.getByPlaceholder("Ruderer auswählen").click(); | ||||
| @@ -142,7 +142,7 @@ test("Kiosk can start and finish trip", async ({ page }, testInfo) => { | ||||
|     await page.getByText("Kaputtes Boot :-( (7x)").nth(1).click(); | ||||
|     await page.getByRole("option", { name: "Joe" }).click(); | ||||
|   } else { | ||||
|     await page.getByText('2x').click(); | ||||
|     await page.getByText('2x', { exact: true }).click(); | ||||
|     await page.getByText("Joe", { exact: true }).click(); | ||||
|   } | ||||
|   await page.getByPlaceholder("Ruderer auswählen").click(); | ||||
|   | ||||
| @@ -21,9 +21,9 @@ pub struct Boat { | ||||
|     pub boatbuilder: Option<String>, | ||||
|     pub default_destination: Option<String>, | ||||
|     #[serde(default = "bool::default")] | ||||
|     convert_handoperated_possible: bool, | ||||
|     pub convert_handoperated_possible: bool, | ||||
|     #[serde(default = "bool::default")] | ||||
|     default_shipmaster_only_steering: bool, | ||||
|     pub default_shipmaster_only_steering: bool, | ||||
|     #[serde(default = "bool::default")] | ||||
|     skull: bool, | ||||
|     #[serde(default = "bool::default")] | ||||
| @@ -46,6 +46,7 @@ pub struct BoatWithDetails { | ||||
|     damage: BoatDamage, | ||||
|     on_water: bool, | ||||
|     reserved_today: bool, | ||||
|     cat: String, | ||||
| } | ||||
|  | ||||
| #[derive(FromForm)] | ||||
| @@ -179,11 +180,18 @@ AND date('now') BETWEEN start_date AND end_date;", | ||||
|             if boat.is_locked(db).await { | ||||
|                 damage = BoatDamage::Locked; | ||||
|             } | ||||
|             let cat = if boat.default_shipmaster_only_steering { | ||||
|                 format!("{}+", boat.amount_seats - 1) | ||||
|             } else { | ||||
|                 format!("{}x", boat.amount_seats) | ||||
|             }; | ||||
|  | ||||
|             res.push(BoatWithDetails { | ||||
|                 damage, | ||||
|                 on_water: boat.on_water(db).await, | ||||
|                 reserved_today: boat.reserved_today(db).await, | ||||
|                 boat, | ||||
|                 cat, | ||||
|             }); | ||||
|         } | ||||
|         res | ||||
|   | ||||
| @@ -126,6 +126,7 @@ pub enum LogbookCreateError { | ||||
|     NotYourEntry, | ||||
|     ArrivalSetButNotRemainingTwo, | ||||
|     OnlyAllowedToEndTripsEndingToday, | ||||
|     CantChangeHandoperatableStatusForThisBoat, | ||||
| } | ||||
|  | ||||
| impl From<LogbookUpdateError> for LogbookCreateError { | ||||
| @@ -302,6 +303,12 @@ ORDER BY departure DESC | ||||
|             return Err(LogbookCreateError::BoatNotFound); | ||||
|         }; | ||||
|  | ||||
|         if log.shipmaster_only_steering != boat.default_shipmaster_only_steering { | ||||
|             if !boat.convert_handoperated_possible { | ||||
|                 return Err(LogbookCreateError::CantChangeHandoperatableStatusForThisBoat); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         if boat.amount_seats == 1 && log.rowers.is_empty() { | ||||
|             log.rowers = vec![created_by_user.id]; | ||||
|         } | ||||
|   | ||||
| @@ -214,6 +214,7 @@ async fn create_logbook( | ||||
|         Err(LogbookCreateError::NotYourEntry) => Flash::error(Redirect::to("/log"), "Nicht deine Ausfahrt!"), | ||||
|         Err(LogbookCreateError::ArrivalSetButNotRemainingTwo) => Flash::error(Redirect::to("/log"), "Ankunftszeit gesetzt aber nicht Distanz + Strecke"), | ||||
|         Err(LogbookCreateError::OnlyAllowedToEndTripsEndingToday) => Flash::error(Redirect::to("/log"), "Nur Ausfahrten, die in der letzten Woche enden dürfen eingetragen werden. Für einen Nachtrag schreibe alle Daten Philipp (Tel. nr. siehe Signal oder it@rudernlinz.at)."), | ||||
|         Err(LogbookCreateError::CantChangeHandoperatableStatusForThisBoat) => Flash::error(Redirect::to("/log"), "Handsteuer-Status dieses Boots kann nicht verändert werden."), | ||||
|  | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -3,16 +3,14 @@ | ||||
|    Inputs: boats | ||||
|  #} | ||||
| {% macro show_boats() %} | ||||
|     {% for amount_seats, grouped_boats in boats | group_by(attribute="amount_seats") %} | ||||
|     {% for amount_seats, grouped_boats in boats | group_by(attribute="cat") %} | ||||
|         <details> | ||||
|             <summary class="font-bold cursor-pointer text-primary-900 dark:text-white border-t p-3 hover:bg-gray-100 dark:hover:bg-primary-950"> | ||||
|                 <span> | ||||
|                     {% if grouped_boats[0].external %} | ||||
|                         Vereinsfremde Boote | ||||
|                     {% elif grouped_boats[0].default_shipmaster_only_steering %} | ||||
|                         {{ grouped_boats[0].amount_seats - 1 }}+ | ||||
|                     {% else %} | ||||
|                         {{ amount_seats }}x | ||||
|                         {{ grouped_boats[0].cat }} | ||||
|                     {% endif %} | ||||
|                 </span> | ||||
|                 <small class="text-gray-500 dark:text-gray-100">({{ grouped_boats | length }})</small> | ||||
| @@ -78,7 +76,7 @@ | ||||
|     </form> | ||||
| {% endmacro new %} | ||||
| {% macro boat_select(id="boat_id") %} | ||||
|     {{ macros::select(label="Boot", data=boats, name="boat_id", id=id, display=["name", " (","amount_seats", " x)"], extras=["default_shipmaster_only_steering", "amount_seats", "on_water", "default_destination"], wrapper_class="col-span-4", show_seats=true) }} | ||||
|     {{ macros::select(label="Boot", data=boats, name="boat_id", id=id, display=["name", " (","cat",")"], extras=["default_shipmaster_only_steering", "amount_seats", "on_water", "default_destination"], wrapper_class="col-span-4", show_seats=true) }} | ||||
| {% endmacro boat_select %} | ||||
| {% macro rower_select(id, selected, amount_seats='', class='', init='false', cox_on_boat='', steering_person_id='') %} | ||||
|     {#{% if not amount_seats or amount_seats > 1 %}#} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user