Include dashboard in base module

Rational

The first impression of Tryton is a blank slate. This is bad as discussed in Blank state improvements. The user on login should see the important information according to his role (groups). This information should also be an entry point to navigation.
E.g.: a salesmen should see how much draft or quoted sales are pending and open them directly to act.

The dashboard module was a way to have this feature but it did not work because it is an optional module and so modules does not fill it with data (actions).

Proposal

We deprecate the dashboard module and include it in res module.
We add on the user a dashboard field (similar to the menu) but restricted to board view. This screen is displayed only when there is no tab opened (so on login). The view is refreshed each time it is display again (when last tab is closed).

We define in res module a default board view that each module will fill with its data.
The clients must call a dedicated method to retrieve the boad view. This method will be in charge to remove any action that the user may not have access to (and optionally add cache).

The layout of the board is divided in two parts.
The first part is composed of a group of relate buttons.
The second part is composed of graph and list. They are limited to a fixed height.

Content

  • Party: link to parties
  • Product: links to products and variants
  • Accounting:
    • links to invoices, lines to pay, payments, statements, non-reconciled lines, dunnings
    • list: journal cash
  • Stock:
    • links to shipments, inventories
  • Purchase:
    • links to purchases, requests, requisitions, amendments
  • Sale:
    • links to sales, opportunities, complaints, amendments
    • graph: opportunities per months
  • Timesheets:
    • graph: employee timesheet per day for current week
  • Productions:
    • links to productions, works

Implementation

I have several doubts here:

  • What if the user has default actions to be launched? The dashboard will be also launched?
  • I’m wondering if using a single board view is enought. There may be some users that are responsible of two areas (for example purchase and sale) and it will be better to have separate dashboard for each area. Another reason for having more that one dashboard is that in case the user case a lot of permisions will see a dashboard with a lot of information which is normally hard to manage.

If those actions opens tab, the user will not see the dashboard until he close all the tabs.

That is a design detail. Notebook are group can be used in the board.

Well that’s not very good practice to have a user with a lot of permissions.
Any way, with a good board design and a sparse usage of the board this should not be a real problem.
For example we could not show some actions even if the user has access to it because he belongs to another group.
But I do not want to already fix such problem of abundance before having really the problem. For now, we have no dashboard so we should not care about having too much.