ctucx.git: trainsearch

web based trip-planner, fork of https://cyberchaos.dev/yuka/trainsearch

commit 8efdfc792c645125696d7cf7c0c449d043795491
parent 5be2c96c67fb0b62decf54c75d3e1198cf640ea5
Author: Katja (ctucx) <git@ctu.cx>
Date: Sun, 26 Jan 2025 13:56:56 +0100

searchView: persist via-visibility in settings
2 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/searchView.js b/src/searchView.js
@@ -74,11 +74,11 @@ const searchTemplate = (journeysHistory) => html`
 			<div class="row nowrap">
 				<input type="text" name="from" id="from" title="${t('from')}" placeholder="${t('from')}" value="${viewState.fromValue}" autocomplete="off"
 					@focus=${focusHandler} @blur=${blurHandler} @keydown=${keydownHandler} @keyup=${keyupHandler} @input=${loadSuggestions} required>
-				<div class="button icon-arrow2" id="viaButton" title="${t('via')}" @click=${toggleVia}></div>
+				<div class="button icon-arrow2 ${!settings.showVia ? '' : 'flipped'}" id="viaButton" title="${t('via')}" @click=${toggleVia}></div>
 			</div>
 			<div class="suggestions" id="fromSuggestions" @mouseover=${mouseOverHandler} @mouseout=${mouseOutHandler}></div>
 
-			<div class="row nowrap hidden" id="viaRow">
+			<div class="row nowrap ${!settings.showVia ? 'hidden' : ''}" id="viaRow">
 				<input type="text" name="via" id="via" title="${t('via')}" placeholder="${t('via')}" value="${viewState.viaValue}" autocomplete="off"
 					@focus=${focusHandler} @blur=${blurHandler} @keydown=${keydownHandler} @keyup=${keyupHandler} @input=${loadSuggestions}>
 				<div class="button icon-arrow2 invisible"></div>

@@ -178,8 +178,6 @@ export const searchView = async () => {
 
 	render(searchTemplate(journeysHistory), ElementById('content'));
 
-	if (viaValue !== '') toggleVia('show');
-
 	ElementById('from').focus();
 
 	for (const [product, enabled] of Object.entries(settings.products)) {

@@ -341,7 +339,7 @@ const toggleHistory = () => {
 	}
 }
 
-const toggleVia = ( mode ) => {
+const toggleVia = async mode => {
 	const rowElement    = ElementById('viaRow');
 	const buttonElement = ElementById('viaButton');
 

@@ -353,6 +351,11 @@ const toggleVia = ( mode ) => {
 		hideElement(rowElement);
 		ElementById('via').value = '';
 	}
+
+	await modifySettings(settings => {
+		settings.showVia = !elementHidden(rowElement);
+		return settings;
+	});
 }
 
 const swapFromTo = () => {
diff --git a/src/settings.js b/src/settings.js
@@ -26,6 +26,7 @@ const defaultSettings = {
 	combineDateTime: false,
 	showPrices: true,
 	showDS100: true,
+	showVia: true,
 };
 
 const subscribers = [];