Merge pull request #18939 from colemanw/serializeFix
[civicrm-core.git] / ang / crmStatusPage / StatusPageServices.js
index 1858a831b36d358cd2a9d7dc280aa39e65185922..e895d8979caa77e01267cf254dc9d710abd343a8 100644 (file)
@@ -1,47 +1,31 @@
 (function(angular, $, _) {
 
- /**
-  * get status messages
-  * build snooze options object reconciled with preferences
-  *
-  */
-  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.snoozeOptions = {
-              show: false,
-              severity: status.severity
-            };
-          });
-          return apiResults;
-        });
-      };
-  });
-
-  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
-            };
-          });
-          return apiResults;
-        });
-    };
-  });
+  angular.module('crmStatusPage')
+    .filter('trusted', function($sce){ return $sce.trustAsHtml; })
 
+    // Todo: abstract this into a generic crmUi directive?
+    .directive('statuspagePopupMenu', function($timeout) {
+      return {
+        templateUrl: '~/crmStatusPage/SnoozeOptions.html',
+        transclude: true,
 
-  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'];
-  });
+        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');
+              });
+            });
+          });
+          // 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._);