App-Widget

 view release on metacpan or  search on metacpan

lib/App/Widget/RepositoryEditor.pm  view on Meta::CPAN

                         bevel => 2,
                     )->html();

    $save_button   = $context->widget("$name-save_button",
                         class => "App::Widget::ImageButton",
                         image_script => 'app-button',
                         label => "Save",
                         height => 17,
                         width => 50,
                         bevel => 2,
                     )->html();

    $delete_button = $context->widget("$name-delete_button",
                         class => "App::Widget::ImageButton",
                         image_script => 'app-button',
                         label => "Delete",
                         height => 17,
                         width => 50,
                         bevel => 2,
                     )->html();

    $saveas_button = $context->widget("$name-saveas_button",
                         class => "App::Widget::ImageButton",
                         image_script => 'app-button',
                         label => "Save As",
                         height => 17,
                         width => 50,
                         bevel => 2,
                     )->html();

    $view_button   = $context->widget("$name-view_button",
                         class => "App::Widget::ImageButton",
                         image_script => 'app-button',
                         label => "View",
                         height => 17,
                         width => 50,
                         bevel => 2,
                     )->html();

    $edit_button   = $context->widget("$name-edit_button",
                         class => "App::Widget::ImageButton",
                         image_script => 'app-button',
                         label => 'Edit',
                         height => 17,
                         width => 50,
                         bevel => 2,
                     )->html();

    $select_button = $context->widget("$name-select_button",
                         class => "App::Widget::ImageButton",
                         image_script => 'app-button',
                         label => "Select Table",
                         height => 17,
                         width => 100,
                         bevel => 2,
                     )->html();

    $columns       = $self->column_selection_html();
    $params        = $self->param_selection_html();

    my ($fontbegin, $fontend);
    $fontbegin = "<font face=\"verdana,geneva,arial,sans-serif\" size=-1>";
    $fontend = "</font>";

    $html = <<EOF;
<table border=0 cellspacing=0 cellpadding=3 width=100%>
<tr>
  <td nowrap width="2%">${fontbegin}Select View: ${fontend}</td>
  <td nowrap>${fontbegin}$view $open_button $save_button $delete_button
    : $saveas_button $saveas_view
  ${fontend}</td>
</tr>
<tr>
  <td nowrap width="2%">${fontbegin}Select Table: ${fontend}</td>
  <td nowrap>${fontbegin}$new_table $select_button${fontend}</td>
</tr>
<tr>
  <td colspan=2><hr size=1></td>
</tr>
<tr>
  <td nowrap width="2%">${fontbegin}Table:${fontend}</td>
  <td nowrap>${fontbegin}<b>$table_label</b>${fontend}</td>
</tr>
<tr>
  <td nowrap width="2%">${fontbegin}Query: ${fontend}</td>
  <td nowrap>${fontbegin}$view_button $edit_button Max Rows: $maxrows${fontend}</td>
</tr>
<tr>
  <td nowrap valign="top" width="2%">${fontbegin}Columns: ${fontend}</td>
  <td nowrap valign="top">${fontbegin}$columns${fontend}</td>
</tr>
<tr>
  <td nowrap valign="top" width="2%">${fontbegin}Criteria: ${fontend}</td>
  <td nowrap valign="top">${fontbegin}$params${fontend}</td>
</tr>
</table>
EOF

    $html;
}

sub column_selection_html {
    my $self = shift;

    my ($context, $name, $repname, $rep, $table);
    $context = $self->{context};
    $name    = $self->{name};
    $repname = $self->get("repository");
    $rep     = $context->repository($repname);
    $table   = $self->get("table");
    return     "ERROR: No table specified" if (!$table);

    my ($columns, $column_labels, $column_menu, $column_menu_html);
    $columns       = $rep->get_column_names($table);
    $column_labels = $rep->get_column_labels($table);
    $column_menu = $context->widget("$name-columns",
        override => 1,
        class => "App::Widget::Select",
        values => $columns,
        labels => $column_labels,
        size => 8,
        multiple => 1,
    );
    $column_menu_html = $column_menu->html();

    my (@order_menu, @dir_menu, @summ_checkbox, @xtab_checkbox, $i);

    for ($i = 0; $i < 5; $i++) {

        $order_menu[$i]    = $context->widget("$name\{ordercols\}[$i]",
                                 class => "App::Widget::Select",
                                 values => $columns,
                                 labels => $column_labels,
                                 size => 1,
                                 nullable => 1,
                             )->html();

        $dir_menu[$i]      = $context->widget("$name\{directions\}[$i]",
                                 class => "App::Widget::Select",
                                 values => [ '', 'asc', 'desc', ],
                                 labels => { '' => '', 'asc' => 'Up', 'desc' => 'Down', },
                             )->html();

        $summ_checkbox[$i] = $context->widget("$name\{summarize\}[$i]",
                                 class => "App::Widget::Checkbox",
                             )->html();

        $xtab_checkbox[$i] = $context->widget("$name\{crosstabulate}[$i]",
                                 class => "App::Widget::Checkbox",
                             )->html();
    }

    my ($fontbegin, $fontend);
    $fontbegin = "<font face=\"verdana,geneva,arial,sans-serif\" size=-1>";
    $fontend = "</font>";

    my $html = <<EOF;
<table border=0 cellspacing=0 cellpadding=3>
<tr>
  <td valign=top width=2%>$column_menu_html</td>
  <td valign=top nowrap>
    <table border=0 cellpadding=0 cellspacing=1>
      <tr>
        <td>${fontbegin}Sort Order:${fontend}</td>
        <!-- <td align=center>${fontbegin}&nbsp;Summarize&nbsp;${fontend}</td> -->
        <!-- <td align=center nowrap>${fontbegin}&nbsp;Cross-tabulate&nbsp;${fontend}</td> -->
      </tr>
      <tr>
        <td nowrap>$order_menu[0] $dir_menu[0]</td>
        <!-- <td align=center>$summ_checkbox[0]</td> -->
        <!-- <td align=center>$xtab_checkbox[0]</td> -->
      </tr>
      <tr>
        <td nowrap>$order_menu[1] $dir_menu[1]</td>
        <!-- <td align=center>$summ_checkbox[1]</td> -->
        <!-- <td align=center>$xtab_checkbox[1]</td> -->
      </tr>
      <tr>
        <td nowrap>$order_menu[2] $dir_menu[2]</td>
        <!-- <td align=center>$summ_checkbox[2]</td> -->
        <!-- <td align=center>$xtab_checkbox[2]</td> -->
      </tr>
      <tr>
        <td nowrap>$order_menu[3] $dir_menu[3]</td>
        <!-- <td align=center>$summ_checkbox[3]</td> -->
        <!-- <td align=center>$xtab_checkbox[3]</td> -->
      </tr>
      <tr>
        <td nowrap>$order_menu[4] $dir_menu[4]</td>
        <!-- <td align=center>$summ_checkbox[4]</td> -->
        <!-- <td align=center>$xtab_checkbox[4]</td> -->
      </tr>
    </table>
  </td>
</tr>
</table>
EOF
    $html;
}

sub param_selection_html {
    my $self = shift;

    my ($context, $name, $repname, $rep, $table);
    $context = $self->{context};
    $name    = $self->{name};
    $repname = $self->get("repository");
    $rep     = $context->repository($repname);
    $table   = $self->get("table");
    return     "ERROR: No table specified" if (!$table);

    my ($columns, $column_labels);
    $columns       = $rep->get_column_names($table);
    $column_labels = $rep->get_column_labels($table);

    my ($conjunction_menu);
    my (@conjunction, %conjunction);
    @conjunction = ("AND", "OR", "NOT_AND", "NOT_OR");
    %conjunction = (
        "AND"     => "All of the following conditions",
        "OR"      => "Any of the following conditions",
        "NOT_AND" => "Not all of the following conditions",
        "NOT_OR"  => "Not any of the following conditions",
    );

    $conjunction_menu = $context->widget("$name-conjunction",
        class => "App::Widget::Select",
        values => \@conjunction,
        labels => \%conjunction,
    )->html();

    my (@param_menu, @param_min, @param_max, @param_contains, $i);

    for ($i = 0; $i < 5; $i++) {

        $param_menu[$i]    = $context->widget("$name\{param}[$i]",
                                 class => "App::Widget::Select",
                                 values => $columns,
                                 labels => $column_labels,
                                 nullable => 1,
                             )->html();

        $param_min[$i]     = $context->widget("$name\{param_min}[$i]",
                                 class => "App::Widget::TextField",
                                 size => 8,
                                 maxlength => 99,
                             )->html();

        $param_max[$i]     = $context->widget("$name\{param_max}[$i]",
                                 class => "App::Widget::TextField",
                                 size => 8,
                                 maxlength => 99,
                             )->html();

        $param_contains[$i]= $context->widget("$name\{param_contains}[$i]",
                                 class => "App::Widget::TextField",
                                 size => 8,
                                 maxlength => 99,
                             )->html();
    }

    my ($fontbegin, $fontend);
    $fontbegin = "<font face=\"verdana,geneva,arial,sans-serif\" size=-1>";
    $fontend = "</font>";

    my $html = <<EOF;
<table border=0 cellspacing=0 cellpadding=3>
  <tr>
    <td valign="top" nowrap>${fontbegin}
      $conjunction_menu<br>
      $param_menu[0] Min: $param_min[0] Max: $param_max[0] Contains: $param_contains[0]<br>
      $param_menu[1] Min: $param_min[1] Max: $param_max[1] Contains: $param_contains[1]<br>
      $param_menu[2] Min: $param_min[2] Max: $param_max[2] Contains: $param_contains[2]<br>
      $param_menu[3] Min: $param_min[3] Max: $param_max[3] Contains: $param_contains[3]<br>
      $param_menu[4] Min: $param_min[4] Max: $param_max[4] Contains: $param_contains[4]${fontend}</td>
  </tr>
</table>
EOF

    $html;
}

1;



( run in 0.623 second using v1.01-cache-2.11-cpan-5735350b133 )