forked from Archives/Athou_commafeed
initial metrics page setup
This commit is contained in:
@@ -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();
|
||||
}]);
|
||||
|
||||
@@ -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 = $('<span>').html(html);
|
||||
var elements = container.find('*').addBack();
|
||||
var textNodes = elements.not('iframe').contents().not(elements);
|
||||
textNodes.each(function() {
|
||||
var replaced = this.nodeValue.replace(expr, '<span class="highlight-search">$&</span>');
|
||||
$('<span>').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'
|
||||
};
|
||||
});
|
||||
@@ -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 = $('<span>').html(html);
|
||||
var elements = container.find('*').addBack();
|
||||
var textNodes = elements.not('iframe').contents().not(elements);
|
||||
textNodes.each(function() {
|
||||
var replaced = this.nodeValue.replace(expr, '<span class="highlight-search">$&</span>');
|
||||
$('<span>').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;
|
||||
};
|
||||
});
|
||||
@@ -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('/');
|
||||
|
||||
@@ -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 : {
|
||||
|
||||
20
src/main/webapp/templates/_metrics.meter.html
Normal file
20
src/main/webapp/templates/_metrics.meter.html
Normal file
@@ -0,0 +1,20 @@
|
||||
<div>
|
||||
<span>{{label}}</span>
|
||||
<dl class="dl-horizontal">
|
||||
<dt>Mean</dt>
|
||||
<dd>{{metric.meanRate | number:2}}</dd>
|
||||
|
||||
<dt>1 min</dt>
|
||||
<dd>{{metric.oneMinuteRate | number:2}}</dd>
|
||||
|
||||
<dt>5 min</dt>
|
||||
<dd>{{metric.fiveMinuteRate | number:2}}</dd>
|
||||
|
||||
<dt>15 min</dt>
|
||||
<dd>{{metric.fifteenMinuteRate | number:2}}</dd>
|
||||
|
||||
<dt>Total</dt>
|
||||
<dd>{{metric.count}}</dd>
|
||||
|
||||
</dl>
|
||||
</div>
|
||||
7
src/main/webapp/templates/admin.metrics.html
Normal file
7
src/main/webapp/templates/admin.metrics.html
Normal file
@@ -0,0 +1,7 @@
|
||||
<div>
|
||||
<metric-meter metric="metrics.meters['com.commafeed.backend.feeds.FeedRefreshTaskGiver.refill']" label="'Refresh queue refill rate (/sec)'" />
|
||||
<metric-meter metric="metrics.meters['com.commafeed.backend.feeds.FeedRefreshTaskGiver.feedRefreshed']" label="'Feed refreshed (/sec)'" />
|
||||
<metric-meter metric="metrics.meters['com.commafeed.backend.feeds.FeedRefreshUpdater.feedUpdated']" label="'Feed updated (/sec)'" />
|
||||
<metric-meter metric="metrics.meters['com.commafeed.backend.feeds.FeedRefreshUpdater.entryCacheHit']" label="'Entry cache hit (/sec)'" />
|
||||
<metric-meter metric="metrics.meters['com.commafeed.backend.feeds.FeedRefreshUpdater.entryCacheMiss']" label="'Entry cache miss (/sec)'" />
|
||||
</div>
|
||||
Reference in New Issue
Block a user