From 38e2919be138f8a77eef7a2fc93d34eff8897f5e Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 16 Aug 2009 02:04:04 +0100 Subject: [PATCH] Generalise route[text]string --- .../{routetextstring => check_routestring} | 0 yarrg/web/lookup | 3 +- yarrg/web/qtextstring | 56 ++++++++++++++ yarrg/web/query_route | 77 ++++--------------- 4 files changed, 73 insertions(+), 63 deletions(-) rename yarrg/web/{routetextstring => check_routestring} (100%) create mode 100644 yarrg/web/qtextstring diff --git a/yarrg/web/routetextstring b/yarrg/web/check_routestring similarity index 100% rename from yarrg/web/routetextstring rename to yarrg/web/check_routestring diff --git a/yarrg/web/lookup b/yarrg/web/lookup index 751a99a..0106684 100755 --- a/yarrg/web/lookup +++ b/yarrg/web/lookup @@ -56,6 +56,7 @@ my @vars; }, { Name => 'Query', Before => 'Query: ', Values => [ [ 'route', 'Trades for route' ], + [ 'commod', 'Prices for commodity' ], [ 'age', 'Data age' ] ] }); @@ -152,7 +153,7 @@ $debug => 0
-<& "query_$a{Query}", %baseqf, %queryqf, quri => $quri, a => \%a &> +<& "query_$a{Query}", %baseqf, %queryqf, quri => $quri, qa => \%a &>

diff --git a/yarrg/web/qtextstring b/yarrg/web/qtextstring new file mode 100644 index 0000000..c0f2482 --- /dev/null +++ b/yarrg/web/qtextstring @@ -0,0 +1,56 @@ +<%args> +$thingstring +$qa => $m->caller_args(1)->{'qa'} + + +Enter route (islands, or archipelagoes, separated by |s or commas; + abbreviations are OK):
+ +<&| script &> +ts_uri= "check_<% $thingstring %>?format=json&type=text/xml" + + "&ocean=<% uri_escape($qa->{Ocean}) %>"; + +ts_timeout=false; +ts_request=false; +ts_done=''; +ts_needed=''; +function ts_Later(){ + window.clearTimeout(ts_timeout); + ts_timeout = window.setTimeout(ts_Needed, 500); +} +function ts_Needed(){ + window.clearTimeout(ts_timeout); + ts_element= document.getElementById('<% $thingstring %>'); + ts_needed= ts_element.value; + ts_Request(); +} +function ts_Request(){ + if (ts_request || ts_needed==ts_done) return; + ts_done= ts_needed; + ts_request= new XMLHttpRequest(); + uri= ts_uri+'&string='+encodeURIComponent(ts_needed); + ts_request.open('GET', uri); + ts_request.onreadystatechange= ts_Ready; + ts_request.send(null); +} +function ts_Ready() { + if (ts_request.readyState != 4) return; + if (ts_request.status == 200) { + response= ts_request.responseText; + eval('results='+response); + toedit= document.getElementById('ts_results'); + toedit.innerHTML= results.show; + } + ts_request= false; + ts_Request(); +} +window.onload= ts_Needed; + + +content %> + id="<% $thingstring %>" name="<% $thingstring %>" + onchange="ts_Needed();" onkeyup="ts_Later();" + value="<% $qa->{$thingstring} |h %>" + > +
+

 

diff --git a/yarrg/web/query_route b/yarrg/web/query_route index 4344e1d..f409e70 100644 --- a/yarrg/web/query_route +++ b/yarrg/web/query_route @@ -1,73 +1,26 @@ <%args> $quri -$a +$qa $routestring => ''; <%perl> -#my $routestring= $queryqf{'routestring'}; -# -# for output: + my @archipelagoes; my @islandids; my %islandid2; -

Specify route

-
- %#---------- textbox, user enters route as string ---------- -% if (!$a->{Dropdowns}) { +% if (!$qa->{Dropdowns}) { -Enter route (islands, or archipelagoes, separated by |s or commas; - abbreviations are OK):
+

Specify route

-<&| script &> -tr_uri= "routetextstring?format=json&type=text/xml" - + "&ocean=<% uri_escape($a->{Ocean}) %>"; - -tr_timeout=false; -tr_request=false; -tr_done=''; -tr_needed=''; -function tr_Later(){ - window.clearTimeout(tr_timeout); - tr_timeout = window.setTimeout(tr_Needed, 500); -} -function tr_Needed(){ - window.clearTimeout(tr_timeout); - tr_element= document.getElementById('routestring'); - tr_needed= tr_element.value; - tr_Request(); -} -function tr_Request(){ - if (tr_request || tr_needed==tr_done) return; - tr_done= tr_needed; - tr_request= new XMLHttpRequest(); - uri= tr_uri+'&string='+encodeURIComponent(tr_needed); - tr_request.open('GET', uri); - tr_request.onreadystatechange= tr_Ready; - tr_request.send(null); -} -function tr_Ready() { - if (tr_request.readyState != 4) return; - if (tr_request.status == 200) { - response= tr_request.responseText; - eval('results='+response); - toedit= document.getElementById('routeresults'); - toedit.innerHTML= results.show; - } - tr_request= false; - tr_Request(); -} -window.onload= tr_Needed; - + -
-
 

+<&| qtextstring, qa => $qa, thingstring => 'routestring' &> + size=80 + % } else { #---------- dropdowns, user selects from menus ---------- @@ -90,7 +43,7 @@ my $optionlistmap= sub { return $out; }; -my $dbh= dbw_connect($a->{Ocean}); +my $dbh= dbw_connect($qa->{Ocean}); $sth= $dbh->prepare("SELECT DISTINCT archipelago FROM islands ORDER BY archipelago;"); @@ -122,7 +75,7 @@ foreach my $arch (keys %islandlistdata) { - + <&| script &> ms_lists= <% to_json_protecttags(\%resetislandlistdata) %>; @@ -141,7 +94,7 @@ function ms_Setarch(dd) { -% for my $dd (0..$a->{Dropdowns}-1) { +% for my $dd (0..$qa->{Dropdowns}-1) { -% for my $dd (0..$a->{Dropdowns}-1) { +% for my $dd (0..$qa->{Dropdowns}-1) { % my $arch= $ARGS{"archipelago$dd"}; % $arch= 'none' if !defined $arch;
@@ -177,11 +130,11 @@ $results_head= sub { }; #---------- result computation - textstring ---------- -if (!$a->{Dropdowns}) { +if (!$qa->{Dropdowns}) { if (length $routestring) { $results_head->(); my $rsr= $m->comp('routetextstring', - ocean => $a->{Ocean}, + ocean => $qa->{Ocean}, string => $routestring, format => 'return' ); @@ -205,7 +158,7 @@ my $argorundef= sub { return $thing; }; -for my $dd (0..$a->{Dropdowns}-1) { +for my $dd (0..$qa->{Dropdowns}-1) { my $arch= $argorundef->($dd,'archipelago'); my $island= $argorundef->($dd,'islandid'); next unless defined $arch or defined $island; -- 2.30.2