diff --git a/class/core/files_api.py b/class/core/files_api.py index 939d33d8e..332fb9574 100755 --- a/class/core/files_api.py +++ b/class/core/files_api.py @@ -64,8 +64,13 @@ class files_api: filename = request.args.get('filename', '') if not os.path.exists(filename): return '' + + is_attachment = True + if filename.endswith(".svg"): + is_attachment = False + response = make_response(send_from_directory( - os.path.dirname(filename), os.path.basename(filename), as_attachment=True)) + os.path.dirname(filename), os.path.basename(filename), as_attachment=is_attachment)) return response def zipApi(self): diff --git a/plugins/dynamic-tracking/index.py b/plugins/dynamic-tracking/index.py index fe3dc7022..efae44b55 100755 --- a/plugins/dynamic-tracking/index.py +++ b/plugins/dynamic-tracking/index.py @@ -38,7 +38,7 @@ def getInitDTpl(): def getArgs(): - args = sys.argv[3:] + args = sys.argv[2:] tmp = {} args_len = len(args) @@ -104,6 +104,41 @@ def initdUinstall(): return 'ok' +def get_file(args): + dir_path = getServerDir() + '/trace' + + path = dir_path + '/' + args['file'] + '/main.svg' + + if os.path.exists(path): + d = mw.readFile(path) + return mw.returnData(True, 'ok', d) + else: + return mw.returnData(False, '无效目录') + + +def get_file_path(args): + dir_path = getServerDir() + '/trace' + path = dir_path + '/' + args['file'] + '/main.svg' + if os.path.exists(path): + return mw.returnData(True, 'ok', path) + else: + return mw.returnData(False, '无效目录') + + +def dtGetFilePath(): + args = getArgs() + data = checkArgs(args, ['file']) + if not data[0]: + return data[1] + + dir_path = getServerDir() + '/trace' + path = dir_path + '/' + args['file'] + '/main.svg' + if os.path.exists(path): + return mw.returnJson(True, 'ok', path) + else: + return mw.returnJson(False, '无效目录') + + def dtFileList(): dir_path = getServerDir() + '/trace' if not os.path.exists(dir_path): @@ -118,6 +153,7 @@ def dtFileList(): info = {} try: info['name'] = name + info['abs_path'] = dir_path + '/' + name + '/main.svg' except Exception as e: return mw.returnJson(False, str(e)) @@ -153,5 +189,7 @@ if __name__ == "__main__": print(runLog()) elif func == 'file_list': print(dtFileList()) + elif func == 'get_file_path': + print(dtGetFilePath()) else: print('error') diff --git a/plugins/dynamic-tracking/static/html/index.html b/plugins/dynamic-tracking/static/html/index.html index e991d5992..0437f3b60 100644 --- a/plugins/dynamic-tracking/static/html/index.html +++ b/plugins/dynamic-tracking/static/html/index.html @@ -56,11 +56,23 @@ 火焰图 -
-
- -
+ + +
diff --git a/plugins/dynamic-tracking/static/js/dynamic-tracking.js b/plugins/dynamic-tracking/static/js/dynamic-tracking.js index ca5970892..aad427bd4 100755 --- a/plugins/dynamic-tracking/static/js/dynamic-tracking.js +++ b/plugins/dynamic-tracking/static/js/dynamic-tracking.js @@ -8,7 +8,7 @@ function changeDivH(){ $('#flame_graph').css('height',l-80-60).css('width',w-300-200-40); - + $('#flame_graph iframe').css('height',l-80-60-70); // $('.tootls_host_list').css('display','block').css('height',l-192); // $('.tootls_commonly_list').css('display','block').css('height',l-192); } @@ -121,5 +121,30 @@ function dtFileList(){ } $('#file_list .list').html(tli); + + + dtGetFile(alist[0]['name']); + + + $('#file_list li').dblclick(function(){ + var i = $(this).data('index'); + var abs_p = alist[i]['abs_path']; + + var durl = '/files/download?filename='+abs_p; + window.open(durl); + }); + }); +} + +function dtGetFile(file){ + dtPost('get_file_path', '', {file:file}, function(data){ + var rdata = $.parseJSON(data.data); + console.log(rdata); + if (!rdata.status){ + layer.msg(rdata.msg,{icon:0,time:2000,shade: [2, '#000']}); + return; + } + var durl = '/files/download?filename='+rdata.data; + $('#flame_graph .tab-con .tab-block').attr('src',durl); }); } \ No newline at end of file