@itwin/presentation-common
Version:
Common pieces for iModel.js presentation packages
94 lines • 3.51 kB
JavaScript
;
/*---------------------------------------------------------------------------------------------
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
* See LICENSE.md in the project root for license terms and full copyright notice.
*--------------------------------------------------------------------------------------------*/
/** @packageDocumentation
* @module Content
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.Item = void 0;
const LabelDefinition_js_1 = require("../LabelDefinition.js");
const Utils_js_1 = require("../Utils.js");
/**
* A data structure that represents a single content record.
* @public
*/
class Item {
/**
* Keys of input instances that caused this item to be included in content. Only set if the content is
* created with [[ContentFlags.IncludeInputKeys]] flag.
*/
inputKeys;
/** Keys of instances whose data is contained in this item */
primaryKeys;
/** Display label of the item */
label;
/** For cases when item consists only of same class instances, information about the ECClass */
classInfo;
/** Raw values dictionary */
values;
/** Display values dictionary */
displayValues;
/** List of field names whose values are merged (see [Merging values]($docs/presentation/content/Terminology#value-merging)) */
mergedFieldNames;
/** Extended data injected into this content item */
extendedData;
constructor(primaryKeysOrProps, label, imageId, classInfo, values, displayValues, mergedFieldNames, extendedData) {
/* c8 ignore next 12 */
const props = Array.isArray(primaryKeysOrProps)
? {
primaryKeys: primaryKeysOrProps,
label: typeof label === "string" ? LabelDefinition_js_1.LabelDefinition.fromLabelString(label) : label,
imageId: imageId,
classInfo,
values: values,
displayValues: displayValues,
mergedFieldNames: mergedFieldNames,
extendedData,
}
: primaryKeysOrProps;
if ("inputKeys" in props) {
this.inputKeys = props.inputKeys;
}
this.primaryKeys = props.primaryKeys;
this.classInfo = props.classInfo;
this.values = props.values;
this.displayValues = props.displayValues;
this.mergedFieldNames = props.mergedFieldNames;
this.extendedData = props.extendedData;
this.label = props.label;
}
/**
* Is value of field with the specified name merged in this record.
*/
isFieldMerged(fieldName) {
return -1 !== this.mergedFieldNames.indexOf(fieldName);
}
/** Serialize this object to JSON */
toJSON() {
const { label, ...baseItem } = this;
return (0, Utils_js_1.omitUndefined)({
...baseItem,
labelDefinition: label,
label,
});
}
/** Deserialize [[Item]] from JSON */
static fromJSON(json) {
if (!json) {
return undefined;
}
if (typeof json === "string") {
return Item.fromJSON(JSON.parse(json));
}
// eslint-disable-next-line @typescript-eslint/no-deprecated
const { labelDefinition, label, ...baseJson } = json;
return new Item({
...baseJson,
label: label ?? labelDefinition,
});
}
}
exports.Item = Item;
//# sourceMappingURL=Item.js.map