diff options
Diffstat (limited to 'www/photo.causal.agency/trips.html')
| -rw-r--r-- | www/photo.causal.agency/trips.html | 51 |
1 files changed, 42 insertions, 9 deletions
diff --git a/www/photo.causal.agency/trips.html b/www/photo.causal.agency/trips.html index 2adf3a71..e81be6ef 100644 --- a/www/photo.causal.agency/trips.html +++ b/www/photo.causal.agency/trips.html @@ -32,15 +32,21 @@ input[type="number"] { width: 5ch; } </select> <label for="roll-film">Film:</label> <input id="roll-film" list="films" required> +<span>Exposures:</span> +<span> +<input id="roll-36" type="radio" name="roll-exposures" value="36" checked> +<label for="roll-36">36</label> +<input id="roll-27" type="radio" name="roll-exposures" value="27"> +<label for="roll-27">27</label> +<input id="roll-24" type="radio" name="roll-exposures" value="24"> +<label for="roll-24">24</label> +<input id="roll-12" type="radio" name="roll-exposures" value="12"> +<label for="roll-12">12</label> +</span> <button type="button" onclick="loadRoll()">Load</button> </form> <datalist id="films"> - <option>Harman Phoenix 200</option> - <option>Ilford HP5 Plus 400</option> - <option>Shanghai Color 400</option> - <option>Fomapan Creative 200</option> - <option>Fomapan Action 400</option> </datalist> </section> @@ -145,6 +151,9 @@ function setBodies() { select.appendChild(option); } } + if (trips.length) { + selects.forEach(select => select.value = trips[trips.length-1].body); + } } setBodies(); @@ -205,8 +214,9 @@ function setTrips() { rollB.appendChild(document.createTextNode(rollTrips[0].film)); rollLi.appendChild(rollB); rollLi.appendChild(document.createTextNode(` (${rollTrips[0].body})`)); + let body = bodies.find(body => body.name == rollTrips[0].body); let rollUl = document.createElement("ul"); - for (let trip of rollTrips) { + for (let [index, trip] of rollTrips.entries()) { let li = document.createElement("li"); let b = document.createElement("b"); b.appendChild(document.createTextNode(trip.date)); @@ -214,8 +224,13 @@ function setTrips() { li.appendChild(document.createTextNode( `: ${trip.firstExposure}–${trip.lastExposure}` )); - li.appendChild(document.createElement("br")); - li.appendChild(document.createTextNode(trip.lens)); + if ( + (!body || body.mount != body.name) && + (!index || trip.lens != rollTrips[index-1].lens) + ) { + li.appendChild(document.createElement("br")); + li.appendChild(document.createTextNode(trip.lens)); + } if (trip.note) { li.appendChild(document.createElement("br")); li.appendChild(document.createTextNode(`“${trip.note}”`)); @@ -238,6 +253,10 @@ function setTripBody() { option.appendChild(document.createTextNode(lensString(lens))); select.appendChild(option); } + let lastTrip = trips.findLast(trip => trip.body == bodyName); + if (lastTrip) { + select.value = lastTrip.lens; + } let roll = rolls[body.name]; if (roll) { document.getElementById("trip-film").value = roll.film; @@ -255,6 +274,7 @@ setTripBody(); function clearForm(form) { let inputs = form.querySelectorAll("input"); for (input of inputs) { + if (input.type == "radio") continue; input.value = null; } } @@ -307,7 +327,8 @@ function loadRoll() { if (!form.checkValidity()) return; let body = document.getElementById("roll-body").value; let film = document.getElementById("roll-film").value; - rolls[body] = { id: nextId++, film, used: 0, exposures: 36 }; + let exposures = +new FormData(form).get("roll-exposures"); + rolls[body] = { id: nextId++, film, exposures, used: 0 }; localStorage.setItem("nextId", nextId); setRolls(); clearForm(form); @@ -337,4 +358,16 @@ function addTrip() { setTripBody(); } +function setFilms() { + let datalist = document.getElementById("films"); + datalist.innerHTML = ""; + let films = new Set(trips.reverse().map(trip => trip.film)); + for (let film of films.values().take(20)) { + let option = document.createElement("option"); + option.innerText = film; + datalist.appendChild(option); + } +} +setFilms(); + </script> |