Hey all,

I mentioned in other places that I would be working on something like this. 
Instead of polluting other threads, Ill post updates and misc in here 
(though specific questions related to other things will still leak outside 
of this thread!).

So far, I've been reading 

https://apps.ankiweb.net/docs/manual.html

and

https://www.supermemo.com/english/ol/sm2.htm

And have come up with a *basic* design for now which will evolve. Right 
now, I have questions as cards tagged with "Flash Card", and when you input 
a new one, they begin with the following fields:

question: 3+1
answer: 4
repetition: 1

We then have two major parts:

   - Quizzer
      - Shows a question
      - Lets you rate its difficulty
      - Calculate the next minimum time this question should be shown
      - Selector
   - When you're ready to begin quizzing, get all questions whos time is up 
      and are ready to be shown
      

So far I've worked on the quizzer (question/answering), and have a template 
with the following content:

\define againQuality() 0
\define hardQuality() 1
\define goodQuality() 2
\define easyQuality() 3
\define updateActions()
<!-- UPDATE question parameters -->
<$formula-vars eq="$(quality)$ + 1">
    <$action-setfield $field="eq" $value=<<eq>>/>
    <$formula-vars repetition="{{!!repetition}} + 1">
        <$action-setfield $field="repetition" $value=<<repetition>>/>
        <$formula-vars due="<<repetition>> + 20">
            <$action-setfield $field="due" $value=<<due>>/>
        </$formula-vars> 
    </$formula-vars>
</$formula-vars>

<!-- REMOVE Answer Button Row -->
<$action-sendmessage $message="tm-remove-field" $param="state"/>

<!-- CLOSE this question -->
<$action-sendmessage $message="tm-close-tiddler"/>
\end

<!-- ACTIVATE this template for all tiddlers tagged Flash Cards -->
<$list filter="[all[current]tag[Flash Card]]">
    <$fieldmangler>
    Question: {{!!question}}
    
    <br/>

    <!-- IF it does NOT have the field state: SHOW QUESTION -->
    <$list filter="[all[current]!has:field[state]]">
        <$button>
            Show Answer
            <!-- ADD the field state -->
            <$action-sendmessage $message="tm-add-field" $param="state"/>
        </$button>
    </$list>

    <!-- IF it DOES have the field state: SHOW ANSWER-->
    <$list filter="[all[current]has:field[state]]">
        Answer: {{!!answer}}
        
        <!-- SHOW answer buttons -->
        
        <br/>

        <$button>
            Again
            <!-- Calculate New Parameters -->
            <$action-setfield $field="quality" $value=<<againQuality>>/>
            <<updateActions>>
        </$button>
        
        <$button>
            Hard
            <!-- Calculate New Parameters -->
            <$action-setfield $field="quality" $value=<<hardQuality>>/>
            <<updateActions>>
        </$button>
        
        <$button>
            Good
            <!-- Calculate New Parameters -->
            <$action-setfield $field="quality" $value=<<goodQuality>>/>
            <<updateActions>>
        </$button>
        
        <$button>
            Easy
            <!-- Calculate New Parameters -->
            <$action-setfield $field="quality" $value=<<easyQuality>>/>
            <<updateActions>>
        </$button>
    </$list>

    </$fieldmangler>
</$list>

This will at least let you answer a question, and mark how hard/easy it was 
for you, and calculate the relevant fields for the next time it should be 
shown. 

I still have to actually implement the correct calculations for due, eq, 
etc. These are just place holders for right now. 

The next piece is the selector, which will be responsible for going through 
all questions "due" field and selecting the ones that are ready to be shown 
- this should very straight forward. 

Any comments/feedback is very welcome!

Diego

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to tiddlywiki+unsubscr...@googlegroups.com.
To post to this group, send email to tiddlywiki@googlegroups.com.
Visit this group at https://groups.google.com/group/tiddlywiki.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/1c9b89ab-1390-4709-8f79-461970072287%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to