All dashboards should be URL-driven. That is, if you copy-paste the URL into another page, the result should be EXACTLY the same.
To do this, our dashboards use URL query parameters to filter data. For example, ‘?City=Tokyo’ shows data where the “City” column equals “Tokyo”.
Doing this is very easy in Gramex 1.21 using gramex.data.filter
inside a FunctionHandler
:
result = gramex.data.filter(data, handler.args)
If the URL is ?City=Tokyo
then result is data[data['City'] == 'Tokyo']
The URL filter parameters supported are identical to FormHandler filters.
It supports equals, not equals, comparison and string matches. It also automatically converts the query parameters to the correct type (int
, float
, bool
, string
, etc)
You can apply this to databases as well. gramex.data.filter
runs the query on the database, making it faster.
result = gramex.data.filter('oracle://user:pass@server/db',
handler.args, table='sales')
This filters the sales
table in the Oracle
database based on the URL query parameters.
You should read the documentation - it supports more options like: