[Time Conductor] Update fixed position from history

WTD-1515
This commit is contained in:
Victor Woeltjen
2015-09-08 16:53:06 -07:00
parent c026bfa17d
commit 760f4b818f

View File

@ -43,7 +43,8 @@ define(
handle, handle,
names = {}, // Cache names by ID names = {}, // Cache names by ID
values = {}, // Cache values by ID values = {}, // Cache values by ID
elementProxiesById = {}; elementProxiesById = {},
maxDomainValue = Number.POSITIVE_INFINITY;
// Convert from element x/y/width/height to an // Convert from element x/y/width/height to an
// appropriate ng-style argument, to position elements. // appropriate ng-style argument, to position elements.
@ -81,25 +82,51 @@ define(
return element.handles().map(generateDragHandle); return element.handles().map(generateDragHandle);
} }
// Update the displayed value for this object // Update the value displayed in elements of this telemetry object
function updateValue(telemetryObject) { function setDisplayedValue(telemetryObject, value, alarm) {
var id = telemetryObject && telemetryObject.getId(), var id = telemetryObject.getId();
(elementProxiesById[id] || []).forEach(function (element) {
names[id] = telemetryObject.getModel().name;
values[id] = telemetryFormatter.formatRangeValue(value);
element.name = names[id];
element.value = values[id];
element.cssClass = alarm && alarm.cssClass;
});
}
// Update the displayed value for this object, from a specific
// telemetry series
function updateValueFromSeries(telemetryObject, telemetrySeries) {
var index = telemetrySeries.getPointCount() - 1,
limit = telemetryObject && limit = telemetryObject &&
telemetryObject.getCapability('limit'), telemetryObject.getCapability('limit'),
datum = telemetryObject && datum = telemetryObject && handle.getDatum(
handle.getDatum(telemetryObject), telemetryObject,
alarm = limit && datum && limit.evaluate(datum); telemetrySeries,
index
);
if (id) { setDisplayedValue(
(elementProxiesById[id] || []).forEach(function (element) { telemetryObject,
names[id] = telemetryObject.getModel().name; telemetrySeries.getRangeValue(index),
values[id] = telemetryFormatter.formatRangeValue( limit && datum && limit.evaluate(datum)
handle.getRangeValue(telemetryObject) );
); }
element.name = names[id];
element.value = values[id]; // Update the displayed value for this object
element.cssClass = alarm && alarm.cssClass; function updateValue(telemetryObject) {
}); var limit = telemetryObject &&
telemetryObject.getCapability('limit'),
datum = telemetryObject &&
handle.getDatum(telemetryObject);
if (telemetryObject &&
handle.getDomainValue(telemetryObject) < maxDomainValue) {
setDisplayedValue(
telemetryObject,
handle.getRangeValue(telemetryObject),
limit && datum && limit.evaluate(datum)
);
} }
} }
@ -207,8 +234,14 @@ define(
} }
// Trigger a new query for telemetry data // Trigger a new query for telemetry data
function requery() { function updateDisplayBounds(bounds) {
subscribe($scope.domainObject); maxDomainValue = bounds.end;
if (handle) {
handle.request(
{ size: 1 }, // Only need a single data point
updateValueFromSeries
);
}
} }
// Add an element to this view // Add an element to this view
@ -286,10 +319,7 @@ define(
$scope.$on("mctDrop", handleDrop); $scope.$on("mctDrop", handleDrop);
// Respond to external bounds changes // Respond to external bounds changes
$scope.$on("telemetry:display:bounds", throttle(requery, 250)); $scope.$on("telemetry:display:bounds", updateDisplayBounds);
// Respond to external query range changes
$scope.$on("telemetry:query:bounds", throttle(requery, 250));
} }
/** /**