Commit 30ad52fabc82244d00ad61929c641da8f7c96a94

Authored by Igor Kulikov
2 parents 1ebb669c 4a54a079

Fix conflicts

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