Markiewicz_praca/csv_generator.js

67 lines
2.1 KiB
JavaScript

const fs = require('fs');
const { Obj } = require('prelude-ls');
const timeit = (fun, number)=>{
const startTime = performance.now();
for(let _=0; _<number;_++)fun();
const endTime = performance.now();
return endTime-startTime;
}
const randint = (min,max)=>Math.floor(Math.random() * (max - min + 1)) + min;
const zeroToFiveGrade = ()=>randint(1,5)
const yesOrNo = ()=>randint(0,1)
const columns = {
"ocena ogólna":zeroToFiveGrade,
"ocena jedzenia":zeroToFiveGrade,
"ocena obsługi":zeroToFiveGrade,
"Czy przyjdziesz ponownie?":yesOrNo
}
const rows_count=1000
const raw_data = new Array(rows_count).fill(undefined).map(x=>Object.values(columns).map(v=>v()))
const transform_csv = (columns,raw_data)=>{
const count_data = {}
for (let [i, column] of Object.keys(columns).entries()){
const values_count = {}
const values_percent = {}
let total = 0
for (let row of raw_data){
if (!values_count[row[i]]) values_count[row[i]]=0
values_count[row[i]]+=1
total+=1
}
for (let value of Object.keys(values_count))
values_percent[value] = values_count[value]/total
count_data[column]=values_percent
}
return count_data
}
if (!performance) //if running in node.js
var { performance } = require('perf_hooks');
console.log(timeit(()=>transform_csv(columns,raw_data), 1000))
console.log(timeit(()=>JSON.parse(JSON.stringify(raw_data)), 1000))
fs.writeFileSync('chartData.json', JSON.stringify(transform_csv(columns, raw_data)), 'utf-8');
let generateDataset = (transformed_csv)=>{
console.log(transformed_csv)
const dataset = {dimensions: ["question", "1","2","3","4","5"]}
const source = Object.entries(transformed_csv).map(([key,value])=>{
return {question:key, ...value}
})
dataset.source=source;
return dataset
}
let generateSeries = (dataset)=>{
return dataset.map(x=>({ type: 'bar', stack:'total'}))
}
console.log(generateDataset(transform_csv(columns,raw_data)))
const renderer = require("./ssr.js")
console.log("imported..")
renderer.generateChart(renderer.root, {})