11import { Moment } from "moment" ;
22import moment from "moment" ;
33
4+ import { Algorithm } from "src/algorithms/base/isrs-algorithm" ;
45import { RepItemScheduleInfo } from "src/algorithms/base/rep-item-schedule-info" ;
56import { RepItemScheduleInfoOsr } from "src/algorithms/osr/rep-item-schedule-info-osr" ;
67import { Card } from "src/card" ;
@@ -32,15 +33,22 @@ export class DataStoreInNoteAlgorithmOsr implements IDataStoreAlgorithm {
3233 let result : RepItemScheduleInfo = null ;
3334 const frontmatter : Map < string , string > = await note . getFrontmatter ( ) ;
3435
35- if (
36- frontmatter &&
37- frontmatter . has ( "sr-due" ) &&
38- frontmatter . has ( "sr-interval" ) &&
39- frontmatter . has ( "sr-ease" )
40- ) {
36+ if ( frontmatter && frontmatter . has ( "sr-due" ) ) {
4137 const dueDate : Moment = moment ( frontmatter . get ( "sr-due" ) , ALLOWED_DATE_FORMATS ) ;
42- const interval : number = parseFloat ( frontmatter . get ( "sr-interval" ) ) ;
43- const ease : number = parseFloat ( frontmatter . get ( "sr-ease" ) ) ;
38+
39+ // For Custom Intervals, interval might not be stored, so use a default value
40+ // The actual interval will be determined by the algorithm when scheduling
41+ let interval : number = 1 ; // Default interval
42+ if ( frontmatter . has ( "sr-interval" ) ) {
43+ interval = parseFloat ( frontmatter . get ( "sr-interval" ) ) ;
44+ }
45+
46+ // For Custom Intervals, ease might not be stored, so use default value
47+ let ease : number = 250 ; // Default ease
48+ if ( frontmatter . has ( "sr-ease" ) ) {
49+ ease = parseFloat ( frontmatter . get ( "sr-ease" ) ) ;
50+ }
51+
4452 result = new RepItemScheduleInfoOsr ( dueDate , interval , ease ) ;
4553 }
4654 return result ;
@@ -54,13 +62,18 @@ export class DataStoreInNoteAlgorithmOsr implements IDataStoreAlgorithm {
5462 const interval : number = schedInfo . interval ;
5563 const ease : number = schedInfo . latestEase ;
5664
65+ // Determine what to include based on algorithm
66+ const includeSM2Data = this . settings . algorithm === Algorithm . SM_2_OSR ;
67+ const intervalString = includeSM2Data ? `sr-interval: ${ interval } \n` : "" ;
68+ const easeString = includeSM2Data ? `sr-ease: ${ ease } \n` : "" ;
69+
5770 // check if scheduling info exists
5871 if ( SCHEDULING_INFO_REGEX . test ( fileText ) ) {
5972 const schedulingInfo = SCHEDULING_INFO_REGEX . exec ( fileText ) ;
6073 fileText = fileText . replace (
6174 SCHEDULING_INFO_REGEX ,
6275 `---\n${ schedulingInfo [ 1 ] } sr-due: ${ dueString } \n` +
63- `sr-interval: ${ interval } \nsr-ease: ${ ease } \n ` +
76+ `${ intervalString } ${ easeString } ` +
6477 `${ schedulingInfo [ 5 ] } ---` ,
6578 ) ;
6679 } else if ( YAML_FRONT_MATTER_REGEX . test ( fileText ) ) {
@@ -69,12 +82,11 @@ export class DataStoreInNoteAlgorithmOsr implements IDataStoreAlgorithm {
6982 fileText = fileText . replace (
7083 YAML_FRONT_MATTER_REGEX ,
7184 `---\n${ existingYaml [ 1 ] } sr-due: ${ dueString } \n` +
72- `sr-interval: ${ interval } \nsr-ease: ${ ease } \n ---` ,
85+ `${ intervalString } ${ easeString } ---` ,
7386 ) ;
7487 } else {
7588 fileText =
76- `---\nsr-due: ${ dueString } \nsr-interval: ${ interval } \n` +
77- `sr-ease: ${ ease } \n---\n\n${ fileText } ` ;
89+ `---\nsr-due: ${ dueString } \n` + `${ intervalString } ${ easeString } ---\n\n${ fileText } ` ;
7890 }
7991
8092 await note . write ( fileText ) ;
0 commit comments