(null);
const dataMap = React.useMemo(() => {
const data = {};
+ const max = metric.data.chart.reduce((acc, item) => Math.max(acc, item.avg), 0);
+ const min = metric.data.chart.reduce((acc, item) => Math.min(acc, item.avg), 0);
metric.data.chart.forEach((item: any) => {
- item.percentage = getPercentageOfAverage(metric.data.chart, item.avg);
- item.perNumber = numberPartBetweenRange(item.percentage, 5);
+ item.perNumber = positionOfTheNumber(min, max, item.avg, 5);
data[item.userCountry.toLowerCase()] = item;
});
return data;
}, [])
- // const getSeries = data => {
- // const series: any[] = [];
- // data.forEach(item => {
- // const d = [threeLetter[item.userCountry], Math.round(item.avg)]
- // series.push(d)
- // })
-
- // return series;
- // }
-
const getLocationClassName = (location, index) => {
const i = (dataMap[location.id] ? dataMap[location.id].perNumber : 0);
const cls = stl["heat_index" + i];
@@ -98,7 +76,7 @@ function SpeedIndexByLocation(props: Props) {
{
export const colorScale = (values, colors) => {
- const minValue = Math.min.apply(null, values);
- const maxValue = Math.max.apply(null, values);
- return []
+ // const minValue = Math.min.apply(null, values);
+ // const maxValue = Math.max.apply(null, values);
+ // return []
+ return chroma.scale(colors)
// return scale.linear()
// .domain([minValue,maxValue])
@@ -239,4 +240,10 @@ export const sliceListPerPage = (list, page, perPage = 10) => {
const start = page * perPage;
const end = start + perPage;
return list.slice(start, end);
+}
+
+export const positionOfTheNumber = (min, max, value, length) => {
+ const interval = (max - min) / length;
+ const position = Math.round((value - min) / interval);
+ return position;
}
\ No newline at end of file
diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index 3696726a6..5b5c1de48 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -10,6 +10,7 @@
"dependencies": {
"@sentry/browser": "^5.21.1",
"@svg-maps/world": "^1.0.1",
+ "chroma-js": "^2.4.2",
"classnames": "^2.2.6",
"codemirror": "^5.62.3",
"copy-to-clipboard": "^3.3.1",
@@ -6974,6 +6975,11 @@
"integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
"dev": true
},
+ "node_modules/chroma-js": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.4.2.tgz",
+ "integrity": "sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A=="
+ },
"node_modules/chrome-trace-event": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
@@ -30844,6 +30850,11 @@
"integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
"dev": true
},
+ "chroma-js": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.4.2.tgz",
+ "integrity": "sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A=="
+ },
"chrome-trace-event": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
diff --git a/frontend/package.json b/frontend/package.json
index a50cb702e..652d2dee9 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -17,6 +17,7 @@
"dependencies": {
"@sentry/browser": "^5.21.1",
"@svg-maps/world": "^1.0.1",
+ "chroma-js": "^2.4.2",
"classnames": "^2.2.6",
"codemirror": "^5.62.3",
"copy-to-clipboard": "^3.3.1",