Skip to content

Commit 78d1e75

Browse files
committed
Backport improved suggestions & scroll into view
1 parent f3b9891 commit 78d1e75

File tree

4 files changed

+24
-18
lines changed

4 files changed

+24
-18
lines changed

src/components/layout/FileEntry.svelte

+8-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import { projects, selectedFile, selectedUnit } from '../../stores/data';
77
import { forEachBlocking, getUnit } from '../../../lib/util';
88
import Tooltip from '../shared/Tooltip.svelte';
9+
import { onMount } from 'svelte';
910
1011
export let file: TranslationFile;
1112
$: canShowSource = $preferences.langSelect.displayMode == 'src' || $preferences.langSelect.displayMode == 'both';
@@ -62,9 +63,15 @@
6263
$: if($selectedFile && file) checkTranslatedUnits();
6364
6465
$: percentage = totalUnit == 0 ? 1 : (translatedUnit / totalUnit);
66+
67+
let btn;
68+
69+
onMount(() => {
70+
if($selectedFile === file) btn.scrollIntoView(false); // Ensure visible
71+
});
6572
</script>
6673

67-
<button on:click={() => select()} on:keydown={() => select()} class:selected={$selectedFile === file}>
74+
<button bind:this={btn} on:click={() => select()} on:keydown={() => select()} class:selected={$selectedFile === file}>
6875
<div>
6976
{#if canShowSource}
7077
{getLangName(displayFileName, file.sourceLanguage)}

src/components/layout/editor/listing/UnitRow.svelte

+8-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import { DialogProperty } from "../../../../utils/types";
99
import MoveUnitDialog from "../../../overlay/dialogs/MoveUnitDialog.svelte";
1010
import { findGroup } from "../../../../../lib/util";
11+
import { onMount } from "svelte";
1112
export let unit: Unit;
1213
1314
function openMoveDialog() {
@@ -29,9 +30,15 @@
2930
}
3031
$selectedFile = $selectedFile;
3132
}
33+
34+
let btn;
35+
36+
onMount(() => {
37+
if($selectedUnit === unit) btn.scrollIntoView(false); // Ensure visible
38+
});
3239
</script>
3340

34-
<button class="container" class:active={$selectedUnit == unit} on:click={() => $selectedUnit = unit}>
41+
<button bind:this={btn} class="container" class:active={$selectedUnit == unit} on:click={() => $selectedUnit = unit}>
3542
<div class="translate-status">
3643
<Tooltip tooltip="{unit.target == "" ? "Not " : ""}Translated">
3744
<span class="status" class:translated={unit.target != ""}></span>

src/components/layout/editor/subpane/SuggestionPane.svelte

+7-15
Original file line numberDiff line numberDiff line change
@@ -60,23 +60,15 @@
6060
}
6161
6262
function sortSuggestions(arr: any[]) {
63-
// Speghetti code, don't ask me why this works, I tried reworking it but it no work.
63+
let targetLanguage = selectedFile.targetLanguage ?? selectedFile.sourceLanguage;
6464
arr.sort((a, b) => {
65-
let targetLanguage = selectedFile.targetLanguage ?? selectedFile.sourceLanguage;
66-
let point = 0;
67-
let aMatchedPath = a.unit.getFullPathStr() == $selectedUnit.getFullPathStr() ? -1 : 0;
68-
let bMatchedPath = b.unit.getFullPathStr() == $selectedUnit.getFullPathStr() ? 1 : 0;
69-
let aMatchedId = a.unit.id == $selectedUnit.id ? -1 : 0;
70-
let bMatchedId = b.unit.id == $selectedUnit.id ? 1 : 0;
71-
72-
let aSameLangGroup = a.lang.targetLanguage == null ? 0 : a.lang.targetLanguage.split("-")[0] == targetLanguage.split("-")[0] ? -1 : 0;
65+
let aSamePath = a.unit.getFullPathStr() == $selectedUnit.getFullPathStr() ? 1 : 0;
66+
let bSamePath = b.unit.getFullPathStr() == $selectedUnit.getFullPathStr() ? 1 : 0;
67+
let aSameLang = a.lang?.targetLanguage == targetLanguage ? 1 : 0;
68+
let bSameLang = b.lang?.targetLanguage == targetLanguage ? 1 : 0;
69+
let aSameLangGroup = a.lang.targetLanguage == null ? 0 : a.lang.targetLanguage.split("-")[0] == targetLanguage.split("-")[0] ? 1 : 0;
7370
let bSameLangGroup = b.lang.targetLanguage == null ? 0 : b.lang.targetLanguage.split("-")[0] == targetLanguage.split("-")[0] ? 1 : 0;
74-
75-
point += b.match > a.match ? 1 : b.match == a.match ? 0 : -1;
76-
point += aSameLangGroup + bSameLangGroup + aMatchedId + bMatchedId + aMatchedPath + bMatchedPath;
77-
point += ((a.lang.targetLanguage != null && b.lang.targetLanguage != null) && a.lang.targetLanguage.split("-")[0] == b.lang.targetLanguage.split("-")[0]) ? 1 : 0; // Match primary subtag
78-
79-
return point;
71+
return (bSameLang - aSameLang) || (bSameLangGroup - aSameLangGroup) || (bSamePath - aSamePath) || (b.match - a.match);
8072
});
8173
}
8274

src/stores/constants.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const VERSION = "0.4.1";
1+
const VERSION = "0.4.2";
22

33
export default {
44
VERSION: VERSION

0 commit comments

Comments
 (0)