Need a special offer?Find out if your project fits.
+
All documentation
  • Introduction
  • Connecting to Data Source
  • Browser compatibility
  • Documentation for older versions
  • 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 the setSort() method. 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 the sortingMethod(). 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.