diff --git a/web/pages/modeltable.html b/web/pages/modeltable.html index 29886c2..e3df95a 100644 --- a/web/pages/modeltable.html +++ b/web/pages/modeltable.html @@ -76,11 +76,17 @@
- - 过去7天 - + 过去7天
按天 + {{# if(d.cat === "retention"){ }} +
+ {{# if(d.retentiontype === 0){ }} + 留存 + {{# } else { }} + 流失 + {{# } }} + {{# } }}
报表 @@ -203,6 +209,14 @@ 过去7天
按天 + {{# if(d.cat === "retention"){ }} +
+ {{# if(d.retentiontype === 0){ }} + 留存 + {{# } else { }} + 流失 + {{# } }} + {{# } }}
趋势图 diff --git a/web/src/x.min.js b/web/src/x.min.js index 8229e5a..509bd54 100644 --- a/web/src/x.min.js +++ b/web/src/x.min.js @@ -28,31 +28,7 @@ var X = window.X || { //用户搜索条件 'search':{ category:[ - { - 'title':'全部', - 'id':'0', - 'Category':[] - }, - { - 'title':'用户属性', - 'id':'1', - 'Category':[ - {'title':'账户ID','id':'10','type':'string'}, - {'title':'访客ID','id':'11','type':'string'}, - {'title':'注册时间','id':'12','type':'time'}, - {'title':'来源渠道','id':'13','type':'time'}, - ] - }, - { - 'title':'测试', - 'id':'2', - 'Category':[ - {'title':'账户ID','id':'10','type':'string'}, - {'title':'访客ID','id':'11','type':'string'}, - {'title':'注册时间','id':'12','type':'time'}, - {'title':'来源渠道','id':'13','type':'time'}, - ] - } + ], condition:[ {'title':'等于','id':'0','default':false}, @@ -612,6 +588,14 @@ var X = window.X || { }; X.retentiontable=function(data,callback){ + var nname,pname + if(data.retentiontype == 0) { + nname = 'n'; + pname = 'p'; + }else { + nname = 'n_outflow'; + pname = 'p_outflow'; + } var tabledata=[]; for(let i in data['summary_values']){ var arr = { @@ -619,13 +603,13 @@ var X = window.X || { d0:data['summary_values'][i]['d0'], data:[] } - for(let j in data['summary_values'][i]["n"]){ + for(let j in data['summary_values'][i][nname]){ var nrr = { n:0, p:0 } - nrr["n"] = data['summary_values'][i]["n"][j]; - nrr["p"] = data['summary_values'][i]["p"][j] + nrr["n"] = data['summary_values'][i][nname][j]; + nrr["p"] = data['summary_values'][i][pname][j] arr['data'].push(nrr); } tabledata.push(arr); @@ -639,12 +623,21 @@ var X = window.X || { titdata.unshift("日期",data.title); var dataArr = { titledata:titdata, - condata:tabledata + condata:tabledata, + retentiontype:data.retentiontype } callback && callback(dataArr); }; X.retentionchart = function(d,callback){ + var nname,pname + if(d.retentiontype == 0) { + nname = 'n'; + pname = 'p'; + }else { + nname = 'n_outflow'; + pname = 'p_outflow'; + } var arr = {}; var legenddata = []; var seriesData = []; @@ -653,8 +646,8 @@ var X = window.X || { if(jQuery.isEmptyObject(d.values)){ var arr = [] for(let i in d['summary_values']){ - var index = d['summary_values'][i]['p'].length - 1; - arr.push(d['summary_values'][i]['p'][index]); + var index = d['summary_values'][i][pname].length - 1; + arr.push(d['summary_values'][i][pname][index]); xAxisData.push(i); } @@ -675,10 +668,10 @@ var X = window.X || { timearr.push(i); for(let j in d.values[i]){ if(arr[j]){ - arr[j][i] = d.values[i][j]['p']; + arr[j][i] = d.values[i][j][pname]; }else { arr[j]=[]; - arr[j][i] = d.values[i][j]['p']; + arr[j][i] = d.values[i][j][pname]; } } } @@ -716,7 +709,8 @@ var X = window.X || { date:date, sum:sum.toFixed(2), mean:mean, - sameday: sameday + sameday: sameday, + retentiontype:d.retentiontype } // console.log(dataArr); callback && callback(dataArr); @@ -2047,13 +2041,14 @@ var X = window.X || { }); // 监听文本框 - $(document).off('click','.analysis-zhibiao-list-type4 input').on('blur','.analysis-zhibiao-list-type4 input',function(){ + $(document).off('click','.analysis-zhibiao-list-type4 input').on('change','.analysis-zhibiao-list-type4 input',function(){ var index = $(this).attr("data-index"); var indexs = $(this).attr("data-indexs"); var val = $(this).val(); var valarr = val.split(","); data['events'][index]['filts'][indexs]['ftv']=valarr; data['events'][index]['filts'][indexs]['strftv']=val; + console.log(val); }); // 且和或切换 @@ -3879,7 +3874,7 @@ var X = window.X || { var id = $(this).attr('data-id'); // console.log(id); X.api('dashboard/','post',{id:X.DATA['dashboard_id']},function(d){ - return; + // return; X.pageLogic['dashboard'].fillmodeldata(d[id]); }) @@ -3976,7 +3971,8 @@ var X = window.X || { }, //填充看板数据 - fillmodeldata:function(d,id){ + //总体逻辑是:根据获取到的看板内容去先渲染放置的框,在根据不同分析模型处理对应的数据进行填充 + fillmodeldata:function(d,id,type){// // console.log(d); X.api("ck/"+d['model']+"_model","post",{report_id:d['report_id']},function(val){ var eventdata=[]; @@ -4018,6 +4014,11 @@ var X = window.X || { } else if(d['model'] == "retention"){ //留存分析 + if(type){ + val['retentiontype'] = type; + }else { + val['retentiontype'] = 0 + } if(d['graph_size'] == 'small'){ }else { @@ -4109,6 +4110,8 @@ var X = window.X || { // $('.layui-row').dad({ // draggable:'table' // }); + + }) }, @@ -4146,6 +4149,29 @@ var X = window.X || { }); console.log(eventdata); + // 留存分析模板特定留存流失按钮 + var retentionlist = [ + {'title':'留存','id':0}, + {'title':'流失','id':1}, + ] + 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){ + for(let i in val){ + if(val[i]['report_id'] == eventdata.id){ + X.pageLogic['dashboard'].fillmodeldata(val[i],modelid,retentiontype); + } + } + }) + + }) + } + + if(eventdata['modeltype'] == 'echarts' && eventdata['modelsize'] != 'small' ){ var myChart = echarts.init(document.getElementById(eventdata['id'])); if(eventdata['cat'] == 'user_property'){ @@ -4235,7 +4261,8 @@ var X = window.X || { }, - // 获取表格数据 + //获取表格数据 + //渲染外框大小位置 gettabledata:function(){ $("#model-box").html("");//清空表格数据 X.api('dashboard/','post',{id:X.DATA['dashboard_id']},function(d){ @@ -8321,8 +8348,8 @@ var X = window.X || { titdata.push(tit); } titdata.unshift("日期",d.title); + // X.fixedTable=function(id,type,classname,headdata){ X.laytpldata("#table-fenxi-th-dot",titdata,".table-fenxi-th"); - X.laytpldata("#table-fenxi-td-dot",tabledata,".table-fenxi-td"); }; diff --git a/web/srczip/common.js b/web/srczip/common.js index 319ec59..3602c13 100644 --- a/web/srczip/common.js +++ b/web/srczip/common.js @@ -27,31 +27,7 @@ var X = window.X || { //用户搜索条件 'search':{ category:[ - { - 'title':'全部', - 'id':'0', - 'Category':[] - }, - { - 'title':'用户属性', - 'id':'1', - 'Category':[ - {'title':'账户ID','id':'10','type':'string'}, - {'title':'访客ID','id':'11','type':'string'}, - {'title':'注册时间','id':'12','type':'time'}, - {'title':'来源渠道','id':'13','type':'time'}, - ] - }, - { - 'title':'测试', - 'id':'2', - 'Category':[ - {'title':'账户ID','id':'10','type':'string'}, - {'title':'访客ID','id':'11','type':'string'}, - {'title':'注册时间','id':'12','type':'time'}, - {'title':'来源渠道','id':'13','type':'time'}, - ] - } + ], condition:[ {'title':'等于','id':'0','default':false}, @@ -611,6 +587,14 @@ var X = window.X || { }; X.retentiontable=function(data,callback){ + var nname,pname + if(data.retentiontype == 0) { + nname = 'n'; + pname = 'p'; + }else { + nname = 'n_outflow'; + pname = 'p_outflow'; + } var tabledata=[]; for(let i in data['summary_values']){ var arr = { @@ -618,13 +602,13 @@ var X = window.X || { d0:data['summary_values'][i]['d0'], data:[] } - for(let j in data['summary_values'][i]["n"]){ + for(let j in data['summary_values'][i][nname]){ var nrr = { n:0, p:0 } - nrr["n"] = data['summary_values'][i]["n"][j]; - nrr["p"] = data['summary_values'][i]["p"][j] + nrr["n"] = data['summary_values'][i][nname][j]; + nrr["p"] = data['summary_values'][i][pname][j] arr['data'].push(nrr); } tabledata.push(arr); @@ -638,12 +622,21 @@ var X = window.X || { titdata.unshift("日期",data.title); var dataArr = { titledata:titdata, - condata:tabledata + condata:tabledata, + retentiontype:data.retentiontype } callback && callback(dataArr); }; X.retentionchart = function(d,callback){ + var nname,pname + if(d.retentiontype == 0) { + nname = 'n'; + pname = 'p'; + }else { + nname = 'n_outflow'; + pname = 'p_outflow'; + } var arr = {}; var legenddata = []; var seriesData = []; @@ -652,8 +645,8 @@ var X = window.X || { if(jQuery.isEmptyObject(d.values)){ var arr = [] for(let i in d['summary_values']){ - var index = d['summary_values'][i]['p'].length - 1; - arr.push(d['summary_values'][i]['p'][index]); + var index = d['summary_values'][i][pname].length - 1; + arr.push(d['summary_values'][i][pname][index]); xAxisData.push(i); } @@ -674,10 +667,10 @@ var X = window.X || { timearr.push(i); for(let j in d.values[i]){ if(arr[j]){ - arr[j][i] = d.values[i][j]['p']; + arr[j][i] = d.values[i][j][pname]; }else { arr[j]=[]; - arr[j][i] = d.values[i][j]['p']; + arr[j][i] = d.values[i][j][pname]; } } } @@ -715,7 +708,8 @@ var X = window.X || { date:date, sum:sum.toFixed(2), mean:mean, - sameday: sameday + sameday: sameday, + retentiontype:d.retentiontype } // console.log(dataArr); callback && callback(dataArr); diff --git a/web/srczip/logic/analysis.js b/web/srczip/logic/analysis.js index 16e4a0d..c1b97db 100644 --- a/web/srczip/logic/analysis.js +++ b/web/srczip/logic/analysis.js @@ -371,13 +371,14 @@ }); // 监听文本框 - $(document).off('click','.analysis-zhibiao-list-type4 input').on('blur','.analysis-zhibiao-list-type4 input',function(){ + $(document).off('click','.analysis-zhibiao-list-type4 input').on('change','.analysis-zhibiao-list-type4 input',function(){ var index = $(this).attr("data-index"); var indexs = $(this).attr("data-indexs"); var val = $(this).val(); var valarr = val.split(","); data['events'][index]['filts'][indexs]['ftv']=valarr; data['events'][index]['filts'][indexs]['strftv']=val; + console.log(val); }); // 且和或切换 diff --git a/web/srczip/logic/dashboard.js b/web/srczip/logic/dashboard.js index eb1fc66..60effca 100644 --- a/web/srczip/logic/dashboard.js +++ b/web/srczip/logic/dashboard.js @@ -245,7 +245,7 @@ var id = $(this).attr('data-id'); // console.log(id); X.api('dashboard/','post',{id:X.DATA['dashboard_id']},function(d){ - return; + // return; X.pageLogic['dashboard'].fillmodeldata(d[id]); }) @@ -342,7 +342,8 @@ }, //填充看板数据 - fillmodeldata:function(d,id){ + //总体逻辑是:根据获取到的看板内容去先渲染放置的框,在根据不同分析模型处理对应的数据进行填充 + fillmodeldata:function(d,id,type){// // console.log(d); X.api("ck/"+d['model']+"_model","post",{report_id:d['report_id']},function(val){ var eventdata=[]; @@ -384,6 +385,11 @@ } else if(d['model'] == "retention"){ //留存分析 + if(type){ + val['retentiontype'] = type; + }else { + val['retentiontype'] = 0 + } if(d['graph_size'] == 'small'){ }else { @@ -475,6 +481,8 @@ // $('.layui-row').dad({ // draggable:'table' // }); + + }) }, @@ -512,6 +520,29 @@ }); console.log(eventdata); + // 留存分析模板特定留存流失按钮 + var retentionlist = [ + {'title':'留存','id':0}, + {'title':'流失','id':1}, + ] + 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){ + for(let i in val){ + if(val[i]['report_id'] == eventdata.id){ + X.pageLogic['dashboard'].fillmodeldata(val[i],modelid,retentiontype); + } + } + }) + + }) + } + + if(eventdata['modeltype'] == 'echarts' && eventdata['modelsize'] != 'small' ){ var myChart = echarts.init(document.getElementById(eventdata['id'])); if(eventdata['cat'] == 'user_property'){ @@ -601,7 +632,8 @@ }, - // 获取表格数据 + //获取表格数据 + //渲染外框大小位置 gettabledata:function(){ $("#model-box").html("");//清空表格数据 X.api('dashboard/','post',{id:X.DATA['dashboard_id']},function(d){ diff --git a/web/srczip/logic/retained.js b/web/srczip/logic/retained.js index 10fce21..fe462a8 100644 --- a/web/srczip/logic/retained.js +++ b/web/srczip/logic/retained.js @@ -590,8 +590,8 @@ titdata.push(tit); } titdata.unshift("日期",d.title); + // X.fixedTable=function(id,type,classname,headdata){ X.laytpldata("#table-fenxi-th-dot",titdata,".table-fenxi-th"); - X.laytpldata("#table-fenxi-td-dot",tabledata,".table-fenxi-td"); };