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. Accelerator security
      6. Configuring authentication process
      7. Configuring secure HTTPS connection
      8. 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. 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
  5. 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
  6. Integration with charts
    1. Integration with Highcharts
    2. Integration with Google Charts
    3. Integration with FusionCharts
    4. Integration with any charting library
  7. Customizing
    1. Customizing toolbar
    2. Customizing appearance
    3. Customizing context menu
    4. Localizing component
  8. 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

Custom sorting

Flexmonster Pivot allows defining a specific order for displaying hierarchy members in columns, rows or report filters. By default, hierarchy members are sorted alphabetically in our component. In case of OLAP cubes, Flexmonster takes the order which was defined inside the cube. The following options are available to define sorting:

  1. define alphabetical, reverse alphabetical order or display members unsorted
  2. define custom sorting via sorting function
  3. define custom sorting via array (for JSON, CSV and OCSV)

Define alphabetical, reverse alphabetical order or display members unsorted

Alphabetical order is specified by default. To set reverse alphabetical order or display members unsorted, use setSort. This API call has the following parameters:

  • hierarchyName – String. The name of the hierarchy.
  • sortType – String. The following sorting types can be applied: "asc", "desc", or "unsorted".

Here is a simple example:

flexmonster.setSort("Category", "desc");

Try the example on JSFiddle.

Also, sorting type can be specified directly in the report:

{
    "dataSource": {
        "filename": "http://www.flexmonster.com/download/data.csv"
    },
    "slice": {
        "rows": [
            {
                "uniqueName": "Category",
                "sort": "desc"
            }
        ],
        "measures": [ {"uniqueName": "Price"} ]
    }
}

Define custom sorting via sorting function

The sort order can be set via sortingMethod. This API call has the following parameters:

  • hierarchyName – String. The unique name of the hierarchy to which the sorting is applied.
  • compareFunction – Function. Defines the sort order. The input parameters are the same as for compareFunction of Array.sort() method.

Check out a simple example, where new sorting function is applied to "Category" hierarchy:

flexmonster.sortingMethod("Category", function (a, b) {
    return a < b ? 1 : -1;
});

Try the example on JSFiddle.

Adding custom sorting function is convenient for overriding the alphabetical order. For example, to make some members be always kept at the end or at the start of the list.

Define custom sorting via array (for JSON, CSV and OCSV)

Custom sorting for JSON, CSV and OCSV data sources can be set via sortOrder array. This property can be specified the following way: ["member_1", "member_2", etc.].

We will analyze a simple example to understand how it works. There is a report with one hierarchy defined as a row:

{
    "dataSource": {
        "filename": "http://www.flexmonster.com/download/data.csv"
    },
    "slice": {
        "rows": [
            {
                "uniqueName": "Category"
            }
        ],
        "measures": [ {"uniqueName": "Price"} ]
    }
}

This hierarchy has the following members: “Accessories”, “Bikes”, “Clothing”, “Components”, “Cars”. To define custom sorting we add sortOrder property:

{
    "dataSource": {
        "filename": "http://www.flexmonster.com/download/data.csv"
    },
    "slice": {
        "rows": [
            {
                "uniqueName": "Category",
                "sortOrder": ["Bikes", "Cars", "Clothing", 
                    "Accessories", "Components"]
            }
        ],
        "measures": [ {"uniqueName": "Price"} ]
    }
}

Open the example on JSFiddle.

Now hierarchy members will be displayed in predefined order:

custom sort

The reverse alphabetical order will sort opposite to the order defined in sortOrder property:

customsort-za

If you remove both alphabetical and reverse alphabetical sorting, hierarchy members will be displayed in the same order they came from the data source:

customsort-no-order

Custom sorting is an easy way to predefine your own order for columns, rows or report filters in the slice.