Browse Source

cursor-Steuerung und Punkte in Zahlen

burningTyger 5 years ago
parent
commit
4c8a3ae33e
1 changed files with 20 additions and 5 deletions
  1. 20 5
      src/routes/index.svelte

+ 20 - 5
src/routes/index.svelte

@@ -13,7 +13,10 @@
 	let translations = []
 	let selected_item
 	let persian
+	let selected = -1
+	let shown_element
 	$:  if (term.length > 1) {
+			selected = -1
 			persian = is_persian(term)
 			const normalized = persian ? term.replace(/([\u064B-\u0655])/g, '') : term
 			const uri = encodeURI(`a/${normalized}`)
@@ -34,11 +37,22 @@
 		const uri = encodeURI(`g/${selected_item}`)
 		const res = await fetch(uri)
 		translations = await res.json()
+		shown_element.scrollIntoView()
 	}
 	function is_persian (string) {
 			const regex = /[\u0622\u0627\u0628\u067E\u062A-\u0632\u0686\u0698\u0633-\u063A\u0641\u0642\u06A9\u06AF\u0644-\u0648\u06CC]/
 			return regex.test(string)
 	}
+	const key = e => {
+		if (e.key === 'ArrowDown') selected += 1
+		else if (e.key === 'ArrowUp') selected -= 1
+		else if (e.key === 'Enter') show_lemma(lemmas[selected].id)
+		else return
+		if (selected > lemmas.length-1) selected = 0
+		if (selected < 0) selected = lemmas.length -1
+		e.preventDefault();
+
+	}
 </script>
 
 <style>
@@ -76,12 +90,13 @@ ul li::before {
 			</p>
 			<div class="columns is-centered">
 				<div class="column is-half">
-					<input class="input is-large" type="text" placeholder="suchen …" bind:value={term}>
+					<input class="input is-large" type="text" placeholder="suchen …"
+						bind:value={term} on:keydown={key}>
 				</div>
 			</div>
 			{#if lemmas<1}
 				<p class="is-size-5 has-text-left-mobile">
-					Aktuell sind {stats.lemmas} Einträge und {stats.translations} Übersetzungen in der Datenbank
+					Aktuell sind {stats.lemmas.toLocaleString('de-DE')} Einträge und {stats.translations.toLocaleString('de-DE')} Übersetzungen in der Datenbank
 				</p>
 				<p class="is-size-5 has-text-right-mobile">
 					فرهنگ فارسی - آلمانی
@@ -100,13 +115,13 @@ ul li::before {
 		{#if lemmas.length > 0}
 			<div class="columns is-centered">
 				<div class="column is-half">
-					{#each lemmas as l}
+					{#each lemmas as l,i}
 						<div class={`card ${persian ? 'has-text-right':''}`}>
-							<header class="card-header">
+							<header class={selected === i ? "card-header has-background-grey-light":'card-header'}>
 								<p class="card-header-title" style="cursor: pointer" on:click={()=>show_lemma(l.id)}>{l.lemma}</p>
 							</header>
 							{#if l.id === selected_item}
-								<div class="card-content">
+								<div class="card-content" bind:this={shown_element}>
 									<div class="content">
 										<ul style={persian ? 'margin-left:0; margin-right:1em':''}>
 											{#each translations as t}