<html>
<body>
<div id="wordCloud"></div>
<script src="https://mrc.bws.birst.com/js/birst_embed.js"></script>
<script type="text/javascript" src="//d3js.org/d3.v3.js"></script>
<script type="text/javascript" src="https://www.jasondavies.com/wordcloud/cloud.min.js"></script>
<script type="text/javascript">
var eventHandler=function(e){
//this is to escape single quote in the param name
function escapeParam(str) {
str = str.replace(/'/g, "\\'")
return str
}
var shouldResetQuery=false;
if(e.data.operation==="setFilters"){
//This is for generating query from the set filter data for ProductName
var qu="SELECT TOP 100 USING OUTER JOIN [BirthDate: Sum: Quantity] 'COL0' , [Products.ProductName] 'COL1' FROM [ALL] WHERE ((";
for(var i=0;i<e.data.filters.length;i++){
var obj=e.data.filters[i];
if(obj.key==="Products.ProductName"){
var valArr=String(obj.value).split(",");
shouldResetQuery=(valArr.length && obj.value)?false:true;
for(var q=0;q<valArr.length;q++){
if(q===valArr.length-1){
qu+="[Products.ProductName]='"+escapeParam(valArr[q])+"'";
}else{
qu+="[Products.ProductName]='"+escapeParam(valArr[q])+"' OR ";
}
}
qu+="))";
if(shouldResetQuery){
qu="SELECT TOP 100 USING OUTER JOIN [BirthDate: Sum: Quantity] 'COL0' , [Products.ProductName] 'COL1' FROM [ALL]"
}
BirstConfig.getData(qu);
}
}
}
if(e.data.operation==="executeQueryResult"){
var glbWidth = window.innerWidth; // Width of tagcloud in pixels
var glbHeight = window.innerHeight; // Height of tagcloud in pixels
var dataList=[];
for(var i=0,len= e.data.result.rows.length;i<len;i++){
var sub= e.data.result.rows[i];
var obj={size:(sub[0]/40),text:sub[1]};
dataList.push(obj);
}
d3.select("#wordCloud").selectAll("*").remove();
//D3
var color = d3.scale.linear()
var fill = d3.scale.category20();
var draw = function( words ) {
d3.select( '#wordCloud' ).append( 'svg' )
.attr( 'width', glbWidth )
.attr( 'height', glbHeight )
.append( 'g' )
.attr( 'transform', 'translate(' + glbWidth / 2 + ',' + glbHeight / 2 + ')' )
.selectAll( 'text' )
.data( words )
.enter().append( 'text' )
.style( 'font-size', function ( d ) {
return d.size + 'px';
} )
.style( 'font-family', 'Impact' )
.style( 'fill', function ( d, i ) {
return fill( i );
} )
.attr( 'text-anchor', 'middle' )
.attr( 'transform', function ( d ) {
return 'translate(' + [d.x, d.y] + ')rotate(' + d.rotate + ')';
} )
.text( function ( d ) {
return d.text;
} )
.on( 'click', function ( d ) {
alert( d.text );
} );
}
d3.layout.cloud().size( [glbWidth, glbHeight] )
.words( dataList )
.padding( 5 )
.rotate( function () {
return ~~(Math.random() * 2) * 90;
} )
.font( 'Impact' )
.fontSize( function ( d ) {
return d.size;
} )
.on( 'end', draw )
.start();
}
}
BirstConfig.callBack(eventHandler)
BirstConfig.getData("SELECT TOP 100 USING OUTER JOIN [BirthDate: Sum: Quantity] 'COL0' , [Products.ProductName] 'COL1' FROM [ALL]");
</script>
</body>
</html>