67 lines
2.1 KiB
JavaScript
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, {})
|