Document TemplateConditional Columns

Tables in a document template can use parent level logical fields to control visibility of columbs.

Sample Data

{
    "static": {
        "showContact": true,
        "showCountry": true,
        "showRegion": true,
        "showCity": true,
        "showAddress": false,
        "showPostalCode": false,
        "showPhone": false,
        "showFax": false,
        "customer": [
            {
                "CustomerID": "ALFKI",
                "CompanyName": "Alfreds Futterkiste",
                "ContactName": "Maria Anders",
                "ContactTitle": "Sales Representative",
                "Address": "Obere Str. 57",
                "City": "Berlin",
                "Region": null,
                "PostalCode": "12209",
                "Country": "Germany",
                "Phone": "030-0074321",
                "Fax": "030-0076545"
            },
            {
                "CustomerID": "ANATR",
                "CompanyName": "Ana Trujillo Emparedados y helados",
                "ContactName": "Ana Trujillo",
                "ContactTitle": "Owner",
                "Address": "Avda. de la Constitución 2222",
                "City": "México D.F.",
                "Region": null,
                "PostalCode": "05021",
                "Country": "Mexico",
                "Phone": "(5) 555-4729",
                "Fax": "(5) 555-3745"
            },
            {
                "CustomerID": "ANTON",
                "CompanyName": "Antonio Moreno Taquería",
                "ContactName": "Antonio Moreno",
                "ContactTitle": "Owner",
                "Address": "Mataderos  2312",
                "City": "México D.F.",
                "Region": null,
                "PostalCode": "05023",
                "Country": "Mexico",
                "Phone": "(5) 555-3932",
                "Fax": null
            },
            {
                "CustomerID": "AROUT",
                "CompanyName": "Around the Horn",
                "ContactName": "Thomas Hardy",
                "ContactTitle": "Sales Representative",
                "Address": "120 Hanover Sq.",
                "City": "London",
                "Region": null,
                "PostalCode": "WA1 1DP",
                "Country": "UK",
                "Phone": "(171) 555-7788",
                "Fax": "(171) 555-6750"
            }
        ]
    }
}

This data has a single top level record which includes a number of logical fields, which we will reference in the table column definition.

Instead of looping at the top level *root like our other example document templates, This document template with loop over an array called "customer" .

Using the "visiblefield" Property of Columns

{
    "info": {
        "width": "11in",
        "height": "8.5in"
    },
    "table": {
        "area": {
            "border": {
                "style": "Single"
            }
        },
        "columns": [
            {
                "width": "64pt"
            },
            {
                "width": "100pt"
            },
            {
                "width": "100pt",
                "visiblefield": "showContact"
            },
            {
                "width": "100pt",
                "visiblefield": "showContact"
            },
            {
                "width": "100pt",
                "visiblefield": "showAddress"
            },
            {
                "width": "100pt",
                "visiblefield": "showCity"
            },
            {
                "width": "100pt",
                "visiblefield": "showRegion"
            },
            {
                "width": "64pt",
                "visiblefield": "showPostalCode"
            },
            {
                "width": "64pt",
                "visiblefield": "showCountry"
            },
            {
                "width": "54pt",
                "visiblefield": "showPhone"
            },
            {
                "width": "54pt",
                "visiblefield": "showFax"
            }
        ],
        "body": {
            "sections": [
                {
                    "source": "customer",
                    "sections": [
                        {
                            "source": "*header",
                            "rows": [
                                {
                                    "textformat": {
                                        "color": "White"
                                    },
                                    "area": {
                                        "fill": {
                                            "color": "#333333"
                                        }
                                    },
                                    "cells": [
                                        {
                                            "text": "Customer ID"
                                        },
                                        {
                                            "text": "Company Name"
                                        },
                                        {
                                            "text": "Contact Name"
                                        },
                                        {
                                            "text": "Contact Title"
                                        },
                                        {
                                            "text": "Address"
                                        },
                                        {
                                            "text": "City"
                                        },
                                        {
                                            "text": "Region"
                                        },
                                        {
                                            "text": "PostalCode"
                                        },
                                        {
                                            "text": "Country"
                                        },
                                        {
                                            "text": "Phone"
                                        },
                                        {
                                            "text": "Fax"
                                        }
                                    ]
                                }
                            ]
                        },
                        {
                            "rows": [
                                {
                                    "cells": [
                                        {
                                            "field": "CustomerID"
                                        },
                                        {
                                            "field": "CompanyName"
                                        },
                                        {
                                            "field": "ContactName"
                                        },
                                        {
                                            "field": "ContactTitle"
                                        },
                                        {
                                            "field": "Address"
                                        },
                                        {
                                            "field": "City"
                                        },
                                        {
                                            "field": "Region"
                                        },
                                        {
                                            "field": "PostalCode"
                                        },
                                        {
                                            "field": "Country"
                                        },
                                        {
                                            "field": "Phone"
                                        },
                                        {
                                            "field": "Fax"
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    }
}

The document produced by this will hide columns that have a "visiblefield" with values of 'false' .

images/conditional1.PNG
Conditional Column PDF

Changing the top level data values

{
    "static": {
        "showContact": true,
        "showCountry": true,
        "showRegion": false,
        "showCity": true,
        "showAddress": false,
        "showPostalCode": false,
        "showPhone": true,
        "showFax": true,
        ..
}

Changing the values in the top level fields changes the generated document, which you can use for user selected columns.

images/conditional2.PNG
Altered Conditions PDF