update_dev

This commit is contained in:
Mr Chen
2024-02-03 04:09:00 +08:00
parent 80c6f91206
commit b1e8839ace
4 changed files with 252 additions and 47 deletions
+74 -5
View File
@@ -99,27 +99,96 @@ class nosqlMongodbCtr():
return instance
def getDbList(self, args):
sid = args['sid']
mgdb_instance = self.getInstanceBySid(sid).mgdb_conn()
if mgdb_instance is False:
return mw.returnData(False,'无法链接')
result = {}
result["dbs"] = mgdb_instance.list_database_names()
doc_list = mgdb_instance.list_database_names()
rlist = []
for x in doc_list:
if not x in ['admin', 'config', 'local']:
rlist.append(x)
result['list'] = rlist
return mw.returnData(True,'ok', result)
def getCollectionsList(self, args):
sid = args['sid']
name = args['name']
mgdb_instance = self.getInstanceBySid(sid).mgdb_conn()
if mgdb_instance is False:
return mw.returnData(False,'无法链接')
result = {}
collections = mgdb_instance[name].list_collection_names()
result['collections'] = collections
return mw.returnData(True,'ok', result)
def getDataList(self, args):
from bson.json_util import dumps
import json
sid = args['sid']
db = args['db']
collection = args['collection']
p = 1
size = 10
if 'p' in args:
p = args['p']
if 'size' in args:
size = args['size']
mgdb_instance = self.getInstanceBySid(sid).mgdb_conn()
if mgdb_instance is False:
return mw.returnData(False,'无法链接')
db_instance = mgdb_instance[db]
collection_instance = db_instance[collection]
start_index = (p - 1) * size
end_index = p * size
where = {}
result = collection_instance.find(where).skip(start_index).limit(size).sort({'_id':-1})
count = collection_instance.count_documents(where)
d = []
for document in result:
d.append(document)
doc_str_json = dumps(d)
result = json.loads(doc_str_json)
page_args = {}
page_args['count'] = count
page_args['tojs'] = 'mongodbDataList'
page_args['p'] = p
page_args['row'] = size
rdata = {}
rdata['page'] = mw.getPage(page_args)
rdata['list'] = result
rdata['count'] = count
return mw.returnData(True,'ok', rdata)
# ---------------------------------- run ----------------------------------
# 获取 mongodb databases 列表
def get_db_list(args):
t = nosqlMongodbCtr()
return t.getDbList(args)
# 获取 redis key 列表
def get_dbkey_list(args):
# 获取 mongodb collections 列表
def get_collections_list(args):
t = nosqlMongodbCtr()
return t.getDbKeyList(args)
return t.getCollectionsList(args)
def get_data_list(args):
t = nosqlMongodbCtr()
return t.getDataList(args)
def set_kv(args):
t = nosqlMongodbCtr()
+10
View File
@@ -27,4 +27,14 @@
border: 1px solid #eee;
border-radius: 2px;
font-size: 13px;
}
#mongodb_search xm-select {
min-height: 30px;
line-height: 30px;
}
#mongodb_search xm-select .xm-label .xm-label-block{
height: 20px;
line-height: 20px;
}
+36 -32
View File
@@ -16,56 +16,60 @@
</div>
<!-- mongodb start -->
<div class="tab-con hide" id="mongodb" style="padding: 0px;">
<div id="operationLog" style="position: relative;">
<div class="tootls_group tootls_top">
<div class="pull-left">
<button type="button" title="刷新" class="refresh btn btn-success btn-sm mr5">
<span>刷新</span>
</button>
</div>
<div class="pull-right" style="padding-top: 5px;">
<div class="server_list" style="float:left;">
<select name="sid" class="bt-input-text c5 mr5">
<option value="0">本地服务器</option>
</select>
</div>
<div class="db_list" style="float:left;">
<select name="db" class="bt-input-text c5 mr5">
<option value="0">空</option>
</select>
</div>
<div class="search">
<input id="mongodb_ksearch" type="text" class="search_input" placeholder="选择表名">
<span id="mongodb_ksearch_span" class="glyphicon glyphicon-search" aria-hidden="true"></span>
</div>
</div>
<div class="tab-con show w-full" id="mongodb" style="padding: 0px;">
<div class="tootls_group tootls_top">
<div class="pull-left">
<button type="button" title="刷新" class="refresh btn btn-success btn-sm mr5">
<span>刷新</span>
</button>
</div>
<div class="divtable mtb10">
<div class="pull-right" style="padding-top: 5px;">
<div class="server_list" style="float:left;">
<select name="sid" class="bt-input-text c5 mr5">
<option value="0">本地服务器</option>
</select>
</div>
<div class="db_list" style="float:left;">
<select name="db" class="bt-input-text c5 mr5">
<option value="0">空</option>
</select>
</div>
<div class="search" id="mongodb_search"></div>
<button type="button" title="刷新" class="refresh btn btn-success btn-sm mr5 ml5" style="float:right;">
<span>查找</span>
</button>
</div>
</div>
<div style="position: relative;">
<div id="mongodb_table" class="mongodb_table divtable mtb10">
<table class="table table-hover">
<thead style="position: relative;z-index: 1;">
<tr>
<th><span>编号</span></th>
<th><span>操作类型</span></th>
<th><span>详情</span></th>
<th><span>操作时间</span></th>
<th style="text-align:right;"><span>操作</span></th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
</div>
<div class="dataTables_paginate paging_bootstrap page">
<div><span class="Pcurrent">1</span><span class="Pcount">共1条</span></div>
<div class="mongodb_list_page page">
<div><span class="Pcurrent">0</span><span class="Pcount">共0条</span></div>
</div>
</div>
<!-- mongodb end -->
<!-- reids start -->
<div class="tab-con show w-full" id="redis" style="padding: 0px;">
<div class="tab-con hide" id="redis" style="padding: 0px;">
<div id="redis_ctr" style="position: relative;">
<div class="tootls_group tootls_top">
<div class="pull-left">
+132 -10
View File
@@ -146,33 +146,155 @@ function mongodbGetSid(){
return 0;
}
function mongodbGetDbName(){
return $('.db_list select[name="db"]').val();
}
var mogodb_db_list;
function mongodbCollectionName(){
return mogodb_db_list.getValue('value')[0];
}
function mongodbGetList(){
var sid = mongodbGetSid();
mgdbPostCB('get_db_list',{'sid':sid} ,function(rdata){
if (rdata.data.status){
var list = rdata.data.data;
var list = rdata.data.data['list'];
var content = '';
for (var i = 0; i < list.length; i++) {
var name = list[i];
if (i == 0){
content += '<span data-id="'+i+'" class="on">'+list[i]['name'] + '('+ list[i]['keynum'] +')</span>';
content += '<option value="'+name+'" selected>'+name+'</option>';
} else {
content += '<span data-id="'+i+'">'+list[i]['name'] + '('+ list[i]['keynum'] +')</span>';
content += '<option value="'+name+'">'+name+'</option>';
}
}
$('#redis_list_tab .tab-nav').html(content);
$('.db_list select').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);
if (list.length > 0) {
mongodbGetCollections(list[0]);
}
} else {
showInstallLayer();
}
});
}
function mongodbGetCollections(name){
var sid = mongodbGetSid();
mgdbPostCB('get_collections_list',{'sid':sid,'name':name} ,function(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){
mongodbDataList(1);
}
},
});
if (select_list.length > 0){
mongodbDataList(1);
}
}
});
}
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();
console.log({'sid':sid,'db':db,'collection':collection,"p":p});
mgdbPostCB('get_data_list',{'sid':sid,'db':db,'collection':collection,"p":p} ,function(rdata){
if (rdata.data.status){
var data = rdata.data.data;
var dlist = data['list'];
// console.log(dlist);
var fields = mongodbGetDataFields(dlist);
// console.log(fields);
var header_field = '';
for (var i =0 ; i<fields.length ; i++) {
header_field += '<th>'+fields[i]+'</th>';
}
header_field += '<th width="200" class="text-right">操作</th>';
$('.mongodb_table thead tr').html(header_field);
var tbody = '';
for (var i = 0; i < dlist.length; i++) {
tbody += '<tr>';
for (var j = 0; j < fields.length; j++) {
var f = fields[j];
if (f in dlist[i]) {
if (f == '_id' ){
tbody += '<td>'+dlist[i]['_id']['$oid']+'</td>';
} else {
tbody += '<td>'+dlist[i][f]+'</td>';
}
} else {
tbody += '<td>undefined</td>';
}
}
tbody += '<td style="width:200px;text-align:right;">\
<a href="javascript:;" data-index="'+i+'" class="btlink edit" title="编辑">编辑</a> | \
<a href="javascript:;" data-index="'+i+'" class="btlink" title="删除">删除</a>\
</td>';
tbody += '</tr>';
}
// console.log($(window).width()-230);
$('#mongodb_table').css('width', $(window).width()+80).parent().css('width', $(window).width()-240).css('overflow','scroll');
$('#mongodb').css('width',$(window).width()-240).css('overflow','hidden');
$('.mongodb_table tbody').html(tbody);
$('.mongodb_list_page').html(data.page);
}
});
}
// ------------------------- mongodb end ---------------------------------
// ------------------------- redis start ---------------------------------