CRM-17837 move summary columns to the right hand side when using rollup.
authoreileen <emcnaughton@wikimedia.org>
Fri, 22 Jan 2016 02:04:22 +0000 (15:04 +1300)
committereileen <emcnaughton@wikimedia.org>
Fri, 22 Jan 2016 02:04:22 +0000 (15:04 +1300)
Basically it just looks 'odd' to have calculated summary columns and then have custom fields to the right of them in a report

Change-Id: If46675141028bf362c3b3c2b509d9cd30fb25651

CRM/Report/Form.php

index 08649461018a6f7e4cee038dec81dde95129c32c..cee6653953dd4484df9b35fdb4fadc250d65e038 100644 (file)
@@ -2159,6 +2159,9 @@ WHERE cg.extends IN ('" . implode("','", $this->_customGroupExtends) . "') AND
         }
       }
     }
+    if ($this->_grandFlag) {
+      $this->moveSummaryColumnsToTheRightHandSide();
+    }
 
     $this->assign('grandStat', $this->rollupRow);
     return TRUE;
@@ -2852,6 +2855,17 @@ WHERE cg.extends IN ('" . implode("','", $this->_customGroupExtends) . "') AND
     // use this method to modify $this->_columnHeaders
   }
 
+  /**
+   * Move totals columns to the right edge of the table.
+   *
+   * It seems like a more logical layout to have any totals columns on the far right regardless of
+   * the location of the rest of their table.
+   */
+  public function moveSummaryColumnsToTheRightHandSide() {
+    $statHeaders = (array_intersect_key($this->_columnHeaders, array_flip($this->_statFields)));
+    $this->_columnHeaders = array_merge(array_diff_key($this->_columnHeaders, $statHeaders), $this->_columnHeaders, $statHeaders);
+  }
+
   /**
    * Assign rows to the template.
    *