1. API reference
  2. Welcome
    1. Component overview
    2. Quick start
    3. System requirements
    4. Troubleshooting
    5. Managing license keys
  3. Connecting to Data Source
    1. JSON
      1. Connecting to JSON
      2. Data types in JSON
    2. CSV
      1. Connecting to CSV
      2. Connecting to CSV using Compressor
      3. Data types in CSV
    3. Database
      1. Connecting to SQL databases
      2. Connecting to other databases
      3. Connecting to database with Node.js
      4. Connecting to database with .NET
      5. Connecting to database with .NET Core
      6. Connecting to database with Java
      7. Connecting to database with PHP
    4. Microsoft Analysis Services
      1. Connecting to Microsoft Analysis Services
      2. Getting started with Accelerator
      3. Installing Accelerator as a Windows Service
      4. Referring Accelerator as a DLL
      5. Configuring authentication process
      6. Configuring secure HTTPS connection
      7. Troubleshooting
    5. Pentaho Mondrian
      1. Connecting to Pentaho Mondrian
      2. Getting started with Accelerator
      3. Configuring Mondrian roles
      4. Сonfiguring username/password protection
      5. Сonfiguring secure HTTPS connection
      6. Troubleshooting
    6. icCube
  4. Security
    1. Accelerator security
    2. Data Compressor Security
  5. Configuring report
    1. What is a report
    2. Data source
    3. Slice
    4. Options
    5. Number formatting
    6. Conditional formatting
    7. Set report to the component
    8. Get report from the component
    9. Date and time formatting
    10. Configuring global options
    11. Export and print
    12. Calculated values
    13. Custom sorting
  6. Integration with frameworks
    1. Available tutorials
    2. Integration with AngularJS (v1.x)
    3. Integration with Angular
    4. Integration with React
    5. Integration with Webpack
    6. Integration with ASP.NET
    7. Integration with jQuery
    8. Integration with JSP
    9. Integration with TypeScript
    10. Integration with RequireJS
    11. Integration with PhoneGap
  7. Integration with charts
    1. Integration with Highcharts
    2. Integration with Google Charts
    3. Integration with FusionCharts
    4. Integration with any charting library
  8. Customizing
    1. Customizing toolbar
    2. Customizing appearance
    3. Customizing context menu
    4. Localizing component
  9. Updating to the latest version
    1. Updating to the latest version
    2. Release notes
    3. Migration guide from 2.5 to 2.6
    4. Migration guide from 2.4 to 2.5
    5. Migration guide from 2.3 to 2.4
    6. Migration guide from 2.2 to 2.3
    7. Documentation for older versions
Table of contents

Data types in JSON

The first object in a JSON array can be used to define data types, captions, hierarchies with multiple levels, to group several fields in one dimension, etc. Here is the list of supported properties that can be used in the first object of the input array:

  • type – the data type. Can be:
    • "string" – the field contains string data. You will be able to aggregate it only with Count and Distinct Count aggregations. It will be sorted as string data.
    • "number" – the field contains numeric data. You will be able to aggregate it with all available aggregations. It will be sorted as numeric data.
    • "level" – the field is a level of the hierarchy. This type is used together with other properties such as hierarchy, level and parent.
    • "month" – the field contains months.
    • "weekday" – the field contains days of the week.
    • "date" – the field is a date. Such fields will be split into 3 different fields: Year, Month, Day.
    • "date string" – the field is a date. Such fields will be formatted using a date pattern (default is dd/MM/yyyy).
    • "year/month/day" – the field is a date. You will see such dates as hierarchies: Year > Month > Day.
    • "year/quarter/month/day" – the field is a date. You will see such dates as hierarchies: Year > Quarter > Month > Day.
    • "time" – the field is a time (numeric data). Such fields will be formatted using HH:mm pattern. Min, Max, Count, and Distinct Count aggregations can be applied to it.
    • "datetime" – the field is a date (numeric data). Such fields will be formatted using dd/MM/yyyy HH:mm:ss pattern. Min, Max, Count, and Distinct Count aggregations can be applied to it.
    • "id" – the field is an id of the fact. Such fields are used for editing data. This field will not be shown in the Field List.
    • "hidden" – the field is hidden. This field will not be shown in the Field List.
    • "property" – the field for setting member properties. This field will not be shown in the Field List. For example, it can be used to associate a productID with a product. See the example.
  • caption – the hierarchy caption.
  • hierarchy – the hierarchy name, only necessary if the field is a level of a hierarchy ("type": "level") or if the field is a member property of a hierarchy ("type": "property").
  • level – the caption of the level, only if the field is a level of hierarchy ("type": "level").
  • parent – the caption of the parent level, only if the field is a level of hierarchy ("type": "level").
  • dimensionUniqueName – the dimension unique name. Can be used to group several fields under one dimension.
  • dimensionCaption – the dimension caption. It is used as a display name (folder name in the Field List) when several fields are grouped under one dimension.

For example, you can add the following first object in a JSON array and see how it changes the report:

<div id="pivotContainer">The component will appear here</div>
<script src="flexmonster/flexmonster.js"></script>

<script>
    var jsonData = [
        {
            "Color": {type: "string"},
            "Country":{type: "level", hierarchy: "Geography", 
					level: "Country"},
            "State": {type: "level", hierarchy: "Geography", 
					level: "State", parent: "Country"},
            "City": {type: "level", hierarchy: "Geography", 
					parent: "State"},
            "Price": {type: "number"},
            "Quantity": {type: "number"}
        },
        {
            "Color" : "green",
            "Country" : "Canada",
            "State" : "Ontario",
            "City" : "Toronto",
            "Price" : 174,
            "Quantity" : 22
        },
        {
            "Color" : "red",
            "Country" : "USA",
            "State" : "California",
            "City" : "Los Angeles",
            "Price" : 166,
            "Quantity" : 19
        }
    ];

	var pivot = new Flexmonster({
		container: "pivotContainer",
		toolbar: true,
		report: {
			dataSource: {
				data: jsonData
			},
			slice: {
				rows: [
				{ uniqueName: "Color" },
				{ uniqueName: "[Measures]" }
				],
				columns: [
				{ uniqueName: "Geography" }
				],
				measures: [
				{ uniqueName: "Price", aggregation: "sum" }
				]
			}
		},
		licenseKey: "XXXX-XXXX-XXXX-XXXX-XXXX"
	});
</script>

Try on JSFiddle.

Note: if you use a JSON array of arrays you can also add the first object. In this case you do not need to specify hierarchies in the first sub-array. Check out live example.

Undefined types in JSON

It is possible to define only necessary types of fields and leave all others empty {}. The type of these fields will be selected automatically. In the following example "Color" was left undefined:

<div id="pivotContainer">The component will appear here</div>
<script src="flexmonster/flexmonster.js"></script>

<script>
    var jsonData = [
        {
            "Color": {},
            "Price": {type: "number"}
        },
        {
            "Color" : "green",
            "Price" : 174,
            "Country" : "Canada",
            "City" : "Toronto",
            "Discount" : 12
        },
        {
            "Color" : "red",
            "Price" : 166,
            "Country" : "USA",
            "City" : "Los Angeles",
            "Discount" : 32
        }
    ];

    var pivot = new Flexmonster({
	container: "pivotContainer",
        toolbar: true,
        report: {
            dataSource: {
                data: jsonData
            }
        },
        licenseKey: "XXXX-XXXX-XXXX-XXXX-XXXX"
    });
</script>

Note that in the Field List only two fields will be available: "Color" and "Price". All other fields ("Country", "City" etc.) will be omitted because they were not mentioned in the first object of JSON array.

Supported date formats

To make date fields be interpreted as a date, you must define the data type as a date. For example, "type": "date", "type": "date string", "type": "year/month/day" or "type": "year/quarter/month/day". Additionally, data from these fields should have a special date format to be understood properly. The pivot table component supports the ISO 8601 date format, for example: "2016-03-20" (just date) or "2016-03-20T14:48:00" (date and time). Other formats aren’t officially supported and may have unexpected results.