mirror of
https://github.com/ankitects/anki.git
synced 2026-01-13 22:13:58 -05:00
Display relative change
This commit is contained in:
parent
989494c1f7
commit
6538645446
3 changed files with 43 additions and 16 deletions
|
|
@ -470,12 +470,10 @@ deck-config-compute-optimal-retention-tooltip4 =
|
|||
willing to invest more study time to achieve it. Setting your desired retention lower than the minimum
|
||||
is not recommended, as it will lead to a higher workload, because of the high forgetting rate.
|
||||
deck-config-please-save-your-changes-first = Please save your changes first.
|
||||
deck-config-a-100-day-interval =
|
||||
{ $days ->
|
||||
[one] A 100 day interval will become { $days } day.
|
||||
*[other] A 100 day interval will become { $days } days.
|
||||
}
|
||||
deck-config-90-percent-desired-retention-warning = The higher this value, the more frequently cards will be shown to you.
|
||||
deck-config-intervals-percentage-increase = Your intervals will increase by { $percent }%.
|
||||
deck-config-intervals-percentage-decrease = Your intervals will decrease by { $percent }%.
|
||||
deck-config-intervals-percentage-unchanged = Your intervals will remain unchanged
|
||||
|
||||
deck-config-percent-of-reviews =
|
||||
{ $reviews ->
|
||||
[one] { $pct }% of { $reviews } review
|
||||
|
|
@ -513,6 +511,12 @@ deck-config-fsrs-simulator-radio-memorized = Memorized
|
|||
|
||||
## NO NEED TO TRANSLATE. This text is no longer used by Anki, and will be removed in the future.
|
||||
|
||||
deck-config-a-100-day-interval =
|
||||
{ $days ->
|
||||
[one] A 100 day interval will become { $days } day.
|
||||
*[other] A 100 day interval will become { $days } days.
|
||||
}
|
||||
|
||||
deck-config-fsrs-simulator-y-axis-title-time = Review Time/Day
|
||||
deck-config-fsrs-simulator-y-axis-title-count = Review Count/Day
|
||||
deck-config-fsrs-simulator-y-axis-title-memorized = Memorized Total
|
||||
|
|
|
|||
|
|
@ -42,7 +42,10 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
|||
$daysSinceLastOptimization > 30 ? tr.deckConfigTimeToOptimize() : "";
|
||||
let desiredRetentionFocused = false;
|
||||
let desiredRetentionEverFocused = false;
|
||||
$: if (desiredRetentionFocused) desiredRetentionEverFocused = true
|
||||
const startingDesiredRetention = $config.desiredRetention.toFixed(2);
|
||||
$: if (desiredRetentionFocused) {
|
||||
desiredRetentionEverFocused = true;
|
||||
}
|
||||
$: showDesiredRetentionTooltip = newlyEnabled || desiredRetentionEverFocused;
|
||||
|
||||
let computeParamsProgress: ComputeParamsProgress | undefined;
|
||||
|
|
@ -55,7 +58,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
|||
$: desiredRetentionWarning = getRetentionWarning(
|
||||
roundedRetention,
|
||||
fsrsParams($config),
|
||||
showDesiredRetentionTooltip
|
||||
showDesiredRetentionTooltip,
|
||||
);
|
||||
$: retentionWarningClass = getRetentionWarningClass(roundedRetention);
|
||||
|
||||
|
|
@ -73,20 +76,38 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
|||
reviewOrder: $config.reviewOrder,
|
||||
});
|
||||
|
||||
function getRetentionWarning(retention: number, params: number[], showDesiredRetentionTooltip: boolean): string {
|
||||
if (!showDesiredRetentionTooltip && getRetentionWarningClass(retention) === "alert-info") {
|
||||
return "";
|
||||
}
|
||||
function getInterval(retention: number, params: number[]) {
|
||||
const decay = params.length > 20 ? -params[20] : -0.5; // default decay for FSRS-4.5 and FSRS-5
|
||||
const factor = 0.9 ** (1 / decay) - 1;
|
||||
const stability = 100;
|
||||
const days = Math.round(
|
||||
(stability / factor) * (Math.pow(retention, 1 / decay) - 1),
|
||||
);
|
||||
if (days === 100) {
|
||||
return tr.deckConfig90PercentDesiredRetentionWarning();
|
||||
return days;
|
||||
}
|
||||
|
||||
function getRetentionWarning(
|
||||
retention: number,
|
||||
params: number[],
|
||||
showDesiredRetentionTooltip: boolean,
|
||||
): string {
|
||||
if (
|
||||
!showDesiredRetentionTooltip &&
|
||||
getRetentionWarningClass(retention) === "alert-info"
|
||||
) {
|
||||
return "";
|
||||
}
|
||||
if (+startingDesiredRetention == roundedRetention) {
|
||||
return tr.deckConfigIntervalsPercentageUnchanged();
|
||||
}
|
||||
const before = getInterval(+startingDesiredRetention, params);
|
||||
const after = getInterval(retention, params);
|
||||
const percent = 100 * (after / before) - 100;
|
||||
if (percent > 0) {
|
||||
return tr.deckConfigIntervalsPercentageIncrease({ percent });
|
||||
} else {
|
||||
return tr.deckConfigIntervalsPercentageDecrease({ percent: -percent });
|
||||
}
|
||||
return tr.deckConfigA100DayInterval({ days });
|
||||
}
|
||||
|
||||
function getRetentionWarningClass(retention: number): string {
|
||||
|
|
|
|||
|
|
@ -26,7 +26,9 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
|||
|
||||
const fsrs = state.fsrs;
|
||||
let newlyEnabled = false;
|
||||
$: if (!$fsrs) newlyEnabled = true
|
||||
$: if (!$fsrs) {
|
||||
newlyEnabled = true;
|
||||
}
|
||||
|
||||
const settings = {
|
||||
fsrs: {
|
||||
|
|
|
|||
Loading…
Reference in a new issue