Cockatrice: Oracle UX improvements (workflow and UI mockup inside)

Created on 6 Apr 2017  路  9Comments  路  Source: Cockatrice/Cockatrice

The current flow for Oracle looks like this:

  1. Select language
  2. Select source
  3. Wait for download/import to complete

    • If the download fails, you're stuck. There's no way to progress. (#1364)

  4. Decide whether or not imported data should be saved in the default location

    • If it is, progress

    • If not, the user is asked to find a suitable place to save the xml file. This location is not stored, so the user must navigate to it each time they run oracle.

    • A log is shown here

  5. A modal appears, saying that it saved the xml file
  6. Select source for token data
  7. Wait for download/import to finish
  8. Decide whether or not imported data should be saved in the default location

    • If it is, progress

    • If not, the user is asked to find a suitable place to save the xml file. This location is not stored, so the user must navigate to it each time they run oracle.

    • No log is shown here (inconsistent with the same screen for card data)

  9. A modal appears, saying that it saved the xml file
  10. Oracle exits on its own

This flow has _lots_ of problems:

  1. Why are there 10 steps involved in importing 2 files?
  2. Its not possible to select where to save the xml until _after_ you've downloaded it.
  3. The checkbox for deciding where to save xml data is easy to miss.

    • Why is it even a checkbox?

  4. If you only want token data, you have to get card data too
  5. If you only want card data, you have to know to quit manually
  6. Modals are obnoxious

I suggest reworking Oracle so that it has a flow like this:

  1. Select language, and whether you want card or token data, or both
  2. Select where to fetch card/token/both data from, and where to save the resulting files

    • have the fields for both there, but grey out any which are unwanted

  3. Download and import the wanted data
  4. Show a finished screen

    • A log is shown here

    • Any errors in the last step are presented to the user here

    • Clicking Finish closes the app

App - Oracle Good first issue Hacktoberfest Suggestion UI / UX

Most helpful comment

If we do end up adding spoiler support in future, I don't think they should get merged directly into cards.xml. It'd be better to add them as a separate spoilers.xml in the customsets folder.

All 9 comments

We could also query @tritoch's spoilers with oracle and include them in the future, to stop the mess with custom sets and the need to delete them later once available on mtgjson.

  • [x] Update Main Card Database
  • [x] Update Token Database
  • [ ] Include newest Spoiler into Main Card Database

If you check that, it'll include them into cards.xml. That way, if we prioritize the AllSets.json data, they get just included if not already found in mtgjson (aka released on gatherer).
Will make the process for users easier, lower their waiting time and explanations needed in main chat or questions on reddit. :D

I'm not sure we should do that, at least for now. Let's focus on cleaning up what we have, maybe we can consider that change later

If we do end up adding spoiler support in future, I don't think they should get merged directly into cards.xml. It'd be better to add them as a separate spoilers.xml in the customsets folder.

@skwerlman
While that is the better way to deal with it, we then need to tell Cockatrice to not prioritize a spoiler.xml file over information in cards.xml, as we do with other custom sets.



I created a mock-up taking the steps from above, but also adding some other ideas:

I suggest reworking Oracle so that it has a flow like this:

  1. Select language, and whether you want card or token data, or both
  2. Select where to fetch card/token/both data from, and where to save the resulting files
    - have the fields for both there, but grey out any which are unwanted
  3. Download and import the wanted data
  4. Show a finished screen
    - A log is shown here
    - Any errors in the last step are presented to the user here

1) Select language + select wanted updates (any combination of card updates, tokens, spoilers...)
mockup1
Note: It should be more clear that the language selector is just for the displayed interface language in Oracle. We could also remove it completely and just take the same language setting we use in Cockatrice. The normal work flow now is to open Cockatrice first anyway and then open Oracle from within the app. Not run it as a completely separate program.

2) Give links to online sources or provide local files for each of the selected sources from step 1
mockup2

3) Downloading+parsing starts. Tokens are greyed out here (in case you deselect them in step 1)
mockup3

4) Shows the result of the former operation (successful or errors) + allows to see log and file locations
mockup4

Edit: Updated the step 1 picture
Actually I think we can even get rid of step 2... in case there are problems with the hosted files or people want/need to customize things (which isn't the default at all!), we have another tickbox in the step 1 saying: Customize sources or something. It's the same as anybody knows from app installations which say "Change default installation settings" which doesn't shortcut the installation, but gives you the option to adjust the install directory and such.
So default would be a shortcut from step 1 to step 3 and a option to modify links or provide local files with a tickbox in step 1 for example (--> show step 2).

Edit2: Added step 4

That looks great. The only thing lost is

  • Changing destination for xml files.

I see you can view the file directly, but that may be ill-advised for an 8MB file - could choke some text editors.

I've also been pushing for a move towards foreign card files, and have even generated json files that contain foreign card images where available. Can you prototype where such an option might be added for future?

The only thing lost is changing destination for xml files

Jep, I don't think it's needed. It should be in the advanced screen (step 2) though, if at all.
I guess if you want the file in a special location you just open the folder at the end and cut/move it where you want it to be.
But in general you just need to change the location if you adjusted your default location in Cockatrice settings I think? Oracle should just pick up that custom location from the settings.ini instead... to keep Oracle as simple as possible.
If you still need the file in a different place, you can open the location and move the file around. We offer help to open the locations from within the client and in my mock-up in Oracle as well.

I see you can view the file directly, but that may be ill-advised for an 8MB file - could choke some text editors.

It should better be named "Show location" for sure, not "Show file". Since it shouldn't open the file! Just opening the corresponding folder.

I think we planned on integrating foreign pictures in the client without the need of dealing with several .json files etc. There is also a ticket.
But that will take some time since mtgjson needs to include this information for all sets first, before we can parse it with Oracle and offer options in Cockatrice to download different pictures. It's also ticketed on the mtgjson repo and he started working on it. I guess the information is already there for some sets.
For now, I think people need to deal with customizing stuff if other pictures are needed.
If it has to be/is going to be in Oracle it could replace the language setting we use right now to change the displayed langauge within Oracle in step 1. The displayed language can just mirror the one which is selected in Cockatrice instead. But this means that the user has a language specific card database with language specific picture links... the way we wanted to do it you could change the displayed card art (language wise) in the client and other pictures are downloaded without a database change because the names of each card for other languages are already known.

Oracle should also validate any xml that is imported and throw useful errors (Token, Spoiler...): #2065
Same for the json files in case users use sources other than mtgjson.

Actually, Oracle could be our general update tool and also check for Cockatrice updates. That way we make users check more frequently on every card update too (if they want) and lower general confusions.
Has to be the first check in that case, then suggest to run update first (since it updates Oracle as well), start new Oracle again and ideally uncheck Cockatrice check for this automated run.
"Oracle Importer" --> "Oracle Updater" (it could also just be "Cockatrice Updater")

We want to get rid of Oracle at some point, in favor of distributing databases (See #4109) as such I don't find playing with this option worth our time

Was this page helpful?
0 / 5 - 0 ratings

Related issues

micomicoa picture micomicoa  路  5Comments

FinksJuice picture FinksJuice  路  4Comments

Assassinsquid picture Assassinsquid  路  4Comments

Thunderbeliever picture Thunderbeliever  路  6Comments

TheMasterpass picture TheMasterpass  路  4Comments