$(document).ready(function(){ var tag = $.getUrlParam('tag'); if(tag == 'data_query'){ initDataQuery(); } }); function redisPostCB(method, args, callback){ var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 }); var req_data = {}; req_data['name'] = 'data_query'; req_data['func'] = method; req_data['script']='nosql_redis'; args['version'] = ''; if (typeof(args) == 'string' && args == ''){ req_data['args'] = JSON.stringify(toArrayObject(args)); } else { req_data['args'] = JSON.stringify(args); } $.post('/plugins/callback', req_data, function(data) { layer.close(loadT); if (!data.status){ layer.msg(data.msg,{icon:0,time:2000,shade: [0.3, '#000']}); return; } if(typeof(callback) == 'function'){ callback(data); } },'json'); } function mgdbPostCB(method, args, callback){ var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 }); var req_data = {}; req_data['name'] = 'data_query'; req_data['func'] = method; req_data['script']='nosql_mongodb'; args['version'] = ''; if (typeof(args) == 'string' && args == ''){ req_data['args'] = JSON.stringify(toArrayObject(args)); } else { req_data['args'] = JSON.stringify(args); } $.post('/plugins/callback', req_data, function(data) { layer.close(loadT); if (!data.status){ layer.msg(data.msg,{icon:0,time:2000,shade: [0.3, '#000']}); return; } if(typeof(callback) == 'function'){ callback(data); } },'json'); } function memPostCB(method, args, callback){ var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 }); var req_data = {}; req_data['name'] = 'data_query'; req_data['func'] = method; req_data['script']='nosql_memcached'; args['version'] = ''; if (typeof(args) == 'string' && args == ''){ req_data['args'] = JSON.stringify(toArrayObject(args)); } else { req_data['args'] = JSON.stringify(args); } $.post('/plugins/callback', req_data, function(data) { layer.close(loadT); if (!data.status){ layer.msg(data.msg,{icon:0,time:2000,shade: [0.3, '#000']}); return; } if(typeof(callback) == 'function'){ callback(data); } },'json'); } function myPostCB(method, args, callback){ var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 }); var req_data = {}; req_data['name'] = 'data_query'; req_data['func'] = method; req_data['script']='sql_mysql'; args['version'] = ''; if (typeof(args) == 'string' && args == ''){ req_data['args'] = JSON.stringify(toArrayObject(args)); } else { req_data['args'] = JSON.stringify(args); } $.post('/plugins/callback', req_data, function(data) { layer.close(loadT); if (!data.status){ layer.msg(data.msg,{icon:0,time:2000,shade: [0.3, '#000']}); return; } if(typeof(callback) == 'function'){ callback(data); } },'json'); } function myPostCBN(method, args, callback){ var req_data = {}; req_data['name'] = 'data_query'; req_data['func'] = method; req_data['script']='sql_mysql'; args['version'] = ''; if (typeof(args) == 'string' && args == ''){ req_data['args'] = JSON.stringify(toArrayObject(args)); } else { req_data['args'] = JSON.stringify(args); } $.post('/plugins/callback', req_data, function(data) { if (!data.status){ layer.msg(data.msg,{icon:0,time:2000,shade: [0.3, '#000']}); return; } if(typeof(callback) == 'function'){ callback(data); } },'json'); } function selectTab(tab = 'redis'){ $('.tab-view-box .tab-con').addClass('hide').removeClass('show').removeClass('w-full'); $('#'+tab).removeClass('hide').addClass('w-full'); } function showInstallLayer(){ $('.mask_layer').css('display','block'); } function closeInstallLayer(){ $('.mask_layer').css('display','none'); } function initTabFunc(tab){ switch(tab){ case 'redis':initTabRedis();break; case 'mongodb':initTabMongodb();break; case 'memcached':initTabMemcached();break; case 'mysql':initTabMySQL();break; case 'default:':initTabRedis();break; } } function initDataQuery(){ var tab = $('#cutTab .tabs-item.active').data('name'); initTabFunc(tab); $('#cutTab .tabs-item').click(function(){ var tab = $(this).data('name'); $('#cutTab .tabs-item').removeClass('active'); $(this).addClass('active'); selectTab(tab); initTabFunc(tab); }); } function initTabRedis(){ //渲染数据 redisGetList(); $('#redis_add_key').unbind('click').click(function(){ redisAdd(); }); //搜索 $('#redis_ksearch').unbind('click').keyup(function(e){ if (e.keyCode == 13){ var val = $(this).val(); if (val == ''){ layer.msg('搜索不能为空!',{icon:7}); return; } redisGetKeyList(1, val); } }); $('#redis_ksearch_span').unbind('click').click(function(){ var val = $('#redis_ksearch').val(); if (val == ''){ layer.msg('搜索不能为空!',{icon:7}); return; } redisGetKeyList(1, val); }); //批量删除 $('#redis_batch_del').unbind('click').click(function(){ redisBatchDel(); }); //清空所有 $('#redis_clear_all').unbind('click').click(function(){ redisBatchClear(); }); readerTableChecked(); } function initTabMongodb(){ //渲染数据 mongodbGetList(); } function initTabMemcached(){ memcachedGetList(); $('#memcached_add_key').unbind('click').click(function(){ memcachedAdd(); }); $('#memcached_clear_all').unbind('click').click(function(){ var sid = memcachedGetSid(); memPostCB('clear',{'sid':sid} ,function(rdata){ // console.log(rdata); showMsg(rdata.data.msg,function(){ if (rdata.data.status){ memcachedGetList(); } },{icon: rdata.data.status ? 1 : 2}, 2000); }); }); } function initTabMySQL(){ mysqlGetDbList(); mysqlProcessList(); var mysql_timer = setInterval(function(){ var name = $('#mysql_list_tab .tab-nav span.on').data('name'); mysqlRunMysqlTab(name); var fname = $('#cutTab .tab-list .active').data('name'); if (fname != 'mysql'){ clearInterval(mysql_timer); } },2000); $('#mysql_list_tab .tab-nav span').click(function(){ $('#mysql_list_tab .tab-nav span').removeClass('on'); $(this).addClass('on'); var name = $(this).data('name'); mysqlRunMysqlTab(name); }); mysqlCommonFunc(); } function mysqlCommonFuncMysqlNSQL(){ function renderSQL(){ var sid = mysqlGetSid(); myPostCBN('get_topn_list',{'sid':sid} ,function(rdata){ var data = rdata.data; if (data['status']){ var items = data.data; var tbody = ''; for (var i = 0; i < items.length; i++) { var t = ''; t += ''+items[i].query+''; t += ''+items[i].db+''; t += ''+items[i].last_seen+''; t += ''+items[i].exec_count+''; t += ''+items[i].max_latency+''; t += ''+items[i].avg_latency+''; t += ''; tbody += t; } $('#topn_list tbody').html(tbody); } else { layer.msg(data.msg,{icon:2}); } }); } var sql_timer = null; layer.open({ type: 1, title: "查询执行次数最频繁的前N条SQL语句", area: ['1200px', '500px'], closeBtn: 1, shadeClose: false, content: '
\
\
\ 实时监控\
\ \ \
\
\
\
\ \ \ \ \ \ \ \ \ \ \
SQL数据名最近时间总次数最大时间平均时间
\
', success:function(i,l){ renderSQL(); $('#real_time_label').click(function(){ sql_timer = setInterval(function(){ var t = $('#real_time_monitoring').is(':checked'); if (t){ renderSQL(); } else{ clearInterval(sql_timer); } }, 3000); }); } }); } function mysqlCommonFuncMysqlNet(){ function renderSQL(){ var sid = mysqlGetSid(); myPostCBN('get_net_list',{'sid':sid} ,function(rdata){ var data = rdata.data; if (data['status']){ var items = data.data; var tbody = ''; for (var i = 0; i < items.length; i++) { var t = ''; t += ''+items[i]['current_time']+''; t += ''+items[i]['select']+''; t += ''+items[i]['insert']+''; t += ''+items[i]['update']+''; t += ''+items[i]['delete']+''; t += ''+items[i]['conn']+''; t += ''+items[i]['max_conn']+''; t += ''+items[i]['recv_mbps']+''; t += ''+items[i]['send_mbps']+''; t += ''; tbody += t; } $('#net_list tbody').html(tbody); } else { layer.msg(data.msg,{icon:2}); } }); } var sql_timer = null; layer.open({ type: 1, title: "MySQL服务器的QPS/TPS/网络带宽指标", area: ['700px', '220px'], closeBtn: 1, shadeClose: false, content: '
\
\
\ 实时监控\
\ \ \
\
\
\
\ \ \ \ \ \ \ \ \ \ \ \ \ \
时间SelectInsertUpdateDeleteConnMax_connRecvSend
\
', success:function(i,l){ renderSQL(); $('#real_qps_label').click(function(){ sql_timer = setInterval(function(){ var t = $('#real_qps_monitoring').is(':checked'); if (t){ renderSQL(); } else{ clearInterval(sql_timer); } }, 3000); }); } }); } function mysqlCommonFuncRedundantIndexes(){ function renderSQL(){ var sid = mysqlGetSid(); myPostCBN('get_redundant_indexes',{'sid':sid} ,function(rdata){ var data = rdata.data; if (data['status']){ var items = data.data; var tbody = ''; for (var i = 0; i < items.length; i++) { var t = ''; t += ''+items[i]['table_schema']+''; t += ''+items[i]['table_name']+''; t += ''+items[i]['redundant_index_name']+''; t += ''+items[i]['redundant_index_columns']+''; t += ''+items[i]['sql_drop_index']+''; t += '执行'; t += ''; tbody += t; } $('#redundant_indexes tbody').html(tbody); $('#redundant_indexes tbody .exec').click(function(){ var index = $(this).attr('index'); myPostCB('redundant_indexes_cmd', {'sid':sid, 'index':index}, function(rdata){ var data = rdata.data; showMsg(data.msg,function(){ if (data.status){ renderSQL(); } },{icon: data.status ? 1 : 2}, 2000); }); }); } else { layer.msg(data.msg,{icon:2}); } }); } layer.open({ type: 1, title: "查看重复或冗余的索引", area: ['1100px', '400px'], closeBtn: 1, shadeClose: false, content: '
\ \ \ \ \ \ \ \ \ \ \
数据库名表名冗余索引名冗余索引列名删除冗余索引SQL操作
\
', success:function(i,l){ renderSQL(); } }); } function mysqlCommonFuncTableInfo(){ function renderSQL(){ var sid = mysqlGetSid(); myPostCBN('get_table_info',{'sid':sid} ,function(rdata){ var data = rdata.data; if (data['status']){ var items = data.data; var tbody = ''; for (var i = 0; i < items.length; i++) { var t = ''; t += ''+items[i]['TABLE_SCHEMA']+''; t += ''+items[i]['TABLE_NAME']+''; t += ''+items[i]['ENGINE']+''; t += ''+items[i]['DATA_LENGTH']+''; t += ''+items[i]['INDEX_LENGTH']+''; t += ''+items[i]['TOTAL_LENGTH']+''; t += ''+items[i]['COLUMN_NAME']+''; t += ''+items[i]['COLUMN_TYPE']+''; t += ''+items[i]['AUTO_INCREMENT']+''; t += ''+items[i]['RESIDUAL_AUTO_INCREMENT']+''; t += ''; tbody += t; } $('#mysql_data_id tbody').html(tbody); } else { layer.msg(data.msg,{icon:2}); } }); } layer.open({ type: 1, title: "统计库里每个表的大小", area: ['1200px', '400px'], closeBtn: 1, shadeClose: false, content: '
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \
库名表名储存引擎数据大小(GB)索引大小(GB)总计(GB)主键自增字段主键字段属性主键自增当前主键自增剩余
\
', success:function(i,l){ renderSQL(); } }); } function mysqlCommonFuncConnCount(){ function renderSQL(){ var sid = mysqlGetSid(); myPostCBN('get_conn_count',{'sid':sid} ,function(rdata){ var data = rdata.data; if (data['status']){ var items = data.data; var tbody = ''; for (var i = 0; i < items.length; i++) { var t = ''; t += ''+items[i]['user']+''; t += ''+items[i]['db']+''; t += ''+items[i]['Client_IP']+''; t += ''+items[i]['count']+''; t += ''; tbody += t; } $('#app_ip_list tbody').html(tbody); } else { layer.msg(data.msg,{icon:2}); } }); } var sql_timer = null; layer.open({ type: 1, title: "查看应用端IP连接数总和", area: ['700px', '420px'], closeBtn: 1, shadeClose: false, content: '
\
\
\ 实时监控\
\ \ \
\
\
\
\ \ \ \ \ \ \ \ \
连接用户数据库名应用端IP数量
\
', success:function(i,l){ renderSQL(); $('#app_ip_label').click(function(){ sql_timer = setInterval(function(){ var t = $('#app_ip_monitoring').is(':checked'); if (t){ renderSQL(); } else{ clearInterval(sql_timer); } }, 3000); }); } }); } function mysqlCommonFuncFpkInfo(){ function renderSQL(){ var sid = mysqlGetSid(); myPostCBN('get_fpk_info',{'sid':sid} ,function(rdata){ var data = rdata.data; if (data['status']){ var items = data.data; var tbody = ''; for (var i = 0; i < items.length; i++) { var t = ''; t += ''+items[i]['table_schema']+''; t += ''+items[i]['table_name']+''; t += ''; tbody += t; } $('#mysql_data_id tbody').html(tbody); } else { layer.msg(data.msg,{icon:2}); } }); } layer.open({ type: 1, title: "快速找出没有主键的表", area: ['800px', '400px'], closeBtn: 1, shadeClose: false, content: '
\ \ \ \ \ \ \
库名表名
\
', success:function(i,l){ renderSQL(); } }); } function mysqlCommonFunc(){ $('#mysql_common').unbind('click').click(function(){ layer.open({ type: 1, title: "MySQL常用功能", area: ['600px', '400px'], closeBtn: 1, shadeClose: false, content: '
\ \ \ \ \ \ \
', success:function(i,l){ $('#mysql_top_nsql').click(function(){ mysqlCommonFuncMysqlNSQL(); }); $('#mysql_net_stat').click(function(){ mysqlCommonFuncMysqlNet(); }); $('#mysql_redundant_indexes').click(function(){ mysqlCommonFuncRedundantIndexes(); }); $('#mysql_table_info').click(function(){ mysqlCommonFuncTableInfo(); }); $('#mysql_conn_count').click(function(){ mysqlCommonFuncConnCount(); }); $('#mysql_fpk_info').click(function(){ mysqlCommonFuncFpkInfo(); }); } }); }); } function mysqlRunMysqlTab(name){ switch(name){ case 'proccess':mysqlProcessList();break; case 'status':mysqlStatusList();break; case 'stats':mysqlStatsList();break; } } // ------------------------- mysql start ------------------------------- function mysqlGetSid(){ return 0; } function mysqlGetDbName(){ return $('#mysql .mysql_db_list select[name=mysql_db]').val(); } function mysqlGetTableName(){ var table = $('#mysql .mysql_table_list select[name=mysql_table]').val(); if (!table){ return ''; } return table; } function mysqlInitField(f, data){ var option_html = ''; for (var i = 0; i < f.length; i++) { if (data['soso_field'] == f[i]){ option_html+= ''; } else { option_html+= ''; } } $('select[name="mysql_field_key"]').html(option_html); $('#mysql .mysql_find').unbind('click').click(function(){ var val = $('input[name="mysql_field_value"]').val(); if (val == ''){ layer.msg('搜索不能为空!',{icon:7}); return; } mysqlGetDataList(1); }); } function mysqlGetDbList(){ var sid = mysqlGetSid(); myPostCB('get_db_list',{'sid':sid} ,function(rdata){ if (rdata.data.status){ var items = rdata.data.data['list']; var content = ''; for (var i = 0; i < items.length; i++) { var name = items[i]; if (i == 0){ content += ''; } else { content += ''; } } // console.log(content); $('#mysql .mysql_db_list select[name=mysql_db]').html(content); $('#mysql .mysql_db_list select[name=mysql_db]').change(function(){ mysqlGetTableList(1); }); mysqlGetTableList(1); closeInstallLayer(); } else { showInstallLayer(); } }); } function mysqlGetTableList(p){ // console.log('mysqlGetTableList',p); var sid = mysqlGetSid(); var db = mysqlGetDbName(); if (!db){ return; } myPostCB('get_table_list',{'sid':sid,'db':db} ,function(rdata){ if (rdata.data.status){ var items = rdata.data.data['list']; var content = ''; for (var i = 0; i < items.length; i++) { var name = items[i]; if (i == 0){ content += ''; } else { content += ''; } } // console.log(content); $('#mysql .mysql_table_list select[name=mysql_table]').html(content); $('#mysql .mysql_table_list select[name=mysql_table]').change(function(){ mysqlGetDataList(1); }); mysqlGetDataList(1); } }); } function mysqlGetDataList(p){ var sid = mysqlGetSid(); var db = mysqlGetDbName(); var table = mysqlGetTableName(); var mysql_field = $('select[name="mysql_field_key"]').val(); var mysql_value = $('input[name="mysql_field_value"]').val(); var request_data = { 'sid':sid, 'db':db, 'table':table, 'p':p }; if (mysql_field != '0'){ request_data['where'] = { field : mysql_field, value : mysql_value }; } else { request_data['where'] = {}; } myPostCB('get_data_list',request_data ,function(rdata){ if (rdata.data.status){ var data = rdata.data.data; var dlist = data['list']; var fields = mongodbGetDataFields(dlist); if (fields.length != 0 ){ mysqlInitField(fields,data); } var header_field = ''; for (var i =0 ; i'; } $('#mysql_table thead tr').html(header_field); var tbody = ''; for (var i = 0; i < dlist.length; i++) { tbody += ''; for (var j = 0; j < fields.length; j++) { var f = fields[j]; if (f in dlist[i]) { tbody += ''+dlist[i][f]+''; } else { tbody += 'undefined'; } } tbody += ''; } $('#mysql_table tbody').html(tbody); $('#mysql .mysql_list_page').html(data.page); } // }); } function mysqlProcessList(){ var sid = mysqlGetSid(); var request_data = {}; request_data['sid'] = sid; myPostCBN('get_proccess_list',request_data ,function(rdata){ if (rdata.data.status){ var data = rdata.data.data; var dlist = data['list']; var fields = mongodbGetDataFields(dlist); var header_field = ''; for (var i =0 ; i'; } $('#mysql_ot_table thead tr').html(header_field); var tbody = ''; for (var i = 0; i < dlist.length; i++) { tbody += ''; for (var j = 0; j < fields.length; j++) { var f = fields[j]; if (f in dlist[i]) { tbody += ''+dlist[i][f]+''; } else { tbody += 'undefined'; } } tbody += ''; } $('#mysql_ot_table tbody').html(tbody); } }); } function mysqlStatusList(){ var sid = mysqlGetSid(); var request_data = {}; request_data['sid'] = sid; myPostCBN('get_status_list',request_data ,function(rdata){ // console.log(rdata); if (rdata.data.status){ var data = rdata.data.data; var dlist = data['list']; var fields = mongodbGetDataFields(dlist); var header_field = ''; for (var i =0 ; i'; } $('#mysql_ot_table thead tr').html(header_field); var tbody = ''; for (var i = 0; i < dlist.length; i++) { tbody += ''; for (var j = 0; j < fields.length; j++) { var f = fields[j]; if (f in dlist[i]) { tbody += ''+dlist[i][f]+''; } else { tbody += 'undefined'; } } tbody += ''; } $('#mysql_ot_table tbody').html(tbody); } }); } function mysqlStatsList(){ var sid = mysqlGetSid(); var request_data = {}; request_data['sid'] = sid; myPostCBN('get_stats_list',request_data ,function(rdata){ // console.log(rdata); if (rdata.data.status){ var data = rdata.data.data; var dlist = data['list']; var fields = mongodbGetDataFields(dlist); var header_field = ''; for (var i =0 ; i'; } $('#mysql_ot_table thead tr').html(header_field); var tbody = ''; for (var i = 0; i < dlist.length; i++) { tbody += ''; for (var j = 0; j < fields.length; j++) { var f = fields[j]; if (f in dlist[i]) { tbody += ''+dlist[i][f]+''; } else { tbody += 'undefined'; } } tbody += ''; } $('#mysql_ot_table tbody').html(tbody); } }); } // ------------------------- mysql start ------------------------------- // ------------------------- memcached start ------------------------------- function memcachedGetSid(){ return 0; } function memcachedGetItem(){ return $('#memcached .item_list select').val(); } function memcachedGetList(){ var sid = memcachedGetSid(); memPostCB('get_items',{'sid':sid} ,function(rdata){ if (rdata.data.status){ var items = rdata.data.data['items']; var content = ''; for (var i = 0; i < items.length; i++) { var name = items[i]; if (i == 0){ content += ''; } else { content += ''; } } $('#memcached .item_list select').html(content); $('#memcached .item_list select').change(function(){ memcachedGetKeyList(1); }); closeInstallLayer(); } else { showInstallLayer(); } memcachedGetKeyList(1); }); } function memcachedGetKeyList(p){ var item_id = memcachedGetItem(); var sid = memcachedGetSid(); memPostCB('get_key_list',{'sid':sid,'item_id':item_id,'p':p} ,function(rdata){ if (rdata.data.status){ var data = rdata.data.data; var dlist = data['list']; var tbody = ''; for (var i = 0; i < dlist.length; i++) { tbody += ''; tbody += ""; tbody += ''+ dlist[i]['k'] +''; tbody += ''+dlist[i]['v']+''; tbody += ''+ dlist[i]['s'] +''; if (dlist[i]['t'] == '0'){ tbody += '永久'; } else { tbody += ''+ dlist[i]['t'] +''; } tbody += '\ 删除\ '; tbody += ''; } $('.memcached_table_content tbody').html(tbody); $('.memcached_list_page').html(data.page); $('.del').click(function(){ var i = $(this).data('index'); memcachedDeleteKey(dlist[i]['k']); }); $('.copy').click(function(){ var i = $(this).data('index'); copyText(dlist[i]['v']); }); } else { $('.memcached_table_content tbody').html(''); } }); } function memcachedDeleteKey(key){ layer.confirm('确定要删除?', {btn: ['确定', '取消']}, function(){ var data = {}; data['sid'] = memcachedGetSid(); data['key'] = key; memPostCB('del_val', data, function(rdata){ showMsg(rdata.data.msg,function(){ if (rdata.data.status){ memcachedGetKeyList(1); } },{icon: rdata.data.status ? 1 : 2}, 2000); }); }); } function memcachedAdd(){ layer.open({ type: 1, area: '480px', title: '添加Key至服务器', closeBtn: 1, shift: 0, shadeClose: false, btn:['确定','取消'], content: "
\
\ \
\ \
\
\
\ \
\ \
\
\
\ 有效期\
\ \
\
\
\
\
  • 有效期为0表示永久
  • \
\
\
", success:function(){ }, yes: function(index){ var data = {}; data['sid'] = memcachedGetSid(); data['key'] = $('input[name="key"]').val(); data['val'] = $('textarea[name="val"]').val(); data['endtime'] = $('input[name="endtime"]').val(); memPostCB('set_kv', data ,function(rdata){ showMsg(rdata.data.msg,function(){ layer.close(index); memcachedGetList(); },{icon: rdata.data.status ? 1 : 2}, 1000); }); } }); } // ------------------------- memcached end --------------------------------- // ------------------------- mongodb start --------------------------------- function mongodbGetSid(){ return 0; } function mongodbGetDbName(){ return $('.db_list select[name="db"]').val(); } function mongodbInitField(f, data){ var option_html = ''; for (var i = 0; i < f.length; i++) { if (data['soso_field'] == f[i]){ option_html+= ''; } else { option_html+= ''; } } $('select[name="mongodb_field_key"]').html(option_html); $('#mongodb .mongodb_find').unbind('click').click(function(){ var val = $('input[name="mongodb_field_value"]').val(); if (val == ''){ layer.msg('搜索不能为空!',{icon:7}); return; } mongodbDataList(1); }); $('#mongodb .mongodb_refresh').unbind('click').click(function(){ mongodbDataList(1); }); } var mogodb_db_list; function mongodbCollectionName(){ // console.log(mogodb_db_list); var v = mogodb_db_list.getValue('value'); if (v.length == 0){ // console.log($('#mongodb').data('collection')); return $('#mongodb').data('collection'); } return v[0]; } function mongodbGetList(){ var sid = mongodbGetSid(); mgdbPostCB('get_db_list',{'sid':sid} ,function(rdata){ // console.log(rdata); if (rdata.data.status){ var list = rdata.data.data['list']; var content = ''; for (var i = 0; i < list.length; i++) { var name = list[i]; if (i == 0){ content += ''; } else { content += ''; } } $('.db_list select').html(content); if (list.length > 0) { mongodbGetCollections(list[0]); } $('#mongodb_select .db_list select[name="db"]').change(function(){ var collection_name = $(this).val(); mongodbGetCollections(collection_name); }); closeInstallLayer(); } else { showInstallLayer(); } }); } function mongodbGetCollections(name){ var sid = mongodbGetSid(); mgdbPostCB('get_collections_list',{'sid':sid,'name':name} ,function(rdata){ // console.log(rdata); if (rdata.data.status){ var list = rdata.data.data['collections']; var select_list = []; for (var i = 0; i < list.length; i++) { var t = {}; t['name'] = list[i]; t['value'] = list[i]; if (i == 0){ t['selected'] = true; } select_list.push(t); } mogodb_db_list = xmSelect.render({ el: '#mongodb_search', radio: true, toolbar: {show: true}, data: select_list, on: function(data){ //arr: 当前多选已选中的数据 var arr = data.arr; //change, 此次选择变化的数据,数组 var change = data.change; //isAdd, 此次操作是新增还是删除 var isAdd = data.isAdd; if (isAdd){ $('#mongodb').data('collection',change[0].value); setTimeout(function(){ mongodbDataList(1); },200); } }, }); if (select_list.length > 0){ setTimeout(function(){ mongodbDataList(1); },200); } } }); } function mongodbGetDataFields(data){ var fields = []; for (var i = 0; i < data.length; i++) { var d = data[i]; for (var j in d) { if (fields.indexOf(j) == -1 ){ fields.push(j); } } } return fields; } function mongodbDataList(p){ var sid = mongodbGetSid(); var db = mongodbGetDbName(); var collection = mongodbCollectionName(); var mongodb_field = $('select[name="mongodb_field_key"]').val(); var mongodb_value = $('input[name="mongodb_field_value"]').val(); var request_data = { 'sid':sid, 'db':db, 'collection':collection, "p":p, }; if (mongodb_field != '0'){ request_data['where'] = { field : mongodb_field, value : mongodb_value }; } else { request_data['where'] = {}; } // console.log({'sid':sid,'db':db,'collection':collection,"p":p}); mgdbPostCB('get_data_list', request_data, function(rdata){ if (rdata.data.status){ var data = rdata.data.data; var dlist = data['list']; // console.log(dlist); var fields = mongodbGetDataFields(dlist); if (fields.length != 0 ){ mongodbInitField(fields,data); } // console.log(fields); var header_field = ''; for (var i =0 ; i'; } header_field += '操作'; $('#mongodb .mongodb_table thead tr').html(header_field); var tbody = ''; for (var i = 0; i < dlist.length; i++) { tbody += ''; for (var j = 0; j < fields.length; j++) { var f = fields[j]; if (f in dlist[i]) { if (f == '_id' ){ tbody += ''+dlist[i]['_id']['$oid']+''; } else { tbody += ''+dlist[i][f]+''; } } else { tbody += 'undefined'; } } tbody += '\ 删除\ '; tbody += ''; } // console.log($(window).width()-230); $('#mongodb_table').css('width', $(document).width()+240).parent().css('width', $(document).width()-240).css('overflow','scroll'); $('#mongodb').css('width',$(document).width()-240).css('overflow','hidden'); $('#mongodb .mongodb_table tbody').html(tbody); $('#mongodb .mongodb_list_page').html(data.page); $('#mongodb .del').click(function(){ var i = $(this).data('index'); mongodbDel(dlist[i]['_id']['$oid']); }); } }); } function mongodbDel(mgdb_id){ // console.log(mgdb_id); var sid = mongodbGetSid(); var db = mongodbGetDbName(); var collection = mongodbCollectionName(); mgdbPostCB('del_by_id',{'sid':sid,'db':db,'collection':collection,"_id":mgdb_id} ,function(rdata){ showMsg(rdata.data.msg,function(){ if (rdata.data.status){ mongodbDataList(1); } },{icon: rdata.data.status ? 1 : 2}, 2000); }); } // ------------------------- mongodb end --------------------------------- // ------------------------- redis start --------------------------------- function redisGetSid(){ return 0; } function redisGetIdx(){ return $('#redis_list_tab .tab-nav span.on').data('id'); } function redisGetList(){ var sid = redisGetSid(); redisPostCB('get_list',{'sid':sid} ,function(rdata){ if (rdata.data.status){ var list = rdata.data.data; var content = ''; for (var i = 0; i < list.length; i++) { if (i == 0){ content += ''+list[i]['name'] + '('+ list[i]['keynum'] +')'; } else { content += ''+list[i]['name'] + '('+ list[i]['keynum'] +')'; } } $('#redis_list_tab .tab-nav').html(content); $('#redis_list_tab .tab-nav span').click(function(){ $('#redis_list_tab .tab-nav span').removeClass('on'); $(this).addClass('on'); redisGetKeyList(1); }); redisGetKeyList(1); closeInstallLayer(); } else { showInstallLayer(); } }); } function redisGetKeyList(page,search = ''){ var args = {}; args['sid'] = redisGetSid(); args['idx'] = redisGetIdx(); args['p'] = page; args['search'] = search; var input_search_val = $('#redis_ksearch').val(); if (input_search_val!=''){ args['search'] = input_search_val; } redisPostCB('get_dbkey_list', args, function(rdata){ if (rdata.data.status){ var data = rdata.data.data.data; var tbody = ''; for (var i = 0; i < data.length; i++) { tbody += ''; tbody += ""; tbody += ''+data[i].name+''; tbody += ''+data[i].val+''; tbody += ''+data[i].type+''; tbody += ''+data[i].len+''; if (data[i].endtime == -1){ tbody += '永久'; } else { tbody += ''+data[i].endtime+''; } tbody += '\ 编辑 | \ 删除\ '; tbody += ''; } // console.log(tbody); $('.redis_table_content tbody').html(tbody); $('.redis_list_page').html(rdata.data.data.page); $('.edit').click(function(){ var i = $(this).data('index'); redisEditKv(data[i].name,data[i].val,data[i].endtime); }); $('.copy').click(function(){ var i = $(this).data('index'); copyText(data[i].val); }); } }); } function redisDeleteKey(name){ layer.confirm('确定要删除?', {btn: ['确定', '取消']}, function(){ var data = {}; data['idx'] = redisGetIdx(); data['sid'] = redisGetSid(); data['name'] = name; redisPostCB('del_val', data, function(rdata){ showMsg(rdata.data.msg,function(){ if (rdata.data.status){ redisGetList(); } },{icon: rdata.data.status ? 1 : 2}, 2000); }); }); } function redisAdd(){ layer.open({ type: 1, area: '480px', title: '添加Key至服务器', closeBtn: 1, shift: 0, shadeClose: false, btn:['确定','取消'], content: "
\
\ 数据库\
\ \
\
\
\ \
\ \
\
\
\ \
\ \
\
\
\ 有效期\
\ \
\
\
\
\
  • 有效期为0表示永久
  • \
\
\
", success:function(){ var db_list = $('#redis_list_tab .tab-nav span'); var db_list_count = db_list.length; var idx_html = ''; for (var i = 0; i < db_list_count; i++) { idx_html += ""; } $('select[name=idx]').html(idx_html); }, yes: function(index){ var data = {}; data['idx'] = $('select[name=idx]').val(); data['sid'] = redisGetSid(); data['name'] = $('input[name="key"]').val(); data['val'] = $('textarea[name="val"]').val(); data['endtime'] = $('input[name="endtime"]').val(); redisPostCB('set_kv', data ,function(rdata){ showMsg(rdata.data.msg,function(){ layer.close(index); redisGetList(); },{icon: rdata.data.status ? 1 : 2}, 1000); }); } }); } function redisEditKv(name, val, endtime){ layer.open({ type: 1, area: '480px', title: '编辑['+name+']Key', closeBtn: 1, shift: 0, shadeClose: false, btn:['确定','取消'], content: "
\
\ 数据库\
\ \
\
\
\ \
\ \
\
\
\ \
\ \
\
\
\ 有效期\
\ \
\
\
\
\
  • 有效期为0表示永久
  • \
\
\
", success:function(){ var idx = redisGetIdx(); var idx_html = ""; $('select[name=idx]').html(idx_html).attr('readonly','readonly'); $('input[name="key"]').val(name).attr('readonly','readonly'); $('textarea[name="val"]').val(val); if (endtime == -1){ $('input[name="endtime"]').val(0); } else { $('input[name="endtime"]').val(endtime); } }, yes: function(index){ var data = {}; data['idx'] = $('select[name=idx]').val(); data['sid'] = redisGetSid(); data['name'] = $('input[name="key"]').val(); data['val'] = $('textarea[name="val"]').val(); data['endtime'] = $('input[name="endtime"]').val(); redisPostCB('set_kv', data ,function(rdata){ showMsg(rdata.data.msg,function(){ if (rdata.data.status){ layer.close(index); redisGetList(); } },{icon: rdata.data.status ? 1 : 2}, 1000); }); } }); } function redisBatchDel(){ var keys = []; $('input[type="checkbox"].check:checked').each(function () { keys.push($(this).val()); }); if (keys.length == 0){ layer.msg('没有选中数据!',{icon:7}); return; } layer.confirm('确定要批量删除?', {btn: ['确定', '取消']}, function(){ var data = {}; data['idx'] = redisGetIdx(); data['sid'] = redisGetSid(); data['keys'] = keys; redisPostCB('batch_del_val', data, function(rdata){ showMsg(rdata.data.msg,function(){ if (rdata.data.status){ redisGetList(); } },{icon: rdata.data.status ? 1 : 2}, 2000); }); }); } function redisBatchClear(){ var xm_db_list; layer.open({ type: 1, area: ['480px','180px'], title: '清空【本地服务器】数据库', closeBtn: 1, shift: 0, shadeClose: false, btn:['确定','取消'], content: "
\
\ 选择数据库\
\
\
\
\
", success:function(l,i){ var db_list = $('#redis_list_tab .tab-nav span'); var db_list_count = db_list.length; var idx_db = []; for (var i = 0; i < db_list_count; i++) { var t = {}; t['name'] = "DB("+i+")"; t['value'] = i; idx_db.push(t); } xm_db_list = xmSelect.render({ el: '#select_db', repeat: false, toolbar: {show: true}, data: idx_db, }); $(l).find('.layui-layer-content').css('overflow','visible'); }, yes: function(index){ var xm_db_val = xm_db_list.getValue('value'); layer.confirm('确定要批量清空?', {btn: ['确定', '取消']}, function(){ var data = {}; data['sid'] = redisGetSid(); data['idxs'] = xm_db_val; redisPostCB('clear_flushdb', data, function(rdata){ showMsg(rdata.data.msg,function(){ if (rdata.data.status){ redisGetList(); layer.close(index); } },{icon: rdata.data.status ? 1 : 2}, 2000); }); }); } }); } // ------------------------- redis end ---------------------------------