Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Section


Column

Overview

This advanced example is about a custom scripting based way to provide dynamic column selection. This is based on the Column Selectionselectionexamples and assume it is assumed that you have followed performed those steps first. We use a simple table to make it easier to demonstrate the scripting.

Tip
titleExperience required

Skills - if you do not have the following skills, do not attempt this example. Learn the basics separately and then come back here.

  • You should already be experienced with some form of scripting like with groovy
  • You should be familiar with using the Run macro and using checklist input fields
  • You should have a bit of understanding of wiki markup



Column
width40%

Screenshot

 


Requirements

Run

...

macro configuration

  • You may want to select Automatically render body on display (autoRun) so the table will be is displayed with the default columns initially.
  • Add a checklistfieldcalledchecklist field called columns to the Replace field list (replace) that contains pairs matching column numbers to column names.
Table plus
autoNumbertrue


DescriptionExample

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

columns:'1,2,3':Column selection:checkbox:1:1:A:2:B:3:C:4:D:5:E

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

select Select Automatically render body on display display


Script

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

Code Block
languagegroovy
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()
} 

...