Commit 825406690c5d5896189ea3caf3e2abca65c94b40
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>
Showing
4 changed files
with
72 additions
and
15 deletions
... | ... | @@ -332,7 +332,8 @@ export default class Subscription { |
332 | 332 | |
333 | 333 | for (var a = 0; a < datasource.dataKeys.length; a++) { |
334 | 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 | 337 | dataKey.pattern = angular.copy(dataKey.label); |
337 | 338 | |
338 | 339 | if (this.comparisonEnabled && dataKey.settings.comparisonSettings && dataKey.settings.comparisonSettings.showValuesForComparison) { | ... | ... |
... | ... | @@ -46,7 +46,9 @@ function Legend($compile, $templateCache, types) { |
46 | 46 | scope.isRowDirection = scope.legendConfig.direction === types.direction.row.value; |
47 | 47 | |
48 | 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 | 54 | $compile(element.contents())(scope); | ... | ... |
... | ... | @@ -27,7 +27,8 @@ |
27 | 27 | </tr> |
28 | 28 | </thead> |
29 | 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 | 32 | <td><span class="tb-legend-line" ng-style="{backgroundColor: legendKey.dataKey.color}"></span></td> |
32 | 33 | <td class="tb-legend-label" |
33 | 34 | ng-click="toggleHideData(legendKey.dataIndex)" |
... | ... | @@ -41,7 +42,7 @@ |
41 | 42 | </tr> |
42 | 43 | <tr class="tb-legend-keys" ng-class="{ 'tb-row-direction': !displayHeader() }" ng-if="isRowDirection"> |
43 | 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 | 46 | <span class="tb-legend-line" ng-style="{backgroundColor: legendKey.dataKey.color}"></span> |
46 | 47 | <span class="tb-legend-label" |
47 | 48 | ng-click="toggleHideData(legendKey.dataIndex)" |
... | ... | @@ -52,19 +53,31 @@ |
52 | 53 | </tr> |
53 | 54 | <tr class="tb-legend-keys" ng-if="isRowDirection && legendConfig.showMin === true"> |
54 | 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 | 60 | </tr> |
57 | 61 | <tr class="tb-legend-keys" ng-if="isRowDirection && legendConfig.showMax === true"> |
58 | 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 | 67 | </tr> |
61 | 68 | <tr class="tb-legend-keys" ng-if="isRowDirection && legendConfig.showAvg === true"> |
62 | 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 | 74 | </tr> |
65 | 75 | <tr class="tb-legend-keys" ng-if="isRowDirection && legendConfig.showTotal === true"> |
66 | 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 | 81 | </tr> |
69 | 82 | </tbody> |
70 | 83 | </table> | ... | ... |
... | ... | @@ -139,12 +139,7 @@ export default class TbFlot { |
139 | 139 | return seriesHover.index === seriesIndex; |
140 | 140 | }); |
141 | 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 | 143 | let date = moment(timestamp).format('YYYY-MM-DD HH:mm:ss'); |
149 | 144 | let dateDiv = $('<div>' + date + '</div>'); |
150 | 145 | dateDiv.css({ |
... | ... | @@ -1213,7 +1208,35 @@ export default class TbFlot { |
1213 | 1208 | } |
1214 | 1209 | |
1215 | 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 | 1242 | static datakeySettingsSchema(defaultShowLines, chartType) { |
... | ... | @@ -1228,6 +1251,21 @@ export default class TbFlot { |
1228 | 1251 | "type": "boolean", |
1229 | 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 | 1269 | "showLines": { |
1232 | 1270 | "title": "Show lines", |
1233 | 1271 | "type": "boolean", |
... | ... | @@ -1316,6 +1354,9 @@ export default class TbFlot { |
1316 | 1354 | "required": ["showLines", "fillLines", "showPoints"] |
1317 | 1355 | }, |
1318 | 1356 | "form": [ |
1357 | + "hideDataByDefault", | |
1358 | + "disableDataHiding", | |
1359 | + "removeFromLegend", | |
1319 | 1360 | "excludeFromStacking", |
1320 | 1361 | "showLines", |
1321 | 1362 | "fillLines", | ... | ... |