This commit is contained in:
Luc Mcgrady 2025-10-29 11:31:08 -07:00 committed by GitHub
commit d6d3a31d35
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 50 additions and 15 deletions

View file

@ -383,6 +383,10 @@ deck-config-which-deck = Which deck would you like to display options for?
deck-config-updating-cards = Updating cards: { $current_cards_count }/{ $total_cards_count }...
deck-config-invalid-parameters = The provided FSRS parameters are invalid. Leave them blank to use the default values.
deck-config-placeholder-parameters =
Default parameters
(Press "{deck-config-optimize-button}" periodically to allow FSRS to better adjust to your memory)
deck-config-manual-parameter-edit-warning = The parameters should only be modified using the optimize button. Manually editing them is heavily advised against.
deck-config-not-enough-history = Insufficient review history to perform this operation.
deck-config-must-have-400-reviews =
{ $count ->

View file

@ -387,11 +387,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
<Warning warning={desiredRetentionWarning} className={retentionWarningClass} />
<div class="ms-1 me-1">
<ParamsInputRow
bind:value={$config.fsrsParams6}
defaultValue={[]}
defaults={defaults.fsrsParams6}
>
<ParamsInputRow bind:value={$config.fsrsParams6} defaultValue={[]}>
<SettingTitle on:click={() => openHelpModal("modelParams")}>
{tr.deckConfigWeights()}
</SettingTitle>

View file

@ -5,9 +5,9 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
<script lang="ts">
import { tick } from "svelte";
import * as tr from "@generated/ftl";
import Warning from "./Warning.svelte";
export let value: number[];
export let defaults: number[];
let stringValue: string;
let taRef: HTMLTextAreaElement;
@ -46,21 +46,57 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
input.value = stringValue;
}
}
const UNLOCK_EDIT_COUNT = 3;
const UNLOCK_CLICK_TIMEOUT_MS = 500;
let clickCount = 0;
let clickTimeout: ReturnType<typeof setTimeout>;
function onClick() {
clickCount += 1;
clearTimeout(clickTimeout);
if (clickCount < UNLOCK_EDIT_COUNT) {
clickTimeout = setTimeout(() => {
clickCount = 0;
}, UNLOCK_CLICK_TIMEOUT_MS);
} else {
taRef.focus();
}
}
$: unlocked = clickCount >= UNLOCK_EDIT_COUNT;
$: unlockEditWarning = unlocked ? tr.deckConfigManualParameterEditWarning() : "";
</script>
<svelte:window onresize={updateHeight} />
<textarea
bind:this={taRef}
value={stringValue}
on:blur={update}
class="w-100"
placeholder={render(defaults)}
></textarea>
<div
on:click={onClick}
on:keypress={onClick}
role="button"
aria-label={"FSRS Parameters"}
tabindex={unlocked ? -1 : 0}
>
<textarea
bind:this={taRef}
value={stringValue}
on:blur={update}
class="w-100"
placeholder={tr.deckConfigPlaceholderParameters()}
disabled={!unlocked}
></textarea>
</div>
<Warning warning={unlockEditWarning} className="alert-danger"></Warning>
<style>
textarea {
resize: none;
overflow-y: auto;
}
textarea:disabled {
pointer-events: none;
}
</style>

View file

@ -10,11 +10,10 @@
export let value: number[];
export let defaultValue: number[];
export let defaults: number[];
</script>
<slot />
<ConfigInput>
<ParamsInput bind:value {defaults} />
<ParamsInput bind:value />
<RevertButton slot="revert" bind:value {defaultValue} />
</ConfigInput>