mirror of
https://github.com/ankitects/anki.git
synced 2026-01-12 05:23:55 -05:00
add review count graph
This commit is contained in:
parent
fc89efb1d9
commit
9b838352e6
4 changed files with 15 additions and 1 deletions
|
|
@ -419,6 +419,7 @@ message SimulateFsrsReviewResponse {
|
|||
message SimulateFsrsWorkloadResponse {
|
||||
map<uint32, float> cost = 1;
|
||||
map<uint32, float> memorized = 2;
|
||||
map<uint32, uint32> review_count = 3;
|
||||
}
|
||||
|
||||
message ComputeOptimalRetentionResponse {
|
||||
|
|
|
|||
|
|
@ -289,6 +289,7 @@ impl Collection {
|
|||
(
|
||||
*result.memorized_cnt_per_day.last().unwrap_or(&0.),
|
||||
result.cost_per_day.iter().sum::<f32>(),
|
||||
result.review_cnt_per_day.iter().sum::<usize>() as u32,
|
||||
),
|
||||
))
|
||||
})
|
||||
|
|
@ -296,6 +297,7 @@ impl Collection {
|
|||
Ok(SimulateFsrsWorkloadResponse {
|
||||
memorized: dr_workload.iter().map(|(k, v)| (*k, v.0)).collect(),
|
||||
cost: dr_workload.iter().map(|(k, v)| (*k, v.1)).collect(),
|
||||
review_count: dr_workload.iter().map(|(k, v)| (*k, v.2)).collect(),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -216,7 +216,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
|||
x: parseInt(dr),
|
||||
timeCost: resp!.cost[dr],
|
||||
memorized: v,
|
||||
count: -1,
|
||||
count: resp!.reviewCount[dr],
|
||||
label: workloadSimulationNumber,
|
||||
})),
|
||||
);
|
||||
|
|
@ -617,6 +617,14 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
|||
/>
|
||||
{"Ratio"}
|
||||
</label>
|
||||
<label>
|
||||
<input
|
||||
type="radio"
|
||||
value={SimulateWorkloadSubgraph.count}
|
||||
bind:group={simulateWorkloadSubgraph}
|
||||
/>
|
||||
{tr.deckConfigFsrsSimulatorRadioCount()}
|
||||
</label>
|
||||
<label>
|
||||
<input
|
||||
type="radio"
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ export enum SimulateSubgraph {
|
|||
export enum SimulateWorkloadSubgraph {
|
||||
ratio,
|
||||
time,
|
||||
count,
|
||||
memorized,
|
||||
}
|
||||
|
||||
|
|
@ -59,6 +60,7 @@ export function renderWorkloadChart(
|
|||
const subgraph_data = ({
|
||||
[SimulateWorkloadSubgraph.ratio]: data.map(d => ({ ...d, y: d.timeCost / d.memorized })),
|
||||
[SimulateWorkloadSubgraph.time]: data.map(d => ({ ...d, y: d.timeCost })),
|
||||
[SimulateWorkloadSubgraph.count]: data.map(d => ({ ...d, y: d.count })),
|
||||
[SimulateWorkloadSubgraph.memorized]: data.map(d => ({ ...d, y: d.memorized })),
|
||||
})[subgraph];
|
||||
|
||||
|
|
@ -69,6 +71,7 @@ export function renderWorkloadChart(
|
|||
const formatY: (value: number) => string = ({
|
||||
[SimulateWorkloadSubgraph.ratio]: (value: number) => `${timeSpan(value)} per memorized card`,
|
||||
[SimulateWorkloadSubgraph.time]: timeSpan,
|
||||
[SimulateWorkloadSubgraph.count]: (value: number) => tr.statisticsReviews({ reviews: Math.round(value) }),
|
||||
[SimulateWorkloadSubgraph.memorized]: (value: number) =>
|
||||
tr.statisticsMemorized({ memorized: Math.round(value).toFixed(0) }),
|
||||
})[subgraph];
|
||||
|
|
|
|||
Loading…
Reference in a new issue