Merge pull request #18939 from colemanw/serializeFix
[civicrm-core.git] / ang / crmStatusPage / StatusPageServices.js
index 5ece188e9d9d03afe78c041c3162be5cb6f32ae6..e895d8979caa77e01267cf254dc9d710abd343a8 100644 (file)
@@ -1,64 +1,31 @@
 (function(angular, $, _) {
 
-/**
- * get status messages
- * build snooze options object reconciled with preferences
- *
- */
-  angular.module('statuspage').service('statuspageStatusModel', function(crmApi, statuspageGetStatuses, statuspageGetPreferences){
-    return function() {
-      var statusModel = {
-        hushed: false,
-        getStatuses: statuspageGetStatuses,
-        getPreferences: statuspageGetPreferences,
-      };
-      statusModel.statuses = statusModel
-        .getStatuses(statusModel.hushed)
-          .then(function(result){
-            result.preferences = statuspageGetPreferences();
-            return result;
-          });
-    };
-  });
+  angular.module('crmStatusPage')
+    .filter('trusted', function($sce){ return $sce.trustAsHtml; })
 
-  angular.module('statuspage').service('statuspageGetStatuses', function(crmApi, statuspageSeverityList) {
-    return function(apiFilter) {
-      return crmApi('System', 'check', apiFilter)
-        .catch(function(obj){console.log(obj);})
-        .then(function(apiResults){
-          _.each(apiResults.values, function(status){
-            status.severity_id = status.severity;
-            status.severity = statuspageSeverityList[status.severity];
-            status.displayTitle = status.name+' - '+status.title +' - '+status.severity.toUpperCase();
-            status.snoozeOptions = {
-              show: false,
-              severity: status.severity
-            };
-          });
-          return apiResults;
-        });
-      };
-  });
+    // Todo: abstract this into a generic crmUi directive?
+    .directive('statuspagePopupMenu', function($timeout) {
+      return {
+        templateUrl: '~/crmStatusPage/SnoozeOptions.html',
+        transclude: true,
 
-  angular.module('statuspage').service('statuspageGetPreferences', function(crmApi) {
-    return function() {
-      return crmApi('StatusPreference', 'get')
-        .then(function(apiResults) {
-          _.each(apiResults.values, function(pref){
-            pref.snoozeOptions = {
-              severity: pref.ignore_severity
-            };
+        link: function(scope, element, attr) {
+          element.on('click', '.hush-menu-button', function() {
+            $timeout(function() {
+              $('ul', element).show().menu();
+              element.closest('h3').addClass('menuopen');
+              $('body').one('click', function() {
+                $('ul', element).menu('destroy').hide();
+                element.closest('h3').removeClass('menuopen');
+              });
+            });
           });
-          return apiResults;
-        });
-    };
-  });
-
-
-  angular.module('statuspage').filter('trusted', function($sce){ return $sce.trustAsHtml; });
-
-  angular.module('statuspage').service('statuspageSeverityList', function() {
-    return ['debug', 'info', 'notice', 'warning', 'error', 'critical', 'alert', 'emergency'];
-  });
+          // TODO: Is there a more "Angular" way to do this animation?
+          element.on('click', 'button:not(.hush-menu-button), li', function() {
+            $(this).closest('div.crm-status-item').slideUp();
+          });
+        }
+      };
+    });
 
 })(angular, CRM.$, CRM._);