{
  "name": "PivotTablePro",
  "label": "Pivot Table",
  "description": "Cross-tabulated table — row and column dimensions intersected by one or more measures.",
  "category": "Table Charts",
  "inputs": [
    {
      "name": "dataset",
      "type": "dataset",
      "label": "Dataset",
      "required": true,
      "category": "Component Data"
    },
    {
      "name": "measures",
      "type": "measure",
      "label": "Measures to display",
      "array": true,
      "config": {
        "dataset": "dataset"
      },
      "required": true,
      "category": "Component Data",
      "inputs": [
        {
          "name": "prefix",
          "type": "string",
          "label": "Prefix"
        },
        {
          "name": "suffix",
          "type": "string",
          "label": "Suffix"
        },
        {
          "name": "displayName",
          "type": "string",
          "label": "Display name"
        },
        {
          "name": "maxCharacters",
          "type": "number",
          "label": "Maximum characters",
          "supportedTypes": [
            "string"
          ]
        },
        {
          "name": "decimalPlaces",
          "type": "number",
          "label": "Decimal places",
          "supportedTypes": [
            "number"
          ]
        },
        {
          "name": "currency",
          "type": "string",
          "label": "Currency",
          "description": "e.g. EUR",
          "supportedTypes": [
            "number"
          ]
        },
        {
          "name": "abbreviateLargeNumber",
          "type": "boolean",
          "label": "Abbreviate large number",
          "supportedTypes": [
            "number"
          ]
        },
        {
          "name": "showColumnTotal",
          "type": "boolean",
          "label": "Show column total"
        },
        {
          "name": "showRowTotal",
          "type": "boolean",
          "label": "Show row total"
        },
        {
          "name": "showAsPercentage",
          "type": "boolean",
          "label": "Show as percentage",
          "description": "If turned on, other measures may be ignored",
          "defaultValue": false
        }
      ]
    },
    {
      "name": "columnDimension",
      "type": "dimension",
      "label": "Column dimension",
      "config": {
        "dataset": "dataset"
      },
      "required": true,
      "category": "Component Data",
      "inputs": [
        {
          "name": "prefix",
          "type": "string",
          "label": "Prefix"
        },
        {
          "name": "suffix",
          "type": "string",
          "label": "Suffix"
        },
        {
          "name": "displayName",
          "type": "string",
          "label": "Display name"
        },
        {
          "name": "maxCharacters",
          "type": "number",
          "label": "Maximum characters",
          "supportedTypes": [
            "string"
          ]
        },
        {
          "name": "decimalPlaces",
          "type": "number",
          "label": "Decimal places",
          "supportedTypes": [
            "number"
          ]
        },
        {
          "name": "currency",
          "type": "string",
          "label": "Currency",
          "description": "e.g. EUR",
          "supportedTypes": [
            "number"
          ]
        },
        {
          "name": "abbreviateLargeNumber",
          "type": "boolean",
          "label": "Abbreviate large number",
          "supportedTypes": [
            "number"
          ]
        },
        {
          "name": "granularity",
          "type": "granularity",
          "label": "Granularity",
          "supportedTypes": [
            "time"
          ],
          "defaultValue": "day"
        },
        {
          "name": "dateBounds",
          "type": "timeRange",
          "label": "Date bounds",
          "description": "Set the date range for the axis",
          "supportedTypes": [
            "time"
          ]
        },
        {
          "type": "boolean",
          "name": "ignoreEmptyDate",
          "label": "Ignore empty dates",
          "description": "When enabled, dates with no data will be omitted instead of shown as empty.",
          "supportedTypes": [
            "time"
          ],
          "defaultValue": false
        }
      ]
    },
    {
      "name": "rowDimension",
      "type": "dimension",
      "label": "Primary row dimension",
      "config": {
        "dataset": "dataset"
      },
      "required": true,
      "category": "Component Data",
      "inputs": [
        {
          "name": "prefix",
          "type": "string",
          "label": "Prefix"
        },
        {
          "name": "suffix",
          "type": "string",
          "label": "Suffix"
        },
        {
          "name": "displayName",
          "type": "string",
          "label": "Display name"
        },
        {
          "name": "maxCharacters",
          "type": "number",
          "label": "Maximum characters",
          "supportedTypes": [
            "string"
          ]
        },
        {
          "name": "decimalPlaces",
          "type": "number",
          "label": "Decimal places",
          "supportedTypes": [
            "number"
          ]
        },
        {
          "name": "currency",
          "type": "string",
          "label": "Currency",
          "description": "e.g. EUR",
          "supportedTypes": [
            "number"
          ]
        },
        {
          "name": "abbreviateLargeNumber",
          "type": "boolean",
          "label": "Abbreviate large number",
          "supportedTypes": [
            "number"
          ]
        },
        {
          "name": "granularity",
          "type": "granularity",
          "label": "Granularity",
          "supportedTypes": [
            "time"
          ],
          "defaultValue": "day"
        },
        {
          "name": "dateBounds",
          "type": "timeRange",
          "label": "Date bounds",
          "description": "Set the date range for the axis",
          "supportedTypes": [
            "time"
          ]
        },
        {
          "type": "boolean",
          "name": "ignoreEmptyDate",
          "label": "Ignore empty dates",
          "description": "When enabled, dates with no data will be omitted instead of shown as empty.",
          "supportedTypes": [
            "time"
          ],
          "defaultValue": false
        }
      ]
    },
    {
      "name": "subRowDimension",
      "type": "dimension",
      "label": "Secondary row dimension (optional)",
      "config": {
        "dataset": "dataset"
      },
      "required": false,
      "category": "Component Data",
      "inputs": [
        {
          "name": "prefix",
          "type": "string",
          "label": "Prefix"
        },
        {
          "name": "suffix",
          "type": "string",
          "label": "Suffix"
        },
        {
          "name": "displayName",
          "type": "string",
          "label": "Display name"
        },
        {
          "name": "maxCharacters",
          "type": "number",
          "label": "Maximum characters",
          "supportedTypes": [
            "string"
          ]
        },
        {
          "name": "decimalPlaces",
          "type": "number",
          "label": "Decimal places",
          "supportedTypes": [
            "number"
          ]
        },
        {
          "name": "currency",
          "type": "string",
          "label": "Currency",
          "description": "e.g. EUR",
          "supportedTypes": [
            "number"
          ]
        },
        {
          "name": "abbreviateLargeNumber",
          "type": "boolean",
          "label": "Abbreviate large number",
          "supportedTypes": [
            "number"
          ]
        }
      ],
      "description": "When set, each primary row becomes expandable. Clicking a row loads a breakdown by the second dimension."
    },
    {
      "name": "title",
      "type": "string",
      "label": "Title",
      "category": "Component Header"
    },
    {
      "name": "description",
      "type": "string",
      "label": "Description",
      "category": "Component Header"
    },
    {
      "name": "tooltip",
      "type": "string",
      "label": "Tooltip",
      "category": "Component Header"
    },
    {
      "name": "displayNullAs",
      "type": "string",
      "label": "Display null as",
      "category": "Component Settings"
    },
    {
      "name": "firstColumnWidth",
      "type": "number",
      "label": "First column width",
      "description": "Set the width in px (e.g. 200)",
      "category": "Component Settings"
    },
    {
      "name": "columnWidth",
      "type": "number",
      "label": "Column width",
      "description": "Set the width in px (e.g. 200)",
      "category": "Component Settings"
    },
    {
      "name": "maxResults",
      "type": "number",
      "label": "Max results",
      "category": "Component Settings",
      "defaultValue": 1000
    },
    {
      "name": "menuOptions",
      "type": "exportOption",
      "label": "Menu options",
      "array": true,
      "defaultValue": [
        "csv",
        "xlsx",
        "png"
      ],
      "category": "Component Settings"
    }
  ]
}