Welcome | Get started | Dive | Contribute | Topics | Reference | Changes | More
Introduction to actor parameters¶
Any table in Lino can have optional panel with actor parameters. This document explains what they are. They are both similar to and different from action parameters.
Side note: Code snippets (lines starting with >>>
) in this document get
tested as part of our development workflow. The following
initialization snippet tells you which demo project is being used in
this document.
>>> from lino import startup
>>> startup('lino_book.projects.cosi1.settings')
>>> from lino.api.doctest import *
Introduction¶
For example, here is a My Appointments table, first with the parameter panel collapsed and then expanded:
You can toggle between these two states by clicking the button in the toolbar. The help text of that button says Show or hide the table parameters. This button is available only on tables that do have parameters.
- actor parameter¶
A run-time parameter that can be given to an actor in the parameter panel.
Actor parameters are stored in the
parameters
attribute of theirActor
.- parameter panel¶
A panel used to enter actor parameters of an actor. In ExtJS it expands or collapses by clicking the button in the toolbar.
- simple actor parameter¶
An actor parameter that maps to a given database field. For example
lino_xl.lib.contacts.Persons.gender
is a simple actor parameter that, when set, will cause the table to show only persons of the gender given in the parameter panel. You declare them by overriding theget_simple_parameters
method of your model.
>>> pprint(rt.models.contacts.Persons.parameters)
{'aged_from': <django.db.models.fields.IntegerField: aged_from>,
'aged_to': <django.db.models.fields.IntegerField: aged_to>,
'end_date': <django.db.models.fields.DateField: end_date>,
'gender': <lino.core.choicelists.ChoiceListField: gender>,
'observed_event': <lino.core.choicelists.ChoiceListField: observed_event>,
'start_date': <django.db.models.fields.DateField: start_date>}
Only one of these is a simple parameter:
>>> list(rt.models.contacts.Persons.get_simple_parameters())
['gender']
For the other parameters we must override the model’s
lino.core.model.Model.get_request_queryset()
method in order to tell Lino
how they influence the data to be displayed.
TODO: continue to write documentation.
lino.core.utils.Parametrizable.parameters
- class lino.core.model.Model
- class lino.core.actors.Actor
- parameters¶
User-definable parameter fields for this actor or action. Set this to a dict of name = models.XyzField() pairs.
- params_layout = None
The layout to be used for the parameter panel. If this table or action has parameters, specify here how they should be laid out in the parameters panel.
- params_panel_hidden = True
If this table has parameters, set this to True if the parameters panel should be initially hidden when this table is being displayed.
- params_panel_pos¶
Where to place the parameters panel within the data window when it is expanded. Allowed values are “top”, “bottom”, “left” and “right”
- use_detail_param_panel = False
Set to true if you want the params panel to be displayed in the detail view. Used only in
lino_xl.lib.cal.CalView
.
- simple_parameters = None
A tuple of names of filter parameters that are handled automatically.
Application developers should not set this attribute directly, they should rather define a
get_simple_parameters()
on the model.
- get_simple_parameters(cls)¶
Hook for defining which parameters are simple.
Expected to return a list of names of parameter fields.