mirror of
https://github.com/nasa/openmct.git
synced 2025-04-11 21:31:06 +00:00
[Telemetry] Legacy adapter handles source remap
Update the Legacy Telemetry Adapter to handle source remapping for telemetry which has it. fixes https://github.com/nasa/openmct/issues/1724
This commit is contained in:
parent
a3a55d3b48
commit
ca8cad0a74
@ -25,10 +25,12 @@
|
||||
*/
|
||||
define(
|
||||
[
|
||||
'../../../src/api/objects/object-utils'
|
||||
'../../../src/api/objects/object-utils',
|
||||
'lodash'
|
||||
],
|
||||
function (
|
||||
objectUtils
|
||||
objectUtils,
|
||||
_
|
||||
) {
|
||||
|
||||
var ZERO = function () {
|
||||
@ -189,14 +191,17 @@ define(
|
||||
return fullRequest;
|
||||
};
|
||||
|
||||
function asSeries(telemetry, defaultDomain, defaultRange, sourceMap) {
|
||||
function getValue(index, key) {
|
||||
return telemetry[index][sourceMap[key].source];
|
||||
}
|
||||
|
||||
function asSeries(telemetry, defaultDomain, defaultRange) {
|
||||
return {
|
||||
getRangeValue: function (index, range) {
|
||||
return telemetry[index][range || defaultRange];
|
||||
return getValue(index, range || defaultRange);
|
||||
},
|
||||
getDomainValue: function (index, domain) {
|
||||
return telemetry[index][domain || defaultDomain];
|
||||
return getValue(index, domain || defaultDomain);
|
||||
},
|
||||
getPointCount: function () {
|
||||
return telemetry.length;
|
||||
@ -223,9 +228,11 @@ define(
|
||||
var telemetryAPI = this.openmct.telemetry;
|
||||
|
||||
var metadata = telemetryAPI.getMetadata(domainObject);
|
||||
var defaultDomain = metadata.valuesForHints(['domain'])[0].source;
|
||||
var defaultDomain = metadata.valuesForHints(['domain'])[0].key;
|
||||
var defaultRange = metadata.valuesForHints(['range'])[0];
|
||||
defaultRange = defaultRange ? defaultRange.source : undefined;
|
||||
defaultRange = defaultRange ? defaultRange.key : undefined;
|
||||
|
||||
var sourceMap = _.indexBy(metadata.values(), 'key');
|
||||
|
||||
var isLegacyProvider = telemetryAPI.findRequestProvider(domainObject) ===
|
||||
telemetryAPI.legacyProvider;
|
||||
@ -250,7 +257,7 @@ define(
|
||||
requestTelemetryFromService().then(getRelevantResponse);
|
||||
} else {
|
||||
return telemetryAPI.request(domainObject, fullRequest).then(function (telemetry) {
|
||||
return asSeries(telemetry, defaultDomain, defaultRange);
|
||||
return asSeries(telemetry, defaultDomain, defaultRange, sourceMap);
|
||||
});
|
||||
}
|
||||
};
|
||||
@ -286,15 +293,17 @@ define(
|
||||
var telemetryAPI = this.openmct.telemetry;
|
||||
|
||||
var metadata = telemetryAPI.getMetadata(domainObject);
|
||||
var defaultDomain = metadata.valuesForHints(['domain'])[0].source;
|
||||
var defaultDomain = metadata.valuesForHints(['domain'])[0].key;
|
||||
var defaultRange = metadata.valuesForHints(['range'])[0];
|
||||
defaultRange = defaultRange ? defaultRange.source : undefined;
|
||||
defaultRange = defaultRange ? defaultRange.key : undefined;
|
||||
|
||||
var sourceMap = _.indexBy(metadata.values(), 'key');
|
||||
|
||||
var isLegacyProvider = telemetryAPI.findSubscriptionProvider(domainObject) ===
|
||||
telemetryAPI.legacyProvider;
|
||||
|
||||
function update(telemetry) {
|
||||
callback(asSeries([telemetry], defaultDomain, defaultRange));
|
||||
callback(asSeries([telemetry], defaultDomain, defaultRange, sourceMap));
|
||||
}
|
||||
|
||||
// Unpack the relevant telemetry series
|
||||
|
@ -34,6 +34,7 @@ define(
|
||||
mockUnsubscribe,
|
||||
telemetry,
|
||||
mockTelemetryAPI,
|
||||
mockMetadata,
|
||||
mockAPI;
|
||||
|
||||
function mockPromise(value) {
|
||||
@ -90,14 +91,23 @@ define(
|
||||
"findRequestProvider",
|
||||
"findSubscriptionProvider"
|
||||
]);
|
||||
mockTelemetryAPI.getMetadata.andReturn({
|
||||
valuesForHints: function (hint) {
|
||||
var metadatum = {};
|
||||
metadatum[hint] = "foo";
|
||||
return [metadatum];
|
||||
}
|
||||
|
||||
mockMetadata = jasmine.createSpyObj('telemetryMetadata', [
|
||||
'valuesForHints',
|
||||
'values'
|
||||
]);
|
||||
|
||||
mockMetadata.valuesForHints.andCallFake(function (hints) {
|
||||
var hint = hints[0];
|
||||
var metadatum = {
|
||||
key: 'default' + hint
|
||||
};
|
||||
metadatum[hint] = "foo";
|
||||
return [metadatum];
|
||||
});
|
||||
|
||||
mockTelemetryAPI.getMetadata.andReturn(mockMetadata);
|
||||
|
||||
mockAPI = {
|
||||
telemetry: mockTelemetryAPI,
|
||||
time: {
|
||||
@ -150,8 +160,8 @@ define(
|
||||
key: "testKey", // from model
|
||||
start: 42, // from argument
|
||||
domain: 'mockTimeSystem',
|
||||
domains: [{ domain: "foo" }],
|
||||
ranges: [{ range: "foo" }]
|
||||
domains: [{ domain: "foo", key: 'defaultdomain' }],
|
||||
ranges: [{ range: "foo", key: 'defaultrange' }]
|
||||
}]);
|
||||
});
|
||||
|
||||
@ -172,8 +182,8 @@ define(
|
||||
start: 0,
|
||||
end: 1,
|
||||
domain: 'mockTimeSystem',
|
||||
domains: [{ domain: "foo" }],
|
||||
ranges: [{ range: "foo" }]
|
||||
domains: [{ domain: "foo", key: 'defaultdomain' }],
|
||||
ranges: [{ range: "foo", key: 'defaultrange' }]
|
||||
});
|
||||
});
|
||||
|
||||
@ -191,8 +201,8 @@ define(
|
||||
start: 0,
|
||||
end: 1,
|
||||
domain: 'mockTimeSystem',
|
||||
domains: [{ domain: "foo" }],
|
||||
ranges: [{ range: "foo" }]
|
||||
domains: [{ domain: "foo", key: 'defaultdomain' }],
|
||||
ranges: [{ range: "foo", key: 'defaultrange' }]
|
||||
});
|
||||
});
|
||||
|
||||
@ -240,6 +250,21 @@ define(
|
||||
var mockProvider = {};
|
||||
var dunzo = false;
|
||||
|
||||
mockMetadata.values.andReturn([
|
||||
{
|
||||
key: 'defaultrange',
|
||||
source: 'prop1'
|
||||
},
|
||||
{
|
||||
key: 'defaultdomain',
|
||||
source: 'prop2'
|
||||
},
|
||||
{
|
||||
key: 'prop3',
|
||||
source: 'prop3'
|
||||
}
|
||||
]);
|
||||
|
||||
mockTelemetryAPI.findRequestProvider.andReturn(mockProvider);
|
||||
mockTelemetryAPI.request.andReturn(Promise.resolve(mockTelemetry));
|
||||
|
||||
@ -257,6 +282,18 @@ define(
|
||||
expect(returnedTelemetry.getDomainValue).toBeDefined();
|
||||
expect(returnedTelemetry.getRangeValue).toBeDefined();
|
||||
expect(returnedTelemetry.getPointCount()).toBe(2);
|
||||
// Default domain + remap should work.
|
||||
expect(returnedTelemetry.getDomainValue(0)).toBe('val2');
|
||||
expect(returnedTelemetry.getDomainValue(1)).toBe('val5');
|
||||
// explicit domain should work
|
||||
expect(returnedTelemetry.getDomainValue(0, 'prop3')).toBe('val3');
|
||||
expect(returnedTelemetry.getDomainValue(1, 'prop3')).toBe('val6');
|
||||
// default range + remap should work
|
||||
expect(returnedTelemetry.getRangeValue(0)).toBe('val1');
|
||||
expect(returnedTelemetry.getRangeValue(1)).toBe('val4');
|
||||
// explicit range should work
|
||||
expect(returnedTelemetry.getRangeValue(0, 'prop3')).toBe('val3');
|
||||
expect(returnedTelemetry.getRangeValue(1, 'prop3')).toBe('val6');
|
||||
});
|
||||
|
||||
});
|
||||
@ -275,8 +312,8 @@ define(
|
||||
start: 0,
|
||||
end: 1,
|
||||
domain: 'mockTimeSystem',
|
||||
domains: [{ domain: "foo" }],
|
||||
ranges: [{ range: "foo" }]
|
||||
domains: [{ domain: "foo", key: "defaultdomain" }],
|
||||
ranges: [{ range: "foo", key: "defaultrange" }]
|
||||
}]
|
||||
);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user