| /* |
| 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 set_healthcheck_status = function( status ) |
| { |
| var hc_button = $( '.healthcheck-status' ) |
| if ( status == 'enable' ) |
| { |
| hc_button.parents( 'dd' ) |
| .removeClass( 'ico-0' ) |
| .addClass( 'ico-1' ); |
| hc_button |
| .addClass( 'enabled' ) |
| .html( 'disable ping' ); |
| } else { |
| hc_button.parents( 'dd' ) |
| .removeClass( 'ico-1') |
| .addClass( 'ico-0' ); |
| hc_button |
| .removeClass( 'enabled' ) |
| .html( 'enable ping' ); |
| } |
| }; |
| |
| // #/:core |
| sammy.get |
| ( |
| new RegExp( app.core_regex_base + '$' ), |
| function( context ) |
| { |
| var core_basepath = this.active_core.attr( 'data-basepath' ); |
| var content_element = $( '#content' ); |
| |
| content_element |
| .removeClass( 'single' ); |
| |
| if( !app.core_menu.data( 'admin-extra-loaded' ) ) |
| { |
| app.core_menu.data( 'admin-extra-loaded', new Date() ); |
| |
| $.get |
| ( |
| core_basepath + '/admin/file/?file=admin-extra.menu-top.html&contentType=text/html;charset=utf-8', |
| function( menu_extra ) |
| { |
| app.core_menu |
| .prepend( menu_extra ); |
| } |
| ); |
| |
| $.get |
| ( |
| core_basepath + '/admin/file/?file=admin-extra.menu-bottom.html&contentType=text/html;charset=utf-8', |
| function( menu_extra ) |
| { |
| app.core_menu |
| .append( menu_extra ); |
| } |
| ); |
| } |
| |
| $.get |
| ( |
| 'tpl/dashboard.html', |
| function( template ) |
| { |
| content_element |
| .html( template ); |
| |
| var dashboard_element = $( '#dashboard' ); |
| |
| $.ajax |
| ( |
| { |
| url : core_basepath + '/admin/luke?wt=json&show=index&numTerms=0', |
| dataType : 'json', |
| context : $( '#statistics', dashboard_element ), |
| beforeSend : function( xhr, settings ) |
| { |
| $( 'h2', this ) |
| .addClass( 'loader' ); |
| |
| $( '.message', this ) |
| .show() |
| .html( 'Loading ...' ); |
| |
| $( '.content', this ) |
| .hide(); |
| }, |
| success : function( response, text_status, xhr ) |
| { |
| $( '.message', this ) |
| .empty() |
| .hide(); |
| |
| $( '.content', this ) |
| .show(); |
| |
| var data = { |
| 'index_num-doc' : response['index']['numDocs'], |
| 'index_heap-usage-bytes' : response['index']['indexHeapUsageBytes'], |
| 'index_max-doc' : response['index']['maxDoc'], |
| 'index_deleted-doc' : response['index']['deletedDocs'], |
| 'index_version' : response['index']['version'], |
| 'index_segmentCount' : response['index']['segmentCount'], |
| 'index_last-modified' : response['index']['lastModified'] |
| }; |
| |
| for( var key in data ) |
| { |
| $( '.' + key, this ) |
| .show(); |
| |
| $( '.value.' + key, this ) |
| .html( data[key] ); |
| } |
| |
| var optimized_element = $( '.value.index_optimized', this ); |
| if( !response['index']['hasDeletions'] ) |
| { |
| optimized_element |
| .addClass( 'ico-1' ); |
| |
| $( 'span', optimized_element ) |
| .html( 'yes' ); |
| } |
| else |
| { |
| optimized_element |
| .addClass( 'ico-0' ); |
| |
| $( 'span', optimized_element ) |
| .html( 'no' ); |
| } |
| |
| var current_element = $( '.value.index_current', this ); |
| if( response['index']['current'] ) |
| { |
| current_element |
| .addClass( 'ico-1' ); |
| |
| $( 'span', current_element ) |
| .html( 'yes' ); |
| } |
| else |
| { |
| current_element |
| .addClass( 'ico-0' ); |
| |
| $( 'span', current_element ) |
| .html( 'no' ); |
| } |
| |
| $( 'a', optimized_element ) |
| .die( 'click' ) |
| .live |
| ( |
| 'click', |
| function( event ) |
| { |
| $.ajax |
| ( |
| { |
| url : core_basepath + '/update?optimize=true&waitFlush=true&wt=json', |
| dataType : 'json', |
| context : $( this ), |
| beforeSend : function( xhr, settings ) |
| { |
| this |
| .addClass( 'loader' ); |
| }, |
| success : function( response, text_status, xhr ) |
| { |
| this.parents( 'dd' ) |
| .removeClass( 'ico-0' ) |
| .addClass( 'ico-1' ); |
| }, |
| error : function( xhr, text_status, error_thrown) |
| { |
| console.warn( 'd0h, optimize broken!' ); |
| }, |
| complete : function( xhr, text_status ) |
| { |
| this |
| .removeClass( 'loader' ); |
| } |
| } |
| ); |
| } |
| ); |
| |
| $( '.timeago', this ) |
| .timeago(); |
| }, |
| error : function( xhr, text_status, error_thrown ) |
| { |
| this |
| .addClass( 'disabled' ); |
| |
| $( '.message', this ) |
| .show() |
| .html( 'Luke is not configured' ); |
| }, |
| complete : function( xhr, text_status ) |
| { |
| $( 'h2', this ) |
| .removeClass( 'loader' ); |
| } |
| } |
| ); |
| |
| $.ajax |
| ( |
| { |
| url : core_basepath + '/replication?command=details&wt=json', |
| dataType : 'json', |
| context : $( '#replication', dashboard_element ), |
| beforeSend : function( xhr, settings ) |
| { |
| $( 'h2', this ) |
| .addClass( 'loader' ); |
| |
| $( '.message', this ) |
| .show() |
| .html( 'Loading' ); |
| |
| $( '.content', this ) |
| .hide(); |
| }, |
| success : function( response, text_status, xhr ) |
| { |
| $( '.message', this ) |
| .empty() |
| .hide(); |
| |
| $( '.content', this ) |
| .show(); |
| |
| $( '.replication', context.active_core ) |
| .show(); |
| |
| var data = response.details; |
| var is_slave = 'undefined' !== typeof( data.slave ); |
| var headline = $( 'h2 span', this ); |
| var details_element = $( '#details', this ); |
| var current_type_element = $( ( is_slave ? '.slave' : '.masterSearch' ), this ); |
| var master_data = is_slave ? data.slave.masterDetails : data; |
| |
| if( is_slave ) |
| { |
| this |
| .addClass( 'slave' ); |
| |
| headline |
| .html( headline.html() + ' (Slave)' ); |
| } |
| else |
| { |
| this |
| .addClass( 'master' ); |
| |
| headline |
| .html( headline.html() + ' (Master)' ); |
| } |
| |
| // the currently searchable commit regardless of type |
| $( '.version div', current_type_element ) |
| .html( data.indexVersion ); |
| $( '.generation div', current_type_element ) |
| .html( data.generation ); |
| $( '.size div', current_type_element ) |
| .html( data.indexSize ); |
| |
| // what's replicable on the master |
| var master_element = $( '.master', details_element ); |
| $( '.version div', master_element ) |
| .html( master_data.master.replicableVersion || '-' ); |
| $( '.generation div', master_element ) |
| .html( master_data.master.replicableGeneration || '-' ); |
| $( '.size div', master_element ) |
| .html( "-" ); |
| |
| if( is_slave ) |
| { |
| var master_element = $( '.masterSearch', details_element ); |
| $( '.version div', master_element ) |
| .html( data.slave.masterDetails.indexVersion ); |
| $( '.generation div', master_element ) |
| .html( data.slave.masterDetails.generation ); |
| $( '.size div', master_element ) |
| .html( data.slave.masterDetails.indexSize ); |
| |
| // warnings if slave version|gen doesn't match what's replicable |
| if( data.indexVersion !== master_data.master.replicableVersion ) |
| { |
| $( '.version', details_element ) |
| .addClass( 'diff' ); |
| } |
| else |
| { |
| $( '.version', details_element ) |
| .removeClass( 'diff' ); |
| } |
| |
| if( data.generation !== master_data.master.replicableGeneration ) |
| { |
| $( '.generation', details_element ) |
| .addClass( 'diff' ); |
| } |
| else |
| { |
| $( '.generation', details_element ) |
| .removeClass( 'diff' ); |
| } |
| } |
| }, |
| error : function( xhr, text_status, error_thrown) |
| { |
| this |
| .addClass( 'disabled' ); |
| |
| $( '.message', this ) |
| .show() |
| .html( 'Replication is not configured' ); |
| }, |
| complete : function( xhr, text_status ) |
| { |
| $( 'h2', this ) |
| .removeClass( 'loader' ); |
| } |
| } |
| ); |
| |
| $.ajax |
| ( |
| { |
| url : core_basepath + '/admin/system?wt=json', |
| dataType : 'json', |
| context : $( '#instance', dashboard_element ), |
| beforeSend : function( xhr, settings ) |
| { |
| $( 'h2', this ) |
| .addClass( 'loader' ); |
| |
| $( '.message', this ) |
| .show() |
| .html( 'Loading' ); |
| |
| $( '.content', this ) |
| .hide(); |
| }, |
| success : function( response, text_status, xhr ) |
| { |
| $( '.message', this ) |
| .empty() |
| .hide(); |
| |
| $( '.content', this ) |
| .show(); |
| |
| $( 'dl', this ) |
| .show(); |
| |
| var data = { |
| 'dir_cwd' : response.core.directory.cwd, |
| 'dir_instance' : response.core.directory.instance, |
| 'dir_data' : response.core.directory.data, |
| 'dir_index' : response.core.directory.index, |
| 'dir_impl' : response.core.directory.dirimpl |
| }; |
| |
| for( var key in data ) |
| { |
| $( '.' + key, this ) |
| .show(); |
| |
| $( '.value.' + key, this ) |
| .html( data[key] ); |
| } |
| }, |
| error : function( xhr, text_status, error_thrown) |
| { |
| this |
| .addClass( 'disabled' ); |
| |
| $( '.message', this ) |
| .show() |
| .html( '/admin/system Handler is not configured' ); |
| }, |
| complete : function( xhr, text_status ) |
| { |
| $( 'h2', this ) |
| .removeClass( 'loader' ); |
| } |
| } |
| ); |
| |
| $.ajax |
| ( |
| { |
| url : core_basepath + '/admin/file/?file=admin-extra.html', |
| dataType : 'html', |
| context : $( '#admin-extra', dashboard_element ), |
| beforeSend : function( xhr, settings ) |
| { |
| $( 'h2', this ) |
| .addClass( 'loader' ); |
| |
| $( '.message', this ) |
| .show() |
| .html( 'Loading' ); |
| |
| $( '.content', this ) |
| .hide(); |
| }, |
| success : function( response, text_status, xhr ) |
| { |
| $( '.message', this ) |
| .hide() |
| .empty(); |
| |
| $( '.content', this ) |
| .show() |
| .html( response ); |
| }, |
| error : function( xhr, text_status, error_thrown) |
| { |
| this |
| .addClass( 'disabled' ); |
| |
| $( '.message', this ) |
| .show() |
| .html( 'We found no "admin-extra.html" file.' ); |
| }, |
| complete : function( xhr, text_status ) |
| { |
| $( 'h2', this ) |
| .removeClass( 'loader' ); |
| } |
| } |
| ); |
| |
| $.ajax |
| ( |
| { |
| url : core_basepath + '/admin/ping?action=status&wt=json', |
| dataType : 'json', |
| context : $( '#healthcheck', dashboard_element ), |
| beforeSend : function( xhr, settings ) |
| { |
| $( 'h2', this ) |
| .addClass( 'loader' ); |
| |
| $( '.message', this ) |
| .show() |
| .html( 'Loading' ); |
| |
| $( '.content', this ) |
| .hide(); |
| }, |
| success : function( response, text_status, xhr ) |
| { |
| $( '.message', this ) |
| .empty() |
| .hide(); |
| |
| $( '.content', this ) |
| .show(); |
| |
| var status_element = $( '.value.status', this ); |
| var toggle_button = $( '.healthcheck-status', this ); |
| var status = response['status']; |
| $( 'span', status_element ).html( status ); |
| |
| var action = ( response['status'] == 'enabled' ) ? 'enable' : 'disable'; |
| set_healthcheck_status(action); |
| |
| if( response['status'] == 'enabled' ) |
| { |
| status_element |
| .addClass( 'ico-1' ); |
| toggle_button |
| .addClass( 'enabled' ); |
| } |
| else |
| { |
| status_element |
| .addClass( 'ico-0' ); |
| } |
| |
| $( '.healthcheck-status', status_element ) |
| .die( 'click' ) |
| .live |
| ( |
| 'click', |
| function( event ) |
| { |
| var action = $(this).hasClass( 'enabled' ) ? 'disable' : 'enable'; |
| $.ajax |
| ( |
| { |
| url : core_basepath + '/admin/ping?action=' + action + '&wt=json', |
| dataType : 'json', |
| context : $( this ), |
| beforeSend : function( xhr, settings ) |
| { |
| this |
| .addClass( 'loader' ); |
| }, |
| success : function( response, text_status, xhr ) |
| { |
| set_healthcheck_status(action); |
| }, |
| error : function( xhr, text_status, error_thrown) |
| { |
| console.warn( 'd0h, enable broken!' ); |
| }, |
| complete : function( xhr, text_status ) |
| { |
| this |
| .removeClass( 'loader' ); |
| } |
| } |
| ); |
| } |
| ); |
| }, |
| error : function( xhr, text_status, error_thrown) |
| { |
| this |
| .addClass( 'disabled' ); |
| |
| $( '.message', this ) |
| .show() |
| .html( 'Ping request handler is not configured with a healthcheck file.' ); |
| }, |
| complete : function( xhr, text_status ) |
| { |
| $( 'h2', this ) |
| .removeClass( 'loader' ); |
| } |
| } |
| ); |
| |
| } |
| ); |
| } |
| ); |