Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FEAT] More control over the flashcard ordering #946

Open
4Source opened this issue Apr 28, 2024 · 5 comments
Open

[FEAT] More control over the flashcard ordering #946

4Source opened this issue Apr 28, 2024 · 5 comments
Labels
enhancement New feature or request

Comments

@4Source
Copy link
Contributor

4Source commented Apr 28, 2024

This feature is on top of the #814 should add more control how to go through the cards during review.

I am currently working on it but I would like to here some feedback before continue.

Current Functionality
image
image

The new system should consist of 4 drop-down menus which are:
Deck order
In which order the decks get selected.

  • Sequential
  • Random

Card order
In which order the cards in a deck get selected.

  • Sequential
  • Random

Deck priority
How the deck order is prioritized complete the deck or only one card per deck. Could probably extended with a random option.

  • Complete
  • Round robin
  • (Random)

Card priority
Which cards get prioritized to complete first.

  • New first
  • Due first
  • Any first

The resulting options are listed here:

Deck order Card order Card priority Deck priority Explained Replaces current
Sequential Sequential New first Complete Goes sequentially through all decks. First all new cards in deck Sequentially within a deck (All new cards first)
&
Sequentially (once all cards in previous deck reviewed)
Sequential Sequential Due first Complete Goes sequentially through all decks. First all due cards in deck Sequentially within a deck (All due cards first)
&
Sequentially (once all cards in previous deck reviewed)
Sequential Sequential Any first Complete Ignores new and due goes through one after another
Sequential Sequential New first Round robin Goes sequentially through all decks with new cards first only one new card per deck
Sequential Sequential Due first Round robin Goes sequentially through all decks with due cards first only one due card per deck
Sequential Sequential Any first Round robin Goes sequentially through all decks only one card per deck
Sequential Random New first Complete Goes sequentially through all decks. First all new random cards in deck Randomly within a deck (All new cards first)
&
Sequentially (once all cards in previous deck reviewed)
Sequential Random Due first Complete Goes sequentially through all decks. First all due random cards in deck Randomly within a deck (All due cards first)
&
Sequentially (once all cards in previous deck reviewed)
Sequential Random Any first Complete Ignores new and due goes through one deck after the other and gives random card within deck
Sequential Random New first Round robin Goes sequentially through all decks with new cards first only one random new card per deck
Sequential Random Due first Round robin Goes sequentially through all decks with due cards first only one random due card per deck
Sequential Random Any first Round robin Goes sequentially through all decks only one random card per deck
Random Sequential New first Complete Goes randomly through all decks. First all new cards in deck Sequentially within a deck (All new cards first)
&
Randomly (once all cards in previous deck reviewed)
Random Sequential Due first Complete Goes randomly through all decks. First all due cards in deck Sequentially within a deck (All due cards first)
&
Randomly (once all cards in previous deck reviewed)
Random Sequential Any first Complete Ignores new and due goes through one deck than randomlly selects a new deck gives one deck after the another within the deck
Random Sequential New first Round robin Goes randomly through all decks with new cards first only one new card per deck
Random Sequential Due first Round robin Goes randomly through all decks with due cards first only one due card per deck
Random Sequential Any first Round robin Goes randomly through all decks only one card per deck
Random Random New first Complete Goes randomly through all decks. First all new random cards in deck Randomly within a deck (All new cards first)
&
Randomly (once all cards in previous deck reviewed)
Random Random Due first Complete Goes randomly through all decks. First all due random cards in deck Randomly within a deck (All due cards first)
&
Randomly (once all cards in previous deck reviewed)
Random Random Any first Complete Goes randomly through all deck when completed with random card from deck
Random Random New first Round robin Goes randomly through all decks with new cards first only one random new card per deck
Random Random Due first Round robin Goes randomly through all decks with due cards first only one random due card per deck
Random Random Any first Round robin Goes randomly through all decks with any card first only one random card per deck Random card from random deck
&
Every card a random deck with a random card Ignoring new and due

This should nearly address any possible way someone would like to configure the review at least when deck priority includes a random option. And if there are any other needs I think on this base there could be easily added in future.

I would love to hear your thoughts on this, so please share.

@4Source 4Source added the enhancement New feature or request label Apr 28, 2024
@ronzulu
Copy link
Collaborator

ronzulu commented Apr 29, 2024

Hi @4Source

Wow. Man, you've put in so much work to get to this point. I've only had a chance to look at this briefly, but had a few questions for you.

Are the "deck priority" and "card priority" headings crossed over against the column content?
image

I'm wondering if it would be possible to stage the development, rather than adding in everything all in one go.

So I'm curious which options are ones that:

  • you want to see because it will be helpful for you
  • other users have requested in other issues (I do keep an eye out on most things, nothing immediately comes to mind)
  • you think would be "nice to have"

@st3v3nmw might think differently, and in the end this is his baby, but I know that for every feature added it requires more than just the implementation time. There is writing the unit test cases, having it reviewed by Stephen or myself et cetera.

Hence why I'm wondering if it would be possible to stage the development. Ones that are "nice to have" could be moved to a separate issue, and you could see if people comment and indicate that they would use it if it was implemented.

Kudos once again for thinking this all through, it must have taken serious effort!

Cheers
Ronny

@4Source
Copy link
Contributor Author

4Source commented Apr 29, 2024

Yeah this took a while. I really thought about this a while (couple of weeks now).

Are the "deck priority" and "card priority" headings crossed over against the column content?

Ohh yes there are switched I will fix this.

I'm wondering if it would be possible to stage the development, rather than adding in everything all in one go.

Yes I Think this should be possible. And for sure easier to review. A possible Solution could be to firstly ignore the Round robin options and just implement it with only the Complete Deck priority this would halve the amount of possible combinations. Also the Any first could be set to only be allowed when Deck & Card order are both set to Random. This would only keep the existing Configurations but would setup the Base for the Additional Configurations. Which could be added in 2. stage or any later stage of development.

So I'm curious which options are ones that:

  • you want to see because it will be helpful for you
  • other users have requested in other issues (I do keep an eye out on most things, nothing immediately comes to mind)
  • you think would be "nice to have"

I'am at the moment not happy with the currently available options and thought I couldn't be the only one who don't would like to have more control how the review presents me the cards. And adding more and more Options to the existing drop down would not be really efficient. And would make a later refactoring harder.
I didn't find any related issues, so I don't think others have requested something similar.

@st3v3nmw might think differently, and in the end this is his baby, but I know that for every feature added it requires more than just the implementation time.

This is one of the reasons why I created this issue, to avoid wasting my time implementing something what don't get included.

There is writing the unit test cases, having it reviewed by Stephen or myself et cetera.

Whit the unit test cases I could help and implement them by myself the review part on the other hand I cant really help you only thing I could do add more Comments while going through this.

@4Source
Copy link
Contributor Author

4Source commented Apr 29, 2024

This is now a lot more but I added a better description of the configurations and the option for random Deck priority. Also give each row a development stage in a order I think it would make sense. For me every thing including Stage 3 is what I would like to have. Stage 4 in my opinion is a bonus but not really necessary.

It feels like I am spamming so sry for that.

Deck order Card order Card priority Deck priority Explained Dev Stage Replaces current
seq seq New first Complete Starts at the first deck. First all new cards in the deck are gone through if there are any in this deck, then all due cards in the deck. After completing the deck, the same procedure is followed for the next deck. 1 Sequentially within a deck (All new cards first)
&
Sequentially (once all cards in previous deck reviewed)
seq seq Due first Complete Starts at the first deck. First all due cards in the deck are gone through if there are any in this deck, then all new cards in the deck. After completing the deck, the same procedure is followed for the next deck. 1 Sequentially within a deck (All due cards first)
&
Sequentially (once all cards in previous deck reviewed)
seq seq Any first Complete Starts at the first deck. No cards are prioritized, they are all gone through in the deck one after the other. After completing the deck, the same procedure is followed for the next deck. 2
seq seq New first Round robin Starts at the first deck. A new card is selected from the deck if there is none in this deck or after the card is completed, the next deck is moved to. If there are no more new cards in any deck, all due cards are processed using the same procedure "one card per deck". 3
seq seq Due first Round robin Starts at the first deck. A due card is selected from the deck if there is none in this deck or upon completion of the card, the next deck is moved to. If there are no more due cards in any deck, all new cards are processed using the same "one card per deck" procedure. 3
seq seq Any first Round robin Starts at the first deck. A card is selected from the deck, after completing the card, the next deck is moved to. All cards get processed using the same "one card per deck" procedure. 3
seq seq New first rnd Starts with the first deck. A new card is selected from the deck, if there is no card in this deck, it goes to the next deck. After the card has been completed, a random decision is made as to whether another card should be chosen from the deck or from the next deck. If there are no new cards left in any deck, all due cards will be processed using the same “one card per deck” process. 4
seq seq Due first rnd Starts with the first deck. A due card is selected from the deck, if there is no due card in that deck, the next deck is moved to. After the card has been completed, a random decision is made as to whether another card should be chosen from the deck or from the next deck. If there are no more cards due in any deck, all new cards will be processed using the same “one card per deck” process. 4
seq seq Any first rnd Starts with the first deck. A card is selected from the deck. After the card has been completed, a random decision is made as to whether another card should be chosen from the deck or from the next deck. All cards are processed using the same “one card per deck” process. 4
seq rnd New first Complete Starts on the first deck. First, all new cards in the deck are gone through in random order, if there are any in that deck, then all due cards in the deck. After completing the deck, the same procedure is followed for the next deck. 1 Randomly within a deck (All new cards first)
&
Sequentially (once all cards in previous deck reviewed)
seq rnd Due first Complete Starts on the first deck. First, all due cards in the deck are gone through in random order, if there are any in that deck, then all new cards in the deck. After the deck is completed, the same procedure is followed for the next deck. 1 Randomly within a deck (All due cards first)
&
Sequentially (once all cards in previous deck reviewed)
seq rnd Any first Complete Starts on the first deck. All cards in the deck are gone through in random order. After the deck is completed, the same procedure is followed for the next deck. 2
seq rnd New first Round robin Starts on the first deck. A new random card is selected from the deck if there is no card in that deck, or after the card is completed, is moved to the next deck. If there are no new cards left in any deck, all due cards will be processed using the same “one card per deck” process. 3
seq rnd Due first Round robin Starts on the first deck. A due random card is selected from the deck if there is no card in that deck, or after the card is completed, is moved to the next deck. If there are no more cards due in any deck, all new cards will be processed using the same “one card per deck” process. 3
seq rnd Any first Round robin Starts with the first deck. A random card is selected from the deck and moved to the next deck once the card is completed. All cards are processed using the same “one card per deck” process. 3
seq rnd New first rnd Start with the first deck. A new random card is selected from the deck. If there is no card in this deck, it moves to the next deck. After the card is completed, a random decision is made as to whether another card should be selected from the deck or from the next deck. If there are no new cards left in any deck, all due cards will be processed using the same “one card per deck” process. 4
seq rnd Due first rnd Start with the first deck. A due random card is selected from the deck. If there is no card in this pile, it moves to the next pile. After the card is completed, a random decision is made as to whether another card should be selected from the deck or from the next deck. If there are no cards due in any deck, all new cards will be processed using the same “one card per deck” process. 4
seq rnd Any first rnd Start with the first deck. A card is randomly selected from the deck. After the card is completed, a random decision is made as to whether another card should be selected from the deck or from the next deck. All cards are processed using the same “one card per deck” process. 4
rnd seq New first Complete Goes randomly through all decks. First all new cards in the deck are gone through if there are any in this deck, then all due cards in the deck. After completing the deck, the same procedure is followed for the next random deck. 1 Sequentially within a deck (All new cards first)
&
Randomly (once all cards in previous deck reviewed)
rnd seq Due first Complete Goes randomly through all decks. First all due cards in the deck are gone through if there are any in this deck, then all new cards in the deck. After completing the deck, the same procedure is followed for the next random deck. 1 Sequentially within a deck (All due cards first)
&
Randomly (once all cards in previous deck reviewed)
rnd seq Any first Complete Goes randomly through all decks. No cards are prioritized, they are all gone through in the deck one after the other. After completing the deck, the same procedure is followed for the next random deck. 2
rnd seq New first Round robin Goes randomly through all decks. A new card is selected from the deck if there is none in this deck or after the card is completed, the next deck is moved to. If there are no more new cards in any deck, all due cards are processed using the same procedure "one card per deck". 3
rnd seq Due first Round robin Goes randomly through all decks. A due card is selected from the deck if there is none in this deck or upon completion of the card, the next deck is moved to. If there are no more due cards in any deck, all new cards are processed using the same "one card per deck" procedure. 3
rnd seq Any first Round robin Goes randomly through all decks. A card is selected from the deck, after completing the card, the next deck is moved to. All cards get processed using the same "one card per deck" procedure. 3
rnd seq New first rnd Goes randomly through all decks. A new card is selected from the deck, if there is no card in this deck, it goes to the next deck. After the card has been completed, a random decision is made as to whether another card should be chosen from the deck or from the next deck. If there are no new cards left in any deck, all due cards will be processed using the same “one card per deck” process. 4
rnd seq Due first rnd Goes randomly through all decks. A due card is selected from the deck, if there is no due card in that deck, the next deck is moved to. After the card has been completed, a random decision is made as to whether another card should be chosen from the deck or from the next deck. If there are no more cards due in any deck, all new cards will be processed using the same “one card per deck” process. 4
rnd seq Any first rnd Goes randomly through all decks. A card is selected from the deck. After the card has been completed, a random decision is made as to whether another card should be chosen from the deck or from the next deck. All cards are processed using the same “one card per deck” process. 4
rnd rnd New first Complete Goes randomly through all decks. First, all new cards in the deck are gone through in random order, if there are any in that deck, then all due cards in the deck. After completing the deck, the same procedure is followed for the next random deck. 1 Randomly within a deck (All new cards first)
&
Randomly (once all cards in previous deck reviewed)
rnd rnd Due first Complete Goes randomly through all decks. First, all due cards in the deck are gone through in random order, if there are any in that deck, then all new cards in the deck. After the deck is completed, the same procedure is followed for the next random deck. 1 Randomly within a deck (All due cards first)
&
Randomly (once all cards in previous deck reviewed)
rnd rnd Any first Complete Goes randomly through all decks. All cards in the deck are gone through in random order. After the deck is completed, the same procedure is followed for the next random deck. 2
rnd rnd New first Round robin Goes randomly through all decks. A new random card is selected from the deck if there is no card in that deck, or after the card is completed, is moved to the next deck. If there are no new cards left in any deck, all due cards will be processed using the same “one card per deck” process. 3
rnd rnd Due first Round robin Goes randomly through all decks. A due random card is selected from the deck if there is no card in that deck, or after the card is completed, is moved to the next deck. If there are no more cards due in any deck, all new cards will be processed using the same “one card per deck” process. 3
rnd rnd Any first Round robin Goes randomly through all decks. A random card is selected from the deck and moved to the next deck once the card is completed. All cards are processed using the same “one card per deck” process. 3
rnd rnd New first rnd Goes randomly through all decks. A new random card is selected from the deck. If there is no card in this deck, it moves to the next deck. After the card is completed, a random decision is made as to whether another card should be selected from the deck or from the next deck. If there are no new cards left in any deck, all due cards will be processed using the same “one card per deck” process. 4
rnd rnd Due first rnd Goes randomly through all decks. A due random card is selected from the deck. If there is no card in this pile, it moves to the next pile. After the card is completed, a random decision is made as to whether another card should be selected from the deck or from the next deck. If there are no cards due in any deck, all new cards will be processed using the same “one card per deck” process. 4
rnd rnd Any first rnd Goes randomly through all decks. A card is randomly selected from the deck. After the card is completed, a random decision is made as to whether another card should be selected from the deck or from the next deck. All cards are processed using the same “one card per deck” process. 1 rnd card from random deck
&
Every card a random deck with a random card Ignoring new and due
  • seq: Sequential
  • rnd: Random

Development Stage 1

The main goal at stage 1 is to prepare the code to accept further modifications. Only implementing the existing functionallity without modifying the unit tests everything should work the same.

Development Stage 2

Add the function that there is no prioritization of due/new.

New unit test are requiered at this stage.

Development Stage 3

Implements the Round robin option for Card priority.

New unit test are requiered at this stage.

Development Stage 4

Implements the random option for Card priority.

New unit test are requiered at this stage.

@4Source
Copy link
Contributor Author

4Source commented May 26, 2024

Maybe this needs a rethinking here is a order that would be with this setup not possible

@4Source
Copy link
Contributor Author

4Source commented Jan 8, 2025

I think that in addition to the above mentioned Card order sequential, random there should also be oldest, lowest rating The lowest rating will show cards with the lowest rating first (ease).


Also Maybe a solution to reduce the amount of implementations would be if there is no deck order. This would be possible if all Subdecks are combined at the same "level" meaning are contained in the click deck. The Subdeck structure would only be noted for each card, but there is no difference in the order if it was located in a Subdeck or directly in the clicked deck. I think this would also make a lot of sense because if you click on a deck you would like to learn all of the cards inside this deck and if you would like to be more specific "you go a level deeper " and click one of the Subdecks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants