From 5c083563c313c2b510c32ec518f6a82ea5054310 Mon Sep 17 00:00:00 2001 From: titima15 Date: Mon, 12 Aug 2024 15:02:58 -0400 Subject: [PATCH 001/146] add folder for transformation project --- lib/CXGN/Trial/Folder.pm | 23 ++++++++++++++++--- .../Controller/AJAX/BreedersToolbox/Folder.pm | 6 ++++- lib/SGN/Controller/AJAX/HTMLSelect.pm | 6 +++-- lib/SGN/Controller/Folder.pm | 1 + mason/breeders_toolbox/folder/folder.mas | 13 +++++++++-- mason/breeders_toolbox/folder/folder_new.mas | 14 +++++++++-- mason/breeders_toolbox/folder/folder_set.mas | 10 +++++++- 7 files changed, 62 insertions(+), 11 deletions(-) diff --git a/lib/CXGN/Trial/Folder.pm b/lib/CXGN/Trial/Folder.pm index 7c0b85f5ca..1bb4c584c8 100644 --- a/lib/CXGN/Trial/Folder.pm +++ b/lib/CXGN/Trial/Folder.pm @@ -69,6 +69,11 @@ has 'folder_for_tracking_activities' => (isa => 'Bool', default => 0, ); +has 'folder_for_transformations' => (isa => 'Bool', + is => 'rw', + default => 0, +); + has 'location_id' => (isa => 'Int', is => 'rw', ); @@ -119,6 +124,7 @@ sub BUILD { my $folder_for_genotyping_trials_cvterm_id = SGN::Model::Cvterm->get_cvterm_row($self->bcs_schema, 'folder_for_genotyping_trials', 'project_property')->cvterm_id(); my $folder_for_genotyping_projects_cvterm_id = SGN::Model::Cvterm->get_cvterm_row($self->bcs_schema, 'folder_for_genotyping_projects', 'project_property')->cvterm_id(); my $folder_for_tracking_activities_cvterm_id = SGN::Model::Cvterm->get_cvterm_row($self->bcs_schema, 'folder_for_tracking_activities', 'project_property')->cvterm_id(); + my $folder_for_transformations_cvterm_id = SGN::Model::Cvterm->get_cvterm_row($self->bcs_schema, 'folder_for_transformations', 'project_property')->cvterm_id(); my $folder_cvterm_id = SGN::Model::Cvterm->get_cvterm_row($self->bcs_schema,'trial_folder', 'project_property')->cvterm_id(); my $analyses_cvterm_id = SGN::Model::Cvterm->get_cvterm_row($self->bcs_schema,'analysis_metadata_json', 'project_property')->cvterm_id(); my $breeding_program_trial_relationship_id = SGN::Model::Cvterm->get_cvterm_row($self->bcs_schema,'breeding_program_trial_relationship', 'project_relationship')->cvterm_id(); @@ -146,6 +152,8 @@ sub BUILD { $self->folder_for_genotyping_projects(1); } elsif ($folder_type_row->type_id() == $folder_for_tracking_activities_cvterm_id) { $self->folder_for_tracking_activities(1); + } elsif ($folder_type_row->type_id() == $folder_for_transformations_cvterm_id) { + $self->folder_for_transformations(1); } elsif ($folder_type_row->type_id() == $additional_info_cvterm_id) { my $additional_info = decode_json($folder_type_row->value); $self->additional_info($additional_info); @@ -213,6 +221,7 @@ sub create { my $folder_for_genotyping_trials = $args->{folder_for_genotyping_trials}; my $folder_for_genotyping_projects = $args->{folder_for_genotyping_projects}; my $folder_for_tracking_activities = $args->{folder_for_tracking_activities}; + my $folder_for_transformations = $args->{folder_for_transformations}; my $additional_info = $args->{additional_info} || undef; # check if name is already taken @@ -249,6 +258,10 @@ sub create { my $folder_type_cvterm = SGN::Model::Cvterm->get_cvterm_row($schema, 'folder_for_tracking_activities', 'project_property'); $project->create_projectprops({ $folder_type_cvterm->name() => '1' }); } + if ($folder_for_transformations) { + my $folder_type_cvterm = SGN::Model::Cvterm->get_cvterm_row($schema, 'folder_for_transformations', 'project_property'); + $project->create_projectprops({ $folder_type_cvterm->name() => '1' }); + } if ($additional_info){ my $additional_info_cvterm = SGN::Model::Cvterm->get_cvterm_row($schema, 'project_additional_info', 'project_property'); $project->create_projectprops({ $additional_info_cvterm->name() => encode_json($additional_info) }); @@ -275,7 +288,7 @@ sub list { my $folder_for_genotyping_trials = $args->{folder_for_genotyping_trials}; my $folder_for_genotyping_projects = $args->{folder_for_genotyping_projects}; my $folder_for_tracking_activities = $args->{folder_for_tracking_activities}; - + my $folder_for_transformations = $args->{folder_for_transformations}; my $folder_cvterm_id = SGN::Model::Cvterm->get_cvterm_row($schema,'trial_folder', 'project_property')->cvterm_id(); my $breeding_program_trial_relationship_id = SGN::Model::Cvterm->get_cvterm_row($schema,'breeding_program_trial_relationship', 'project_relationship')->cvterm_id(); @@ -286,7 +299,7 @@ sub list { } my %projectprop_params; - if (!$folder_for_trials && !$folder_for_crosses && !$folder_for_genotyping_trials && !$folder_for_genotyping_projects && !$folder_for_tracking_activities){ + if (!$folder_for_trials && !$folder_for_crosses && !$folder_for_genotyping_trials && !$folder_for_genotyping_projects && !$folder_for_tracking_activities && !$folder_for_transformations){ $projectprop_params{'projectprops.type_id'} = $folder_cvterm_id; } elsif ($folder_for_trials){ my $folder_type_cvterm_id = SGN::Model::Cvterm->get_cvterm_row($schema, 'folder_for_trials', 'project_property')->cvterm_id(); @@ -303,6 +316,9 @@ sub list { } elsif ($folder_for_tracking_activities){ my $folder_type_cvterm_id = SGN::Model::Cvterm->get_cvterm_row($schema, 'folder_for_tracking_activities', 'project_property')->cvterm_id(); $projectprop_params{'projectprops.type_id'} = $folder_type_cvterm_id; + } elsif ($folder_for_transformations){ + my $folder_type_cvterm_id = SGN::Model::Cvterm->get_cvterm_row($schema, 'folder_for_transformations', 'project_property')->cvterm_id(); + $projectprop_params{'projectprops.type_id'} = $folder_type_cvterm_id; } my $breeding_program_rel = $schema->resultset('Project::ProjectRelationship')->search(\%object_project_params)->search_related("subject_project")->search_related("projectprops", \%projectprop_params, {'+select'=>'subject_project.name', '+as'=>'name' } ); @@ -625,6 +641,7 @@ sub get_jstree_html { } elsif ($project_type_of_interest eq 'transformation') { $local_type_of_interest = 'transformation_project'; + $folder_type_of_interest = 'folder_for_transformations'; } $html .= _jstree_li_html($schema, $parent_type, $self->{'id'}, $self->{'name'}); @@ -657,7 +674,7 @@ sub get_jstree_html { elsif ($children{$child}->{$folder_type_of_interest}) { $html .= get_jstree_html('shift', $children{$child}, $schema, 'folder', $project_type_of_interest); } - elsif (!$children{$child}->{'folder_for_crosses'} && !$children{$child}->{'folder_for_genotyping_trials'} && !$children{$child}->{'folder_for_trials'} && !$children{$child}->{'folder_for_genotyping_projects'} && !$children{$child}->{'folder_for_tracking_activities'} && $children{$child}->{'trial_folder'}) { + elsif (!$children{$child}->{'folder_for_crosses'} && !$children{$child}->{'folder_for_genotyping_trials'} && !$children{$child}->{'folder_for_trials'} && !$children{$child}->{'folder_for_genotyping_projects'} && !$children{$child}->{'folder_for_tracking_activities'} && !$children{$child}->{'folder_for_transformations'} && $children{$child}->{'trial_folder'}) { $html .= get_jstree_html('shift', $children{$child}, $schema, 'folder', $project_type_of_interest); } elsif (($local_type_of_interest eq 'design' && $children{$child}->{'genotyping_plate'}) || ($local_type_of_interest eq 'design' && $children{$child}->{'genotype_data_project'}) || ($local_type_of_interest eq 'design' && $children{$child}->{'pcr_genotype_data_project'})){ diff --git a/lib/SGN/Controller/AJAX/BreedersToolbox/Folder.pm b/lib/SGN/Controller/AJAX/BreedersToolbox/Folder.pm index b9fc47006e..87c18722d3 100644 --- a/lib/SGN/Controller/AJAX/BreedersToolbox/Folder.pm +++ b/lib/SGN/Controller/AJAX/BreedersToolbox/Folder.pm @@ -36,6 +36,7 @@ sub create_folder :Path('/ajax/folder/new') Args(0) { my $folder_for_genotyping_trials; my $folder_for_genotyping_projects; my $folder_for_tracking_activities; + my $folder_for_transformations; my $project_type = $c->req->param("project_type"); if ($project_type eq 'field_trial') { @@ -48,6 +49,8 @@ sub create_folder :Path('/ajax/folder/new') Args(0) { $folder_for_genotyping_projects = 1; } elsif ($project_type eq 'activity_record') { $folder_for_tracking_activities = 1; + } elsif ($project_type eq 'transformation_project') { + $folder_for_transformations = 1; } if (! $self->check_privileges($c)) { @@ -70,7 +73,8 @@ sub create_folder :Path('/ajax/folder/new') Args(0) { folder_for_crosses => $folder_for_crosses, folder_for_genotyping_trials => $folder_for_genotyping_trials, folder_for_genotyping_projects => $folder_for_genotyping_projects, - folder_for_tracking_activities => $folder_for_tracking_activities + folder_for_tracking_activities => $folder_for_tracking_activities, + folder_for_transformations => $folder_for_transformations, }); $c->stash->{rest} = { diff --git a/lib/SGN/Controller/AJAX/HTMLSelect.pm b/lib/SGN/Controller/AJAX/HTMLSelect.pm index 2b1afaf45e..c4c13d3faa 100644 --- a/lib/SGN/Controller/AJAX/HTMLSelect.pm +++ b/lib/SGN/Controller/AJAX/HTMLSelect.pm @@ -138,6 +138,7 @@ sub get_trial_folder_select : Path('/ajax/html/select/folders') Args(0) { my $folder_for_genotyping_trials = 1 ? $c->req->param("folder_for_genotyping_trials") eq 'true' : 0; my $folder_for_genotyping_projects = 1 ? $c->req->param("folder_for_genotyping_projects") eq 'true' : 0; my $folder_for_tracking_activities = 1 ? $c->req->param("folder_for_tracking_activities") eq 'true' : 0; + my $folder_for_transformations = 1 ? $c->req->param("folder_for_transformations") eq 'true' : 0; my $id = $c->req->param("id") || "folder_select"; my $name = $c->req->param("name") || "folder_select"; @@ -152,7 +153,8 @@ sub get_trial_folder_select : Path('/ajax/html/select/folders') Args(0) { folder_for_crosses => $folder_for_crosses, folder_for_genotyping_trials => $folder_for_genotyping_trials, folder_for_genotyping_projects => $folder_for_genotyping_projects, - folder_for_tracking_activities => $folder_for_tracking_activities + folder_for_tracking_activities => $folder_for_tracking_activities, + folder_for_transformations => $folder_for_transformations, }); if (scalar(@folders)>0){ @@ -680,7 +682,7 @@ sub get_stocks_select : Path('/ajax/html/select/stocks') Args(0) { } my $sp_person_id = $c->user() ? $c->user->get_object()->get_sp_person_id() : undef; - + my $stock_search = CXGN::Stock::Search->new({ bcs_schema=>$c->dbic_schema("Bio::Chado::Schema", "sgn_chado", $sp_person_id), people_schema=>$c->dbic_schema("CXGN::People::Schema", undef, $sp_person_id), diff --git a/lib/SGN/Controller/Folder.pm b/lib/SGN/Controller/Folder.pm index 2c7101b8f4..17fae75bb6 100644 --- a/lib/SGN/Controller/Folder.pm +++ b/lib/SGN/Controller/Folder.pm @@ -80,6 +80,7 @@ sub folder_page :Path("/folder") Args(1) { $c->stash->{folder_for_genotyping_trials} = $folder->folder_for_genotyping_trials(); $c->stash->{folder_for_genotyping_projects} = $folder->folder_for_genotyping_projects(); $c->stash->{folder_for_tracking_activities} = $folder->folder_for_tracking_activities(); + $c->stash->{folder_for_transformations} = $folder->folder_for_transformations(); $c->stash->{folder_description} = $folder_project->description(); $c->stash->{has_child_folders} = $has_child_folders; if (!$folder->breeding_program) { diff --git a/mason/breeders_toolbox/folder/folder.mas b/mason/breeders_toolbox/folder/folder.mas index 3e449a7f9d..0745b1b9f6 100644 --- a/mason/breeders_toolbox/folder/folder.mas +++ b/mason/breeders_toolbox/folder/folder.mas @@ -31,6 +31,7 @@ $folder_for_crosses $folder_for_genotyping_trials $folder_for_genotyping_projects $folder_for_tracking_activities +$folder_for_transformations $has_child_folders => undef @@ -40,10 +41,10 @@ $has_child_folders => undef <& /page/page_title.mas, title=>"Folder detail for ".$folder_name &> -<& /breeders_toolbox/folder/folder_set.mas, folder_id=>$folder_id, folder_name=>$folder_name, breeding_program_id=>$breeding_program->project_id(), breeding_program_name=>$breeding_program->name(), folder_for_trials => $folder_for_trials, folder_for_crosses => $folder_for_crosses, folder_for_genotyping_trials => $folder_for_genotyping_trials, folder_for_genotyping_projects => $folder_for_genotyping_projects , folder_for_tracking_activities => $folder_for_tracking_activities &> +<& /breeders_toolbox/folder/folder_set.mas, folder_id=>$folder_id, folder_name=>$folder_name, breeding_program_id=>$breeding_program->project_id(), breeding_program_name=>$breeding_program->name(), folder_for_trials => $folder_for_trials, folder_for_crosses => $folder_for_crosses, folder_for_genotyping_trials => $folder_for_genotyping_trials, folder_for_genotyping_projects => $folder_for_genotyping_projects , folder_for_tracking_activities => $folder_for_tracking_activities, folder_for_transformations => $folder_for_transformations &> <& /breeders_toolbox/folder/folder_move.mas, breeding_program_id=>$breeding_program->project_id(), breeding_program_name=>$breeding_program->name() &> <& /breeders_toolbox/folder/edit_folder_name.mas, trial_id=>$folder_id, trial_name=>$folder_name, trial_type=>"Folder" &> -<& /breeders_toolbox/folder/folder_category_set.mas, folder_id=>$folder_id, folder_name=>$folder_name, folder_for_trials=>$folder_for_trials, folder_for_crosses=>$folder_for_crosses, folder_for_genotyping_trials=>$folder_for_genotyping_trials, folder_for_genotyping_projects=>$folder_for_genotyping_projects , folder_for_tracking_activities=>$folder_for_tracking_activities&> +<& /breeders_toolbox/folder/folder_category_set.mas, folder_id=>$folder_id, folder_name=>$folder_name, folder_for_trials=>$folder_for_trials, folder_for_crosses=>$folder_for_crosses, folder_for_genotyping_trials=>$folder_for_genotyping_trials, folder_for_genotyping_projects=>$folder_for_genotyping_projects , folder_for_tracking_activities=>$folder_for_tracking_activities, folder_for_transformations=>$folder_for_transformations&>
@@ -247,6 +248,14 @@ $has_child_folders => undef

% } else {

+% } + + +
Folder For Transformation Projects
+% if($folder_for_transformations){ +

+% } else { +

% } diff --git a/mason/breeders_toolbox/folder/folder_new.mas b/mason/breeders_toolbox/folder/folder_new.mas index 898c4ad69c..e9d915780b 100644 --- a/mason/breeders_toolbox/folder/folder_new.mas +++ b/mason/breeders_toolbox/folder/folder_new.mas @@ -14,11 +14,13 @@ $breeding_program_name => undef % my $folder_for_genotyping_trials; % my $folder_for_genotyping_projects; % my $folder_for_tracking_activities; +% my $folder_for_transformations; % if ($project_type eq 'field_trial') { $folder_for_trials = 1; $dialog_type = 'trials' } % if ($project_type eq 'genotyping_plate') { $folder_for_genotyping_trials = 1; $dialog_type = 'genotyping plates' } % if ($project_type eq 'crossing_experiment') { $folder_for_crosses = 1; $dialog_type = 'crossing experiments' } % if ($project_type eq 'genotyping_project') { $folder_for_genotyping_projects = 1; $dialog_type = 'genotyping projects' } % if ($project_type eq 'activity_record') { $folder_for_tracking_activities = 1; $dialog_type = 'tracking activities' } +% if ($project_type eq 'transformation_project') { $folder_for_transformations = 1; $dialog_type = 'transformations' }