optimize package view with tons of packages, RT#28526
authorIvan Kohler <ivan@freeside.biz>
Fri, 25 Apr 2014 23:14:47 +0000 (16:14 -0700)
committerIvan Kohler <ivan@freeside.biz>
Fri, 25 Apr 2014 23:14:47 +0000 (16:14 -0700)
httemplate/elements/coord-links.html
httemplate/view/cust_main/packages/location.html
httemplate/view/cust_main/packages/package.html
httemplate/view/cust_main/packages/section.html

index 4c263c6..c885ade 100644 (file)
 
 <%init>
 
-my ($latitude, $longitude, $name, $agentnum) = @_;
+my %opt = ();
+my ($latitude, $longitude, $name, $agentnum);
+if ( ref($_[0]) ) {
+  %opt = %{ $_[0] };
+  $latitude  = $opt{latitude};
+  $longitude = $opt{longitude};
+  $name      = $opt{name};
+  $agentnum  = $opt{agentnum};
+} else {
+  ($latitude, $longitude, $name, $agentnum) = @_;
+}
 
 my $query = 'name='. uri_escape_utf8($name).
             ';lat='. $latitude.
@@ -35,12 +45,10 @@ $m->interp->apply_escapes($js_name, 'js_string');
 $js_name =~ s/^'//;
 $js_name =~ s/'$//;
 
-my @origin;
-my $origin;
 #for directions link
-if ( $agentnum =~ /^\d+$/ ) {
-  @origin = FS::Conf->new->config('company_address', $agentnum);
-  $origin = join (/,/,@origin);
-  $origin = uri_escape($origin);
-}
+my @origin = $opt{company_address}
+               ? @{ $opt{company_address} }
+               : FS::Conf->new->config('company_address', $agentnum);
+my $origin = uri_escape(join(',', @origin));
+
 </%init>
index db67d45..871bfcb 100644 (file)
@@ -3,7 +3,7 @@
 % {
 % # don't show the location
 % } else {
-%   if ( !$conf->exists('cust_pkg-group_by_location') ) {
+%   if ( !$opt{'cust_pkg-group_by_location'} ) {
 %     if ( $default ) {
         <DIV STYLE="font-style: italic; font-size: small">
 %     }
@@ -12,6 +12,7 @@
                                'double_space'    => ' &nbsp; ',
                                'escape_function' => \&encode_entities,
                                'countrydefault'  => $countrydefault,
+                               'cust_main'       => $opt{'cust_main'},
                              )
       %>
 
           <BR>
           <FONT SIZE=-1>
           <% $loc->latitude %>, <% $loc->longitude %>
-          <& /elements/coord-links.html,
-               $loc->latitude,
-               $loc->longitude,
-               $opt{'cust_main'}->name_short. ': '. $opt{'part_pkg'}->pkg,
-               $opt{'cust_main'}->agentnum,
+          <& /elements/coord-links.html, {
+               'latitude'        => $loc->latitude,
+               'longitude'       => $loc->longitude,
+               'name'            => $opt{'cust_main'}->name_short.
+                                      ': '. $opt{'part_pkg'}->pkg,
+               'company_address' => $opt{'company_address'},
+             }
           &>
           </FONT>
 %     }
@@ -32,7 +35,7 @@
          <FONT SIZE=-1>
          <% $loc->censustract %> (<% $loc->censusyear %> census)
          </FONT>
-%     } elsif ( $conf->exists('cust_main-require_censustract') ) {
+%     } elsif ( $opt{'cust_main-require_censustract'} ) {
           <BR>
           <FONT SIZE=-1 COLOR="#ee3300">
           <% emt('Census tract unknown') %>
@@ -64,7 +67,6 @@
 %   # preceding package.
 <%init>
 
-my $conf = new FS::Conf;
 my %opt = @_;
 
 my $cust_pkg       = $opt{'cust_pkg'};
index 06eb50d..ab7bad2 100644 (file)
@@ -10,7 +10,7 @@
         %>
         <A NAME="cust_pkg<% $cust_pkg->pkgnum %>"
            ID  ="cust_pkg<% $cust_pkg->pkgnum %>"
-        ><% $curuser->option('show_pkgnum') ? $cust_pkg->pkgnum.': ' : '' %><B><% $part_pkg->pkg |h %></B></A>
+        ><% $opt{show_pkgnum} ? $cust_pkg->pkgnum.': ' : '' %><B><% $part_pkg->pkg |h %></B></A>
 %       my $custom_comment = $part_pkg->custom_comment('cust_pkg'=>$cust_pkg);
         <% $custom_comment ? ' - ' : '' %>
         <% $custom_comment |h %>
               <% $br ? '<BR>' : '' %>
 %           } 
 
-%           if ( $cust_pkg->num_cust_event
-%                && (    $curuser->access_right('Billing event reports')
+%           if (    (    $curuser->access_right('Billing event reports')
 %                     || $curuser->access_right('View customer billing events')
 %                   )
+%                && $cust_pkg->num_cust_event
 %              ) {
               (&nbsp;<%pkg_event_link($cust_pkg)%>&nbsp;)
 %           }
index 730bb2c..7c82978 100755 (executable)
@@ -98,6 +98,7 @@ my $countrydefault = scalar($conf->config('countrydefault')) || 'US';
 my %conf_opt = (
   #for package.html
   'invoice-unitprice'         => $conf->exists('invoice-unitprice'),
+  'show_pkgnum'               => $curuser->option('show_pkgnum'),
 
   #for services.html and status.html
   'cust_pkg-display_times'    => ($conf->exists('cust_pkg-display_times')
@@ -113,6 +114,10 @@ my %conf_opt = (
   'countrydefault'            => $countrydefault,
   'statedefault'              => ( scalar($conf->config('statedefault'))
                                   || ($countrydefault eq 'US' ? 'CA' : '') ),
+  'cust_pkg-group_by_location'=> $conf->exists('cust_pkg-group_by_location'),
+  'cust_main-require_censustract'=> $conf->exists('cust_main-require_censustract'),
+  'company_address'           => [ $conf->config('company_address', $opt{cust_main}->agentnum ) ],
+  
   #for services.html
   'svc_external-skip_manual'  => $conf->exists('svc_external-skip_manual'),
   'legacy_link'               => $conf->exists('legacy_link'),