All documentation
  • Introduction
  • Connecting to data source
  • Browser compatibility
  • Documentation for older versions
  • Migration guide from 2.8 to 2.9

    This migration guide describes breaking changes and significant new features in version 2.9. To see the full list of new features and fixes in version 2.9, visit the Release notes page.

    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.

    Updates

    This section describes how your existing code must be changed so it works with version 2.9.

    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.

    Since version 2.8, we added advanced filters for hierarchical data. Implementing these filters allows you to compose multilevel hierarchies of your data while using the custom data source API.

    See our guide on supporting multilevel hierarchies for more details.

    New features

    This section provides a list of innovations that improve Flexmonster user experience.

    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: