Conditional display of cards

Issue #37 closed
Bernard Hurley
created an issue

It would be nice if the display of cards could be made conditional upon the state of other cards.

In some subjects - e.g. learning the vocabulary of a language - the knowledge required is "flat" and traditional flash cards are appropriate. However for others, such as Higher Mathematics, it only makes sense to ask about some topics if there is reasonable knowledge of others.

It seems to me that the best way to implement this is to have a "heirachical" card type that can be used to define interdependent several cards at once. Another alternative would be to have cards that can query the ID of other cards, but this looks like it may be a bit flaky.

I will have a look into coding this myself, but I would be interested in what others think.

Comments (3)

  1. Paul Sexton repo owner

    I like the idea but I'm not sure I will have time to program it. Some ideas for implementation:

    Subtrees could have a "locked" property. Each subtree would represent a topic area. The user would manually "unlock" a subtree once relevant topics had been mastered. The cards in the subtree would then become available for testing.

    A "skip function" could be definable for each card type. This function would be called for each card of that type to decide whether the card should be included in a drill session. If it returns non-nil the card is ignored. The logic for deciding whether the user is allowed to learn the card yet, could be defined in the skip function.

    "Skills" could be defined. Each drill item could award points to a particular skill or skills depending on how well it is known. Drill cards could have a property SKILL_REQUIREMENT that could list skills that must be at reasonable levels before the card can be included in drill sessions.

    It would certainly be possible to define fine-grained interdependencies between individual cards - but it would also be incredibly tedious and fiddly. A workable way might to allow subtrees to have IDs, then make a custom card type where individual cards can depend on particular subtrees. Once every card in that subtree was learnt, the dependent card would become available for testing.

  2. Log in to comment