diff --git a/web/pages/modeltable.html b/web/pages/modeltable.html index 2fee341..b06a1d7 100644 --- a/web/pages/modeltable.html +++ b/web/pages/modeltable.html @@ -33,15 +33,15 @@
{{d.num}}
- {{# if(d.thedaypropsize === "+"){ }} -
较环比
{{d.thedayprop}}%
+ {{# if(d.wowtyle == '-'){ }} +
较环比
{{d.wow}}%
{{# } else { }} -
较环比
{{d.thedayprop}}%
+
较环比
{{d.wow}}%
{{# } }} - {{# if(d.weekpropsize === "+"){ }} -
较同比
{{d.weekprop}}%
+ {{# if(d.chain_ratiotype == "+"){ }} +
较同比
{{d.chain_ratio}}%
{{# } else { }} -
较同比
{{d.weekprop}}%
+
较同比
{{d.chain_ratio}}%
{{# } }}
@@ -76,9 +76,9 @@
- 过去7天 + 过去7天
- 按天 + 按天 {{# if(d.cat === "retention"){ }}
{{# if(d.retentiontype === 0){ }} @@ -206,9 +206,9 @@
- 过去7天 + 过去7天
- 按天 + 按天 {{# if(d.cat === "retention"){ }}
{{# if(d.retentiontype === 0){ }} @@ -229,6 +229,16 @@
+ {{# if(d.wowtyle == '-'){ }} +
较环比
{{d.wow}}%
+ {{# } else { }} +
较环比
{{d.wow}}%
+ {{# } }} + {{# if(d.chain_ratiotype == "+"){ }} +
较同比
{{d.chain_ratio}}%
+ {{# } else { }} +
较同比
{{d.chain_ratio}}%
+ {{# } }}
diff --git a/web/pages/setupbaobiao.html b/web/pages/setupbaobiao.html new file mode 100644 index 0000000..26ea06b --- /dev/null +++ b/web/pages/setupbaobiao.html @@ -0,0 +1,119 @@ + +
+
+

+ 看板报表设置    该设置对共享成员也生效 +

+
+
取消
+
应 用
+
+
+ +
+ +
+
+ + 修改报表设置     修改后报表同时修改 +
+
+
+ 报表名称 +
+ +
+
+
+ 分析时间粒度 +
+ +
+
+ +
+ 报表备注 +
+ +
+
+ +
+ +
+ +
+
+ + 修改图表设置     修改后只修改展示样式 +
+ +
+
+ 时间选框 +
+
+ + 过去30天 + +
+
+
+ +
+ 图表类型 +
+
+
+
+ +
+ +
+ +
+
+
+
+
+ +
+ 视窗大小 +
+
+
+ 小图 +
+
+ 中图 +
+
+ 大图 +
+
+
+
+ +

小图:只展示最核心数据,适用于定位核心数据数值

+

中图:根据图表类型展示,使用于快速浏览图表信息

+

大图:根据图表类型展示,适用于细致观察图表信息

+
+ +
+ +
+ +
+ \ No newline at end of file diff --git a/web/src/x.min.js b/web/src/x.min.js index 7973429..e264b1d 100644 --- a/web/src/x.min.js +++ b/web/src/x.min.js @@ -80,8 +80,32 @@ var X = window.X || { {'title': "UTC-07:00",id:7}, {'title': "UTC±00:00",id:0} ], - 'analysis':{ - + 'analysis':{}, + 'screenlist':{ + 'event':[ + {'title':'按天','id':'P1D'}, + {'title':'按分钟','id':'PT1M'}, + {'title':'每五分钟','id':'PT5M'}, + {'title':'每十分钟','id':'PT10M'}, + {'title':'每十五分钟','id':'PT15M'}, + {'title':'按小时','id':'PT1H'}, + {'title':'按周','id':'P1W'}, + {'title':'按月','id':'P1M'}, + {'title':'合计','id':'total'}, + ], + 'retention':[ + {'title':'当日','id':'1'}, + {'title':'次日','id':'2'}, + {'title':'7日','id':'7'}, + {'title':'14日','id':'14'}, + {'title':'30日','id':'30'} + ], + 'distribution':[ + {'title':'按天','id':'P1D'}, + {'title':'按周','id':'P1W'}, + {'title':'按月','id':'P1M'}, + {'title':'合计','id':'total'} + ] } }, }; @@ -156,6 +180,43 @@ var X = window.X || { }); }; + //下载报表 + X.download=function(url, params,name){ + console.log(url); + postDownload(url, params,name); + }; + + async function postDownload(url, params,name) { + var loginCache = X.loginCache(); + var token = (loginCache? loginCache.token:""); + token = "Bearer "+token; + + var url = ipurl+url+"?game="+ X.DATA.game; + const request = { + async: true, + body: JSON.stringify(params), + method: 'POST', + headers: { + Authorization:token//此处放置请求到的用户token + } + } + + const response = await fetch(url, request); + + // const filename = response.headers.get('content-disposition').split('=')[1]; + const filename = name+'.xlsx'; + const blob = await response.blob(); + + const link = document.createElement('a') + link.download = decodeURIComponent(filename) + link.style.display = 'none' + link.href = URL.createObjectURL(blob) + document.body.appendChild(link) + link.click() + URL.revokeObjectURL(link.href) + document.body.removeChild(link) + }; + X.template = function(url,id,data,callback){ $.get('pages/'+ url + '.html',function(content){ $('#'+id).html(content); @@ -478,13 +539,25 @@ var X = window.X || { var titledata,condata = []; for(let i in data){ if(data[i]['values'].length > 0 ){ - if(data[i]['groups']['length'] == 0){ - titledata= $.extend(true,[],data[0]['date_range']) ; - titledata.unshift('指标','阶段总和'); - condata.push(data[i].values[0]); - condata[i].unshift(data[i]['event_name'],data[i]['sum']); + titledata= $.extend(true,[],data[0]['date_range']); + titledata.unshift('指标','阶段总和'); + if(data[i]['groups']['length'] != 0){ + + for(let j in data[i]['values']){ + var arr; + arr = $.extend(true,[],data[i].values[j]) + arr.unshift(data[i]['event_name'],data[i]['sum'][j]); + condata.push(arr); + } + // condata.push(data[i].values[0]); + // condata[i].unshift(data[i]['event_name'],data[i]['sum']); // console.log(condata); - } + }else { + var arr; + arr = $.extend(true,[],data[i].values[0]) + arr.unshift(data[i]['event_name'],data[i]['sum'][0]); + condata.push(arr) + } }else { layer.msg('查询数据为空'); } @@ -493,7 +566,6 @@ var X = window.X || { titledata:titledata, condata:condata } - callback && callback(dataArr); }; @@ -510,6 +582,7 @@ var X = window.X || { var mean = 0; var sameday = 0; var date; + var wowtype,chain_ratiotype;//判断较环比和较同比的正负 var length = data[0]['date_range'].length - 1; date = data[0]['date_range'][length]; @@ -518,8 +591,6 @@ var X = window.X || { var arr = { name: '', type: 'line', - stack: '总量', - data: data[i]['values'][z] } seriesData.push(arr); @@ -537,6 +608,18 @@ var X = window.X || { } } + if(data[0]['wow'] >= 0){ + wowtype = '+' + }else{ + wowtype = '-' + } + + if(data[0]['chain_ratio'] >= 0){ + chain_ratiotype = '+' + }else{ + chain_ratiotype = '-' + } + console.log(111,data[0]['date_range']); var dataArr = { xAxisData:data[0]['date_range'], legenddata:legenddata, @@ -544,14 +627,20 @@ var X = window.X || { date:date, sum:sum, mean:mean, - sameday: sameday + sameday: sameday, + wowtype:wowtype, + wow: 0, + chain_ratio: 0, + // wow: Math.abs(data[0]['wow']),//环比 + // chain_ratio: Math.abs(data[0]['chain_ratio']),//同比 + chain_ratiotype:chain_ratiotype } callback && callback(dataArr); }; X.eventsmall = function(data,callback){ - var date,num,thedayprop,weekprop,thedaypropsize,weekpropsize; //时间,当天数量,与前天对比,与上个星期对比,与前天对比正负,与上个星期对比正负 + var date,num,wowtype,chain_ratiotype; //时间,当天数量 // console.log(data); // for(let i in data){ // if(data[i]['groups']['length'] == 0){ @@ -562,32 +651,23 @@ var X = window.X || { var length = data[0]['date_range'].length - 1; date = data[0]['date_range'][length]; num = data[0]['values'][0][length]; - thedayprop = num / data[0]['values'][0][length - 1]; - weekprop = num / data[0]['values'][0][length - 8]; - var prop1,prop2; - if(thedayprop >= 1){ - prop1 = parseFloat((thedayprop - 1)*100); - thedaypropsize = '+'; - }else { - prop1 = parseFloat((1 - thedayprop)*100); - thedaypropsize = '-'; + if(data[0]['wow'] >= 0){ + wowtype = '+' + }else{ + wowtype = '-' } - if(weekprop >= 1){ - prop2 = parseFloat((weekprop - 1)*100); - weekpropsize = '+'; - }else { - prop2 = parseFloat((1 - weekprop)*100); - weekpropsize = '-'; + if(data[0]['chain_ratio'] >= 0){ + chain_ratiotype = '+' + }else{ + chain_ratiotype = '-' } - + var dataArr = { date: date, num: num, - thedayprop: prop1.toFixed(2), - thedaypropsize:thedaypropsize, - weekprop: weekprop.toFixed(2), - weekpropsize:weekpropsize + wowtype: wowtype, + chain_ratiotype: chain_ratiotype } callback && callback(dataArr); }; @@ -2409,19 +2489,7 @@ var X = window.X || { }); // 时间粒度 - var timeParticleSizearr = [ - {'title':'按天','id':'P1D'}, - {'title':'按分钟','id':'PT1M'}, - {'title':'每五分钟','id':'PT5M'}, - {'title':'每十分钟','id':'PT10M'}, - {'title':'每十五分钟','id':'PT15M'}, - {'title':'按小时','id':'PT1H'}, - {'title':'按周','id':'P1W'}, - {'title':'按月','id':'P1M'}, - {'title':'合计','id':'total'}, - ]; - - X.laydropdown('.analtsis-timeParticleSize',timeParticleSizearr,function(d){ + X.laydropdown('.analtsis-timeParticleSize',X['DATA']['screenlist']['event'],function(d){ $(".analtsis-timeParticleSize").html(d.title); data['eventView']['timeParticleSize'] = d.id; calculationdata(); @@ -2551,6 +2619,9 @@ var X = window.X || { seriesData[i]['name'] = xAxisData[i]; } } + console.log(xAxisData) + console.log(seriesData) + console.log(d[0]['date_range']); var myChart = echarts.init(document.getElementById('analysis-echarts')); var option = { title: { @@ -2763,8 +2834,6 @@ var X = window.X || { if(d[0].values.length > 0 ){ updata(); tabledata(d); - // stackingdiagram(d); - // tabledata(d); }else { $("#analysis-echarts").empty(); layer.msg("无数据"); @@ -3877,7 +3946,6 @@ var X = window.X || { //更新报表 $(document).off('click','.model-gengx').on('click','.model-gengx',function(){ var id = $(this).attr('data-id'); - // console.log(id); X.api('dashboard/','post',{id:X.DATA['dashboard_id']},function(d){ // return; X.pageLogic['dashboard'].fillmodeldata(d[id]); @@ -3929,7 +3997,6 @@ var X = window.X || { //删除看板 $(document).off('click','.nav-action-bar').on('click','.nav-action-bar',function(e){ e.stopPropagation(); - // console.log('更多操作按钮'); var obj = $(this); var offset = obj.offset(); var offsets = [ offset.top + 10,offset.left]; @@ -3978,121 +4045,9 @@ var X = window.X || { //填充看板数据 //总体逻辑是:根据获取到的看板内容去先渲染放置的框,在根据不同分析模型处理对应的数据进行填充 fillmodeldata:function(d,id,type){// - // console.log(d); X.api("ck/"+d['model']+"_model","post",{report_id:d['report_id']},function(val){ - var eventdata=[]; + var eventdata = X.pageLogic['dashboard'].modeldata(d,val,type); var data; - if(d['model'] == "event"){ - // 事件分析 - if(d['graph_size'] == 'small'){ - X.eventsmall(val,function(data){//表格数据处理 - data['name'] = d['name']; - data['modeltype'] = d['graph_type']; - data['id'] = d['report_id']; - data['modelsize'] = d['graph_size']; - data['cat'] = d['model']; - eventdata.push(data); - }) - }else { - if(d['graph_type'] == 'table'){ - //表格样式 - X.eventtable(val,function(data){//表格数据处理 - data['name'] = d['name']; - data['modeltype'] = d['graph_type']; - data['id'] = d['report_id']; - data['modelsize'] = d['graph_size']; - data['cat'] = d['model']; - eventdata.push(data); - }) - }else if(d['graph_type'] == 'echarts'){ - //图形 - X.eventchart(val,function(data){ - data['name'] = d['name']; - data['modeltype'] = d['graph_type']; - data['id'] = d['report_id']; - data['modelsize'] = d['graph_size']; - data['cat'] = d['model']; - eventdata.push(data); - }) - } - } - - } else if(d['model'] == "retention"){ - //留存分析 - if(type){ - val['retentiontype'] = type; - }else { - val['retentiontype'] = 0 - } - if(d['graph_size'] == 'small'){ - - }else { - if(d['graph_type'] == 'table'){ - X.retentiontable(val,function(data){ - data['name'] = d['name']; - data['modeltype'] = d['graph_type']; - data['id'] = d['report_id']; - data['modelsize'] = d['graph_size']; - data['cat'] = d['model']; - eventdata.push(data); - }) - - }else { - X.retentionchart(val,function(data){ - data['name'] = d['name']; - data['modeltype'] = d['graph_type']; - data['id'] = d['report_id']; - data['modelsize'] = d['graph_size']; - data['cat'] = d['model']; - eventdata.push(data); - }) - } - } - }else if(d['model'] == 'ltv'){ - //ltv模型 - if(d['graph_type'] == 'table'){ - X.ltvtable(val,function(data){ - data['name'] = d['name']; - data['modeltype'] = d['graph_type']; - data['id'] = d['report_id']; - data['modelsize'] = d['graph_size']; - data['cat'] = d['model']; - eventdata.push(data); - }) - }else { - X.ltvtable(val,function(data){ - data['name'] = d['name']; - data['modeltype'] = d['graph_type']; - data['id'] = d['report_id']; - data['modelsize'] = d['graph_size']; - data['cat'] = d['model']; - eventdata.push(data); - }) - } - }else if(d['model'] == 'user_property'){ - // 属性分析 - if(d['graph_type'] == 'table'){ - X.userpropertytable(val,function(data){ - data['name'] = d['name']; - data['modeltype'] = d['graph_type']; - data['id'] = d['report_id']; - data['modelsize'] = d['graph_size']; - data['cat'] = d['model']; - eventdata.push(data); - }) - }else { - X.userpropertychart(val,function(data){ - data['name'] = d['name']; - data['modeltype'] = d['graph_type']; - data['id'] = d['report_id']; - data['modelsize'] = d['graph_size']; - data['cat'] = d['model']; - eventdata.push(data); - }) - } - - - } if(eventdata.length > 0){ for(var z in eventdata){ if(id){ @@ -4109,17 +4064,125 @@ var X = window.X || { } } - // $('.layui-row').dad({ - // draggable: '.layui-card' - // }); - // $('.layui-row').dad({ - // draggable:'table' - // }); - - }) }, + modeldata:function(d,val,type){ + var eventdata = []; + if(d['model'] == "event"){ + // 事件分析 + if(d['graph_size'] == 'small'){ + X.eventsmall(val,function(data){//表格数据处理 + data['name'] = d['name']; + data['modeltype'] = d['graph_type']; + data['id'] = d['report_id']; + data['modelsize'] = d['graph_size']; + data['cat'] = d['model']; + data['wow'] = Math.abs(val[0]['wow']); + data['chain_ratio'] = Math.abs(val[0]['chain_ratio']); + eventdata.push(data); + }) + }else { + if(d['graph_type'] == 'table'){ + //表格样式 + X.eventtable(val,function(data){//表格数据处理 + data['name'] = d['name']; + data['modeltype'] = d['graph_type']; + data['id'] = d['report_id']; + data['modelsize'] = d['graph_size']; + data['cat'] = d['model']; + eventdata.push(data); + }) + }else if(d['graph_type'] == 'echarts'){ + //图形 + X.eventchart(val,function(data){ + data['name'] = d['name']; + data['modeltype'] = d['graph_type']; + data['id'] = d['report_id']; + data['modelsize'] = d['graph_size']; + data['cat'] = d['model']; + eventdata.push(data); + }) + } + } + + } else if(d['model'] == "retention"){ + //留存分析 + if(type){ + val['retentiontype'] = type; + }else { + val['retentiontype'] = 0 + } + if(d['graph_size'] == 'small'){ + + }else { + if(d['graph_type'] == 'table'){ + X.retentiontable(val,function(data){ + data['name'] = d['name']; + data['modeltype'] = d['graph_type']; + data['id'] = d['report_id']; + data['modelsize'] = d['graph_size']; + data['cat'] = d['model']; + eventdata.push(data); + }) + + }else { + X.retentionchart(val,function(data){ + data['name'] = d['name']; + data['modeltype'] = d['graph_type']; + data['id'] = d['report_id']; + data['modelsize'] = d['graph_size']; + data['cat'] = d['model']; + eventdata.push(data); + }) + } + } + }else if(d['model'] == 'ltv'){ + //ltv模型 + if(d['graph_type'] == 'table'){ + X.ltvtable(val,function(data){ + data['name'] = d['name']; + data['modeltype'] = d['graph_type']; + data['id'] = d['report_id']; + data['modelsize'] = d['graph_size']; + data['cat'] = d['model']; + eventdata.push(data); + }) + }else { + X.ltvtable(val,function(data){ + data['name'] = d['name']; + data['modeltype'] = d['graph_type']; + data['id'] = d['report_id']; + data['modelsize'] = d['graph_size']; + data['cat'] = d['model']; + eventdata.push(data); + }) + } + }else if(d['model'] == 'user_property'){ + // 属性分析 + if(d['graph_type'] == 'table'){ + X.userpropertytable(val,function(data){ + data['name'] = d['name']; + data['modeltype'] = d['graph_type']; + data['id'] = d['report_id']; + data['modelsize'] = d['graph_size']; + data['cat'] = d['model']; + eventdata.push(data); + }) + }else { + X.userpropertychart(val,function(data){ + data['name'] = d['name']; + data['modeltype'] = d['graph_type']; + data['id'] = d['report_id']; + data['modelsize'] = d['graph_size']; + data['cat'] = d['model']; + eventdata.push(data); + }) + } + } + return eventdata; + }, + //画统计图和添加移入移出事件 morefeatures:function(eventdata){ @@ -4142,7 +4205,6 @@ var X = window.X || { name:name } X.api('dashboard/edit_show_report','post',{dashboard_id:X.DATA.dashboard_id,config:data},function(d){ - // console.log(d); X.api('dashboard/','post',{id:X.DATA['dashboard_id']},function(val){ for(let i in val){ if(val[i]['report_id'] == id){ @@ -4161,8 +4223,7 @@ var X = window.X || { ] if(eventdata.cat == 'retention'){ X.laydropdown("#retention"+eventdata.id,retentionlist,function(d){ - console.log(d.id); - console.log(eventdata); + var retentiontype = d.id; var modelid = "retention"+eventdata.id; X.api('dashboard/','post',{id:X.DATA['dashboard_id']},function(val){ @@ -4178,7 +4239,6 @@ var X = window.X || { //更多按钮配置下拉框 X.laydropdown(".model-gengduo",X['DATA']['gengduolist'],function(d){ - console.log(eventdata); if(d.id == 'shezhi'){ var data = { id : eventdata.id, @@ -4186,10 +4246,10 @@ var X = window.X || { modeltype : eventdata.modeltype } X.parametersopen(data,'setupbaobiao',"auto",function(d){ - + X.pageLogic['dashboard'].gettabledata(); }) }else if(d.id == 'export'){ - layer.msg('暂未开放功能'); + X.download('ck/event_model_export',{report_id:eventdata.id},eventdata.name); }else { layer.confirm('确认移除['+ eventdata.name + ']', { @@ -4203,11 +4263,46 @@ var X = window.X || { X.pageLogic['dashboard'].gettabledata(); }); }); - - - } - }) + }); + + //设置时间 + X.daterender(".model-times",function(start, end, label){ + // console.log(eventdata); + // console.log('times'+eventdata.id); + var id = 'times'+eventdata.id; + $("#"+id).html('111'); + }); + + X.laydropdown(".model-screenlist",X['DATA']['screenlist'][eventdata.cat],function(d){ + var modelid = eventdata['cat']+eventdata.id; + var reportid = []; + reportid.push(eventdata.id); + X.api('report/read_report','post',{project_id:X.DATA['projectid'],report_id:reportid},function(val){ + var query = { + eventView:val[0]['query']['eventView'], + events:val[0]['query']['events'], + }; + query['eventView']['timeParticleSize'] = d.id; + X.api("ck/"+ eventdata.cat +"_model","post",query,function(val){ + var bbsetdata = { + graph_size:eventdata['modelsize'], + graph_type:eventdata['modeltype'], + model:eventdata['cat'], + name:eventdata['name'], + report_id:eventdata['id'], + } + + var modeldata = X.pageLogic['dashboard'].modeldata(bbsetdata,val); + // console.log(modeldata); + //渲染模板和数据 + X.template("modeltable",'model'+modeldata[0]['id'],modeldata[0],function(){ + X.pageLogic['dashboard'].morefeatures(modeldata); + }); + }) + }) + + }); if(eventdata['modeltype'] == 'echarts' && eventdata['modelsize'] != 'small' ){ var myChart = echarts.init(document.getElementById(eventdata['id'])); @@ -4253,9 +4348,6 @@ var X = window.X || { }; }else{ var option = { - title: { - text: '' - }, color: X.DATA.echartscolor, tooltip: { trigger: 'axis', @@ -4280,7 +4372,7 @@ var X = window.X || { xAxis: [ { type: 'category', - boundaryGap: false, + axisTick: {show: false}, data: eventdata['xAxisData'] } ], @@ -4294,7 +4386,7 @@ var X = window.X || { } myChart.setOption(option,true); - } + }; }, @@ -4675,7 +4767,7 @@ var X = window.X || { "comparator_name":d[0]['category'][0]['category'][0]['title'],//选择符号中文显示 "comparator":d[0]['category'][0]['category'][0]['id'],//符号id "data_type":d[0]['category'][0]['data_type'], - "ftv":'',//条件 + "ftv":[],//条件 "strftv":'',//字符串显示条件 "tableType": d[0]['id'] } //筛选数据 @@ -4775,13 +4867,7 @@ var X = window.X || { }) // 时间粒度 - var timeParticleSizearr = [ - {'title':'按天','id':'P1D'}, - {'title':'按周','id':'P1W'}, - {'title':'按月','id':'P1M'}, - {'title':'合计','id':'total'} - ] - X.laydropdown('.analtsis-timeParticleSize',timeParticleSizearr,function(d){ + X.laydropdown('.analtsis-timeParticleSize',X['DATA']['screenlist']['distribution'],function(d){ console.log(d); $(".analtsis-timeParticleSize").html(d.title); data['eventView']['timeParticleSize'] = d.id; @@ -7069,7 +7155,7 @@ var X = window.X || { this.parms = parms; this.callback = parms.callback; var data = parms; - + console.log(data); X.laytpldata("#kanban-model-modify-table-dot",data,"model"+data.id,function(html){ $("#model"+data.id).html(html); @@ -8270,14 +8356,7 @@ var X = window.X || { }); // 时间粒度 - var timeParticleSizearr = [ - {'title':'当日','id':'1'}, - {'title':'次日','id':'2'}, - {'title':'7日','id':'7'}, - {'title':'14日','id':'14'}, - {'title':'30日','id':'30'}, - ]; - X.laydropdown('.analtsis-timeParticleSize',timeParticleSizearr,function(d){ + X.laydropdown('.analtsis-timeParticleSize',X['DATA']['screenlist']['retention'],function(d){ // console.log(d); $(".analtsis-timeParticleSize").html(d.title); data['eventView']['unitNum'] = parseInt(d.id); @@ -8365,6 +8444,7 @@ var X = window.X || { else if(title == '每日留存'){ $(".table-div-box").hide(); $(".analysis-echarts").show(); retaineddayRetained(d) } }; + //数据报表渲染 function retainedtable(d){ var nname,pname if(retentiontype == 0) { @@ -8507,7 +8587,7 @@ var X = window.X || { }; myChart.setOption(option,true); }; - + // 第N日留存 function retainednRetained(d){ var nname,pname if(retentiontype == 0) { @@ -9750,14 +9830,15 @@ var X = window.X || { init : function(parms){ var me = this; this.parms = parms; + this.callback = parms.callback; var data = parms.extData; var report_id = []; - console.log(data); report_id.push(data.id); + var postdata;//上传数据 X.api('report/read_report','post',{project_id:X.DATA.projectid,report_id:report_id},function(d){ - console.log(d); + postdata = d; $('.setupbaobiao-title').val(d[0]['name']); - $('.setupbaobiao-textarea').html(d[0]['desc']); + $('.setupbaobiao-textarea').val(d[0]['desc']); // 初始化时间 var endTime = d[0]['query']['eventView']['endTime']; var startTime = d[0]['query']['eventView']['startTime']; @@ -9775,15 +9856,34 @@ var X = window.X || { }else{//大图 $("#setupbaobiao-large").prop("checked",true); } + X.laytpldata("#setupbaobiao-select-dot",X['DATA']['screenlist'][d[0]['cat']],".setupbaobiao-select"); }); X.daterender(".setupbaobiao-rli-box2",function(start, end, label){ var startTime = start.format('YYYY-MM-DD')+ " "+ "00:00:00"; var endTime = end.format('YYYY-MM-DD')+ " "+ "23:59:59"; + postdata[0]['query']['eventView']['startTime'] = startTime; + postdata[0]['query']['eventView']['endTime'] = endTime; + $(".setupbaobiao-time").html(startTime +' - '+ endTime); + + var sameday = Date.parse(new Date()) / 1000; //当天时间戳 + + var enddate = new Date(end.format('YYYY-MM-DD')); + var endmonth = Date.parse(enddate)/1000; + + var startdate = new Date(start.format('YYYY-MM-DD')); + var startmonth = Date.parse(startdate)/1000; + postdata[0]['query']['e_days'] = parseInt((sameday - endmonth)/86400); + postdata[0]['query']['s_days'] = parseInt((sameday - startmonth)/86400); + console.log(startTime); console.log(endTime); }); + // 分析时间粒度 + $(document).off('click','.setupbaobiao-select').on('change','.setupbaobiao-select',function(){ + postdata[0]['query']['eventView']['timeParticleSize'] = $(this).val(); + }); $(document).off('click','.shape___2nUUi').on('click','.shape___2nUUi',function(){ $('.shape___2nUUi').removeClass('icon___XxbtJ'); @@ -9795,7 +9895,36 @@ var X = window.X || { }); $(document).off('click','.setupbaobiao-yy').on('click','.setupbaobiao-yy',function(){ - + var title = $('.setupbaobiao-title').val(); + var desc = $(".setupbaobiao-textarea").val(); + var modeltype = $(".icon___XxbtJ").attr('data-type'); + var modelsize = $('input:radio[name="modelsize"]:checked').val() + var arr = { + _id:X.DATA.dashboard_id, + report:{ + name: title, + report_id:postdata[0]['_id'], + desc:desc, + model:postdata[0]['cat'], + graph_type:modeltype, + graph_size:modelsize + } + } + console.log(arr); + X.api('dashboard/edit_report','post',arr,function(d){ + console.log(d); + var reportedit = { + name: title, + desc:desc, + query:postdata[0]['query'], + report_id:postdata[0]['_id'] + } + X.api('report/edit','post',reportedit,function(d){ + me.callback && me.callback(d); + layer.closeAll(); + }) + }) + }); } diff --git a/web/srczip/common.js b/web/srczip/common.js index 8d258fa..3729a84 100644 --- a/web/srczip/common.js +++ b/web/srczip/common.js @@ -79,8 +79,32 @@ var X = window.X || { {'title': "UTC-07:00",id:7}, {'title': "UTC±00:00",id:0} ], - 'analysis':{ - + 'analysis':{}, + 'screenlist':{ + 'event':[ + {'title':'按天','id':'P1D'}, + {'title':'按分钟','id':'PT1M'}, + {'title':'每五分钟','id':'PT5M'}, + {'title':'每十分钟','id':'PT10M'}, + {'title':'每十五分钟','id':'PT15M'}, + {'title':'按小时','id':'PT1H'}, + {'title':'按周','id':'P1W'}, + {'title':'按月','id':'P1M'}, + {'title':'合计','id':'total'}, + ], + 'retention':[ + {'title':'当日','id':'1'}, + {'title':'次日','id':'2'}, + {'title':'7日','id':'7'}, + {'title':'14日','id':'14'}, + {'title':'30日','id':'30'} + ], + 'distribution':[ + {'title':'按天','id':'P1D'}, + {'title':'按周','id':'P1W'}, + {'title':'按月','id':'P1M'}, + {'title':'合计','id':'total'} + ] } }, }; @@ -155,6 +179,43 @@ var X = window.X || { }); }; + //下载报表 + X.download=function(url, params,name){ + console.log(url); + postDownload(url, params,name); + }; + + async function postDownload(url, params,name) { + var loginCache = X.loginCache(); + var token = (loginCache? loginCache.token:""); + token = "Bearer "+token; + + var url = ipurl+url+"?game="+ X.DATA.game; + const request = { + async: true, + body: JSON.stringify(params), + method: 'POST', + headers: { + Authorization:token//此处放置请求到的用户token + } + } + + const response = await fetch(url, request); + + // const filename = response.headers.get('content-disposition').split('=')[1]; + const filename = name+'.xlsx'; + const blob = await response.blob(); + + const link = document.createElement('a') + link.download = decodeURIComponent(filename) + link.style.display = 'none' + link.href = URL.createObjectURL(blob) + document.body.appendChild(link) + link.click() + URL.revokeObjectURL(link.href) + document.body.removeChild(link) + }; + X.template = function(url,id,data,callback){ $.get('pages/'+ url + '.html',function(content){ $('#'+id).html(content); @@ -477,13 +538,25 @@ var X = window.X || { var titledata,condata = []; for(let i in data){ if(data[i]['values'].length > 0 ){ - if(data[i]['groups']['length'] == 0){ - titledata= $.extend(true,[],data[0]['date_range']) ; - titledata.unshift('指标','阶段总和'); - condata.push(data[i].values[0]); - condata[i].unshift(data[i]['event_name'],data[i]['sum']); + titledata= $.extend(true,[],data[0]['date_range']); + titledata.unshift('指标','阶段总和'); + if(data[i]['groups']['length'] != 0){ + + for(let j in data[i]['values']){ + var arr; + arr = $.extend(true,[],data[i].values[j]) + arr.unshift(data[i]['event_name'],data[i]['sum'][j]); + condata.push(arr); + } + // condata.push(data[i].values[0]); + // condata[i].unshift(data[i]['event_name'],data[i]['sum']); // console.log(condata); - } + }else { + var arr; + arr = $.extend(true,[],data[i].values[0]) + arr.unshift(data[i]['event_name'],data[i]['sum'][0]); + condata.push(arr) + } }else { layer.msg('查询数据为空'); } @@ -492,7 +565,6 @@ var X = window.X || { titledata:titledata, condata:condata } - callback && callback(dataArr); }; @@ -509,6 +581,7 @@ var X = window.X || { var mean = 0; var sameday = 0; var date; + var wowtype,chain_ratiotype;//判断较环比和较同比的正负 var length = data[0]['date_range'].length - 1; date = data[0]['date_range'][length]; @@ -517,8 +590,6 @@ var X = window.X || { var arr = { name: '', type: 'line', - stack: '总量', - data: data[i]['values'][z] } seriesData.push(arr); @@ -536,6 +607,18 @@ var X = window.X || { } } + if(data[0]['wow'] >= 0){ + wowtype = '+' + }else{ + wowtype = '-' + } + + if(data[0]['chain_ratio'] >= 0){ + chain_ratiotype = '+' + }else{ + chain_ratiotype = '-' + } + console.log(111,data[0]['date_range']); var dataArr = { xAxisData:data[0]['date_range'], legenddata:legenddata, @@ -543,14 +626,20 @@ var X = window.X || { date:date, sum:sum, mean:mean, - sameday: sameday + sameday: sameday, + wowtype:wowtype, + wow: 0, + chain_ratio: 0, + // wow: Math.abs(data[0]['wow']),//环比 + // chain_ratio: Math.abs(data[0]['chain_ratio']),//同比 + chain_ratiotype:chain_ratiotype } callback && callback(dataArr); }; X.eventsmall = function(data,callback){ - var date,num,thedayprop,weekprop,thedaypropsize,weekpropsize; //时间,当天数量,与前天对比,与上个星期对比,与前天对比正负,与上个星期对比正负 + var date,num,wowtype,chain_ratiotype; //时间,当天数量 // console.log(data); // for(let i in data){ // if(data[i]['groups']['length'] == 0){ @@ -561,32 +650,23 @@ var X = window.X || { var length = data[0]['date_range'].length - 1; date = data[0]['date_range'][length]; num = data[0]['values'][0][length]; - thedayprop = num / data[0]['values'][0][length - 1]; - weekprop = num / data[0]['values'][0][length - 8]; - var prop1,prop2; - if(thedayprop >= 1){ - prop1 = parseFloat((thedayprop - 1)*100); - thedaypropsize = '+'; - }else { - prop1 = parseFloat((1 - thedayprop)*100); - thedaypropsize = '-'; + if(data[0]['wow'] >= 0){ + wowtype = '+' + }else{ + wowtype = '-' } - if(weekprop >= 1){ - prop2 = parseFloat((weekprop - 1)*100); - weekpropsize = '+'; - }else { - prop2 = parseFloat((1 - weekprop)*100); - weekpropsize = '-'; + if(data[0]['chain_ratio'] >= 0){ + chain_ratiotype = '+' + }else{ + chain_ratiotype = '-' } - + var dataArr = { date: date, num: num, - thedayprop: prop1.toFixed(2), - thedaypropsize:thedaypropsize, - weekprop: weekprop.toFixed(2), - weekpropsize:weekpropsize + wowtype: wowtype, + chain_ratiotype: chain_ratiotype } callback && callback(dataArr); }; diff --git a/web/srczip/logic/analysis.js b/web/srczip/logic/analysis.js index 75faf71..7a585e7 100644 --- a/web/srczip/logic/analysis.js +++ b/web/srczip/logic/analysis.js @@ -734,19 +734,7 @@ }); // 时间粒度 - var timeParticleSizearr = [ - {'title':'按天','id':'P1D'}, - {'title':'按分钟','id':'PT1M'}, - {'title':'每五分钟','id':'PT5M'}, - {'title':'每十分钟','id':'PT10M'}, - {'title':'每十五分钟','id':'PT15M'}, - {'title':'按小时','id':'PT1H'}, - {'title':'按周','id':'P1W'}, - {'title':'按月','id':'P1M'}, - {'title':'合计','id':'total'}, - ]; - - X.laydropdown('.analtsis-timeParticleSize',timeParticleSizearr,function(d){ + X.laydropdown('.analtsis-timeParticleSize',X['DATA']['screenlist']['event'],function(d){ $(".analtsis-timeParticleSize").html(d.title); data['eventView']['timeParticleSize'] = d.id; calculationdata(); @@ -876,6 +864,9 @@ seriesData[i]['name'] = xAxisData[i]; } } + console.log(xAxisData) + console.log(seriesData) + console.log(d[0]['date_range']); var myChart = echarts.init(document.getElementById('analysis-echarts')); var option = { title: { @@ -1088,8 +1079,6 @@ if(d[0].values.length > 0 ){ updata(); tabledata(d); - // stackingdiagram(d); - // tabledata(d); }else { $("#analysis-echarts").empty(); layer.msg("无数据"); diff --git a/web/srczip/logic/dashboard.js b/web/srczip/logic/dashboard.js index b8c4ca0..eb9c50c 100644 --- a/web/srczip/logic/dashboard.js +++ b/web/srczip/logic/dashboard.js @@ -243,7 +243,6 @@ //更新报表 $(document).off('click','.model-gengx').on('click','.model-gengx',function(){ var id = $(this).attr('data-id'); - // console.log(id); X.api('dashboard/','post',{id:X.DATA['dashboard_id']},function(d){ // return; X.pageLogic['dashboard'].fillmodeldata(d[id]); @@ -295,7 +294,6 @@ //删除看板 $(document).off('click','.nav-action-bar').on('click','.nav-action-bar',function(e){ e.stopPropagation(); - // console.log('更多操作按钮'); var obj = $(this); var offset = obj.offset(); var offsets = [ offset.top + 10,offset.left]; @@ -344,121 +342,9 @@ //填充看板数据 //总体逻辑是:根据获取到的看板内容去先渲染放置的框,在根据不同分析模型处理对应的数据进行填充 fillmodeldata:function(d,id,type){// - // console.log(d); X.api("ck/"+d['model']+"_model","post",{report_id:d['report_id']},function(val){ - var eventdata=[]; + var eventdata = X.pageLogic['dashboard'].modeldata(d,val,type); var data; - if(d['model'] == "event"){ - // 事件分析 - if(d['graph_size'] == 'small'){ - X.eventsmall(val,function(data){//表格数据处理 - data['name'] = d['name']; - data['modeltype'] = d['graph_type']; - data['id'] = d['report_id']; - data['modelsize'] = d['graph_size']; - data['cat'] = d['model']; - eventdata.push(data); - }) - }else { - if(d['graph_type'] == 'table'){ - //表格样式 - X.eventtable(val,function(data){//表格数据处理 - data['name'] = d['name']; - data['modeltype'] = d['graph_type']; - data['id'] = d['report_id']; - data['modelsize'] = d['graph_size']; - data['cat'] = d['model']; - eventdata.push(data); - }) - }else if(d['graph_type'] == 'echarts'){ - //图形 - X.eventchart(val,function(data){ - data['name'] = d['name']; - data['modeltype'] = d['graph_type']; - data['id'] = d['report_id']; - data['modelsize'] = d['graph_size']; - data['cat'] = d['model']; - eventdata.push(data); - }) - } - } - - } else if(d['model'] == "retention"){ - //留存分析 - if(type){ - val['retentiontype'] = type; - }else { - val['retentiontype'] = 0 - } - if(d['graph_size'] == 'small'){ - - }else { - if(d['graph_type'] == 'table'){ - X.retentiontable(val,function(data){ - data['name'] = d['name']; - data['modeltype'] = d['graph_type']; - data['id'] = d['report_id']; - data['modelsize'] = d['graph_size']; - data['cat'] = d['model']; - eventdata.push(data); - }) - - }else { - X.retentionchart(val,function(data){ - data['name'] = d['name']; - data['modeltype'] = d['graph_type']; - data['id'] = d['report_id']; - data['modelsize'] = d['graph_size']; - data['cat'] = d['model']; - eventdata.push(data); - }) - } - } - }else if(d['model'] == 'ltv'){ - //ltv模型 - if(d['graph_type'] == 'table'){ - X.ltvtable(val,function(data){ - data['name'] = d['name']; - data['modeltype'] = d['graph_type']; - data['id'] = d['report_id']; - data['modelsize'] = d['graph_size']; - data['cat'] = d['model']; - eventdata.push(data); - }) - }else { - X.ltvtable(val,function(data){ - data['name'] = d['name']; - data['modeltype'] = d['graph_type']; - data['id'] = d['report_id']; - data['modelsize'] = d['graph_size']; - data['cat'] = d['model']; - eventdata.push(data); - }) - } - }else if(d['model'] == 'user_property'){ - // 属性分析 - if(d['graph_type'] == 'table'){ - X.userpropertytable(val,function(data){ - data['name'] = d['name']; - data['modeltype'] = d['graph_type']; - data['id'] = d['report_id']; - data['modelsize'] = d['graph_size']; - data['cat'] = d['model']; - eventdata.push(data); - }) - }else { - X.userpropertychart(val,function(data){ - data['name'] = d['name']; - data['modeltype'] = d['graph_type']; - data['id'] = d['report_id']; - data['modelsize'] = d['graph_size']; - data['cat'] = d['model']; - eventdata.push(data); - }) - } - - - } if(eventdata.length > 0){ for(var z in eventdata){ if(id){ @@ -475,17 +361,125 @@ } } - // $('.layui-row').dad({ - // draggable: '.layui-card' - // }); - // $('.layui-row').dad({ - // draggable:'table' - // }); - - }) }, + modeldata:function(d,val,type){ + var eventdata = []; + if(d['model'] == "event"){ + // 事件分析 + if(d['graph_size'] == 'small'){ + X.eventsmall(val,function(data){//表格数据处理 + data['name'] = d['name']; + data['modeltype'] = d['graph_type']; + data['id'] = d['report_id']; + data['modelsize'] = d['graph_size']; + data['cat'] = d['model']; + data['wow'] = Math.abs(val[0]['wow']); + data['chain_ratio'] = Math.abs(val[0]['chain_ratio']); + eventdata.push(data); + }) + }else { + if(d['graph_type'] == 'table'){ + //表格样式 + X.eventtable(val,function(data){//表格数据处理 + data['name'] = d['name']; + data['modeltype'] = d['graph_type']; + data['id'] = d['report_id']; + data['modelsize'] = d['graph_size']; + data['cat'] = d['model']; + eventdata.push(data); + }) + }else if(d['graph_type'] == 'echarts'){ + //图形 + X.eventchart(val,function(data){ + data['name'] = d['name']; + data['modeltype'] = d['graph_type']; + data['id'] = d['report_id']; + data['modelsize'] = d['graph_size']; + data['cat'] = d['model']; + eventdata.push(data); + }) + } + } + + } else if(d['model'] == "retention"){ + //留存分析 + if(type){ + val['retentiontype'] = type; + }else { + val['retentiontype'] = 0 + } + if(d['graph_size'] == 'small'){ + + }else { + if(d['graph_type'] == 'table'){ + X.retentiontable(val,function(data){ + data['name'] = d['name']; + data['modeltype'] = d['graph_type']; + data['id'] = d['report_id']; + data['modelsize'] = d['graph_size']; + data['cat'] = d['model']; + eventdata.push(data); + }) + + }else { + X.retentionchart(val,function(data){ + data['name'] = d['name']; + data['modeltype'] = d['graph_type']; + data['id'] = d['report_id']; + data['modelsize'] = d['graph_size']; + data['cat'] = d['model']; + eventdata.push(data); + }) + } + } + }else if(d['model'] == 'ltv'){ + //ltv模型 + if(d['graph_type'] == 'table'){ + X.ltvtable(val,function(data){ + data['name'] = d['name']; + data['modeltype'] = d['graph_type']; + data['id'] = d['report_id']; + data['modelsize'] = d['graph_size']; + data['cat'] = d['model']; + eventdata.push(data); + }) + }else { + X.ltvtable(val,function(data){ + data['name'] = d['name']; + data['modeltype'] = d['graph_type']; + data['id'] = d['report_id']; + data['modelsize'] = d['graph_size']; + data['cat'] = d['model']; + eventdata.push(data); + }) + } + }else if(d['model'] == 'user_property'){ + // 属性分析 + if(d['graph_type'] == 'table'){ + X.userpropertytable(val,function(data){ + data['name'] = d['name']; + data['modeltype'] = d['graph_type']; + data['id'] = d['report_id']; + data['modelsize'] = d['graph_size']; + data['cat'] = d['model']; + eventdata.push(data); + }) + }else { + X.userpropertychart(val,function(data){ + data['name'] = d['name']; + data['modeltype'] = d['graph_type']; + data['id'] = d['report_id']; + data['modelsize'] = d['graph_size']; + data['cat'] = d['model']; + eventdata.push(data); + }) + } + } + return eventdata; + }, + //画统计图和添加移入移出事件 morefeatures:function(eventdata){ @@ -508,7 +502,6 @@ name:name } X.api('dashboard/edit_show_report','post',{dashboard_id:X.DATA.dashboard_id,config:data},function(d){ - // console.log(d); X.api('dashboard/','post',{id:X.DATA['dashboard_id']},function(val){ for(let i in val){ if(val[i]['report_id'] == id){ @@ -527,8 +520,7 @@ ] if(eventdata.cat == 'retention'){ X.laydropdown("#retention"+eventdata.id,retentionlist,function(d){ - console.log(d.id); - console.log(eventdata); + var retentiontype = d.id; var modelid = "retention"+eventdata.id; X.api('dashboard/','post',{id:X.DATA['dashboard_id']},function(val){ @@ -544,7 +536,6 @@ //更多按钮配置下拉框 X.laydropdown(".model-gengduo",X['DATA']['gengduolist'],function(d){ - console.log(eventdata); if(d.id == 'shezhi'){ var data = { id : eventdata.id, @@ -552,10 +543,10 @@ modeltype : eventdata.modeltype } X.parametersopen(data,'setupbaobiao',"auto",function(d){ - + X.pageLogic['dashboard'].gettabledata(); }) }else if(d.id == 'export'){ - layer.msg('暂未开放功能'); + X.download('ck/event_model_export',{report_id:eventdata.id},eventdata.name); }else { layer.confirm('确认移除['+ eventdata.name + ']', { @@ -569,11 +560,46 @@ X.pageLogic['dashboard'].gettabledata(); }); }); - - - } - }) + }); + + //设置时间 + X.daterender(".model-times",function(start, end, label){ + // console.log(eventdata); + // console.log('times'+eventdata.id); + var id = 'times'+eventdata.id; + $("#"+id).html('111'); + }); + + X.laydropdown(".model-screenlist",X['DATA']['screenlist'][eventdata.cat],function(d){ + var modelid = eventdata['cat']+eventdata.id; + var reportid = []; + reportid.push(eventdata.id); + X.api('report/read_report','post',{project_id:X.DATA['projectid'],report_id:reportid},function(val){ + var query = { + eventView:val[0]['query']['eventView'], + events:val[0]['query']['events'], + }; + query['eventView']['timeParticleSize'] = d.id; + X.api("ck/"+ eventdata.cat +"_model","post",query,function(val){ + var bbsetdata = { + graph_size:eventdata['modelsize'], + graph_type:eventdata['modeltype'], + model:eventdata['cat'], + name:eventdata['name'], + report_id:eventdata['id'], + } + + var modeldata = X.pageLogic['dashboard'].modeldata(bbsetdata,val); + // console.log(modeldata); + //渲染模板和数据 + X.template("modeltable",'model'+modeldata[0]['id'],modeldata[0],function(){ + X.pageLogic['dashboard'].morefeatures(modeldata); + }); + }) + }) + + }); if(eventdata['modeltype'] == 'echarts' && eventdata['modelsize'] != 'small' ){ var myChart = echarts.init(document.getElementById(eventdata['id'])); @@ -619,9 +645,6 @@ }; }else{ var option = { - title: { - text: '' - }, color: X.DATA.echartscolor, tooltip: { trigger: 'axis', @@ -646,7 +669,7 @@ xAxis: [ { type: 'category', - boundaryGap: false, + axisTick: {show: false}, data: eventdata['xAxisData'] } ], @@ -660,7 +683,7 @@ } myChart.setOption(option,true); - } + }; }, diff --git a/web/srczip/logic/distribution.js b/web/srczip/logic/distribution.js index 8108c44..c04e07a 100644 --- a/web/srczip/logic/distribution.js +++ b/web/srczip/logic/distribution.js @@ -215,7 +215,7 @@ "comparator_name":d[0]['category'][0]['category'][0]['title'],//选择符号中文显示 "comparator":d[0]['category'][0]['category'][0]['id'],//符号id "data_type":d[0]['category'][0]['data_type'], - "ftv":'',//条件 + "ftv":[],//条件 "strftv":'',//字符串显示条件 "tableType": d[0]['id'] } //筛选数据 @@ -315,13 +315,7 @@ }) // 时间粒度 - var timeParticleSizearr = [ - {'title':'按天','id':'P1D'}, - {'title':'按周','id':'P1W'}, - {'title':'按月','id':'P1M'}, - {'title':'合计','id':'total'} - ] - X.laydropdown('.analtsis-timeParticleSize',timeParticleSizearr,function(d){ + X.laydropdown('.analtsis-timeParticleSize',X['DATA']['screenlist']['distribution'],function(d){ console.log(d); $(".analtsis-timeParticleSize").html(d.title); data['eventView']['timeParticleSize'] = d.id; diff --git a/web/srczip/logic/modeltable.js b/web/srczip/logic/modeltable.js index 9029863..c093290 100644 --- a/web/srczip/logic/modeltable.js +++ b/web/srczip/logic/modeltable.js @@ -5,7 +5,7 @@ this.parms = parms; this.callback = parms.callback; var data = parms; - + console.log(data); X.laytpldata("#kanban-model-modify-table-dot",data,"model"+data.id,function(html){ $("#model"+data.id).html(html); diff --git a/web/srczip/logic/retained.js b/web/srczip/logic/retained.js index 350fd7b..c883a94 100644 --- a/web/srczip/logic/retained.js +++ b/web/srczip/logic/retained.js @@ -475,14 +475,7 @@ }); // 时间粒度 - var timeParticleSizearr = [ - {'title':'当日','id':'1'}, - {'title':'次日','id':'2'}, - {'title':'7日','id':'7'}, - {'title':'14日','id':'14'}, - {'title':'30日','id':'30'}, - ]; - X.laydropdown('.analtsis-timeParticleSize',timeParticleSizearr,function(d){ + X.laydropdown('.analtsis-timeParticleSize',X['DATA']['screenlist']['retention'],function(d){ // console.log(d); $(".analtsis-timeParticleSize").html(d.title); data['eventView']['unitNum'] = parseInt(d.id); @@ -570,6 +563,7 @@ else if(title == '每日留存'){ $(".table-div-box").hide(); $(".analysis-echarts").show(); retaineddayRetained(d) } }; + //数据报表渲染 function retainedtable(d){ var nname,pname if(retentiontype == 0) { @@ -712,7 +706,7 @@ }; myChart.setOption(option,true); }; - + // 第N日留存 function retainednRetained(d){ var nname,pname if(retentiontype == 0) { diff --git a/web/srczip/logic/setupbaobiao.js b/web/srczip/logic/setupbaobiao.js new file mode 100644 index 0000000..59de007 --- /dev/null +++ b/web/srczip/logic/setupbaobiao.js @@ -0,0 +1,105 @@ +(function(){ + X.pageLogic['setupbaobiao'] = { + init : function(parms){ + var me = this; + this.parms = parms; + this.callback = parms.callback; + var data = parms.extData; + var report_id = []; + report_id.push(data.id); + var postdata;//上传数据 + X.api('report/read_report','post',{project_id:X.DATA.projectid,report_id:report_id},function(d){ + postdata = d; + $('.setupbaobiao-title').val(d[0]['name']); + $('.setupbaobiao-textarea').val(d[0]['desc']); + // 初始化时间 + var endTime = d[0]['query']['eventView']['endTime']; + var startTime = d[0]['query']['eventView']['startTime']; + $(".setupbaobiao-time").html(startTime +' - '+ endTime); + if(data.modeltype == "table"){ //初始化图表类型 + $("#setupbaobiao-table").addClass("icon___XxbtJ"); + }else { + $("#setupbaobiao-echarts").addClass("icon___XxbtJ"); + } + //初始化窗体大小 + if(data.modelsize == 'in'){ //中图 + $("#setupbaobiao-in").prop("checked",true); + }else if( data.modelsize == 'small' ){//小图 + $("#setupbaobiao-small").prop("checked",true); + }else{//大图 + $("#setupbaobiao-large").prop("checked",true); + } + X.laytpldata("#setupbaobiao-select-dot",X['DATA']['screenlist'][d[0]['cat']],".setupbaobiao-select"); + }); + + X.daterender(".setupbaobiao-rli-box2",function(start, end, label){ + var startTime = start.format('YYYY-MM-DD')+ " "+ "00:00:00"; + var endTime = end.format('YYYY-MM-DD')+ " "+ "23:59:59"; + postdata[0]['query']['eventView']['startTime'] = startTime; + postdata[0]['query']['eventView']['endTime'] = endTime; + $(".setupbaobiao-time").html(startTime +' - '+ endTime); + + var sameday = Date.parse(new Date()) / 1000; //当天时间戳 + + var enddate = new Date(end.format('YYYY-MM-DD')); + var endmonth = Date.parse(enddate)/1000; + + var startdate = new Date(start.format('YYYY-MM-DD')); + var startmonth = Date.parse(startdate)/1000; + postdata[0]['query']['e_days'] = parseInt((sameday - endmonth)/86400); + postdata[0]['query']['s_days'] = parseInt((sameday - startmonth)/86400); + + console.log(startTime); + console.log(endTime); + }); + + // 分析时间粒度 + $(document).off('click','.setupbaobiao-select').on('change','.setupbaobiao-select',function(){ + postdata[0]['query']['eventView']['timeParticleSize'] = $(this).val(); + }); + + $(document).off('click','.shape___2nUUi').on('click','.shape___2nUUi',function(){ + $('.shape___2nUUi').removeClass('icon___XxbtJ'); + $(this).addClass('icon___XxbtJ'); + }); + + $(document).off('click','.setupbaobiao-xq').on('click','.setupbaobiao-xq',function(){ + layer.closeAll(); + }); + + $(document).off('click','.setupbaobiao-yy').on('click','.setupbaobiao-yy',function(){ + var title = $('.setupbaobiao-title').val(); + var desc = $(".setupbaobiao-textarea").val(); + var modeltype = $(".icon___XxbtJ").attr('data-type'); + var modelsize = $('input:radio[name="modelsize"]:checked').val() + var arr = { + _id:X.DATA.dashboard_id, + report:{ + name: title, + report_id:postdata[0]['_id'], + desc:desc, + model:postdata[0]['cat'], + graph_type:modeltype, + graph_size:modelsize + } + } + console.log(arr); + X.api('dashboard/edit_report','post',arr,function(d){ + console.log(d); + var reportedit = { + name: title, + desc:desc, + query:postdata[0]['query'], + report_id:postdata[0]['_id'] + } + X.api('report/edit','post',reportedit,function(d){ + me.callback && me.callback(d); + layer.closeAll(); + }) + }) + + }); + + } + }; +})(); \ No newline at end of file diff --git a/web/static/css/style.css b/web/static/css/style.css index 9936ef2..8a2ca3b 100644 --- a/web/static/css/style.css +++ b/web/static/css/style.css @@ -159,7 +159,7 @@ .echarts-box { padding: 0 24px; margin-top: 10px; height: 204px; } .layui-card:last-child { padding-bottom: 12px; } .echarts { width: 100%; height: 204px; } -.control { height: 21px; display: none; } +.control { height: 21px; display: block; } .tool-show .control { display: block; } .table-box { margin: 10px 24px 0 24px; height: 283px; overflow-x: auto; overflow-y: hidden; }