Commit ea31dcc7d5d5a4a9b7fc1045b982ba4b89e5ca66

Authored by Igor Kulikov
1 parent 0d7bf40a

UI: Introduce active entity info used by widget header actions. Update Timeserie…

…s card widget to provide active entity from selected tab.
... ... @@ -138,7 +138,7 @@ export default function WidgetController($scope, $state, $timeout, $window, $ele
138 138 headerAction.icon = descriptor.icon;
139 139 headerAction.descriptor = descriptor;
140 140 headerAction.onAction = function($event) {
141   - var entityInfo = getFirstEntityInfo();
  141 + var entityInfo = getActiveEntityInfo();
142 142 var entityId = entityInfo ? entityInfo.entityId : null;
143 143 var entityName = entityInfo ? entityInfo.entityName : null;
144 144 handleWidgetAction($event, this.descriptor, entityId, entityName);
... ... @@ -502,13 +502,15 @@ export default function WidgetController($scope, $state, $timeout, $window, $ele
502 502 }
503 503 }
504 504
505   - function getFirstEntityInfo() {
506   - var entityInfo;
507   - for (var id in widgetContext.subscriptions) {
508   - var subscription = widgetContext.subscriptions[id];
509   - entityInfo = subscription.getFirstEntityInfo();
510   - if (entityInfo) {
511   - break;
  505 + function getActiveEntityInfo() {
  506 + var entityInfo = widgetContext.activeEntityInfo;
  507 + if (!entityInfo) {
  508 + for (var id in widgetContext.subscriptions) {
  509 + var subscription = widgetContext.subscriptions[id];
  510 + entityInfo = subscription.getFirstEntityInfo();
  511 + if (entityInfo) {
  512 + break;
  513 + }
512 514 }
513 515 }
514 516 return entityInfo;
... ...
... ... @@ -44,7 +44,7 @@ function TimeseriesTableWidget() {
44 44 }
45 45
46 46 /*@ngInject*/
47   -function TimeseriesTableWidgetController($element, $scope, $filter, $timeout) {
  47 +function TimeseriesTableWidgetController($element, $scope, $filter, $timeout, types) {
48 48 var vm = this;
49 49 let dateFormatFilter = 'yyyy-MM-dd HH:mm:ss';
50 50
... ... @@ -228,9 +228,29 @@ function TimeseriesTableWidgetController($element, $scope, $filter, $timeout) {
228 228 $scope.$watch('vm.sourceIndex', function(newIndex, oldIndex) {
229 229 if (newIndex != oldIndex) {
230 230 updateSourceData(vm.sources[vm.sourceIndex]);
  231 + updateActiveEntityInfo();
231 232 }
232 233 });
233 234
  235 + function updateActiveEntityInfo() {
  236 + var source = vm.sources[vm.sourceIndex];
  237 + var activeEntityInfo = null;
  238 + if (source) {
  239 + var datasource = source.datasource;
  240 + if (datasource.type === types.datasourceType.entity &&
  241 + datasource.entityType && datasource.entityId) {
  242 + activeEntityInfo = {
  243 + entityId: {
  244 + entityType: datasource.entityType,
  245 + id: datasource.entityId
  246 + },
  247 + entityName: datasource.entityName
  248 + };
  249 + }
  250 + }
  251 + vm.ctx.activeEntityInfo = activeEntityInfo;
  252 + }
  253 +
234 254 function updateDatasources() {
235 255 vm.sources = [];
236 256 vm.sourceIndex = 0;
... ... @@ -314,6 +334,7 @@ function TimeseriesTableWidgetController($element, $scope, $filter, $timeout) {
314 334 vm.sources.push(source);
315 335 }
316 336 }
  337 + updateActiveEntityInfo();
317 338 }
318 339
319 340 function updatePage(source) {
... ...