summaryrefslogtreecommitdiff
path: root/httemplate/misc
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2016-03-26 21:45:03 -0700
committerMark Wells <mark@freeside.biz>2016-03-26 21:47:56 -0700
commitcf9f2e6f72b98d3032aab97ad8a916c41878aa57 (patch)
treeaf206b66894ebe2bb71fc704fdc407c1623d7a36 /httemplate/misc
parent4426278dd2f0c1f037cb67eb23d43be2a68b6224 (diff)
improve address standardization UI, #33849
Diffstat (limited to 'httemplate/misc')
-rw-r--r--httemplate/misc/confirm-address_standardize.html90
-rw-r--r--httemplate/misc/xmlhttp-address_standardize.html8
2 files changed, 86 insertions, 12 deletions
diff --git a/httemplate/misc/confirm-address_standardize.html b/httemplate/misc/confirm-address_standardize.html
index 9d1a5c135..8bd43ca54 100644
--- a/httemplate/misc/confirm-address_standardize.html
+++ b/httemplate/misc/confirm-address_standardize.html
@@ -7,6 +7,9 @@ th { line-height: 150%;
vertical-align: middle;
text-align: center;
}
+button {
+ width: 215px;
+}
</STYLE>
<CENTER><BR><B>
% if ( $is_error ) {
@@ -23,9 +26,13 @@ Confirm address standardization
% my $name = $pre eq 'bill_' ? 'billing' : 'service';
% my $rows = 5;
% if ( $new{$pre.'error'} ) {
+% # Standardization returned an error, so the user can either "continue
+% # without replacing" (replace = "") or "abort".
<TR>
<TD ROWSPAN=<% $rows %> CLASS="td_radio">
+% if ( $show_radio ) {
<INPUT TYPE="radio" NAME="<% $pre %>replace" VALUE="" CHECKED="Y">
+% } # else confirm_manual_address will be called
</TD>
<TH>Entered <%$name%> address
</TH>
@@ -51,15 +58,19 @@ Confirm address standardization
% $rows++ if !$new{$pre.'addr_clean'};
<TR>
<TD ROWSPAN=<% $rows %> CLASS="td_radio">
+% if ( $show_radio ) {
<INPUT TYPE="radio" NAME="<% $pre %>replace" VALUE="">
+% }
</TD>
<TH>Entered <%$name%> address</TH>
<TH>Standardized <%$name%> address</TH>
<TD ROWSPAN=<% $rows %> CLASS="td_radio">
+% if ( $show_radio ) {
<INPUT TYPE="radio" NAME="<% $pre %>replace" VALUE="Y" CHECKED="Y">
+% }
</TD>
</TR>
-% if ( !$new{$pre.'addr_clean'} ) {
+% if ( !$new{$pre.'addr_clean'} ) { # we incremented $rows to fit this in
<TR>
<TD></TD>
<TH STYLE="font-size:smaller;color:#ff0000">(unverified)</TH>
@@ -88,18 +99,24 @@ Confirm address standardization
% } # if error
% } # for $pre
-%# only do this part if address standardization provided a censustract
-% my $pre = $old{same} ? 'bill_' : 'ship_';
+% # the prefix for the censustract
+% my $pre = $old{billship} ?
+% ( $old{same} ? 'bill_' : 'ship_' ) :
+% '';
% my $censustract = $new{$pre.'censustract'};
% if ( $censustract ) {
<TR>
<TD ROWSPAN=2 CLASS="td_radio">
+% if ( $show_radio ) {
<INPUT TYPE="radio" NAME="census_replace" VALUE="" <% $census_error ? 'CHECKED="Y"' : '' %>>
+% }
</TD>
<TH>Entered census tract</TH>
<TH>Calculated census tract</TH>
<TD ROWSPAN=2 CLASS="td_radio">
+% if ( $show_radio ) {
<INPUT TYPE="radio" NAME="census_replace" VALUE="Y" <% $census_error ? '' : 'CHECKED="Y"' %>>
+% }
</TD>
</TR>
<TR>
@@ -115,17 +132,40 @@ Confirm address standardization
% } #if censustract
<TR>
+% if ( $show_radio ) {
+% # One button: "use selected address(es)".
+ <TD ALIGN="center" COLSPAN=4>
+ <BUTTON TYPE="button" onclick="replace_address();">
+ <IMG SRC="<%$p%>images/<% $is_error ? 'error.png' : 'tick.png' %>"
+ ALT="">
+ Use selected <%$addresses%>
+ </BUTTON>
+ </TD>
+% } else {
+% # Two buttons: "use entered address", and "use selected address"
+% # and empty columns before and after
<TD> </TD>
<TD ALIGN="center">
- <BUTTON TYPE="button" STYLE="width:205px" onclick="replace_address();">
- <IMG SRC="<%$p%>images/<% $is_error ? 'error.png' : 'tick.png' %>"
- ALT=""> Use selected <%$addresses%>
- </BUTTON></TD>
+ <BUTTON TYPE="button" onclick="confirm_manual_address();">
+ <IMG SRC="<%$p%>images/error.png" ALT=""> Use entered <%$addresses%>
+ </BUTTON>
+ </TD>
+% # disable the button if standardization completely failed
<TD ALIGN="center">
- <BUTTON TYPE="button" STYLE="width:205px" onclick="submit_abort();">
- <IMG SRC="<%$p%>images/cross.png" ALT=""> Cancel submission
- </BUTTON></TD>
+ <BUTTON TYPE="button" onclick="replace_address();" <% $failed ? 'DISABLED' : '' %>>
+ <IMG SRC="<%$p%>images/tick.png" ALT=""> Use standardized <%$addresses%>
+ </BUTTON>
+ </TD>
<TD> </TD>
+% }
+ </TR>
+% # always provide a cancel button
+ <TR>
+ <TD ALIGN="center" COLSPAN=4>
+ <BUTTON TYPE="button" onclick="submit_abort();">
+ <IMG SRC="<%$p%>images/cross.png" ALT=""> Cancel submission
+ </BUTTON>
+ </TD>
</TR>
</TABLE>
</FORM>
@@ -138,15 +178,43 @@ my %old = %{ $q->{old} };
my %new = %{ $q->{new} };
my $addresses = $old{billship} ? 'addresses' : 'address';
+my $show_radio = 0;
+my $failed = 0; # true if standardization returned no addresses
my @prefixes = ('');
+
if ( $old{same} ) {
+
+ # Then there are bill and ship addresses and they're the same. Treat
+ # bill_error as a failure, and let the user accept or reject the whole
+ # standardization.
+
@prefixes = ('bill_');
+ $failed = 1 if $new{'bill_error'};
+
} elsif ( $old{billship} ) {
+
+ # There are separate bill and ship addresses. Treat error in both as a
+ # failure. Otherwise, at least one of them has a choice between entered
+ # and standardized address, so let the user choose.
+
@prefixes = ('bill_', 'ship_');
+ if ( $new{'bill_error'} and $new{'ship_error'} ) {
+ $failed = 1;
+ } else {
+ $show_radio = 1;
+ }
+
+} else {
+
+ # There are no bill/ship addresses (this is used for package locations).
+ # Treat like the first case but without the bill_ prefix.
+ @prefixes = ('');
+ $failed = 1 if $new{'error'};
+
}
-my $census_error = $new{'census_error'};
+my $census_error = $new{'census_error'}; # seems to be unused
my $is_error = $census_error || grep { $new{$_.'error'} } @prefixes;
</%init>
diff --git a/httemplate/misc/xmlhttp-address_standardize.html b/httemplate/misc/xmlhttp-address_standardize.html
index d0255a02a..be58618d0 100644
--- a/httemplate/misc/xmlhttp-address_standardize.html
+++ b/httemplate/misc/xmlhttp-address_standardize.html
@@ -23,6 +23,7 @@ if ( $old{same} ) {
@prefixes = ('bill_', 'ship_');
}
my $all_same = 1;
+my $all_clean = 1;
foreach my $pre ( @prefixes ) {
my $location = {
@@ -48,8 +49,13 @@ foreach my $pre ( @prefixes ) {
$old{$pre.'censustract'} ne $new{$pre.'censustract'} );
$all_same = 0 if $new{$pre.'error'};
+
+ $all_clean = 0 if !$new{$pre.'addr_clean'};
}
-my $return = { old => \%old, new => \%new, all_same => $all_same };
+my $return = { old => \%old,
+ new => \%new,
+ all_same => $all_same,
+ all_clean => $all_clean };
warn "result:\n".encode_json($return) if $DEBUG;
</%init>