mirror of
https://github.com/Athou/commafeed.git
synced 2026-03-21 21:37:29 +00:00
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) {
|
module.controller('FooterController', ['$scope', function($scope) {
|
||||||
|
|
||||||
var baseUrl = window.location.href.substring(0, window.location.href.lastIndexOf('#'));
|
var baseUrl = window.location.href.substring(0, window.location.href.lastIndexOf('#'));
|
||||||
var hostname = window.location.hostname;
|
var hostname = window.location.hostname;
|
||||||
$scope.subToMeUrl = baseUrl + 'rest/feed/subscribe?url={feed}';
|
$scope.subToMeUrl = baseUrl + 'rest/feed/subscribe?url={feed}';
|
||||||
$scope.subToMeName = hostname.indexOf('www.commafeed.com') !== -1 ? 'CommaFeed' : 'CommaFeed (' + hostname + ')';
|
$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() {
|
module.directive('metricMeter', function() {
|
||||||
return function(html, keywords) {
|
return {
|
||||||
if (keywords) {
|
scope : {
|
||||||
var handleKeyword = function(token, html) {
|
metric : '=',
|
||||||
var expr = new RegExp(token, 'gi');
|
label : '='
|
||||||
var container = $('<span>').html(html);
|
},
|
||||||
var elements = container.find('*').addBack();
|
restrict : 'E',
|
||||||
var textNodes = elements.not('iframe').contents().not(elements);
|
templateUrl : 'templates/_metrics.meter.html'
|
||||||
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;
|
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
@@ -21,3 +21,28 @@ module.filter('entryDate', function() {
|
|||||||
module.filter('escape', function() {
|
module.filter('escape', function() {
|
||||||
return encodeURIComponent;
|
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,6 +100,11 @@ app.config(['$routeProvider', '$stateProvider', '$urlRouterProvider', '$httpProv
|
|||||||
templateUrl : 'templates/admin.settings.html',
|
templateUrl : 'templates/admin.settings.html',
|
||||||
controller : 'ManageSettingsCtrl'
|
controller : 'ManageSettingsCtrl'
|
||||||
});
|
});
|
||||||
|
$stateProvider.state('admin.metrics', {
|
||||||
|
url : '/metrics',
|
||||||
|
templateUrl : 'templates/admin.metrics.html',
|
||||||
|
controller : 'MetricsCtrl'
|
||||||
|
});
|
||||||
|
|
||||||
$urlRouterProvider.when('/', '/feeds/view/category/all');
|
$urlRouterProvider.when('/', '/feeds/view/category/all');
|
||||||
$urlRouterProvider.when('/admin', '/admin/settings');
|
$urlRouterProvider.when('/admin', '/admin/settings');
|
||||||
|
|||||||
@@ -291,6 +291,12 @@ module.factory('AdminSettingsService', ['$resource', function($resource) {
|
|||||||
return res;
|
return res;
|
||||||
}]);
|
}]);
|
||||||
|
|
||||||
|
module.factory('AdminMetricsService', ['$resource', function($resource) {
|
||||||
|
var res = $resource('rest/admin/metrics/');
|
||||||
|
return res;
|
||||||
|
}]);
|
||||||
|
|
||||||
|
|
||||||
module.factory('AdminCleanupService', ['$resource', function($resource) {
|
module.factory('AdminCleanupService', ['$resource', function($resource) {
|
||||||
var actions = {
|
var actions = {
|
||||||
findDuplicateFeeds : {
|
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