This commit is contained in:
罗松柏 2021-08-24 15:47:30 +08:00
parent 5ca1930de7
commit f44f2999b6
6 changed files with 149 additions and 81 deletions

View File

@ -76,11 +76,17 @@
<div class="condition-box controlhover"> <div class="condition-box controlhover">
<div class="time-cond"> <div class="time-cond">
<span> <span>过去7天</span>
过去7天
</span>
<div class="xian"></div> <div class="xian"></div>
<span>按天</span> <span>按天</span>
{{# if(d.cat === "retention"){ }}
<div class="xian"></div>
{{# if(d.retentiontype === 0){ }}
<span class="kanben-retained-type" id="retention{{d.id}}">留存</span>
{{# } else { }}
<span class="kanben-retained-type" id="retention{{d.id}}">流失</span>
{{# } }}
{{# } }}
</div> </div>
<div class="chart control" id="chart{{d.id}}" data-modelsize="{{d.modelsize}}" data-modeltype={{d.modeltype}} data-cat="{{d.cat}}" data-name="{{d.name}}" data-id="{{d.id}}"> <div class="chart control" id="chart{{d.id}}" data-modelsize="{{d.modelsize}}" data-modeltype={{d.modeltype}} data-cat="{{d.cat}}" data-name="{{d.name}}" data-id="{{d.id}}">
<img src="./static/img/qvshitu.png" /> <span>报表</span> <img src="./static/img/qvshitu.png" /> <span>报表</span>
@ -203,6 +209,14 @@
<span>过去7天</span> <span>过去7天</span>
<div class="xian"></div> <div class="xian"></div>
<span>按天</span> <span>按天</span>
{{# if(d.cat === "retention"){ }}
<div class="xian"></div>
{{# if(d.retentiontype === 0){ }}
<span class="kanben-retained-type" id="retention{{d.id}}">留存</span>
{{# } else { }}
<span class="kanben-retained-type" id="retention{{d.id}}">流失</span>
{{# } }}
{{# } }}
</div> </div>
<div class="chart control" id="chart{{d.id}}" data-modelsize="{{d.modelsize}}" data-modeltype={{d.modeltype}} data-cat="{{d.cat}}" data-name="{{d.name}}" data-id="{{d.id}}"> <div class="chart control" id="chart{{d.id}}" data-modelsize="{{d.modelsize}}" data-modeltype={{d.modeltype}} data-cat="{{d.cat}}" data-name="{{d.name}}" data-id="{{d.id}}">
<img src="./static/img/qvshitu.png" /> <span>趋势图</span> <img src="./static/img/qvshitu.png" /> <span>趋势图</span>

105
web/src/x.min.js vendored
View File

@ -28,31 +28,7 @@ var X = window.X || {
//用户搜索条件 //用户搜索条件
'search':{ 'search':{
category:[ 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:[ condition:[
{'title':'等于','id':'0','default':false}, {'title':'等于','id':'0','default':false},
@ -612,6 +588,14 @@ var X = window.X || {
}; };
X.retentiontable=function(data,callback){ 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=[]; var tabledata=[];
for(let i in data['summary_values']){ for(let i in data['summary_values']){
var arr = { var arr = {
@ -619,13 +603,13 @@ var X = window.X || {
d0:data['summary_values'][i]['d0'], d0:data['summary_values'][i]['d0'],
data:[] data:[]
} }
for(let j in data['summary_values'][i]["n"]){ for(let j in data['summary_values'][i][nname]){
var nrr = { var nrr = {
n:0, n:0,
p:0 p:0
} }
nrr["n"] = data['summary_values'][i]["n"][j]; nrr["n"] = data['summary_values'][i][nname][j];
nrr["p"] = data['summary_values'][i]["p"][j] nrr["p"] = data['summary_values'][i][pname][j]
arr['data'].push(nrr); arr['data'].push(nrr);
} }
tabledata.push(arr); tabledata.push(arr);
@ -639,12 +623,21 @@ var X = window.X || {
titdata.unshift("日期",data.title); titdata.unshift("日期",data.title);
var dataArr = { var dataArr = {
titledata:titdata, titledata:titdata,
condata:tabledata condata:tabledata,
retentiontype:data.retentiontype
} }
callback && callback(dataArr); callback && callback(dataArr);
}; };
X.retentionchart = function(d,callback){ 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 arr = {};
var legenddata = []; var legenddata = [];
var seriesData = []; var seriesData = [];
@ -653,8 +646,8 @@ var X = window.X || {
if(jQuery.isEmptyObject(d.values)){ if(jQuery.isEmptyObject(d.values)){
var arr = [] var arr = []
for(let i in d['summary_values']){ for(let i in d['summary_values']){
var index = d['summary_values'][i]['p'].length - 1; var index = d['summary_values'][i][pname].length - 1;
arr.push(d['summary_values'][i]['p'][index]); arr.push(d['summary_values'][i][pname][index]);
xAxisData.push(i); xAxisData.push(i);
} }
@ -675,10 +668,10 @@ var X = window.X || {
timearr.push(i); timearr.push(i);
for(let j in d.values[i]){ for(let j in d.values[i]){
if(arr[j]){ if(arr[j]){
arr[j][i] = d.values[i][j]['p']; arr[j][i] = d.values[i][j][pname];
}else { }else {
arr[j]=[]; 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, date:date,
sum:sum.toFixed(2), sum:sum.toFixed(2),
mean:mean, mean:mean,
sameday: sameday sameday: sameday,
retentiontype:d.retentiontype
} }
// console.log(dataArr); // console.log(dataArr);
callback && callback(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 index = $(this).attr("data-index");
var indexs = $(this).attr("data-indexs"); var indexs = $(this).attr("data-indexs");
var val = $(this).val(); var val = $(this).val();
var valarr = val.split(","); var valarr = val.split(",");
data['events'][index]['filts'][indexs]['ftv']=valarr; data['events'][index]['filts'][indexs]['ftv']=valarr;
data['events'][index]['filts'][indexs]['strftv']=val; data['events'][index]['filts'][indexs]['strftv']=val;
console.log(val);
}); });
// 且和或切换 // 且和或切换
@ -3879,7 +3874,7 @@ var X = window.X || {
var id = $(this).attr('data-id'); var id = $(this).attr('data-id');
// console.log(id); // console.log(id);
X.api('dashboard/','post',{id:X.DATA['dashboard_id']},function(d){ X.api('dashboard/','post',{id:X.DATA['dashboard_id']},function(d){
return; // return;
X.pageLogic['dashboard'].fillmodeldata(d[id]); 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); // console.log(d);
X.api("ck/"+d['model']+"_model","post",{report_id:d['report_id']},function(val){ X.api("ck/"+d['model']+"_model","post",{report_id:d['report_id']},function(val){
var eventdata=[]; var eventdata=[];
@ -4018,6 +4014,11 @@ var X = window.X || {
} else if(d['model'] == "retention"){ } else if(d['model'] == "retention"){
//留存分析 //留存分析
if(type){
val['retentiontype'] = type;
}else {
val['retentiontype'] = 0
}
if(d['graph_size'] == 'small'){ if(d['graph_size'] == 'small'){
}else { }else {
@ -4109,6 +4110,8 @@ var X = window.X || {
// $('.layui-row').dad({ // $('.layui-row').dad({
// draggable:'table' // draggable:'table'
// }); // });
}) })
}, },
@ -4146,6 +4149,29 @@ var X = window.X || {
}); });
console.log(eventdata); 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' ){ if(eventdata['modeltype'] == 'echarts' && eventdata['modelsize'] != 'small' ){
var myChart = echarts.init(document.getElementById(eventdata['id'])); var myChart = echarts.init(document.getElementById(eventdata['id']));
if(eventdata['cat'] == 'user_property'){ if(eventdata['cat'] == 'user_property'){
@ -4235,7 +4261,8 @@ var X = window.X || {
}, },
// 获取表格数据 //获取表格数据
//渲染外框大小位置
gettabledata:function(){ gettabledata:function(){
$("#model-box").html("");//清空表格数据 $("#model-box").html("");//清空表格数据
X.api('dashboard/','post',{id:X.DATA['dashboard_id']},function(d){ X.api('dashboard/','post',{id:X.DATA['dashboard_id']},function(d){
@ -8321,8 +8348,8 @@ var X = window.X || {
titdata.push(tit); titdata.push(tit);
} }
titdata.unshift("日期",d.title); 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-th-dot",titdata,".table-fenxi-th");
X.laytpldata("#table-fenxi-td-dot",tabledata,".table-fenxi-td"); X.laytpldata("#table-fenxi-td-dot",tabledata,".table-fenxi-td");
}; };

View File

@ -27,31 +27,7 @@ var X = window.X || {
//用户搜索条件 //用户搜索条件
'search':{ 'search':{
category:[ 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:[ condition:[
{'title':'等于','id':'0','default':false}, {'title':'等于','id':'0','default':false},
@ -611,6 +587,14 @@ var X = window.X || {
}; };
X.retentiontable=function(data,callback){ 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=[]; var tabledata=[];
for(let i in data['summary_values']){ for(let i in data['summary_values']){
var arr = { var arr = {
@ -618,13 +602,13 @@ var X = window.X || {
d0:data['summary_values'][i]['d0'], d0:data['summary_values'][i]['d0'],
data:[] data:[]
} }
for(let j in data['summary_values'][i]["n"]){ for(let j in data['summary_values'][i][nname]){
var nrr = { var nrr = {
n:0, n:0,
p:0 p:0
} }
nrr["n"] = data['summary_values'][i]["n"][j]; nrr["n"] = data['summary_values'][i][nname][j];
nrr["p"] = data['summary_values'][i]["p"][j] nrr["p"] = data['summary_values'][i][pname][j]
arr['data'].push(nrr); arr['data'].push(nrr);
} }
tabledata.push(arr); tabledata.push(arr);
@ -638,12 +622,21 @@ var X = window.X || {
titdata.unshift("日期",data.title); titdata.unshift("日期",data.title);
var dataArr = { var dataArr = {
titledata:titdata, titledata:titdata,
condata:tabledata condata:tabledata,
retentiontype:data.retentiontype
} }
callback && callback(dataArr); callback && callback(dataArr);
}; };
X.retentionchart = function(d,callback){ 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 arr = {};
var legenddata = []; var legenddata = [];
var seriesData = []; var seriesData = [];
@ -652,8 +645,8 @@ var X = window.X || {
if(jQuery.isEmptyObject(d.values)){ if(jQuery.isEmptyObject(d.values)){
var arr = [] var arr = []
for(let i in d['summary_values']){ for(let i in d['summary_values']){
var index = d['summary_values'][i]['p'].length - 1; var index = d['summary_values'][i][pname].length - 1;
arr.push(d['summary_values'][i]['p'][index]); arr.push(d['summary_values'][i][pname][index]);
xAxisData.push(i); xAxisData.push(i);
} }
@ -674,10 +667,10 @@ var X = window.X || {
timearr.push(i); timearr.push(i);
for(let j in d.values[i]){ for(let j in d.values[i]){
if(arr[j]){ if(arr[j]){
arr[j][i] = d.values[i][j]['p']; arr[j][i] = d.values[i][j][pname];
}else { }else {
arr[j]=[]; 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, date:date,
sum:sum.toFixed(2), sum:sum.toFixed(2),
mean:mean, mean:mean,
sameday: sameday sameday: sameday,
retentiontype:d.retentiontype
} }
// console.log(dataArr); // console.log(dataArr);
callback && callback(dataArr); callback && callback(dataArr);

View File

@ -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 index = $(this).attr("data-index");
var indexs = $(this).attr("data-indexs"); var indexs = $(this).attr("data-indexs");
var val = $(this).val(); var val = $(this).val();
var valarr = val.split(","); var valarr = val.split(",");
data['events'][index]['filts'][indexs]['ftv']=valarr; data['events'][index]['filts'][indexs]['ftv']=valarr;
data['events'][index]['filts'][indexs]['strftv']=val; data['events'][index]['filts'][indexs]['strftv']=val;
console.log(val);
}); });
// 且和或切换 // 且和或切换

View File

@ -245,7 +245,7 @@
var id = $(this).attr('data-id'); var id = $(this).attr('data-id');
// console.log(id); // console.log(id);
X.api('dashboard/','post',{id:X.DATA['dashboard_id']},function(d){ X.api('dashboard/','post',{id:X.DATA['dashboard_id']},function(d){
return; // return;
X.pageLogic['dashboard'].fillmodeldata(d[id]); X.pageLogic['dashboard'].fillmodeldata(d[id]);
}) })
@ -342,7 +342,8 @@
}, },
//填充看板数据 //填充看板数据
fillmodeldata:function(d,id){ //总体逻辑是:根据获取到的看板内容去先渲染放置的框,在根据不同分析模型处理对应的数据进行填充
fillmodeldata:function(d,id,type){//
// console.log(d); // console.log(d);
X.api("ck/"+d['model']+"_model","post",{report_id:d['report_id']},function(val){ X.api("ck/"+d['model']+"_model","post",{report_id:d['report_id']},function(val){
var eventdata=[]; var eventdata=[];
@ -384,6 +385,11 @@
} else if(d['model'] == "retention"){ } else if(d['model'] == "retention"){
//留存分析 //留存分析
if(type){
val['retentiontype'] = type;
}else {
val['retentiontype'] = 0
}
if(d['graph_size'] == 'small'){ if(d['graph_size'] == 'small'){
}else { }else {
@ -475,6 +481,8 @@
// $('.layui-row').dad({ // $('.layui-row').dad({
// draggable:'table' // draggable:'table'
// }); // });
}) })
}, },
@ -512,6 +520,29 @@
}); });
console.log(eventdata); 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' ){ if(eventdata['modeltype'] == 'echarts' && eventdata['modelsize'] != 'small' ){
var myChart = echarts.init(document.getElementById(eventdata['id'])); var myChart = echarts.init(document.getElementById(eventdata['id']));
if(eventdata['cat'] == 'user_property'){ if(eventdata['cat'] == 'user_property'){
@ -601,7 +632,8 @@
}, },
// 获取表格数据 //获取表格数据
//渲染外框大小位置
gettabledata:function(){ gettabledata:function(){
$("#model-box").html("");//清空表格数据 $("#model-box").html("");//清空表格数据
X.api('dashboard/','post',{id:X.DATA['dashboard_id']},function(d){ X.api('dashboard/','post',{id:X.DATA['dashboard_id']},function(d){

View File

@ -590,8 +590,8 @@
titdata.push(tit); titdata.push(tit);
} }
titdata.unshift("日期",d.title); 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-th-dot",titdata,".table-fenxi-th");
X.laytpldata("#table-fenxi-td-dot",tabledata,".table-fenxi-td"); X.laytpldata("#table-fenxi-td-dot",tabledata,".table-fenxi-td");
}; };