diff options
author | Stanley Yip <stanley_yip@brown.edu> | 2020-01-08 13:47:29 -0500 |
---|---|---|
committer | Stanley Yip <stanley_yip@brown.edu> | 2020-01-08 13:47:29 -0500 |
commit | abfa42b6f2cf863deee19aac19328a23687464cb (patch) | |
tree | b481f23ffa7bccbde7a31de34f50d765b6b73162 /solr-8.3.1/server/solr-webapp/webapp/js/angular/controllers/segments.js | |
parent | d8fc218f3481728f221ceacc60ac4bc553f8e295 (diff) | |
parent | 19a71cb2788b9c1c8d8ced4af285bf91033ba626 (diff) |
Merge branch 'master' of https://github.com/browngraphicslab/Dash-Web into pen
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.js | 99 |
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; + } +}; |