/*********************************************************************** * Chart registry for now chart types **********************************************************************/ var gras_chart_get_registry = function() { return [ {key:'overhead_compare', name:'Overhead Compare', factory:GrasChartOverheadCompare}, {key:'overall_throughput', name:'Overall Throughput', factory:GrasChartOverallThroughput}, {key:'handler_breakdown', name:'Handler Breakdown', factory:GrasChartHandlerBreakdown}, {key:'total_io_counts', name:'I/O port Totals', factory:GrasChartTotalIoCounts}, ]; } /*********************************************************************** * One time setup **********************************************************************/ function gras_chart_factory_setup(registry, point) { var id = $('gras_stats:first', point).attr('id'); registry.top_id = id; $('#top_name').append(' - ' + id); $('block', point).each(function(index, block) { var id = $(block).attr('id'); registry.block_ids.push(id); var container = $('#chart_designer_blocks'); var div = $('
'); $(div).append(''); var input = $('').attr({ type: 'checkbox', name: id }); input.attr('checked', false); $(div).append(input); $(container).append(div); }); } /*********************************************************************** * chart factory input handler **********************************************************************/ function gras_chart_factory_handle_input(registry) { //get a list of the selected blocks var selected_blocks = new Array(); $.each($('#chart_designer_blocks input'), function(index, input) { var input = $(input); if (input.is(':checked')) { selected_blocks.push(input.attr('name')); } }); //get the type of chart to create var chart_type = $('#chart_type_selector').val(); //create args for the factory make var args = { block_ids:selected_blocks, chart_type:chart_type, }; //call into the factory with args gras_chart_factory_make(registry, args); } /*********************************************************************** * save/load to/from local storage **********************************************************************/ function gras_chart_save(registry) { if (typeof(Storage) === "undefined") return; var all_args = new Array(); $.each(registry.active_charts, function(index, info) { all_args.push(info.args); }); localStorage.setItem(registry.top_id, JSON.stringify(all_args)); } function gras_chart_load(registry) { if (typeof(Storage) === "undefined") return; var chart_args = JSON.parse(localStorage.getItem(registry.top_id)); if (!chart_args) return; $.each(chart_args, function(args_i, args) { //check that the blocks saved in the args actually exist var do_make = true; $.each(args.block_ids, function(block_id_i, block_id) { if ($.inArray(block_id, registry.block_ids) < 0) { do_make = false; } }); if (do_make) gras_chart_factory_make(registry, args); }); } /*********************************************************************** * chart factory make routine **********************************************************************/ function gras_chart_factory_make(registry, args) { //create containers var chart_box = $('