diff --git a/src/api/objects/ObjectAPI.js b/src/api/objects/ObjectAPI.js index 39a3e5039d0..6b46e85835a 100644 --- a/src/api/objects/ObjectAPI.js +++ b/src/api/objects/ObjectAPI.js @@ -554,28 +554,34 @@ export default class ObjectAPI { */ async getTelemetryPath(identifier, telemetryIdentifier) { const objectDetails = await this.get(identifier); - const telemetryPath = []; - if (objectDetails.composition && !['folder'].includes(objectDetails.type)) { - let sourceTelemetry = objectDetails.composition[0]; + let telemetryPath = []; + if (objectDetails?.type === 'folder') { + return telemetryPath; + } + + let sourceTelemetry = null; + if (telemetryIdentifier && utils.identifierEquals(identifier, telemetryIdentifier)) { + sourceTelemetry = identifier; + } else if (objectDetails.composition) { + sourceTelemetry = objectDetails.composition[0]; if (telemetryIdentifier) { - sourceTelemetry = objectDetails.composition.find( - (telemetrySource) => - this.makeKeyString(telemetrySource) === this.makeKeyString(telemetryIdentifier) + sourceTelemetry = objectDetails.composition.find((telemetrySource) => + utils.identifierEquals(telemetrySource, telemetryIdentifier) ); } - const compositionElement = await this.get(sourceTelemetry); - if (!['yamcs.telemetry', 'generator'].includes(compositionElement.type)) { - return telemetryPath; - } - const telemetryKey = compositionElement.identifier.key; - const telemetryPathObjects = await this.getOriginalPath(telemetryKey); - telemetryPathObjects.forEach((pathObject) => { - if (pathObject.type === 'root') { - return; - } - telemetryPath.unshift(pathObject.name); - }); } + + const compositionElement = await this.get(sourceTelemetry); + if (!['yamcs.telemetry', 'generator', 'yamcs.aggregate'].includes(compositionElement.type)) { + return telemetryPath; + } + + const telemetryPathObjects = await this.getOriginalPath(compositionElement.identifier); + telemetryPath = telemetryPathObjects + .reverse() + .filter((pathObject) => pathObject.type !== 'root') + .map((pathObject) => pathObject.name); + return telemetryPath; } diff --git a/src/api/tooltips/ToolTipAPI.js b/src/api/tooltips/ToolTipAPI.js index 425538e23ee..384ac2f1f08 100644 --- a/src/api/tooltips/ToolTipAPI.js +++ b/src/api/tooltips/ToolTipAPI.js @@ -57,13 +57,22 @@ class TooltipAPI { * @private for platform-internal use */ showTooltip(tooltip) { + this.removeAllTooltips(); + this.activeToolTips.push(tooltip); + tooltip.show(); + } + + /** + * API method to allow for removing all tooltips + */ + removeAllTooltips() { + if (!this.activeToolTips?.length) { + return; + } for (let i = this.activeToolTips.length - 1; i > -1; i--) { this.activeToolTips[i].destroy(); this.activeToolTips.splice(i, 1); } - this.activeToolTips.push(tooltip); - - tooltip.show(); } /** diff --git a/src/api/tooltips/components/tooltip-component.scss b/src/api/tooltips/components/tooltip-component.scss index e71ce501eae..fa9a57bd004 100644 --- a/src/api/tooltips/components/tooltip-component.scss +++ b/src/api/tooltips/components/tooltip-component.scss @@ -3,6 +3,7 @@ height: auto; width: auto; padding: $interiorMargin; + overflow-wrap: break-word; } .c-tooltip {