1
This commit is contained in:
parent
cedd21f88f
commit
cf8c4e7131
@ -5,9 +5,17 @@
|
||||
<div class="analysis-con-left-screen-list">
|
||||
<!-- 指标选择 -->
|
||||
<div class="analysis-con-left-screen-list-left-box" id="analysis-con-left-screen-list-left-box-{{index}}">
|
||||
<div class="analysis-con-left-screen-list-left-zhibiaoname" id="analysis-con-left-screen-list-left-zhibiaoname-{{index}}">
|
||||
<input type="text" placeholder="请输入指标名" class="analysis-con-left-screen-list-left-zhibiaoname-txt" data-index="{{index}}"/>
|
||||
</div>
|
||||
|
||||
{{# if(item.renameindicator === ""){ }}
|
||||
<div class="analysis-con-left-screen-list-left-zhibiaoname" id="analysis-con-left-screen-list-left-zhibiaoname-{{index}}">
|
||||
<input type="text" placeholder="请输入指标名" class="analysis-con-left-screen-list-left-zhibiaoname-txt" data-index="{{index}}"/>
|
||||
</div>
|
||||
{{# } else { }}
|
||||
<div class="analysis-con-left-screen-list-left-zhibiaoname" id="analysis-con-left-screen-list-left-zhibiaoname-{{index}}" style="display: block;">
|
||||
<input type="text" placeholder="请输入指标名" class="analysis-con-left-screen-list-left-zhibiaoname-txt" data-index="{{index}}" value="{{item.renameindicator}}"/>
|
||||
</div>
|
||||
{{# } }}
|
||||
|
||||
<div class="analysis-con-left-screen-list-left">
|
||||
<div class="analysis-num">{{index}}</div>
|
||||
<div class="analysis-zhibiao-list">
|
||||
@ -21,9 +29,9 @@
|
||||
<div class="analysis-con-left-screen-list-right-screen-qh-xian"></div>
|
||||
{{# if(item.filts.length > 1){ }}
|
||||
{{# if(item.condrelation === "and"){ }}
|
||||
<div class="analysis-con-left-screen-list-right-screen-qh-tit" data-index="{{index}}">且</div>
|
||||
{{# } else { }}
|
||||
<div class="analysis-con-left-screen-list-right-screen-qh-tit" data-index="{{index}}">或</div>
|
||||
{{# } else { }}
|
||||
<div class="analysis-con-left-screen-list-right-screen-qh-tit" data-index="{{index}}">且</div>
|
||||
{{# } }}
|
||||
{{# } }}
|
||||
</div>
|
||||
@ -33,7 +41,7 @@
|
||||
<div id="ta-property-select-{{index}}-{{indexs}}" class="ta-property-select analysis-zhibiao-list-type1 analysis-background" data-index="{{index}}" data-indexs="{{indexs}}"> {{items.columnDesc}}</div>
|
||||
<div class="analysis-zhibiao-list-type3 analysis-background analysis-choicetypename" data-index="{{index}}" data-indexs="{{indexs}}">{{items.comparatorName}}</div>
|
||||
<!-- {{# if(item.comparator_id != "is null" && item.comparator_id != "is not null" && item.comparator_id !="not null" && item.comparator_id != "range"){ }} -->
|
||||
<div class="analysis-zhibiao-list-type4" id="analysis-zhibiao-list-type4-{{index}}-{{indexs}}"> <input type="text" data-index="{{index}}" data-indexs="{{indexs}}" placeholder="多个条件用,隔开" value="{{items.strftv}}"> </div>
|
||||
<div class="analysis-zhibiao-list-type4" data-index="{{index}}" data-indexs="{{indexs}}" data-type="{{item.data_type}}" data-comparator="{{item.comparator}}"> <input type="text" data-index="{{index}}" data-indexs="{{indexs}}" placeholder="多个条件用,隔开" value="{{items.strftv}}"> </div>
|
||||
<!-- {{# } }} -->
|
||||
<div class="analysis-zhibiao-list-del funnel-analysis-zhibiao-list-del" data-index="{{index}}" data-twonum="{{indexs}}"></div>
|
||||
</div>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<div class="analysis-navigation-bar-box">
|
||||
<div class="analysis-navigation-bar">
|
||||
<div class="analysis-navigation-bar-left">
|
||||
<span>漏斗分析</span><img src="./static/img/capytishi.png" title="分析某段时间内,某个事件或事件属性的整体趋势情况"/>
|
||||
<span>漏斗分析</span><img src="./static/img/capytishi.png" title="分析某段时间内,某个事件或事件属性的整体趋势情况" />
|
||||
</div>
|
||||
<div class="analysis-navigation-bar-right">
|
||||
<div class="analysis-navigation-bar-right-jisuan">
|
||||
@ -33,79 +33,122 @@
|
||||
|
||||
<div class="analysis-bg">
|
||||
<!-- 左侧条件筛选区域 -->
|
||||
<div class="analysis-con-left">
|
||||
<div class="analysis-con-left" style=" position: relative; ">
|
||||
<!-- 伸缩按钮 -->
|
||||
<div class="analysis-con-left-shrink"></div>
|
||||
|
||||
<div class="root___2a4tb">
|
||||
|
||||
<div class="block___2n0We">
|
||||
<div class="analysis-con-left-title">漏斗步骤</div>
|
||||
<div class="analysis-con-left-screen-list-box" id="funnel-event">
|
||||
|
||||
</div>
|
||||
<div class="analysis-foot___P797w">
|
||||
<span class="funnel-updataevent">
|
||||
<img src="./static/img/fenzu.png">
|
||||
添加步骤指标
|
||||
</span>
|
||||
<form class="layui-form" action="">
|
||||
<div class="layui-form-item" style=" position: absolute; right: 10px; top: 10px;">
|
||||
<label class="layui-form-label" style="padding: 0 15px;">开关</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="checkbox" checked="" name="open" lay-skin="switch" lay-filter="switchTest">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<div class="block___2n0We analysis-overall" style="display: block;">
|
||||
<div class="analysis-con-left-title">全局筛选</div>
|
||||
<div class="root___2a4tb ">
|
||||
|
||||
<div class="analysis-con-left-screen-box">
|
||||
|
||||
<div class="analysis-overall-situation-box">
|
||||
|
||||
<div class="analysis-overall-situation-left-box">
|
||||
<div class="analysis-overall-situation-left-xian"></div>
|
||||
<div class="analysis-overall-situation-left-guanxi">且</div>
|
||||
</div>
|
||||
|
||||
<div class="analysis-overall-situation-list-box" id="xinwei-whole">
|
||||
|
||||
|
||||
</div>
|
||||
<div class="funnelanalysis-screen-box">
|
||||
<div class="block___2n0We">
|
||||
<div class="analysis-con-left-title">
|
||||
漏斗步骤
|
||||
</div>
|
||||
<div class="analysis-con-left-screen-list-box" id="funnel-event">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="analysis-foot___P797w">
|
||||
<span class="analysis-overall-situation-add">
|
||||
<span class="funnel-updataevent">
|
||||
<img src="./static/img/fenzu.png">
|
||||
添加条件
|
||||
添加步骤指标
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="block___2n0We analysis-overall" style="display: block;">
|
||||
<div class="analysis-con-left-title">全局筛选</div>
|
||||
|
||||
<div class="analysis-con-left-screen-box">
|
||||
|
||||
<div class="analysis-overall-situation-box">
|
||||
|
||||
<div class="analysis-overall-situation-left-box">
|
||||
<div class="analysis-overall-situation-left-xian"></div>
|
||||
<div class="analysis-overall-situation-left-guanxi">且</div>
|
||||
</div>
|
||||
|
||||
<div class="analysis-overall-situation-list-box" id="xinwei-whole">
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="analysis-foot___P797w">
|
||||
<span class="analysis-overall-situation-add">
|
||||
<img src="./static/img/fenzu.png">
|
||||
添加条件
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="block___2n0We">
|
||||
<div class="analysis-con-left-title">分组项</div>
|
||||
<div class="analysis-con-left-screen-box" id="shushi">
|
||||
|
||||
</div>
|
||||
<div class="analysis-foot___P797w">
|
||||
<span class="analysis-footadd___2D4YB group-updata">
|
||||
<img src="./static/img/fenzu.png">
|
||||
添加分组项
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="block___2n0We">
|
||||
<div class="analysis-con-left-title">分析窗口期</div>
|
||||
<div class="analysis-con-left-screen-box">
|
||||
<div class="analtsis-condition analtsis-timeParticleSize windows_gap">7天</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="single-box" style="display: none;">
|
||||
<div class="block___2n0We ">
|
||||
<div class="analysis-con-left-title">
|
||||
漏斗步骤
|
||||
</div>
|
||||
<div class="analysis-con-left-screen-list-box">
|
||||
<div class="analysis-con-left-screen-list">
|
||||
<div class="analysis-con-left-screen-list-left-box">
|
||||
|
||||
<div class="block___2n0We">
|
||||
<div class="analysis-con-left-title">分组项</div>
|
||||
<div class="analysis-con-left-screen-box" id="shushi">
|
||||
|
||||
</div>
|
||||
<div class="analysis-foot___P797w">
|
||||
<span class="analysis-footadd___2D4YB group-updata">
|
||||
<img src="./static/img/fenzu.png">
|
||||
添加分组项
|
||||
</span>
|
||||
<div class="analysis-con-left-screen-list-left">
|
||||
<div class="analysis-num">0</div>
|
||||
<div class="analysis-zhibiao-list">
|
||||
<div class="ant-dropdown-trigger analysis-zhibiao-list-type1 analysis-background single-eventName"
|
||||
data-index="0"> </div>
|
||||
</div>
|
||||
<span style="margin-left: 6px;">的</span>
|
||||
<div
|
||||
class="analysis-zhibiao-list-type2 analysis-background single-analysisDesc">
|
||||
总次数
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="block___2n0We">
|
||||
<div class="analysis-con-left-title">分析窗口期</div>
|
||||
<div class="analysis-con-left-screen-box" >
|
||||
<div class="analtsis-condition analtsis-timeParticleSize windows_gap">7天</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="analysis-but-box">
|
||||
<div class="analysis-savereport">保存报表</div>
|
||||
<div class="analysis-calculation">计 算</div>
|
||||
@ -122,32 +165,35 @@
|
||||
</div>
|
||||
<div class="analtsis-condition-box">
|
||||
<div class="analtsis-time-box">
|
||||
<div class="analtsis-condition" > <input id="retained-condition-date" readonly="readonly"></input> </div>
|
||||
<div class="analtsis-condition"> <input id="retained-condition-date"
|
||||
readonly="readonly"></input> </div>
|
||||
</div>
|
||||
|
||||
<div class="analtsis-condition-right-box">
|
||||
<!-- <div class="analtsis-condition">指标</div>
|
||||
<div class="analtsis-condition">分组</div> -->
|
||||
<div class="analtsis-chart-switch-box">
|
||||
<div class="analtsis-chart-switch select-chart" title="转化图"> <i class="iconfont" style="font-size: 18px; "></i> </div>
|
||||
<div class="analtsis-chart-switch " title="趋势图"> <i class="iconfont" style="font-size: 18px; "></i> </div>
|
||||
<div class="analtsis-chart-switch select-chart" title="转化图"> <i class="iconfont"
|
||||
style="font-size: 18px; "></i> </div>
|
||||
<div class="analtsis-chart-switch " title="趋势图"> <i class="iconfont"
|
||||
style="font-size: 18px; "></i> </div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<!-- 统计图 -->
|
||||
<div class="analysis-echarts" id="funnel-echarts" ></div>
|
||||
<div class="analysis-echarts" id="funnel-echarts"></div>
|
||||
|
||||
<div class="table-div-box" style="height: 100%; margin-top: 16px;">
|
||||
<table class="table-fenxi-box">
|
||||
<thead>
|
||||
<tr class="table-fenxi-th">
|
||||
|
||||
</tr>
|
||||
<tr class="table-fenxi-th">
|
||||
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="table-fenxi-td">
|
||||
|
||||
|
||||
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@ -183,4 +229,22 @@
|
||||
{{# }); }}
|
||||
</tr>
|
||||
{{# }); }}
|
||||
</script>
|
||||
</script>
|
||||
|
||||
<script id="table-fenxi-th-single-dot" type="text/html">
|
||||
{{# layui.each(d, function(index, item){ }}
|
||||
<th>{{item}}</th>
|
||||
{{# }); }}
|
||||
</script>
|
||||
|
||||
<script id="table-fenxi-td-single-dot" type="text/html">
|
||||
{{# layui.each(d, function(index, item){ }}
|
||||
<tr >
|
||||
{{# layui.each(item, function(indexs, items){ }}
|
||||
<td>
|
||||
<p>{{items}}</p>
|
||||
</td>
|
||||
{{# }); }}
|
||||
</tr>
|
||||
{{# }); }}
|
||||
</script>
|
||||
|
@ -187,7 +187,23 @@
|
||||
</tr>
|
||||
{{# }); }}
|
||||
|
||||
{{# } else if(d.cat === "funnel"){ }}
|
||||
|
||||
{{# layui.each(d.condata, function(indexs, items) { }}
|
||||
<tr >
|
||||
<td>{{items.title}}</td>
|
||||
{{# layui.each(items.data, function(indexss, itemss){ }}
|
||||
<td>
|
||||
<p>{{itemss.n}}</p>
|
||||
<p>{{itemss.p}}%</p>
|
||||
</td>
|
||||
{{# }); }}
|
||||
</tr>
|
||||
{{# }); }}
|
||||
|
||||
{{# } }}
|
||||
|
||||
|
||||
|
||||
</tbody>
|
||||
|
||||
@ -301,14 +317,14 @@
|
||||
{{# if(d.chain_ratiotype != ''){ }}
|
||||
{{# if(d.chain_ratiotype == '+'){ }}
|
||||
<div class="proportion-data">较环比 <div class="sanjiao"></div><span>{{d.chain_ratio}}%</span></div>
|
||||
{{# } else { }}
|
||||
{{# } else if( d.wowtype == "-" ) { }}
|
||||
<div class="proportion-data">较环比 <div class="sanjiao fu"></div><span class="funum">{{d.chain_ratio}}%</span></div>
|
||||
{{# } }}
|
||||
{{# } }}
|
||||
{{# if(d.wowtype != ''){ }}
|
||||
{{# if(d.wowtype == "+"){ }}
|
||||
<div class="proportion-data">较同比 <div class="sanjiao"></div><span>{{d.wow}}%</span></div>
|
||||
{{# } else { }}
|
||||
{{# } else if( d.wowtype == "-" ) { }}
|
||||
<div class="proportion-data">较同比 <div class="sanjiao fu"></div><span class="funum">{{d.wow}}%</span></div>
|
||||
{{# } }}
|
||||
{{# } }}
|
||||
|
@ -15,7 +15,7 @@
|
||||
{{# if(d.date != ""){ }}
|
||||
<span class="model-times" id="times{{d.id}}" data-id="{{d.id}}" data-cat="{{d.cat}}" data-modelsize="{{d.modelsize}}" data-modeltype="{{d.modeltype}}" data-name="{{d.name}}">{{d.date}}</span><img src="./static/img/xiajiantou.png">
|
||||
{{# } }}
|
||||
{{# if(d.cat != "scatter" && d.cat != "retention"){ }}
|
||||
{{# if(d.cat != "scatter" && d.cat != "retention" && d.cat != "funnel"){ }}
|
||||
<div class="xian"></div>
|
||||
<span class="model-screenlist" id="screenlist{{d.id}}" data-modelsize="{{d.modelsize}}" data-modeltype="{{d.modeltype}}" data-name="{{d.name}}" data-cat="{{d.cat}}" data-id="{{d.id}}">{{d.timeParticleSize}}</span><img src="./static/img/xiajiantou.png">
|
||||
{{# } }}
|
||||
@ -52,7 +52,7 @@
|
||||
{{# if(d.cat != "user_property"){ }}
|
||||
<span class="model-times" id="times{{d.id}}" data-id="{{d.id}}" data-cat="{{d.cat}}" data-modelsize="{{d.modelsize}}" data-modeltype="{{d.modeltype}}" data-name="{{d.name}}" >{{d.date}}</span><img src="./static/img/xiajiantou.png">
|
||||
<div class="xian"></div>
|
||||
{{# if(d.date != "" && d.cat != "scatter" && d.cat != "retention" && d.cat != "trace"){ }}
|
||||
{{# if(d.date != "" && d.cat != "scatter" && d.cat != "retention" && d.cat != "trace" && d.cat != "funnel"){ }}
|
||||
<span class="model-screenlist" id="screenlist{{d.id}}" data-modelsize="{{d.modelsize}}" data-modeltype="{{d.modeltype}}" data-name="{{d.name}}" data-cat="{{d.cat}}" data-id="{{d.id}}" >{{d.timeParticleSize}}</span><img src="./static/img/xiajiantou.png">
|
||||
{{# } }}
|
||||
{{# if(d.cat === "retention"){ }}
|
||||
|
482
web/src/x.min.js
vendored
482
web/src/x.min.js
vendored
@ -134,15 +134,16 @@ var X = window.X || {
|
||||
]
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
|
||||
(function(){
|
||||
//本地李伟
|
||||
var ipurl = "http://10.0.0.240:7899/api/v1/";
|
||||
// var ipurl = "http://10.0.0.240:7899/api/v1/";
|
||||
|
||||
//本地李宗振
|
||||
// var ipurl = "http://10.0.0.94:7899/api/v1/";
|
||||
// 线上
|
||||
// var ipurl = "http://139.159.159.3:9865/api/v1/";
|
||||
var ipurl = "http://139.159.159.3:9865/api/v1/";
|
||||
//线上测试
|
||||
// var ipurl = "http://139.159.159.3:7889/api/v1/";
|
||||
|
||||
@ -1231,6 +1232,7 @@ var X = window.X || {
|
||||
titledata:data.title,
|
||||
condata:data.value
|
||||
}
|
||||
console.log('45465465456',dataArr)
|
||||
callback && callback(dataArr);
|
||||
};
|
||||
|
||||
@ -1337,6 +1339,147 @@ var X = window.X || {
|
||||
callback && callback(dataArr);
|
||||
};
|
||||
|
||||
X.funneltable=function(data,callback){
|
||||
var arr = {};
|
||||
var seriesData = [];
|
||||
var xAxisdata = [];
|
||||
if(jQuery.isEmptyObject(data.date_data)){
|
||||
var arr = []
|
||||
for(let i in data['summary_values']){
|
||||
var index = data['summary_values'][i]['p'].length - 1;
|
||||
arr.push(data['summary_values'][i]['p'][index]);
|
||||
}
|
||||
|
||||
seriesData = {
|
||||
type: 'line',
|
||||
data: arr
|
||||
}
|
||||
}else {
|
||||
var arr =[];
|
||||
for(let i in data['date_data']){
|
||||
xAxisdata.push(i);
|
||||
for(let j in data['date_data'][i]){
|
||||
if(arr[j]){
|
||||
arr[j][i] = data['date_data'][i][j]['p1'];
|
||||
}else {
|
||||
arr[j]=[];
|
||||
arr[j][i] = data['date_data'][i][j]['p1'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var ydata = {};
|
||||
for(let j in arr){
|
||||
if(!ydata[j]){
|
||||
ydata[j] = [];
|
||||
}
|
||||
for( let i in xAxisdata ){
|
||||
ydata[j].push(0);
|
||||
for(let z in arr[j]){
|
||||
if(xAxisdata[i] == z){
|
||||
var index = arr[j][z].length - 1;
|
||||
ydata[j][i] =arr[j][z][index];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
xAxisdata.unshift('总体');
|
||||
|
||||
var tabdata = [];
|
||||
for(let i in ydata){
|
||||
var arr = {
|
||||
'title': i,
|
||||
'data':[]
|
||||
}
|
||||
for(let j in ydata[i]){
|
||||
var nrr = {
|
||||
n:'',
|
||||
p:ydata[i][j]
|
||||
}
|
||||
arr['data'].push(nrr);
|
||||
}
|
||||
tabdata.push(arr);
|
||||
}
|
||||
|
||||
var date = data['start_date'] + " - " + data['end_date'];
|
||||
var dataArr = {
|
||||
titledata: xAxisdata,
|
||||
condata: tabdata,
|
||||
date:date
|
||||
}
|
||||
console.log(dataArr)
|
||||
callback && callback(dataArr);
|
||||
|
||||
}
|
||||
|
||||
X.funnelchart=function(data,callback){
|
||||
var arr = {};
|
||||
var legenddata = [];
|
||||
var seriesData = [];
|
||||
var xAxisdata = [];
|
||||
if(jQuery.isEmptyObject(data.date_data)){
|
||||
var arr = []
|
||||
for(let i in data['summary_values']){
|
||||
var index = data['summary_values'][i]['p'].length - 1;
|
||||
arr.push(data['summary_values'][i]['p'][index]);
|
||||
}
|
||||
|
||||
seriesData = {
|
||||
type: 'line',
|
||||
data: arr
|
||||
}
|
||||
}else {
|
||||
var arr =[];
|
||||
for(let i in data['date_data']){
|
||||
xAxisdata.push(i);
|
||||
for(let j in data['date_data'][i]){
|
||||
if(arr[j]){
|
||||
arr[j][i] = data['date_data'][i][j]['p1'];
|
||||
}else {
|
||||
arr[j]=[];
|
||||
arr[j][i] = data['date_data'][i][j]['p1'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var ydata = {};
|
||||
for(let j in arr){
|
||||
if(!ydata[j]){
|
||||
ydata[j] = [];
|
||||
}
|
||||
for( let i in xAxisdata ){
|
||||
ydata[j].push("");
|
||||
for(let z in arr[j]){
|
||||
if(xAxisdata[i] == z){
|
||||
var index = arr[j][z].length - 1;
|
||||
ydata[j][i] =arr[j][z][index];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for(let i in ydata){
|
||||
legenddata.push(i);
|
||||
var arr = {
|
||||
name: i,
|
||||
type: 'line',
|
||||
data: ydata[i]
|
||||
}
|
||||
seriesData.push(arr)
|
||||
}
|
||||
|
||||
}
|
||||
var date = data['start_date'] + " - " + data['end_date'];
|
||||
var dataArr = {
|
||||
xAxisData:xAxisdata,
|
||||
legenddata:legenddata,
|
||||
seriesData:seriesData,
|
||||
date:date,
|
||||
}
|
||||
callback && callback(dataArr);
|
||||
}
|
||||
|
||||
// 分组项
|
||||
// X.grouped=function(data,id){
|
||||
@ -1456,6 +1599,7 @@ var X = window.X || {
|
||||
X.DATA['user_propertyid'] = "";
|
||||
X.DATA['scatterid'] = "";
|
||||
X.DATA['traceid'] = "";
|
||||
X.DATA['FUNNELid'] = "";
|
||||
if(url != "userinfolist" && url != "routeanalysis"){
|
||||
X.DATA['trace_query_cond'] = ""
|
||||
}
|
||||
@ -6096,6 +6240,7 @@ var X = window.X || {
|
||||
|
||||
});
|
||||
|
||||
|
||||
// $(".username").html(X.DATA.userinfo.name);
|
||||
|
||||
// 选择项目
|
||||
@ -6502,6 +6647,8 @@ var X = window.X || {
|
||||
gourl = 'distribution';
|
||||
}else if(cat == 'trace'){
|
||||
gourl = 'routeanalysis';
|
||||
}else if(cat == 'funnel'){
|
||||
gourl = 'funnelanalysis';
|
||||
}
|
||||
|
||||
X.gourl(gourl,'conetnt');//跳到对应的分析页面
|
||||
@ -6963,6 +7110,7 @@ var X = window.X || {
|
||||
//总体逻辑是:根据获取到的看板内容去先渲染放置的框,在根据不同分析模型处理对应的数据进行填充
|
||||
fillmodeldata:function(d,id,type){
|
||||
X.modelapi("ck/"+d['model']+"_model","post",{report_id:d['report_id']},function(val){
|
||||
// return
|
||||
if(typeof val == 'string'){
|
||||
$('#model-two-'+d['report_id']).html('<span class="woshujv">'+ val +'</span>');
|
||||
}else {
|
||||
@ -7269,6 +7417,40 @@ var X = window.X || {
|
||||
data['date'] = val['start_date'] + " - " + val['end_date'];
|
||||
eventdata.push(data);
|
||||
|
||||
}else if(d['model'] == 'funnel'){
|
||||
// 漏斗分析
|
||||
if(d['graph_type'] == "table"){
|
||||
X.funneltable(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['desc'] = d['desc'];
|
||||
data['reverseorder']=d['reverseorder'];
|
||||
eventdata.push(data);
|
||||
if(d['ascending']){
|
||||
var condatalength = eventdata[0]['condata'].length;
|
||||
var condataascend=[];
|
||||
for(var i = condatalength - 1; i >= 0; i--){
|
||||
condataascend.push(eventdata[0]['condata'][i]);
|
||||
}
|
||||
eventdata[0]['condata'] = condataascend;
|
||||
}
|
||||
})
|
||||
}else{
|
||||
X.funnelchart(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['desc'] = d['desc'];
|
||||
data['avesumdata']= false;
|
||||
data['daydata'] = d['daydata'];
|
||||
eventdata.push(data);
|
||||
})
|
||||
}
|
||||
}
|
||||
eventdata[0]['authority'] = X.DATA.authority;
|
||||
return eventdata;
|
||||
@ -9465,7 +9647,8 @@ var X = window.X || {
|
||||
},
|
||||
"events":[
|
||||
|
||||
]
|
||||
],
|
||||
"single":[]
|
||||
};
|
||||
|
||||
// 日期渲染
|
||||
@ -9493,9 +9676,26 @@ var X = window.X || {
|
||||
|
||||
var eventdata;
|
||||
var groupitemeventsdata//分组项里的事件
|
||||
var filter_map,quotas_map;
|
||||
var filter_map,quotas_map,type2data;
|
||||
// var screentypearr = [];
|
||||
|
||||
layui.form.render();
|
||||
var switchTest = true;
|
||||
//指定开关事件
|
||||
layui.form.on('switch(switchTest)', function(res){
|
||||
if(this.checked){
|
||||
$(".funnelanalysis-screen-box").show();
|
||||
$(".single-box").hide();
|
||||
}else {
|
||||
$('.funnelanalysis-screen-box').hide();
|
||||
$(".single-box").show();
|
||||
|
||||
$(".single-eventName").html(data['single'][0]['eventName'])
|
||||
$(".single-eventName").html(data['single'][0]['analysisDesc'])
|
||||
}
|
||||
switchTest = this.checked
|
||||
});
|
||||
|
||||
X.api("data_auth/my_event","get",{},function(d){
|
||||
eventdata = d;
|
||||
var arr = [{
|
||||
@ -9503,62 +9703,166 @@ var X = window.X || {
|
||||
"eventName":eventdata[0]['category'][0]['event_name'],
|
||||
"filts":[],
|
||||
"relation":"and",
|
||||
"relationUser":"and",
|
||||
"condrelation":"and",
|
||||
"renameindicator":""
|
||||
},{
|
||||
"eventDesc":eventdata[0]['category'][0]['event_desc'],
|
||||
"eventName":eventdata[0]['category'][0]['event_name'],
|
||||
"filts":[],
|
||||
"relation":"and",
|
||||
"relationUser":"and",
|
||||
"condrelation":"and",
|
||||
"renameindicator":""
|
||||
}
|
||||
]
|
||||
data['events'] = arr;
|
||||
X.api("data_auth/load_filter_props","post",{event_name:d[0]['category'][0]['event_name']},function(val){
|
||||
data['single'][0] = {
|
||||
"eventDesc":eventdata[0]['category'][0]['event_desc'],
|
||||
"eventName":eventdata[0]['category'][0]['event_name'],
|
||||
"analysis":"times",
|
||||
"analysisDesc":"次数",
|
||||
"filts": [],
|
||||
"intervalType": "def",
|
||||
"quota": "*",
|
||||
"quotaname": "次数",
|
||||
"relation": "and",
|
||||
"type": "normal",
|
||||
"renameindicator": "",
|
||||
"label_id": "",
|
||||
"data_type": null
|
||||
}
|
||||
X.api("data_auth/load_prop_quotas","post",{event_name:eventdata[0]['category'][0]['event_name']},function(d){
|
||||
var retdata = d.staid_quots.concat(d.props);
|
||||
// props = d.props;
|
||||
|
||||
type2data= retdata
|
||||
|
||||
groupitemeventsdata= val;
|
||||
X.api("data_auth/load_filter_props","post",{event_name:eventdata[0]['category'][0]['event_name']},function(val){
|
||||
|
||||
X.api("data_auth/filter_map","get",{},function(d){
|
||||
filter_map = d;
|
||||
|
||||
X.api('data_auth/quotas_map',"get",{},function(d){
|
||||
quotas_map = d;
|
||||
//从数据看板点击进来触发事件
|
||||
// if(X.DATA.retentionid && X.DATA.retentionid != ''){
|
||||
// var report_idarr = [];
|
||||
// report_idarr.push(X.DATA.retentionid);
|
||||
// X.api('report/read_report','post',{project_id:X.DATA.projectid,report_id:report_idarr},function(d){
|
||||
// backfilldata(d[0]);
|
||||
// })
|
||||
// }
|
||||
|
||||
//初始事件
|
||||
X.template("funnel","funnel-event",data['events']);
|
||||
groupitemeventsdata= val;
|
||||
|
||||
X.api("data_auth/filter_map","get",{},function(d){
|
||||
filter_map = d;
|
||||
|
||||
X.api('data_auth/quotas_map',"get",{},function(d){
|
||||
quotas_map = d;
|
||||
//从数据看板点击进来触发事件
|
||||
if(X.DATA.funnelid && X.DATA.funnelid != ''){
|
||||
var report_idarr = [];
|
||||
report_idarr.push(X.DATA.funnelid);
|
||||
X.api('report/read_report','post',{project_id:X.DATA.projectid,report_id:report_idarr},function(d){
|
||||
backfilldata(d[0]);
|
||||
})
|
||||
}
|
||||
|
||||
//初始事件
|
||||
X.template("funnel","funnel-event",data['events']);
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
})
|
||||
|
||||
});
|
||||
|
||||
var baobiaodata;
|
||||
function backfilldata(d){
|
||||
if(d){
|
||||
data = d.query;
|
||||
var time = $("#retained-condition-date").val();
|
||||
var timearr = time.split(" ");
|
||||
data['eventView']['startTime'] = timearr[0] + " "+"00:00:00";
|
||||
data['eventView']['endTime'] = timearr[2]+" "+"23:59:59";
|
||||
baobiaodata = d;
|
||||
// 数据看板点进来时吧保存的时间初始化为当前时间
|
||||
var time = $("#retained-condition-date").val();
|
||||
var timearr = time.split(" ");
|
||||
data['eventView']['startTime'] = timearr[0] + " "+"00:00:00";
|
||||
data['eventView']['endTime'] = timearr[2]+" "+"23:59:59";
|
||||
|
||||
X.template("funnel","funnel-event",data['events'],function(){
|
||||
var drr = [];
|
||||
if(data['events'].length > 2){
|
||||
$(".analysis-del").show();
|
||||
}else {
|
||||
$(".analysis-del").hide();
|
||||
}
|
||||
});
|
||||
X.template("globalfilter","xinwei-whole",data['eventView']['filts'],function(){
|
||||
renderdate();
|
||||
});
|
||||
X.template("grouped","shushi",data['eventView']['groupBy']);
|
||||
retaineddata();
|
||||
}
|
||||
};
|
||||
|
||||
//开启重命名
|
||||
$(document).off('click','.analysis-chongmingming-initial-event').on('click','.analysis-chongmingming-initial-event',function(){
|
||||
$("#analysis-con-left-screen-list-left-zhibiaoname-initial-event").show();
|
||||
// $(document).off('click','.analysis-chongmingming-initial-event').on('click','.analysis-chongmingming-initial-event',function(){
|
||||
// $("#analysis-con-left-screen-list-left-zhibiaoname-initial-event").show();
|
||||
// $(this).hide();
|
||||
// $(".analysis-chongmingming-del-initial-event").show();
|
||||
// });
|
||||
$(document).off('click','.analysis-chongmingming').on('click','.analysis-chongmingming',function(){
|
||||
var index = $(this).attr('data-index');
|
||||
$("#analysis-con-left-screen-list-left-zhibiaoname-"+index).show();
|
||||
|
||||
$(this).hide();
|
||||
$(".analysis-chongmingming-del-initial-event").show();
|
||||
});
|
||||
|
||||
//取消重命名
|
||||
$(document).off('click','.analysis-chongmingming-del-initial-event').on('click','.analysis-chongmingming-del-initial-event',function(){
|
||||
$("#analysis-con-left-screen-list-left-zhibiaoname-initial-event").hide();
|
||||
$("#analysis-con-left-screen-list-left-zhibiaoname-initial-event input").val('');
|
||||
// $(document).off('click','.analysis-chongmingming-del-initial-event').on('click','.analysis-chongmingming-del-initial-event',function(){
|
||||
// $("#analysis-con-left-screen-list-left-zhibiaoname-initial-event").hide();
|
||||
// $("#analysis-con-left-screen-list-left-zhibiaoname-initial-event input").val('');
|
||||
// $(this).hide();
|
||||
// $(".analysis-chongmingming").show();
|
||||
// });
|
||||
$(document).off('click','.analysis-chongmingming-del').on('click','.analysis-chongmingming-del',function(){
|
||||
var index = $(this).attr('data-index');
|
||||
$("#analysis-con-left-screen-list-left-zhibiaoname-"+index).hide();
|
||||
$("#analysis-con-left-screen-list-left-zhibiaoname-"+index+ " input").val('');
|
||||
$(this).hide();
|
||||
$(".analysis-chongmingming-initial-event").show();
|
||||
$(".analysis-chongmingming").show();
|
||||
});
|
||||
|
||||
$(document).off("blur",'.analysis-con-left-screen-list-left-zhibiaoname-txt').on('blur','.analysis-con-left-screen-list-left-zhibiaoname-txt',function(){
|
||||
var index = $(this).attr('data-index');
|
||||
// console.log(data)
|
||||
data['events'][index]['renameindicator'] = $(this).val();
|
||||
})
|
||||
|
||||
$(document).off('click','.analysis-zhibiao-list-type2').on('click','.analysis-zhibiao-list-type2',function(){
|
||||
var obj = $(this);
|
||||
var offset = obj.offset();
|
||||
var index = obj.attr("data-index");
|
||||
if(type2data.length >0){
|
||||
X.parametersopen(type2data,'dropdownlist',[offset.top+obj.height(),offset.left],function(val){
|
||||
if(val != undefined){
|
||||
obj.html(val.title);
|
||||
console.log(val)
|
||||
data['single'][0]['analysisDesc'] = val.title;
|
||||
data['single'][0]['analysis'] = val.id;
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$(document).off("click",'.analysis-con-left-screen-list-right-screen-qh-tit').on("click",'.analysis-con-left-screen-list-right-screen-qh-tit',function(){
|
||||
var index = $(this).attr('data-index');
|
||||
if($(this).html() == '或'){
|
||||
$(this).html('且')
|
||||
data['events'][index]['condrelation'] = 'and'
|
||||
}else {
|
||||
$(this).html('或')
|
||||
data['events'][index]['condrelation'] = 'or'
|
||||
}
|
||||
})
|
||||
|
||||
// 添加指标
|
||||
function addindex(){
|
||||
var defaultindicator = {
|
||||
@ -9566,7 +9870,7 @@ var X = window.X || {
|
||||
"eventName":eventdata[0]['category'][0]['event_name'],
|
||||
"filts":[],
|
||||
"relation":"and",
|
||||
"relationUser":"and",
|
||||
"condrelation":"and",
|
||||
"renameindicator":""
|
||||
}
|
||||
data['events'].push(defaultindicator);
|
||||
@ -9646,8 +9950,14 @@ var X = window.X || {
|
||||
// console.log(dataevent);
|
||||
X.querycriteriapop(eventdata,'setgrouping',offset.left,offset.top+obj.height(),function(val){
|
||||
obj.html(val.id);
|
||||
dataevent['eventName'] = val.name;
|
||||
dataevent['eventDesc'] = val.id;
|
||||
if(switchTest){
|
||||
dataevent['eventName'] = val.name;
|
||||
dataevent['eventDesc'] = val.id;
|
||||
}else {
|
||||
data['single'][0]['eventName'] = val.name;
|
||||
data['single'][0]['eventDesc'] = val.id;
|
||||
}
|
||||
|
||||
|
||||
X.api("data_auth/load_filter_props","post",{event_name:val.name},function(val){
|
||||
groupitemeventsdata = val;
|
||||
@ -9708,6 +10018,46 @@ var X = window.X || {
|
||||
})
|
||||
});
|
||||
|
||||
$(document).off("click",'.analysis-zhibiao-list-type4').on('click','.analysis-zhibiao-list-type4',function(){
|
||||
var obj = $(this);
|
||||
var offset = obj.offset();
|
||||
var index = $(this).attr("data-index");
|
||||
var indexs = $(this).attr("data-indexs");
|
||||
var comparator = data['events'][index]['filts'][indexs]['comparator'];
|
||||
var columnName = data['events'][index]['filts'][indexs]['columnName'];
|
||||
|
||||
X.api("data_mana/select_attr","post",{attr_name:columnName},function(val){
|
||||
if(val != "查无数据"){
|
||||
X.parametersopen(val['map_'],'dropdownlist',[offset.top+obj.height(),offset.left],function(val){
|
||||
if(comparator == "in"){
|
||||
if(data['events'][index]['filts'][indexs]['strftv'] == "" ){
|
||||
var strftv = val.title;
|
||||
data['events'][index]['filts'][indexs]['ftv'].push(val.id);
|
||||
}else {
|
||||
var strftv = data['events'][index]['filts'][indexs]['strftv'] + "," + val.title;
|
||||
data['events'][index]['filts'][indexs]['ftv'].push(val.id);
|
||||
}
|
||||
data['events'][index]['filts'][indexs]['strftv'] = strftv;
|
||||
}else {
|
||||
data['events'][index]['filts'][indexs]['strftv'] = val.title;
|
||||
var arr = [];
|
||||
arr.push(val.id);
|
||||
data['events'][index]['filts'][indexs]['ftv'] = arr;
|
||||
}
|
||||
|
||||
X.template("funnel","funnel-event",data['events'],function(){
|
||||
var drr = [];
|
||||
if(data['events'].length > 2){
|
||||
$(".analysis-del").show();
|
||||
}else {
|
||||
$(".analysis-del").hide();
|
||||
}
|
||||
});
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
$(document).off('blur','.analysis-zhibiao-list-type4 input').on('blur','.analysis-zhibiao-list-type4 input',function(){
|
||||
var index = $(this).attr('data-index');
|
||||
var indexs = $(this).attr('data-indexs');
|
||||
@ -9934,28 +10284,53 @@ var X = window.X || {
|
||||
|
||||
// 计算按钮
|
||||
$(document).off('click','.analysis-calculation').on('click','.analysis-calculation',function(){
|
||||
console.log(data)
|
||||
retaineddata()
|
||||
});
|
||||
var querydata;
|
||||
function retaineddata(){
|
||||
var dataArr = {
|
||||
eventView: data.eventView,
|
||||
events: data.events
|
||||
}
|
||||
X.api("ck/funnel_model","post",dataArr,function(d){
|
||||
if(d != "查无数据"){
|
||||
d['etitle'] = $.extend(true,[],d['title']);
|
||||
if(d['title'].length == 2){
|
||||
d['etitle'].unshift('总体');
|
||||
}
|
||||
querydata = d;
|
||||
updata(d)
|
||||
}else {
|
||||
layer.msg('查无数据');
|
||||
if(switchTest){
|
||||
$("#funnel-echarts").show();
|
||||
var dataArr = {
|
||||
eventView: data.eventView,
|
||||
events: data.events
|
||||
}
|
||||
})
|
||||
X.api("ck/funnel_model","post",dataArr,function(d){
|
||||
if(d != "查无数据"){
|
||||
d['etitle'] = $.extend(true,[],d['title']);
|
||||
if(d['title'].length == 2){
|
||||
d['etitle'].unshift('总体');
|
||||
}
|
||||
querydata = d;
|
||||
updata(d)
|
||||
}else {
|
||||
layer.msg('查无数据');
|
||||
}
|
||||
})
|
||||
}else {
|
||||
$("#funnel-echarts").hide();
|
||||
var dataArr = {
|
||||
eventView: data.eventView,
|
||||
events: data.single
|
||||
}
|
||||
|
||||
X.api("ck/guide_model","post",dataArr,function(d){
|
||||
if(d != "查无数据"){
|
||||
console.log(d)
|
||||
updata2(d)
|
||||
}else {
|
||||
layer.msg('查无数据');
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
function updata2(d){
|
||||
X.laytpldata("#table-fenxi-th-single-dot",d.level,".table-fenxi-th");
|
||||
X.laytpldata("#table-fenxi-td-single-dot",d.list,".table-fenxi-td");
|
||||
}
|
||||
|
||||
function updata(d){
|
||||
var title = $(".select-chart").attr("title");
|
||||
if(title == '转化图'){ retainedtable(d); retaineddayRetained(d);}
|
||||
@ -10132,6 +10507,7 @@ var X = window.X || {
|
||||
],
|
||||
series: seriesData
|
||||
};
|
||||
|
||||
myChart.setOption(option,true);
|
||||
|
||||
};
|
||||
|
@ -52,6 +52,7 @@
|
||||
X.DATA['user_propertyid'] = "";
|
||||
X.DATA['scatterid'] = "";
|
||||
X.DATA['traceid'] = "";
|
||||
X.DATA['FUNNELid'] = "";
|
||||
if(url != "userinfolist" && url != "routeanalysis"){
|
||||
X.DATA['trace_query_cond'] = ""
|
||||
}
|
||||
|
@ -133,15 +133,16 @@ var X = window.X || {
|
||||
]
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
|
||||
(function(){
|
||||
//本地李伟
|
||||
var ipurl = "http://10.0.0.240:7899/api/v1/";
|
||||
// var ipurl = "http://10.0.0.240:7899/api/v1/";
|
||||
|
||||
//本地李宗振
|
||||
// var ipurl = "http://10.0.0.94:7899/api/v1/";
|
||||
// 线上
|
||||
// var ipurl = "http://139.159.159.3:9865/api/v1/";
|
||||
var ipurl = "http://139.159.159.3:9865/api/v1/";
|
||||
//线上测试
|
||||
// var ipurl = "http://139.159.159.3:7889/api/v1/";
|
||||
|
||||
@ -1230,6 +1231,7 @@ var X = window.X || {
|
||||
titledata:data.title,
|
||||
condata:data.value
|
||||
}
|
||||
console.log('45465465456',dataArr)
|
||||
callback && callback(dataArr);
|
||||
};
|
||||
|
||||
@ -1336,6 +1338,147 @@ var X = window.X || {
|
||||
callback && callback(dataArr);
|
||||
};
|
||||
|
||||
X.funneltable=function(data,callback){
|
||||
var arr = {};
|
||||
var seriesData = [];
|
||||
var xAxisdata = [];
|
||||
if(jQuery.isEmptyObject(data.date_data)){
|
||||
var arr = []
|
||||
for(let i in data['summary_values']){
|
||||
var index = data['summary_values'][i]['p'].length - 1;
|
||||
arr.push(data['summary_values'][i]['p'][index]);
|
||||
}
|
||||
|
||||
seriesData = {
|
||||
type: 'line',
|
||||
data: arr
|
||||
}
|
||||
}else {
|
||||
var arr =[];
|
||||
for(let i in data['date_data']){
|
||||
xAxisdata.push(i);
|
||||
for(let j in data['date_data'][i]){
|
||||
if(arr[j]){
|
||||
arr[j][i] = data['date_data'][i][j]['p1'];
|
||||
}else {
|
||||
arr[j]=[];
|
||||
arr[j][i] = data['date_data'][i][j]['p1'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var ydata = {};
|
||||
for(let j in arr){
|
||||
if(!ydata[j]){
|
||||
ydata[j] = [];
|
||||
}
|
||||
for( let i in xAxisdata ){
|
||||
ydata[j].push(0);
|
||||
for(let z in arr[j]){
|
||||
if(xAxisdata[i] == z){
|
||||
var index = arr[j][z].length - 1;
|
||||
ydata[j][i] =arr[j][z][index];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
xAxisdata.unshift('总体');
|
||||
|
||||
var tabdata = [];
|
||||
for(let i in ydata){
|
||||
var arr = {
|
||||
'title': i,
|
||||
'data':[]
|
||||
}
|
||||
for(let j in ydata[i]){
|
||||
var nrr = {
|
||||
n:'',
|
||||
p:ydata[i][j]
|
||||
}
|
||||
arr['data'].push(nrr);
|
||||
}
|
||||
tabdata.push(arr);
|
||||
}
|
||||
|
||||
var date = data['start_date'] + " - " + data['end_date'];
|
||||
var dataArr = {
|
||||
titledata: xAxisdata,
|
||||
condata: tabdata,
|
||||
date:date
|
||||
}
|
||||
console.log(dataArr)
|
||||
callback && callback(dataArr);
|
||||
|
||||
}
|
||||
|
||||
X.funnelchart=function(data,callback){
|
||||
var arr = {};
|
||||
var legenddata = [];
|
||||
var seriesData = [];
|
||||
var xAxisdata = [];
|
||||
if(jQuery.isEmptyObject(data.date_data)){
|
||||
var arr = []
|
||||
for(let i in data['summary_values']){
|
||||
var index = data['summary_values'][i]['p'].length - 1;
|
||||
arr.push(data['summary_values'][i]['p'][index]);
|
||||
}
|
||||
|
||||
seriesData = {
|
||||
type: 'line',
|
||||
data: arr
|
||||
}
|
||||
}else {
|
||||
var arr =[];
|
||||
for(let i in data['date_data']){
|
||||
xAxisdata.push(i);
|
||||
for(let j in data['date_data'][i]){
|
||||
if(arr[j]){
|
||||
arr[j][i] = data['date_data'][i][j]['p1'];
|
||||
}else {
|
||||
arr[j]=[];
|
||||
arr[j][i] = data['date_data'][i][j]['p1'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var ydata = {};
|
||||
for(let j in arr){
|
||||
if(!ydata[j]){
|
||||
ydata[j] = [];
|
||||
}
|
||||
for( let i in xAxisdata ){
|
||||
ydata[j].push("");
|
||||
for(let z in arr[j]){
|
||||
if(xAxisdata[i] == z){
|
||||
var index = arr[j][z].length - 1;
|
||||
ydata[j][i] =arr[j][z][index];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for(let i in ydata){
|
||||
legenddata.push(i);
|
||||
var arr = {
|
||||
name: i,
|
||||
type: 'line',
|
||||
data: ydata[i]
|
||||
}
|
||||
seriesData.push(arr)
|
||||
}
|
||||
|
||||
}
|
||||
var date = data['start_date'] + " - " + data['end_date'];
|
||||
var dataArr = {
|
||||
xAxisData:xAxisdata,
|
||||
legenddata:legenddata,
|
||||
seriesData:seriesData,
|
||||
date:date,
|
||||
}
|
||||
callback && callback(dataArr);
|
||||
}
|
||||
|
||||
// 分组项
|
||||
// X.grouped=function(data,id){
|
||||
|
@ -48,6 +48,7 @@
|
||||
|
||||
});
|
||||
|
||||
|
||||
// $(".username").html(X.DATA.userinfo.name);
|
||||
|
||||
// 选择项目
|
||||
@ -454,6 +455,8 @@
|
||||
gourl = 'distribution';
|
||||
}else if(cat == 'trace'){
|
||||
gourl = 'routeanalysis';
|
||||
}else if(cat == 'funnel'){
|
||||
gourl = 'funnelanalysis';
|
||||
}
|
||||
|
||||
X.gourl(gourl,'conetnt');//跳到对应的分析页面
|
||||
@ -915,6 +918,7 @@
|
||||
//总体逻辑是:根据获取到的看板内容去先渲染放置的框,在根据不同分析模型处理对应的数据进行填充
|
||||
fillmodeldata:function(d,id,type){
|
||||
X.modelapi("ck/"+d['model']+"_model","post",{report_id:d['report_id']},function(val){
|
||||
// return
|
||||
if(typeof val == 'string'){
|
||||
$('#model-two-'+d['report_id']).html('<span class="woshujv">'+ val +'</span>');
|
||||
}else {
|
||||
@ -1221,6 +1225,40 @@
|
||||
data['date'] = val['start_date'] + " - " + val['end_date'];
|
||||
eventdata.push(data);
|
||||
|
||||
}else if(d['model'] == 'funnel'){
|
||||
// 漏斗分析
|
||||
if(d['graph_type'] == "table"){
|
||||
X.funneltable(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['desc'] = d['desc'];
|
||||
data['reverseorder']=d['reverseorder'];
|
||||
eventdata.push(data);
|
||||
if(d['ascending']){
|
||||
var condatalength = eventdata[0]['condata'].length;
|
||||
var condataascend=[];
|
||||
for(var i = condatalength - 1; i >= 0; i--){
|
||||
condataascend.push(eventdata[0]['condata'][i]);
|
||||
}
|
||||
eventdata[0]['condata'] = condataascend;
|
||||
}
|
||||
})
|
||||
}else{
|
||||
X.funnelchart(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['desc'] = d['desc'];
|
||||
data['avesumdata']= false;
|
||||
data['daydata'] = d['daydata'];
|
||||
eventdata.push(data);
|
||||
})
|
||||
}
|
||||
}
|
||||
eventdata[0]['authority'] = X.DATA.authority;
|
||||
return eventdata;
|
||||
|
@ -20,7 +20,8 @@
|
||||
},
|
||||
"events":[
|
||||
|
||||
]
|
||||
],
|
||||
"single":[]
|
||||
};
|
||||
|
||||
// 日期渲染
|
||||
@ -48,9 +49,26 @@
|
||||
|
||||
var eventdata;
|
||||
var groupitemeventsdata//分组项里的事件
|
||||
var filter_map,quotas_map;
|
||||
var filter_map,quotas_map,type2data;
|
||||
// var screentypearr = [];
|
||||
|
||||
layui.form.render();
|
||||
var switchTest = true;
|
||||
//指定开关事件
|
||||
layui.form.on('switch(switchTest)', function(res){
|
||||
if(this.checked){
|
||||
$(".funnelanalysis-screen-box").show();
|
||||
$(".single-box").hide();
|
||||
}else {
|
||||
$('.funnelanalysis-screen-box').hide();
|
||||
$(".single-box").show();
|
||||
|
||||
$(".single-eventName").html(data['single'][0]['eventName'])
|
||||
$(".single-eventName").html(data['single'][0]['analysisDesc'])
|
||||
}
|
||||
switchTest = this.checked
|
||||
});
|
||||
|
||||
X.api("data_auth/my_event","get",{},function(d){
|
||||
eventdata = d;
|
||||
var arr = [{
|
||||
@ -58,62 +76,166 @@
|
||||
"eventName":eventdata[0]['category'][0]['event_name'],
|
||||
"filts":[],
|
||||
"relation":"and",
|
||||
"relationUser":"and",
|
||||
"condrelation":"and",
|
||||
"renameindicator":""
|
||||
},{
|
||||
"eventDesc":eventdata[0]['category'][0]['event_desc'],
|
||||
"eventName":eventdata[0]['category'][0]['event_name'],
|
||||
"filts":[],
|
||||
"relation":"and",
|
||||
"relationUser":"and",
|
||||
"condrelation":"and",
|
||||
"renameindicator":""
|
||||
}
|
||||
]
|
||||
data['events'] = arr;
|
||||
X.api("data_auth/load_filter_props","post",{event_name:d[0]['category'][0]['event_name']},function(val){
|
||||
data['single'][0] = {
|
||||
"eventDesc":eventdata[0]['category'][0]['event_desc'],
|
||||
"eventName":eventdata[0]['category'][0]['event_name'],
|
||||
"analysis":"times",
|
||||
"analysisDesc":"次数",
|
||||
"filts": [],
|
||||
"intervalType": "def",
|
||||
"quota": "*",
|
||||
"quotaname": "次数",
|
||||
"relation": "and",
|
||||
"type": "normal",
|
||||
"renameindicator": "",
|
||||
"label_id": "",
|
||||
"data_type": null
|
||||
}
|
||||
X.api("data_auth/load_prop_quotas","post",{event_name:eventdata[0]['category'][0]['event_name']},function(d){
|
||||
var retdata = d.staid_quots.concat(d.props);
|
||||
// props = d.props;
|
||||
|
||||
type2data= retdata
|
||||
|
||||
groupitemeventsdata= val;
|
||||
X.api("data_auth/load_filter_props","post",{event_name:eventdata[0]['category'][0]['event_name']},function(val){
|
||||
|
||||
X.api("data_auth/filter_map","get",{},function(d){
|
||||
filter_map = d;
|
||||
|
||||
X.api('data_auth/quotas_map',"get",{},function(d){
|
||||
quotas_map = d;
|
||||
//从数据看板点击进来触发事件
|
||||
// if(X.DATA.retentionid && X.DATA.retentionid != ''){
|
||||
// var report_idarr = [];
|
||||
// report_idarr.push(X.DATA.retentionid);
|
||||
// X.api('report/read_report','post',{project_id:X.DATA.projectid,report_id:report_idarr},function(d){
|
||||
// backfilldata(d[0]);
|
||||
// })
|
||||
// }
|
||||
|
||||
//初始事件
|
||||
X.template("funnel","funnel-event",data['events']);
|
||||
groupitemeventsdata= val;
|
||||
|
||||
X.api("data_auth/filter_map","get",{},function(d){
|
||||
filter_map = d;
|
||||
|
||||
X.api('data_auth/quotas_map',"get",{},function(d){
|
||||
quotas_map = d;
|
||||
//从数据看板点击进来触发事件
|
||||
if(X.DATA.funnelid && X.DATA.funnelid != ''){
|
||||
var report_idarr = [];
|
||||
report_idarr.push(X.DATA.funnelid);
|
||||
X.api('report/read_report','post',{project_id:X.DATA.projectid,report_id:report_idarr},function(d){
|
||||
backfilldata(d[0]);
|
||||
})
|
||||
}
|
||||
|
||||
//初始事件
|
||||
X.template("funnel","funnel-event",data['events']);
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
})
|
||||
|
||||
});
|
||||
|
||||
var baobiaodata;
|
||||
function backfilldata(d){
|
||||
if(d){
|
||||
data = d.query;
|
||||
var time = $("#retained-condition-date").val();
|
||||
var timearr = time.split(" ");
|
||||
data['eventView']['startTime'] = timearr[0] + " "+"00:00:00";
|
||||
data['eventView']['endTime'] = timearr[2]+" "+"23:59:59";
|
||||
baobiaodata = d;
|
||||
// 数据看板点进来时吧保存的时间初始化为当前时间
|
||||
var time = $("#retained-condition-date").val();
|
||||
var timearr = time.split(" ");
|
||||
data['eventView']['startTime'] = timearr[0] + " "+"00:00:00";
|
||||
data['eventView']['endTime'] = timearr[2]+" "+"23:59:59";
|
||||
|
||||
X.template("funnel","funnel-event",data['events'],function(){
|
||||
var drr = [];
|
||||
if(data['events'].length > 2){
|
||||
$(".analysis-del").show();
|
||||
}else {
|
||||
$(".analysis-del").hide();
|
||||
}
|
||||
});
|
||||
X.template("globalfilter","xinwei-whole",data['eventView']['filts'],function(){
|
||||
renderdate();
|
||||
});
|
||||
X.template("grouped","shushi",data['eventView']['groupBy']);
|
||||
retaineddata();
|
||||
}
|
||||
};
|
||||
|
||||
//开启重命名
|
||||
$(document).off('click','.analysis-chongmingming-initial-event').on('click','.analysis-chongmingming-initial-event',function(){
|
||||
$("#analysis-con-left-screen-list-left-zhibiaoname-initial-event").show();
|
||||
// $(document).off('click','.analysis-chongmingming-initial-event').on('click','.analysis-chongmingming-initial-event',function(){
|
||||
// $("#analysis-con-left-screen-list-left-zhibiaoname-initial-event").show();
|
||||
// $(this).hide();
|
||||
// $(".analysis-chongmingming-del-initial-event").show();
|
||||
// });
|
||||
$(document).off('click','.analysis-chongmingming').on('click','.analysis-chongmingming',function(){
|
||||
var index = $(this).attr('data-index');
|
||||
$("#analysis-con-left-screen-list-left-zhibiaoname-"+index).show();
|
||||
|
||||
$(this).hide();
|
||||
$(".analysis-chongmingming-del-initial-event").show();
|
||||
});
|
||||
|
||||
//取消重命名
|
||||
$(document).off('click','.analysis-chongmingming-del-initial-event').on('click','.analysis-chongmingming-del-initial-event',function(){
|
||||
$("#analysis-con-left-screen-list-left-zhibiaoname-initial-event").hide();
|
||||
$("#analysis-con-left-screen-list-left-zhibiaoname-initial-event input").val('');
|
||||
// $(document).off('click','.analysis-chongmingming-del-initial-event').on('click','.analysis-chongmingming-del-initial-event',function(){
|
||||
// $("#analysis-con-left-screen-list-left-zhibiaoname-initial-event").hide();
|
||||
// $("#analysis-con-left-screen-list-left-zhibiaoname-initial-event input").val('');
|
||||
// $(this).hide();
|
||||
// $(".analysis-chongmingming").show();
|
||||
// });
|
||||
$(document).off('click','.analysis-chongmingming-del').on('click','.analysis-chongmingming-del',function(){
|
||||
var index = $(this).attr('data-index');
|
||||
$("#analysis-con-left-screen-list-left-zhibiaoname-"+index).hide();
|
||||
$("#analysis-con-left-screen-list-left-zhibiaoname-"+index+ " input").val('');
|
||||
$(this).hide();
|
||||
$(".analysis-chongmingming-initial-event").show();
|
||||
$(".analysis-chongmingming").show();
|
||||
});
|
||||
|
||||
$(document).off("blur",'.analysis-con-left-screen-list-left-zhibiaoname-txt').on('blur','.analysis-con-left-screen-list-left-zhibiaoname-txt',function(){
|
||||
var index = $(this).attr('data-index');
|
||||
// console.log(data)
|
||||
data['events'][index]['renameindicator'] = $(this).val();
|
||||
})
|
||||
|
||||
$(document).off('click','.analysis-zhibiao-list-type2').on('click','.analysis-zhibiao-list-type2',function(){
|
||||
var obj = $(this);
|
||||
var offset = obj.offset();
|
||||
var index = obj.attr("data-index");
|
||||
if(type2data.length >0){
|
||||
X.parametersopen(type2data,'dropdownlist',[offset.top+obj.height(),offset.left],function(val){
|
||||
if(val != undefined){
|
||||
obj.html(val.title);
|
||||
console.log(val)
|
||||
data['single'][0]['analysisDesc'] = val.title;
|
||||
data['single'][0]['analysis'] = val.id;
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$(document).off("click",'.analysis-con-left-screen-list-right-screen-qh-tit').on("click",'.analysis-con-left-screen-list-right-screen-qh-tit',function(){
|
||||
var index = $(this).attr('data-index');
|
||||
if($(this).html() == '或'){
|
||||
$(this).html('且')
|
||||
data['events'][index]['condrelation'] = 'and'
|
||||
}else {
|
||||
$(this).html('或')
|
||||
data['events'][index]['condrelation'] = 'or'
|
||||
}
|
||||
})
|
||||
|
||||
// 添加指标
|
||||
function addindex(){
|
||||
var defaultindicator = {
|
||||
@ -121,7 +243,7 @@
|
||||
"eventName":eventdata[0]['category'][0]['event_name'],
|
||||
"filts":[],
|
||||
"relation":"and",
|
||||
"relationUser":"and",
|
||||
"condrelation":"and",
|
||||
"renameindicator":""
|
||||
}
|
||||
data['events'].push(defaultindicator);
|
||||
@ -201,8 +323,14 @@
|
||||
// console.log(dataevent);
|
||||
X.querycriteriapop(eventdata,'setgrouping',offset.left,offset.top+obj.height(),function(val){
|
||||
obj.html(val.id);
|
||||
dataevent['eventName'] = val.name;
|
||||
dataevent['eventDesc'] = val.id;
|
||||
if(switchTest){
|
||||
dataevent['eventName'] = val.name;
|
||||
dataevent['eventDesc'] = val.id;
|
||||
}else {
|
||||
data['single'][0]['eventName'] = val.name;
|
||||
data['single'][0]['eventDesc'] = val.id;
|
||||
}
|
||||
|
||||
|
||||
X.api("data_auth/load_filter_props","post",{event_name:val.name},function(val){
|
||||
groupitemeventsdata = val;
|
||||
@ -263,6 +391,46 @@
|
||||
})
|
||||
});
|
||||
|
||||
$(document).off("click",'.analysis-zhibiao-list-type4').on('click','.analysis-zhibiao-list-type4',function(){
|
||||
var obj = $(this);
|
||||
var offset = obj.offset();
|
||||
var index = $(this).attr("data-index");
|
||||
var indexs = $(this).attr("data-indexs");
|
||||
var comparator = data['events'][index]['filts'][indexs]['comparator'];
|
||||
var columnName = data['events'][index]['filts'][indexs]['columnName'];
|
||||
|
||||
X.api("data_mana/select_attr","post",{attr_name:columnName},function(val){
|
||||
if(val != "查无数据"){
|
||||
X.parametersopen(val['map_'],'dropdownlist',[offset.top+obj.height(),offset.left],function(val){
|
||||
if(comparator == "in"){
|
||||
if(data['events'][index]['filts'][indexs]['strftv'] == "" ){
|
||||
var strftv = val.title;
|
||||
data['events'][index]['filts'][indexs]['ftv'].push(val.id);
|
||||
}else {
|
||||
var strftv = data['events'][index]['filts'][indexs]['strftv'] + "," + val.title;
|
||||
data['events'][index]['filts'][indexs]['ftv'].push(val.id);
|
||||
}
|
||||
data['events'][index]['filts'][indexs]['strftv'] = strftv;
|
||||
}else {
|
||||
data['events'][index]['filts'][indexs]['strftv'] = val.title;
|
||||
var arr = [];
|
||||
arr.push(val.id);
|
||||
data['events'][index]['filts'][indexs]['ftv'] = arr;
|
||||
}
|
||||
|
||||
X.template("funnel","funnel-event",data['events'],function(){
|
||||
var drr = [];
|
||||
if(data['events'].length > 2){
|
||||
$(".analysis-del").show();
|
||||
}else {
|
||||
$(".analysis-del").hide();
|
||||
}
|
||||
});
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
$(document).off('blur','.analysis-zhibiao-list-type4 input').on('blur','.analysis-zhibiao-list-type4 input',function(){
|
||||
var index = $(this).attr('data-index');
|
||||
var indexs = $(this).attr('data-indexs');
|
||||
@ -489,28 +657,53 @@
|
||||
|
||||
// 计算按钮
|
||||
$(document).off('click','.analysis-calculation').on('click','.analysis-calculation',function(){
|
||||
console.log(data)
|
||||
retaineddata()
|
||||
});
|
||||
var querydata;
|
||||
function retaineddata(){
|
||||
var dataArr = {
|
||||
eventView: data.eventView,
|
||||
events: data.events
|
||||
}
|
||||
X.api("ck/funnel_model","post",dataArr,function(d){
|
||||
if(d != "查无数据"){
|
||||
d['etitle'] = $.extend(true,[],d['title']);
|
||||
if(d['title'].length == 2){
|
||||
d['etitle'].unshift('总体');
|
||||
}
|
||||
querydata = d;
|
||||
updata(d)
|
||||
}else {
|
||||
layer.msg('查无数据');
|
||||
if(switchTest){
|
||||
$("#funnel-echarts").show();
|
||||
var dataArr = {
|
||||
eventView: data.eventView,
|
||||
events: data.events
|
||||
}
|
||||
})
|
||||
X.api("ck/funnel_model","post",dataArr,function(d){
|
||||
if(d != "查无数据"){
|
||||
d['etitle'] = $.extend(true,[],d['title']);
|
||||
if(d['title'].length == 2){
|
||||
d['etitle'].unshift('总体');
|
||||
}
|
||||
querydata = d;
|
||||
updata(d)
|
||||
}else {
|
||||
layer.msg('查无数据');
|
||||
}
|
||||
})
|
||||
}else {
|
||||
$("#funnel-echarts").hide();
|
||||
var dataArr = {
|
||||
eventView: data.eventView,
|
||||
events: data.single
|
||||
}
|
||||
|
||||
X.api("ck/guide_model","post",dataArr,function(d){
|
||||
if(d != "查无数据"){
|
||||
console.log(d)
|
||||
updata2(d)
|
||||
}else {
|
||||
layer.msg('查无数据');
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
function updata2(d){
|
||||
X.laytpldata("#table-fenxi-th-single-dot",d.level,".table-fenxi-th");
|
||||
X.laytpldata("#table-fenxi-td-single-dot",d.list,".table-fenxi-td");
|
||||
}
|
||||
|
||||
function updata(d){
|
||||
var title = $(".select-chart").attr("title");
|
||||
if(title == '转化图'){ retainedtable(d); retaineddayRetained(d);}
|
||||
@ -687,6 +880,7 @@
|
||||
],
|
||||
series: seriesData
|
||||
};
|
||||
|
||||
myChart.setOption(option,true);
|
||||
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user