Commit 825406690c5d5896189ea3caf3e2abca65c94b40

Authored by Chantsova Ekaterina
Committed by Igor Kulikov
1 parent 518e9ac9

Flot widget pull requests: resolve conflicts for #2053, #2061 (#2289)

* Add some datakey settings to edit legend appearance for flot widget

* Fix timestamp and index search in 'line' flot charts tooltip

Co-authored-by: Mirco Pizzichini <52463156+mircopz@users.noreply.github.com>
@@ -332,7 +332,8 @@ export default class Subscription { @@ -332,7 +332,8 @@ export default class Subscription {
332 332
333 for (var a = 0; a < datasource.dataKeys.length; a++) { 333 for (var a = 0; a < datasource.dataKeys.length; a++) {
334 var dataKey = datasource.dataKeys[a]; 334 var dataKey = datasource.dataKeys[a];
335 - dataKey.hidden = false; 335 + dataKey.hidden = dataKey.settings.hideDataByDefault ? true : false;
  336 + dataKey.inLegend = dataKey.settings.removeFromLegend ? false : true;
336 dataKey.pattern = angular.copy(dataKey.label); 337 dataKey.pattern = angular.copy(dataKey.label);
337 338
338 if (this.comparisonEnabled && dataKey.settings.comparisonSettings && dataKey.settings.comparisonSettings.showValuesForComparison) { 339 if (this.comparisonEnabled && dataKey.settings.comparisonSettings && dataKey.settings.comparisonSettings.showValuesForComparison) {
@@ -46,7 +46,9 @@ function Legend($compile, $templateCache, types) { @@ -46,7 +46,9 @@ function Legend($compile, $templateCache, types) {
46 scope.isRowDirection = scope.legendConfig.direction === types.direction.row.value; 46 scope.isRowDirection = scope.legendConfig.direction === types.direction.row.value;
47 47
48 scope.toggleHideData = function(index) { 48 scope.toggleHideData = function(index) {
49 - scope.legendData.keys[index].dataKey.hidden = !scope.legendData.keys[index].dataKey.hidden; 49 + if (!scope.legendData.keys[index].dataKey.settings.disableDataHiding) {
  50 + scope.legendData.keys[index].dataKey.hidden = !scope.legendData.keys[index].dataKey.hidden;
  51 + }
50 } 52 }
51 53
52 $compile(element.contents())(scope); 54 $compile(element.contents())(scope);
@@ -27,7 +27,8 @@ @@ -27,7 +27,8 @@
27 </tr> 27 </tr>
28 </thead> 28 </thead>
29 <tbody> 29 <tbody>
30 - <tr class="tb-legend-keys" ng-repeat="legendKey in legendData.keys" ng-if="!isRowDirection"> 30 + <tr class="tb-legend-keys" ng-repeat="legendKey in legendData.keys"
  31 + ng-if="!isRowDirection && legendData.keys[legendKey.dataIndex].dataKey.inLegend">
31 <td><span class="tb-legend-line" ng-style="{backgroundColor: legendKey.dataKey.color}"></span></td> 32 <td><span class="tb-legend-line" ng-style="{backgroundColor: legendKey.dataKey.color}"></span></td>
32 <td class="tb-legend-label" 33 <td class="tb-legend-label"
33 ng-click="toggleHideData(legendKey.dataIndex)" 34 ng-click="toggleHideData(legendKey.dataIndex)"
@@ -41,7 +42,7 @@ @@ -41,7 +42,7 @@
41 </tr> 42 </tr>
42 <tr class="tb-legend-keys" ng-class="{ 'tb-row-direction': !displayHeader() }" ng-if="isRowDirection"> 43 <tr class="tb-legend-keys" ng-class="{ 'tb-row-direction': !displayHeader() }" ng-if="isRowDirection">
43 <td></td> 44 <td></td>
44 - <td ng-repeat="legendKey in legendData.keys"> 45 + <td ng-repeat="legendKey in legendData.keys" ng-if="legendData.keys[legendKey.dataIndex].dataKey.inLegend">
45 <span class="tb-legend-line" ng-style="{backgroundColor: legendKey.dataKey.color}"></span> 46 <span class="tb-legend-line" ng-style="{backgroundColor: legendKey.dataKey.color}"></span>
46 <span class="tb-legend-label" 47 <span class="tb-legend-label"
47 ng-click="toggleHideData(legendKey.dataIndex)" 48 ng-click="toggleHideData(legendKey.dataIndex)"
@@ -52,19 +53,31 @@ @@ -52,19 +53,31 @@
52 </tr> 53 </tr>
53 <tr class="tb-legend-keys" ng-if="isRowDirection && legendConfig.showMin === true"> 54 <tr class="tb-legend-keys" ng-if="isRowDirection && legendConfig.showMin === true">
54 <td class="tb-legend-type">{{ 'legend.min' | translate }}</td> 55 <td class="tb-legend-type">{{ 'legend.min' | translate }}</td>
55 - <td class="tb-legend-value" ng-repeat="legendKey in legendData.keys">{{ legendData.data[legendKey.dataIndex].min }}</td> 56 + <td class="tb-legend-value" ng-repeat="legendKey in legendData.keys"
  57 + ng-if="legendData.keys[legendKey.dataIndex].dataKey.inLegend">
  58 + {{ legendData.data[legendKey.dataIndex].min }}
  59 + </td>
56 </tr> 60 </tr>
57 <tr class="tb-legend-keys" ng-if="isRowDirection && legendConfig.showMax === true"> 61 <tr class="tb-legend-keys" ng-if="isRowDirection && legendConfig.showMax === true">
58 <td class="tb-legend-type">{{ 'legend.max' | translate }}</td> 62 <td class="tb-legend-type">{{ 'legend.max' | translate }}</td>
59 - <td class="tb-legend-value" ng-repeat="legendKey in legendData.keys">{{ legendData.data[legendKey.dataIndex].max }}</td> 63 + <td class="tb-legend-value" ng-repeat="legendKey in legendData.keys"
  64 + ng-if="legendData.keys[legendKey.dataIndex].dataKey.inLegend">
  65 + {{ legendData.data[legendKey.dataIndex].max }}
  66 + </td>
60 </tr> 67 </tr>
61 <tr class="tb-legend-keys" ng-if="isRowDirection && legendConfig.showAvg === true"> 68 <tr class="tb-legend-keys" ng-if="isRowDirection && legendConfig.showAvg === true">
62 <td class="tb-legend-type">{{ 'legend.avg' | translate }}</td> 69 <td class="tb-legend-type">{{ 'legend.avg' | translate }}</td>
63 - <td class="tb-legend-value" ng-repeat="legendKey in legendData.keys">{{ legendData.data[legendKey.dataIndex].avg }}</td> 70 + <td class="tb-legend-value" ng-repeat="legendKey in legendData.keys"
  71 + ng-if="legendData.keys[legendKey.dataIndex].dataKey.inLegend">
  72 + {{ legendData.data[legendKey.dataIndex].avg }}
  73 + </td>
64 </tr> 74 </tr>
65 <tr class="tb-legend-keys" ng-if="isRowDirection && legendConfig.showTotal === true"> 75 <tr class="tb-legend-keys" ng-if="isRowDirection && legendConfig.showTotal === true">
66 <td class="tb-legend-type">{{ 'legend.total' | translate }}</td> 76 <td class="tb-legend-type">{{ 'legend.total' | translate }}</td>
67 - <td class="tb-legend-value" ng-repeat="legendKey in legendData.keys">{{ legendData.data[legendKey.dataIndex].total }}</td> 77 + <td class="tb-legend-value" ng-repeat="legendKey in legendData.keys"
  78 + ng-if="legendData.keys[legendKey.dataIndex].dataKey.inLegend">
  79 + {{ legendData.data[legendKey.dataIndex].total }}
  80 + </td>
68 </tr> 81 </tr>
69 </tbody> 82 </tbody>
70 </table> 83 </table>
@@ -139,12 +139,7 @@ export default class TbFlot { @@ -139,12 +139,7 @@ export default class TbFlot {
139 return seriesHover.index === seriesIndex; 139 return seriesHover.index === seriesIndex;
140 }); 140 });
141 if (found && found.length) { 141 if (found && found.length) {
142 - let timestamp;  
143 - if (!angular.isNumber(hoverInfo[0].time) || (found[0].time < hoverInfo[0].time)) {  
144 - timestamp = parseInt(hoverInfo[1].time);  
145 - } else {  
146 - timestamp = parseInt(hoverInfo[0].time);  
147 - } 142 + let timestamp = parseInt(found[0].time);
148 let date = moment(timestamp).format('YYYY-MM-DD HH:mm:ss'); 143 let date = moment(timestamp).format('YYYY-MM-DD HH:mm:ss');
149 let dateDiv = $('<div>' + date + '</div>'); 144 let dateDiv = $('<div>' + date + '</div>');
150 dateDiv.css({ 145 dateDiv.css({
@@ -1213,7 +1208,35 @@ export default class TbFlot { @@ -1213,7 +1208,35 @@ export default class TbFlot {
1213 } 1208 }
1214 1209
1215 static get pieDatakeySettingsSchema() { 1210 static get pieDatakeySettingsSchema() {
1216 - return {} 1211 + return {
  1212 + "schema": {
  1213 + "type": "object",
  1214 + "title": "DataKeySettings",
  1215 + "properties": {
  1216 + "hideDataByDefault": {
  1217 + "title": "Data is hidden by default",
  1218 + "type": "boolean",
  1219 + "default": false
  1220 + },
  1221 + "disableDataHiding": {
  1222 + "title": "Disable data hiding",
  1223 + "type": "boolean",
  1224 + "default": false
  1225 + },
  1226 + "removeFromLegend": {
  1227 + "title": "Remove datakey from legend",
  1228 + "type": "boolean",
  1229 + "default": false
  1230 + }
  1231 + },
  1232 + "required": []
  1233 + },
  1234 + "form": [
  1235 + "hideDataByDefault",
  1236 + "disableDataHiding",
  1237 + "removeFromLegend"
  1238 + ]
  1239 + };
1217 } 1240 }
1218 1241
1219 static datakeySettingsSchema(defaultShowLines, chartType) { 1242 static datakeySettingsSchema(defaultShowLines, chartType) {
@@ -1228,6 +1251,21 @@ export default class TbFlot { @@ -1228,6 +1251,21 @@ export default class TbFlot {
1228 "type": "boolean", 1251 "type": "boolean",
1229 "default": false 1252 "default": false
1230 }, 1253 },
  1254 + "hideDataByDefault": {
  1255 + "title": "Data is hidden by default",
  1256 + "type": "boolean",
  1257 + "default": false
  1258 + },
  1259 + "disableDataHiding": {
  1260 + "title": "Disable data hiding",
  1261 + "type": "boolean",
  1262 + "default": false
  1263 + },
  1264 + "removeFromLegend": {
  1265 + "title": "Remove datakey from legend",
  1266 + "type": "boolean",
  1267 + "default": false
  1268 + },
1231 "showLines": { 1269 "showLines": {
1232 "title": "Show lines", 1270 "title": "Show lines",
1233 "type": "boolean", 1271 "type": "boolean",
@@ -1316,6 +1354,9 @@ export default class TbFlot { @@ -1316,6 +1354,9 @@ export default class TbFlot {
1316 "required": ["showLines", "fillLines", "showPoints"] 1354 "required": ["showLines", "fillLines", "showPoints"]
1317 }, 1355 },
1318 "form": [ 1356 "form": [
  1357 + "hideDataByDefault",
  1358 + "disableDataHiding",
  1359 + "removeFromLegend",
1319 "excludeFromStacking", 1360 "excludeFromStacking",
1320 "showLines", 1361 "showLines",
1321 "fillLines", 1362 "fillLines",