Get Free Trial
  1. API reference
Connecting to Data Source
Configuring the component
  • Documentation for older versions
  • Table of contents

    Custom sorting

    Flexmonster Pivot allows you to set the specific sorting order for hierarchy members in columns, rows, or report filters. By default, hierarchy members are sorted alphabetically in the component. In OLAP cubes, Flexmonster takes the order that was defined inside the cube. The following options are available to define sorting:

    1. Set alphabetical, reverse alphabetical, or an unsorted order for members.
    2. Define custom sorting using a sorting function.
    3. Define custom sorting using an array (for JSON and CSV).

    Set alphabetical, reverse alphabetical, or an unsorted order for members

    Alphabetical order is used 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 to which the sorting is applied.
    • 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.

    The sorting type can also be specified directly in the report:

    report: { 
        dataSource: { 
            filename: "https://cdn.flexmonster.com/data/data.csv" 
        }, 
        slice: { 
            rows: [ 
                { 
                    uniqueName: "Category", 
                    sort: "desc" 
                } 
            ], 
            measures: [ {uniqueName: "Price"} ] 
        } 
    } 

    Define custom sorting using a 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 the compareFunction of the Array.sort() method.

    Here is a simple example, where the new sorting function is applied to the "Category" hierarchy:

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

    Try the example on JSFiddle.

    Adding a custom sorting function is used to override the default alphabetical order. For example, you can make sure that some members are always kept at the end or at the start of the list.

    Define custom sorting using an array (for JSON and CSV)

    Custom sorting for JSON and CSV data sources can be set via the sortOrder array. This property can be specified like so: ["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:

    report: { 
        dataSource: { 
            filename: "https://cdn.flexmonster.com/data/data.csv" 
        }, 
        slice: { 
            rows: [ 
                { 
                    uniqueName: "Category" 
                } 
            ], 
            measures: [ {uniqueName: "Price"} ] 
        } 
    } 

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

    report: { 
        dataSource: { 
            filename: "https://cdn.flexmonster.com/data/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 the predefined order:

    custom sort

    The reverse alphabetical order will sort in the opposite order to the one defined in the 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.