diff --git a/beat/web/reports/static/reports/app/directives/addReportItem.js b/beat/web/reports/static/reports/app/directives/addReportItem.js index 4e57c6a54b4c1d4bb51618ae2fc87b5ff10e7ec7..8be08f9b4cd6a2a4fc1ee0f04b3f0d9ea1079ecc 100644 --- a/beat/web/reports/static/reports/app/directives/addReportItem.js +++ b/beat/web/reports/static/reports/app/directives/addReportItem.js @@ -21,7 +21,7 @@ */ //Directive for opening smart_selector list on "Add a report item" button click that displays options -angular.module('reportApp').directive("addreportitem", function($compile){ +angular.module('reportApp').directive("addreportitem", ['$compile', 'ReportService', function($compile, ReportService){ return function(scope, element, attrs){ scope.$on("addSavedElement", function(event, id_content, type){ let num_tables_in_content = 0; @@ -494,126 +494,6 @@ angular.module('reportApp').directive("addreportitem", function($compile){ } - //Retrieve chart from api and display on proper item - function _get_chart(scope, sub_content, content_type, chart_id){ - 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]]; - - alias_experiments.push(scope.report_experiments_alias[scope.report.experiments[i]]); - } - - 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); - } - ); - } - - //Retrieve chart from api and display on proper item function _retrieve_chart(scope, sub_content, container){ let required_plotter = []; @@ -704,10 +584,24 @@ angular.module('reportApp').directive("addreportitem", function($compile){ base_url = scope.report.url_prefix; //scope.plots_details[container.id]; + let getAnalyzerFromExpName = (expName) => { + let e = scope.report.all_experiments[expName]; + if(!e){ + return null; + } + return e.declaration.analyzers.analysis.algorithm; + }; + + let analyzers = [scope.report.analyzer]; + if(ReportService.activeGroup){ + analyzers = ReportService.getGroupExperiments(ReportService.activeGroup) + .map(expName => getAnalyzerFromExpName(expName)); + } + let plot_detail = {}; plot_detail["required_plotter"] = required_plotter; plot_detail["data"] = { - analyzer: [scope.report.analyzer], + analyzer: analyzers, output: [chart_name], plotter: set_plotter, }; @@ -732,6 +626,9 @@ angular.module('reportApp').directive("addreportitem", function($compile){ } scope.plots_details[container.id]= plot_detail; + if(ReportService.activeGroup){ + ReportService.addReportItemToGroup(container.id, ReportService.activeGroup); + } if(scope.report.status == "editable" && scope.report.number != scope.report_number){ beat.experiments.utils.displayPlot(base_url, $(container).find('.panel-body')[0], @@ -774,5 +671,5 @@ angular.module('reportApp').directive("addreportitem", function($compile){ } }; -}); +}]); diff --git a/beat/web/reports/static/reports/app/services/reportService.js b/beat/web/reports/static/reports/app/services/reportService.js index 988b79147364423a54acb1c1151a15e9856f1670..926381fbe5fbd8a94515e673bb671edbc6bae9fe 100644 --- a/beat/web/reports/static/reports/app/services/reportService.js +++ b/beat/web/reports/static/reports/app/services/reportService.js @@ -133,7 +133,6 @@ angular.module('reportApp').factory('ReportService', ['$http', function($http){ .forEach(([groupName, expNames]) => { let g = reportServiceInstance.createGroup(groupName); expNames.forEach(n => g.addExperiment(n)); - groupData.push(g); }); }; @@ -169,6 +168,21 @@ angular.module('reportApp').factory('ReportService', ['$http', function($http){ return groupData.filter(g => g.experiments.includes(expName)).map(g => g.name); }; + // add report item to group + reportServiceInstance.addReportItemToGroup = (id, groupName) => { + checkForGroup(groupName); + + let group = groupData.find(g => g.name === groupName); + group.addReportItem(id); + }; + + // rm report item id from group + reportServiceInstance.removeReportItemFromGroup = (id, groupName) => { + checkForGroup(groupName); + let group = groupData.find(g => g.name === groupName); + return group.removeReportItem(id); + }; + // gets group for a report item's id reportServiceInstance.getReportItemGroup = (id) => { return groupData.find(g => g.reportItemIds.includes(id)); diff --git a/beat/web/reports/templates/reports/panels/viewer.html b/beat/web/reports/templates/reports/panels/viewer.html index 8c17e06d55ce95fdb815510648cb4a22d515716d..a3a4326fd6528d38039c4d193a9bfbc204fbe34f 100644 --- a/beat/web/reports/templates/reports/panels/viewer.html +++ b/beat/web/reports/templates/reports/panels/viewer.html @@ -107,6 +107,13 @@ </li> </ul> </div> + <p>Saved Report Items Associated to Group</p> + <ul class='list-group' style='margin-top: 1em'> + <li class='list-group-item' ng-repeat='id in group.reportItemIds'> + {$ id $} + </li> + </ul> + <p>Experiments in Group</p> <ul class='list-group' style='margin-top: 1em'> <li class='list-group-item' ng-repeat='expName in group.experiments'> {$ expName $}