Layer <Change, P, LayerDataTransferObject>
Implements
Index
Constructors
publicconstructor
Type parameters
- Change: LayerCompatibleChange
- P: MergableObjectProps & MergableObjectOperations<P, P>
- LayerDataTransferObject
Parameters
_api: BimApi
BimCoreApi instance
attachedTo: Change
Change this layer is attached to
layerFormat: string
Format of layer. Example: “sensors”
serialize: Serialize<LayerDataTransferObject, P, LayerInterface<P>>
Methods to transform layer objects into their DTO counterparts (data transfer object). DTO’s are what is actually is stored in the layer.
Returns Layer<Change, P, LayerDataTransferObject>
Properties
publicreadonlyattachedTo
Change this layer is attached to
publicattachments
Provides access to the layer attachments API (LayerAttachmentsApi) Use methods on it to get, add, update and delete attachments for this layer.
publicreadonlylayerFormat
Format of layer. Example: “sensors”
Accessors
publicchangeCount
Number of objects in layer not marked with state Unchanged.
Returns number
publicconflictCount
Number of objects with conflicts in the layer. A conflict occurs if there is a mismatch between the local and the remote representation of the layer. Conflicts can only occur when saveAndMerge or loadAndMerge is called.
Returns number
publicconflicts
Conflicts in the layer. A conflict occurs if there is a mismatch between the local and the remote representation of an object in the layer. Conflicts can only occur when saveAndMerge or loadAndMerge is called.
Returns Readonly<MergableObjectWithState<P>>[]
publicdefinition
The layer definition.
Returns LayerDefinition
publicid
Id of the layer
Returns string
publicisLoaded
true
if a layer exists and if saveAndMerge or loadAndMerge has been called successfully at least once.Returns boolean
publiclayer
Access to the layer instance that is currently loaded. If no layer is loaded then an exception is thrown. This is the representation of the layer that is stored in the backend. saveAndMerge or loadAndMerge will change the instance of the layer so do not store a reference to it and expect it to be valid after a call to these methods.
Returns BimChangeLayer
publicname
Get the name of the layer. Returns undefined if no layer has been loaded.
Returns undefined | string
publicobjects
Get the objects currently in the layer
Returns IterableIterator<Readonly<MergableObjectWithState<P>>>
publicpermission
Permissions user has on layer.
Returns Permissions
publicversion
Get the version of the currently loaded layer. [-1] if no layer has yet been loaded.
Returns number
Methods
publicadd
Adds an object. If an object with the same MergableObject.id already exists, no further object will be added. Requires user to have Permissions.Add on layer. permission should therefore be validated before method call to ensure that no exception is generated.
Parameters
o: P
Object to add
Returns boolean
true
if object was added, otherwisefalse
.
publicclear
Clear the layer.
Returns void
publicdelete
Deletes an object. Requires user to have Permissions.delete on layer. permission should therefore be validated before method call to ensure that no exception is generated.
Parameters
p: string | P
Returns boolean
true
if object was deleted. Otherwisefalse
publicget
Get a specific object in the layer. Both the local and the remote representation of the object are returned
Parameters
id: string
id of the object to get. Returns undefined if no such object exists.
Returns undefined | MergableObjectWithState<P>
publicloadAndMerge
Loads all existing (remote) objects from the backend and attempts to merge them into objects. This may result in conflicts between the local and the remote objects. A typical example is if the same object has been modified locally but also remotely (in the backend.)
Returns Promise<number | LayerFailure>
publicsaveAndMerge
Saves all objects in objects and retrieves any added, modified layer objects made in backend (Remote) at the same time. An attempt is then made to merge the object from the backend (Remote) into the local (browser) objects. Requires that user has Permissions.View (to add new layer) or Permissions.Edit (to edit existing layer). permission should therefore be validated before method call to ensure that no exception is generated.
Parameters
overwriteLatestVersion: boolean = false
If
true
then latest version is overwritten (if save was successful).
Returns Promise<number | LayerFailure>
Number of conflicts. If > 0 then the operation was not successful. The conflicts must be resolved before a new attempt is made. If a LayerFailure is returned then it signifies that some unexpected error occured. Inspect the contents to determine the cause.
publicthrowIfNoPermissionsAreSatisfied
Parameters
rest...requiredPermissions: Permission[]
Returns void
publicupdate
Updates an existing object. Requires user to have Permissions.Edit on layer. permission should therefore be validated before method call to ensure that no exception is generated.
Parameters
id: string
Id of object to update
updateAction: (existingItem: P) => void
function called with MergableObject instance of specified id. Caller should make any required modfifications to the object in this function.
Returns boolean
true
if object did exist, otherwisefalse
.
A layer is attached to a BimChangeBase instance. A layer can contain any type of object data structure. When objects are added, deleted or modified events on the corresponding objects are raised. Since layer objects are divided into local and remote objects. Remote objects are those that are retrieved from the backend.