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="time-cond">
<span>
过去7天
</span>
<span>过去7天</span>
<div class="xian"></div>
<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 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>
@ -203,6 +209,14 @@
<span>过去7天</span>
<div class="xian"></div>
<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 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>

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

@ -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'){
@ -4236,6 +4262,7 @@ 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");
};

View File

@ -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);

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 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);
});
// 且和或切换

View File

@ -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'){
@ -602,6 +633,7 @@
},
//获取表格数据
//渲染外框大小位置
gettabledata:function(){
$("#model-box").html("");//清空表格数据
X.api('dashboard/','post',{id:X.DATA['dashboard_id']},function(d){

View File

@ -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");
};