diff options
Diffstat (limited to 'solr-8.3.1/server/solr-webapp/webapp/js/angular/controllers/index.js')
-rw-r--r-- | solr-8.3.1/server/solr-webapp/webapp/js/angular/controllers/index.js | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/solr-8.3.1/server/solr-webapp/webapp/js/angular/controllers/index.js b/solr-8.3.1/server/solr-webapp/webapp/js/angular/controllers/index.js new file mode 100644 index 000000000..f7ce5a8d2 --- /dev/null +++ b/solr-8.3.1/server/solr-webapp/webapp/js/angular/controllers/index.js @@ -0,0 +1,97 @@ +/* +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. +*/ + +solrAdminApp.controller('IndexController', function($scope, System, Cores, Constants) { + $scope.resetMenu("index", Constants.IS_ROOT_PAGE); + $scope.reload = function() { + System.get(function(data) { + $scope.system = data; + + // load average + var load_average = ( data.system.uptime || '' ).match( /load averages?: (\d+[.,]\d\d),? (\d+[.,]\d\d),? (\d+[.,]\d\d)/ ); + if (load_average) { + for (var i=0;i<2;i++) { + load_average[i]=load_average[i].replace(",","."); // for European users + } + $scope.load_average = load_average.slice(1); + } + + // physical memory + var memoryMax = parse_memory_value(data.system.totalPhysicalMemorySize); + $scope.memoryTotal = parse_memory_value(data.system.totalPhysicalMemorySize - data.system.freePhysicalMemorySize); + $scope.memoryPercentage = ($scope.memoryTotal / memoryMax * 100).toFixed(1)+ "%"; + $scope.memoryMax = pretty_print_bytes(memoryMax); + $scope.memoryTotalDisplay = pretty_print_bytes($scope.memoryTotal); + + // swap space + var swapMax = parse_memory_value(data.system.totalSwapSpaceSize); + $scope.swapTotal = parse_memory_value(data.system.totalSwapSpaceSize - data.system.freeSwapSpaceSize); + $scope.swapPercentage = ($scope.swapTotal / swapMax * 100).toFixed(1)+ "%"; + $scope.swapMax = pretty_print_bytes(swapMax); + $scope.swapTotalDisplay = pretty_print_bytes($scope.swapTotal); + + // file handles + $scope.fileDescriptorPercentage = (data.system.openFileDescriptorCount / data.system.maxFileDescriptorCount *100).toFixed(1) + "%"; + + // java memory + var javaMemoryMax = parse_memory_value(data.jvm.memory.raw.max || data.jvm.memory.max); + $scope.javaMemoryTotal = parse_memory_value(data.jvm.memory.raw.total || data.jvm.memory.total); + $scope.javaMemoryUsed = parse_memory_value(data.jvm.memory.raw.used || data.jvm.memory.used); + $scope.javaMemoryTotalPercentage = ($scope.javaMemoryTotal / javaMemoryMax *100).toFixed(1) + "%"; + $scope.javaMemoryUsedPercentage = ($scope.javaMemoryUsed / $scope.javaMemoryTotal *100).toFixed(1) + "%"; + $scope.javaMemoryPercentage = ($scope.javaMemoryUsed / javaMemoryMax * 100).toFixed(1) + "%"; + $scope.javaMemoryTotalDisplay = pretty_print_bytes($scope.javaMemoryTotal); + $scope.javaMemoryUsedDisplay = pretty_print_bytes($scope.javaMemoryUsed); // @todo These should really be an AngularJS Filter: {{ javaMemoryUsed | bytes }} + $scope.javaMemoryMax = pretty_print_bytes(javaMemoryMax); + + // no info bar: + $scope.noInfo = !( + data.system.totalPhysicalMemorySize && data.system.freePhysicalMemorySize && + data.system.totalSwapSpaceSize && data.system.freeSwapSpaceSize && + data.system.openFileDescriptorCount && data.system.maxFileDescriptorCount); + + // command line args: + $scope.commandLineArgs = data.jvm.jmx.commandLineArgs.sort(); + }); + }; + $scope.reload(); +}); + +var parse_memory_value = function( value ) { + if( value !== Number( value ) ) + { + var units = 'BKMGTPEZY'; + var match = value.match( /^(\d+([,\.]\d+)?) (\w).*$/ ); + var value = parseFloat( match[1] ) * Math.pow( 1024, units.indexOf( match[3].toUpperCase() ) ); + } + + return value; +}; + +var pretty_print_bytes = function(byte_value) { + var unit = null; + + byte_value /= 1024; + byte_value /= 1024; + unit = 'MB'; + + if( 1024 <= byte_value ) { + byte_value /= 1024; + unit = 'GB'; + } + return byte_value.toFixed( 2 ) + ' ' + unit; +}; |