/*! * SAPUI5 * Copyright (c) 2025 SAP SE or an SAP affiliate company. All rights reserved. */ import { SinaObject, SinaObjectProperties } from "./SinaObject"; import { AttributeMetadataBase } from "./AttributeMetadataBase"; import { Sina } from "./Sina"; import { SearchResultSetItemAttribute } from "./SearchResultSetItemAttribute"; import { SearchResultSetItemAttributeGroupMembership } from "./SearchResultSetItemAttributeGroupMembership"; import { SearchResultSetItem } from "./SearchResultSetItem"; import { NavigationTarget } from "./NavigationTarget"; export interface SearchResultSetItemAttributeBaseOptions extends SinaObjectProperties { id: string; label?: string; metadata: AttributeMetadataBase; groups?: Array; sina?: Sina; parent?: SearchResultSetItem; defaultNavigationTarget?: NavigationTarget; navigationTargets?: Array; } export abstract class SearchResultSetItemAttributeBase extends SinaObject { // _meta: { // properties: { // id: { // required: true // }, // metadata: { // required: true // }, // groups: { // required: false, // defaul: function () { // return []; // } // } // } // }, id: string; label?: string; metadata: AttributeMetadataBase; groups: Array = []; parent?: SearchResultSetItem; defaultNavigationTarget: NavigationTarget; navigationTargets: Array; constructor(properties: SearchResultSetItemAttributeBaseOptions) { super(properties); this.id = properties.id; this.label = properties.label; this.metadata = properties.metadata; this.groups = properties.groups; this.parent = properties.parent; this.setDefaultNavigationTarget(properties.defaultNavigationTarget); this.setNavigationTargets(properties.navigationTargets || []); } abstract hasHighlight(): boolean; setDefaultNavigationTarget(navigationTarget: NavigationTarget) { if (!navigationTarget) { this.defaultNavigationTarget = null; return; } this.defaultNavigationTarget = navigationTarget; navigationTarget.parent = this; } setNavigationTargets(navigationTargets: Array) { this.navigationTargets = []; if (!navigationTargets) { return; } for (const navigationTarget of navigationTargets) { this.addNavigationTarget(navigationTarget); } } addNavigationTarget(navigationTarget: NavigationTarget) { this.navigationTargets.push(navigationTarget); navigationTarget.parent = this; } toString(): string { return this.id; } abstract getSubAttributes(): Array; abstract getValueHighlighted(): string; abstract getValueFormatted(): string; }