#!/usr/bin/perl

our $VERSION = '0.02';

# $Id: geo_display_search,v 1.2.2.2 2007/06/14 19:04:09 kclark Exp $

use warnings;
use strict;

use FindBin::Real qw(Bin);
use HTML::SearchPage;
use HTML::SearchPage::Param;
use Panzea::FormModifier;
use Panzea::FormConfig;

my $config_file = '/usr/local/gramene-25/conf//html-searchpage.conf'; # MKFILE:Q:CONF_FILE

my $config = Panzea::FormConfig->new($config_file);

# Search page object
my $sp = HTML::SearchPage->new(
    page_title     => 'Marker Search for Geographic Display',
    header         => $config->cfg('form_header'),
    css            => $config->cfg('form_css'),
    temp_dir       => $config->cfg('temp_dir'),
    temp_dir_eq    => $config->cfg('temp_dir_eq'),
    instructions   => $config->cfg('instructions_geo_display_search'),
    footer         => $config->cfg('form_footer'),
    base_sql_table => qq[aux_assay_plant_genotype_count aspgc
                                                              ],
    base_sql_fields => [
        'aspgc.marker_name',
        'aspgc.marker_type',
        'aspgc.count_valid',
        qq[IF(aspgc.count_valid > 0, CONCAT(aspgc.marker_name, ':', aspgc.marker_type), '')],
    ],
    base_output_headers => [
        'Marker Name:aspgc.marker_name',
        'Marker Type:aspgc.marker_type',
        'Valid Data Points:aspgc.count_valid',
        'Geographic Display',
    ],
    sort_fields => 2,
    sort_defaults =>
      ['desc', 'aspgc.count_valid', 'asc', 'aspgc.marker_name'],
    method           => $config->cfg('form_method'),
    page_size        => $config->cfg('form_page_size'),
    db_access_params => $config->cfg('db_access_params'),
    debug_level      => $config->cfg('form_debug_level'),
    go_to_results    => $config->cfg('form_go_to_results'),
    show_search_url  => $config->cfg('form_show_search_url'),
    modifier         => Panzea::FormModifier->new(),
);    # Displays error page if fails

# Param fields
my $pf;

$pf = HTML::SearchPage::Param->new(
    -label            => 'Marker Name:',
    -sql_column       => 'aspgc.marker_name',
    -form_name        => 'marker_name',
    -operator_list    => ['=:equals'],
    -operator_display => 0,
    -operator_default => '=',
    -param_type       => 'drop_down',
    -param_list       => [
        qq[DISTINCT:SELECT DISTINCT(marker_name) FROM aux_assay_plant_genotype_count aspgc
           ORDER BY marker_name]
    ],
    -auto_all      => 1,
    -auto_null     => 0,
    -param_default => ['all'],
) or $sp->display_error_page($@);

$sp->param_field('marker_name', $pf);

$pf = HTML::SearchPage::Param->new(
    -label            => 'Marker Type:',
    -sql_column       => 'aspgc.marker_type',
    -form_name        => 'marker_type',
    -operator_list    => ['=:equals'],
    -operator_display => 0,
    -operator_default => '=',
    -param_type       => 'drop_down',
    -param_list       => [
        qq[DISTINCT:SELECT DISTINCT(marker_type) FROM aux_assay_plant_genotype_count aspgc
           ORDER BY marker_type]
    ],
    -auto_all      => 1,
    -auto_null     => 0,
    -param_default => ['all'],
) or $sp->display_error_page($@);

$sp->param_field('marker_type', $pf);

# Modifications
$sp->add_modification(
    -action => 'add_link',
    -type   => 'gmap',
    -column => 3,
);

# Call display method
$sp->display_page;

=head1 NAME

geo_display_search

=head1 DESCRIPTION

Panzea web display script.

Please refer to documentation of HTML::SearchPage and
HTML::SearchPage::Param for information on script structure.

=head1 AUTHOR

Payan Canaran <canaran@cshl.edu>

=head1 BUGS

=head1 VERSION

Version 0.02

=head1 ACKNOWLEDGEMENTS

=head1 COPYRIGHT & LICENSE

Copyright (c) 2005-2007 Cold Spring Harbor Laboratory

This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself. See DISCLAIMER.txt for
disclaimers of warranty.

=cut

