@itwin/ecschema-metadata 5.0.0-dev.98 → 5.1.0-dev.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -1
- package/lib/cjs/Constants.js.map +1 -1
- package/lib/cjs/Context.d.ts +3 -3
- package/lib/cjs/Context.d.ts.map +1 -1
- package/lib/cjs/Context.js +6 -6
- package/lib/cjs/Context.js.map +1 -1
- package/lib/cjs/DelayedPromise.d.ts +9 -8
- package/lib/cjs/DelayedPromise.d.ts.map +1 -1
- package/lib/cjs/DelayedPromise.js +2 -2
- package/lib/cjs/DelayedPromise.js.map +1 -1
- package/lib/cjs/Deserialization/AbstractParser.js.map +1 -1
- package/lib/cjs/Deserialization/Helper.d.ts.map +1 -1
- package/lib/cjs/Deserialization/Helper.js +27 -26
- package/lib/cjs/Deserialization/Helper.js.map +1 -1
- package/lib/cjs/Deserialization/JsonParser.js +150 -150
- package/lib/cjs/Deserialization/JsonParser.js.map +1 -1
- package/lib/cjs/Deserialization/JsonProps.d.ts +34 -34
- package/lib/cjs/Deserialization/JsonProps.d.ts.map +1 -1
- package/lib/cjs/Deserialization/JsonProps.js +3 -3
- package/lib/cjs/Deserialization/JsonProps.js.map +1 -1
- package/lib/cjs/Deserialization/SchemaGraphUtil.js.map +1 -1
- package/lib/cjs/Deserialization/XmlParser.js +49 -49
- package/lib/cjs/Deserialization/XmlParser.js.map +1 -1
- package/lib/cjs/Deserialization/XmlSerializationUtils.d.ts +0 -5
- package/lib/cjs/Deserialization/XmlSerializationUtils.d.ts.map +1 -1
- package/lib/cjs/Deserialization/XmlSerializationUtils.js +6 -11
- package/lib/cjs/Deserialization/XmlSerializationUtils.js.map +1 -1
- package/lib/cjs/ECName.d.ts +2 -2
- package/lib/cjs/ECName.js +4 -4
- package/lib/cjs/ECName.js.map +1 -1
- package/lib/cjs/ECObjects.d.ts +23 -11
- package/lib/cjs/ECObjects.d.ts.map +1 -1
- package/lib/cjs/ECObjects.js +47 -24
- package/lib/cjs/ECObjects.js.map +1 -1
- package/lib/cjs/Exception.d.ts +4 -4
- package/lib/cjs/Exception.d.ts.map +1 -1
- package/lib/cjs/Exception.js +60 -60
- package/lib/cjs/Exception.js.map +1 -1
- package/lib/cjs/Interfaces.d.ts +30 -34
- package/lib/cjs/Interfaces.d.ts.map +1 -1
- package/lib/cjs/Interfaces.js.map +1 -1
- package/lib/cjs/Metadata/Class.d.ts +107 -19
- package/lib/cjs/Metadata/Class.d.ts.map +1 -1
- package/lib/cjs/Metadata/Class.js +127 -47
- package/lib/cjs/Metadata/Class.js.map +1 -1
- package/lib/cjs/Metadata/Constant.d.ts +12 -9
- package/lib/cjs/Metadata/Constant.d.ts.map +1 -1
- package/lib/cjs/Metadata/Constant.js +12 -9
- package/lib/cjs/Metadata/Constant.js.map +1 -1
- package/lib/cjs/Metadata/CustomAttribute.d.ts +2 -2
- package/lib/cjs/Metadata/CustomAttribute.d.ts.map +1 -1
- package/lib/cjs/Metadata/CustomAttribute.js.map +1 -1
- package/lib/cjs/Metadata/CustomAttributeClass.d.ts +5 -3
- package/lib/cjs/Metadata/CustomAttributeClass.d.ts.map +1 -1
- package/lib/cjs/Metadata/CustomAttributeClass.js +7 -5
- package/lib/cjs/Metadata/CustomAttributeClass.js.map +1 -1
- package/lib/cjs/Metadata/EntityClass.d.ts +20 -3
- package/lib/cjs/Metadata/EntityClass.d.ts.map +1 -1
- package/lib/cjs/Metadata/EntityClass.js +32 -14
- package/lib/cjs/Metadata/EntityClass.js.map +1 -1
- package/lib/cjs/Metadata/Enumeration.d.ts +16 -9
- package/lib/cjs/Metadata/Enumeration.d.ts.map +1 -1
- package/lib/cjs/Metadata/Enumeration.js +20 -13
- package/lib/cjs/Metadata/Enumeration.js.map +1 -1
- package/lib/cjs/Metadata/Format.d.ts +32 -24
- package/lib/cjs/Metadata/Format.d.ts.map +1 -1
- package/lib/cjs/Metadata/Format.js +47 -27
- package/lib/cjs/Metadata/Format.js.map +1 -1
- package/lib/cjs/Metadata/InvertedUnit.d.ts +11 -7
- package/lib/cjs/Metadata/InvertedUnit.d.ts.map +1 -1
- package/lib/cjs/Metadata/InvertedUnit.js +16 -10
- package/lib/cjs/Metadata/InvertedUnit.js.map +1 -1
- package/lib/cjs/Metadata/KindOfQuantity.d.ts +24 -15
- package/lib/cjs/Metadata/KindOfQuantity.d.ts.map +1 -1
- package/lib/cjs/Metadata/KindOfQuantity.js +54 -29
- package/lib/cjs/Metadata/KindOfQuantity.js.map +1 -1
- package/lib/cjs/Metadata/Mixin.d.ts +16 -3
- package/lib/cjs/Metadata/Mixin.d.ts.map +1 -1
- package/lib/cjs/Metadata/Mixin.js +20 -7
- package/lib/cjs/Metadata/Mixin.js.map +1 -1
- package/lib/cjs/Metadata/OverrideFormat.d.ts +12 -12
- package/lib/cjs/Metadata/OverrideFormat.d.ts.map +1 -1
- package/lib/cjs/Metadata/OverrideFormat.js +27 -19
- package/lib/cjs/Metadata/OverrideFormat.js.map +1 -1
- package/lib/cjs/Metadata/Phenomenon.d.ts +10 -2
- package/lib/cjs/Metadata/Phenomenon.d.ts.map +1 -1
- package/lib/cjs/Metadata/Phenomenon.js +11 -3
- package/lib/cjs/Metadata/Phenomenon.js.map +1 -1
- package/lib/cjs/Metadata/Property.d.ts +46 -28
- package/lib/cjs/Metadata/Property.d.ts.map +1 -1
- package/lib/cjs/Metadata/Property.js +46 -22
- package/lib/cjs/Metadata/Property.js.map +1 -1
- package/lib/cjs/Metadata/PropertyCategory.d.ts +6 -3
- package/lib/cjs/Metadata/PropertyCategory.d.ts.map +1 -1
- package/lib/cjs/Metadata/PropertyCategory.js +12 -5
- package/lib/cjs/Metadata/PropertyCategory.js.map +1 -1
- package/lib/cjs/Metadata/RelationshipClass.d.ts +48 -25
- package/lib/cjs/Metadata/RelationshipClass.d.ts.map +1 -1
- package/lib/cjs/Metadata/RelationshipClass.js +54 -34
- package/lib/cjs/Metadata/RelationshipClass.js.map +1 -1
- package/lib/cjs/Metadata/Schema.d.ts +50 -28
- package/lib/cjs/Metadata/Schema.d.ts.map +1 -1
- package/lib/cjs/Metadata/Schema.js +64 -42
- package/lib/cjs/Metadata/Schema.js.map +1 -1
- package/lib/cjs/Metadata/SchemaItem.d.ts +10 -19
- package/lib/cjs/Metadata/SchemaItem.d.ts.map +1 -1
- package/lib/cjs/Metadata/SchemaItem.js +12 -20
- package/lib/cjs/Metadata/SchemaItem.js.map +1 -1
- package/lib/cjs/Metadata/Unit.d.ts +17 -21
- package/lib/cjs/Metadata/Unit.d.ts.map +1 -1
- package/lib/cjs/Metadata/Unit.js +20 -22
- package/lib/cjs/Metadata/Unit.js.map +1 -1
- package/lib/cjs/Metadata/UnitSystem.d.ts +3 -1
- package/lib/cjs/Metadata/UnitSystem.d.ts.map +1 -1
- package/lib/cjs/Metadata/UnitSystem.js +4 -2
- package/lib/cjs/Metadata/UnitSystem.js.map +1 -1
- package/lib/cjs/PropertyTypes.d.ts +11 -11
- package/lib/cjs/PropertyTypes.d.ts.map +1 -1
- package/lib/cjs/PropertyTypes.js +28 -20
- package/lib/cjs/PropertyTypes.js.map +1 -1
- package/lib/cjs/SchemaFormatsProvider.d.ts +39 -0
- package/lib/cjs/SchemaFormatsProvider.d.ts.map +1 -0
- package/lib/cjs/SchemaFormatsProvider.js +146 -0
- package/lib/cjs/SchemaFormatsProvider.js.map +1 -0
- package/lib/cjs/SchemaJsonLocater.d.ts +5 -5
- package/lib/cjs/SchemaJsonLocater.js +4 -4
- package/lib/cjs/SchemaJsonLocater.js.map +1 -1
- package/lib/cjs/SchemaKey.d.ts +6 -6
- package/lib/cjs/SchemaKey.d.ts.map +1 -1
- package/lib/cjs/SchemaKey.js +9 -9
- package/lib/cjs/SchemaKey.js.map +1 -1
- package/lib/cjs/SchemaLoader.d.ts +3 -3
- package/lib/cjs/SchemaLoader.js +4 -4
- package/lib/cjs/SchemaLoader.js.map +1 -1
- package/lib/cjs/SchemaPartVisitorDelegate.d.ts +2 -2
- package/lib/cjs/SchemaPartVisitorDelegate.js +1 -1
- package/lib/cjs/SchemaPartVisitorDelegate.js.map +1 -1
- package/lib/cjs/UnitConversion/Graph.js.map +1 -1
- package/lib/cjs/UnitConversion/Parser.js.map +1 -1
- package/lib/cjs/UnitConversion/UnitConversion.js.map +1 -1
- package/lib/cjs/UnitConversion/UnitConverter.js.map +1 -1
- package/lib/cjs/UnitConversion/UnitTree.js.map +1 -1
- package/lib/cjs/UnitProvider/SchemaUnitProvider.js.map +1 -1
- package/lib/cjs/Validation/SchemaWalker.js.map +1 -1
- package/lib/cjs/ecschema-metadata.d.ts +2 -1
- package/lib/cjs/ecschema-metadata.d.ts.map +1 -1
- package/lib/cjs/ecschema-metadata.js +1 -0
- package/lib/cjs/ecschema-metadata.js.map +1 -1
- package/lib/cjs/utils/SchemaGraph.js +3 -3
- package/lib/cjs/utils/SchemaGraph.js.map +1 -1
- package/lib/esm/Constants.js.map +1 -1
- package/lib/esm/Context.d.ts +3 -3
- package/lib/esm/Context.d.ts.map +1 -1
- package/lib/esm/Context.js +7 -7
- package/lib/esm/Context.js.map +1 -1
- package/lib/esm/DelayedPromise.d.ts +9 -8
- package/lib/esm/DelayedPromise.d.ts.map +1 -1
- package/lib/esm/DelayedPromise.js +2 -2
- package/lib/esm/DelayedPromise.js.map +1 -1
- package/lib/esm/Deserialization/AbstractParser.js.map +1 -1
- package/lib/esm/Deserialization/Helper.d.ts.map +1 -1
- package/lib/esm/Deserialization/Helper.js +28 -27
- package/lib/esm/Deserialization/Helper.js.map +1 -1
- package/lib/esm/Deserialization/JsonParser.js +151 -151
- package/lib/esm/Deserialization/JsonParser.js.map +1 -1
- package/lib/esm/Deserialization/JsonProps.d.ts +34 -34
- package/lib/esm/Deserialization/JsonProps.d.ts.map +1 -1
- package/lib/esm/Deserialization/JsonProps.js +3 -3
- package/lib/esm/Deserialization/JsonProps.js.map +1 -1
- package/lib/esm/Deserialization/SchemaGraphUtil.js.map +1 -1
- package/lib/esm/Deserialization/XmlParser.js +50 -50
- package/lib/esm/Deserialization/XmlParser.js.map +1 -1
- package/lib/esm/Deserialization/XmlSerializationUtils.d.ts +0 -5
- package/lib/esm/Deserialization/XmlSerializationUtils.d.ts.map +1 -1
- package/lib/esm/Deserialization/XmlSerializationUtils.js +7 -12
- package/lib/esm/Deserialization/XmlSerializationUtils.js.map +1 -1
- package/lib/esm/ECName.d.ts +2 -2
- package/lib/esm/ECName.js +5 -5
- package/lib/esm/ECName.js.map +1 -1
- package/lib/esm/ECObjects.d.ts +23 -11
- package/lib/esm/ECObjects.d.ts.map +1 -1
- package/lib/esm/ECObjects.js +48 -25
- package/lib/esm/ECObjects.js.map +1 -1
- package/lib/esm/Exception.d.ts +4 -4
- package/lib/esm/Exception.d.ts.map +1 -1
- package/lib/esm/Exception.js +58 -58
- package/lib/esm/Exception.js.map +1 -1
- package/lib/esm/Interfaces.d.ts +30 -34
- package/lib/esm/Interfaces.d.ts.map +1 -1
- package/lib/esm/Interfaces.js.map +1 -1
- package/lib/esm/Metadata/Class.d.ts +107 -19
- package/lib/esm/Metadata/Class.d.ts.map +1 -1
- package/lib/esm/Metadata/Class.js +128 -48
- package/lib/esm/Metadata/Class.js.map +1 -1
- package/lib/esm/Metadata/Constant.d.ts +12 -9
- package/lib/esm/Metadata/Constant.d.ts.map +1 -1
- package/lib/esm/Metadata/Constant.js +13 -10
- package/lib/esm/Metadata/Constant.js.map +1 -1
- package/lib/esm/Metadata/CustomAttribute.d.ts +2 -2
- package/lib/esm/Metadata/CustomAttribute.d.ts.map +1 -1
- package/lib/esm/Metadata/CustomAttribute.js.map +1 -1
- package/lib/esm/Metadata/CustomAttributeClass.d.ts +5 -3
- package/lib/esm/Metadata/CustomAttributeClass.d.ts.map +1 -1
- package/lib/esm/Metadata/CustomAttributeClass.js +8 -6
- package/lib/esm/Metadata/CustomAttributeClass.js.map +1 -1
- package/lib/esm/Metadata/EntityClass.d.ts +20 -3
- package/lib/esm/Metadata/EntityClass.d.ts.map +1 -1
- package/lib/esm/Metadata/EntityClass.js +33 -15
- package/lib/esm/Metadata/EntityClass.js.map +1 -1
- package/lib/esm/Metadata/Enumeration.d.ts +16 -9
- package/lib/esm/Metadata/Enumeration.d.ts.map +1 -1
- package/lib/esm/Metadata/Enumeration.js +21 -14
- package/lib/esm/Metadata/Enumeration.js.map +1 -1
- package/lib/esm/Metadata/Format.d.ts +32 -24
- package/lib/esm/Metadata/Format.d.ts.map +1 -1
- package/lib/esm/Metadata/Format.js +48 -28
- package/lib/esm/Metadata/Format.js.map +1 -1
- package/lib/esm/Metadata/InvertedUnit.d.ts +11 -7
- package/lib/esm/Metadata/InvertedUnit.d.ts.map +1 -1
- package/lib/esm/Metadata/InvertedUnit.js +17 -11
- package/lib/esm/Metadata/InvertedUnit.js.map +1 -1
- package/lib/esm/Metadata/KindOfQuantity.d.ts +24 -15
- package/lib/esm/Metadata/KindOfQuantity.d.ts.map +1 -1
- package/lib/esm/Metadata/KindOfQuantity.js +55 -30
- package/lib/esm/Metadata/KindOfQuantity.js.map +1 -1
- package/lib/esm/Metadata/Mixin.d.ts +16 -3
- package/lib/esm/Metadata/Mixin.d.ts.map +1 -1
- package/lib/esm/Metadata/Mixin.js +21 -8
- package/lib/esm/Metadata/Mixin.js.map +1 -1
- package/lib/esm/Metadata/OverrideFormat.d.ts +12 -12
- package/lib/esm/Metadata/OverrideFormat.d.ts.map +1 -1
- package/lib/esm/Metadata/OverrideFormat.js +28 -20
- package/lib/esm/Metadata/OverrideFormat.js.map +1 -1
- package/lib/esm/Metadata/Phenomenon.d.ts +10 -2
- package/lib/esm/Metadata/Phenomenon.d.ts.map +1 -1
- package/lib/esm/Metadata/Phenomenon.js +12 -4
- package/lib/esm/Metadata/Phenomenon.js.map +1 -1
- package/lib/esm/Metadata/Property.d.ts +46 -28
- package/lib/esm/Metadata/Property.d.ts.map +1 -1
- package/lib/esm/Metadata/Property.js +47 -23
- package/lib/esm/Metadata/Property.js.map +1 -1
- package/lib/esm/Metadata/PropertyCategory.d.ts +6 -3
- package/lib/esm/Metadata/PropertyCategory.d.ts.map +1 -1
- package/lib/esm/Metadata/PropertyCategory.js +13 -6
- package/lib/esm/Metadata/PropertyCategory.js.map +1 -1
- package/lib/esm/Metadata/RelationshipClass.d.ts +48 -25
- package/lib/esm/Metadata/RelationshipClass.d.ts.map +1 -1
- package/lib/esm/Metadata/RelationshipClass.js +55 -35
- package/lib/esm/Metadata/RelationshipClass.js.map +1 -1
- package/lib/esm/Metadata/Schema.d.ts +50 -28
- package/lib/esm/Metadata/Schema.d.ts.map +1 -1
- package/lib/esm/Metadata/Schema.js +65 -43
- package/lib/esm/Metadata/Schema.js.map +1 -1
- package/lib/esm/Metadata/SchemaItem.d.ts +10 -19
- package/lib/esm/Metadata/SchemaItem.d.ts.map +1 -1
- package/lib/esm/Metadata/SchemaItem.js +13 -21
- package/lib/esm/Metadata/SchemaItem.js.map +1 -1
- package/lib/esm/Metadata/Unit.d.ts +17 -21
- package/lib/esm/Metadata/Unit.d.ts.map +1 -1
- package/lib/esm/Metadata/Unit.js +21 -23
- package/lib/esm/Metadata/Unit.js.map +1 -1
- package/lib/esm/Metadata/UnitSystem.d.ts +3 -1
- package/lib/esm/Metadata/UnitSystem.d.ts.map +1 -1
- package/lib/esm/Metadata/UnitSystem.js +5 -3
- package/lib/esm/Metadata/UnitSystem.js.map +1 -1
- package/lib/esm/PropertyTypes.d.ts +11 -11
- package/lib/esm/PropertyTypes.d.ts.map +1 -1
- package/lib/esm/PropertyTypes.js +29 -21
- package/lib/esm/PropertyTypes.js.map +1 -1
- package/lib/esm/SchemaFormatsProvider.d.ts +39 -0
- package/lib/esm/SchemaFormatsProvider.d.ts.map +1 -0
- package/lib/esm/SchemaFormatsProvider.js +142 -0
- package/lib/esm/SchemaFormatsProvider.js.map +1 -0
- package/lib/esm/SchemaJsonLocater.d.ts +5 -5
- package/lib/esm/SchemaJsonLocater.js +4 -4
- package/lib/esm/SchemaJsonLocater.js.map +1 -1
- package/lib/esm/SchemaKey.d.ts +6 -6
- package/lib/esm/SchemaKey.d.ts.map +1 -1
- package/lib/esm/SchemaKey.js +10 -10
- package/lib/esm/SchemaKey.js.map +1 -1
- package/lib/esm/SchemaLoader.d.ts +3 -3
- package/lib/esm/SchemaLoader.js +5 -5
- package/lib/esm/SchemaLoader.js.map +1 -1
- package/lib/esm/SchemaPartVisitorDelegate.d.ts +2 -2
- package/lib/esm/SchemaPartVisitorDelegate.js +1 -1
- package/lib/esm/SchemaPartVisitorDelegate.js.map +1 -1
- package/lib/esm/UnitConversion/Graph.js.map +1 -1
- package/lib/esm/UnitConversion/Parser.js.map +1 -1
- package/lib/esm/UnitConversion/UnitConversion.js.map +1 -1
- package/lib/esm/UnitConversion/UnitConverter.js.map +1 -1
- package/lib/esm/UnitConversion/UnitTree.js.map +1 -1
- package/lib/esm/UnitProvider/SchemaUnitProvider.js.map +1 -1
- package/lib/esm/Validation/SchemaWalker.js.map +1 -1
- package/lib/esm/ecschema-metadata.d.ts +2 -1
- package/lib/esm/ecschema-metadata.d.ts.map +1 -1
- package/lib/esm/ecschema-metadata.js +1 -0
- package/lib/esm/ecschema-metadata.js.map +1 -1
- package/lib/esm/utils/SchemaGraph.js +4 -4
- package/lib/esm/utils/SchemaGraph.js.map +1 -1
- package/package.json +8 -6
|
@@ -8,10 +8,10 @@
|
|
|
8
8
|
import { XmlSerializationUtils } from "../Deserialization/XmlSerializationUtils";
|
|
9
9
|
import { SchemaItemType } from "../ECObjects";
|
|
10
10
|
import { formatStringRgx } from "@itwin/core-quantity";
|
|
11
|
-
import {
|
|
11
|
+
import { ECSchemaError, ECSchemaStatus } from "../Exception";
|
|
12
12
|
/**
|
|
13
13
|
* Overrides of a Format, from a Schema, and is SchemaItem that is used specifically on KindOfQuantity.
|
|
14
|
-
* @
|
|
14
|
+
* @public @preview
|
|
15
15
|
*/
|
|
16
16
|
export class OverrideFormat {
|
|
17
17
|
_precision;
|
|
@@ -23,6 +23,7 @@ export class OverrideFormat {
|
|
|
23
23
|
* This should be set to the [FormatString]($docs/bis/ec/kindofquantity/#format-string) which represents the format override.
|
|
24
24
|
*/
|
|
25
25
|
name;
|
|
26
|
+
/** @internal */
|
|
26
27
|
constructor(parent, precision, unitAndLabels) {
|
|
27
28
|
this.parent = parent;
|
|
28
29
|
this.name = OverrideFormat.createOverrideFormatFullName(parent, precision, unitAndLabels);
|
|
@@ -30,8 +31,12 @@ export class OverrideFormat {
|
|
|
30
31
|
this._units = unitAndLabels;
|
|
31
32
|
}
|
|
32
33
|
// Properties that can be overriden
|
|
33
|
-
get precision() {
|
|
34
|
-
|
|
34
|
+
get precision() {
|
|
35
|
+
return (undefined === this._precision) ? this.parent.precision : this._precision;
|
|
36
|
+
}
|
|
37
|
+
get units() {
|
|
38
|
+
return (undefined === this._units) ? this.parent.units : this._units;
|
|
39
|
+
}
|
|
35
40
|
// Properties that cannot be overriden
|
|
36
41
|
get fullName() { return this.name; }
|
|
37
42
|
get roundFactor() { return this.parent.roundFactor; }
|
|
@@ -51,7 +56,7 @@ export class OverrideFormat {
|
|
|
51
56
|
return (this.parent.formatTraits & formatTrait) === formatTrait;
|
|
52
57
|
}
|
|
53
58
|
/** Returns the format string of this override in the Xml full name format.
|
|
54
|
-
* @
|
|
59
|
+
* @internal
|
|
55
60
|
*/
|
|
56
61
|
fullNameXml(koqSchema) {
|
|
57
62
|
let fullName = XmlSerializationUtils.createXmlTypedName(koqSchema, this.parent.schema, this.parent.name);
|
|
@@ -60,8 +65,11 @@ export class OverrideFormat {
|
|
|
60
65
|
if (undefined === this._units)
|
|
61
66
|
return fullName;
|
|
62
67
|
for (const [unit, unitLabel] of this._units) {
|
|
68
|
+
const unitSchema = koqSchema.context.getSchemaSync(unit.schemaKey);
|
|
69
|
+
if (unitSchema === undefined)
|
|
70
|
+
throw new ECSchemaError(ECSchemaStatus.InvalidECJson, `The unit schema ${unit.schemaKey} is not found in the context.`);
|
|
63
71
|
fullName += "[";
|
|
64
|
-
fullName += XmlSerializationUtils.createXmlTypedName(koqSchema,
|
|
72
|
+
fullName += XmlSerializationUtils.createXmlTypedName(koqSchema, unitSchema, unit.name);
|
|
65
73
|
if (unitLabel !== undefined)
|
|
66
74
|
fullName += `|${unitLabel}`;
|
|
67
75
|
fullName += `]`;
|
|
@@ -92,8 +100,8 @@ export class OverrideFormat {
|
|
|
92
100
|
static parseFormatString(formatString) {
|
|
93
101
|
const match = formatString.split(formatStringRgx); // split string based on regex groups
|
|
94
102
|
if (undefined === match[1])
|
|
95
|
-
throw new
|
|
96
|
-
|
|
103
|
+
throw new ECSchemaError(ECSchemaStatus.InvalidECJson, `The format string, ${formatString}, on KindOfQuantity is missing a format.`);
|
|
104
|
+
let precision;
|
|
97
105
|
if (undefined !== match[2] && undefined !== match[3]) {
|
|
98
106
|
const overrideString = match[2];
|
|
99
107
|
const tokens = [];
|
|
@@ -107,41 +115,41 @@ export class OverrideFormat {
|
|
|
107
115
|
if (overrideString.length > 0 && undefined === tokens.find((token) => {
|
|
108
116
|
return "" !== token; // there is at least one token that is not empty.
|
|
109
117
|
})) {
|
|
110
|
-
throw new
|
|
118
|
+
throw new ECSchemaError(ECSchemaStatus.InvalidECJson, ``);
|
|
111
119
|
}
|
|
112
120
|
// The first override parameter overrides the default precision of the format
|
|
113
121
|
const precisionIndx = 0;
|
|
114
122
|
if (tokens.length >= precisionIndx + 1) {
|
|
115
123
|
if (tokens[precisionIndx].length > 0) {
|
|
116
|
-
|
|
124
|
+
precision = Number.parseInt(tokens[precisionIndx], 10);
|
|
117
125
|
if (Number.isNaN(precision))
|
|
118
|
-
throw new
|
|
119
|
-
returnValue.precision = precision;
|
|
126
|
+
throw new ECSchemaError(ECSchemaStatus.InvalidECJson, `The format string '${formatString}' on KindOfQuantity has a precision override '${tokens[precisionIndx]}' that is not number.`);
|
|
120
127
|
}
|
|
121
128
|
}
|
|
122
129
|
}
|
|
123
130
|
let i = 4;
|
|
131
|
+
let unitAndLabels;
|
|
124
132
|
while (i < match.length - 1) { // The regex match ends with an empty last value, which causes problems when exactly 4 unit overrides as specified, so ignore this last empty value
|
|
125
133
|
if (undefined === match[i])
|
|
126
134
|
break;
|
|
127
135
|
// Unit override required
|
|
128
136
|
if (undefined === match[i + 1])
|
|
129
|
-
throw new
|
|
130
|
-
if (undefined ===
|
|
131
|
-
|
|
137
|
+
throw new ECSchemaError(ECSchemaStatus.InvalidECJson, ``);
|
|
138
|
+
if (undefined === unitAndLabels)
|
|
139
|
+
unitAndLabels = [];
|
|
132
140
|
if (undefined !== match[i + 2]) // matches '|'
|
|
133
|
-
|
|
141
|
+
unitAndLabels.push([match[i + 1], match[i + 3] ?? ""]); // add unit name and label override (if '|' matches and next value is undefined, save it as an empty string)
|
|
134
142
|
else
|
|
135
|
-
|
|
143
|
+
unitAndLabels.push([match[i + 1], undefined]); // add unit name
|
|
136
144
|
i += 4;
|
|
137
145
|
}
|
|
138
|
-
return
|
|
146
|
+
return { name: match[1], precision, unitAndLabels };
|
|
139
147
|
}
|
|
140
148
|
/**
|
|
141
149
|
* @internal
|
|
142
150
|
*/
|
|
143
|
-
static isOverrideFormat(
|
|
144
|
-
const overrideFormat =
|
|
151
|
+
static isOverrideFormat(format) {
|
|
152
|
+
const overrideFormat = format;
|
|
145
153
|
return overrideFormat !== undefined && overrideFormat.name !== undefined && overrideFormat.parent !== undefined && overrideFormat.parent.schemaItemType === SchemaItemType.Format;
|
|
146
154
|
}
|
|
147
155
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OverrideFormat.js","sourceRoot":"","sources":["../../../src/Metadata/OverrideFormat.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAiC,eAAe,EAAiF,MAAM,sBAAsB,CAAC;AAOrK,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAW/D;;;GAGG;AACH,MAAM,OAAO,cAAc;IACjB,UAAU,CAA0C;IACpD,MAAM,CAAoD;IAElE,uDAAuD;IACvC,MAAM,CAAS;IAE/B;;;OAGG;IACa,IAAI,CAAS;IAE7B,YAAY,MAAc,EAAE,SAAkD,EAAE,aAAgE;QAC9I,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC,4BAA4B,CAAC,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;QAC1F,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC;IAC9B,CAAC;IAED,mCAAmC;IACnC,IAAW,SAAS,KAA6C,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACpJ,IAAW,KAAK,KAAK,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAE5F,sCAAsC;IACtC,IAAW,QAAQ,KAAa,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,IAAW,WAAW,KAAa,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;IACpE,IAAW,IAAI,KAAiB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,IAAW,QAAQ,KAAyB,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1E,IAAW,cAAc,KAAiC,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;IAC9F,IAAW,cAAc,KAAqB,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;IAClF,IAAW,gBAAgB,KAAa,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC9E,IAAW,iBAAiB,KAAa,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAChF,IAAW,YAAY,KAAa,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;IACtE,IAAW,gBAAgB,KAAa,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC9E,IAAW,iBAAiB,KAAyB,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC5F,IAAW,YAAY,KAAmB,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;IAC5E,IAAW,MAAM,KAAyB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACtE,IAAW,WAAW,KAA0B,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;IAE1E,cAAc,CAAC,WAAyB;QAC7C,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,WAAW,CAAC,KAAK,WAAW,CAAC;IAClE,CAAC;IAED;;OAEG;IACI,WAAW,CAAC,SAAiB;QAClC,IAAI,QAAQ,GAAG,qBAAqB,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEzG,IAAI,SAAS,KAAK,IAAI,CAAC,SAAS;YAC9B,QAAQ,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC;QAE/C,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM;YAC3B,OAAO,QAAQ,CAAC;QAClB,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC5C,QAAQ,IAAI,GAAG,CAAC;YAChB,QAAQ,IAAI,qBAAqB,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACxF,IAAI,SAAS,KAAK,SAAS;gBACzB,QAAQ,IAAI,IAAI,SAAS,EAAE,CAAC;YAC9B,QAAQ,IAAI,GAAG,CAAC;QAClB,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,4BAA4B,CAAC,MAAc,EAAE,SAAkD,EAAE,aAAgE;QAC7K,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAE/B,IAAI,SAAS;YACX,QAAQ,IAAI,IAAI,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC;QAE1C,IAAI,SAAS,KAAK,aAAa;YAC7B,OAAO,QAAQ,CAAC;QAClB,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,aAAa;YAC3C,IAAI,SAAS,KAAK,SAAS;gBACzB,QAAQ,IAAI,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC;;gBAEjC,QAAQ,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,SAAS,GAAG,CAAC;QAClD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,iBAAiB,CAAC,YAAoB;QAClD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,qCAAqC;QACxF,IAAI,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC;YACxB,MAAM,IAAI,cAAc,CAAC,eAAe,CAAC,aAAa,EAAE,sBAAsB,YAAY,0CAA0C,CAAC,CAAC;QAExI,MAAM,WAAW,GAAwB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAE5D,IAAI,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,2FAA2F;YAC5G,IAAI,OAAO,CAAC;YAEZ,uDAAuD;YACvD,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;gBAC/D,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;gBACxD,OAAO,GAAG,OAAO,GAAG,CAAC,CAAC;YACxB,CAAC;YAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;gBACnE,OAAO,EAAE,KAAK,KAAK,CAAC,CAAC,iDAAiD;YACxE,CAAC,CAAC,EAAE,CAAC;gBACH,MAAM,IAAI,cAAc,CAAC,eAAe,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;YAC9D,CAAC;YAED,6EAA6E;YAC7E,MAAM,aAAa,GAAW,CAAC,CAAC;YAEhC,IAAI,MAAM,CAAC,MAAM,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;gBACvC,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrC,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC7D,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;wBACzB,MAAM,IAAI,cAAc,CAAC,eAAe,CAAC,aAAa,EAAE,sBAAsB,YAAY,iDAAiD,MAAM,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC;oBAC3L,WAAW,CAAC,SAAS,GAAG,SAAS,CAAC;gBACpC,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAE,mJAAmJ;YACjL,IAAI,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC;gBACxB,MAAM;YACR,yBAAyB;YACzB,IAAI,SAAS,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC5B,MAAM,IAAI,cAAc,CAAC,eAAe,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;YAE9D,IAAI,SAAS,KAAK,WAAW,CAAC,aAAa;gBACzC,WAAW,CAAC,aAAa,GAAG,EAAE,CAAC;YAEjC,IAAI,SAAS,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc;gBAC5C,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,4GAA4G;;gBAEhL,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,gBAAgB;YAE7E,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,gBAAgB,CAAC,MAAW;QACxC,MAAM,cAAc,GAAG,MAAwB,CAAC;QAEhD,OAAO,cAAc,KAAK,SAAS,IAAI,cAAc,CAAC,IAAI,KAAK,SAAS,IAAI,cAAc,CAAC,MAAM,KAAK,SAAS,IAAI,cAAc,CAAC,MAAM,CAAC,cAAc,KAAK,cAAc,CAAC,MAAM,CAAC;IACpL,CAAC;IAED;;;;;OAKG;IACI,cAAc;QACnB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAA4C,CAAC;QAElF,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3C,yEAAyE;YACzE,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;YAChC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC3C,CAAC;QAED,sCAAsC;QACtC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAEtC,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,kCAAkC;YAClC,MAAM,KAAK,GAAG,EAAE,CAAC;YACjB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC9B,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ;oBACtB,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;iBACf,CAAC,CAAC;YACL,CAAC;YAED,UAAU,CAAC,SAAS,GAAG;gBACrB,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;gBACvD,WAAW,EAAE,CAAC,IAAI,CAAC,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;gBACxE,KAAK;aACN,CAAC;QACJ,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAA+B;IAC5D,OAAO,cAAc,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;AAC7F,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Metadata\n */\n\nimport { XmlSerializationUtils } from \"../Deserialization/XmlSerializationUtils\";\nimport { SchemaItemType } from \"../ECObjects\";\nimport { DecimalPrecision, FormatProps, formatStringRgx, FormatTraits, FormatType, FractionalPrecision, ScientificType, ShowSignOption } from \"@itwin/core-quantity\";\nimport { Format } from \"./Format\";\nimport { InvertedUnit } from \"./InvertedUnit\";\nimport { Schema } from \"./Schema\";\nimport { SchemaItemOverrideFormatProps } from \"../Deserialization/JsonProps\";\nimport { Unit } from \"./Unit\";\nimport { Mutable } from \"@itwin/core-bentley\";\nimport { ECObjectsError, ECObjectsStatus } from \"../Exception\";\n\n/**\n * @beta\n */\nexport interface OverrideFormatProps {\n name: string;\n precision?: number;\n unitAndLabels?: Array<[string, string | undefined]>; // Tuple of [unit name | unit label]\n}\n\n/**\n * Overrides of a Format, from a Schema, and is SchemaItem that is used specifically on KindOfQuantity.\n * @beta\n */\nexport class OverrideFormat {\n private _precision?: DecimalPrecision | FractionalPrecision;\n private _units?: Array<[Unit | InvertedUnit, string | undefined]>;\n\n /** The Format that this OverrideFormat is extending */\n public readonly parent: Format;\n\n /** The name of this OverrideFormat.\n *\n * This should be set to the [FormatString]($docs/bis/ec/kindofquantity/#format-string) which represents the format override.\n */\n public readonly name: string;\n\n constructor(parent: Format, precision?: DecimalPrecision | FractionalPrecision, unitAndLabels?: Array<[Unit | InvertedUnit, string | undefined]>) {\n this.parent = parent;\n this.name = OverrideFormat.createOverrideFormatFullName(parent, precision, unitAndLabels);\n this._precision = precision;\n this._units = unitAndLabels;\n }\n\n // Properties that can be overriden\n public get precision(): DecimalPrecision | FractionalPrecision { return (undefined === this._precision) ? this.parent.precision : this._precision; }\n public get units() { return (undefined === this._units) ? this.parent.units : this._units; }\n\n // Properties that cannot be overriden\n public get fullName(): string { return this.name; }\n public get roundFactor(): number { return this.parent.roundFactor; }\n public get type(): FormatType { return this.parent.type; }\n public get minWidth(): number | undefined { return this.parent.minWidth; }\n public get scientificType(): ScientificType | undefined { return this.parent.scientificType; }\n public get showSignOption(): ShowSignOption { return this.parent.showSignOption; }\n public get decimalSeparator(): string { return this.parent.decimalSeparator; }\n public get thousandSeparator(): string { return this.parent.thousandSeparator; }\n public get uomSeparator(): string { return this.parent.uomSeparator; }\n public get stationSeparator(): string { return this.parent.stationSeparator; }\n public get stationOffsetSize(): number | undefined { return this.parent.stationOffsetSize; }\n public get formatTraits(): FormatTraits { return this.parent.formatTraits; }\n public get spacer(): string | undefined { return this.parent.spacer; }\n public get includeZero(): boolean | undefined { return this.parent.includeZero; }\n\n public hasFormatTrait(formatTrait: FormatTraits) {\n return (this.parent.formatTraits & formatTrait) === formatTrait;\n }\n\n /** Returns the format string of this override in the Xml full name format.\n * @alpha\n */\n public fullNameXml(koqSchema: Schema): string {\n let fullName = XmlSerializationUtils.createXmlTypedName(koqSchema, this.parent.schema, this.parent.name);\n\n if (undefined !== this.precision)\n fullName += `(${this.precision.toString()})`;\n\n if (undefined === this._units)\n return fullName;\n for (const [unit, unitLabel] of this._units) {\n fullName += \"[\";\n fullName += XmlSerializationUtils.createXmlTypedName(koqSchema, unit.schema, unit.name);\n if (unitLabel !== undefined)\n fullName += `|${unitLabel}`;\n fullName += `]`;\n }\n return fullName;\n }\n\n /**\n * Creates a valid OverrideFormat fullName from the parent Format and overridden units.\n * @param parent The parent Format.\n * @param unitAndLabels The overridden unit and labels collection.\n */\n public static createOverrideFormatFullName(parent: Format, precision?: DecimalPrecision | FractionalPrecision, unitAndLabels?: Array<[Unit | InvertedUnit, string | undefined]>): string {\n let fullName = parent.fullName;\n\n if (precision)\n fullName += `(${precision.toString()})`;\n\n if (undefined === unitAndLabels)\n return fullName;\n for (const [unit, unitLabel] of unitAndLabels)\n if (undefined === unitLabel)\n fullName += `[${unit.fullName}]`;\n else\n fullName += `[${unit.fullName}|${unitLabel}]`;\n return fullName;\n }\n\n /** Parses the format string into the parts that make up an Override Format\n * @param formatString\n */\n public static parseFormatString(formatString: string): OverrideFormatProps {\n const match = formatString.split(formatStringRgx); // split string based on regex groups\n if (undefined === match[1])\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `The format string, ${formatString}, on KindOfQuantity is missing a format.`);\n\n const returnValue: OverrideFormatProps = { name: match[1] };\n\n if (undefined !== match[2] && undefined !== match[3]) {\n const overrideString = match[2];\n const tokens: string[] = [];\n let prevPos = 1; // Initial position is the character directly after the opening '(' in the override string.\n let currPos;\n\n // TODO need to include `,` as a valid search argument.\n while (-1 !== (currPos = overrideString.indexOf(\")\", prevPos))) {\n tokens.push(overrideString.substring(prevPos, currPos));\n prevPos = currPos + 1;\n }\n\n if (overrideString.length > 0 && undefined === tokens.find((token) => {\n return \"\" !== token; // there is at least one token that is not empty.\n })) {\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, ``);\n }\n\n // The first override parameter overrides the default precision of the format\n const precisionIndx: number = 0;\n\n if (tokens.length >= precisionIndx + 1) {\n if (tokens[precisionIndx].length > 0) {\n const precision = Number.parseInt(tokens[precisionIndx], 10);\n if (Number.isNaN(precision))\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `The format string '${formatString}' on KindOfQuantity has a precision override '${tokens[precisionIndx]}' that is not number.`);\n returnValue.precision = precision;\n }\n }\n }\n\n let i = 4;\n while (i < match.length - 1) { // The regex match ends with an empty last value, which causes problems when exactly 4 unit overrides as specified, so ignore this last empty value\n if (undefined === match[i])\n break;\n // Unit override required\n if (undefined === match[i + 1])\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, ``);\n\n if (undefined === returnValue.unitAndLabels)\n returnValue.unitAndLabels = [];\n\n if (undefined !== match[i + 2]) // matches '|'\n returnValue.unitAndLabels.push([match[i + 1], match[i + 3] ?? \"\"]); // add unit name and label override (if '|' matches and next value is undefined, save it as an empty string)\n else\n returnValue.unitAndLabels.push([match[i + 1], undefined]); // add unit name\n\n i += 4;\n }\n\n return returnValue;\n }\n\n /**\n * @internal\n */\n public static isOverrideFormat(object: any): object is OverrideFormat {\n const overrideFormat = object as OverrideFormat;\n\n return overrideFormat !== undefined && overrideFormat.name !== undefined && overrideFormat.parent !== undefined && overrideFormat.parent.schemaItemType === SchemaItemType.Format;\n }\n\n /**\n * Returns a JSON object that contains the specification for the OverrideFormat where the precision and units properties have been overriden.\n * If the precision and/or units properties have been overriden, the returned object will contain a \"name\" and a \"parent\" property.\n * The \"name\" property identifies the OverrideFormat object itself and the \"parent\" property identifies the Format that has been overriden.\n * This method is not intended for complete serialization as it does not serialize any of the schema item properties.\n */\n public getFormatProps(): SchemaItemOverrideFormatProps {\n const formatJson = this.parent.toJSON() as Mutable<SchemaItemOverrideFormatProps>;\n\n if (this.parent.fullName !== this.fullName) {\n // Update name and parent properties to distinguish it from parent Format\n formatJson.name = this.fullName;\n formatJson.parent = this.parent.fullName;\n }\n\n // Update Precision overriden property\n formatJson.precision = this.precision;\n\n if (this.units !== undefined) {\n // Update Units overriden property\n const units = [];\n for (const unit of this.units) {\n units.push({\n name: unit[0].fullName,\n label: unit[1],\n });\n }\n\n formatJson.composite = {\n spacer: (this.spacer !== \" \") ? this.spacer : undefined,\n includeZero: (this.includeZero === false) ? this.includeZero : undefined,\n units,\n };\n }\n\n return formatJson;\n }\n}\n\n/**\n * @internal\n */\nexport function getFormatProps(format: Format | OverrideFormat): FormatProps {\n return OverrideFormat.isOverrideFormat(format) ? format.getFormatProps() : format.toJSON();\n}\n"]}
|
|
1
|
+
{"version":3,"file":"OverrideFormat.js","sourceRoot":"","sources":["../../../src/Metadata/OverrideFormat.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Metadata\r\n */\r\n\r\nimport { XmlSerializationUtils } from \"../Deserialization/XmlSerializationUtils\";\r\nimport { SchemaItemType } from \"../ECObjects\";\r\nimport { DecimalPrecision, FormatProps, formatStringRgx, FormatTraits, FormatType, FractionalPrecision, ScientificType, ShowSignOption } from \"@itwin/core-quantity\";\r\nimport { Format } from \"./Format\";\r\nimport { Schema } from \"./Schema\";\r\nimport { SchemaItemOverrideFormatProps } from \"../Deserialization/JsonProps\";\r\nimport { Mutable } from \"@itwin/core-bentley\";\r\nimport { LazyLoadedInvertedUnit, LazyLoadedUnit } from \"../Interfaces\";\r\nimport { ECSchemaError, ECSchemaStatus } from \"../Exception\";\r\n\r\n/**\r\n * @public @preview\r\n */\r\nexport interface OverrideFormatProps {\r\n readonly name: string;\r\n readonly precision?: number;\r\n readonly unitAndLabels?: Array<[string, string | undefined]>; // Tuple of [unit name | unit label]\r\n}\r\n\r\n/**\r\n * Overrides of a Format, from a Schema, and is SchemaItem that is used specifically on KindOfQuantity.\r\n * @public @preview\r\n */\r\nexport class OverrideFormat {\r\n private _precision?: DecimalPrecision | FractionalPrecision;\r\n private _units?: Array<[LazyLoadedUnit | LazyLoadedInvertedUnit, string | undefined]>;\r\n\r\n /** The Format that this OverrideFormat is extending */\r\n public readonly parent: Format;\r\n\r\n /** The name of this OverrideFormat.\r\n *\r\n * This should be set to the [FormatString]($docs/bis/ec/kindofquantity/#format-string) which represents the format override.\r\n */\r\n public readonly name: string;\r\n\r\n /** @internal */\r\n constructor(parent: Format, precision?: DecimalPrecision | FractionalPrecision, unitAndLabels?: Array<[LazyLoadedUnit | LazyLoadedInvertedUnit, string | undefined]>) {\r\n this.parent = parent;\r\n this.name = OverrideFormat.createOverrideFormatFullName(parent, precision, unitAndLabels);\r\n this._precision = precision;\r\n this._units = unitAndLabels;\r\n }\r\n\r\n // Properties that can be overriden\r\n public get precision(): DecimalPrecision | FractionalPrecision {\r\n return (undefined === this._precision) ? this.parent.precision : this._precision;\r\n }\r\n\r\n public get units(): ReadonlyArray<[LazyLoadedUnit | LazyLoadedInvertedUnit, string | undefined]> | undefined {\r\n return (undefined === this._units) ? this.parent.units : this._units;\r\n }\r\n\r\n // Properties that cannot be overriden\r\n public get fullName(): string { return this.name; }\r\n public get roundFactor(): number { return this.parent.roundFactor; }\r\n public get type(): FormatType { return this.parent.type; }\r\n public get minWidth(): number | undefined { return this.parent.minWidth; }\r\n public get scientificType(): ScientificType | undefined { return this.parent.scientificType; }\r\n public get showSignOption(): ShowSignOption { return this.parent.showSignOption; }\r\n public get decimalSeparator(): string { return this.parent.decimalSeparator; }\r\n public get thousandSeparator(): string { return this.parent.thousandSeparator; }\r\n public get uomSeparator(): string { return this.parent.uomSeparator; }\r\n public get stationSeparator(): string { return this.parent.stationSeparator; }\r\n public get stationOffsetSize(): number | undefined { return this.parent.stationOffsetSize; }\r\n public get formatTraits(): FormatTraits { return this.parent.formatTraits; }\r\n public get spacer(): string | undefined { return this.parent.spacer; }\r\n public get includeZero(): boolean | undefined { return this.parent.includeZero; }\r\n\r\n public hasFormatTrait(formatTrait: FormatTraits) {\r\n return (this.parent.formatTraits & formatTrait) === formatTrait;\r\n }\r\n\r\n /** Returns the format string of this override in the Xml full name format.\r\n * @internal\r\n */\r\n public fullNameXml(koqSchema: Schema): string {\r\n let fullName = XmlSerializationUtils.createXmlTypedName(koqSchema, this.parent.schema, this.parent.name);\r\n\r\n if (undefined !== this.precision)\r\n fullName += `(${this.precision.toString()})`;\r\n\r\n if (undefined === this._units)\r\n return fullName;\r\n for (const [unit, unitLabel] of this._units) {\r\n const unitSchema = koqSchema.context.getSchemaSync(unit.schemaKey);\r\n if(unitSchema === undefined)\r\n throw new ECSchemaError(ECSchemaStatus.InvalidECJson, `The unit schema ${unit.schemaKey} is not found in the context.`);\r\n\r\n fullName += \"[\";\r\n fullName += XmlSerializationUtils.createXmlTypedName(koqSchema, unitSchema, unit.name);\r\n if (unitLabel !== undefined)\r\n fullName += `|${unitLabel}`;\r\n fullName += `]`;\r\n }\r\n return fullName;\r\n }\r\n\r\n /**\r\n * Creates a valid OverrideFormat fullName from the parent Format and overridden units.\r\n * @param parent The parent Format.\r\n * @param unitAndLabels The overridden unit and labels collection.\r\n */\r\n public static createOverrideFormatFullName(parent: Format, precision?: DecimalPrecision | FractionalPrecision, unitAndLabels?: Array<[LazyLoadedUnit | LazyLoadedInvertedUnit, string | undefined]>): string {\r\n let fullName = parent.fullName;\r\n\r\n if (precision)\r\n fullName += `(${precision.toString()})`;\r\n\r\n if (undefined === unitAndLabels)\r\n return fullName;\r\n for (const [unit, unitLabel] of unitAndLabels)\r\n if (undefined === unitLabel)\r\n fullName += `[${unit.fullName}]`;\r\n else\r\n fullName += `[${unit.fullName}|${unitLabel}]`;\r\n return fullName;\r\n }\r\n\r\n /** Parses the format string into the parts that make up an Override Format\r\n * @param formatString\r\n */\r\n public static parseFormatString(formatString: string): OverrideFormatProps {\r\n const match = formatString.split(formatStringRgx); // split string based on regex groups\r\n if (undefined === match[1])\r\n throw new ECSchemaError(ECSchemaStatus.InvalidECJson, `The format string, ${formatString}, on KindOfQuantity is missing a format.`);\r\n\r\n let precision: OverrideFormatProps[\"precision\"];\r\n if (undefined !== match[2] && undefined !== match[3]) {\r\n const overrideString = match[2];\r\n const tokens: string[] = [];\r\n let prevPos = 1; // Initial position is the character directly after the opening '(' in the override string.\r\n let currPos;\r\n\r\n // TODO need to include `,` as a valid search argument.\r\n while (-1 !== (currPos = overrideString.indexOf(\")\", prevPos))) {\r\n tokens.push(overrideString.substring(prevPos, currPos));\r\n prevPos = currPos + 1;\r\n }\r\n\r\n if (overrideString.length > 0 && undefined === tokens.find((token) => {\r\n return \"\" !== token; // there is at least one token that is not empty.\r\n })) {\r\n throw new ECSchemaError(ECSchemaStatus.InvalidECJson, ``);\r\n }\r\n\r\n // The first override parameter overrides the default precision of the format\r\n const precisionIndx: number = 0;\r\n if (tokens.length >= precisionIndx + 1) {\r\n if (tokens[precisionIndx].length > 0) {\r\n precision = Number.parseInt(tokens[precisionIndx], 10);\r\n if (Number.isNaN(precision))\r\n throw new ECSchemaError(ECSchemaStatus.InvalidECJson, `The format string '${formatString}' on KindOfQuantity has a precision override '${tokens[precisionIndx]}' that is not number.`);\r\n }\r\n }\r\n }\r\n\r\n let i = 4;\r\n let unitAndLabels: OverrideFormatProps[\"unitAndLabels\"];\r\n while (i < match.length - 1) { // The regex match ends with an empty last value, which causes problems when exactly 4 unit overrides as specified, so ignore this last empty value\r\n if (undefined === match[i])\r\n break;\r\n // Unit override required\r\n if (undefined === match[i + 1])\r\n throw new ECSchemaError(ECSchemaStatus.InvalidECJson, ``);\r\n\r\n if (undefined === unitAndLabels)\r\n unitAndLabels = [];\r\n\r\n if (undefined !== match[i + 2]) // matches '|'\r\n unitAndLabels.push([match[i + 1], match[i + 3] ?? \"\"]); // add unit name and label override (if '|' matches and next value is undefined, save it as an empty string)\r\n else\r\n unitAndLabels.push([match[i + 1], undefined]); // add unit name\r\n\r\n i += 4;\r\n }\r\n\r\n return { name: match[1], precision, unitAndLabels };\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public static isOverrideFormat(format: unknown): format is OverrideFormat {\r\n const overrideFormat = format as Partial<OverrideFormat>;\r\n\r\n return overrideFormat !== undefined && overrideFormat.name !== undefined && overrideFormat.parent !== undefined && overrideFormat.parent.schemaItemType === SchemaItemType.Format;\r\n }\r\n\r\n /**\r\n * Returns a JSON object that contains the specification for the OverrideFormat where the precision and units properties have been overriden.\r\n * If the precision and/or units properties have been overriden, the returned object will contain a \"name\" and a \"parent\" property.\r\n * The \"name\" property identifies the OverrideFormat object itself and the \"parent\" property identifies the Format that has been overriden.\r\n * This method is not intended for complete serialization as it does not serialize any of the schema item properties.\r\n */\r\n public getFormatProps(): SchemaItemOverrideFormatProps {\r\n const formatJson = this.parent.toJSON() as Mutable<SchemaItemOverrideFormatProps>;\r\n\r\n if (this.parent.fullName !== this.fullName) {\r\n // Update name and parent properties to distinguish it from parent Format\r\n formatJson.name = this.fullName;\r\n formatJson.parent = this.parent.fullName;\r\n }\r\n\r\n // Update Precision overriden property\r\n formatJson.precision = this.precision;\r\n\r\n if (this.units !== undefined) {\r\n // Update Units overriden property\r\n const units = [];\r\n for (const unit of this.units) {\r\n units.push({\r\n name: unit[0].fullName,\r\n label: unit[1],\r\n });\r\n }\r\n\r\n formatJson.composite = {\r\n spacer: (this.spacer !== \" \") ? this.spacer : undefined,\r\n includeZero: (this.includeZero === false) ? this.includeZero : undefined,\r\n units,\r\n };\r\n }\r\n\r\n return formatJson;\r\n }\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function getFormatProps(format: Format | OverrideFormat): FormatProps {\r\n return OverrideFormat.isOverrideFormat(format) ? format.getFormatProps() : format.toJSON();\r\n}\r\n"]}
|
|
@@ -5,11 +5,13 @@ import { PhenomenonProps } from "../Deserialization/JsonProps";
|
|
|
5
5
|
import { SchemaItemType } from "../ECObjects";
|
|
6
6
|
import { Schema } from "./Schema";
|
|
7
7
|
import { SchemaItem } from "./SchemaItem";
|
|
8
|
-
/** @
|
|
8
|
+
/** @public @preview */
|
|
9
9
|
export declare class Phenomenon extends SchemaItem {
|
|
10
10
|
readonly schemaItemType: SchemaItemType;
|
|
11
|
+
/** @internal */
|
|
11
12
|
static get schemaItemType(): SchemaItemType;
|
|
12
|
-
|
|
13
|
+
private _definition;
|
|
14
|
+
/** @internal */
|
|
13
15
|
constructor(schema: Schema, name: string);
|
|
14
16
|
get definition(): string;
|
|
15
17
|
/**
|
|
@@ -22,6 +24,11 @@ export declare class Phenomenon extends SchemaItem {
|
|
|
22
24
|
toXml(schemaXml: Document): Promise<Element>;
|
|
23
25
|
fromJSONSync(phenomenonProps: PhenomenonProps): void;
|
|
24
26
|
fromJSON(phenomenonProps: PhenomenonProps): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
*
|
|
29
|
+
* @param definition
|
|
30
|
+
* @internal
|
|
31
|
+
*/
|
|
25
32
|
protected setDefinition(definition: string): Promise<void>;
|
|
26
33
|
/**
|
|
27
34
|
* Type guard to check if the SchemaItem is of type Phenomenon.
|
|
@@ -33,6 +40,7 @@ export declare class Phenomenon extends SchemaItem {
|
|
|
33
40
|
* Type assertion to check if the SchemaItem is of type Phenomenon.
|
|
34
41
|
* @param item The SchemaItem to check.
|
|
35
42
|
* @returns The item cast to Phenomenon if it is a Phenomenon, undefined otherwise.
|
|
43
|
+
* @internal
|
|
36
44
|
*/
|
|
37
45
|
static assertIsPhenomenon(item?: SchemaItem): asserts item is Phenomenon;
|
|
38
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Phenomenon.d.ts","sourceRoot":"","sources":["../../../src/Metadata/Phenomenon.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,
|
|
1
|
+
{"version":3,"file":"Phenomenon.d.ts","sourceRoot":"","sources":["../../../src/Metadata/Phenomenon.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,uBAAuB;AACvB,qBAAa,UAAW,SAAQ,UAAU;IACxC,SAAyB,cAAc,iBAA6B;IACpE,gBAAgB;IAChB,WAA2B,cAAc,mBAAwC;IACjF,OAAO,CAAC,WAAW,CAAS;IAE5B,gBAAgB;gBACJ,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAKxC,IAAW,UAAU,IAAI,MAAM,CAA6B;IAE5D;;;;OAIG;IACa,MAAM,CAAC,UAAU,GAAE,OAAe,EAAE,oBAAoB,GAAE,OAAe,GAAG,eAAe;IAM3G,gBAAgB;IACM,KAAK,CAAC,SAAS,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAMlD,YAAY,CAAC,eAAe,EAAE,eAAe;IAQvC,QAAQ,CAAC,eAAe,EAAE,eAAe;IAI/D;;;;OAIG;cACa,aAAa,CAAC,UAAU,EAAE,MAAM;IAIhD;;;;OAIG;WACW,YAAY,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,IAAI,UAAU;IAOjE;;;;;OAKG;WACW,kBAAkB,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,IAAI,UAAU;CAIhF;AAED;;;GAGG;AACH,8BAAsB,iBAAkB,SAAQ,UAAU;aAC/B,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;aAChD,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;CACrE"}
|
|
@@ -6,13 +6,15 @@
|
|
|
6
6
|
* @module Metadata
|
|
7
7
|
*/
|
|
8
8
|
import { SchemaItemType } from "../ECObjects";
|
|
9
|
-
import {
|
|
9
|
+
import { ECSchemaError, ECSchemaStatus } from "../Exception";
|
|
10
10
|
import { SchemaItem } from "./SchemaItem";
|
|
11
|
-
/** @
|
|
11
|
+
/** @public @preview */
|
|
12
12
|
export class Phenomenon extends SchemaItem {
|
|
13
13
|
schemaItemType = Phenomenon.schemaItemType;
|
|
14
|
+
/** @internal */
|
|
14
15
|
static get schemaItemType() { return SchemaItemType.Phenomenon; }
|
|
15
16
|
_definition; // Contains a combination of Phenomena names which form this Phenomenon. Each Phenomena name is separated by a * and may have an exponent, specified using parentheses
|
|
17
|
+
/** @internal */
|
|
16
18
|
constructor(schema, name) {
|
|
17
19
|
super(schema, name);
|
|
18
20
|
this._definition = "";
|
|
@@ -37,13 +39,18 @@ export class Phenomenon extends SchemaItem {
|
|
|
37
39
|
fromJSONSync(phenomenonProps) {
|
|
38
40
|
super.fromJSONSync(phenomenonProps);
|
|
39
41
|
if (this._definition !== "" && phenomenonProps.definition.toLowerCase() !== this._definition.toLowerCase())
|
|
40
|
-
throw new
|
|
42
|
+
throw new ECSchemaError(ECSchemaStatus.InvalidECJson, `The Phenomenon ${this.name} has an invalid 'definition' attribute.`);
|
|
41
43
|
else if (this._definition === "")
|
|
42
44
|
this._definition = phenomenonProps.definition;
|
|
43
45
|
}
|
|
44
46
|
async fromJSON(phenomenonProps) {
|
|
45
47
|
this.fromJSONSync(phenomenonProps);
|
|
46
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
*
|
|
51
|
+
* @param definition
|
|
52
|
+
* @internal
|
|
53
|
+
*/
|
|
47
54
|
async setDefinition(definition) {
|
|
48
55
|
this._definition = definition;
|
|
49
56
|
}
|
|
@@ -61,10 +68,11 @@ export class Phenomenon extends SchemaItem {
|
|
|
61
68
|
* Type assertion to check if the SchemaItem is of type Phenomenon.
|
|
62
69
|
* @param item The SchemaItem to check.
|
|
63
70
|
* @returns The item cast to Phenomenon if it is a Phenomenon, undefined otherwise.
|
|
71
|
+
* @internal
|
|
64
72
|
*/
|
|
65
73
|
static assertIsPhenomenon(item) {
|
|
66
74
|
if (!this.isPhenomenon(item))
|
|
67
|
-
throw new
|
|
75
|
+
throw new ECSchemaError(ECSchemaStatus.InvalidSchemaItemType, `Expected '${SchemaItemType.Phenomenon}' (Phenomenon)`);
|
|
68
76
|
}
|
|
69
77
|
}
|
|
70
78
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Phenomenon.js","sourceRoot":"","sources":["../../../src/Metadata/Phenomenon.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Phenomenon.js","sourceRoot":"","sources":["../../../src/Metadata/Phenomenon.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,uBAAuB;AACvB,MAAM,OAAO,UAAW,SAAQ,UAAU;IACf,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC;IACpE,gBAAgB;IACT,MAAM,KAAc,cAAc,KAAK,OAAO,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;IACzE,WAAW,CAAS,CAAC,sKAAsK;IAEnM,gBAAgB;IAChB,YAAY,MAAc,EAAE,IAAY;QACtC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACxB,CAAC;IAED,IAAW,UAAU,KAAa,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAE5D;;;;OAIG;IACa,MAAM,CAAC,aAAsB,KAAK,EAAE,uBAAgC,KAAK;QACvF,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,oBAAoB,CAAQ,CAAC;QACzE,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACxC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,gBAAgB;IACA,KAAK,CAAC,KAAK,CAAC,SAAmB;QAC7C,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACjD,WAAW,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACxD,OAAO,WAAW,CAAC;IACrB,CAAC;IAEe,YAAY,CAAC,eAAgC;QAC3D,KAAK,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QACpC,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE,IAAI,eAAe,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;YACxG,MAAM,IAAI,aAAa,CAAC,cAAc,CAAC,aAAa,EAAE,kBAAkB,IAAI,CAAC,IAAI,yCAAyC,CAAC,CAAC;aACzH,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE;YAC9B,IAAI,CAAC,WAAW,GAAG,eAAe,CAAC,UAAU,CAAC;IAClD,CAAC;IAEe,KAAK,CAAC,QAAQ,CAAC,eAAgC;QAC7D,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACO,KAAK,CAAC,aAAa,CAAC,UAAkB;QAC9C,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,YAAY,CAAC,IAAiB;QAC1C,IAAI,IAAI,IAAI,IAAI,CAAC,cAAc,KAAK,cAAc,CAAC,UAAU;YAC3D,OAAO,IAAI,CAAC;QAEd,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,kBAAkB,CAAC,IAAiB;QAChD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YAC1B,MAAM,IAAI,aAAa,CAAC,cAAc,CAAC,qBAAqB,EAAE,aAAa,cAAc,CAAC,UAAU,gBAAgB,CAAC,CAAC;IAC1H,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAgB,iBAAkB,SAAQ,UAAU;CAGzD","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Metadata\r\n */\r\n\r\nimport { PhenomenonProps } from \"../Deserialization/JsonProps\";\r\nimport { SchemaItemType } from \"../ECObjects\";\r\nimport { ECSchemaError, ECSchemaStatus } from \"../Exception\";\r\nimport { Schema } from \"./Schema\";\r\nimport { SchemaItem } from \"./SchemaItem\";\r\n\r\n/** @public @preview */\r\nexport class Phenomenon extends SchemaItem {\r\n public override readonly schemaItemType = Phenomenon.schemaItemType;\r\n /** @internal */\r\n public static override get schemaItemType() { return SchemaItemType.Phenomenon; }\r\n private _definition: string; // Contains a combination of Phenomena names which form this Phenomenon. Each Phenomena name is separated by a * and may have an exponent, specified using parentheses\r\n\r\n /** @internal */\r\n constructor(schema: Schema, name: string) {\r\n super(schema, name);\r\n this._definition = \"\";\r\n }\r\n\r\n public get definition(): string { return this._definition; }\r\n\r\n /**\r\n * Save this Phenomenon's properties to an object for serializing to JSON.\r\n * @param standalone Serialization includes only this object (as opposed to the full schema).\r\n * @param includeSchemaVersion Include the Schema's version information in the serialized object.\r\n */\r\n public override toJSON(standalone: boolean = false, includeSchemaVersion: boolean = false): PhenomenonProps {\r\n const schemaJson = super.toJSON(standalone, includeSchemaVersion) as any;\r\n schemaJson.definition = this.definition;\r\n return schemaJson;\r\n }\r\n\r\n /** @internal */\r\n public override async toXml(schemaXml: Document): Promise<Element> {\r\n const itemElement = await super.toXml(schemaXml);\r\n itemElement.setAttribute(\"definition\", this.definition);\r\n return itemElement;\r\n }\r\n\r\n public override fromJSONSync(phenomenonProps: PhenomenonProps) {\r\n super.fromJSONSync(phenomenonProps);\r\n if (this._definition !== \"\" && phenomenonProps.definition.toLowerCase() !== this._definition.toLowerCase())\r\n throw new ECSchemaError(ECSchemaStatus.InvalidECJson, `The Phenomenon ${this.name} has an invalid 'definition' attribute.`);\r\n else if (this._definition === \"\")\r\n this._definition = phenomenonProps.definition;\r\n }\r\n\r\n public override async fromJSON(phenomenonProps: PhenomenonProps) {\r\n this.fromJSONSync(phenomenonProps);\r\n }\r\n\r\n /**\r\n *\r\n * @param definition\r\n * @internal\r\n */\r\n protected async setDefinition(definition: string) {\r\n this._definition = definition;\r\n }\r\n\r\n /**\r\n * Type guard to check if the SchemaItem is of type Phenomenon.\r\n * @param item The SchemaItem to check.\r\n * @returns True if the item is a Phenomenon, false otherwise.\r\n */\r\n public static isPhenomenon(item?: SchemaItem): item is Phenomenon {\r\n if (item && item.schemaItemType === SchemaItemType.Phenomenon)\r\n return true;\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Type assertion to check if the SchemaItem is of type Phenomenon.\r\n * @param item The SchemaItem to check.\r\n * @returns The item cast to Phenomenon if it is a Phenomenon, undefined otherwise.\r\n * @internal\r\n */\r\n public static assertIsPhenomenon(item?: SchemaItem): asserts item is Phenomenon {\r\n if (!this.isPhenomenon(item))\r\n throw new ECSchemaError(ECSchemaStatus.InvalidSchemaItemType, `Expected '${SchemaItemType.Phenomenon}' (Phenomenon)`);\r\n }\r\n}\r\n\r\n/**\r\n * @internal\r\n * An abstract class used for schema editing.\r\n */\r\nexport abstract class MutablePhenomenon extends Phenomenon {\r\n public abstract override setDefinition(definition: string): Promise<void>;\r\n public abstract override setDisplayLabel(displayLabel: string): void;\r\n}\r\n"]}
|
|
@@ -14,19 +14,21 @@ import { type RelationshipClass } from "./RelationshipClass";
|
|
|
14
14
|
import { Schema } from "./Schema";
|
|
15
15
|
/**
|
|
16
16
|
* A common abstract class for all ECProperty types.
|
|
17
|
-
* @
|
|
17
|
+
* @public @preview
|
|
18
18
|
*/
|
|
19
19
|
export declare abstract class Property implements CustomAttributeContainerProps {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
protected _kindOfQuantity?: LazyLoadedKindOfQuantity;
|
|
20
|
+
private _name;
|
|
21
|
+
private _class;
|
|
22
|
+
private _description?;
|
|
23
|
+
private _label?;
|
|
24
|
+
private _isReadOnly?;
|
|
25
|
+
private _priority?;
|
|
26
|
+
private _category?;
|
|
27
|
+
private _kindOfQuantity?;
|
|
29
28
|
private _customAttributes?;
|
|
29
|
+
/** @internal */
|
|
30
|
+
protected _type: PropertyType;
|
|
31
|
+
/** @internal */
|
|
30
32
|
constructor(ecClass: ECClass, name: string, type: PropertyType);
|
|
31
33
|
isArray(): this is AnyArrayProperty;
|
|
32
34
|
isPrimitive(): this is AnyPrimitiveProperty;
|
|
@@ -57,7 +59,9 @@ export declare abstract class Property implements CustomAttributeContainerProps
|
|
|
57
59
|
toXml(schemaXml: Document): Promise<Element>;
|
|
58
60
|
fromJSONSync(propertyProps: PropertyProps): void;
|
|
59
61
|
fromJSON(propertyProps: PropertyProps): Promise<void>;
|
|
62
|
+
/** @internal */
|
|
60
63
|
protected addCustomAttribute(customAttribute: CustomAttribute): void;
|
|
64
|
+
/** @internal */
|
|
61
65
|
protected setName(name: ECName): void;
|
|
62
66
|
/**
|
|
63
67
|
* @internal Used in schema editing.
|
|
@@ -97,22 +101,24 @@ export declare abstract class Property implements CustomAttributeContainerProps
|
|
|
97
101
|
*/
|
|
98
102
|
static isProperty(object: any): object is AnyProperty;
|
|
99
103
|
}
|
|
100
|
-
/**
|
|
101
|
-
* @beta
|
|
102
|
-
*/
|
|
103
|
-
export type PropertyHandler = (name: string, property: Property) => void;
|
|
104
|
-
/** @beta */
|
|
104
|
+
/** @public @preview */
|
|
105
105
|
export declare abstract class PrimitiveOrEnumPropertyBase extends Property {
|
|
106
|
+
/** @internal */
|
|
106
107
|
protected _extendedTypeName?: string;
|
|
108
|
+
/** @internal */
|
|
107
109
|
protected _minLength?: number;
|
|
110
|
+
/** @internal */
|
|
108
111
|
protected _maxLength?: number;
|
|
112
|
+
/** @internal */
|
|
109
113
|
protected _minValue?: number;
|
|
114
|
+
/** @internal */
|
|
110
115
|
protected _maxValue?: number;
|
|
111
116
|
get extendedTypeName(): string | undefined;
|
|
112
117
|
get minLength(): number | undefined;
|
|
113
118
|
get maxLength(): number | undefined;
|
|
114
119
|
get minValue(): number | undefined;
|
|
115
120
|
get maxValue(): number | undefined;
|
|
121
|
+
/** @internal */
|
|
116
122
|
constructor(ecClass: ECClass, name: string, type: PropertyType);
|
|
117
123
|
/**
|
|
118
124
|
* Save this PrimitiveOrEnumPropertyBase's properties to an object for serializing to JSON.
|
|
@@ -143,9 +149,10 @@ export declare abstract class PrimitiveOrEnumPropertyBase extends Property {
|
|
|
143
149
|
protected setMaxValue(maxValue: number): void;
|
|
144
150
|
fromJSON(propertyBaseProps: PrimitiveOrEnumPropertyBaseProps): Promise<void>;
|
|
145
151
|
}
|
|
146
|
-
/** @
|
|
152
|
+
/** @public @preview */
|
|
147
153
|
export declare class PrimitiveProperty extends PrimitiveOrEnumPropertyBase {
|
|
148
154
|
get primitiveType(): PrimitiveType;
|
|
155
|
+
/** @internal */
|
|
149
156
|
constructor(ecClass: ECClass, name: string, primitiveType?: PrimitiveType);
|
|
150
157
|
fromJSONSync(primitivePropertyProps: PrimitivePropertyProps): void;
|
|
151
158
|
fromJSON(primitivePropertyProps: PrimitivePropertyProps): Promise<void>;
|
|
@@ -156,24 +163,28 @@ export declare class PrimitiveProperty extends PrimitiveOrEnumPropertyBase {
|
|
|
156
163
|
/** @internal */
|
|
157
164
|
toXml(schemaXml: Document): Promise<Element>;
|
|
158
165
|
}
|
|
159
|
-
/** @
|
|
166
|
+
/** @public @preview */
|
|
160
167
|
export declare class EnumerationProperty extends PrimitiveOrEnumPropertyBase {
|
|
168
|
+
/** @internal */
|
|
161
169
|
protected _enumeration?: LazyLoadedEnumeration;
|
|
162
170
|
get enumeration(): LazyLoadedEnumeration | undefined;
|
|
163
171
|
/**
|
|
164
172
|
* Save this EnumerationProperty's properties to an object for serializing to JSON.
|
|
165
173
|
*/
|
|
166
174
|
toJSON(): EnumerationPropertyProps;
|
|
175
|
+
/** @internal */
|
|
167
176
|
constructor(ecClass: ECClass, name: string, type: LazyLoadedEnumeration);
|
|
168
177
|
fromJSONSync(enumerationPropertyProps: EnumerationPropertyProps): void;
|
|
169
178
|
/** @internal */
|
|
170
179
|
toXml(schemaXml: Document): Promise<Element>;
|
|
171
180
|
fromJSON(enumerationPropertyProps: EnumerationPropertyProps): Promise<void>;
|
|
172
181
|
}
|
|
173
|
-
/** @
|
|
182
|
+
/** @public @preview */
|
|
174
183
|
export declare class StructProperty extends Property {
|
|
184
|
+
/** @internal */
|
|
175
185
|
protected _structClass: StructClass;
|
|
176
186
|
get structClass(): StructClass;
|
|
187
|
+
/** @internal */
|
|
177
188
|
constructor(ecClass: ECClass, name: string, type: StructClass);
|
|
178
189
|
/**
|
|
179
190
|
* Save this StructProperty's properties to an object for serializing to JSON.
|
|
@@ -184,9 +195,11 @@ export declare class StructProperty extends Property {
|
|
|
184
195
|
fromJSONSync(structPropertyProps: StructPropertyProps): void;
|
|
185
196
|
fromJSON(structPropertyProps: StructPropertyProps): Promise<void>;
|
|
186
197
|
}
|
|
187
|
-
/** @
|
|
198
|
+
/** @public @preview */
|
|
188
199
|
export declare class NavigationProperty extends Property {
|
|
200
|
+
/** @internal */
|
|
189
201
|
protected _relationshipClass: LazyLoadedRelationshipClass;
|
|
202
|
+
/** @internal */
|
|
190
203
|
protected _direction: StrengthDirection;
|
|
191
204
|
get relationshipClass(): LazyLoadedRelationshipClass;
|
|
192
205
|
getRelationshipClassSync(): RelationshipClass | undefined;
|
|
@@ -197,12 +210,15 @@ export declare class NavigationProperty extends Property {
|
|
|
197
210
|
toJSON(): NavigationPropertyProps;
|
|
198
211
|
/** @internal */
|
|
199
212
|
toXml(schemaXml: Document): Promise<Element>;
|
|
213
|
+
/** @internal */
|
|
200
214
|
constructor(ecClass: ECClass, name: string, relationship: LazyLoadedRelationshipClass, direction?: StrengthDirection);
|
|
201
215
|
}
|
|
202
216
|
type Constructor<T> = new (...args: any[]) => T;
|
|
203
|
-
/** @
|
|
217
|
+
/** @public @preview */
|
|
204
218
|
export declare abstract class ArrayProperty extends Property {
|
|
219
|
+
/** @internal */
|
|
205
220
|
protected _minOccurs: number;
|
|
221
|
+
/** @internal */
|
|
206
222
|
protected _maxOccurs?: number;
|
|
207
223
|
get minOccurs(): number;
|
|
208
224
|
get maxOccurs(): number | undefined;
|
|
@@ -216,8 +232,9 @@ export declare abstract class ArrayProperty extends Property {
|
|
|
216
232
|
protected setMaxOccurs(maxOccurs: number): void;
|
|
217
233
|
}
|
|
218
234
|
declare const PrimitiveArrayProperty_base: typeof PrimitiveProperty & Constructor<ArrayProperty>;
|
|
219
|
-
/** @
|
|
235
|
+
/** @public @preview */
|
|
220
236
|
export declare class PrimitiveArrayProperty extends PrimitiveArrayProperty_base {
|
|
237
|
+
/** @internal */
|
|
221
238
|
constructor(ecClass: ECClass, name: string, primitiveType?: PrimitiveType);
|
|
222
239
|
/**
|
|
223
240
|
* Save this PrimitiveArrayProperty's properties to an object for serializing to JSON.
|
|
@@ -225,24 +242,25 @@ export declare class PrimitiveArrayProperty extends PrimitiveArrayProperty_base
|
|
|
225
242
|
toJSON(): PrimitiveArrayPropertyProps;
|
|
226
243
|
}
|
|
227
244
|
declare const EnumerationArrayProperty_base: typeof EnumerationProperty & Constructor<ArrayProperty>;
|
|
228
|
-
/** @
|
|
245
|
+
/** @public @preview */
|
|
229
246
|
export declare class EnumerationArrayProperty extends EnumerationArrayProperty_base {
|
|
230
247
|
constructor(ecClass: ECClass, name: string, type: LazyLoadedEnumeration);
|
|
231
248
|
}
|
|
232
249
|
declare const StructArrayProperty_base: typeof StructProperty & Constructor<ArrayProperty>;
|
|
233
|
-
/** @
|
|
250
|
+
/** @public @preview */
|
|
234
251
|
export declare class StructArrayProperty extends StructArrayProperty_base {
|
|
252
|
+
/** @internal */
|
|
235
253
|
constructor(ecClass: ECClass, name: string, type: StructClass);
|
|
236
254
|
}
|
|
237
|
-
/** @
|
|
255
|
+
/** @public @preview */
|
|
238
256
|
export type AnyArrayProperty = PrimitiveArrayProperty | EnumerationArrayProperty | StructArrayProperty;
|
|
239
|
-
/** @
|
|
257
|
+
/** @public @preview */
|
|
240
258
|
export type AnyPrimitiveProperty = PrimitiveProperty | PrimitiveArrayProperty;
|
|
241
|
-
/** @
|
|
259
|
+
/** @public @preview */
|
|
242
260
|
export type AnyEnumerationProperty = EnumerationProperty | EnumerationArrayProperty;
|
|
243
|
-
/** @
|
|
261
|
+
/** @public @preview */
|
|
244
262
|
export type AnyStructProperty = StructProperty | StructArrayProperty;
|
|
245
|
-
/** @
|
|
263
|
+
/** @public @preview */
|
|
246
264
|
export type AnyProperty = AnyPrimitiveProperty | AnyEnumerationProperty | AnyStructProperty | NavigationProperty;
|
|
247
265
|
/**
|
|
248
266
|
* Hackish approach that works like a "friend class" so we can access protected members without making them public.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Property.d.ts","sourceRoot":"","sources":["../../../src/Metadata/Property.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EACe,wBAAwB,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,gCAAgC,EACpI,sBAAsB,EAAE,aAAa,EAAE,mBAAmB,EAC3D,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAsB,aAAa,EAAyC,iBAAiB,EAA6B,MAAM,cAAc,CAAC;AAEtJ,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AACnJ,OAAO,EAAE,YAAY,EAA2C,MAAM,kBAAkB,CAAC;AAEzF,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,6BAA6B,EAAE,kBAAkB,EAA6B,MAAM,mBAAmB,CAAC;AAElI,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC;;;GAGG;AACH,8BAAsB,QAAS,YAAW,6BAA6B;IACrE,
|
|
1
|
+
{"version":3,"file":"Property.d.ts","sourceRoot":"","sources":["../../../src/Metadata/Property.ts"],"names":[],"mappings":"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"}
|