DokuWiki

It's better when it's simple

User Tools

Site Tools


plugin:struct:aggregation

Struct Plugin

Struct Plugin: Aggregation

Aggregation of structured data is the main purpose of the plugin. Aggregation is done through simple syntax mechanisms that are used to collect, filter, sort and output data stored in schemas. Currently, there are three types of aggregations:

  • Table – tabular display of aggregated data
  • List – list display of aggregated data
  • Value – display of a single value1)

The editors for global and serial data are aggregations, too:

In addition to the above output types, there exist some syntax to add additional controls to the displayed aggregation data:

  • Filter – filter displayed data via drop-down elements
  • Cloud – filter displayed data via a tag cloud

Aggregation Options

All the above syntax modes (except Value) follow the same basic syntax containing a key-value list of options:

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

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. Not all options are available for all aggregations and control mechanisms, but every one of them requires at least the schema and cols options (See Schema and Column Selection below).

Option(s) Description Available in
schema
from
These are the schemas from which you want to display the data. Multiple schemas are not supported in all aggregations and controls. table
list
global
serial
filter
cloud
cols
select
These are the attributes you want to display. These are the same names you used in the Data Entry part. You may use * to select all columns. This can be combined with Special Names e.g. %pageid%, * table
list
global
serial
filter
cloud
align List of column alignments in table output. The alignments can be left (l), center (c) or right (r) table
global
serial
class
classes
Allows to configure a comma separated list of CSS classes aggregation should have. This makes custom styling easier. table
list
global
serial
filter
cloud
csv Set to 0 to disable the CSV export for this aggregation table
global
serial
dynfilters Set to 1 to enable a row of input fields for dynamically filtering a table table
global
serial
filter
where
filterand
and
Filter by a column value. You may specify this more than once, multiple filters will be ANDed. (see also filters) table
list
global
serial
filter
cloud
filteror
or
Like filter, but multiple instances will be ORed (see also filters) table
list
global
serial
filter
cloud
head
header
headers
A comma separated list of labels. If specified, these names will be used in the table headers instead of the field labels table
list
global
serial
filter
cloud
index Number of letters to use to create an alphabetical index for lists list
max
limit
How many results should be displayed. Tables will be paginated, other aggregations and controls will ignore additional reaults table
list
global
serial
filter
cloud
nesting
nest
Number of levels to nest list results list
rownumbers Set to 1 to show row numbers table
sepbyheaders Set to 1 to include headers in list output list
sort
order
By what column should the table be sorted initially? Prepend a ^ to reverse the sorting table
list
global
serial
filter
cloud
summarize Set to 1 to calculate sum of columns table
global
serial
target
page
The page to which filter links should point to. If not specified, the current page is used. filter
cloud
width
widths
Comma-separated list of column widths to use. CSS units and percentages can be given table
global
serial

Schema and Column Selection

As mentioned above, all aggregations and controls require at least the schema and cols options.

Where multiple schemas can be given, resulting rows will be joined on their page ID. The aggregation will list pages which have all the given schemas assigned. This of course means that you can never include a global data schema when using multiple schemas, because global data has no page id. Joining serial data may return unexpected results.

All Fields

You can select all fields available in the given schemas by using an asterisk * as column name. You can also combine it with special columns.

---- struct table ----
schema: schema1, schema2
cols: %pageid%, *
----

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 as shortcodes to reference schemas in order to reduce your typing. 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, if any
%title% The title (first heading) of the above page
%rowid% The number of the row in the database (meaningful only for global and serial data)
%lastupdate% The date and time when the page or data was last updated
%lasteditor% The user that last changed the page
%lastsummary% The last edit summary of the page

In order to use them in templates, add another percent sign infront of the special name. E.g. for %pageid% use %%pageid%

1)
Strictly speaking this is not an aggregation but it is listed here since it allows the output of data
plugin/struct/aggregation.txt · Last modified: 2024-03-13 18:17 by 91.89.222.218

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki