Index: ossp-pkg/quos/quos.cgi RCS File: /v/ossp/cvs/ossp-pkg/quos/quos.cgi,v rcsdiff -q -kk '-r1.6' '-r1.7' -u '/v/ossp/cvs/ossp-pkg/quos/quos.cgi,v' 2>/dev/null --- quos.cgi 2004/10/28 12:00:26 1.6 +++ quos.cgi 2004/10/28 14:35:02 1.7 @@ -1,4 +1,4 @@ -#!/usr/opkg/bin/perl +#!/usr/opkg/bin/perl -w ## ## OSSP quos - Query On Steroids ## Copyright (c) 2004 Ralf S. Engelschall @@ -26,6 +26,7 @@ ## require 5.008; +use strict; use CGI; use String::Divert; use IO::File; @@ -125,157 +126,271 @@ # create objects my $cgi = new CGI; my $html = new String::Divert; -my $nr_lops = 4; -my $nr_rows = 7; $html->overload(1); -#&printparams($cgi); + +## +## Read Config File +## + +my $cfg = { + -cols => 4, + -rows => 7, +}; +# FIXME + +## +## Generate Canvas +## + +# generate Javascript utility functions +$html .= "\n"; # generate outer canvas -$html .= "
\n"; -$html->fold("quos"); -$html .= "
\n"; +$html .= "\n"; +$html .= " "; $html->fold("quos"); +$html .= "
\n"; $html >> "quos"; # generate browse part -$html .= "

"; -$html .= ""; -$html .= "Browse\n"; -$html->fold("browse"); -$html .= "\n"; -$html .= "\n"; +$html .= "\n"; +$html .= " \n"; +$html .= " Browse
\n"; +$html .= " "; $html->fold("browse"); +$html .= " \n"; +$html .= "\n"; # generate query part -$html .= "

"; -$html .= ""; -$html .= "Query\n
"; -$html->fold("query"); -$html .= "
\n"; -$html .= "\n"; +$html .= "\n"; +$html .= " \n"; +$html .= " Query
\n"; +$html .= " "; $html->fold("query"); +$html .= " \n"; +$html .= "\n"; # generate view part -$html .= "

"; -$html .= ""; -$html .= "View\n"; -$html->fold("view"); -$html .= "\n"; -$html .= "\n"; +$html .= "\n"; +$html .= " \n"; +$html .= " View
\n"; +$html .= " "; $html->fold("view"); +$html .= " \n"; +$html .= "\n"; # generate result part -$html .= "

"; -$html .= ""; -$html .= "Result\n"; -$html->fold("result"); -$html .= "\n"; -$html .= "\n"; +$html .= "\n"; +$html .= " \n"; +$html .= " Result
\n"; +$html .= " "; $html->fold("result"); +$html .= " \n"; +$html .= "\n"; + +## +## Generate Browser Part +## + +$html >> "browse"; +$html .= "FIXME"; +$html << 1; + +## +## Generate Query Part +## -# sample $html >> "query"; -$html .= "parametrize your query
"; -$html .= $cgi->start_html("query on steroids"); -$html .= $cgi->start_form; -$html .= ""; -$html .= '
'; -for ($i = 0; $i < $cgi->param('nr_rows'); $i++) { - $html .= ""; - for ($j = $cgi->param('nr_lops') -1; $j >= 0; $j--) { - $html .= ""; - } - $html .= "'; - $html .= ''; - $html .= ''; - $html .= '
'; - $html .= ''; -} -$html .= "
"; - $html .= $cgi->popup_menu(-name=>"logop$j-$i", - -values=>[' ','(',')','!','&','|'], - -default=>' '); - $html .= ""; - $html .= $cgi->popup_menu(-name=>"f_name-$i", - -values=>['name','description','foo'], - -default=>'name'); - $html .= ''; - $html .= $cgi->popup_menu(-name=>"f_operator-$i", - -values=>['=','begins with','ends with'], - -default=>'='); - $html .= ''; - $html .= $cgi->textfield(-name=>"f_value-$i"); - $html .= '
"; -$html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; -$html .= '
'; - $html .= $cgi->popup_menu(-name=>"nr_lops", - -values=>[1..9], - -default=>'3'); - $html .= ''; - $html .= $cgi->popup_menu(-name=>'nr_rows', - -values=>[1..9], - -default=>'4'); - $html .= ''; - $html .= $cgi->submit('act_matrix_upd','update'); - $html .= ''; - $html .= $cgi->submit('act_matrix_clear','clear'); - $html .= ''; - $html .= $cgi->submit('act_matrix_submit','submit'); - $html .= '
'; - -$html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; -$html .= '
'; - $html .= 'name of query'; - $html .= ''; - $html .= $cgi->submit('act_matrix_clear','load'); - $html .= ''; - $html .= $cgi->submit('act_matrix_submit','delete'); - $html .= '
'; - $html .= $cgi->textfield(-name=>'name_persquery'); - $html .= ''; - $html .= $cgi->submit('act_matrix_clear','save'); - $html .= ''; - $html .= 'hyperlink'; - $html .= '
'; -$html .= ''; +my $nr_cols = ($cgi->param('nr_cols') || $cfg->{-cols}); +my $nr_rows = ($cgi->param('nr_rows') || $cfg->{-rows}); + +# render outer form canvas +$html .= $cgi->start_form; +$html .= "\n"; +$html .= " \n"; +$html .= " \n"; +$html .= " \n"; +$html .= " \n"; +$html .= " \n"; +$html .= " \n"; +$html .= " \n"; +$html .= " \n"; +$html .= " \n"; +$html .= "
\n"; +$html .= " "; $html->fold("query-form-expr"); +$html .= "
\n"; +$html .= " "; $html->fold("query-form-button"); +$html .= "
\n"; +$html .= " "; $html->fold("query-form-define"); +$html .= "
\n"; $html .= $cgi->end_form; -sub printparams { - my($cgi) = @_; - my(@values,$key); - - foreach $key ($cgi->param) { - $html .= "$key -> "; - @values = $cgi->param($key); - $html .= join(", ",@values)."
\n"; +# render expression part +$html >> "query-form-expr"; +$html .= "\n"; +for (my $i = 0; $i < $nr_cols; $i++) { + $html .= "\n"; + for (my $j = $nr_cols - 1; $j >= 0; $j--) { + $html .= " \n"; } + $html .= " \n"; + $html .= " \n"; + $html .= " \n"; + $html .= "\n"; } +$html .= "
\n"; + my $id = sprintf("lo%02d%02d", $j, $i); + $html .= " " . $cgi->popup_menu( + -id => $id, + -name => $id, + -values => [' ', '(', ')', '!', '&', '|'], + -default => ' ', + -class => 'default', + -onChange => "return colorize(this.form.$id, ' ');", + -onBlur => "return colorize(this.form.$id, ' ');", + ) . "\n"; + $html .= " \n"; + my $id = sprintf("fn%02d", $i); + $html .= " " . $cgi->popup_menu( + -id => $id, + -name => $id, + -values => ['', 'name', 'description', 'foo'], # FIXME + -default => '', # FIXME + -class => 'default', + -onChange => "return colorize(this.form.$id, '');", + -onBlur => "return colorize(this.form.$id, '');", + ) . "\n"; + $html .= " \n"; + $id = sprintf("fo%02d", $i); + $html .= " " . $cgi->popup_menu( + -id => $id, + -name => $id, + -values => ['', '==', '!=', '<', '<=', '>', '>=', '=~', '!~'], + -default => '', + -class => 'default', + -onChange => "return colorize(this.form.$id, '');", + -onBlur => "return colorize(this.form.$id, '');", + ). "\n"; + $html .= " \n"; + $id = sprintf("fv%02d", $i); + $html .= " " . $cgi->textfield( + -id => $id, + -name => $id, + -default => '', + -class => 'default', + -onChange => "return colorize(this.form.$id, '');", + -onBlur => "return colorize(this.form.$id, '');", + -onMouseOut => "return colorize(this.form.$id, '');", + ); + $html .= "
\n"; +$html << 1; + +# render button part +$html >> "query-form-button"; +$html .= "\n"; +$html .= " \n"; +$html .= " \n"; +$html .= " \n"; +$html .= " \n"; +$html .= " \n"; +$html .= " \n"; +$html .= " \n"; +$html .= "
"; +$html .= " " . $cgi->popup_menu( + -name => $nr_cols, + -values => [ 0..9 ], + -default => $nr_cols, +) . "\n"; +$html .= " \n"; +$html .= " " . $cgi->popup_menu( + -name => $nr_rows, + -values => [1..9], + -default => $nr_rows, +) . "\n"; +$html .= " \n"; +$html .= " " . $cgi->submit('act_matrix_upd', 'update') . "\n"; +$html .= " \n"; +$html .= " " . $cgi->submit('act_matrix_clear', 'clear') . "\n"; +$html .= " \n"; +$html .= " " . $cgi->submit('act_matrix_submit', 'submit') . "\n"; +$html .= "
\n"; +$html << 1; + +# render define part +$html >> "query-form-define"; +$html .= "\n"; +$html .= " \n"; +$html .= " \n"; +$html .= " \n"; +$html .= " \n"; +$html .= " \n"; +$html .= " \n"; +$html .= " \n"; +$html .= " \n"; +$html .= " \n"; +$html .= " \n"; +$html .= "
\n"; +$html .= " " . $cgi->popup_menu( + -id => "namexx", + -name => "namexx", + -values => ['HTML: by-group', 'HTML: by-xxx', 'TXT: by-group'], # FIXME + -default => 'HTML: by-group', # FIXME + -class => 'default', +) . "\n"; +$html .= " \n"; +$html .= " " . $cgi->submit('act_matrix_clear', 'load') . "\n"; +$html .= " \n"; +$html .= " " . $cgi->submit('act_matrix_submit', 'delete') . "\n"; +$html .= "
\n"; +$html .= " " . $cgi->textfield( + -name =>'name_persquery' +) . "\n"; +$html .= " \n"; +$html .= " " . $cgi->submit('act_matrix_clear', 'save') . "\n"; +$html .= " \n"; +$html .= " " . $cgi->submit('act_matrix_hyperlink', 'hyperlink') . "\n"; +$html .= "
\n"; +$html << 1; + +$html << 1; + +## +## Generate View Part +## -# my($cgi) = @=; - +$html >> "view"; +$html .= "FIXME"; +$html << 1; +## +## Generate Result Part +## +$html >> "result"; +$html .= "FIXME
"; +foreach my $key ($cgi->param) { + $html .= "$key -> "; + my @values = $cgi->param($key); + $html .= join(", ", @values) . "
\n"; +} $html << 1; +## +## Generate HTTP Reponse +## + # read HTML skeleton my $io = new IO::File "); $io->close(); + +# undivert HTML output and wrap with skeleton $html->undivert(0); $skel =~ s|\%BODY\%|$html|s; $html = $skel; @@ -288,6 +403,9 @@ $http .= $html; print STDOUT $http; +# die gracefully ;-) +exit(0); + __END__ =pod Index: ossp-pkg/quos/quos.css RCS File: /v/ossp/cvs/ossp-pkg/quos/quos.css,v rcsdiff -q -kk '-r1.2' '-r1.3' -u '/v/ossp/cvs/ossp-pkg/quos/quos.css,v' 2>/dev/null --- quos.css 2004/10/25 15:42:43 1.2 +++ quos.css 2004/10/28 14:35:02 1.3 @@ -24,30 +24,81 @@ ** quos.css: Cascading Style-Sheet (CSS) */ -DIV.quos { - background: #f0f0f0; -} +/* +** Style Canvas +*/ -.quos SPAN.browse { - background: #cccccc; +TABLE.quos { + width: 100%; + background: #f0f0f0; + font-family: sans-serif, helvetica, arial; } -.quos SPAN.browse SPAN.title { - font-weight: bold; - font-size: 200%; - color: #ffffff; -} -.quos SPAN.query { - background: #cc3333; + +.quos TD.browse { + width: 100%; + background: #d0d0d0; +} +.quos TD.browse SPAN.title { + font-weight: bold; + font-size: 200%; + color: #000000; +} +.quos TD.query { + width: 100%; + background: #d0d0d0; +} +.quos TD.query SPAN.title { + font-weight: bold; + font-size: 200%; + color: #000000; +} +.quos TD.view { + width: 100%; + background: #d0d0d0; +} +.quos TD.view SPAN.title { + font-weight: bold; + font-size: 200%; + color: #000000; +} +.quos TD.result { + width: 100%; + background: #d0d0d0; +} +.quos TD.result SPAN.title { + font-weight: bold; + font-size: 200%; + color: #000000; } -.quos SPAN.query SPAN.title { - font-weight: bold; - font-size: 400%; - color: #cccc33; + +/* +** Style Query Part +*/ + +.quos .query .expr INPUT { + background: inherit; + border-top: 1px solid #c0c0c0; + border-left: 1px solid #c0c0c0; + border-right: 1px solid #999999; + border-bottom: 1px solid #999999; +} +.quos .query .expr INPUT.default { + background: inherit; +} +.quos .query .expr INPUT.changed { + background: #ffffff; +} +.quos .query .expr SELECT { + background: inherit; + border-top: 1px solid #c0c0c0; + border-left: 1px solid #c0c0c0; + border-right: 1px solid #999999; + border-bottom: 1px solid #999999; } -.quos SPAN.view { - background: #33cc33; +.quos .query .expr SELECT.default { + background: inherit; } -.quos SPAN.result { - background: #3333cc; +.quos .query .expr SELECT.changed { + background: #ffffff; } Index: ossp-pkg/quos/quos.html RCS File: /v/ossp/cvs/ossp-pkg/quos/quos.html,v rcsdiff -q -kk '-r1.1' '-r1.2' -u '/v/ossp/cvs/ossp-pkg/quos/quos.html,v' 2>/dev/null --- quos.html 2004/10/25 14:35:11 1.1 +++ quos.html 2004/10/28 14:35:02 1.2 @@ -1,10 +1,19 @@ + -

Quos Sample

-

+

OSSP quos

%BODY%