For the complete documentation index, see llms.txt. This page is also available as Markdown.

Datasources

Datasources are sets of data used in Jigx solutions and are used to reference data from the various Data Providers. When data required by a solution resides in a different solution, cross-solution datasource access allows you to reference and query that external solution's data directly.

Types

There are three types of datasources available in Jigx Builder.

  1. SQLite- Using the SQLite datasource provides the ability to write SQL queries to get data from Dynamic Data and local data providers. For code examples and snippets, see sqlite.

  2. Static - Static lists are typically used when data needs to be accessed but hardly ever changed. Static Data is helpful because it can be created quickly inside the jig, and there is no need to specify any database connections or set up tables. The amount of records that can be created in Static data is unlimited. Static data is commonly used to bind data to the UI components. For code examples and snippets, see Static.

  3. System - The system datasource is used to get a list of icons for jig components. For code examples and snippets, see system.

Configuration options

Property
Description
Code Examples

isDocument

When the isDocument property is set to true on a datasource, the datasource will return as a single record (object) to be displayed on a component instead of an array. The first matching row becomes the datasource without wrapping the array. If there is no match it is NULL. If you want to set the initialValues for a form, set it on the form level and in the datasource isDocument: true, this way you don't have to set it up in the individual components. It is set up in one place and form will match the components to the column names of the datasource.

new-contact.jigx

jsonProperties

Working with complex objects can be tricky, as they include arrays, nested objects, and other complex data structures. When integrating and manipulating these JSON structures you can use jsonProperties to specify the exact property in the array or nested object that you require. See Working with complex REST structures.

isDocument example

datasources:
  contactData:
    type: datasource.sqlite
    options:
      # The isDocument property for the datasource is set to true.
      # As a result, the datasource will return as a single record to be displayed,
      # instead of an array of records.
      isDocument: true
      provider: DATA_PROVIDER_DYNAMIC
      entities:
        - default/contacts
      query: |
        SELECT 
          id,
          '$.firstName',
          '$.lastName',
          '$.jobTitle',
          '$.companyName',
          '$.phone',
          '$.email' 
        FROM 
          [default/contacts]
        WHERE
          id = @contactId
      queryParameters:
        contactId: =@ctx.jig.inputs.contact.id

jsonProperties example

Where and how to use datasources

In a Global file

Datasources are defined once and are available throughout your solution to be reused in multiple jigs. Adding a global datasource improves performance as the data is retrieved once rather than multiple times.

Global datasource
Global datasource
  1. Open your solution in Jigx Builder and navigate to the datasources folder of your solution.

  2. Create a new file called <your_datasource_name>.jigx.

  3. Invoke IntelliSense (ctrl+space) for the list of available datasources.

  4. Select the datasource you want to use and configure the properties with values. When choosing Dynamic Data or SQL data, you can write SQL queries to return the data you want to use in the solution.

  5. Next, open the jigs where you want to use the data, use expressions with the datasource option to reference the global datasource file, for example, =@ctx.datasources.employee.

Global Datasource Inputs

This feature extends the global datasource system to support input passing, allowing a single global datasource to be instantiated multiple times within a jig with different input values per instance. This mirrors the existing input pattern available in custom components. Each reference to a global datasource can supply its own inputs block, creating an isolated local instance of that datasource scoped to the values provided.

  • If you have required parameters you have to use datasource to be able to validate that they exist. If you do not have required parameters you can choose to not use input definitions (within the datasource) and just use normal inputs.

How It Works

When a Jig references a global datasource, the runtime now:

  1. Detects that the datasource reference points to a global configuration.

  2. Retrieves the global datasource configuration.

  3. Wraps it in an InputContext containing the supplied inputs.

  4. Creates a local datasource instance the same mechanism used when providing a full inline configuration.

This means two references to the same global datasource with different inputs are completely independent instances at runtime.

Configuration

Define the global datasource under the datasources folder. Configure the following properties:

Field
Description

datasourceId

The ID of the global datasource file to reference. This is referenced in multiple jigs using datasource.reference.

inputs

Key-value pairs passed into the global datasource. Values can be static or dynamic expressions.

Inside the global datasource file, inputs are accessed using the standard ctx.inputs context, the same pattern used in custom components.

In the jigs' referencing the global datasource use the datasource.reference with the datasourceId.

Naming: datasourceId vs instanceId

The codebase distinguishes more clearly between two related but different concepts:

Term
Meaning

datasourceId

The identifier of the datasource file (analogous to JigId or ComponentId). Used to locate or reference the global configuration on disk.

instanceId

The identifier of a specific instantiation of a datasource within a Jig.

Local within a jig

The data sets are defined in the datasources inside the individual jig generally under the datasources: property. Use datasources locally if you only need the data in that specific jig.

Local datasource
Local datasource
  1. Open your solution in Jigx Builder and navigate to the jig.

  2. Under the datasources: property, replaces the mydata: property with a unique name for the data set.

  3. Invoke IntelliSense (ctrl+space) next to the mydata: property for the list of available datasources.

  4. Select the datasource you want to use and configure the properties with values. When choosing Dynamic Data or SQL data, you can write SQL queries to return the data you want to use in the jig. Tip: only return the specific data you need in the datasource.

  5. The data is now available to use in that jig by using expressions with the datasource option to reference the local datasource using the unique name you gave it, for example, =@ctx.datasources.contact.

See Also

Last updated

Was this helpful?