@itwin/core-common
Version:
iTwin.js components common to frontend and backend
283 lines • 13.3 kB
TypeScript
/** @packageDocumentation
* @module Codes
*/
import { GuidString, Id64String } from "@itwin/core-bentley";
import { IModel } from "./IModel";
/**
* The ElementId of the element that defines the scope for a Code value.
* @note For insert or update, you may supply the FederationGuid of the scope element and it will be converted to the ElementId of that element.
* @public
* @extensions
*/
export type CodeScopeProps = Id64String | GuidString;
/** The parameters that define a Code
* @public
* @extensions
*/
export interface CodeProps {
/** Either the stringified 64-bit Id of the CodeSpec for this code, or the name of the CodeSpec. */
spec: Id64String | string;
/** Either the ElementId or the FederationGuid of the element that provides the scope for this code. */
scope: CodeScopeProps;
/** the value of this code. May be undefined. */
value?: string;
}
/**
* A three-part structure containing information about the [Code]($docs/bis/guide/fundamentals/codes) of an Element
* @public
*/
export declare class Code implements CodeProps {
/** The id of the [CodeSpec]($docs/bis/guide/fundamentals/codes.md#codespec) of the Element */
spec: Id64String;
/** The [CodeScope]($docs/bis/guide/fundamentals/codes.md#codescope-property) of the Element */
scope: Id64String;
/** The [CodeValue]($docs/bis/guide/fundamentals/codes.md#codevalue-property) of the Element
* @note Leading and trailing whitespace is invalid so is automatically trimmed.
*/
get value(): string;
set value(val: string);
private _value?;
constructor(codeProps: CodeProps);
/** Create an empty, non-unique code with no special meaning. */
static createEmpty(): Code;
static fromJSON(json?: any): Code;
toJSON(): CodeProps;
equals(other: Code): boolean;
/** @internal */
static equalCodes(c1: CodeProps, c2: CodeProps): boolean;
/** Determine whether this Code is valid. */
static isValid(c: CodeProps): boolean;
/** Determine if this code is valid but not otherwise meaningful (and therefore not necessarily unique) */
static isEmpty(c: CodeProps): boolean;
toString(): string;
}
/** Names of the internal BIS CodeSpecs. These names match those specified by the native library.
* For other domains, the best practice is to include the domain name or alias as part of the CodeSpec name to ensure global uniqueness.
* @public
* @extensions
* @see [CodeSpec]($docs/bis/guide/fundamentals/codes.md#codespec)
*/
export declare enum BisCodeSpec {
/** The name of the standard [[CodeSpec]] used when creating *empty* codes.
* @see [[Code.createEmpty]]
*/
nullCodeSpec = "bis:NullCodeSpec",
/** @internal */
annotationFrameStyle = "bis:AnnotationFrameStyle",
/** @internal */
annotationLeaderStyle = "bis:AnnotationLeaderStyle",
/** @internal */
annotationTextStyle = "bis:AnnotationTextStyle",
/** The name of the standard [[CodeSpec]] used when creating codes for [AuxCoordSystem2d]($backend) elements.
* @see [AuxCoordSystem2d.createCode]($backend)
*/
auxCoordSystem2d = "bis:AuxCoordSystem2d",
/** The name of the standard [[CodeSpec]] used when creating codes for [AuxCoordSystem3d]($backend) elements.
* @see [AuxCoordSystem3d.createCode]($backend)
*/
auxCoordSystem3d = "bis:AuxCoordSystem3d",
/** The name of the standard [[CodeSpec]] used when creating codes for [AuxCoordSystemSpatial]($backend) elements.
* @see [AuxCoordSystemSpatial.createCode]($backend)
*/
auxCoordSystemSpatial = "bis:AuxCoordSystemSpatial",
/** The name of the standard [[CodeSpec]] used when creating codes for [CategorySelector]($backend) elements.
* @see [CategorySelector.createCode]($backend)
*/
categorySelector = "bis:CategorySelector",
/** @internal */
colorBook = "bis:ColorBook",
/** The name of the standard [[CodeSpec]] used when creating codes for [DisplayStyle]($backend) elements.
* @see [DisplayStyle.createCode]($backend)
*/
displayStyle = "bis:DisplayStyle",
/** The name of the standard [[CodeSpec]] used when creating codes for [Drawing]($backend) elements.
* @see [Drawing.createCode]($backend)
*/
drawing = "bis:Drawing",
/** The name of the standard [[CodeSpec]] used when creating codes for [DrawingCategory]($backend) elements.
* @see [DrawingCategory.createCode]($backend)
*/
drawingCategory = "bis:DrawingCategory",
/** The name of the standard [[CodeSpec]] used when creating codes for [ExternalSource]($backend) elements.
* @note This CodeSpec is not automatically created, so use [ExternalSource.ensureCodeSpec]($backend) to make sure that it exists.
* @see [ExternalSource.createCode]($backend)
*/
externalSource = "bis:ExternalSource",
/** The name of the standard [[CodeSpec]] used when creating codes for [ExternalSourceAttachment]($backend) elements.
* @note This CodeSpec is not automatically created, so use [ExternalSourceAttachment.ensureCodeSpec]($backend) to make sure that it exists.
* @see [ExternalSource.createCode]($backend)
*/
externalSourceAttachment = "bis:ExternalSourceAttachment",
/** The name of the standard [[CodeSpec]] used when creating codes for [GeometryPart]($backend) elements.
* @see [GeometryPart.createCode]($backend)
*/
geometryPart = "bis:GeometryPart",
/** The name of the standard [[CodeSpec]] used when creating codes for [GraphicalType2d]($backend) elements.
* @see [GraphicalType2d.createCode]($backend)
*/
graphicalType2d = "bis:GraphicalType2d",
/** The name of the standard [[CodeSpec]] used when creating codes for [LineStyle]($backend) elements.
* @see [LineStyle.createCode]($backend)
*/
lineStyle = "bis:LineStyle",
/** The name of the standard [[CodeSpec]] used when creating codes for [LinkElement]($backend) elements.
* @see [LinkElement.createCode]($backend)
*/
linkElement = "bis:LinkElement",
/** The name of the standard [[CodeSpec]] used when creating codes for [ModelSelector]($backend) elements.
* @see [ModelSelector.createCode]($backend)
*/
modelSelector = "bis:ModelSelector",
/** The name of the standard [[CodeSpec]] used when creating codes for [PhysicalMaterial]($backend) elements.
* @see [PhysicalMaterial.createCode]($backend)
*/
physicalMaterial = "bis:PhysicalMaterial",
/** The name of the standard [[CodeSpec]] used when creating codes for [PhysicalType]($backend) elements.
* @see [PhysicalType.createCode]($backend)
*/
physicalType = "bis:PhysicalType",
/** The name of the standard [[CodeSpec]] used when creating codes for [InformationPartitionElement]($backend) elements.
* @see [InformationPartitionElement.createCode]($backend)
*/
informationPartitionElement = "bis:InformationPartitionElement",
/** The name of the standard [[CodeSpec]] used when creating codes for [RenderMaterialElement]($backend) elements.
* @see [RenderMaterialElement.createCode]($backend)
*/
renderMaterial = "bis:RenderMaterial",
/** The name of the standard [[CodeSpec]] used when creating codes for [Sheet]($backend) elements.
* @see [Sheet.createCode]($backend)
*/
sheet = "bis:Sheet",
/** The name of the standard [[CodeSpec]] used when creating codes for [SheetIndex]($backend) elements.
* @see [SheetIndex.createCode]($backend)
*/
sheetIndex = "bis:SheetIndex",
/** The name of the standard [[CodeSpec]] used when creating codes for [SheetIndexEntry]($backend) elements.
* @see [SheetIndexEntry.createCode]($backend)
*/
sheetIndexEntry = "bis:SheetIndexEntry",
/** The name of the standard [[CodeSpec]] used when creating codes for [SpatialCategory]($backend) elements.
* @see [SpatialCategory.createCode]($backend)
*/
spatialCategory = "bis:SpatialCategory",
/** The name of the standard [[CodeSpec]] used when creating codes for [SpatialLocationType]($backend) elements.
* @see [SpatialLocationType.createCode]($backend)
*/
spatialLocationType = "bis:SpatialLocationType",
/** The name of the standard [[CodeSpec]] used when creating codes for [SubCategory]($backend) elements.
* @see [SubCategory.createCode]($backend)
*/
subCategory = "bis:SubCategory",
/** The name of the standard [[CodeSpec]] used when creating codes for [Subject]($backend) elements.
* @see [Subject.createCode]($backend)
*/
subject = "bis:Subject",
/** The name of the standard [[CodeSpec]] used when creating codes for [TemplateRecipe2d]($backend) elements.
* @see [TemplateRecipe2d.createCode]($backend)
*/
templateRecipe2d = "bis:TemplateRecipe2d",
/** The name of the standard [[CodeSpec]] used when creating codes for [TemplateRecipe3d]($backend) elements.
* @see [TemplateRecipe3d.createCode]($backend)
*/
templateRecipe3d = "bis:TemplateRecipe3d",
/** @internal */
textAnnotationSeed = "bis:TextAnnotationSeed",
/** The name of the standard [[CodeSpec]] used when creating codes for [Texture]($backend) elements.
* @see [Texture.createCode]($backend)
*/
texture = "bis:Texture",
/** The name of the standard [[CodeSpec]] used when creating codes for [ViewDefinition]($backend) elements.
* @see [ViewDefinition.createCode]($backend)
*/
viewDefinition = "bis:ViewDefinition"
}
/** The scope of the Code.
* @public
*/
export declare namespace CodeScopeSpec {
/** The standard ways the CodeScope can be specified.
* @public
*/
enum Type {
/** The Code value must be unique within (at least) the iModel repository */
Repository = 1,
/** The Code value must be unique within the scope of the Model */
Model = 2,
/** The Code value must be unique among other children of the same parent element */
ParentElement = 3,
/** The Code value must be unique among other elements also scoped by the same element */
RelatedElement = 4
}
/**
* Requirements for how the CodeScope Element is identified.
* @public
*/
enum ScopeRequirement {
/** The ElementId of CodeScope element identifies its scope. Used for Codes that are unique only within a single iModel. */
ElementId = 1,
/** The FederationGuid of the CodeScope element identifies its scope. Used for Codes that are globally unique. */
FederationGuid = 2
}
}
/**
* The JSON properties of a CodeSpec
* @public
*/
export interface CodeSpecProperties {
scopeSpec: {
/** the type of CodeSpec */
type: CodeScopeSpec.Type;
/** If true, the federationGuid of the scope element identifies the scope, for Codes that are globally unique.
* Otherwise, the ElementId of the scopeElement is used, for Codes that are scoped only within a single iModel.
*/
fGuidRequired?: boolean;
/** The relationship className (in the form "schema:class"), when `type` is `CodeScopeSpec.Type.RelatedElement` */
relationship?: string;
};
spec?: {
isManagedWithDgnDb?: boolean;
};
version?: string;
}
/** A [Code Specification]($docs/bis/guide/references/glossary#codespec) captures the rules for encoding and decoding significant business information into
* and from a Code (string). This specification is used to generate and validate Codes.
*
* A CodeSpec defines the format of a Code for a certain type of Element in an IModel.
* A CodeSpec can identify an external system that maintains and/or assigns Codes.
* @public
*/
export declare class CodeSpec {
/** The iModel holding this CodeSpec. */
iModel: IModel;
/** The id of this CodeSpec. */
id: Id64String;
/** The name of this CodeSpec. */
name: string;
/** The JSON properties for this CodeSpec.
* @note Use the getters and setters instead of accessing this directly.
* @internal
*/
properties: CodeSpecProperties;
private constructor();
/** Create a new CodeSpec from the specified parameters
* > Note: CodeSpec.id will not be valid until inserted
* @see [CodeSpecs.insert]($backend)
*/
static create(iModel: IModel, name: string, scopeType: CodeScopeSpec.Type, scopeReq?: CodeScopeSpec.ScopeRequirement): CodeSpec;
/** Create a new CodeSpec directly from JSON. Used internally by the CodeSpecs.load function.
* @internal
*/
static createFromJson(iModel: IModel, id: Id64String, name: string, properties?: CodeSpecProperties): CodeSpec;
/** Will be true if the id of this CodeSpec is valid. */
get isValid(): boolean;
get isExternal(): boolean;
/** The scope type of this CodeSpec. */
get scopeType(): CodeScopeSpec.Type;
set scopeType(scopeType: CodeScopeSpec.Type);
/** Will be `CodeScopeSpec.ScopeRequirement.FederationGuid` if the scoping element is required to have a FederationGuid or
* CodeScopeSpec.ScopeRequirement.ElementId` otherwise (the default).
*/
get scopeReq(): CodeScopeSpec.ScopeRequirement;
set scopeReq(req: CodeScopeSpec.ScopeRequirement);
}
//# sourceMappingURL=Code.d.ts.map