DokuWiki

It's better when it's simple

User Tools

Site Tools


plugin:struct:aggregation

This is an old revision of the document!


Struct Plugin

Struct Plugin: Aggregation

Table

Aggregation of structured data is the main purpose of the plugin. Aggregation is done through a simple syntax which will result in a dynamic table listing all pages and associated data matching certain criteria.

The basic syntax looks like this:

---- struct table ----
schema: schema_name
cols: %pageid%, other, cols
----

The aggregation-syntax is very similar to that of the data plugin. The main difference is that you have to specify a schema name (or more than one). :!:

The keyword before the colon is a configuration option and the value after it is the actual setting. To make it more fault tolerant, multiple option names are frequently possible. Here is a list of all available options:

Option(s) Required? Description
schema
from
yes These are the schemas from which you want to display the data.
cols
select
yes These are the attributes you want to display. These are the same names you used in the Data Entry part
head
header
headers
no If specified, these names will be used in the table headers instead of the column names
max
limit
no How many rows should be displayed. If more rows are available the table will be made browsable. If not given all matching rows are shown
sort
order
no By what column should the table be sorted initially? Prepend a ^ to reverse the sorting
filter
where
filterand
and
no Filter by a column value. You may specify this more than once, multiple filters will be ANDed. (see also filters)
filteror
or
no Like filter, but multiple instances will be ORed (see also filters)
dynfilters no Set to 1 to enable a row of input fields for dynamically filtering the table
summarize no Set to 1 to calculate sum of columns
align no List of column alignments. The alignments can be left (l), center (c) or right (r)
rownumbers no Set to 1 to show row numbers
width
widths
no Comma-separated list of column widths to use. CSS units and percentages can be given
csv no Set to 0 to disable the CSV export for this aggregation

Please note that you can join data from multiple page schemas (as long as they are assigned on the same pages), but can only run aggregations on a single lookup schema.

Aliases

When selecting data from multiple schemas which contain the same field names, you have to prefix them with the schema name:

---- struct table ----
schema: schema1, schema2
cols: %pageid%, schema1.name, schema2.name
----

You can use aliases to reference schemas to type less. Aliases are separated by a space from the schema name:

---- struct table ----
schema: schema1 A, schema2 B
cols: %pageid%, A.name, B.name
----

Please see filters to learn more about filtering.

Special Columns

The following special column names can be used to access non-field columns:

Special Name Description
%pageid% The page name of the page holding the matching struct data
%title% The title (first heading) of the above page
%lastupdate% The date and time when the page or data was last updated
%lasteditor% The user that last changed the page

List

As an alternative to the table, you can also aggregate the data in list form. This is largely analogous to Data Lists of the data-plugins

The basic syntax for list aggregations is very similar to table aggregations and looks like this:

---- struct list ----
schema: schema_name
cols: %pageid%, other, cols
----

Lists support a new option: sepbyheaders. If you set this option to 1 and define headers for the columns, than each column will be prefaced with their header.

Several options from the table-aggregation are not supported for the list-aggregation:

Option supported for lists
schema
from
yes
cols
select
yes
head
header
headers
with sepbyheaders option
max
limit
yes
sort
order
yes
filter
where
filterand
and
yes
filteror
or
yes
dynfilters no
summarize no
align no
rownumbers no
width
widths
no
csv no
plugin/struct/aggregation.1481213273.txt.gz · Last modified: 2016-12-08 17:07 by 130.112.1.3