Commit 30ad52fabc82244d00ad61929c641da8f7c96a94

Authored by Igor Kulikov
2 parents 1ebb669c 4a54a079

Fix conflicts

@@ -234,7 +234,10 @@ function TimeService($translate, $http, $q, types) { @@ -234,7 +234,10 @@ function TimeService($translate, $http, $q, types) {
234 var currentTime = (new Date).getTime(); 234 var currentTime = (new Date).getTime();
235 var timewindow = { 235 var timewindow = {
236 displayValue: "", 236 displayValue: "",
237 - selectedTab: 0, 237 + selectedTab: 0,
  238 + hideInterval: false,
  239 + hideAggregation: false,
  240 + hideAggInterval: false,
238 realtime: { 241 realtime: {
239 interval: SECOND, 242 interval: SECOND,
240 timewindowMs: MINUTE // 1 min by default 243 timewindowMs: MINUTE // 1 min by default
@@ -381,4 +384,4 @@ function TimeService($translate, $http, $q, types) { @@ -381,4 +384,4 @@ function TimeService($translate, $http, $q, types) {
381 } 384 }
382 385
383 386
384 -}  
  387 +}
@@ -56,7 +56,8 @@ @@ -56,7 +56,8 @@
56 <span ng-bind-html="vm.widgetTitleTooltip(widget)"></span> 56 <span ng-bind-html="vm.widgetTitleTooltip(widget)"></span>
57 </md-tooltip> 57 </md-tooltip>
58 </span> 58 </span>
59 - <tb-timewindow aggregation="{{vm.hasAggregation(widget)}}" ng-if="vm.hasTimewindow(widget)" ng-model="widget.config.timewindow"></tb-timewindow> 59 + <tb-timewindow aggregation="{{vm.hasAggregation(widget)}}" is-edit="vm.isEdit"
  60 + ng-if="vm.hasTimewindow(widget)" ng-model="widget.config.timewindow"></tb-timewindow>
60 </div> 61 </div>
61 <div class="tb-widget-actions" layout="row" layout-align="start center" ng-show="vm.showWidgetActions(widget)" tb-mousedown="$event.stopPropagation()" 62 <div class="tb-widget-actions" layout="row" layout-align="start center" ng-show="vm.showWidgetActions(widget)" tb-mousedown="$event.stopPropagation()"
62 ng-class="{'tb-widget-actions-absolute': !(vm.showWidgetTitlePanel(widget)&&(vm.hasWidgetTitleTemplate(widget)||vm.showWidgetTitle(widget)||vm.hasAggregation(widget)))}"> 63 ng-class="{'tb-widget-actions-absolute': !(vm.showWidgetTitlePanel(widget)&&(vm.hasWidgetTitleTemplate(widget)||vm.showWidgetTitle(widget)||vm.hasAggregation(widget)))}">
@@ -231,7 +231,9 @@ function Timeinterval($compile, $templateCache, timeService) { @@ -231,7 +231,9 @@ function Timeinterval($compile, $templateCache, timeService) {
231 required: '=ngRequired', 231 required: '=ngRequired',
232 min: '=?', 232 min: '=?',
233 max: '=?', 233 max: '=?',
234 - predefinedName: '=?' 234 + predefinedName: '=?',
  235 + hideFlag: '=?',
  236 + isEdit: '=?'
235 }, 237 },
236 link: linker 238 link: linker
237 }; 239 };
@@ -16,7 +16,12 @@ @@ -16,7 +16,12 @@
16 16
17 --> 17 -->
18 <section layout="row"> 18 <section layout="row">
19 - <section layout="column" flex ng-show="advanced"> 19 + <section layout="column" layout-align=" none" ng-show="isEdit">
  20 + <label class="tb-small advanced-label" translate>timewindow.hide</label>
  21 + <md-checkbox aria-label="{{ 'timewindow.hide' | translate }}" ng-model="hideFlag">
  22 + </md-checkbox>
  23 + </section>
  24 + <section layout="column" flex ng-show="advanced && (isEdit || !hideFlag)">
20 <label class="tb-small" translate>{{ predefinedName }}</label> 25 <label class="tb-small" translate>{{ predefinedName }}</label>
21 <section layout="row" layout-align="start start" flex> 26 <section layout="row" layout-align="start start" flex>
22 <md-input-container> 27 <md-input-container>
@@ -25,7 +30,7 @@ @@ -25,7 +30,7 @@
25 </md-input-container> 30 </md-input-container>
26 <md-input-container> 31 <md-input-container>
27 <label translate>timeinterval.hours</label> 32 <label translate>timeinterval.hours</label>
28 - <input type="number" ng-model="hours" step="1" aria-label="{{ 'timeinterval.hours' | translate }}"> 33 + <input ng-disabled="hideFlag" type="number" ng-model="hours" step="1" aria-label="{{ 'timeinterval.hours' | translate }}">
29 </md-input-container> 34 </md-input-container>
30 <md-input-container> 35 <md-input-container>
31 <label translate>timeinterval.minutes</label> 36 <label translate>timeinterval.minutes</label>
@@ -33,23 +38,23 @@ @@ -33,23 +38,23 @@
33 </md-input-container> 38 </md-input-container>
34 <md-input-container> 39 <md-input-container>
35 <label translate>timeinterval.seconds</label> 40 <label translate>timeinterval.seconds</label>
36 - <input type="number" ng-model="secs" step="1" aria-label="{{ 'timeinterval.seconds' | translate }}"> 41 + <input ng-disabled="hideFlag" type="number" ng-model="secs" step="1" aria-label="{{ 'timeinterval.seconds' | translate }}">
37 </md-input-container> 42 </md-input-container>
38 </section> 43 </section>
39 </section> 44 </section>
40 - <section layout="row" flex ng-show="!advanced"> 45 + <section layout="row" flex ng-show="!advanced && (isEdit || !hideFlag)">
41 <md-input-container flex> 46 <md-input-container flex>
42 <label translate>{{ predefinedName }}</label> 47 <label translate>{{ predefinedName }}</label>
43 - <md-select ng-model="intervalMs" style="min-width: 150px;" aria-label="predefined-interval"> 48 + <md-select ng-disabled="hideFlag" ng-model="intervalMs" style="min-width: 150px;" aria-label="predefined-interval">
44 <md-option ng-repeat="interval in intervals" ng-value="interval.value"> 49 <md-option ng-repeat="interval in intervals" ng-value="interval.value">
45 {{interval.name}} 50 {{interval.name}}
46 </md-option> 51 </md-option>
47 </md-select> 52 </md-select>
48 </md-input-container> 53 </md-input-container>
49 </section> 54 </section>
50 - <section layout="column" layout-align="center center"> 55 + <section layout="column" layout-align="center center" ng-show="(isEdit || !hideFlag)">
51 <label class="tb-small advanced-label" translate>timeinterval.advanced</label> 56 <label class="tb-small advanced-label" translate>timeinterval.advanced</label>
52 - <md-switch class="advanced-switch" ng-model="advanced" aria-label="predefined-switcher"> 57 + <md-switch ng-disabled="hideFlag" class="advanced-switch" ng-model="advanced" aria-label="predefined-switcher">
53 </md-switch> 58 </md-switch>
54 </section> 59 </section>
55 </section> 60 </section>
@@ -14,7 +14,7 @@ @@ -14,7 +14,7 @@
14 * limitations under the License. 14 * limitations under the License.
15 */ 15 */
16 /*@ngInject*/ 16 /*@ngInject*/
17 -export default function TimewindowPanelController(mdPanelRef, $scope, timeService, types, timewindow, historyOnly, aggregation, onTimewindowUpdate) { 17 +export default function TimewindowPanelController(mdPanelRef, $scope, timeService, types, timewindow, historyOnly, aggregation, isEdit, onTimewindowUpdate) {
18 18
19 var vm = this; 19 var vm = this;
20 20
@@ -33,6 +33,7 @@ export default function TimewindowPanelController(mdPanelRef, $scope, timeServic @@ -33,6 +33,7 @@ export default function TimewindowPanelController(mdPanelRef, $scope, timeServic
33 vm.maxHistoryAggInterval = maxHistoryAggInterval; 33 vm.maxHistoryAggInterval = maxHistoryAggInterval;
34 vm.minDatapointsLimit = minDatapointsLimit; 34 vm.minDatapointsLimit = minDatapointsLimit;
35 vm.maxDatapointsLimit = maxDatapointsLimit; 35 vm.maxDatapointsLimit = maxDatapointsLimit;
  36 + vm.isEdit = isEdit;
36 37
37 if (vm.historyOnly) { 38 if (vm.historyOnly) {
38 vm.timewindow.selectedTab = 1; 39 vm.timewindow.selectedTab = 1;
@@ -22,62 +22,92 @@ @@ -22,62 +22,92 @@
22 <md-tabs ng-class="{'tb-headless': vm.historyOnly}" md-dynamic-height md-selected="vm.timewindow.selectedTab" md-border-bottom> 22 <md-tabs ng-class="{'tb-headless': vm.historyOnly}" md-dynamic-height md-selected="vm.timewindow.selectedTab" md-border-bottom>
23 <md-tab label="{{ 'timewindow.realtime' | translate }}"> 23 <md-tab label="{{ 'timewindow.realtime' | translate }}">
24 <md-content class="md-padding" layout="column"> 24 <md-content class="md-padding" layout="column">
25 - <tb-timeinterval predefined-name="'timewindow.last'"  
26 - ng-required="vm.timewindow.selectedTab === 0" 25 + <tb-timeinterval hide-flag="vm.timewindow.hideInterval" predefined-name="'timewindow.last'"
  26 + is-edit="vm.isEdit" ng-required="vm.timewindow.selectedTab === 0"
27 ng-model="vm.timewindow.realtime.timewindowMs" style="padding-top: 8px;"></tb-timeinterval> 27 ng-model="vm.timewindow.realtime.timewindowMs" style="padding-top: 8px;"></tb-timeinterval>
28 </md-content> 28 </md-content>
29 </md-tab> 29 </md-tab>
30 <md-tab label="{{ 'timewindow.history' | translate }}"> 30 <md-tab label="{{ 'timewindow.history' | translate }}">
31 - <md-content class="md-padding" layout="column" style="padding-top: 8px;">  
32 - <md-radio-group ng-model="vm.timewindow.history.historyType" class="md-primary">  
33 - <md-radio-button ng-value=0 aria-label="{{ 'timewindow.last' | translate }}" class="md-primary md-align-top-left md-radio-interactive">  
34 - <section layout="column">  
35 - <tb-timeinterval predefined-name="'timewindow.last'"  
36 - ng-required="vm.timewindow.selectedTab === 1 && vm.timewindow.history.historyType === 0"  
37 - ng-show="vm.timewindow.history.historyType === 0"  
38 - ng-model="vm.timewindow.history.timewindowMs" style="padding-top: 8px;"></tb-timeinterval>  
39 - </section>  
40 - </md-radio-button>  
41 - <md-radio-button ng-value=1 aria-label="{{ 'timewindow.time-period' | translate }}" class="md-primary md-align-top-left md-radio-interactive">  
42 - <section layout="column">  
43 - <span translate>timewindow.time-period</span>  
44 - <tb-datetime-period  
45 - ng-required="vm.timewindow.selectedTab === 1 && vm.timewindow.history.historyType === 1"  
46 - ng-show="vm.timewindow.history.historyType === 1"  
47 - ng-model="vm.timewindow.history.fixedTimewindow" style="padding-top: 8px;"></tb-datetime-period>  
48 - </section>  
49 - </md-radio-button>  
50 - </md-radio-group>  
51 - </md-content> 31 + <section layout="row">
  32 + <section layout="column" class="md-padding" style="padding-top: 8px;">
  33 + <label ng-if="vm.isEdit" class="tb-small advanced-label" translate>timewindow.hide</label>
  34 + <md-checkbox ng-if="vm.isEdit" aria-label="{{ 'timewindow.hide' | translate }}"
  35 + ng-model="vm.timewindow.hideInterval">
  36 + </md-checkbox>
  37 + </section>
  38 + <section layout="column" flex ng-show="vm.isEdit || !vm.timewindow.hideInterval">
  39 + <md-content class="md-padding" layout="column" style="padding-top: 8px;">
  40 + <md-radio-group ng-disabled="vm.timewindow.hideInterval" ng-model="vm.timewindow.history.historyType" class="md-primary">
  41 + <md-radio-button ng-value=0 aria-label="{{ 'timewindow.last' | translate }}" class="md-primary md-align-top-left md-radio-interactive">
  42 + <section layout="column">
  43 + <tb-timeinterval predefined-name="'timewindow.last'"
  44 + ng-required="vm.timewindow.selectedTab === 1 && vm.timewindow.history.historyType === 0"
  45 + ng-show="vm.timewindow.history.historyType === 0"
  46 + ng-model="vm.timewindow.history.timewindowMs" style="padding-top: 8px;"></tb-timeinterval>
  47 + </section>
  48 + </md-radio-button>
  49 + <md-radio-button ng-value=1 aria-label="{{ 'timewindow.time-period' | translate }}" class="md-primary md-align-top-left md-radio-interactive">
  50 + <section layout="column">
  51 + <span translate>timewindow.time-period</span>
  52 + <tb-datetime-period
  53 + ng-required="vm.timewindow.selectedTab === 1 && vm.timewindow.history.historyType === 1"
  54 + ng-show="vm.timewindow.history.historyType === 1"
  55 + ng-model="vm.timewindow.history.fixedTimewindow" style="padding-top: 8px;"></tb-datetime-period>
  56 + </section>
  57 + </md-radio-button>
  58 + </md-radio-group>
  59 + </md-content>
  60 + </section>
  61 + </section>
52 </md-tab> 62 </md-tab>
53 </md-tabs> 63 </md-tabs>
54 <md-content ng-if="vm.aggregation" class="md-padding" layout="column"> 64 <md-content ng-if="vm.aggregation" class="md-padding" layout="column">
55 - <md-input-container>  
56 - <label translate>aggregation.function</label>  
57 - <md-select ng-model="vm.timewindow.aggregation.type" style="min-width: 150px;">  
58 - <md-option ng-repeat="type in vm.aggregationTypes" ng-value="type.value">  
59 - {{type.name | translate}}  
60 - </md-option>  
61 - </md-select>  
62 - </md-input-container>  
63 - <md-slider-container ng-if="vm.showLimit()">  
64 - <span translate>aggregation.limit</span>  
65 - <md-slider flex min="{{vm.minDatapointsLimit()}}" max="{{vm.maxDatapointsLimit()}}" step="1"  
66 - ng-model="vm.timewindow.aggregation.limit" aria-label="limit" id="limit-slider">  
67 - </md-slider>  
68 - <md-input-container style="max-width: 80px;">  
69 - <input flex type="number" step="1"  
70 - min="{{vm.minDatapointsLimit()}}" max="{{vm.maxDatapointsLimit()}}"  
71 - ng-model="vm.timewindow.aggregation.limit" aria-label="limit" aria-controls="limit-slider">  
72 - </md-input-container>  
73 - </md-slider-container>  
74 - <tb-timeinterval ng-if="vm.showRealtimeAggInterval()" min="vm.minRealtimeAggInterval()" max="vm.maxRealtimeAggInterval()"  
75 - predefined-name="'aggregation.group-interval'"  
76 - ng-model="vm.timewindow.realtime.interval"> 65 + <section layout="row">
  66 + <section layout="column" style="padding-top: 5px;" ng-show="vm.isEdit">
  67 + <label class="tb-small advanced-label" translate>timewindow.hide</label>
  68 + <md-checkbox aria-label="{{ 'timewindow.hide' | translate }}"
  69 + ng-model="vm.timewindow.hideAggregation">
  70 + </md-checkbox>
  71 + </section>
  72 + <section layout="column" flex ng-show="vm.isEdit || !vm.timewindow.hideAggregation">
  73 + <md-input-container>
  74 + <label translate>aggregation.function</label>
  75 + <md-select ng-disabled="vm.timewindow.hideAggregation" ng-model="vm.timewindow.aggregation.type" style="min-width: 150px;">
  76 + <md-option ng-repeat="type in vm.aggregationTypes" ng-value="type.value">
  77 + {{type.name | translate}}
  78 + </md-option>
  79 + </md-select>
  80 + </md-input-container>
  81 + </section>
  82 + </section>
  83 + <section layout="row" ng-show="vm.showLimit()">
  84 + <section layout="column" style="padding-top: 5px;" ng-show="vm.showLimit() && vm.isEdit">
  85 + <label class="tb-small advanced-label" translate>timewindow.hide</label>
  86 + <md-checkbox aria-label="{{ 'timewindow.hide' | translate }}"
  87 + ng-model="vm.timewindow.hideAggInterval" >
  88 + </md-checkbox>
  89 + </section>
  90 + <section layout="column" flex ng-show="vm.isEdit || !vm.timewindow.hideAggInterval">
  91 + <md-slider-container>
  92 + <span translate>aggregation.limit</span>
  93 + <md-slider flex min="{{vm.minDatapointsLimit()}}" max="{{vm.maxDatapointsLimit()}}" step="1"
  94 + ng-disabled="vm.timewindow.hideAggInterval" ng-model="vm.timewindow.aggregation.limit" aria-label="limit" id="limit-slider">
  95 + </md-slider>
  96 + <md-input-container style="max-width: 80px;">
  97 + <input flex type="number" step="1" ng-disabled="vm.timewindow.hideAggInterval"
  98 + min="{{vm.minDatapointsLimit()}}" max="{{vm.maxDatapointsLimit()}}"
  99 + ng-model="vm.timewindow.aggregation.limit" aria-label="limit" aria-controls="limit-slider">
  100 + </md-input-container>
  101 + </md-slider-container>
  102 + </section>
  103 + </section>
  104 + <tb-timeinterval ng-if="vm.showRealtimeAggInterval()" min="vm.minRealtimeAggInterval()"
  105 + max="vm.maxRealtimeAggInterval()" ng-model="vm.timewindow.realtime.interval" is-edit="vm.isEdit"
  106 + hide-flag="vm.timewindow.hideAggInterval" predefined-name="'aggregation.group-interval'">
77 </tb-timeinterval> 107 </tb-timeinterval>
78 - <tb-timeinterval ng-if="vm.showHistoryAggInterval()" min="vm.minHistoryAggInterval()" max="vm.maxHistoryAggInterval()"  
79 - predefined-name="'aggregation.group-interval'"  
80 - ng-model="vm.timewindow.history.interval"> 108 + <tb-timeinterval ng-if="vm.showHistoryAggInterval()" min="vm.minHistoryAggInterval()"
  109 + max="vm.maxHistoryAggInterval()" ng-model="vm.timewindow.history.interval" is-edit="vm.isEdit"
  110 + hide-flag="vm.timewindow.hideAggInterval" predefined-name="'aggregation.group-interval'">
81 </tb-timeinterval> 111 </tb-timeinterval>
82 </md-content> 112 </md-content>
83 </section> 113 </section>
@@ -93,4 +123,4 @@ @@ -93,4 +123,4 @@
93 </section> 123 </section>
94 </md-content> 124 </md-content>
95 </fieldset> 125 </fieldset>
96 -</form>  
  126 +</form>
@@ -42,7 +42,10 @@ function Timewindow($compile, $templateCache, $filter, $mdPanel, $document, $mdM @@ -42,7 +42,10 @@ function Timewindow($compile, $templateCache, $filter, $mdPanel, $document, $mdM
42 var linker = function (scope, element, attrs, ngModelCtrl) { 42 var linker = function (scope, element, attrs, ngModelCtrl) {
43 43
44 /* tbTimewindow (ng-model) 44 /* tbTimewindow (ng-model)
45 - * { 45 + * {
  46 + * hideInterval: false,
  47 + * hideAggregation: false,
  48 + * hideAggInterval: false,
46 * realtime: { 49 * realtime: {
47 * interval: 0, 50 * interval: 0,
48 * timewindowMs: 0 51 * timewindowMs: 0
@@ -64,6 +67,8 @@ function Timewindow($compile, $templateCache, $filter, $mdPanel, $document, $mdM @@ -64,6 +67,8 @@ function Timewindow($compile, $templateCache, $filter, $mdPanel, $document, $mdM
64 67
65 scope.historyOnly = angular.isDefined(attrs.historyOnly); 68 scope.historyOnly = angular.isDefined(attrs.historyOnly);
66 69
  70 + scope.isEdit = attrs.isEdit === 'true';
  71 +
67 scope.aggregation = scope.$eval(attrs.aggregation); 72 scope.aggregation = scope.$eval(attrs.aggregation);
68 73
69 scope.isToolbar = angular.isDefined(attrs.isToolbar); 74 scope.isToolbar = angular.isDefined(attrs.isToolbar);
@@ -135,7 +140,8 @@ function Timewindow($compile, $templateCache, $filter, $mdPanel, $document, $mdM @@ -135,7 +140,8 @@ function Timewindow($compile, $templateCache, $filter, $mdPanel, $document, $mdM
135 locals: { 140 locals: {
136 'timewindow': angular.copy(scope.model), 141 'timewindow': angular.copy(scope.model),
137 'historyOnly': scope.historyOnly, 142 'historyOnly': scope.historyOnly,
138 - 'aggregation': scope.aggregation, 143 + 'aggregation': scope.aggregation,
  144 + 'isEdit': scope.isEdit,
139 'onTimewindowUpdate': function (timewindow) { 145 'onTimewindowUpdate': function (timewindow) {
140 scope.model = timewindow; 146 scope.model = timewindow;
141 scope.updateView(); 147 scope.updateView();
@@ -176,7 +182,10 @@ function Timewindow($compile, $templateCache, $filter, $mdPanel, $document, $mdM @@ -176,7 +182,10 @@ function Timewindow($compile, $templateCache, $filter, $mdPanel, $document, $mdM
176 value.aggregation = { 182 value.aggregation = {
177 type: model.aggregation.type, 183 type: model.aggregation.type,
178 limit: model.aggregation.limit 184 limit: model.aggregation.limit
179 - }; 185 + };
  186 + value.hideInterval = model.hideInterval;
  187 + value.hideAggregation = model.hideAggregation;
  188 + value.hideAggInterval = model.hideAggInterval;
180 ngModelCtrl.$setViewValue(value); 189 ngModelCtrl.$setViewValue(value);
181 scope.updateDisplayValue(); 190 scope.updateDisplayValue();
182 } 191 }
@@ -230,6 +239,9 @@ function Timewindow($compile, $templateCache, $filter, $mdPanel, $document, $mdM @@ -230,6 +239,9 @@ function Timewindow($compile, $templateCache, $filter, $mdPanel, $document, $mdM
230 } 239 }
231 model.aggregation.limit = value.aggregation.limit || Math.floor(timeService.getMaxDatapointsLimit() / 2); 240 model.aggregation.limit = value.aggregation.limit || Math.floor(timeService.getMaxDatapointsLimit() / 2);
232 } 241 }
  242 + model.hideInterval = value.hideInterval;
  243 + model.hideAggregation = value.hideAggregation;
  244 + model.hideAggInterval = value.hideAggInterval;
233 } 245 }
234 scope.updateDisplayValue(); 246 scope.updateDisplayValue();
235 }; 247 };
@@ -242,7 +254,9 @@ function Timewindow($compile, $templateCache, $filter, $mdPanel, $document, $mdM @@ -242,7 +254,9 @@ function Timewindow($compile, $templateCache, $filter, $mdPanel, $document, $mdM
242 require: "^ngModel", 254 require: "^ngModel",
243 scope: { 255 scope: {
244 asButton: '=asButton', 256 asButton: '=asButton',
245 - disabled:'=ngDisabled' 257 + disabled:'=ngDisabled',
  258 + isEdit: '=?'
  259 +
246 }, 260 },
247 link: linker 261 link: linker
248 }; 262 };
@@ -279,4 +293,4 @@ function MillisecondsToTimeString($translate) { @@ -279,4 +293,4 @@ function MillisecondsToTimeString($translate) {
279 return timeString; 293 return timeString;
280 } 294 }
281 } 295 }
282 -/* eslint-enable angular/angularelement */  
  296 +/* eslint-enable angular/angularelement */
@@ -34,7 +34,7 @@ @@ -34,7 +34,7 @@
34 <section flex layout="row" layout-align="start center" style="margin-bottom: 16px;"> 34 <section flex layout="row" layout-align="start center" style="margin-bottom: 16px;">
35 <span ng-class="{'tb-disabled-label': useDashboardTimewindow}" translate style="padding-right: 8px;">widget-config.timewindow</span> 35 <span ng-class="{'tb-disabled-label': useDashboardTimewindow}" translate style="padding-right: 8px;">widget-config.timewindow</span>
36 <tb-timewindow ng-disabled="useDashboardTimewindow" as-button="true" aggregation="{{ widgetType === types.widgetType.timeseries.value }}" 36 <tb-timewindow ng-disabled="useDashboardTimewindow" as-button="true" aggregation="{{ widgetType === types.widgetType.timeseries.value }}"
37 - flex ng-model="timewindow"></tb-timewindow> 37 + is-edit="true" flex ng-model="timewindow"></tb-timewindow>
38 </section> 38 </section>
39 </div> 39 </div>
40 <div ng-show="widgetType === types.widgetType.alarm.value" layout='column' layout-align="center" 40 <div ng-show="widgetType === types.widgetType.alarm.value" layout='column' layout-align="center"
@@ -50,7 +50,7 @@ @@ -50,7 +50,7 @@
50 <md-icon aria-label="{{ 'action.export' | translate }}" class="material-icons">file_download</md-icon> 50 <md-icon aria-label="{{ 'action.export' | translate }}" class="material-icons">file_download</md-icon>
51 </md-button> 51 </md-button>
52 <tb-timewindow ng-show="vm.isEdit || vm.displayDashboardTimewindow()" 52 <tb-timewindow ng-show="vm.isEdit || vm.displayDashboardTimewindow()"
53 - is-toolbar 53 + is-toolbar is-edit="vm.isEdit"
54 direction="left" 54 direction="left"
55 tooltip-direction="bottom" aggregation="true" 55 tooltip-direction="bottom" aggregation="true"
56 ng-model="vm.dashboardCtx.dashboardTimewindow"> 56 ng-model="vm.dashboardCtx.dashboardTimewindow">
@@ -1412,7 +1412,8 @@ @@ -1412,7 +1412,8 @@
1412 "edit": "Edit timewindow", 1412 "edit": "Edit timewindow",
1413 "date-range": "Date range", 1413 "date-range": "Date range",
1414 "last": "Last", 1414 "last": "Last",
1415 - "time-period": "Time period" 1415 + "time-period": "Time period",
  1416 + "hide": "Hide"
1416 }, 1417 },
1417 "user": { 1418 "user": {
1418 "user": "User", 1419 "user": "User",
@@ -1411,7 +1411,8 @@ @@ -1411,7 +1411,8 @@
1411 "edit": "Editar ventana de tiempo", 1411 "edit": "Editar ventana de tiempo",
1412 "date-range": "Rango de fecha", 1412 "date-range": "Rango de fecha",
1413 "last": "Último(s)", 1413 "last": "Último(s)",
1414 - "time-period": "Período de tiempo" 1414 + "time-period": "Período de tiempo",
  1415 + "hide": "Ocultar"
1415 }, 1416 },
1416 "user": { 1417 "user": {
1417 "user": "Usuario", 1418 "user": "Usuario",
@@ -1263,7 +1263,8 @@ @@ -1263,7 +1263,8 @@
1263 "period": "de {{startTime}} à {{endTime}}", 1263 "period": "de {{startTime}} à {{endTime}}",
1264 "realtime": "Temps réel", 1264 "realtime": "Temps réel",
1265 "seconds": "{seconds, plural, 0 {second} 1 {1 second} other {# seconds}}", 1265 "seconds": "{seconds, plural, 0 {second} 1 {1 second} other {# seconds}}",
1266 - "time-period": "Période" 1266 + "time-period": "Période",
  1267 + "hide": "Masquer"
1267 }, 1268 },
1268 "user": { 1269 "user": {
1269 "activation-email-sent-message": "L'e-mail d'activation a été envoyé avec succès!", 1270 "activation-email-sent-message": "L'e-mail d'activation a été envoyé avec succès!",
@@ -1353,7 +1353,8 @@ @@ -1353,7 +1353,8 @@
1353 "edit": "Modifica intervallo temporale", 1353 "edit": "Modifica intervallo temporale",
1354 "date-range": "Intervallo date", 1354 "date-range": "Intervallo date",
1355 "last": "Ultimo", 1355 "last": "Ultimo",
1356 - "time-period": "Intervallo temporale" 1356 + "time-period": "Intervallo temporale",
  1357 + "hide": "Nascondi"
1357 }, 1358 },
1358 "user": { 1359 "user": {
1359 "user": "Utente", 1360 "user": "Utente",