crmMailingAB - report.html - Loop over mailings
authorTim Otten <totten@civicrm.org>
Thu, 19 Feb 2015 04:08:53 +0000 (20:08 -0800)
committerTim Otten <totten@civicrm.org>
Thu, 19 Feb 2015 23:04:07 +0000 (15:04 -0800)
js/angular-crmMailingAB.js
partials/crmMailingAB/report.html

index 89d49bdfe2c08487ed08e4efeb69a08fc3035f4b..115c46d4d09c48a5a30fa4208198044b2ff95e5b 100644 (file)
   angular.module('crmMailingAB').controller('CrmMailingABReportCtrl', function ($scope, crmApi, crmMailingStats) {
     var ts = $scope.ts = CRM.ts(null);
 
+    var activeMailingStatus = null, activeMailings = null;
+    $scope.getActiveMailings = function() {
+      if ($scope.abtest.ab.status != activeMailingStatus) {
+        activeMailingStatus = $scope.abtest.ab.status;
+        activeMailings = [
+          {name: 'a', title: ts('Mailing A'), mailing: $scope.abtest.mailings.a},
+          {name: 'b', title: ts('Mailing B'), mailing: $scope.abtest.mailings.b}
+        ];
+        if ($scope.abtest.ab.status == 'Final') {
+          activeMailings.push({name: 'c', title: ts('Final'), mailing: $scope.abtest.mailings.c});
+        }
+      }
+      return activeMailings;
+    };
+
     crmMailingStats.getStats({
       a: $scope.abtest.ab.mailing_id_a,
       b: $scope.abtest.ab.mailing_id_b,
index d76ca773716650efe357c505fbb0b55a33167243..7083ae82bfd5356f317af21dd7f0307f9f9e7acb 100644 (file)
@@ -3,48 +3,34 @@
     <thead>
     <tr>
       <th>{{ts('Details')}}</th>
-      <th class="crm-mailing-ab-col">{{ts('Mailing A')}}</th>
-      <th class="crm-mailing-ab-col">{{ts('Mailing B')}}</th>
-      <th class="crm-mailing-ab-col" ng-show="abtest.ab.status == 'Final'">{{ts('Final')}}</th>
+      <th ng-repeat="am in getActiveMailings()" class="crm-mailing-ab-col">{{am.title}}</th>
     </tr>
     </thead>
     <tbody>
     <tr ng-show="abtest.mailings.a.body_html || abtest.mailings.b.body_html">
       <td>{{ts('HTML')}}</td>
-      <td><a ng-click="previewMailing('a','html')" ng-show="abtest.mailings.a.body_html">{{ts('View')}}</a></td>
-      <td><a ng-click="previewMailing('b','html')" ng-show="abtest.mailings.b.body_html">{{ts('View')}}</a></td>
-      <td><a ng-click="previewMailing('c','html')" ng-show="abtest.mailings.c.body_html && abtest.ab.status == 'Final'">{{ts('View')}}</a></td>
+      <td ng-repeat="am in getActiveMailings()">
+        <a class="crm-hover-button" ng-click="previewMailing(am.name,'html')" ng-show="am.mailing.body_html">{{ts('View')}}</a>
+      </td>
     </tr>
     <tr ng-show="abtest.mailings.a.body_text || abtest.mailings.b.body_text">
       <td>{{ts('Text')}}</td>
-      <td><a ng-click="previewMailing('a','text')" ng-show="abtest.mailings.a.body_text">{{ts('View')}}</a></td>
-      <td><a ng-click="previewMailing('b','text')" ng-show="abtest.mailings.b.body_text">{{ts('View')}}</a></td>
-      <td><a ng-click="previewMailing('c','text')" ng-show="abtest.mailings.c.body_text && abtest.ab.status == 'Final'">{{ts('View')}}</a></td>
+      <td ng-repeat="am in getActiveMailings()">
+        <a class="crm-hover-button" ng-click="previewMailing(am.name,'text')" ng-show="am.mailing.body_text">{{ts('View')}}</a>
+      </td>
     </tr>
     <tr ng-repeat="statType in statTypes">
       <td>{{statType.title}}</td>
-      <td>
-        <a class="crm-hover-button" ng-href="{{statUrl(abtest.mailings.a, statType, 'events')}}" title="{{statType.title}}">{{stats.a[statType.name] || ts('n/a')}}</a>
-        <a class="crm-hover-button" ng-href="{{statUrl(abtest.mailings.a, statType, 'search')}}" title="{{ts('Search for contacts')}}" crm-icon="search"></a>
-      </td>
-      <td>
-        <a class="crm-hover-button" ng-href="{{statUrl(abtest.mailings.b, statType, 'events')}}" title="{{statType.title}}">{{stats.b[statType.name] || ts('n/a')}}</a>
-        <a class="crm-hover-button" ng-href="{{statUrl(abtest.mailings.b, statType, 'search')}}" title="{{ts('Search for contacts')}}" crm-icon="search"></a>
-      </td>
-      <td ng-show="abtest.ab.status == 'Final'">
-        <a class="crm-hover-button" ng-href="{{statUrl(abtest.mailings.c, statType, 'events')}}" title="{{statType.title}}">{{stats.a[statType.name] || ts('n/a')}}</a>
-        <a class="crm-hover-button" ng-href="{{statUrl(abtest.mailings.c, statType, 'search')}}" title="{{ts('Search for contacts')}}" crm-icon="search"></a>
+      <td ng-repeat="am in getActiveMailings()">
+        <a class="crm-hover-button" ng-href="{{statUrl(am.mailing, statType, 'events')}}" title="{{statType.title}}">{{stats[am.name][statType.name] || ts('n/a')}}</a>
+        <a class="crm-hover-button" ng-href="{{statUrl(am.mailing, statType, 'search')}}" title="{{ts('Search for contacts')}}" crm-icon="search"></a>
       </td>
     </tr>
     <tr ng-show="abtest.ab.status == 'Testing'">
       <td></td>
-      <td>
-        <button ng-click="selectWinner('a')">{{ts('Select as Winner')}}</button>
-      </td>
-      <td>
-        <button ng-click="selectWinner('b')">{{ts('Select as Winner')}}</button>
+      <td ng-repeat="am in getActiveMailings()">
+        <button ng-click="selectWinner(am.name)">{{ts('Select as Winner')}}</button>
       </td>
-      <!-- Final column is n/a -->
     </tr>
     </tbody>
   </table>