dashboard : customizable dashboard

The lino.modlib.dashboard plugin adds functionality for letting the users customize their dashboard.

As explained in The main window you can define a sequence of dashboard items for your application. Lino renders these dashboard items quite intelligently: they don't appear if the table contains no data or if the user has no permission to see it. But the dashboard items of an application are hard-coded and apply to all users.

A tested document

This is a tested document. The following instructions are used for initialization:

>>> import lino
>>> lino.startup('lino_book.projects.team.settings.doctests')
>>> from lino.api.doctest import *
>>> from django.db.models import Q

Which means that code snippets in this document are tested using the lino_book.projects.team demo project.

List of available dashboard items

>>> user = rt.models.users.User.objects.get(username="robin")
>>> pprint(list(settings.SITE.get_dashboard_items(user)))
... 
[lino_xl.lib.cal.ui.MyTasks,
 <class 'lino.core.dashboard.ActorItem'>(cal.MyEntries,header_level=2,min_count=None),
 lino_xl.lib.cal.ui.MyOverdueAppointments,
 lino_xl.lib.cal.ui.MyUnconfirmedAppointments,
 lino_xl.lib.cal.ui.DailyPlanner,
 lino.modlib.comments.ui.RecentComments,
 lino_xl.lib.tickets.ui.MyTickets,
 lino_xl.lib.tickets.ui.MySites,
 lino_xl.lib.tickets.ui.TicketsToTriage,
 lino_xl.lib.tickets.ui.MyTicketsToWork,
 lino_xl.lib.tickets.ui.TicketsNeedingMyFeedback,
 lino_xl.lib.tickets.ui.MyTicketsNeedingFeedback,
 lino_xl.lib.working.ui.WorkedHours,
 lino.modlib.notify.models.MyMessages,
 lino_xl.lib.groups.models.MyGroups]

As long as a user didn't populate their dashboard, the list ist empty and they will get all the dashboard items provided by the application.

../_images/dashboard1.png

Dashboard preferences (empty)

Click the button in order to populate the table.

../_images/dashboard2.png

Dashboard preferences (populated)

Now you can hide individual items and change their order.