From ce277f61bc09b1f846daed3b377c0b7a4e60da97 Mon Sep 17 00:00:00 2001 From: Jaden Diefenbaugh <blakcap@users.noreply.github.com> Date: Thu, 2 Mar 2017 11:32:59 +0100 Subject: [PATCH] reset addReportItem directive in anticipation of removing it later --- .../reports/app/directives/addReportItem.js | 205 ++++++++++++------ 1 file changed, 136 insertions(+), 69 deletions(-) diff --git a/beat/web/reports/static/reports/app/directives/addReportItem.js b/beat/web/reports/static/reports/app/directives/addReportItem.js index b21c31b1f..4e57c6a54 100644 --- a/beat/web/reports/static/reports/app/directives/addReportItem.js +++ b/beat/web/reports/static/reports/app/directives/addReportItem.js @@ -21,9 +21,8 @@ */ //Directive for opening smart_selector list on "Add a report item" button click that displays options -angular.module('reportApp').directive("addreportitem", ['$compile', 'GroupsService', function($compile, GroupsService){ +angular.module('reportApp').directive("addreportitem", function($compile){ return function(scope, element, attrs){ - console.log(scope); scope.$on("addSavedElement", function(event, id_content, type){ let num_tables_in_content = 0; let num_figures_in_content = 0; @@ -342,42 +341,20 @@ angular.module('reportApp').directive("addreportitem", ['$compile', 'GroupsServi }); - // get the possible plot data - let possiblePlots = GroupsService - // only look at plots from exps in active group - .getGroupExperiments(GroupsService.activeGroup) - // get the obj with the exp's possible plots - .map(expName => Object.entries(scope.report.all_experiments[expName].results.analysis) - .filter(([res_name, obj]) => res_name !== 'out_data') - .map(([res_name, obj]) => { - return { - identifier: res_name, - name: res_name, - description: obj.type - }; - }) - ) - // flatten the array of arrays generated above - .reduce((a, as) => a.concat(as), []) - // only keep plots that are possible from all the entries - .reduce((aKeep, v, i, a) => { - console.log(v); - let plotTypeCount = a.filter(o => o.description === v.description).length; - // if every exp couldnt do this plot, dont keep it - if(plotTypeCount < GroupsService.getGroupExperiments(GroupsService.activeGroup).length){ - console.log(`break less than`); - return aKeep; - } - // if this value is already kept, dont keep it - if(aKeep.find(o => o.description === v.description)){ - console.log(`break already`); - console.log(aKeep); - return aKeep; - } - return aKeep.concat(v); - }, []) + //Results block are the same for all experiments from same analyzer. + //So just grab information from one of them for smart_selector items + let single_experiment = scope.report.experiments[0]; + + //create smart_selector items + angular.forEach(scope.report_experiments[single_experiment].plottable_blocks, function(value_plottable, key_plottable){ + let plot_type = scope.report_experiments[single_experiment].results[scope.report_experiments[single_experiment].analyzer_block][value_plottable].type; + let item_dict = {}; + item_dict["identifier"] = value_plottable; + item_dict["name"] = value_plottable; + item_dict["description"] = plot_type; - next_content_items = possiblePlots; + next_content_items.push(item_dict); + }); break; } @@ -518,7 +495,7 @@ angular.module('reportApp').directive("addreportitem", ['$compile', 'GroupsServi } //Retrieve chart from api and display on proper item - function _retrieve_chart(scope, sub_content, container){ + function _get_chart(scope, sub_content, content_type, chart_id){ let required_plotter = []; let set_plotter = ''; if(sub_content.selected_plotter != undefined){ @@ -580,23 +557,129 @@ angular.module('reportApp').directive("addreportitem", ['$compile', 'GroupsServi let legend_experiments = ''; let alias_experiments = []; + for(let i = 0; i < scope.report.experiments.length; i++){ + if(i == 0) + legend_experiments = scope.report_experiments_alias[scope.report.experiments[i]]; + else + legend_experiments = legend_experiments+ "&" +scope.report_experiments_alias[scope.report.experiments[i]]; - let reportItemGroupExps; - let existGroup = GroupsService.getReportItemGroup(container.id); - if(existGroup){ - reportItemGroupExps = existGroup.experiments; - } else { - GroupsService.addReportItemToGroup(container.id, GroupsService.activeGroup); - reportItemGroupExps = GroupsService.getReportItemGroup(container.id).experiments; + alias_experiments.push(scope.report_experiments_alias[scope.report.experiments[i]]); } - for(let i = 0; i < scope.report.experiments.length; i++){ - // if this exp isn't in the active group's exp list, dont look at it - if(!reportItemGroupExps.includes(scope.report.experiments[i])){ - continue; + let request_data = { + experiment: alias_experiments, + analyzer: [scope.report.analyzer], + output: [chart_name], + plotter: set_plotter, + legend: legend_experiments, + report_number: scope.report.number, + //height: 300, + //width: 400, + }; + + base_url = scope.report.url_prefix; + + let plot_detail = {}; + plot_detail["required_plotter"] = required_plotter; + plot_detail["data"] = { + analyzer: [scope.report.analyzer], + output: [chart_name], + plotter: set_plotter, + }; + + if(sub_content.selected_template != undefined){// && sub_content.selected_template != "Default") + plot_detail["selected_template"] = sub_content.selected_template; + request_data.parameter = plot_detail["selected_template"]; + } + else{ + plot_detail["selected_template"] = sub_content.defaultplotter.parameter; + request_data.parameter = plot_detail["selected_template"]; + } + + if(sub_content.merged != undefined){// && sub_content.selected_template != "Default") + plot_detail["merged"] = sub_content.merged; + request_data.merged = plot_detail["merged"]; + } + else{ + plot_detail["merged"] = true; + request_data.merged = plot_detail["merged"]; + } + + beat.experiments.utils.getPlotData(base_url, + request_data, required_plotter, plotterparameter, content_type, + function(r_image_data, selected_content_type) { + download(r_image_data, chart_id + "." + content_type.toLowerCase(), selected_content_type); } + ); + } + - if(legend_experiments.length == 0) + //Retrieve chart from api and display on proper item + function _retrieve_chart(scope, sub_content, container){ + let required_plotter = []; + let set_plotter = ''; + if(sub_content.selected_plotter != undefined){ + //required_plotter.push(sub_content.selected_plotter); + set_plotter = sub_content.selected_plotter; + let requested_dataformat = ''; + //Get other plotters for required dataformat + for (let i = 0; i < scope.report.plotters.length; i++){ + if(scope.report.plotters[i].name == sub_content.selected_plotter){ + requested_dataformat = scope.report.plotters[i].dataformat; + break; + } + } + + //Get default plotter for required dataformat + for (let i = 0; i < scope.report.defaultplotters.length; i++){ + if(scope.report.defaultplotters[i].dataformat == requested_dataformat){ + sub_content.defaultplotter = scope.report.defaultplotters[i]; + break; + } + } + + required_plotter.push(sub_content.defaultplotter.plotter); + + //Get other plotters for required dataformat + for (let i = 0; i < scope.report.plotters.length; i++){ + if(scope.report.plotters[i].dataformat == requested_dataformat && scope.report.plotters[i].name != sub_content.defaultplotter.plotter){ + required_plotter.push(scope.report.plotters[i].name); + } + } + } + else{ + //Get default plotter for required dataformat + for (let i = 0; i < scope.report.defaultplotters.length; i++){ + if(scope.report.defaultplotters[i].dataformat == sub_content.description){ + sub_content.defaultplotter = scope.report.defaultplotters[i]; + break; + } + } + + required_plotter.push(sub_content.defaultplotter.plotter); + set_plotter = sub_content.defaultplotter.plotter; + + //Get other plotters for required dataformat + for (let i = 0; i < scope.report.plotters.length; i++){ + if(scope.report.plotters[i].dataformat == sub_content.description && scope.report.plotters[i].name != sub_content.defaultplotter.plotter){ + required_plotter.push(scope.report.plotters[i].name); + } + } + } + + let plotterparameter = []; + //Get other plotterparameter + for (let i = 0; i < scope.report.plotterparameter.length; i++){ + plotterparameter.push(scope.report.plotterparameter[i].name); + } + + let chart_name = sub_content.name; + + let legend_experiments = ''; + let alias_experiments = []; + + for(let i = 0; i < scope.report.experiments.length; i++){ + if(i == 0) legend_experiments = scope.report_experiments_alias[scope.report.experiments[i]]; else legend_experiments = legend_experiments+ "&" +scope.report_experiments_alias[scope.report.experiments[i]]; @@ -607,20 +690,9 @@ angular.module('reportApp').directive("addreportitem", ['$compile', 'GroupsServi alias_experiments.push(scope.report_experiments_alias_from_content[scope.report.experiments[i]]); } - let getAnalyzerFromExpName = (expName) => { - if(!scope.report.all_experiments){ - return null; - } - let e = scope.report.all_experiments[expName]; - if(!e){ - return null; - } - return e.declaration.analyzers.analysis.algorithm; - }; - let request_data = { experiment: alias_experiments, - analyzer: [getAnalyzerFromExpName(reportItemGroupExps[0])], + analyzer: [scope.report.analyzer], output: [chart_name], plotter: set_plotter, legend: legend_experiments, @@ -632,15 +704,10 @@ angular.module('reportApp').directive("addreportitem", ['$compile', 'GroupsServi base_url = scope.report.url_prefix; //scope.plots_details[container.id]; - let analyzers = [scope.report.analyzer]; - analyzers = reportItemGroupExps - .map(expName => getAnalyzerFromExpName(expName)) - .filter(a => a); - let plot_detail = {}; plot_detail["required_plotter"] = required_plotter; plot_detail["data"] = { - analyzer: analyzers, + analyzer: [scope.report.analyzer], output: [chart_name], plotter: set_plotter, }; @@ -707,5 +774,5 @@ angular.module('reportApp').directive("addreportitem", ['$compile', 'GroupsServi } }; -}]); +}); -- GitLab