Need a special offer?Find out if your project fits.
All documentation
  • Introduction
  • Connecting to data source
  • Browser compatibility
  • Documentation for older versions
  • Migration guide from 2.8 to 2.9

    Follow this tutorial for a comfortable and quick migration to the new major version.

    Before updating

    Before completing the migration guide, update Flexmonster CLI to version 2.9:

    npm install -g flexmonster-cli@~2.9.0

    Then check the CLI version by running the following command in the console:

    flexmonster -v

    Now you can update Flexmonster and proceed to the migration guide.

    This migration guide describes updates and new features presented in version 2.9. The Updates section contains a list of changes you should make to the existing code to ensure compatibility with version 2.9. The New features section lists innovations that will improve your experience with Flexmonster.


    Updates in element IDs

    Read this section if migrating from version 2.8.15 or earlier. To check Flexmonster’s version, click on the grid and press Ctrl + Alt + i (Option + Control + i on macOS). You will see the pop-up window with the component’s version.

    In version 2.8.16, a number of element IDs were changed to class names to remove duplicate IDs on the page.

    If you have custom CSS, update your CSS selectors according to the list below (e.g., change the #fm-add-btn selector to .fm-add-btn).

    Here is a full list of IDs changed to class names:

    • #fm-add-btn
    • #fm-add-group-view
    • #fm-aggr-display
    • #fm-aggregations-view
    • #fm-alert-view
    • #fm-and-label
    • #fm-branding-bar
    • #fm-btn-add-measure
    • #fm-btn-add-measure-2
    • #fm-btn-close-fields
    • #fm-btn-collapse-expand-all
    • #fm-btn-connect
    • #fm-btn-open-fields
    • #fm-build-version
    • #fm-calc-display
    • #fm-calculated-view
    • #fm-cancel-btn
    • #fm-chart
    • #fm-chart-legend
    • #fm-charts-filters-btn
    • #fm-charts-filters-container
    • #fm-charts-view
    • #fm-cols-filter
    • #fm-cols-resize
    • #fm-cols-sheet
    • #fm-conditions
    • #fm-conditions-dropdown
    • #fm-data-sheet
    • #fm-datepicker-1
    • #fm-datepicker-2
    • #fm-dates-filter-view
    • #fm-details-label
    • #fm-drag-handle"
    • #fm-drillthrough-view
    • #fm-fields-view
    • #fm-filter-label
    • #fm-filter-sort-row
    • #fm-filter-view
    • #fm-filters-col
    • #fm-font-family
    • #fm-font-size
    • #fm-formula-input
    • #fm-func-btn-group
    • #fm-grid-view
    • #fm-header-toolbar
    • #fm-icon-display
    • #fm-info-icon
    • #fm-inp-proxy-url
    • #fm-interval-dropdown
    • #fm-labels-filter-btn
    • #fm-labels-filter-view
    • #fm-landscape-radio
    • #fm-left-scroll-button
    • #fm-link
    • #fm-list-wrapper
    • #fm-lst-columns
    • #fm-lst-hierarchies
    • #fm-lst-measures
    • #fm-lst-pages
    • #fm-lst-rows
    • #fm-measures-dropdown
    • #fm-members-filter-list
    • #fm-message-label
    • #fm-moreicon-display
    • #fm-name-input
    • #fm-next-btn
    • #fm-num-input-1
    • #fm-num-input-2
    • #fm-numbers-filter-view
    • #fm-page-filter
    • #fm-periods-dropdown
    • #fm-popUp-modal-overlay
    • #fm-popup-conditional
    • #fm-popup-format-cells
    • #fm-popup-olap
    • #fm-popup-options
    • #fm-portrait-radio
    • #fm-preloader-view
    • #fm-prev-btn
    • #fm-prompt-view
    • #fm-remove-btn
    • #fm-right-scroll-button
    • #fm-rows-filter
    • #fm-rows-resize
    • #fm-rows-sheet
    • #fm-sample
    • #fm-select-counter
    • #fm-sheet-headers
    • #fm-sort-col
    • #fm-sort-label
    • #fm-spinner
    • #fm-text-display
    • #fm-time-filter-view
    • #fm-txt-input-1
    • #fm-txt-input-2
    • #fm-ui-dp-month
    • #fm-ui-dp-year
    • #fm-values
    • #fm-values-filter-view
    • #fm-version-label
    • #fm-wrap-columns
    • #fm-wrap-measures
    • #fm-wrap-pages
    • #fm-wrap-rows

    For instance, the #fm-grid-view selector in the following CSS code:

    #fm-pivot-view #fm-grid-view div.alter1 {
    background-color: #f7f7f7;

    should be changed to .fm-grid-view:

    #fm-pivot-view .fm-grid-view div.alter1 {
    background-color: #f7f7f7;

    Updates for Flexmonster Data Server

    Starting from version 2.9, Flexmonster Data Server is available as a Windows/Unix service. It ships with Flexmonster Admin Panel — a graphical user interface for the Data Server.

    The main advantages of using the Data Server as a service are:

    • It runs in the background and out of sight.
    • It starts automatically on operating system startup.
    • It’s hard for a user to quit the application inadvertently.
    • With the Admin Panel, you can manage indexes, users, and other Data Server configurations conveniently.
    • The Admin Panel allows controlling memory usage and the Data Server logs.

    Before updating Flexmonster Data Server, update Flexmonster CLI to version 2.9 or higher:

    npm install -g flexmonster-cli@~2.9.0

    Now see our documentation for details on installing the Data Server as a service and migrating your existing configurations to it.

    Previous Data Server versions are compatible with version 2.9 of Flexmonster, so you can update the Data Server later.

    Updates in the MongoDB Connector

    Version 2.9 includes the following MongoDB Connector updates:

    • Configurations. Now you can manage logging and caching in the MongoDB Connector. Refer to our documentation for details.
    • Multilevel hierarchy support. Starting from version 2.9, you can configure multilevel hierarchies in MongoDB using the mapping.
    • Improved performance. The MongoDB connector has become faster due to optimized data queries and caching the database’s responses.

    Updates in the custom data source API

    Read this section if you have a custom data source API server that supports multilevel hierarchies.

    Since version 2.8, there were two significant updates in the custom data source API, namely in version 2.8.5 and version 2.8.22. 

    To check your version of the custom data source API, see the instructions below:

    • If your server implements the /handshake request, a version sent in the response is your version of the custom data source API.
    • If your server does not implement /handshake, Flexmonster considers 2.8.5 to be your custom data source API version.

    Depending on your version of the custom data source API, follow the instructions from one of the tabs below:

    From version 2.8.5

    In version 2.8.5, we added advanced filters for hierarchical data. Implementing these filters allows you to compose multilevel hierarchies of your data.

    See our guide on supporting multilevel hierarchies in version 2.8.5 for more details.

    From version 2.8.22

    In version 2.8.22, we improved the advanced filter’s syntax to make hierarchical filters more comprehensive. Your server should implement new filters to support multilevel hierarchies in version 2.8.22. Learn more in our documentation.

    New features

    Accessibility support

    Significant accessibility improvements were introduced in version 2.9:

    • High-contrast CSS theme.
    • Keyboard navigation.
    • Accessible drag-and-drop feature.
    • Compatibility with screen readers.
    • Conformance with web accessibility standards.

    Learn more in the Accessibility section.

    Integrations: Ionic and Electron.js

    Flexmonster is now available for Ionic and Electron.js frameworks. You are welcome to try these integrations:

    Report sharing

    Flexmonster now allows sharing reports with the help of Flexmonster Data Server. 

    There are two updates in Flexmonster API to support report-sharing functionality: the shareReport method and the shareReportConnection property of the new Flexmonster() API call.

    For more details on how to share your report, see our guide.

    Async API calls

    The following asynchronous methods are now available:

    Creating several fields from one field

    With the MappingObject, it is now possible to create several fields from one field when using a JSON or CSV data source. Have a look at the example:

    dataSource: {
        mapping: {
            "Price": [
                    type: "number",
                    uniqueName: "PriceNumber",
                    caption: "Price as Number"
                    type: "string",
                    uniqueName: "PriceString",
                    caption: "Price as String"

    Learn more about this feature in the mapping guide.

    New intervals in mapping

    The following new intervals were added to the interval property in the mapping:

    • y for one year.
    • q for one quarter.
    • M for one month.
    • w for one week.

    Note that these intervals should be used without numbers. The feature is available only for "json" and "csv" data source types.

    Deprecated features

    • Starting from version 2.9, the options.liveFiltering property is deprecated and no longer receives any fixes and improvements.

    Updating from previous versions

    If migrating from the previous major versions, follow these tutorials: