Skip to content
Snippets Groups Projects
Commit ce277f61 authored by Jaden Diefenbaugh's avatar Jaden Diefenbaugh
Browse files

reset addReportItem directive in anticipation of removing it later

parent 66024bac
No related branches found
No related tags found
1 merge request!223Reports overhaul
......@@ -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
}
};
}]);
});
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment