commit
This commit is contained in:
99
solr/server/solr-webapp/webapp/js/angular/controllers/segments.js
vendored
Normal file
99
solr/server/solr-webapp/webapp/js/angular/controllers/segments.js
vendored
Normal file
@@ -0,0 +1,99 @@
|
||||
/*
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
var MB_FACTOR = 1024*1024;
|
||||
|
||||
solrAdminApp.controller('SegmentsController', function($scope, $routeParams, $interval, Segments, Constants) {
|
||||
$scope.resetMenu("segments", Constants.IS_CORE_PAGE);
|
||||
|
||||
$scope.refresh = function() {
|
||||
|
||||
Segments.get({core: $routeParams.core}, function(data) {
|
||||
var segments = data.segments;
|
||||
|
||||
var segmentSizeInBytesMax = getLargestSegmentSize(segments);
|
||||
$scope.segmentMB = Math.floor(segmentSizeInBytesMax / MB_FACTOR);
|
||||
$scope.xaxis = calculateXAxis(segmentSizeInBytesMax);
|
||||
|
||||
$scope.documentCount = 0;
|
||||
$scope.deletionCount = 0;
|
||||
|
||||
$scope.segments = [];
|
||||
for (var name in segments) {
|
||||
var segment = segments[name];
|
||||
|
||||
var segmentSizeInBytesLog = Math.log(segment.sizeInBytes);
|
||||
var segmentSizeInBytesMaxLog = Math.log(segmentSizeInBytesMax);
|
||||
|
||||
segment.totalSize = Math.floor((segmentSizeInBytesLog / segmentSizeInBytesMaxLog ) * 100);
|
||||
|
||||
segment.deletedDocSize = Math.floor((segment.delCount / segment.size) * segment.totalSize);
|
||||
if (segment.delDocSize <= 0.001) delete segment.deletedDocSize;
|
||||
|
||||
segment.aliveDocSize = segment.totalSize - segment.deletedDocSize;
|
||||
|
||||
$scope.segments.push(segment);
|
||||
|
||||
$scope.documentCount += segment.size;
|
||||
$scope.deletionCount += segment.delCount;
|
||||
}
|
||||
$scope.deletionsPercentage = calculateDeletionsPercentage($scope.documentCount, $scope.deletionCount);
|
||||
});
|
||||
};
|
||||
|
||||
$scope.toggleAutoRefresh = function() {
|
||||
$scope.autorefresh = !$scope.autorefresh;
|
||||
if ($scope.autorefresh) {
|
||||
$scope.interval = $interval($scope.refresh, 1000);
|
||||
var onRouteChangeOff = $scope.$on('$routeChangeStart', function() {
|
||||
$interval.cancel($scope.interval);
|
||||
onRouteChangeOff();
|
||||
});
|
||||
|
||||
} else if ($scope.interval) {
|
||||
$interval.cancel($scope.interval);
|
||||
}
|
||||
};
|
||||
$scope.refresh();
|
||||
});
|
||||
|
||||
var calculateXAxis = function(segmentInBytesMax) {
|
||||
var steps = [];
|
||||
var log = Math.log(segmentInBytesMax);
|
||||
|
||||
for (var j=0, step=log/4; j<3; j++, step+=log/4) {
|
||||
steps.push({pos:j, value:Math.floor((Math.pow(Math.E, step))/MB_FACTOR)})
|
||||
}
|
||||
return steps;
|
||||
};
|
||||
|
||||
var getLargestSegmentSize = function(segments) {
|
||||
var max = 0;
|
||||
for (var name in segments) {
|
||||
max = Math.max(max, segments[name].sizeInBytes);
|
||||
}
|
||||
return max;
|
||||
};
|
||||
|
||||
var calculateDeletionsPercentage = function(docCount, delCount) {
|
||||
if (docCount == 0) {
|
||||
return 0;
|
||||
} else {
|
||||
var percent = delCount / docCount * 100;
|
||||
return Math.round(percent * 100) / 100;
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user