Renders a server-side filtered data table with configurable filter controls (date, text, number, select, multiselect) driven by a token-substituted SQL query, with results loaded via RPC.
PakkieTable — set as ReportType in def_report.
def Render(self, Param1="", Param2="", Param3="") -> str:
Param1, Param2, Param3 — optional default values for filter tokens named Param1, Param2, and Param3 respectively. If autoload is enabled in options or any Param is provided, the table loads immediately on page render.
Returns an HTML card with filter controls and a table placeholder, plus an inline <script> block that handles RPC calls, dropdown population, and result rendering.
RpcGetlist(data)Resolves filter tokens from the request payload against the options.filters schema, expands them into the report's _Query SQL template, wraps the result in a LIMIT guard, executes the query against ComputeDB, and returns a JSON-serialisable list of row dicts.
RpcGetchoices(data)Returns a dict mapping each select or multiselect filter token to its list of {value, label} choices. Choices are sourced from choices_sql, choices_table metadata, or static choices lists defined in the filter schema.
Options read from self._Options JSON (also re-read from def_report.options on RPC paths that lack _Options).
| Key | Effect |
|---|---|
filters |
List of filter definition objects (see below) |
limit |
Default row limit (default: 500) |
autoload |
If true, the table loads automatically on page open |
debug |
If true, logs resolved SQL and tokens to the browser console |
Each filter object in filters supports:
| Key | Effect |
|---|---|
token |
SQL template placeholder name (e.g. $Param1$) |
label |
Display label for the control |
type |
Value type: date, number, value, raw, csv, csv_num, csv_in, clause_eq, clause_in, clause_like |
ui |
Control type: input (default), select, multiselect |
default |
Default value |
placeholder |
Input placeholder text |
choices |
Static list of {value, label} objects for select/multiselect |
choices_sql |
SQL returning rows to populate a select/multiselect |
choices_table |
Table name to build choices from, with optional value_field, label_field, where, orderby, distinct, limit |
allowEmpty |
Prepends an "All" option to a select |
emptyLabel |
Label for the empty "All" option |
column |
Column name used by clause filter types |
wrap |
Set to in to wrap csv/csv_num values in parentheses |
mode |
Sub-mode for clause types: number, date, raw, text |
axion.rpc.js.self._Query (set from def_report.query) and uses $TokenName$ or $tokenName$ placeholders.