Block: EntityDataStore
EntityDataStore
block for configuring a store in which a list of data entities can be saved.Overview
An EntityDataStore
block is used for configuring a data store that can contain a list of data entities that share the same properties. The properties
property defines the entity properties. This set of properties is typically referred to as the “schema” for the data store.
This block is not visible in the user interface and should therefore not be included in the areas
of the frame layout. A data entity store is often linked to an EntityTable
block that displays a table of entities.
In the entity data store, entities can be marked as being “selected”. This allows certain actions to be performed on a selected entity in the data store. For example, clicking an “Edit” button may allow the selected entity to be displayed for editing.
The entity data store also supports searching and filtering operations. The filters
property contains a dictionary of filter objects. Filters of type search
are used for configuring text-based search functionality. Filters of type equal
and contains
are used for configuring other types of filtering functionality. Entities that satisfy the filter conditions of all filters are maintained in a separate filtered list.
An entity data store can be made persistent by setting the persistToStore
property. Doing so saves the data to a database in the cloud. Any data in the data store is then be saved, even when user logs out or the browser window is closed. This allows data to be persisted across different sessions over time. For example, a solution can be configured that allows a user login and save their project settings and setup.
When persisting data, care must be taken when changing the data schema:
- If additional properties are added, then the existing entities receive a
null
value for those properties. - If existing properties are removed, then the existing entities have properties that are not part of the schema.
Example
Below is an example configuration. Example of a non-persistent entity data store.
kind: Solution
version: v0
router:
kind: Router
routes:
- frame: home-frame
frames:
home-frame:
kind: Frame
contents:
my-entity-data-store:
kind: EntityDataStore
properties:
my-prop-a:
type: Number
my-prop-b:
type: String
entities:
- my-prop-a: 123
my-prop-b: Hello
- my-prop-a: 456
my-prop-b: World
Example of a persistent entity data store.
kind: Solution
version: v0
router:
kind: Router
routes:
- frame: home-frame
frames:
home-frame:
kind: Frame
contents:
my-persistent-entity-data-store:
kind: EntityDataStore
persistToStore: my-store-name
properties:
my-prop-a:
type: Number
my-prop-b:
type: String
EntityDataStoreConfig
An object for configuring a data store for storing a list of entities. The data store can be a local data store or a persistent data store. With a local data store, entities are discarded when the browser session is ended. With a persistent data store, entities are saved in the cloud so that they can be retrieved next time the user logs in.
Name | Type | Required | Description |
---|---|---|---|
kind |
"EntityDataStore" |
Yes | A constant, EntityDataStore . |
properties |
Dictionary<string , EntityDataStorePropertyConfig> |
Yes | Define the schema of the entities. For every entry key there must be a matching property |
persistToStore |
string |
No | A string specifying the name of the cloud data store to be used for persisting the EntityDataStore. If persistToProject` is not set and a data store with this name does not exist, then a new store will be created in this project. Otherwise, the existing store will be used. |
persistToProject |
string |
No | A string specifying the name of the project to be used for persisting the EntityDataStore . This allows this solution to read and write entities to an EntityDataStore created in another project. TheEntityDataStore should already exist in the other project. The user that uses the solution should have at leastCan use permission for both projects. |
filters |
Dictionary<string , EntityDataStoreFilterConfig> |
No | A dictionary of objects for configuring filters. The filters are used to generate a filtered list of entities. Valid types of filters are search , contains , and equal . If multiple filters are defined, then the filters are combined with an ‘and’ condition. To be included in the filtered list, entities therefore need to satisfy all filter conditions. |
entities |
List<Dictionary<string, any> > | ImportedEntities |
No | Define entities as static records or load entities from a csv file. Entities should match the schema defined by properties. This option is ignored when persistToStore is defined. |
entityTypes |
Dictionary<string , EntityType> |
No | A dictionary of objects for configuring additional entity type schemas. |
subscribe |
List<EntityDataStoreSubscribe> | No | A list of objects for subscribing the EntityDataStore block to other blocks. |
ImportedEntities
Name | Type | Required | Description |
---|---|---|---|
fromCsvFile |
string |
Yes |
EntityType
An object for configuring an entity type. Entity types always represent objects. Use a Reference
property to place an entity type into another entity.
Name | Type | Required | Description |
---|---|---|---|
properties |
Dictionary<string , EntityDataStorePropertyConfig> |
Yes | A dictionary of objects for configuring the properties of the entity type. |
filters |
Dictionary<string , EntityDataStoreFilterConfig> |
No | A dictionary of objects for configuring filters of entitytypes. The filters are used to generate a filtered list of entitytype data (nested entities). Valid types are search , contain , andequal . If multiple filters are defined, then the filters are combined with an ‘and’ condition. To be included in the filtered list, entities therefore need to satisfy all filter conditions. |
EntityDataStorePropertyConfig
Entities values must have a predefined type.
- NumberSchema
- BooleanSchema
- StringSchema
- MapMarkerSchema
- ArraySchema
- GeometryObjectSchema
- UuidSchema
- AutoIdSchema
- ImageSchema
- ObjectSchema
- ReferenceSchema
NumberSchema
An object for configuring a property of type Number
in an entity data store.
Name | Type | Required | Description |
---|---|---|---|
type |
"Number" |
Yes | A constant, Number . |
nullable |
boolean |
No | A boolean specifying whether the property can have a value of null . If true, then the default value can also be set to null . |
default |
number | null |
No | A default value for the property. If a new entity is inserted into the data store, and no value is given for this property, then the default value is used. Changing the default value does not affect existing entities in the data store. |
BooleanSchema
An object for configuring a property of type Boolean
in an entity data store.
Name | Type | Required | Description |
---|---|---|---|
type |
"Boolean" |
Yes | A constant, Boolean . |
nullable |
boolean |
No | A boolean specifying whether the property can have a value of null . If true, then the default value can also be set to null . |
default |
boolean | null |
No | A default value for the property. If a new entity is inserted into the data store, and no value is given for this property, then the default value is used. Changing the default value does not affect existing entities in the data store. |
StringSchema
An object for configuring a property of type String
in an entity data store.
Name | Type | Required | Description |
---|---|---|---|
type |
"String" |
Yes | A constant, String . |
nullable |
boolean |
No | A boolean specifying whether the property can have a value of null . If true, then the default value can also be set to null . |
default |
string | null |
No | A default value for the property. If a new entity is inserted into the data store, and no value is given for this property, then the default value is used. Changing the default value does not affect existing entities in the data store. |
MapMarkerSchema
An object for configuring a property of type MapMarker
in an entity data store.
Name | Type | Required | Description |
---|---|---|---|
type |
"MapMarker" |
Yes | A constant, MapMarker . |
nullable |
boolean |
No | A boolean specifying whether the property can have a value of null . If true, then the default value can also be set to null . |
default |
null | MapMarker |
No | A default value for the property. If a new entity is inserted into the data store, and no value is given for this property, then the default value is used. Changing the default value does not affect existing entities in the data store. |
MapMarker
An object representing a MapMarker
, defining a single geospatial location on a map. When the user selects locations in the Map
block, MapMarker
objects can be retrieved. Map markers can also be stored in an EntityDataStore
.
Name | Type | Required | Description |
---|---|---|---|
id |
number |
Yes | The ID of the map marker |
longitude |
number |
Yes | The longitude of the geospatial location, in degrees. |
latitude |
number |
Yes | The latitude of the geospatial location, in degrees. |
ArraySchema
An object for configuring a property of type Array
in an entity data store. An array is a list of values that all have the same type.
Name | Type | Required | Description |
---|---|---|---|
type |
"Array" |
Yes | A constant, Array . |
items |
EntityDataStorePropertyConfig | Yes | An object for the type of values that can be stored in the array. Valid types are Number , String , MapMarker and Array . |
nullable |
boolean |
No | A boolean specifying whether the property can have a value of null . If true, then the default value can also be set to null . |
default |
null | List<any> |
No | A default value for the property. If a new entity is inserted into the data store, and no value is given for this property, then the default value is used. Changing the default value does not affect existing entities in the data store. |
GeometryObjectSchema
An object for configuring a property of type GeometryObject
in an entity data store.
Name | Type | Required | Description |
---|---|---|---|
type |
"GeometryObject" |
Yes | A constant, GeometryObject . |
nullable |
boolean |
No | A boolean specifying whether the property can have a value of null . If true, then the default value can also be set to null . |
default |
null | GeometryObject |
No | A default value for the property. If a new entity is inserted into the data store, and no value is given for this property, then the default value is used. Changing the default value does not affect existing entities in the data store. |
GeometryObject
An object representing a geometric object that can be visualized in the viewer.
Name | Type | Required | Description |
---|---|---|---|
type |
"Arrow" | "Asset" | "Box" | "Brep" | "Line" | "Mesh" | "NURBSCurve" | "NURBSSurface" | "Point3D" | "Polyline" | "Rectangle" | "Sphere" | "Sprite" | "Text3D" | "DimensionLine" | "Tag" | "Arrow2" | "DimensionAngular" |
Yes | A constant specifying the type of object. |
value |
Dictionary<string, any> |
Yes | The data representing the object. |
UuidSchema
An object for configuring a property of type Uuid
in an entity data store.
Name | Type | Required | Description |
---|---|---|---|
type |
"Uuid" |
Yes | A constant, Uuid . |
nullable |
boolean |
No | A boolean specifying whether the property can have a value of null . If true, then the default value can also be set to null . |
default |
string | null |
No | A default value for the property. If a new entity is inserted into the data store, and no value is given for this property, then the default value is used. Changing the default value does not affect existing entities in the data store. |
auto |
"onCreate" |
No | A boolean specifying whether to generate a new value automatically before inserting when the property is not defined. |
AutoIdSchema
An object for configuring a property of type AutoId
in an entity data store.
Name | Type | Required | Description |
---|---|---|---|
type |
"AutoId" |
Yes | A constant, AutoId . |
nullable |
boolean |
No | A boolean specifying whether the property can have a value of null . If true, then the default value can also be set to null . |
default |
integer | null |
No | A default value for the property. If a new entity is inserted into the data store, and no value is given for this property, then the default value is used. Changing the default value does not affect existing entities in the data store. |
ImageSchema
An object for configuring a property of type Image
in an entity data store.
Name | Type | Required | Description |
---|---|---|---|
type |
"Image" |
Yes | A constant, Image . |
nullable |
boolean |
No | A boolean specifying whether the property can have a value of null . If true, then the default value can also be set to null . |
default |
Image | null |
No | A default value for the property. If a new entity is inserted into the data store, and no value is given for this property, then the default value is used. Changing the default value does not affect existing entities in the data store. |
Image
An object representing an asset that stores the image. You can load image paths from a CSV file.
Name | Type | Required | Description |
---|---|---|---|
path |
string |
Yes | A path to the asset on the platform, this must be of an existing asset |
project |
string |
Yes | The name of the project that the asset belongs to |
isPrivate |
boolean |
Yes | A boolean specifying whether the image is a public or private asset. |
ObjectSchema
An object for configuring a property of type Object in an entity data store. Objects are simple data structures to hold data and cannot be used to select and filter.
Name | Type | Required | Description |
---|---|---|---|
type |
"Object" |
Yes | A constant, Object . |
properties |
Dictionary<string , EntityDataStorePropertyConfig> |
Yes | A dictionary of objects for configuring the properties of this object. |
default |
null | Dictionary<string, any> |
No | A default value for the property. If a new entity is inserted into the data store, and no value is given for this property, then the default value is used. Changing the default value does not affect existing entities in the data store. |
nullable |
boolean |
No | A boolean specifying whether the property can have a value of null . If true, then the default value can also be set to null . |
ReferenceSchema
An object for configuring a property of type Reference
in an entity. This property is always represented as a list of the objects matching the schema of the referenced entityType
. Reference objects can be selected and edited independently from the rest of the entity.
Name | Type | Required | Description |
---|---|---|---|
type |
"Reference" |
Yes | A constant, Reference . |
entityType |
string |
Yes | A reference to the entityType specified in the entityTypes |
default |
List<Dictionary<string, any> > |
No | A default value for the property. If a new entity is inserted into the data store, and no value is given for this property, then the default value is used. Changing the default value does not affect existing entities in the data store. |
EntityDataStoreFilterConfig
An object for configuring a filter for an entity data store. Valid types of filters are search
, contains
, and equal
.
EqualFilter
An object for configuring an equal
filter for an entity data store. Filtering values will be retrieved from other blocks and used to generate a filtered list of entities. For filters of type equal
, both the control value and the property value must be primitive types such as numbers and strings. An entity will be added to the filtered list if the control value and property value are equal.
Name | Type | Required | Description |
---|---|---|---|
type |
"equal" |
Yes | A constant, equal . |
property |
string |
Yes | A string specifying the name of a property in the entity data store. |
ContainsFilter
An object for configuring an contains
filter for an entity data store. Filtering values will be retrieved from other blocks and used to generate a filtered list of entities. For filters of type contains
, the control value must be a list of values.’ This means that the control must be a checkbox. The property value must be a primitive type such as a number or a string. An entity will be added to the filtered list if the property value is found in the control value list.
Name | Type | Required | Description |
---|---|---|---|
type |
"contains" |
Yes | A constant, contains . |
property |
string |
Yes | A string specifying the name of a property in the entity data store. |
SearchFilter
An object for configuring a search
filter for an entity data store. Filtering values will be retrieved from other blocks and used to generate a filtered list of entities. For filters of type search
, the control value and property value must both be strings. For the control, a TextInput
element is typically used. An entity will be added to the filtered list if a text search of the control value in any of the property values gives a positive result. The text search is case insensitive.
Name | Type | Required | Description |
---|---|---|---|
type |
"search" |
Yes | A constant, search . |
properties |
List<string > |
Yes | A list of strings specifying the names of properties in the entity data store. |
EntityDataStoreSubscribe
- EntityDataStoreControlPanelSubscribe
- EntityDataStoreEntityTableSubscribe
- EntityDataStoreMapSubscribe
- EntityDataStoreViewerSubscribe
- EntityDataStoreRouteSubscribe
EntityDataStoreControlPanelSubscribe
An object for configuring a subscription from a EntityDataStore
block to a ControlPanel
block. The subscription allows the entities in the entity data store to be selected and filtered based on the data in the control panel.
Name | Type | Required | Description |
---|---|---|---|
kind |
"ControlPanel" |
Yes | A constant, ControlPanel . |
frame |
string |
Yes | A string specifying the name of the frame in which the ControlPanel is located. |
source |
string |
Yes | A string specifying the name of the ControlPanel . |
action |
"Insert" | "Update" | InsertAtAction |
No | A constant specifying the action to be performed when the control panel is submitted. Valid options are Insert and Update . - Insert : A new entity is created in the entity data store. - Update : The selected entity in the entity data store is updated. |
useFiltersFromEntityType |
string |
No | A string specifying the EntityType from which the filters should be applied. The filters are configured in the EntityDataStore EntityTypes. |
filterByControls |
List<string > |
No | A list of strings specifying names. Each name must match a name of control in the control panel and a name of a filter in the entity data store. The filter and the value of the control are used to generate a filtered list of entities. For filters of type equal , an entity is added to the filtered list if the control value and property value are equal. For filters of type contains , an entity is added to the filtered list if the property value is found in the control value list. For filters of type search , an entity is added to the filtered list if a text search of the control value in any of the property values gives a positive result. |
select |
boolean |
No | A boolean, allows selecting the entity after performing the action. |
InsertAtAction
Allows inserting a new nested entity into an existing data entity.
Name | Type | Required | Description |
---|---|---|---|
type |
"InsertAt" |
Yes | A constant, InsertAt . |
at |
List<string > |
Yes | A list of strings specifying a relative path from the current selected document. |
EntityDataStoreEntityTableSubscribe
An object for configuring a subscription from a EntityDataStore
block to a EntityTable
block. The subscription allows entities in the entity data store to be selected or deleted by clicking buttons in the entity table. The columns in the entity table can also include filter controls that allow the user to filter the entities that are displayed in the table.
Name | Type | Required | Description |
---|---|---|---|
kind |
"EntityTable" |
Yes | A constant, EntityTable . |
frame |
string |
Yes | A string specifying the name of the frame in which the EntityTable is located. |
source |
string |
Yes | A string specifying the name of the EntityTable . |
selectOn |
List<string > |
No | A list of strings specifying the names of TableButton columns in the entity table. Clicking a button in a table row results in the corresponding entity in the entity data store becoming selected. Selecting an entity results in previously selected entities becoming unselected. |
useFiltersFromEntityType |
string |
No | A string specifying the EntityType from which the filters should be applied. The filters are configured in the EntityDataStore EntityTypes. |
filterByColumns |
List<string > |
No | A list of strings specifying names. Each name must match a name of a column in the entity table and a name of a filter in the entity data store. In the entity table, the column filter should be MultipleChoice . In the entity data store, the filter should be of type contains . The MultipleChoice column and the contains filter are used to generate a filtered list of entities. |
EntityDataStoreMapSubscribe
An object for configuring a subscription from an EntityDataStore
block to a Map
block. The subscription allows the entity data store to retrieve a MapMarker
object containing the longitude and latitude of the selected point in the map.
Name | Type | Required | Description |
---|---|---|---|
kind |
"Map" |
Yes | A constant, Map . |
frame |
string |
Yes | A string specifying the name of the frame in which the Map is located. |
source |
string |
Yes | A string specifying the name of the Map . |
property |
string |
Yes | A string specifying the name of the property in which to store the map markers. |
action |
"updateSelected" |
Yes | A constant specifying the type of action to perform. The only valid option is updateSelected . This stores the retrieved MapMarker s in the selected entity in the entity data store. |
EntityDataStoreViewerSubscribe
An object for configuring a subscription from an EntityDataStore
block to a Viewer
block. The subscription allows the entity data store to retrieve geometry from the viewer and store it.
Name | Type | Required | Description |
---|---|---|---|
kind |
"Viewer" |
Yes | A constant, Viewer . |
frame |
string |
Yes | A string specifying the name of the frame in which the Viewer is located. |
source |
string |
Yes | A string specifying the name of the Viewer . |
fromGroups |
List<string > |
Yes | A list of strings specifying the names of ‘groups’ in the viewer. These groups are generated when geometry is drawn in the viewer or imported from a Grasshopper model. The geometry in the specified groups will be retrieved. |
action |
"updateSelected" |
Yes | A constant specifying the type of action to perform. The only valid option is updateSelected . This stores the retrieved geometry in the selected entity in the entity data store. The entity should have properties with names that match group names specified in fromGroups . |
EntityDataStoreRouteSubscribe
An object for configuring a subscription from the Route
EntityDataStoreRouteFilterAndSelectSubscribe
An object for configuring a subscription that may filter or select entities using the Route
Name | Type | Required | Description |
---|---|---|---|
kind |
"Route" |
Yes | A constant, Route . |
urlParameters |
List<string > |
Yes | A list of strings specifying the query parameters to retrieve from the route. |
action |
"filter" | "selectMatching" |
Yes | A constant specifying the action to be performed when the route query parameters are retrieved - filter: Filters the entities using the values selected by the route. - selectMatching: Selects all entities that match all route query parameters. Note that the values must equal exactly. |
EntityDataStoreRouteInsertSubscribe
An object for configuring a subscription that may insert a new entity using the Route
Name | Type | Required | Description |
---|---|---|---|
kind |
"Route" |
Yes | A constant, Route . |
urlParameters |
List<string > |
Yes | A list of strings specifying the query parameters to retrieve from the route. |
action |
"Insert" |
Yes | A constant specifying the action to be performed when the route query parameters are retrieved. Valid options are Insert . |
select |
true | false |
No | A boolean, allows selecting the entity after performing the action. |