change select properly if boat is selected on the left
This commit is contained in:
		| @@ -72,9 +72,9 @@ function initBoatActions() { | |||||||
|           choiceObjects['newrower'].config.maxItemCount = rowers; |           choiceObjects['newrower'].config.maxItemCount = rowers; | ||||||
|           choiceObjects['newrower'].removeActiveItems(rowers); |           choiceObjects['newrower'].removeActiveItems(rowers); | ||||||
|           let boatSelect = <HTMLSelectElement>document.querySelector('#boat_id'); |           let boatSelect = <HTMLSelectElement>document.querySelector('#boat_id'); | ||||||
|           if(boatSelect && select.dataset.id) { |            | ||||||
|             boatSelect.value = select.dataset.id; |           choiceObjects['boat_id'].setChoiceByValue(select.dataset.id); | ||||||
|           } |            | ||||||
|           (rowers === 0 ? choiceObjects['newrower'].disable() : choiceObjects['newrower'].enable()); |           (rowers === 0 ? choiceObjects['newrower'].disable() : choiceObjects['newrower'].enable()); | ||||||
|         } |         } | ||||||
|       }); |       }); | ||||||
|   | |||||||
| @@ -64,8 +64,6 @@ async fn index( | |||||||
|  |  | ||||||
|     let on_water = Logbook::on_water(db).await; |     let on_water = Logbook::on_water(db).await; | ||||||
|  |  | ||||||
|     println!("{on_water:?}"); |  | ||||||
|  |  | ||||||
|     let mut context = Context::new(); |     let mut context = Context::new(); | ||||||
|     if let Some(msg) = flash { |     if let Some(msg) = flash { | ||||||
|         context.insert("flash", &msg.into_inner()); |         context.insert("flash", &msg.into_inner()); | ||||||
| @@ -111,8 +109,20 @@ async fn kiosk( | |||||||
|     kiosk: KioskCookie, |     kiosk: KioskCookie, | ||||||
| ) -> Template { | ) -> Template { | ||||||
|     let boats = Boat::all_at_location(db, kiosk.0).await; |     let boats = Boat::all_at_location(db, kiosk.0).await; | ||||||
|     let coxes = User::cox(db).await; |     let coxes: Vec<UserWithWaterStatus> = futures::future::join_all( | ||||||
|     let users = User::all(db).await; |         User::cox(db) | ||||||
|  |             .await | ||||||
|  |             .into_iter() | ||||||
|  |             .map(|user| UserWithWaterStatus::from_user(user, db)), | ||||||
|  |     ) | ||||||
|  |     .await; | ||||||
|  |     let users: Vec<UserWithWaterStatus> = futures::future::join_all( | ||||||
|  |         User::all(db) | ||||||
|  |             .await | ||||||
|  |             .into_iter() | ||||||
|  |             .map(|user| UserWithWaterStatus::from_user(user, db)), | ||||||
|  |     ) | ||||||
|  |     .await; | ||||||
|     let logtypes = LogType::all(db).await; |     let logtypes = LogType::all(db).await; | ||||||
|     let distances = Logbook::distances(db).await; |     let distances = Logbook::distances(db).await; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -35,12 +35,20 @@ | |||||||
| 			<select name="shipmaster" id="shipmaster" class="input rounded-md h-10"> | 			<select name="shipmaster" id="shipmaster" class="input rounded-md h-10"> | ||||||
| 				<optgroup label="Steuerleute"> | 				<optgroup label="Steuerleute"> | ||||||
| 					{% for cox in coxes %} | 					{% for cox in coxes %} | ||||||
| 						<option value="{{ cox.id }}" {% if cox.on_water %} disabled="disabled" {% else %} {% if cox.id == shipmaster %} selected {% endif %}  {% endif %}>{{ cox.name }} {% if cox.on_water %} (am Wasser) {% endif %}</option> | 						<option value="{{ cox.id }}" {% if cox.on_water %} disabled="disabled" {% else %} {% if cox.id == shipmaster %} selected {% endif %} {% endif %}>{{ cox.name }} | ||||||
|  | 							{% if cox.on_water %} | ||||||
|  | 								(am Wasser) | ||||||
|  | 							{% endif %} | ||||||
|  | 						</option> | ||||||
| 					{% endfor %} | 					{% endfor %} | ||||||
| 				</optgroup> | 				</optgroup> | ||||||
| 				<optgroup label="Mitglieder"> | 				<optgroup label="Mitglieder"> | ||||||
| 					{% for user in users | filter(attribute="is_cox", value=false) %} | 					{% for user in users | filter(attribute="is_cox", value=false) %} | ||||||
| 						<option value="{{ user.id }}" {% if user.id == shipmaster %} selected {% endif %} {% if user.on_water %} disabled="disabled" {% endif %}>{{ user.name }} {% if user.on_water %} (am Wasser) {% endif %}</option> | 						<option value="{{ user.id }}" {% if user.id == shipmaster %} selected {% endif %} {% if user.on_water %} disabled="disabled" {% endif %}>{{ user.name }} | ||||||
|  | 							{% if user.on_water %} | ||||||
|  | 								(am Wasser) | ||||||
|  | 							{% endif %} | ||||||
|  | 						</option> | ||||||
| 					{% endfor %} | 					{% endfor %} | ||||||
| 				</optgroup> | 				</optgroup> | ||||||
| 			</select> | 			</select> | ||||||
| @@ -58,16 +66,16 @@ | |||||||
| 		{{ macros::input(label='Abfahrtszeit', name='departure', type='datetime-local', required=true) }} | 		{{ macros::input(label='Abfahrtszeit', name='departure', type='datetime-local', required=true) }} | ||||||
| 		{{ macros::input(label='Ankunftszeit', name='arrival', type='datetime-local') }} | 		{{ macros::input(label='Ankunftszeit', name='arrival', type='datetime-local') }} | ||||||
|  |  | ||||||
|     <div class="relative"> | 		<div class="relative"> | ||||||
| 			<label for="destination" class="small text-gray-600">Ziel</label> | 			<label for="destination" class="small text-gray-600">Ziel</label> | ||||||
|  |  | ||||||
| 			<input class="input rounded-md set-distance-js" type="search" list="destinations" placeholder="Destination" id="destination" name="destination" value="" data-relation="distance_in_km"/> | 			<input class="input rounded-md set-distance-js" type="search" list="destinations" placeholder="Destination" id="destination" name="destination" value="" data-relation="distance_in_km"/> | ||||||
|       <datalist id="destinations"> | 			<datalist id="destinations"> | ||||||
|         {% for distance in distances %} | 				{% for distance in distances %} | ||||||
|           <option value="{{ distance.0 }}" distance={{ distance.1 }} /> | 					<option value="{{ distance.0 }}" distance={{ distance.1 }}/> | ||||||
|         {% endfor %} | 				{% endfor %} | ||||||
|       </datalist> | 			</datalist> | ||||||
|     </div> | 		</div> | ||||||
|  |  | ||||||
| 		<div class="relative"> | 		<div class="relative"> | ||||||
| 			{{ macros::input(label="Distanz", name="distance_in_km", id="distance_in_km" , type="number", min=0, value='', class="rounded-md") }} | 			{{ macros::input(label="Distanz", name="distance_in_km", id="distance_in_km" , type="number", min=0, value='', class="rounded-md") }} | ||||||
| @@ -95,21 +103,26 @@ | |||||||
| {% endmacro boat_select %} | {% endmacro boat_select %} | ||||||
|  |  | ||||||
| {% macro rower_select(id, selected, amount_seats='', class='', init='false') %} | {% macro rower_select(id, selected, amount_seats='', class='', init='false') %} | ||||||
|   {% if not amount_seats or amount_seats > 1 %}  | 	{% if not amount_seats or amount_seats > 1 %} | ||||||
|     <div class="{{ class }}"> | 		<div class="{{ class }}"> | ||||||
|       <select style="width: 100%;" multiple name="rowers[]" id="{{id}}" class="w-full" data-seats="{{amount_seats}}" data-init={{init}}> | 			<select style="width: 100%;" multiple name="rowers[]" id="{{id}}" class="w-full" data-seats="{{amount_seats}}" data-init={{init}}> | ||||||
|         {% for user in users %} | 				{% for user in users %} | ||||||
|           {% set_global sel = false %} | 					{% set_global sel = false %} | ||||||
|           {% for rower in selected %} | 					{% for rower in selected %} | ||||||
|             {% if rower.id == user.id %} | 						{% if rower.id == user.id %} | ||||||
|               {% set_global sel = true %} | 							{% set_global sel = true %} | ||||||
|             {% endif %} | 						{% endif %} | ||||||
|           {% endfor %} | 					{% endfor %} | ||||||
|           <option value="{{ user.id }}" {% if sel %} selected {% endif %} {% if user.on_water %} disabled="disabled" {% endif %}>{{user.name}} {% if user.on_water %} (am Wasser) {% endif %}</option> | 					<option value="{{ user.id }}" {% if sel %} selected {% endif %} {% if user.on_water %} disabled="disabled" {% endif %}> | ||||||
|         {% endfor %} | 						{{user.name}} | ||||||
|       </select> | 						{% if user.on_water %} | ||||||
|     </div> | 							(am Wasser) | ||||||
|   {% endif %} | 						{% endif %} | ||||||
|  | 					</option> | ||||||
|  | 				{% endfor %} | ||||||
|  | 			</select> | ||||||
|  | 		</div> | ||||||
|  | 	{% endif %} | ||||||
| {% endmacro rower_select %} | {% endmacro rower_select %} | ||||||
|  |  | ||||||
| {% macro show(log, state, allowed_to_close=false, only_ones) %} | {% macro show(log, state, allowed_to_close=false, only_ones) %} | ||||||
| @@ -215,13 +228,13 @@ | |||||||
|  |  | ||||||
| {% macro home(log, only_ones) %} | {% macro home(log, only_ones) %} | ||||||
| 	<form class="grid grid-cols-1 gap-3" action="/log/{{log.id}}" method="post"> | 	<form class="grid grid-cols-1 gap-3" action="/log/{{log.id}}" method="post"> | ||||||
|     {% for user in users %} | 		{% for user in users %} | ||||||
|       {% if user.id == log.shipmaster %} | 			{% if user.id == log.shipmaster %} | ||||||
|         <p> | 				<p> | ||||||
|           <strong>{{ user.name }}</strong> | 					<strong>{{ user.name }}</strong> | ||||||
|         </p> | 				</p> | ||||||
|       {% endif %} | 			{% endif %} | ||||||
|     {% endfor %} | 		{% endfor %} | ||||||
| 		{% if not only_ones %} | 		{% if not only_ones %} | ||||||
| 			{{ log::rower_select(id="rowers"~log.id, selected=log.rowers, amount_seats=log.boat.amount_seats) }} | 			{{ log::rower_select(id="rowers"~log.id, selected=log.rowers, amount_seats=log.boat.amount_seats) }} | ||||||
| 		{% endif %} | 		{% endif %} | ||||||
| @@ -229,7 +242,7 @@ | |||||||
| 			<label for="destination" class="small text-gray-600">Ziel</label> | 			<label for="destination" class="small text-gray-600">Ziel</label> | ||||||
|  |  | ||||||
| 			<input class="input rounded-md set-distance-js change-id-js" type="search" list="destinations" placeholder="Destination" required="required" id="destination{{ log.id }}" name="destination" value="{{log.destination}}" data-relation="distance_in_km{{log.id}}"/> | 			<input class="input rounded-md set-distance-js change-id-js" type="search" list="destinations" placeholder="Destination" required="required" id="destination{{ log.id }}" name="destination" value="{{log.destination}}" data-relation="distance_in_km{{log.id}}"/> | ||||||
|     </div> | 		</div> | ||||||
|  |  | ||||||
| 		<div class="relative"> | 		<div class="relative"> | ||||||
| 			{{ macros::input(label="Distanz", name="distance_in_km", id="distance_in_km" ~ log.id , type="number", min=0, value=log.distance_in_km, required=true, class="rounded-md change-id-js") }} | 			{{ macros::input(label="Distanz", name="distance_in_km", id="distance_in_km" ~ log.id , type="number", min=0, value=log.distance_in_km, required=true, class="rounded-md change-id-js") }} | ||||||
|   | |||||||
| @@ -83,7 +83,7 @@ | |||||||
| 			<option selected value>{{ default }}</option> | 			<option selected value>{{ default }}</option> | ||||||
| 		{% endif %} | 		{% endif %} | ||||||
| 		{% for d in data %} | 		{% for d in data %} | ||||||
| 			<option value="{{ d.id }}" {% if d.id == selected_id %} selected {% endif %} {% if extras != '' %} {% for extra in extras %} {% if extra != 'on_water' %} data-{{extra}}={{d[extra]}} {% else %} {% if d[extra] %} disabled {% endif %}{% endif %} {% endfor %} {% endif %}> | 			<option value="{{ d.id }}" {% if d.id == selected_id %} selected {% endif %} {% if extras != '' %} {% for extra in extras %} {% if extra != 'on_water' %} data- {{extra}}={{d[extra]}} {% else %} {% if d[extra] %} disabled {% endif %} {% endif %} {% endfor %} {% endif %}> | ||||||
| 				{% for displa in display -%} | 				{% for displa in display -%} | ||||||
| 					{%- if d[displa] -%} | 					{%- if d[displa] -%} | ||||||
| 						{{- d[displa] -}} | 						{{- d[displa] -}} | ||||||
| @@ -116,7 +116,7 @@ | |||||||
| 				{% if rower.is_real_guest %} | 				{% if rower.is_real_guest %} | ||||||
| 					<small class="text-gray-600">(Gast)</small> | 					<small class="text-gray-600">(Gast)</small> | ||||||
| 					{% if allow_removing %} | 					{% if allow_removing %} | ||||||
| 				  	<a href="/remove/{{ trip_details_id }}/{{ rower.name }}" class="btn btn-attention btn-fw">Abmelden</a> | 						<a href="/remove/{{ trip_details_id }}/{{ rower.name }}" class="btn btn-attention btn-fw">Abmelden</a> | ||||||
| 					{% endif %} | 					{% endif %} | ||||||
| 				{% endif %} | 				{% endif %} | ||||||
| 				<span class="hidden">(angemeldet seit | 				<span class="hidden">(angemeldet seit | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user