/* TODO: PARADOXES: 1) den theloume na doume sto idio diagramma pragmata apo diaforetikous facts tables 2) ola ta meas einai numerics */ var FOO = (function() { var path = ""; var viztype = "chart"; var selectedData = new Object(); var fieldscounter = 0; var filtercounter = 0; var yaxiscounter = 0; var chartData = new Object(); var yaxislist = ''; var forDimsGroupsControls = ""; var forDimsColorsControls = ""; //var measaggs = ""; var loadFlag = true; var theme = 3; var thisyaxis =-1; //var xAxisContainer = 'xaxis'; var xAxisCont = 'xaxis-list'; var yAxisContainer = 'addy-list'; var newyAxis = 'yaxis-basket'; var filtersContainer = "filter-list"; var moreContainer = "moreoptions"; function inits(schema,container) { var mydiv = document.getElementById(container); //create the select header var sel = document.getElementById('tableselect'); //selectedData['table'] = schema[0]['name']; selectedData['nulls'] = false; $("#nulls").removeAttr("checked"); for(var factnum in schema) { //local var for selected options //selectedData['fields'] = new Array(); //selectedData['series'] = new Array(); //selectedData['type'] = 'chart'; //every fact table has an option in the FactTableSelect with its name and a div in the info space with its fields //select option for the fact table var tableheader = document.createElement('option'); if(factnum == 0) $(tableheader).attr("selected","selected"); tableheader.setAttribute('id',schema[factnum]['name']); tableheader.setAttribute('value',schema[factnum]['name']); $(tableheader).html(schema[factnum]['name']); sel.appendChild(tableheader); //div in the info space var measInfoDiv = document.createElement('div'); $(measInfoDiv).attr('id',schema[factnum]['name']+'infoDiv').addClass('infoDiv').hide(); /*if(factnum > 0) $(measInfoDiv).css('display','none'); */ mydiv.appendChild(measInfoDiv); //get the metadata for the measurements /*var metadata = null; $.ajax({ type: "GET", async: false, url: "ajaxRouter9.php", data: "com=measMetadata&table="+schema[factnum]['name'], success: function(resp){ // we have the response //metadata = JSON.parse(resp); }, error: function(e){ alert('Error: ' + e); } });*/ /*for(var m in schema[factnum]['meas']) { var mflag = false; var i=0; for(i in metadata){ if(metadata[i]['name'] == schema[factnum]['meas'][m]['name']){ mflag = true; break; } } //the info line for the measurement var infoLine = document.createElement('div'); //header the name of the measurement var measHeader = document.createElement('p'); $(measHeader).addClass('measHeader'); if(schema[factnum]['meas'][m]['view']) $(measHeader).append(""+schema[factnum]['meas'][m]['view']+""); else $(measHeader).append(""+schema[factnum]['meas'][m]['name']+""); infoLine.appendChild(measHeader); if(metadata[i]['definition']!=''){ var desc = document.createElement('p'); $(desc).addClass('info'); $(desc).append(metadata[i]['definition']+"."); infoLine.appendChild(desc); } if(metadata[i]['source']!=''){ var src = document.createElement('p'); $(src).addClass('info'); $(src).append("
Source:"+metadata[i]['source']+""); infoLine.appendChild(src); } measInfoDiv.appendChild(infoLine); }*/ } $(mydiv).append(""); } function renderChartThemes(container) { var myDiv = document.getElementById(container); var content = ''; for(var i=0;i'+themes[i][0]+'
'; } $(myDiv).append(content); $('input:radio[name=chartTheme]:nth('+theme+')').attr('checked',true); } function userselect() { /* XAXIS */ $('.x-aggrs-select').unbind("click").click(function(){ if($(this).hasClass('disabled')){ $(this).val('none'); return false; } if($(this).val()=='none') selectedData['xaxis']['agg'] = '' ; else selectedData['xaxis']['agg'] = $(this).val(); reDo(); }); $("#xaxis").unbind("click").click(function(){ if($('#xaxis-list').css('display') =='block'){ //$('#close-xaxis-list').css('display','none'); $('#xaxis-list').css('display','none'); } else{ //$('#close-xaxis-list').css('display','block'); $('#xaxis-list').css('display','block'); } return false; }); $(".xaxis-row").live("click", function(){ $('.xaxis-row').css('font-weight','normal'); $(this).addClass('xaxis-selected').css('font-weight','bold'); $("#xaxis-list").css('display','none'); //$("#close-xaxis-list").css("display","none"); $("#xaxis-name").val($(this).find('label').html()); selectedData['xaxis']['name'] = $(this).find('input.val').val(); $("#sort-list option[value='xaxis']").html($(this).find('label').html()); reDo(); }); $(".xaxis-row").live("mouseover", function() { $(this).css('box-shadow', '3px 3px 1px #888888').css('background-color','#666666').css('color','#ffffff'); }); $(".xaxis-row").live("mouseout", function() { $(this).css('box-shadow', 'none').css('background-color','#ffffff').css('color','#666666'); }); $("#close-xaxis-list").click(function() { $("#xaxis-list").css('display','none'); $(this).css("display","none"); return false; }); /*Y-AXIS*/ /*add field */ $('#addf').unbind("click").click(function(){ $("#addy-list").css("display","block"); $("#close-yaxis-list").css("display","block"); $('div#axis-select').show(); }); /*delete*/ $(".field .delete").live("click", function(){ if(fieldscounter == 1) return false; var name = $(this).siblings('.yaxis-select').val(); var agg = $(this).siblings('.aggrs-select').val(); var ind = $(this).parent().attr('title'); //delete all filters that apply to that field //and reset the field counter for all the filters that apply to following fields $('select.applyselect').each(function(){ if($(this).val() == ind){ //delete the filter $(this).parents('tr').remove(); } else if($(this).val() > ind) $(this).val($(this).val()-1); //delete the last option $(this).find('option').last().remove(); }); //delete the field header var hfd = $("#fheaders > .headerdiv").has('input.fieldsheadersval[value="'+ind+'"]'); $(hfd).remove(); //if this yaxis has no other field then delete it as well if($(this).parent().siblings().length == 2){ //delete the axis header var temp1 = $(this).parent().parent().find('.ycountval').val(); var hd = $("#yheaders > .headerdiv").has('input.yaxisheadersval[value="'+temp1+'"]'); $(hd).remove(); yaxiscounter--; $(this).parent().parent().remove(); //redo the counts if(yaxiscounter == 1){ $('.ycount').empty(); $(".ycountval").val(1); $("#yheaders > .headerdiv").find("p").html("yaxis (1)"); $("#yheaders > .headerdiv").find("input.yaxisheadersval").val(1); } else{ $('.yaxis').each(function(index){ $(this).find('.ycount').empty().html("yaxis: ("+(index+1)+")")}); $(this).find('.ycountval').val(index+1); var header = $("#yheaders > .headerdiv").get(index); $(header).find("p").html("yaxis ("+(index+1)+")"); $(header).find("input.yaxisheadersval").val(index+1); } //delete from the select the last child $('div#axis-select select option:last-child').remove(); } else{ $(this).parent().remove(); } //delete the option in sort if needed compileSortOptions(); fieldscounter--; if(fieldscounter == 1) $('.field .delete').hide(); else $('.field .delete').show(); //redo counting the fields in field/@title and field/fieldnum/html $('.field').each(function(index){ $(this).attr('title', index+1); $(this).find('.fieldnum').html(index+1); var header = $("#fheaders > .headerdiv").get(index); $(header).find("p").html("field ("+(index+1)+")"); $(header).find("input.fieldsheadersval").val(index+1); }); reDo(); }); /*change agg*/ $('.aggrs-select').live("change", function(){ if($(this).hasClass('disabled')){ $(this).val('none'); return false; } compileSortOptions(); reDo(); }); /*change type*/ $('.type-select').live("change", function(){ if($(this).hasClass('disabled')){ $(this).val('scatter'); return false; } //find for which field the change was done var fieldId = $(this).parent().parent().attr('title'); if($(this).find(":selected").attr("value") == "column"){ //disable the column choise to all other axis //$(".type-select").not(this).find("option[value='column']").attr('disabled','disabled'); } var i=0; for(i=0;i 0) addField($(this).find('input.defaggs').attr('value'),$(this).find('input.name').attr('value'),'',yaxis); else addyAxis($(this).find('input.defaggs').attr('value'),$(this).find('input.name').attr('value'),''); //hide the measurements from x axis select //$('#xaxis option.optionMeas').attr('disabled','disabled');<------------------------------todo reDo(); }); $(".yaxis-row").live("mouseover", function() { $(this).css('box-shadow', '3px 3px 1px #888888').css('background-color','#666666').css('color','#ffffff'); }); $(".yaxis-row").live("mouseout", function() { $(this).css('box-shadow', 'none').css('background-color','#ffffff').css('color','#666666'); }); /*CHART THEME*/ $('input:radio[name=chartTheme]').live('change',function(){ selectedData['theme'] = ($('input:radio[name=chartTheme]:checked').index()+1)/2-1; reDo(); }); /*FILTERS*/ $(".filter-row").die().live("click", function(){ $("#filter-list").css('display','none'); $("#close-filter-list").css("display","none"); if($(this).find('input.type').attr('value') == 'meas') getFilterData(selectedData['table'],$(this).find('input.val').attr('value'),$(this).find('label').html(),'m'); else getFilterData(selectedData['table'],$(this).find('input.val').attr('value'),$(this).find('label').html(),'d'); filtercounter++; return false; }); $(".filter-row").live("mouseover", function() { $(this).css('box-shadow', '3px 3px 1px #888888').css('background-color','#666666').css('color','#ffffff'); }); $(".filter-row").live("mouseout", function() { $(this).css('box-shadow', 'none').css('background-color','#ffffff').css('color','#666666'); }); $("#close-filter-list").click(function() { $("#filter-list").css('display','none'); $(this).css("display","none"); return false; }); $("#addfilter").click(function(){ $("#filter-list").css("display","block"); $("#close-filter-list").css("display","block"); return false; }); $('.filter a.xsmall-button').live("click", function(){ if($(this).hasClass('btactive')) return false; $(this).siblings().removeClass('btactive'); $(this).addClass('btactive'); if($(this).html()=="discrete"){ $(this).parent().parent().find('.filter-slider').hide(); $(this).parent().parent().find('.filter-form').show(); $(this).parent().parent().find('.filter-having').hide(); } else if($(this).html()=='slider'){ $(this).parent().parent().find('.filter-slider').show(); $(this).parent().parent().find('.filter-form').hide(); $(this).parent().parent().find('.filter-having').hide(); } else{ $(this).parent().parent().find('.filter-having').show(); $(this).parent().parent().find('.filter-slider').hide(); $(this).parent().parent().find('.filter-form').hide(); } }); $(document).on("click",".removefilter",function() { $(this).parent().parent().parent().parent().remove(); $('#filterTable td').css('background-color','#f6f6f6'); $('#filterTable td:even').css('background-color','white'); filtercounter--; //TODO: redo query }); } function userselect2(){ $("#sort-list").live("change",function(){selectedData['sort'] = $(this).val(); reDo();}); $("#order-list").live("change",function(){selectedData['order'] = $(this).find('input:checked').val(); reDo();}); $("#nulls").click(function(){ if($(this).attr('checked') == 'checked') selectedData['nulls'] = true; else selectedData['nulls'] = false; reDo(); }); $(".cumulate").live("change",function(){reDo();}); $(".addtochart").live("click",function(){$(this).removeClass("addtochart").addClass("delfromchart"); $(this).parent().find("input").show(); }); $(".delfromchart").live("click",function(){$(this).removeClass("delfromchart").addClass("addtochart"); $(this).parent().find("input").hide(); }); } function menueffects() { $("#i").click(function(){ $("#metadata").css('display','block'); $("#"+selectedData['table']+"infoDiv").css('display','block'); }); $('#metadataclose').live('click',function(){ $('.infoDiv').css('display','none'); $('#metadata').css('display','none'); }); $('.submit-div').hover( function(){ $(this).css('border','1px solid #41b7d8'); }, function(){ $(this).css('border','1px solid rgba(0,0,0,0.1)'); } ); $('.viztype-button').click(function(){ //an patithike to map prepei na doume an ola einai ok /*if($(this).html()=='map'){ if($('.field').length>1 || selectedData['type'] != 'chart') return false; }*/ $('.viztype-button').removeClass('viztype-active'); $(this).addClass('viztype-active'); if($(this).html() != viztype){ //an to palio viztype einai map prepei na epanaferoume ta options if(viztype=='map') restoreOptions(); viztype = $(this).html(); //an to neo viztype einai map prepei na apenergopoiisoume tis epiloges if(viztype=='map') mapOptions(); reDo(); } }); //$('.contentcontaining').children('.content').hide(); $('.contentcontaining > label').live('click', function(){ $(this).parent().removeClass('contentcontaining').addClass('opencontentcontaining'); $(this).siblings('.content').show(); }); $('.opencontentcontaining > label').live('click', function(){ $(this).parent().removeClass('opencontentcontaining').addClass('contentcontaining'); $(this).siblings('.content').hide(); }); $('body').click(function(){ //$("#addy-list").css('display','none'); //$("#close-yaxis-list").css("display","none"); //$("#filter-list").css('display','none'); //$("#close-filter-list").css("display","none"); }); $('#resultsetsize').change(function(){selectedData['size'] = $(this).val();}); } function restoreOptions(){ $('.x-aggrs-select').removeClass('disabled'); //$('#xaxis').removeClass('disabled');<-------------------------------todo $('.header-select').has('.type-select').show(); if(selectedData['type'] == 'scatter'){ //scatter plot $('.type-select').val('scatter').addClass('disabled'); $('.color,.group').removeClass('disabled'); $('.color-list,.groups-list').removeClass('disabled'); $('.analyze').addClass('disabled'); $('.analyze-list').val('none').addClass('disabled'); selectedData['group'] = ""; } else{//chart selectedData['type'] = 'chart'; $('.type-select').val('column').removeClass('disabled'); $('.color,.group').addClass('disabled'); $('.color-list,.groups-list').val('none').addClass('disabled'); $('.analyze').removeClass('disabled'); $('.analyze-list').removeClass('disabled'); selectedData['group'] = ""; selectedData['color'] = ""; } } function mapOptions(){ $('.x-aggrs-select').val('none').addClass('disabled'); selectedData['xaxis']['agg'] = ''; $('.header-select').has('.type-select').hide(); //$('.type-select').addClass('disabled'); //$('.controls').addClass('disabled'); //$('.controls').find('select').val('none').addClass('disabled'); selectedData['group'] = ""; selectedData['color'] = ""; } function chartControls() { $('.analyze-list').live('change', function(){ if($(this).hasClass('disabled')){ $(this).val('none'); return false; } //if no value was chosen if($(this).val() == 'none'){ if(selectedData['group'] != ""){ selectedData['group'] = ''; reDo(); return false; } else return false; } //some value was chosen //get the value and add it to selected data selectedData['group'] = $(this).val(); //redo chart reDo(); }); /////////////////////////////////////// $(".ui-slider").live("slide",function(event, ui){ $(this).parent().parent().find('.slider-user-min').find('span').html(ui.values[0]); $(this).parent().parent().find('.slider-user-max').find('span').html(ui.values[1]); } ); $("#filterok").click(function(){ reDo(); }); $('a.all').live("click",function(){ $(this).siblings('.form-container').find('input').attr('checked','checked'); }); $('a.none').live("click",function(){ $(this).siblings('.form-container').find('input').removeAttr('checked'); }); /////////////////////////////////////// $('#headersok').click(function(){ selectedData['title'] = $('#mytitle').val(); selectedData['subtitle'] = $('#mysubtitle').val(); selectedData['xaxistitle'] = $('#myxaxistitle').val(); reDo(); }); $('#sizeok').click(function(){reDo();}); } function renderPage(schema,facttable) { selectedData['table'] = facttable; selectedData['fields'] = new Array(); selectedData['type'] = 'chart'; selectedData['xaxis'] = new Array(); yaxiscounter = 0; fieldscounter = 0; filtercounter = 0; $('#filterTable').empty(); $('.headerdiv').remove(); //var xdiv = document.getElementById(xAxisContainer); var xdivlist = document.getElementById(xAxisCont); var ydiv = document.getElementById(yAxisContainer); var fdiv = document.getElementById(filtersContainer); var mdiv = document.getElementById(moreContainer); var factnum; var forfilters = ''; var forxaxis = ''; var forcolors = ''; var forgroups = ''; var foranalyse = '' yaxislist = ""; forcolors = "
"; forDimsColorsControls = ""; forDimsAnalyseControls = ""; yaxislist += meas[m]['view']+" ("+meas[m]['name']+")"; } else{ forxaxis += ""; forfilters += ""; //fcontent += ""; xcontente += meas[m]['name']+""; ycontent += meas[m]['name']+""; yaxislist += meas[m]['name']+""; } } var dims = schema[factnum]['dim']; for(var d in dims) { if(dims[d]['dimtable'] == 'yes'){ forfilters += "
"+dimstree(dims[d]['attrib'],[dims[d]['name']], 'filter-row')+"
"; forxaxis += "
"+dimstree(dims[d]['attrib'],[dims[d]['name']], 'xaxis-row')+"
"; xcontents += attribsOfDims(dims[d]['attrib'],[dims[d]['name']],"optionDim x-axis","option"); //fcontent += attribsOfDims(dims[d]['attrib'],[dims[d]['name']],"filter","row"); forDimsColorsControls += attribsOfDims(dims[d]['attrib'],[dims[d]['name']],"color","option"); forDimsGroupsControls += attribsOfDims(dims[d]['attrib'],[dims[d]['name']],"groups","option"); forDimsAnalyseControls += attribsOfDims(dims[d]['attrib'],[dims[d]['name']],"analyze","option"); } else{ forfilters += "
"; forxaxis += "
"; xcontents += ""; //fcontent += "
"; //fcontent += "
"; forDimsColorsControls += ""; forDimsGroupsControls += ""; forDimsAnalyseControls += ""; } } //$(xdiv).empty().append(xcontents).append(xcontente); $(xdivlist).empty().append(forxaxis); //$(fdiv).empty().append(fcontent); $(fdiv).empty().append(forfilters); $(ydiv).empty().append(ycontent); forDimsColorsControls += ""; forDimsGroupsControls += ""; forDimsAnalyseControls += ""; $("#"+newyAxis).empty(); mscontent += "
"; mscontent += "

Distinguish by:

"+forDimsColorsControls+"
"; mscontent += "
"; mscontent += "

Group by:

"+forDimsGroupsControls+"
"; mccontent += "
"; mccontent += "

sort by:

"; mccontent += "
"; mccontent += "

order:

min to max
max to min
"; mccontent += "
"; mccontent += "

Split by:

"+forDimsAnalyseControls+"
"; //mccontent += "
"; //mccontent += "

Size by:

"+forDimsAnalyseControls+"
"; mccontent += "
"; $(mdiv).empty().append(mccontent/*+mscontent*/); selectedData['sort'] = 'xaxis'; selectedData['order'] = 'a'; } function dimstree(attribs, predecessors, classname){ var contentString = ""; for(var attrnum in attribs) { if(attribs[attrnum]['attrib'].length == 0){ if(typeof attribs[attrnum]['analysed'] === 'undefined'){ contentString += "
"; contentString += "
"; else contentString+= predecessors[predecessors.length-1]+"-"+attribs[attrnum]['name']+""; } } else { var temp = dimstree(attribs[attrnum]['attrib'],predecessors.concat([attribs[attrnum]['name']]), classname); if(temp!='') contentString += "
"+temp+"
"; } } return contentString; } function attribsOfDims(attribs, predecessors, classPrefix, type) { var contentString = ""; for(var attrnum in attribs) { if(type == 'row'){ if(attribs[attrnum]['attrib'].length == 0) { contentString += "
"; contentString += "
"; else contentString+= predecessors[predecessors.length-1]+"-"+attribs[attrnum]['name']+""; } else { contentString += attribsOfDims(attribs[attrnum]['attrib'],predecessors.concat([attribs[attrnum]['name']]),classPrefix,type); } } else if(type == 'option') { if(attribs[attrnum]['attrib'].length == 0) { contentString += ""; else contentString+= predecessors[predecessors.length-1]+"-"+attribs[attrnum]['name']+""; } else { contentString += attribsOfDims(attribs[attrnum]['attrib'],predecessors.concat([attribs[attrnum]['name']]),classPrefix,type); } } } return contentString; } function reDo(){ if(viztype=='chart') renderChart(); else if(viztype=='table') renderTable('g'); else if(viztype=='g table') renderTable('g'); else if(viztype=='map') renderMap(); else if(viztype=='treemap') renderTreemap(); else{ viztype='chart'; renderChart(); } } function renderMap(){ if(selectedData['fields'].length == 0) getFields(); if(filtercounter >0) getFilters(); $("#chartcontainer").attr("src",path+"choromap.php?com=query&data="+encodeURIComponent(JSON.stringify(selectedData))); $("#url").html(path+'choromap.php?com=query&data='+JSON.stringify(selectedData)); $("#urlencode").html(path+'choromap.php?com=query&data='+encodeURIComponent(JSON.stringify(selectedData))); selectedData['fields'] = new Array(); $('.header-select').has('.type-select').hide(); } function renderChart(){ if(loadFlag) getFields(); loadFlag=true; if(filtercounter > 0) getFilters(); //xaxis style selectedData['xStyle'] = Object(); if($("#xarotate").is(":checked")){ var val = $("#rotatedegrees").val(); selectedData['xStyle']['r'] = parseInt(val,10); } else selectedData['xStyle']['r'] = "-"; if($("#xastep").is(":checked")){ var val = $("#stepsnum").val(); selectedData['xStyle']['s'] = parseInt(val,10); } else selectedData['xStyle']['s'] = "-"; if($("#xalevel").is(":checked")){ var val = $("#levelsnum").val(); selectedData['xStyle']['l'] = parseInt(val,10); } else selectedData['xStyle']['l'] = "-"; if($("#xaftrim").is(":checked")){ var val = $("#ftrimnum").val(); selectedData['xStyle']['ft'] = parseInt(val,10); } else selectedData['xStyle']['ft'] = "-"; if($("#xawtrim").is(":checked")){ var val = $("#wtrimnum").val(); selectedData['xStyle']['wt'] = parseInt(val,10); } else selectedData['xStyle']['wt'] = "-"; if(selectedData['type'] == 'scatter'){ if(selectedData['group'] && selectedData['group']!='' && (!selectedData['color'] || selectedData['color'] == '')){ $(".aggrs-select").val('avg').removeClass('disabled'); $(".x-aggrs-select").val('avg').removeClass('disabled'); } else{ $(".aggrs-select").val('none').addClass('disabled'); $(".x-aggrs-select").val('none').addClass('disabled'); } $('#scatter-controls .controls').removeClass('disabled'); $('#chart-controls .controls').addClass('disabled'); } else{ if($(".aggrs-select").hasClass('disabled')) $(".aggrs-select").val('avg').removeClass('disabled'); $(".x-aggrs-select").addClass('disabled'); $(".aggrs-select option").removeAttr('disabled'); $('#scatter-controls .controls').addClass('disabled'); $('#chart-controls .controls').removeClass('disabled'); } $("#chartcontainer").attr("src",path+"chart.php?com=query&data="+encodeURIComponent(JSON.stringify(selectedData))); $("#url").html(path+'chart.php?com=query&data='+JSON.stringify(selectedData)); $("#urlencode").html(path+'chart.php?com=query&data='+encodeURIComponent(JSON.stringify(selectedData))); selectedData['fields'] = new Array(); $('.header-select').has('.type-select').show(); } function renderTable(which){ if(selectedData['fields'].length == 0) getFields(); if(filtercounter >0) getFilters(); if(selectedData['type'] == 'scatter'){ if(selectedData['group'] && selectedData['group']!='' && (!selectedData['color'] || selectedData['color'] == '')){ $(".aggrs-select").val('avg').removeClass('disabled'); $(".x-aggrs-select").val('avg').removeClass('disabled'); } else { $(".aggrs-select").val('none').addClass('disabled'); $(".x-aggrs-select").val('none').addClass('disabled'); } $('#scatter-controls .controls').removeClass('disabled'); $('#chart-controls .controls').addClass('disabled'); } else{ if($(".aggrs-select").hasClass('disabled')) $(".aggrs-select").val('avg').removeClass('disabled'); $(".x-aggrs-select").addClass('disabled'); $(".aggrs-select option").removeAttr('disabled'); $('#scatter-controls .controls').addClass('disabled'); $('#chart-controls .controls').removeClass('disabled'); } var location = ''; if(which == '1'){ $("#chartcontainer").attr("src",path+"table.php?com=query&data="+encodeURIComponent(JSON.stringify(selectedData))); $("#url").html(path+"table.php?com=query&data="+JSON.stringify(selectedData)); $("#urlencode").html(path+"table.php?com=query&data="+encodeURIComponent(JSON.stringify(selectedData))); } else if(which == 'g'){ $("#chartcontainer").attr("src",path+"gtable.php?com=query&data="+encodeURIComponent(JSON.stringify(selectedData))); $("#url").html(path+"gtable.php?com=query&data="+JSON.stringify(selectedData)); $("#urlencode").html(path+"gtable.php?com=query&data="+encodeURIComponent(JSON.stringify(selectedData))); } selectedData['fields'] = new Array(); $('.header-select').has('.type-select').hide(); } function renderTreemap(){ if(selectedData['fields'].length == 0) getFields(); if(filtercounter >0) getFilters(); if(selectedData['type'] == 'scatter'){ if(selectedData['group'] && selectedData['group']!='' && (!selectedData['color'] || selectedData['color'] == '')){ $(".aggrs-select").val('avg').removeClass('disabled'); $(".x-aggrs-select").val('avg').removeClass('disabled'); } else { $(".aggrs-select").val('none').addClass('disabled'); $(".x-aggrs-select").val('none').addClass('disabled'); } $('#scatter-controls .controls').removeClass('disabled'); $('#chart-controls .controls').addClass('disabled'); } else{ if($(".aggrs-select").hasClass('disabled')) $(".aggrs-select").val('avg').removeClass('disabled'); $(".x-aggrs-select").addClass('disabled'); $(".aggrs-select option").removeAttr('disabled'); $('#scatter-controls .controls').addClass('disabled'); $('#chart-controls .controls').removeClass('disabled'); } $("#chartcontainer").attr("src",path+"treemap.php?com=query&data="+encodeURIComponent(JSON.stringify(selectedData))); $("#url").html(path+"treemap.php?com=query&data="+JSON.stringify(selectedData)); $("#urlencode").html(path+"treemap.php?com=query&data="+encodeURIComponent(JSON.stringify(selectedData))); selectedData['fields'] = new Array(); $('.header-select').has('.type-select').hide(); } function defaultSelections(){ //select the xAxis //$('#xaxis').val(selectedData['xaxis']['name']); $('#xaxis-name').val(selectedData['xaxis']['name']); $(".xaxis-row").has("input[value='"+selectedData['xaxis']['name']+"']").addClass('xaxis-selected').css('font-weight','bold'); $("#sort-list option[value='xaxis']").html($(".xaxis-row").has("input[value='"+selectedData['xaxis']['name']+"']").find('label').html()); /*if($('#xaxis').find(':selected').hasClass('optionMeas')){ <-------------------------todo selectedData['type'] = 'scatter'; } else { selectedData['type'] = 'chart'; }*/ //create the yaxis selection for(var i=0; ifield "+fieldscounter+""); }); var content = "
"; content += "

"+fieldscounter+"

"; content += ""; content += "delete"; //create select content += "" content += "
"; content += "

type:

"; content += "

cumulative

"; content += "
"; //place the content in the yaxis $($('.yaxis')[yaxis-1]).append(content); //preselected option if(agg!='') $(".field[title='"+fieldscounter+"'] .aggrs-select").val(agg); else $(".field[title='"+fieldscounter+"'] .aggrs-select").val('none'); if(field!='') $(".field[title='"+fieldscounter+"'] .yaxis-select").val(field); if(selectedData['type'] == 'scatter') $('.type-select').val('scatter').addClass('disabled'); else{ if(type!='') $(".field[title='"+fieldscounter+"'] .type-select").val(type); else $(".field[title='"+fieldscounter+"'] .type-select").val('column'); } if(fieldscounter>1){ $('.delete').show(); } else $('.delete').hide(); //add a header input for the new field $("#fheaders").append("

field ("+fieldscounter+"):

"); compileSortOptions(); } function compileSortOptions(){ var previous = $("#sort-list").val(); $("#sort-list > option[value!='xaxis']").remove(); $(".field").each(function(){ var agg = $(this).find('.aggrs-select').val(); var field = $(this).find('.yaxis-select').val(); if($("#sort-list > option[value='"+agg+"-"+field+"']").length == 0) $('#sort-list').append(""); }) if($("#sort-list > option[value='"+previous+"']").length > 0 ){ $("#sort-list").val(previous); selectedData['sort'] = previous; } else{ $("#sort-list").val('xaxis'); selectedData['sort'] = 'xaxis'; } } function addyAxis(agg,field,type){ yaxiscounter++; //add it in the axis-select var name = ''; if(yaxiscounter == 1) $('div#axis-select select').append(""); else { if(yaxiscounter == 2) name = '2nd'; else if(yaxiscounter == 3) name = '3rd'; else name = yaxiscounter+'th'; $('div#axis-select select').append(""); } var mydiv = document.getElementById(newyAxis); //div that has an x sign, an aggs select, a fields select, a diagram select var content = "
"; if(yaxiscounter == 1) content += "
"; else { content += "
yaxis: ("+yaxiscounter+")
"; if(yaxiscounter == 2){ $('.yaxis .ycount').html('yaxis: (1)'); } } //put it in the div $(mydiv).append(content); addField(agg,field,type,yaxiscounter); //add a header input for the new axis $("#yheaders").append("

yaxis ("+yaxiscounter+"):

"); } function getFields(){ var counter = 0; selectedData['fields'] = new Array(); selectedData['yaxisheaders'] = new Array(); selectedData['fieldsheaders'] = new Array(); $('.yaxis').each(function(index){ //gia kathe yaxis get the header and iterate over the fields selectedData['yaxisheaders'][index] = $($("#yheaders > .headerdiv").get(index)).find(".yaxisheaders").val(); //gia kathe field ftiakse ena gia to selectedData pou tha exei fld, agg, type, yaxis selectedData['in'] = new Array(); $(this).find('.field').each(function(){ selectedData['fields'][counter] = new Object(); selectedData['fields'][counter]['fld'] = $(this).find('.yaxis-select').val(); if($(this).find('.aggrs-select').val() == 'none') selectedData['fields'][counter]['agg'] = ''; else selectedData['fields'][counter]['agg'] = $(this).find('.aggrs-select').val(); selectedData['fields'][counter]['type'] = $(this).find('.type-select').val(); selectedData['fields'][counter]['yaxis'] = index+1; var fname = $($("#fheaders > .headerdiv").get(counter)).find(".fieldsheaders").val(); selectedData['fieldsheaders'][counter] = fname; selectedData['fields'][counter]['c'] = $(this).find('.cumulate').is(':checked'); if($(this).find(".delfromchart").length > 0) { var l = selectedData['in'].length; selectedData['in'][l] = new Object; selectedData['in'][l]['f'] = counter; selectedData['in'][l]['text'] = $(this).find(".vscumulate").val(); } counter++; }); }); } function getFilters(){ var incfilters = new Array(); var incfltcount = 0; var filters = new Array(); var fltcount = 0; var inchaving = new Array(); var inchavingcnt = 0; var having = new Array(); var havingcnt = 0; $('#filterTable tr td').each(function(index){ //SLIDER if($(this).find('.filter-slider').length >0 && $(this).find('.filter-slider').css('display') != 'none'){ if($(this).find('select.applyselect').val()==-2){ var flag = false; for(var i =0;i"); //$(header_p).addClass("filtername").append(""+filterName+"").append(''); $(header_p).addClass("filtername").append("").append(''); outer.appendChild(remove_a); outer.appendChild(header_p); //create a div with the content of the filter var filtcont = doc.createElement("div"); $(filtcont).addClass('filtercontent'); //apply to var applydiv = doc.createElement('div'); var applyselect = doc.createElement('select'); $(applyselect).attr('id','apply'+filtercounter).addClass('applyselect'); $(applydiv).addClass('applyselect').append("

apply to:

").append(applyselect); $(applyselect).append(""); $('.field').each(function(index){ $(applyselect).append(""); }); $(container_div).append(applydiv); $(container_div).append(filtcont); if(filterData['type'] == "ordinal"){ //buttons $(container_div).append("
slider"); $(container_div).append("discrete"); if(type=='m') $(container_div).append("having"); //double slider var str; str = "
"; str += ""+filterData['min']+""; str += ""+filterData['max']+""; str += ""; str += ""; str += "
"; $(filtcont).append(str); $(function(){ $("#slider"+filtercounter).slider({ step: 1, range: true, min: filterData['min'], max: filterData['max'], values: [filterData['min'], filterData['max']], slide: function(event, ui){ $(this).siblings('span').find('.slider-user-min').html(ui.values[0]); $(this).siblings('span').find('.slider-user-max').html(ui.values[1]); } }); }); //str = "
"; //form str = "