You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

sensors.controller.js 2.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. angular.module('camotion')
  2. .controller('SensorsController', ['$scope', 'SensorsService', '$timeout',
  3. function($scope, SensorsService, $timeout) {
  4. $scope.values = {};
  5. $scope.interval = 1000;
  6. $scope.luTable = {
  7. columns: [
  8. {
  9. name: "Name",
  10. width: 3,
  11. getValue: function (item) {
  12. return item.Name;
  13. }
  14. },{
  15. name: "Description",
  16. width: 7,
  17. getValue: function (item) {
  18. return item.Description;
  19. }
  20. },{
  21. name: "Value",
  22. width: 2,
  23. getValue: function (item) {
  24. return $scope.values[item.Id].value.Value;
  25. }
  26. }
  27. ],
  28. getLoadPagePromise: function (page, perPage, query, promise) {
  29. return SensorsService.getAll({page: page, perPage: perPage, query: query}, promise);
  30. },
  31. onPageChanged: function()
  32. {
  33. for (var i in $scope.values) {
  34. $timeout.cancel($scope.values[i].timerId);
  35. }
  36. $scope.values = {};
  37. var items = $scope.luTable.luBasicTableScope.items.Data;
  38. for (i = 0; i < items.length; ++i) {
  39. var item = angular.copy(items[i]);
  40. $scope.values[item.Id] = {
  41. value: 0,
  42. timerId: 0
  43. };
  44. $scope.updateSensor(item);
  45. }
  46. }
  47. };
  48. $scope.updateSensor = function(sensor)
  49. {
  50. SensorsService.getValue({sensor_id: sensor.Id})
  51. .then(function(value) {
  52. if (typeof $scope.values[sensor.Id] != 'undefined') {
  53. $scope.values[sensor.Id] = {
  54. value: value,
  55. timerId: $timeout(function () {
  56. $scope.updateSensor(sensor);
  57. }, $scope.interval)
  58. }
  59. }
  60. });
  61. };
  62. $scope.$on('$destroy', function(){
  63. $scope.values = {};
  64. });
  65. }]);