(function() { "use strict"; function Data(){ this.original = [ {"item":"a","percent":[4,5,7,8],"rowStyle":"d","terjedelem":[-100,100],"dimension":[ "just for test", "of people never do anykind of test", "of people rarely test anything", "of people frequently test something", "of people are always testing" ]}, {"item":"b","percent":[7,8,35,50],"rowStyle":"l","terjedelem":[-100,100],"dimension":[ "I'd recommend this program to a friend.", "hate it", "have forgot it", "probably won't forget", "definitely do" ]}, {"item":"c","percent":[10,15,30,45],"rowStyle":"d","terjedelem":[-100,100],"dimension":[ "I learned a lot in this program.", "slept like a log","learnt nothing new", "become better people", "take a new lease on life" ]}, {"item":"d","percent":[20,25,25,30],"rowStyle":"l","terjedelem":[-100,100],"dimension":[ "This program exceeded my expectations.", "wish they have never fallen into line", "didn't find anything new","were surprised", "want to make it again" ]}, {"item":"e","percent":[50,50,50,50],"rowStyle":"d","terjedelem":[-100,100],"dimension":[ "Likert choices (4-point)", "Strongly disagree", "Disagree", "Strongly agree", "Agree" ]} ] } function TransformData(){ } var getData = new Data(); var data = getData.original; function LikertEven() { var myLikertEven = d3.select("#LikertEven").chart("LikertEvens", { seriesCount: data.length }); myLikertEven.margin({ top: 0, right: 240, bottom: 5, left: 10 }) .width([600]) .height([40]) .axisStyle("axis") .duration(1000); myLikertEven.draw(data); d3.selectAll("button#Randomize").on("click", function() { d3.selectAll(".textResult").remove(); d3.selectAll(".textResultKiem").remove(); d3.selectAll(".subtitle").remove(); var length = data.length, row = null; for (var i = 0; i < length-1; i++) { row = data[i]; randomizeLikert(row.percent); } myLikertEven.draw(data); }); d3.selectAll("button#Reset").on("click", function() { d3.selectAll(".textResult").remove(); d3.selectAll(".textResultKiem").remove(); d3.selectAll(".subtitle").remove(); getData = new Data(); data = getData.original; myLikertEven.draw(data); }); } function randomizeLikert(d) { var total = 100, sum; if (!d.randomizer) d.randomizer = randomizer(d); d[0] = d.randomizer(d[0],0,total); d[1] = d.randomizer(d[1],0,total); d[2] = d.randomizer(d[2],0,total); d[3] = d.randomizer(d[3],0,total); sum = d[0] + d[1] + d[2] + d[3]; d[0] = Math.floor((d[0]/sum)*total); d[1] = Math.floor((d[1]/sum)*total); d[2] = Math.floor((d[2]/sum)*total); d[3] = Math.floor((d[3]/sum)*total); d[3] = d[3] + ( total - d[0] - d[1] - d[2] - d[3]); return d; } function getRandomInt(min, max) { return Math.ceil(Math.random() * (max - min + 1)) + min; } function randomizer(d,min,max) { return function(d,min,max) { return getRandomInt(min,max); }; } LikertEven(); })();