mirror of
https://github.com/ankitects/anki.git
synced 2026-01-10 20:44:28 -05:00
start_memorized -> reviewless_end_memorized
This commit is contained in:
parent
1e53505339
commit
af6d63cde9
4 changed files with 11 additions and 11 deletions
|
|
@ -420,7 +420,7 @@ message SimulateFsrsReviewResponse {
|
||||||
|
|
||||||
message SimulateFsrsWorkloadResponse {
|
message SimulateFsrsWorkloadResponse {
|
||||||
map<uint32, float> cost = 1;
|
map<uint32, float> cost = 1;
|
||||||
float start_memorized = 2;
|
float reviewless_end_memorized = 2;
|
||||||
map<uint32, float> memorized = 3;
|
map<uint32, float> memorized = 3;
|
||||||
map<uint32, uint32> review_count = 4;
|
map<uint32, uint32> review_count = 4;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -300,11 +300,11 @@ impl Collection {
|
||||||
))
|
))
|
||||||
})
|
})
|
||||||
.collect::<Result<HashMap<_, _>>>()?;
|
.collect::<Result<HashMap<_, _>>>()?;
|
||||||
let start_memorized = cards
|
let reviewless_end_memorized = cards.iter().fold(0., |p, c| {
|
||||||
.iter()
|
p + c.retention_on(&req.params, req.days_to_simulate as f32)
|
||||||
.fold(0., |p, c| p + c.retention_on(&req.params, req.days_to_simulate as f32));
|
});
|
||||||
Ok(SimulateFsrsWorkloadResponse {
|
Ok(SimulateFsrsWorkloadResponse {
|
||||||
start_memorized,
|
reviewless_end_memorized,
|
||||||
memorized: dr_workload.iter().map(|(k, v)| (*k, v.0)).collect(),
|
memorized: dr_workload.iter().map(|(k, v)| (*k, v.0)).collect(),
|
||||||
cost: dr_workload.iter().map(|(k, v)| (*k, v.1)).collect(),
|
cost: dr_workload.iter().map(|(k, v)| (*k, v.1)).collect(),
|
||||||
review_count: dr_workload.iter().map(|(k, v)| (*k, v.2)).collect(),
|
review_count: dr_workload.iter().map(|(k, v)| (*k, v.2)).collect(),
|
||||||
|
|
|
||||||
|
|
@ -212,7 +212,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
||||||
x: parseInt(dr),
|
x: parseInt(dr),
|
||||||
timeCost: resp!.cost[dr],
|
timeCost: resp!.cost[dr],
|
||||||
memorized: v,
|
memorized: v,
|
||||||
start_memorized: resp!.startMemorized,
|
reviewless_end_memorized: resp!.reviewlessEndMemorized,
|
||||||
count: resp!.reviewCount[dr],
|
count: resp!.reviewCount[dr],
|
||||||
label: simulationNumber,
|
label: simulationNumber,
|
||||||
learnSpan: simulateFsrsRequest.daysToSimulate,
|
learnSpan: simulateFsrsRequest.daysToSimulate,
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ export interface Point {
|
||||||
|
|
||||||
export type WorkloadPoint = Point & {
|
export type WorkloadPoint = Point & {
|
||||||
learnSpan: number;
|
learnSpan: number;
|
||||||
start_memorized: number;
|
reviewless_end_memorized: number;
|
||||||
};
|
};
|
||||||
|
|
||||||
export enum SimulateSubgraph {
|
export enum SimulateSubgraph {
|
||||||
|
|
@ -69,7 +69,7 @@ export function renderWorkloadChart(
|
||||||
const subgraph_data = ({
|
const subgraph_data = ({
|
||||||
[SimulateWorkloadSubgraph.ratio]: data.map(d => ({
|
[SimulateWorkloadSubgraph.ratio]: data.map(d => ({
|
||||||
...d,
|
...d,
|
||||||
y: (60 * 60 * (d.memorized - d.start_memorized)) / d.timeCost,
|
y: (60 * 60 * (d.memorized - d.reviewless_end_memorized)) / d.timeCost,
|
||||||
})),
|
})),
|
||||||
[SimulateWorkloadSubgraph.time]: data.map(d => ({ ...d, y: d.timeCost / d.learnSpan })),
|
[SimulateWorkloadSubgraph.time]: data.map(d => ({ ...d, y: d.timeCost / d.learnSpan })),
|
||||||
[SimulateWorkloadSubgraph.count]: data.map(d => ({ ...d, y: d.count / d.learnSpan })),
|
[SimulateWorkloadSubgraph.count]: data.map(d => ({ ...d, y: d.count / d.learnSpan })),
|
||||||
|
|
@ -114,7 +114,7 @@ export function renderWorkloadChart(
|
||||||
.attr("stroke", "black")
|
.attr("stroke", "black")
|
||||||
.attr("stroke-width", 1);
|
.attr("stroke-width", 1);
|
||||||
|
|
||||||
const startMemorized = subgraph_data[0].start_memorized;
|
const startMemorized = subgraph_data[0].reviewless_end_memorized;
|
||||||
|
|
||||||
return _renderSimulationChart(
|
return _renderSimulationChart(
|
||||||
svgElem,
|
svgElem,
|
||||||
|
|
@ -133,8 +133,8 @@ export function renderWorkloadChart(
|
||||||
.enter()
|
.enter()
|
||||||
.attr("x1", x(xMin))
|
.attr("x1", x(xMin))
|
||||||
.attr("x2", x(xMax))
|
.attr("x2", x(xMax))
|
||||||
.attr("y1",d => y(d))
|
.attr("y1", d => y(d))
|
||||||
.attr("y2",d => y(d))
|
.attr("y2", d => y(d))
|
||||||
.attr("stroke", "black")
|
.attr("stroke", "black")
|
||||||
.attr("stroke-dasharray", "5,5")
|
.attr("stroke-dasharray", "5,5")
|
||||||
.attr("stroke-width", 1);
|
.attr("stroke-width", 1);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue