From 0ac71958552453dd9d3c5e4e2713162454da4d9d Mon Sep 17 00:00:00 2001 From: Etienne ANNE Date: Wed, 6 Sep 2023 09:20:51 +0200 Subject: [PATCH] starting plots --- .../src/extensions/greenscore/MixBarChart.js | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 otoroshi/javascript/src/extensions/greenscore/MixBarChart.js diff --git a/otoroshi/javascript/src/extensions/greenscore/MixBarChart.js b/otoroshi/javascript/src/extensions/greenscore/MixBarChart.js new file mode 100644 index 0000000000..96fa3672fb --- /dev/null +++ b/otoroshi/javascript/src/extensions/greenscore/MixBarChart.js @@ -0,0 +1,75 @@ +import React, { PureComponent } from 'react'; +import { Radar, RadarChart, PolarGrid, PolarAngleAxis, PolarRadiusAxis, ResponsiveContainer } from 'recharts'; +import { caclculateRuleGroup } from './util'; + +export default class MixBarChart extends PureComponent { + + calculate = routes => { + return routes.reduce((acc, route) => { + return [ + { subject: 'Architecture', value: acc[0].value + caclculateRuleGroup(route.rulesConfig, "architecture") }, + { subject: 'Design', value: acc[1].value + caclculateRuleGroup(route.rulesConfig, 'design') }, + { subject: 'Usage', value: acc[2].value + caclculateRuleGroup(route.rulesConfig, 'usage') }, + { subject: 'Log retention', value: acc[3].value + caclculateRuleGroup(route.rulesConfig, 'log') } + ] + }, [ + { subject: 'Architecture', value: 0 }, + { subject: 'Design', value: 0 }, + { subject: 'Usage', value: 0 }, + { subject: 'Log retention', value: 0 }, + ]) + } + + render() { + const values = this.props.groups.reduce((acc, item) => { + const values = this.calculate(item.routes); + return [ + { subject: 'Architecture', value: acc[0].value + values[0].value }, + { subject: 'Design', value: acc[1].value + values[1].value }, + { subject: 'Usage', value: acc[2].value + values[2].value }, + { subject: 'Log retention', value: acc[3].value + values[3].value } + ] + }, [ + { subject: 'Architecture', value: 0 }, + { subject: 'Design', value: 0 }, + { subject: 'Usage', value: 0 }, + { subject: 'Log retention', value: 0 } + ]); + + const data = [ + { subject: 'Architecture', value: values[0].value / this.props.groups.length }, + { subject: 'Design', value: values[1].value / this.props.groups.length }, + { subject: 'Usage', value: values[2].value / this.props.groups.length }, + { subject: 'Log retention', value: values[3].value / this.props.groups.length } + ] + + console.log(data, [ + { subject: 'Architecture', value: data[0].value / 1500 }, + { subject: 'Design', value: data[1].value / 2400 }, + { subject: 'Usage', value: data[2].value / 1500 }, + { subject: 'Log retention', value: data[3].value / 600 } + ]) + + return
+ + + + + + + + +
+ } +}