From f13adb369be07923c0f1eac87cc64db9acb98210 Mon Sep 17 00:00:00 2001 From: Ivan Mikheykin Date: Tue, 11 Dec 2018 15:58:45 +0300 Subject: [PATCH] Fix display of multivalues buckets as an empty cell --- dist/color_mode_discrete.js | 30 +++++++++++++++++++++--------- dist/color_mode_discrete.js.map | 2 +- src/color_mode_discrete.js | 26 +++++++++++++++++++------- 3 files changed, 41 insertions(+), 17 deletions(-) diff --git a/dist/color_mode_discrete.js b/dist/color_mode_discrete.js index 92239cf..8dfa6b9 100644 --- a/dist/color_mode_discrete.js +++ b/dist/color_mode_discrete.js @@ -101,16 +101,28 @@ System.register(["lodash"], function (_export, _context) { value: function getBucketColor(values) { var thresholds = this.panel.color.thresholds; + if (!values || values.length == 0) { + // treat as null value + return this.getMatchedThreshold(null).color; + } + + if (values.length == 1) { + return this.getMatchedThreshold(values[0]).color; + } + + var isAllValuesNulls = true; + for (var j = 0; j < values.length; j++) { + if (values[j] != null) { + isAllValuesNulls = false; + } + } + if (isAllValuesNulls) { + return this.getMatchedThreshold(null).color; + } + for (var i = 0; i < thresholds.length; i++) { - for (var j = 0; j < values.length; j++) { - if (values[j] == null) { - if (this.panel.nullPointMode == 'as zero') { - return this.getMatchedThreshold(0).color; - } else { - return 'rgba(0,0,0,0)'; - } - } - if (values[j] == thresholds[i].value) { + for (var _j = 0; _j < values.length; _j++) { + if (values[_j] == thresholds[i].value) { return this.getDiscreteColor(i); } } diff --git a/dist/color_mode_discrete.js.map b/dist/color_mode_discrete.js.map index 69a473c..eed3211 100644 --- a/dist/color_mode_discrete.js.map +++ b/dist/color_mode_discrete.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/color_mode_discrete.js"],"names":["_","ColorModeDiscrete","scope","panelCtrl","ctrl","panel","values","thresholds","color","tooltips","i","length","j","value","push","tooltip","notMatched","getMatchedThreshold","threshold","index","getThreshold","nullPointMode","getDiscreteColor","cardsData","noColorDefined","cards","k","interval"],"mappings":"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","file":"color_mode_discrete.js","sourcesContent":["import _ from 'lodash';\n\n// Helper methods to handle discrete color mode\nexport class ColorModeDiscrete {\n constructor(scope) {\n this.scope = scope;\n this.panelCtrl = scope.ctrl;\n this.panel = scope.ctrl.panel;\n }\n\n // get tooltip for each value ordered by thresholds priority\n convertValuesToTooltips(values) {\n let thresholds = this.panel.color.thresholds;\n let tooltips = [];\n\n for (let i = 0; i < thresholds.length; i++) {\n for (let j = 0; j < values.length; j++) {\n if (values[j] == thresholds[i].value) {\n tooltips.push({\n \"tooltip\": thresholds[i].tooltip?thresholds[i].tooltip:values[j],\n \"color\": thresholds[i].color\n });\n }\n }\n }\n return tooltips;\n }\n\n\n getNotMatchedValues(values) {\n let notMatched = [];\n for (let j = 0; j < values.length; j++) {\n if (!this.getMatchedThreshold(values[j])) {\n notMatched.push(values[j]);\n }\n }\n return notMatched;\n }\n\n getNotColoredValues(values) {\n let notMatched = [];\n for (let j = 0; j < values.length; j++) {\n let threshold = this.getMatchedThreshold(values[j]);\n if (!threshold || !threshold.color || threshold.color == \"\") {\n notMatched.push(values[j]);\n }\n }\n return notMatched;\n }\n\n\n getDiscreteColor(index) {\n let color = this.getThreshold(index).color;\n if (!color || color == \"\") {\n return 'rgba(0,0,0,1)';\n }\n return color;\n }\n\n // returns color from first matched thresold in order from 0 to thresholds.length\n getBucketColor(values) {\n let thresholds = this.panel.color.thresholds;\n\n for (let i = 0; i < thresholds.length; i++) {\n for (let j = 0; j < values.length; j++) {\n if (values[j] == null) {\n if (this.panel.nullPointMode == 'as zero') {\n return this.getMatchedThreshold(0).color;\n } else {\n return 'rgba(0,0,0,0)';\n }\n }\n if (values[j] == thresholds[i].value) {\n return this.getDiscreteColor(i);\n }\n }\n }\n return 'rgba(0,0,0,1)';\n }\n\n updateCardsValuesHasColorInfo() {\n if (!this.panelCtrl.cardsData) {\n return\n }\n this.panelCtrl.cardsData.noColorDefined = false;\n let cards = this.panelCtrl.cardsData.cards;\n for (let i=0; i= thresholds.length == null) {\n return {\n \"color\": \"rgba(0,0,0,0)\",\n \"value\": \"null\",\n \"tooltip\": \"null\",\n }\n }\n return thresholds[index];\n }\n\n roundIntervalCeil(interval) {\n switch (true) {\n case interval <= 10:\n return 10; // 0.01s\n case interval <= 20:\n return 20; // 0.02s\n case interval <= 50:\n return 50; // 0.05s\n case interval <= 100:\n return 100; // 0.1s\n case interval <= 200:\n return 200; // 0.2s\n case interval <= 500:\n return 500; // 0.5s\n case interval <= 1000:\n return 1000; // 1s\n case interval <= 2000:\n return 2000; // 2s\n case interval <= 5000:\n return 5000; // 5s\n case interval <= 10000:\n return 10000; // 10s\n case interval <= 15000:\n return 15000; // 15s\n case interval <= 20000:\n return 20000; // 20s\n case interval <= 30000:\n return 30000; // 30s\n case interval <= 60000:\n return 60000; // 1m\n case interval <= 120000:\n return 120000; // 2m\n case interval <= 300000:\n return 300000; // 5m\n case interval <= 600000:\n return 600000; // 10m\n case interval <= 900000:\n return 900000; // 15m\n case interval <= 1200000:\n return 1200000; // 20m\n case interval <= 1800000:\n return 1800000; // 30m\n case interval <= 3600000:\n return 3600000; // 1h\n case interval <= 7200000:\n return 7200000; // 2h\n case interval <= 10800000:\n return 10800000; // 3h\n case interval <= 21600000:\n return 21600000; // 6h\n case interval <= 43200000:\n return 43200000; // 12h\n case interval <= 86400000:\n return 86400000; // 1d\n case interval <= 604800000:\n return 604800000; // 1w\n case interval <= 2592000000:\n return 2592000000; // 30d\n default:\n return 31536000000; // 1y\n }\n }\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../src/color_mode_discrete.js"],"names":["_","ColorModeDiscrete","scope","panelCtrl","ctrl","panel","values","thresholds","color","tooltips","i","length","j","value","push","tooltip","notMatched","getMatchedThreshold","threshold","index","getThreshold","isAllValuesNulls","getDiscreteColor","cardsData","noColorDefined","cards","nullPointMode","k","interval"],"mappings":"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","file":"color_mode_discrete.js","sourcesContent":["import _ from 'lodash';\n\n// Helper methods to handle discrete color mode\nexport class ColorModeDiscrete {\n constructor(scope) {\n this.scope = scope;\n this.panelCtrl = scope.ctrl;\n this.panel = scope.ctrl.panel;\n }\n\n // get tooltip for each value ordered by thresholds priority\n convertValuesToTooltips(values) {\n let thresholds = this.panel.color.thresholds;\n let tooltips = [];\n\n for (let i = 0; i < thresholds.length; i++) {\n for (let j = 0; j < values.length; j++) {\n if (values[j] == thresholds[i].value) {\n tooltips.push({\n \"tooltip\": thresholds[i].tooltip?thresholds[i].tooltip:values[j],\n \"color\": thresholds[i].color\n });\n }\n }\n }\n return tooltips;\n }\n\n\n getNotMatchedValues(values) {\n let notMatched = [];\n for (let j = 0; j < values.length; j++) {\n if (!this.getMatchedThreshold(values[j])) {\n notMatched.push(values[j]);\n }\n }\n return notMatched;\n }\n\n getNotColoredValues(values) {\n let notMatched = [];\n for (let j = 0; j < values.length; j++) {\n let threshold = this.getMatchedThreshold(values[j]);\n if (!threshold || !threshold.color || threshold.color == \"\") {\n notMatched.push(values[j]);\n }\n }\n return notMatched;\n }\n\n\n getDiscreteColor(index) {\n let color = this.getThreshold(index).color;\n if (!color || color == \"\") {\n return 'rgba(0,0,0,1)';\n }\n return color;\n }\n\n // returns color from first matched thresold in order from 0 to thresholds.length\n getBucketColor(values) {\n let thresholds = this.panel.color.thresholds;\n\n if (!values || values.length == 0) {\n // treat as null value\n return this.getMatchedThreshold(null).color;\n }\n\n if (values.length == 1) {\n return this.getMatchedThreshold(values[0]).color;\n }\n\n let isAllValuesNulls = true;\n for (let j = 0; j < values.length; j++) {\n if (values[j] != null) {\n isAllValuesNulls = false;\n }\n }\n if (isAllValuesNulls) {\n return this.getMatchedThreshold(null).color;\n }\n\n for (let i = 0; i < thresholds.length; i++) {\n for (let j = 0; j < values.length; j++) {\n if (values[j] == thresholds[i].value) {\n return this.getDiscreteColor(i);\n }\n }\n }\n return 'rgba(0,0,0,1)';\n }\n\n updateCardsValuesHasColorInfo() {\n if (!this.panelCtrl.cardsData) {\n return\n }\n this.panelCtrl.cardsData.noColorDefined = false;\n let cards = this.panelCtrl.cardsData.cards;\n for (let i=0; i= thresholds.length == null) {\n return {\n \"color\": \"rgba(0,0,0,0)\",\n \"value\": \"null\",\n \"tooltip\": \"null\",\n }\n }\n return thresholds[index];\n }\n\n roundIntervalCeil(interval) {\n switch (true) {\n case interval <= 10:\n return 10; // 0.01s\n case interval <= 20:\n return 20; // 0.02s\n case interval <= 50:\n return 50; // 0.05s\n case interval <= 100:\n return 100; // 0.1s\n case interval <= 200:\n return 200; // 0.2s\n case interval <= 500:\n return 500; // 0.5s\n case interval <= 1000:\n return 1000; // 1s\n case interval <= 2000:\n return 2000; // 2s\n case interval <= 5000:\n return 5000; // 5s\n case interval <= 10000:\n return 10000; // 10s\n case interval <= 15000:\n return 15000; // 15s\n case interval <= 20000:\n return 20000; // 20s\n case interval <= 30000:\n return 30000; // 30s\n case interval <= 60000:\n return 60000; // 1m\n case interval <= 120000:\n return 120000; // 2m\n case interval <= 300000:\n return 300000; // 5m\n case interval <= 600000:\n return 600000; // 10m\n case interval <= 900000:\n return 900000; // 15m\n case interval <= 1200000:\n return 1200000; // 20m\n case interval <= 1800000:\n return 1800000; // 30m\n case interval <= 3600000:\n return 3600000; // 1h\n case interval <= 7200000:\n return 7200000; // 2h\n case interval <= 10800000:\n return 10800000; // 3h\n case interval <= 21600000:\n return 21600000; // 6h\n case interval <= 43200000:\n return 43200000; // 12h\n case interval <= 86400000:\n return 86400000; // 1d\n case interval <= 604800000:\n return 604800000; // 1w\n case interval <= 2592000000:\n return 2592000000; // 30d\n default:\n return 31536000000; // 1y\n }\n }\n}\n"]} \ No newline at end of file diff --git a/src/color_mode_discrete.js b/src/color_mode_discrete.js index f697a71..e708118 100644 --- a/src/color_mode_discrete.js +++ b/src/color_mode_discrete.js @@ -61,15 +61,27 @@ export class ColorModeDiscrete { getBucketColor(values) { let thresholds = this.panel.color.thresholds; + if (!values || values.length == 0) { + // treat as null value + return this.getMatchedThreshold(null).color; + } + + if (values.length == 1) { + return this.getMatchedThreshold(values[0]).color; + } + + let isAllValuesNulls = true; + for (let j = 0; j < values.length; j++) { + if (values[j] != null) { + isAllValuesNulls = false; + } + } + if (isAllValuesNulls) { + return this.getMatchedThreshold(null).color; + } + for (let i = 0; i < thresholds.length; i++) { for (let j = 0; j < values.length; j++) { - if (values[j] == null) { - if (this.panel.nullPointMode == 'as zero') { - return this.getMatchedThreshold(0).color; - } else { - return 'rgba(0,0,0,0)'; - } - } if (values[j] == thresholds[i].value) { return this.getDiscreteColor(i); }