X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=ang%2FcrmStatusPage%2FStatusPageServices.js;h=e895d8979caa77e01267cf254dc9d710abd343a8;hb=728c1cc31d0d323f74f7b980a1e183fb499d4e9e;hp=9926228688577bb624cdb8c829f9745c8fc680fc;hpb=c34b53b4ec59a8e771a7626464940ec89393fe29;p=civicrm-core.git diff --git a/ang/crmStatusPage/StatusPageServices.js b/ang/crmStatusPage/StatusPageServices.js index 9926228688..e895d8979c 100644 --- a/ang/crmStatusPage/StatusPageServices.js +++ b/ang/crmStatusPage/StatusPageServices.js @@ -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._);