Dynamic column selection - 8.x

Dynamic column selection - 8.x

Requirements

Run macro configuration

  • You may want to select Automatically render body on display (autoRun) so the table is displayed with the default columns initially.

  • Add a checklist field called columns to the Replace field list (replace) that contains pairs matching column numbers to column names.

Script

The script may need to be customized for your specific use. This is just a simple example. The groovy macro must set the Output format (output) to wiki.

def includePage = 'Examples:table page' // customize to point to your SPACE:Page title def columnTypes = ['S','S','S','S','S'] // customize to set the default column types for all columns def selectedColumns = '$columns'.split(',') // assumes run macro is configured using the columns replacement variable name def moreTablePlusParameters = '' // customize if you need some additional table plus parameters - must be in standard wiki parameter notation!   // For each column that was NOT selected, replace the default column type for that entry to hide for (int i = 1; i <= columnTypes.size(); i++) { if (!selectedColumns.contains(i.toString())) { columnTypes[i - 1] = 'H' } } // Build the wiki markup for the include page def StringBuilder builder = new StringBuilder() builder.append("{table-plus:columnTypes=${listToSeparatedString(columnTypes)}|${moreTablePlusParameters}}").append('\n') builder.append("{include:${includePage}}").append('\n') builder.append('{table-plus}') out.print(builder.toString()) def listToSeparatedString(list) { StringBuilder builder = new StringBuilder() list.each { element -> builder.append("'").append(element).append("',") } return builder.toString()