...
Overview
This advanced example is about a custom scripting based way to provide dynamic column selection. This is based on the Column Selection examples and assume you have followed those steps first. We use a simple table to make it easier to demonstrate the scripting.
Tip |
---|
|
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 |
---|
|
Screenshot Image Removed |
Requirements
- RUN for the Run macro
- Scripting for Confluence for one of the scripting macros, this example uses the Groovy Macro
Run Macro Configuration
- Likely you will want to select Automatically render body on display (autoRun) so the table will be displayed with the default columns initially
- Add a checklistfieldcalledcolumns to the Replace field list (replace) that contains pairs matching column numbers to column names
...
Description | Example |
---|
Add a checklist field called columns to the Replace field 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 want to select Automatically render body on display (autoRun) so the table will be displayed with the default columns initially | select Automatically render body on display |
Image Removed
Script
The script will need to be customized for your specific use. This is just a simple example. The groovy macro needs to set the Output format (output) to wiki.
Code Block |
---|
|
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()
} |
...
Include Page |
---|
| SUPPORT:Dynamic column selection - 8.x |
---|
| SUPPORT:Dynamic column selection - 8.x |
---|
|