Despite the COVID-19 outbreak, our team continues operating at full speed. We are always here to support and answer all your questions.

Feel free to reach out by filling this quick form.

Fill the form
Get Free Trial
  1. API reference
  2. Welcome
    1. Component overview
    2. Get Flexmonster
    3. Quick start
    4. System requirements
    5. Troubleshooting
    6. Managing license keys
    7. Migrating from WebDataRocks to Flexmonster
  3. Integration with frameworks
    1. Available tutorials
    2. Integration with Angular
    3. Integration with React
    4. Integration with Vue
    5. Other integrations
      1. Integration with Python
        1. Integration with Django
        2. Integration with Jupyter Notebook
      2. Integration with React Native
      3. Integration with AngularJS (v1.x)
      4. Integration with TypeScript
      5. Integration with R Shiny
      6. Integration with jQuery
      7. Integration with Ionic
      8. Integration with Electron.js
      9. Integration with Webpack
      10. Integration with RequireJS
  4. Connecting to Data Source
    1. Supported data sources
    2. JSON
      1. Connecting to JSON
      2. Connecting to JSON using Flexmonster Data Server
      3. Data types in JSON
    3. CSV
      1. Connecting to CSV
      2. Connecting to CSV using Flexmonster Data Server
      3. Data types in CSV
    4. Database
      1. Connecting to SQL databases
      2. Connecting to a MySQL database
      3. Connecting to a Microsoft SQL Server database
      4. Connecting to a PostgreSQL database
      5. Connecting to an Oracle database
      6. Connecting to other databases
    5. Flexmonster Data Server
      1. Getting started with Flexmonster Data Server
      2. Installation guide
      3. Configurations reference
      4. Data sources guide
      5. Security and authorization guide
      6. The Data Server as a DLL
        1. Getting started with the Data Server as a DLL
        2. Referring the Data Server as a DLL
        3. Implementing the API controller
        4. Implementing the server filter
        5. Implementing the custom parser
        6. DLL configurations reference
        7. The controller's methods for request handling
    6. MongoDB
      1. Introduction to Flexmonster MongoDB Connector
      2. Getting started with the MongoDB Connector
      3. Embedding the MongoDB Connector into the server
    7. Microsoft Analysis Services
      1. Connecting to Microsoft Analysis Services
      2. Getting started with Flexmonster Accelerator
      3. Referring the Accelerator as a DLL
      4. Configuring the authentication process
      5. Configuring a secure HTTPS connection
      6. Troubleshooting
    8. Custom data source API
      1. Introduction to the custom data source API
      2. A quick overview of a sample Node.js server
      3. A quick overview of a sample .NET Core server
      4. Implement your own server
        1. Implementing the custom data source API server
        2. Implementing filters
        3. Supporting more aggregation functions
        4. Returning data for the drill-through view
    9. Elasticsearch
      1. Connecting to Elasticsearch
      2. Configuring the mapping
    10. Pentaho Mondrian
      1. Connecting to Pentaho Mondrian
      2. Getting started with the Accelerator
      3. Configuring Mondrian roles
      4. Configuring username/password protection
      5. Configuring a secure HTTPS connection
      6. Troubleshooting
  5. Security
    1. Security in Flexmonster
    2. Security aspects of connecting to an OLAP cube
      1. Ways of connecting to an OLAP cube
      2. The data transfer process
      3. Data security
      4. Data access management
  6. Configuring report
    1. What is a report
    2. Data source
    3. Slice
    4. Options
    5. Mapping
    6. Number formatting
    7. Conditional formatting
    8. Set the report for the component
    9. Get the report from the component
    10. Date and time formatting
    11. Configuring global options
    12. Export and print
    13. Calculated values
    14. Custom sorting
  7. Charts
    1. Available tutorials
    2. Flexmonster Pivot Charts
    3. Integration with Highcharts
    4. Integration with amCharts
    5. Integration with Google Charts
    6. Integration with FusionCharts
    7. Integration with any charting library
  8. Customizing
    1. Customizing the Toolbar
    2. Customizing appearance
    3. Customizing the context menu
    4. Customizing the grid
    5. Customizing the pivot charts
    6. Localizing the component
  9. Updating to the latest version
    1. Updating to the latest version
    2. Release notes
    3. Migration guide from 2.7 to 2.8
    4. Migration guide from 2.6 to 2.7
    5. Migration guide from 2.5 to 2.6
    6. Migration guide from 2.4 to 2.5
    7. Migration guide from 2.3 to 2.4
    8. Migration guide from 2.2 to 2.3
    9. Documentation for older versions
  10. Flexmonster CLI Reference
    1. Overview
    2. Troubleshooting the CLI
    3. flexmonster create
    4. flexmonster add
    5. flexmonster update
    6. flexmonster version
    7. flexmonster help
Table of contents

A quick overview of a sample .NET Core server

For a quick start in using the Flexmonster custom data source API (our custom communication protocol), we have prepared a sample .NET Core server that implements it. The sample .NET Core server allows loading data from CSV, JSON, as well as from several databases.

To start working with the sample .NET Core server, follow these guides:

Download the sample .NET Core server

To try our sample .NET Core server, download the .zip archive with the sample project or clone it from GitHub with the following command:

git clone https://github.com/flexmonster/api-data-source
cd api-data-source

The sample .NET Core server is in the server-dotnetcore/ folder.

All requests from Flexmonster Pivot Table are handled by the http://localhost:3400/api/cube endpoint. Raw data is stored in JSON and CSV formats in the data/ folder.

Available configurations

The sample .NET Core server can be configured in the appsettings.json file which contains the following properties:

  • "DataSources" – Array of objects. Configures the data sources. Each object has the following properties:
    • "Type" – String. The type of data source: "json", "csv", or "database".
    • "DatabaseType" (optional) – String. The type of the database: "mysql", "mssql", "postgresql", or "oracle". Only for the "database" data source type.
    • "ConnectionString" (optional) – String. A connection string for the database. Only for the "database" data source type.
    • "Indexes" – Object. Contains a list of datasets. Each dataset is represented by a "key": "value" pair, where "key" is the dataset name, and "value" is an object with the following properties:
      • "Path" (optional) – String. The path to the file with data. Only for "json" and "csv" data source types.
      • "Query" (optional) – String. The query to execute (e.g., "SELECT * FROM tablename"). Only for the "database" data source type.
      • "Delimiter" (optional) – String. Defines the fields separator to split each CSV row. Only for the "csv" data source type. Default value: ",".
  • "DataStorageOptions" (optional) – Object. Configures the options for data storage. It has the following parameters:
    • "DataRefreshTime" (optional) – Number. Defines how often the data is reloaded from a file or a database. The refresh time is set in minutes. If left unspecified, the data will not be reloaded.

Connect to the data source

The sample .NET Core server configurations vary depending on the data source type. See the following guides to connect the sample .NET Core server to a data source:

Connecting to JSON

The sample .NET Core server supports only a specific JSON format – an array of objects, where each object is an unordered set of "key": "value" pairs. Here is an example:

[
   {
       "Color" : "green",
       "Country" : "Canada",
       "State" : "Ontario",
       "City" : "Toronto",
       "Price" : 174,
       "Quantity" : 22
   },
   ...
]

To connect to a JSON data source with the sample .NET Core server, specify the "Type" and "Indexes" properties in the appsettings.json file. For example:

"DataSources": [
    {
        "Type": "json",
        "Indexes": {
            "index_json": {
                "Path": "./data/data.json"
            }
        }

    }
],

Note: "index_json" is a dataset identifier. It will be used to configure the data source on the client side. Additional indexes can be specified like this:

{
"Type": "json",
   "Indexes": {
    "index_json": {
        "Path": "./data/data.json"
       },
       "another_index_json": {
        "Path": "./data/another_data.json"
       }
   }
}

To start the sample .NET Core Server, refer to the Run the sample .NET Core server guide.

To see how the connection with the sample .NET Core server is configured in the component, refer to the Configure the report section.

Connecting to CSV

To connect to a CSV data source with the sample .NET Core server, specify the "Type" and "Indexes" properties in the appsettings.json file. For example:

"DataSources": [
    {
        "Type": "csv",
        "Indexes": {
            "index_csv": {
                "Path": "./data/data.csv"
            }
        }

    }
],

Note: "index_csv" is a dataset identifier. It will be used to configure the data source on the client side. Additional indexes can be specified like this:

{
"Type": "csv",
   "Indexes": {
    "index_csv": {
        "Path": "./data/data.csv"
       },
       "another_index_csv": {
        "Path": "./data/another_data.csv"
       }
   }
}

If СSV fields are not separated by "," but by another character, the "Delimiter" parameter should be specified:

"index_csv": {
"Path": "./data/data.csv",
  "Delimiter": ";"
}

To start the sample .NET Core Server, refer to the Run the sample .NET Core server guide.

To see how the connection with the sample .NET Core server is configured in the component, refer to the Configure the report section.

Connecting to databases

The sample .NET Core server supports MySQL, Microsoft SQL Server, PostgreSQL, Oracle, and Microsoft Azure SQL databases.

To connect to a database with the sample .NET Core server, specify the "Type", "DatabaseType", "ConnectionString", and "Indexes" properties in the appsettings.json file. For example:

{
    "DataSources": [
        {
            "Type": "database",
            "DatabaseType": "mysql"
            "ConnectionString": "server=localhost;port=3306;user=root;password=password;database=database_name",
            "Indexes": {
                "index_database": {
                    "Query": "SELECT * FROM tablename"
                }
            }
        }
    ]
}

Note: "index_database" is a dataset identifier. It will be used to configure the data source on the client side.

"ConnectionString" is a connection string for the database. Here are some example connection strings for each supported database type:

  • MySQL: "Server=localhost;Port=3306;Uid=;Pwd=;Database= "
  • Microsoft SQL Server: "Server=(localdb)\\MSSQLLocalDB;Uid=;Pwd=;Database= "
  • PostgreSQL: "Server=localhost;Port=5432;Uid=;Pwd=;Database= "
  • Oracle: "Data Source=ORCL;User Id=;Password=;"
  • Microsoft Azure SQL: Server=tcp:myserver.database.windows.net,1433;Database= ;User ID=;Password=;Trusted_Connection=False;Encrypt=True; (to connect to Microsoft Azure SQL, set the "DatabaseType" to "mssql")

To start the sample .NET Core Server, refer to the Run the sample .NET Core server guide.

To see how the connection with the sample .NET Core server is configured in the component, refer to the Configure the report section.

Run the sample .NET Core server

To start the server, run the following commands in a console:

cd server-dotnetcore
dotnet restore
dotnet run

As soon as you start the sample .NET Core server, it automatically preloads the data specified in the "Indexes" property. Thus, when Flexmonster Pivot requests the data, the server responds with the already preloaded data.

Note that the preloaded data is kept in the server’s RAM, so the number of indexes you can specify is limited by the amount of RAM available to the server.

Configure the report

On the client side, the report should be configured as follows:

new Flexmonster({
   container: "pivotContainer",
   report: {
  dataSource: {
      type: "api",
       url: "http://localhost:3400/api/cube",
       index: "index-json"
       }
}
});

Note 1: index must match the name of the index defined when configuring the data source (e.g., "index_json").

Note 2: When Flexmonster requests the data, the sample .NET Core server sends a response and then caches it. If the component sends the same request once again, the server responds with the data from its cache. The cache is fully cleared only when the server is restarted, although it has a memory limit: when the limit is reached, and a new response can’t be cached, the .NET Core server deletes one of the previously cached responses from the cache.

What’s next?

You may be interested in the following articles: