Browse Source

Version set to 1.1.1-SNAPSHOT. UI Widgets: Performance improvements, timeseries zoom support.

pull/53/head
Igor Kulikov 10 years ago
parent
commit
cf22f6a4b3
  1. 2
      application/pom.xml
  2. 2
      common/data/pom.xml
  3. 2
      common/message/pom.xml
  4. 2
      common/pom.xml
  5. 2
      common/transport/pom.xml
  6. 2
      dao/pom.xml
  7. 20
      dao/src/main/resources/system-data.cql
  8. 2
      extensions-api/pom.xml
  9. 2
      extensions-core/pom.xml
  10. 2
      extensions/extension-kafka/pom.xml
  11. 2
      extensions/extension-rabbitmq/pom.xml
  12. 2
      extensions/extension-rest-api-call/pom.xml
  13. 2
      extensions/pom.xml
  14. 2
      pom.xml
  15. 2
      tools/pom.xml
  16. 2
      transport/coap/pom.xml
  17. 2
      transport/http/pom.xml
  18. 2
      transport/mqtt/pom.xml
  19. 2
      transport/pom.xml
  20. 2
      ui/pom.xml
  21. 2
      ui/src/app/api/datasource.service.js
  22. 2
      ui/src/app/api/telemetry-websocket.service.js
  23. 24
      ui/src/app/components/dashboard.directive.js
  24. 74
      ui/src/app/components/widget.controller.js
  25. 9
      ui/src/app/components/widget.directive.js
  26. 45
      ui/src/app/widget/lib/map-widget.js

2
application/pom.xml

@ -20,7 +20,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>org.thingsboard</groupId> <groupId>org.thingsboard</groupId>
<version>1.1.0</version> <version>1.1.1-SNAPSHOT</version>
<artifactId>thingsboard</artifactId> <artifactId>thingsboard</artifactId>
</parent> </parent>
<groupId>org.thingsboard</groupId> <groupId>org.thingsboard</groupId>

2
common/data/pom.xml

@ -20,7 +20,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>org.thingsboard</groupId> <groupId>org.thingsboard</groupId>
<version>1.1.0</version> <version>1.1.1-SNAPSHOT</version>
<artifactId>common</artifactId> <artifactId>common</artifactId>
</parent> </parent>
<groupId>org.thingsboard.common</groupId> <groupId>org.thingsboard.common</groupId>

2
common/message/pom.xml

@ -20,7 +20,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>org.thingsboard</groupId> <groupId>org.thingsboard</groupId>
<version>1.1.0</version> <version>1.1.1-SNAPSHOT</version>
<artifactId>common</artifactId> <artifactId>common</artifactId>
</parent> </parent>
<groupId>org.thingsboard.common</groupId> <groupId>org.thingsboard.common</groupId>

2
common/pom.xml

@ -20,7 +20,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>org.thingsboard</groupId> <groupId>org.thingsboard</groupId>
<version>1.1.0</version> <version>1.1.1-SNAPSHOT</version>
<artifactId>thingsboard</artifactId> <artifactId>thingsboard</artifactId>
</parent> </parent>
<groupId>org.thingsboard</groupId> <groupId>org.thingsboard</groupId>

2
common/transport/pom.xml

@ -20,7 +20,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>org.thingsboard</groupId> <groupId>org.thingsboard</groupId>
<version>1.1.0</version> <version>1.1.1-SNAPSHOT</version>
<artifactId>common</artifactId> <artifactId>common</artifactId>
</parent> </parent>
<groupId>org.thingsboard.common</groupId> <groupId>org.thingsboard.common</groupId>

2
dao/pom.xml

@ -20,7 +20,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>org.thingsboard</groupId> <groupId>org.thingsboard</groupId>
<version>1.1.0</version> <version>1.1.1-SNAPSHOT</version>
<artifactId>thingsboard</artifactId> <artifactId>thingsboard</artifactId>
</parent> </parent>
<groupId>org.thingsboard</groupId> <groupId>org.thingsboard</groupId>

20
dao/src/main/resources/system-data.cql

File diff suppressed because one or more lines are too long

2
extensions-api/pom.xml

@ -20,7 +20,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>org.thingsboard</groupId> <groupId>org.thingsboard</groupId>
<version>1.1.0</version> <version>1.1.1-SNAPSHOT</version>
<artifactId>thingsboard</artifactId> <artifactId>thingsboard</artifactId>
</parent> </parent>
<groupId>org.thingsboard</groupId> <groupId>org.thingsboard</groupId>

2
extensions-core/pom.xml

@ -20,7 +20,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>org.thingsboard</groupId> <groupId>org.thingsboard</groupId>
<version>1.1.0</version> <version>1.1.1-SNAPSHOT</version>
<artifactId>thingsboard</artifactId> <artifactId>thingsboard</artifactId>
</parent> </parent>
<groupId>org.thingsboard</groupId> <groupId>org.thingsboard</groupId>

2
extensions/extension-kafka/pom.xml

@ -22,7 +22,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>org.thingsboard</groupId> <groupId>org.thingsboard</groupId>
<version>1.1.0</version> <version>1.1.1-SNAPSHOT</version>
<artifactId>extensions</artifactId> <artifactId>extensions</artifactId>
</parent> </parent>
<groupId>org.thingsboard.extensions</groupId> <groupId>org.thingsboard.extensions</groupId>

2
extensions/extension-rabbitmq/pom.xml

@ -20,7 +20,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>org.thingsboard</groupId> <groupId>org.thingsboard</groupId>
<version>1.1.0</version> <version>1.1.1-SNAPSHOT</version>
<artifactId>extensions</artifactId> <artifactId>extensions</artifactId>
</parent> </parent>
<groupId>org.thingsboard.extensions</groupId> <groupId>org.thingsboard.extensions</groupId>

2
extensions/extension-rest-api-call/pom.xml

@ -22,7 +22,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>org.thingsboard</groupId> <groupId>org.thingsboard</groupId>
<version>1.1.0</version> <version>1.1.1-SNAPSHOT</version>
<artifactId>extensions</artifactId> <artifactId>extensions</artifactId>
</parent> </parent>
<groupId>org.thingsboard.extensions</groupId> <groupId>org.thingsboard.extensions</groupId>

2
extensions/pom.xml

@ -20,7 +20,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>org.thingsboard</groupId> <groupId>org.thingsboard</groupId>
<version>1.1.0</version> <version>1.1.1-SNAPSHOT</version>
<artifactId>thingsboard</artifactId> <artifactId>thingsboard</artifactId>
</parent> </parent>
<groupId>org.thingsboard</groupId> <groupId>org.thingsboard</groupId>

2
pom.xml

@ -20,7 +20,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>org.thingsboard</groupId> <groupId>org.thingsboard</groupId>
<artifactId>thingsboard</artifactId> <artifactId>thingsboard</artifactId>
<version>1.1.0</version> <version>1.1.1-SNAPSHOT</version>
<packaging>pom</packaging> <packaging>pom</packaging>
<name>Thingsboard</name> <name>Thingsboard</name>

2
tools/pom.xml

@ -20,7 +20,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>org.thingsboard</groupId> <groupId>org.thingsboard</groupId>
<version>1.1.0</version> <version>1.1.1-SNAPSHOT</version>
<artifactId>thingsboard</artifactId> <artifactId>thingsboard</artifactId>
</parent> </parent>
<groupId>org.thingsboard</groupId> <groupId>org.thingsboard</groupId>

2
transport/coap/pom.xml

@ -20,7 +20,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>org.thingsboard</groupId> <groupId>org.thingsboard</groupId>
<version>1.1.0</version> <version>1.1.1-SNAPSHOT</version>
<artifactId>transport</artifactId> <artifactId>transport</artifactId>
</parent> </parent>
<groupId>org.thingsboard.transport</groupId> <groupId>org.thingsboard.transport</groupId>

2
transport/http/pom.xml

@ -20,7 +20,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>org.thingsboard</groupId> <groupId>org.thingsboard</groupId>
<version>1.1.0</version> <version>1.1.1-SNAPSHOT</version>
<artifactId>transport</artifactId> <artifactId>transport</artifactId>
</parent> </parent>
<groupId>org.thingsboard.transport</groupId> <groupId>org.thingsboard.transport</groupId>

2
transport/mqtt/pom.xml

@ -20,7 +20,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>org.thingsboard</groupId> <groupId>org.thingsboard</groupId>
<version>1.1.0</version> <version>1.1.1-SNAPSHOT</version>
<artifactId>transport</artifactId> <artifactId>transport</artifactId>
</parent> </parent>
<groupId>org.thingsboard.transport</groupId> <groupId>org.thingsboard.transport</groupId>

2
transport/pom.xml

@ -20,7 +20,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>org.thingsboard</groupId> <groupId>org.thingsboard</groupId>
<version>1.1.0</version> <version>1.1.1-SNAPSHOT</version>
<artifactId>thingsboard</artifactId> <artifactId>thingsboard</artifactId>
</parent> </parent>
<groupId>org.thingsboard</groupId> <groupId>org.thingsboard</groupId>

2
ui/pom.xml

@ -20,7 +20,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>org.thingsboard</groupId> <groupId>org.thingsboard</groupId>
<version>1.1.0</version> <version>1.1.1-SNAPSHOT</version>
<artifactId>thingsboard</artifactId> <artifactId>thingsboard</artifactId>
</parent> </parent>
<groupId>org.thingsboard</groupId> <groupId>org.thingsboard</groupId>

2
ui/src/app/api/datasource.service.js

@ -61,7 +61,7 @@ function DatasourceService($timeout, $log, telemetryWebsocketService, types, uti
}; };
if (listener.widget.type === types.widgetType.timeseries.value) { if (listener.widget.type === types.widgetType.timeseries.value) {
datasourceSubscription.subscriptionTimewindow = listener.subscriptionTimewindow; datasourceSubscription.subscriptionTimewindow = angular.copy(listener.subscriptionTimewindow);
} }
if (datasourceSubscription.datasourceType === types.datasourceType.device) { if (datasourceSubscription.datasourceType === types.datasourceType.device) {
datasourceSubscription.deviceId = listener.deviceId; datasourceSubscription.deviceId = listener.deviceId;

2
ui/src/app/api/telemetry-websocket.service.js

@ -220,7 +220,7 @@ function TelemetryWebsocketService($rootScope, $websocket, $timeout, $window, ty
dataStream.onError(onError); dataStream.onError(onError);
dataStream.onOpen(onOpen); dataStream.onOpen(onOpen);
dataStream.onClose(onClose); dataStream.onClose(onClose);
dataStream.onMessage(onMessage); dataStream.onMessage(onMessage, {autoApply: false});
} }
function closeSocket() { function closeSocket() {

24
ui/src/app/components/dashboard.directive.js

@ -164,13 +164,14 @@ function DashboardController($scope, $rootScope, $element, $timeout, $log, toast
gridsterParent = $('#gridster-parent', $element); gridsterParent = $('#gridster-parent', $element);
gridsterElement = angular.element($('#gridster-child', gridsterParent)); gridsterElement = angular.element($('#gridster-child', gridsterParent));
gridsterParent.scroll(function () { //TODO: widgets visibility
/*gridsterParent.scroll(function () {
updateVisibleRect(); updateVisibleRect();
}); });
gridsterParent.resize(function () { gridsterParent.resize(function () {
updateVisibleRect(); updateVisibleRect();
}); });*/
$scope.$watch('vm.isMobile', function () { $scope.$watch('vm.isMobile', function () {
vm.gridsterOpts.isMobile = vm.isMobileDisabled ? false : vm.isMobile; vm.gridsterOpts.isMobile = vm.isMobileDisabled ? false : vm.isMobile;
@ -188,7 +189,8 @@ function DashboardController($scope, $rootScope, $element, $timeout, $log, toast
gridster.columns = vm.columns; gridster.columns = vm.columns;
updateGridsterParams(); updateGridsterParams();
} }
updateVisibleRect(); //TODO: widgets visibility
//updateVisibleRect();
}); });
$scope.$watch('vm.margins', function () { $scope.$watch('vm.margins', function () {
@ -197,7 +199,8 @@ function DashboardController($scope, $rootScope, $element, $timeout, $log, toast
gridster.margins = vm.margins; gridster.margins = vm.margins;
updateGridsterParams(); updateGridsterParams();
} }
updateVisibleRect(); //TODO: widgets visibility
//updateVisibleRect();
}); });
$scope.$watch('vm.isEdit', function () { $scope.$watch('vm.isEdit', function () {
@ -213,7 +216,8 @@ function DashboardController($scope, $rootScope, $element, $timeout, $log, toast
$scope.$on('gridster-resized', function (event, sizes, theGridster) { $scope.$on('gridster-resized', function (event, sizes, theGridster) {
if (checkIsLocalGridsterElement(theGridster)) { if (checkIsLocalGridsterElement(theGridster)) {
gridster = theGridster; gridster = theGridster;
updateVisibleRect(false, true); //TODO: widgets visibility
//updateVisibleRect(false, true);
} }
}); });
@ -225,9 +229,10 @@ function DashboardController($scope, $rootScope, $element, $timeout, $log, toast
} else { } else {
vm.gridsterOpts.rowHeight = 'match'; vm.gridsterOpts.rowHeight = 'match';
} }
$timeout(function () { //TODO: widgets visibility
/*$timeout(function () {
updateVisibleRect(true); updateVisibleRect(true);
}, 500, false); }, 500, false);*/
} }
}); });
@ -283,7 +288,8 @@ function DashboardController($scope, $rootScope, $element, $timeout, $log, toast
} }
} }
function updateVisibleRect (force, containerResized) { //TODO: widgets visibility
/*function updateVisibleRect (force, containerResized) {
if (gridster) { if (gridster) {
var position = $(gridster.$element).position() var position = $(gridster.$element).position()
if (position) { if (position) {
@ -321,7 +327,7 @@ function DashboardController($scope, $rootScope, $element, $timeout, $log, toast
} }
} }
} }
} }*/
function checkIsLocalGridsterElement (gridster) { function checkIsLocalGridsterElement (gridster) {
return gridsterElement[0] == gridster.$element[0]; return gridsterElement[0] == gridster.$element[0];

74
ui/src/app/components/widget.controller.js

@ -44,16 +44,18 @@ export default function WidgetController($scope, $timeout, $window, $element, $q
var targetDeviceAliasId = null; var targetDeviceAliasId = null;
var targetDeviceId = null; var targetDeviceId = null;
var visible = false;
var bounds = {top: 0, left: 0, bottom: 0, right: 0}; //var bounds = {top: 0, left: 0, bottom: 0, right: 0};
//TODO: widgets visibility
/*var visible = false;*/
var lastWidth, lastHeight; var lastWidth, lastHeight;
var containerParent = $($element); var containerParent = $($element);
var container = $('#container', $element); var container = $('#container', $element);
var containerElement = container[0]; var containerElement = container[0];
var inited = false; var inited = false;
var gridsterItemElement; // var gridsterItemElement;
var timer; var timer;
var init = fns.init || function () { var init = fns.init || function () {
@ -160,18 +162,20 @@ export default function WidgetController($scope, $timeout, $window, $element, $q
}; };
vm.gridsterItemInitialized = gridsterItemInitialized; vm.gridsterItemInitialized = gridsterItemInitialized;
vm.visibleRectChanged = visibleRectChanged; //TODO: widgets visibility
/*vm.visibleRectChanged = visibleRectChanged;
function gridsterItemInitialized(item) {
if (item) {
gridsterItemElement = $(item.$element);
updateVisibility();
}
}
function visibleRectChanged(newVisibleRect) { function visibleRectChanged(newVisibleRect) {
visibleRect = newVisibleRect; visibleRect = newVisibleRect;
updateVisibility(); updateVisibility();
}*/
function gridsterItemInitialized(item) {
if (item) {
// gridsterItemElement = $(item.$element);
//updateVisibility();
onRedraw();
}
} }
initWidget(); initWidget();
@ -282,7 +286,8 @@ export default function WidgetController($scope, $timeout, $window, $element, $q
} }
} }
function updateVisibility(forceRedraw) { //TODO: widgets visibility
/*function updateVisibility(forceRedraw) {
if (visibleRect) { if (visibleRect) {
forceRedraw = forceRedraw || visibleRect.containerResized; forceRedraw = forceRedraw || visibleRect.containerResized;
var newVisible = false; var newVisible = false;
@ -306,21 +311,49 @@ export default function WidgetController($scope, $timeout, $window, $element, $q
onRedraw(50); onRedraw(50);
} }
} }
} }*/
function updateBounds() { function updateBounds() {
bounds = { /*bounds = {
top: widget.row, top: widget.row,
left: widget.col, left: widget.col,
bottom: widget.row + widget.sizeY, bottom: widget.row + widget.sizeY,
right: widget.col + widget.sizeX right: widget.col + widget.sizeX
}; };
updateVisibility(true); updateVisibility(true);*/
onRedraw();
} }
var originalTimewindow;
function onRedraw(delay, dataUpdate) { var timewindowFunctions = {
//TODO: onUpdateTimewindow: onUpdateTimewindow,
onResetTimewindow: onResetTimewindow
};
function onResetTimewindow() {
if (originalTimewindow) {
widget.config.timewindow = angular.copy(originalTimewindow);
originalTimewindow = null;
}
}
function onUpdateTimewindow(startTimeMs, endTimeMs) {
if (!originalTimewindow) {
originalTimewindow = angular.copy(widget.config.timewindow);
}
widget.config.timewindow = {
history: {
fixedTimewindow: {
startTimeMs: startTimeMs,
endTimeMs: endTimeMs
}
}
};
}
function onRedraw(delay, dataUpdate, tickUpdate) {
//TODO: widgets visibility
/*if (!visible) { /*if (!visible) {
return; return;
}*/ }*/
@ -344,7 +377,7 @@ export default function WidgetController($scope, $timeout, $window, $element, $q
if (width > 20 && height > 20) { if (width > 20 && height > 20) {
if (!inited) { if (!inited) {
init(containerElement, widget.config.settings, widget.config.datasources, data, $scope, controlApi); init(containerElement, widget.config.settings, widget.config.datasources, data, $scope, controlApi, timewindowFunctions);
inited = true; inited = true;
} }
if (widget.type === types.widgetType.timeseries.value) { if (widget.type === types.widgetType.timeseries.value) {
@ -360,7 +393,7 @@ export default function WidgetController($scope, $timeout, $window, $element, $q
timeWindow.minTime = subscriptionTimewindow.fixedWindow.startTimeMs; timeWindow.minTime = subscriptionTimewindow.fixedWindow.startTimeMs;
} }
} }
redraw(containerElement, width, height, data, timeWindow, sizeChanged, $scope); redraw(containerElement, width, height, data, timeWindow, sizeChanged, $scope, dataUpdate, tickUpdate);
} }
}, delay, false); }, delay, false);
} }
@ -406,11 +439,12 @@ export default function WidgetController($scope, $timeout, $window, $element, $q
var listener = datasourceListeners[i]; var listener = datasourceListeners[i];
datasourceService.unsubscribeFromDatasource(listener); datasourceService.unsubscribeFromDatasource(listener);
} }
datasourceListeners = [];
} }
} }
function onTick() { function onTick() {
onRedraw(); onRedraw(0, false, true);
timer = $timeout(onTick, 1000, false); timer = $timeout(onTick, 1000, false);
} }

9
ui/src/app/components/widget.directive.js

@ -29,17 +29,19 @@ function Widget($controller, $compile, widgetService) {
scope: true, scope: true,
link: function (scope, elem, attrs) { link: function (scope, elem, attrs) {
var widgetController;
var locals = scope.$eval(attrs.locals); var locals = scope.$eval(attrs.locals);
var widget = locals.widget; var widget = locals.widget;
var widgetController;
var gridsterItem; var gridsterItem;
scope.$on('visibleRectChanged', function (event, newVisibleRect) { //TODO: widgets visibility
/*scope.$on('visibleRectChanged', function (event, newVisibleRect) {
locals.visibleRect = newVisibleRect; locals.visibleRect = newVisibleRect;
if (widgetController) { if (widgetController) {
widgetController.visibleRectChanged(newVisibleRect); widgetController.visibleRectChanged(newVisibleRect);
} }
}); });*/
scope.$on('gridster-item-initialized', function (event, item) { scope.$on('gridster-item-initialized', function (event, item) {
gridsterItem = item; gridsterItem = item;
@ -125,6 +127,7 @@ function Widget($controller, $compile, widgetService) {
"deviceAliasList"]; "deviceAliasList"];
widgetController = $controller(controllerFunction, locals); widgetController = $controller(controllerFunction, locals);
if (gridsterItem) { if (gridsterItem) {
widgetController.gridsterItemInitialized(gridsterItem); widgetController.gridsterItemInitialized(gridsterItem);
} }

45
ui/src/app/widget/lib/map-widget.js

@ -31,6 +31,7 @@ export default class TbMapWidget {
} }
this.locationsSettings = []; this.locationsSettings = [];
this.varsRegex = /\$\{([^\}]*)\}/g; this.varsRegex = /\$\{([^\}]*)\}/g;
this.tooltipsUpdated = false;
if (settings.defaultZoomLevel) { if (settings.defaultZoomLevel) {
if (settings.defaultZoomLevel > 0 && settings.defaultZoomLevel < 21) { if (settings.defaultZoomLevel > 0 && settings.defaultZoomLevel < 21) {
@ -169,7 +170,7 @@ export default class TbMapWidget {
} }
redraw(data, sizeChanged) { redraw(data, sizeChanged, dataUpdate) {
var tbMap = this; var tbMap = this;
@ -406,7 +407,7 @@ export default class TbMapWidget {
if (data) { if (data) {
if (!this.locations) { if (!this.locations) {
loadLocations(data); loadLocations(data);
} else { } else if (dataUpdate) {
updateLocations(data); updateLocations(data);
} }
} }
@ -426,29 +427,31 @@ export default class TbMapWidget {
} }
} }
var tooltips = this.map.getTooltips(); if (!this.tooltipsUpdated || dataUpdate) {
this.tooltipsUpdated = true;
for (var t in tooltips) { var tooltips = this.map.getTooltips();
var tooltip = tooltips[t]; for (var t in tooltips) {
var text = tooltip.pattern; var tooltip = tooltips[t];
var replaceInfo = tooltip.replaceInfo; var text = tooltip.pattern;
for (var v in replaceInfo.variables) { var replaceInfo = tooltip.replaceInfo;
var variableInfo = replaceInfo.variables[v]; for (var v in replaceInfo.variables) {
var txtVal = ''; var variableInfo = replaceInfo.variables[v];
if (variableInfo.dataKeyIndex > -1) { var txtVal = '';
var varData = data[variableInfo.dataKeyIndex].data; if (variableInfo.dataKeyIndex > -1) {
if (varData.length > 0) { var varData = data[variableInfo.dataKeyIndex].data;
var val = varData[varData.length-1][1]; if (varData.length > 0) {
if (isNumber(val)) { var val = varData[varData.length - 1][1];
txtVal = padValue(val, variableInfo.valDec, 0); if (isNumber(val)) {
} else { txtVal = padValue(val, variableInfo.valDec, 0);
txtVal = val; } else {
txtVal = val;
}
} }
} }
text = text.split(variableInfo.variable).join(txtVal);
} }
text = text.split(variableInfo.variable).join(txtVal); tooltip.popup.setContent(text);
} }
tooltip.popup.setContent(text);
} }
} }

Loading…
Cancel
Save