From 947b31e324030734b2b6ae8a39f816dae21f13d5 Mon Sep 17 00:00:00 2001 From: Shekar Siri Date: Tue, 19 Apr 2022 18:02:20 +0200 Subject: [PATCH] fix(ui) - review fixes --- .../DomBuildingTime/DomBuildingTime.tsx | 2 +- .../SpeedIndexByLocation.tsx | 34 ++++--------------- frontend/app/utils.js | 15 +++++--- frontend/package-lock.json | 11 ++++++ frontend/package.json | 1 + 5 files changed, 30 insertions(+), 33 deletions(-) diff --git a/frontend/app/components/Dashboard/Widgets/PredefinedWidgets/DomBuildingTime/DomBuildingTime.tsx b/frontend/app/components/Dashboard/Widgets/PredefinedWidgets/DomBuildingTime/DomBuildingTime.tsx index 11c71c34d..60402a309 100644 --- a/frontend/app/components/Dashboard/Widgets/PredefinedWidgets/DomBuildingTime/DomBuildingTime.tsx +++ b/frontend/app/components/Dashboard/Widgets/PredefinedWidgets/DomBuildingTime/DomBuildingTime.tsx @@ -46,7 +46,7 @@ function DomBuildingTime(props: Props) { /> */} - + { - const avg = data.reduce((acc, item) => acc + item.avg, 0) / data.length; - return Math.round((value / avg) * 100); -} - -const numberPartBetweenRange = (value: any, max: number) => { - const minPart = value * max / 100 - return Math.round(minPart); -} - interface Props { metric?: any } @@ -33,24 +20,15 @@ function SpeedIndexByLocation(props: Props) { const [pointedLocation, setPointedLocation] = React.useState(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",