From 7fa8bef3de7fa8080e1ff92c0d15324dccaf9cf8 Mon Sep 17 00:00:00 2001 From: Athou Date: Fri, 23 Aug 2013 12:46:35 +0200 Subject: [PATCH] initial metrics page setup --- src/main/webapp/js/controllers.js | 5 +++- src/main/webapp/js/directives.js | 30 +++++-------------- src/main/webapp/js/filters.js | 25 ++++++++++++++++ src/main/webapp/js/main.js | 7 ++++- src/main/webapp/js/services.js | 6 ++++ src/main/webapp/templates/_metrics.meter.html | 20 +++++++++++++ src/main/webapp/templates/admin.metrics.html | 7 +++++ 7 files changed, 76 insertions(+), 24 deletions(-) create mode 100644 src/main/webapp/templates/_metrics.meter.html create mode 100644 src/main/webapp/templates/admin.metrics.html diff --git a/src/main/webapp/js/controllers.js b/src/main/webapp/js/controllers.js index f4428448..40077f7c 100644 --- a/src/main/webapp/js/controllers.js +++ b/src/main/webapp/js/controllers.js @@ -1416,10 +1416,13 @@ module.controller('HelpController', ['$scope', 'CategoryService', 'AnalyticsServ }]); module.controller('FooterController', ['$scope', function($scope) { - var baseUrl = window.location.href.substring(0, window.location.href.lastIndexOf('#')); var hostname = window.location.hostname; $scope.subToMeUrl = baseUrl + 'rest/feed/subscribe?url={feed}'; $scope.subToMeName = hostname.indexOf('www.commafeed.com') !== -1 ? 'CommaFeed' : 'CommaFeed (' + hostname + ')'; }]); + +module.controller('MetricsCtrl', ['$scope', 'AdminMetricsService', function($scope, AdminMetricsService) { + $scope.metrics = AdminMetricsService.get(); +}]); diff --git a/src/main/webapp/js/directives.js b/src/main/webapp/js/directives.js index 688fff43..5bdc76e2 100644 --- a/src/main/webapp/js/directives.js +++ b/src/main/webapp/js/directives.js @@ -409,27 +409,13 @@ module.directive('droppable', ['CategoryService', 'FeedService', function(Catego }; }]); -module.filter('highlight', function() { - return function(html, keywords) { - if (keywords) { - var handleKeyword = function(token, html) { - var expr = new RegExp(token, 'gi'); - var container = $('').html(html); - var elements = container.find('*').addBack(); - var textNodes = elements.not('iframe').contents().not(elements); - textNodes.each(function() { - var replaced = this.nodeValue.replace(expr, '$&'); - $('').html(replaced).insertBefore(this); - $(this).remove(); - }); - return container.html(); - }; - - var tokens = keywords.split(' '); - for ( var i = 0; i < tokens.length; i++) { - html = handleKeyword(tokens[i], html); - } - } - return html; +module.directive('metricMeter', function() { + return { + scope : { + metric : '=', + label : '=' + }, + restrict : 'E', + templateUrl : 'templates/_metrics.meter.html' }; }); \ No newline at end of file diff --git a/src/main/webapp/js/filters.js b/src/main/webapp/js/filters.js index 9b1455cc..c2a79ef4 100644 --- a/src/main/webapp/js/filters.js +++ b/src/main/webapp/js/filters.js @@ -20,4 +20,29 @@ module.filter('entryDate', function() { module.filter('escape', function() { return encodeURIComponent; +}); + +module.filter('highlight', function() { + return function(html, keywords) { + if (keywords) { + var handleKeyword = function(token, html) { + var expr = new RegExp(token, 'gi'); + var container = $('').html(html); + var elements = container.find('*').addBack(); + var textNodes = elements.not('iframe').contents().not(elements); + textNodes.each(function() { + var replaced = this.nodeValue.replace(expr, '$&'); + $('').html(replaced).insertBefore(this); + $(this).remove(); + }); + return container.html(); + }; + + var tokens = keywords.split(' '); + for ( var i = 0; i < tokens.length; i++) { + html = handleKeyword(tokens[i], html); + } + } + return html; + }; }); \ No newline at end of file diff --git a/src/main/webapp/js/main.js b/src/main/webapp/js/main.js index b76bb4a9..4fac279a 100644 --- a/src/main/webapp/js/main.js +++ b/src/main/webapp/js/main.js @@ -100,7 +100,12 @@ app.config(['$routeProvider', '$stateProvider', '$urlRouterProvider', '$httpProv templateUrl : 'templates/admin.settings.html', controller : 'ManageSettingsCtrl' }); - + $stateProvider.state('admin.metrics', { + url : '/metrics', + templateUrl : 'templates/admin.metrics.html', + controller : 'MetricsCtrl' + }); + $urlRouterProvider.when('/', '/feeds/view/category/all'); $urlRouterProvider.when('/admin', '/admin/settings'); $urlRouterProvider.otherwise('/'); diff --git a/src/main/webapp/js/services.js b/src/main/webapp/js/services.js index 354e68f6..d9e6fc84 100644 --- a/src/main/webapp/js/services.js +++ b/src/main/webapp/js/services.js @@ -291,6 +291,12 @@ module.factory('AdminSettingsService', ['$resource', function($resource) { return res; }]); +module.factory('AdminMetricsService', ['$resource', function($resource) { + var res = $resource('rest/admin/metrics/'); + return res; +}]); + + module.factory('AdminCleanupService', ['$resource', function($resource) { var actions = { findDuplicateFeeds : { diff --git a/src/main/webapp/templates/_metrics.meter.html b/src/main/webapp/templates/_metrics.meter.html new file mode 100644 index 00000000..a9068268 --- /dev/null +++ b/src/main/webapp/templates/_metrics.meter.html @@ -0,0 +1,20 @@ +
+ {{label}} +
+
Mean
+
{{metric.meanRate | number:2}}
+ +
1 min
+
{{metric.oneMinuteRate | number:2}}
+ +
5 min
+
{{metric.fiveMinuteRate | number:2}}
+ +
15 min
+
{{metric.fifteenMinuteRate | number:2}}
+ +
Total
+
{{metric.count}}
+ +
+
\ No newline at end of file diff --git a/src/main/webapp/templates/admin.metrics.html b/src/main/webapp/templates/admin.metrics.html new file mode 100644 index 00000000..d1342c82 --- /dev/null +++ b/src/main/webapp/templates/admin.metrics.html @@ -0,0 +1,7 @@ +
+ + + + + +
\ No newline at end of file