GBrowse

 view release on metacpan or  search on metacpan

lib/Bio/Graphics/Browser2/Action.pm  view on Meta::CPAN

    $settings->{favorites}={} if $clear;
    warn "show_favorites($settings->{show_favorites})" if DEBUG;
    $self->session->flush;
    return (204,'text/plain',undef);
}

sub ACTION_show_active_tracks {
    my $self = shift;
    my $q     = shift;
    my $active_only = $q->param('active') eq 'true';
    my $settings    = $self->state;
    $settings->{active_only}=$active_only;
    warn "show_active_tracks($settings->{active_only})" if DEBUG;
    $self->session->flush;
    return (204,'text/plain',undef);
}


# *** The Snapshot actions
sub ACTION_delete_snapshot {
    my $self = shift;
    my $q     = shift;
    my $name = $q->param('name');
    my $snapshots = $self->session->snapshots;
    delete $snapshots->{$name};
    $self->session->flush;
    return (204,'text/plain',undef);
}

sub ACTION_save_snapshot {
    my $self = shift;
    my $q     = shift;
    my $name  = $q->param('name');
    my $snapshots = $self->session->snapshots;
    my $settings  = $self->settings;
    my $imageURL  = $self->render->image_link($settings);

    my $UTCtime = strftime("%Y-%m-%d %H:%M:%S\n", gmtime(time));

    # Creating a deep copy of the snapshot
    my $snapshot = dclone $settings;
    $snapshot->{image_url}            = $imageURL;
    $snapshots->{$name}{data}         = $snapshot;
    $snapshots->{$name}{session_time} = $UTCtime;

    # Each snapshot has a unique snapshot_id (currently just an md5 sum of the unix time it is created
    my $snapshot_id = md5_hex(time);
    $snapshots->{$name}{snapshot_id}  = $snapshot_id;

    $self->session->flush;
    return (204,'text/plain',undef);
}

sub ACTION_set_snapshot {
     my $self = shift; 
     my $q = shift; 
     my $name = $q->param('name');
     my $settings  = $self->settings;
     my $snapshots = $self->session->snapshots;

     warn "[$$] get snapshot $name: $snapshots->{$name}" if DEBUG;

     %{$settings} = %{dclone $snapshots->{$name}{data}};

     my @selected_tracks  = $self->render->visible_tracks;
     my $segment_info     = $self->render->segment_info_object();
     $self->session->flush;

     return(200,'application/json',{tracks=>\@selected_tracks,segment_info=>$segment_info});
 }

sub ACTION_send_snapshot {
     my $self = shift; 
     my $q = shift; 
     my $name = $q->param('name');
     my $url  = $q->param('url');
     my $snapshots = $self->session->snapshots;

     my $settings = $self->state;
     my $id       = $self->session->uploadsid;

     my $globals = $self->render->globals;
     my $dir     = $globals->user_dir;

     my $filename = $snapshots->{$name}{snapshot_id};
     my $source   = $self->session->source;
         
     mkdir File::Spec->catfile($dir,$source,$id);
	
     #Storing the snapshot as a string and saving it to a textfile. Typical directory /var/lib/gbrowse2/userdata/{source}/{uploadid}: 
     my $snapshot = Dumper($snapshots->{$name}{data});
     open SNAPSHOT, ">$dir/$source/$id/$filename.txt" or die "Can't open $dir: $!";
     print SNAPSHOT "$snapshot";
     close SNAPSHOT;

     # The snapshot information is embedded into the URL
     $url = "$url?id=$id&snapname=$name&snapcode=$filename&source=$source";
     $url =~ s/ /%20/g;
     $self->session->flush;

     return(200,'text/plain',$url); 
 }

sub ACTION_mail_snapshot {
     my $self = shift; 
     my $q = shift; 

     my $name     = $q->param('name');
     my $to_email = $q->param('email');
     my $url      = $q->param('url');
     $url         =~ s/\?.+$//;

     my $settings = $self->state;
     my $snapshots = $self->session->snapshots;
     my $id = $self->session->uploadsid;
     my $source   = $self->session->source;

     my $globals = $self->render->globals;
     my $dir     = $globals->user_dir;

     my $filename = $snapshots->{$name}{snapshot_id};



( run in 2.578 seconds using v1.01-cache-2.11-cpan-5e09290becf )