aboutsummaryrefslogtreecommitdiff
path: root/solr-8.3.1/server/solr-webapp/webapp/js/angular/controllers/segments.js
diff options
context:
space:
mode:
authorserver <brownptcdash@gmail.com>2019-12-10 18:12:37 -0500
committerserver <brownptcdash@gmail.com>2019-12-10 18:12:37 -0500
commit7478e610d99d1f2fb383ecbfa0b70d72eae27f81 (patch)
tree59486701838067351f00580315c05690f36a39ce /solr-8.3.1/server/solr-webapp/webapp/js/angular/controllers/segments.js
parent096718ee546afbd7568bf8ec9e23dca0556d814d (diff)
solr changes
Diffstat (limited to 'solr-8.3.1/server/solr-webapp/webapp/js/angular/controllers/segments.js')
-rw-r--r--solr-8.3.1/server/solr-webapp/webapp/js/angular/controllers/segments.js99
1 files changed, 99 insertions, 0 deletions
diff --git a/solr-8.3.1/server/solr-webapp/webapp/js/angular/controllers/segments.js b/solr-8.3.1/server/solr-webapp/webapp/js/angular/controllers/segments.js
new file mode 100644
index 000000000..e835cc084
--- /dev/null
+++ b/solr-8.3.1/server/solr-webapp/webapp/js/angular/controllers/segments.js
@@ -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;
+ }
+};