open-election-compass/client

Categories and Lazy Mode

tillsanders opened this issue · 0 comments

To fight user laziness and allow for a more customized experience, the OpenElectionCompass should support sorting theses in categories.

There is always at least one implicit category, the required category. Theses in this category will be asked first and it is required to answer them. After these, if more categories (e.g. 'Environment', 'Education', 'International Affairs', 'European Union', etc) are present, the user will be asked to either choose the next category or proceed to the next section (selection of the parties). A user can choose to answer as many categories as he/*/she likes.

This feature will allow use cases where it is desireable for "lazy" users to be able to move to the results more quickly, while at the same time give users the choice to customize their selection fo theses to their personal interests.

Implementation

  • Add categories as a top-level configuration option besides parties, theses, etc.
    • Categories should have a name, an alias (slug) and an optional emoticon (unicode character)
    • Categories should be optional.
  • Add support for categories to the configuration editor
    • It should be possible to add multiple categories, after adding parties and before adding theses
    • It should be possible to add a thesis to multiple categories using a select field
    • A thesis with no categories selected implicitly belongs to the default (required) category
  • Document the changes to the configuration file format
  • Add support for categories in the client
    • The thesis store should store the selected categories in order of selection and allow mutation accordingly
    • The thesis store should return a list of theses, based on the selected categories and in the order of selection, but always with the default category
    • The thesis store should have a boolean value called done
    • The thesis section should be adapted to be able to ask questions in between theses
    • The thesis section should contain a component to be inserted at the end when there are more theses that could be answered, given that the user chooses a category that contains them
      • This component should render a short explanation and the categories as a list of buttons, as well as an option to proceed to the next section (selection of parties)
      • The categories that have been chosen or only contain theses that have been answered should be disabled, slightly transparent and greyed
      • Clicking on such a button will select the category and thereby automatically add it's theses to the list of available theses and make the component disappear
      • Clicking the button to proceed to the next section will set the done flag in the theses store which will allow the user to proceed to the next section
    • The statement component should display the (first, custom) category a thesis belongs to as a badge with the emoticon in place of an font-icon
    • The main navigation component should display all theses of selected categories in the correct order
    • The GuideButton should continue to work as expected

Optionally

  • The Match component should be able to display the results differently when not all theses have been answered
    • The theses store should calculate not only the result of every party, but also (given that not all theses/categories have been answered), the maximum number of points (and percentage) a party could have lost or gained had more theses been answered
    • Instead of the simple bar chart, a box plot like visualization should be used. This will render a white area from the minimum to the maximum number of points a party could have had. The text will show the actual percentage with an added "+/- X %"
    • Below the normal results will be another chart that shows the "winners" and "losers" in every category selected, i.e. the parties with the most loss/gain of points in the respective category
    • Should contain a button that opens the category selection again to improve the accuracy of the results by answering more theses