This commit is contained in:
罗松柏 2021-07-23 23:20:45 +08:00
parent 0a296e9c17
commit 7714a384ce
13 changed files with 606 additions and 342 deletions

View File

@ -225,13 +225,20 @@
<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}}">
{{# if(item.eventNameDisplay != " " && item.eventNameDisplay != undefined){ }}
<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="请输入指标名" value="{{item.eventNameDisplay}}" 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}}">
<input type="text" placeholder="请输入指标名" class="analysis-con-left-screen-list-left-zhibiaoname-txt" data-index="{{index}}"/>
</div>
{{# } }}
<div class="analysis-con-left-screen-list-left">
<div class="analysis-num">{{index}}</div>
<div class="analysis-zhibiao-list">
<div class="ant-dropdown-trigger analysis-zhibiao-list-type1 analysis-background" data-index="{{index}}"> {{item.event_desc}}</div>
<div class="ant-dropdown-trigger analysis-zhibiao-list-type1 analysis-background" data-index="{{index}}"> {{item.event_desc}} </div>
<span style="margin-left: 6px;"></span>
<div id="analysis-zhibiao-list-type2-{{index}}" class="analysis-zhibiao-list-type2 analysis-background" data-index="{{index}}">{{item.event_attr}}</div>
{{# if(item.event_attr_id != "*"){ }}
@ -277,11 +284,11 @@
<div class="analysis-custom-box" id="analysis-custom-box-{{index}}">
<div class="analysis-custom-top">
<div class="analysis-num">{{index}}</div>
<div class="analysis-con-left-screen-list-left-zhibiaoname2"> <input type="text" value="自定义指标" placeholder="请出入指标名"/></div>
<div class="analysis-con-left-screen-list-left-zhibiaoname2"> <input data-index="{{index}}" type="text" value="{{item.eventNameDisplay}}" placeholder="请出入指标名"/></div>
</div>
<div class="analysis-custom-event-box">
<input class="analysis-custom-event-txt" data-index="{{index}}" type="text" placeholder="直接输入运算符或点击选择事件"/>
<input class="analysis-custom-event-txt" data-index="{{index}}" type="text" value="{{item.customEvent}}" placeholder="直接输入运算符或点击选择事件"/>
</div>
<div class="analysis-custom-event-dis-box" id="analysis-custom-event-dis-box-{{index}}">
<div class="analysis-custom-event-box analysis-custom-event-box-display">
@ -300,7 +307,7 @@
<div class="analysis-chongmingming" data-index="{{index}}" title="重命名指标"></div>
<div class="analysis-chongmingming-del" data-index="{{index}}" title="取消重命名"></div>
<div class="analysis-shaix" data-index="{{index}}" title="指标筛选"></div>
<!-- <div class="analysis-gongshi" data-index="{{index}}" title="切换为指标公式"></div> -->
<div class="analysis-gongshi" data-index="{{index}}" title="切换为指标公式"></div>
<div class="analysis-zhibiao" data-index="{{index}}" title="切换为指标选择"></div>
<div class="analysis-jia1" data-index="{{index}}" title="添加指标"></div>
<div class="analysis-fuzhi" title="复制指标" data-index="{{index}}"></div>

View File

@ -169,7 +169,7 @@
</div>
<div style="padding: 15px; height: calc(100% - 90px); overflow-y:auto; ">
<div class="layui-row layui-col-space15" id="chart-box">
<div id="chart-box">
<!-- 图表数据显示区域 -->
<!-- onmousemove="moveaction('data1')" onmouseout="outaction('data1')" -->
@ -589,132 +589,4 @@
{{# } }}
{{# }); }}
</script>
<!-- 看板模型 -->
<script id="kanban-model-dot" type="text/html">
<div class="layui-col-md6" >
<div class="layui-card">
<div class="row-top">
<div class="row-tit">
<p><a href="#">日活跃用户数</a></p>
<div class="tishi" title="活跃用户可以通过“登录.触发用户数”来进行计算,即有登录行为的用户的去重数.">
<img src="./static/img/tishi.png" />
</div>
</div>
<div class="control">
<div class="action-box" >
<div class="tishi" title="更新">
<img src="./static/img/gengxin.png" />
</div>
<div class="tishi" title="探索">
<img src="./static/img/fangda.png" />
</div>
<div class="tishi" title="更多">
<img src="./static/img/gengduo.png" />
</div>
</div>
</div>
</div>
<div class="condition-box">
<div class="time-cond">
<span>过去30天</span>
<div class="xian"></div>
<span>按天</span>
</div>
<div class="chart control">
<img src="./static/img/qvshitu.png" /> <span>趋势图</span>
</div>
</div>
<p class="dqtime">2021-03-23(二)</p>
<div class="data-box">
<div style="display: flex; align-items: center;">
<div class="data-num">351<span></span></div>
<div class="proportion">
<div class="proportion-data">较环比 <div class="sanjiao"></div><span>5.4%</span></div>
<div class="proportion-data">较同比 <div class="sanjiao"></div><span>5.4%</span></div>
</div>
</div>
<div class="thesum">
<div class="thesum-box">
<div class="thesum-data">总和 <span>12074</span></div>
<div class="thesum-data">均值 <span>402.47</span></div>
</div>
</div>
</div>
<div class="echarts-box">
<div id="charts" class="echarts"></div>
</div>
</div>
</div>
<div class="layui-col-md6" id="data2">
<div class="layui-card">
<div class="row-top">
<div class="row-tit">
<p><a href="#">日活跃用户数</a></p>
<div class="tishi" title="活跃用户数可以通过“登录.触发用户数”来进行计算,即有登录行为的用户的去重数。">
<img src="./static/img/tishi.png" />
</div>
</div>
<div class="control">
<div class="action-box" >
<div class="tishi" title="更新">
<img src="./static/img/gengxin.png" />
</div>
<div class="tishi" title="探索">
<img src="./static/img/fangda.png" />
</div>
<div class="tishi" title="更多">
<img src="./static/img/gengduo.png" />
</div>
</div>
</div>
</div>
<div class="condition-box">
<div class="time-cond">
<span>过去30天</span>
<div class="xian"></div>
<span>按天</span>
</div>
<div class="chart control">
<img src="./static/img/qvshitu.png" /> <span>趋势图</span>
</div>
</div>
<div class="table-box">
<table class="table-fenxi-box">
<thead>
<tr class="table-fenxi-th">
<th>当日</th>
<th>当日</th>
<th>当日</th>
<th>当日</th>
<th>当日</th>
<th>当日</th>
</tr>
</thead>
<tbody class="table-fenxi-td">
<tr >
<td>111</td>
<td>111</td>
<td>111</td>
<td>111</td>
<td>111</td>
<td>111</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</script>
</script>

View File

@ -65,7 +65,10 @@
{{# if(item.added === true){ }}
<div class="kanbanadmin-list-box">
<span class="kanbanadmin-list-tit">{{item.name}}</span>
<span class="kanbanadmin-list-add-box"><span class="kanbanadmin-list-add to-added-more{{index}}"><i class="layui-icon">&#xe65f;</i></span></span>
<span class="kanbanadmin-list-add-box">
<span class="kanbanadmin-list-add to-added-more{{index - 1}}"><i class="layui-icon">&#xe65f;</i></span>
<span class="kanbanadmin-list-add to-added-del" data-id="{{item._id}}"> <i class="layui-icon">&#x1006;</i> </span>
</span>
</div>
{{# } }}
{{# }); }}

View File

@ -1,53 +1,57 @@
<div class="layui-row layui-col-space15" id="model-box" style="width: 100%; height: 765px; display: flex; flex-wrap: wrap;">
</div>
<script id="kanban-model-table-dot" type="text/html">
<div class="layui-col-md6" id="data2">
{{# if(d.modeltype === "table"){ }}
<div class="layui-col-md6" style="float: none;">
<div class="layui-card">
<div class="row-top">
<div class="row-tit">
<p><a href="#">日活跃用户数</a></p>
<div class="tishi" title="活跃用户数可以通过“登录.触发用户数”来进行计算,即有登录行为的用户的去重数。">
<img src="./static/img/tishi.png" />
</div>
</div>
<div class="control">
<div class="action-box" >
<div class="tishi" title="更新">
<img src="./static/img/gengxin.png" />
</div>
<div class="tishi" title="探索">
<img src="./static/img/fangda.png" />
</div>
<div class="tishi" title="更多">
<img src="./static/img/gengduo.png" />
</div>
</div>
</div>
<div class="row-tit">
<p><a href="#">{{d.name}}</a></p>
</div>
<div class="control">
<div class="action-box" >
<div class="tishi" title="更新">
<img src="./static/img/gengxin.png" />
</div>
<div class="tishi" title="探索">
<img src="./static/img/fangda.png" />
</div>
<div class="tishi" title="更多">
<img src="./static/img/gengduo.png" />
</div>
</div>
</div>
</div>
<div class="condition-box">
<div class="time-cond">
<span>过去30天</span>
<div class="xian"></div>
<span>按天</span>
</div>
<div class="chart control">
<img src="./static/img/qvshitu.png" /> <span>趋势图</span>
</div>
<div class="time-cond">
<span>过去30天</span>
<div class="xian"></div>
<span>按天</span>
</div>
<div class="chart control">
<img src="./static/img/qvshitu.png" /> <span>趋势图</span>
</div>
</div>
<div class="table-box">
<table class="table-fenxi-box">
<thead>
<tr class="table-fenxi-th">
{{# layui.each(d.titledata, function(index, item) { }}
<th>{{item}}</th>
{{# }); }}
</tr>
<tr class="table-fenxi-th">
{{# layui.each(d.titledata, function(indexs, items) { }}
<th>{{items}}</th>
{{# }); }}
</tr>
</thead>
<tbody class="table-fenxi-td">
{{# layui.each(d.condata, function(index, item) { }}
{{# layui.each(d.condata, function(indexs, items) { }}
<tr >
{{# layui.each(item, function(indexs, items) { }}
<td>{{items}}</td>
{{# layui.each(items, function(indexss, itemss) { }}
<td>{{itemss}}</td>
{{# }); }}
</tr>
{{# }); }}
@ -56,5 +60,67 @@
</div>
</div>
</div>
</div>
{{# } else { }}
<div class="layui-col-md6" style="float: none;">
<div class="layui-card">
<div class="row-top">
<div class="row-tit">
<p><a href="#">{{d.name}}</a></p>
<div class="tishi" title="活跃用户可以通过“登录.触发用户数”来进行计算,即有登录行为的用户的去重数.">
<img src="./static/img/tishi.png" />
</div>
</div>
<div class="control">
<div class="action-box" >
<div class="tishi" title="更新">
<img src="./static/img/gengxin.png" />
</div>
<div class="tishi" title="探索">
<img src="./static/img/fangda.png" />
</div>
<div class="tishi" title="更多">
<img src="./static/img/gengduo.png" />
</div>
</div>
</div>
</div>
<div class="condition-box">
<div class="time-cond">
<span>过去30天</span>
<div class="xian"></div>
<span>按天</span>
</div>
<div class="chart control">
<img src="./static/img/qvshitu.png" /> <span>趋势图</span>
</div>
</div>
<p class="dqtime">2021-03-23(二)</p>
<div class="data-box">
<div style="display: flex; align-items: center;">
<div class="data-num">{{d.sameday}}<span></span></div>
<div class="proportion">
<!-- <div class="proportion-data">较环比 <div class="sanjiao"></div><span>5.4%</span></div>
<div class="proportion-data">较同比 <div class="sanjiao"></div><span>5.4%</span></div> -->
</div>
</div>
<div class="thesum">
<div class="thesum-box">
<div class="thesum-data">总和 <span>{{d.sum}}</span></div>
<div class="thesum-data">均值 <span>{{d.mean}}</span></div>
</div>
</div>
</div>
<div class="echarts-box">
<div id="{{d.id}}" class="echarts"></div>
</div>
</div>
</div>
{{# } }}
</script>

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

@ -241,9 +241,9 @@ var X = window.X || {
X.laytpldata = function (mbid ,data,wzid,callback){
var getTpl = $(mbid).html()
layui.laytpl(getTpl).render(data, function(html){
$(wzid).html(html);
wzid && $(wzid).html(html);
layui.element.init(); //重新渲染
callback && callback();
callback && callback(html);
});
};
@ -436,6 +436,61 @@ var X = window.X || {
titledata:titledata,
condata:condata
}
callback && callback(dataArr);
};
X.eventchart = function(data,callback){
var legenddata=[];
for(let i in data){
for(let z in data[i]['groups']){
var pj = data[i]['event_name']+data[i]['groups'][z];
legenddata.push(pj);
}
}
var seriesData=[];
var sum = 0;
var mean = 0;
var sameday = 0;
for(let i in data){
for(let z in data[i]['values']){
var arr = {
name: '',
type: 'line',
stack: '总量',
areaStyle: {},
emphasis: {
focus: 'series'
},
data: data[i]['values'][z]
}
seriesData.push(arr);
sameday = data[i]['values'][z][data[i]['values'][z].length - 1];
for(let j in data[i]['values'][z]){
mean = parseInt(mean) + parseInt(data[i]['values'][z][j]);
}
}
sum = sum + data[i]['sum'][0];
mean = mean / data[i]['values'].length;
}
if(legenddata.length > 0){
for(let i in seriesData){
seriesData[i]['name'] = legenddata[i];
}
}
for(let i in data){}
var dataArr = {
xAxisData:data[0]['date_range'],
legenddata:legenddata,
seriesData:seriesData,
sum:sum,
mean:mean,
sameday: sameday
}
callback && callback(dataArr);
};
@ -1296,7 +1351,7 @@ var X = window.X || {
"timeParticleSize":"P1D",
"endTime":"",
"graphShape":"L0",
"recentDay":"1-30",
"recentDay":"1-7",
"groupBy":[],
"uiCommonConfig":{
"tableSorts":[],
@ -1324,6 +1379,16 @@ var X = window.X || {
var endTime = end.format('YYYY-MM-DD')+ " "+ "23:59:59";
data['eventView']['startTime'] = startTime;
data['eventView']['endTime'] = endTime;
var sameday = Date.parse(new Date()) / 1000; //当天时间戳
var enddate = new Date(end.format('YYYY-MM-DD'));
var endmonth = Date.parse(enddate)/1000;
var startdate = new Date(start.format('YYYY-MM-DD'));
var startmonth = Date.parse(startdate)/1000;
// console.log(parseInt((sameday - startmonth )/86400));
// console.log(parseInt((sameday - endmonth)/86400));
data['eventView']['recentDay'] = parseInt((sameday - endmonth)/86400) + "-"+ parseInt((sameday - startmonth)/86400);
calculationdata();
})
@ -1346,9 +1411,10 @@ var X = window.X || {
"event_attr_id":"*",
"analysisname":'',
"analysis":'total_count',
"renameindicator":"", //重命名指标
"filts":[],//过滤项
"condrelation":'and',
"customEvent":'',
"eventNameDisplay":' '//重命名指标
}
data.events.push(defaultindicator);
X.laytpldata("#analysis-con-left-screen-list-dot",data.events,".analysis-con-left-screen-list-box");
@ -1393,6 +1459,7 @@ var X = window.X || {
});
//已存报表
var baobiaodata;
$(document).off('click','.analysis-navigation-bar-right .analysis-navigation-bar-right-img-baobiao').on('click','.analysis-navigation-bar-right .analysis-navigation-bar-right-img-baobiao',function(){
X.parametersopen(data['eventView']['cksql'],'savedbaobiao','rt',function(d){
console.log(d);
@ -1402,6 +1469,8 @@ var X = window.X || {
type3data = data.cachedata.type3data;
screentypearr = data.cachedata.screentypearr;
filtersymbols = data.cachedata.filtersymbols;
baobiaodata = d;
if(d.query.eventView.filts.length > 0){
$(".analysis-overall").show();
@ -1615,11 +1684,11 @@ var X = window.X || {
$(document).off('click','.analysis-con-left-screen-list-left-zhibiaoname input').on('blur','.analysis-con-left-screen-list-left-zhibiaoname input',function(){
var index = $(this).attr("data-index");
var txt = $(this).val();
data['events'][index]['renameindicator'] = txt;
data['events'][index]['eventNameDisplay'] = txt;
})
// 监听文本框
$(document).on('blur','.analysis-zhibiao-list-type4 input',function(){
$(document).off('click','.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");
var val = $(this).val();
@ -1666,13 +1735,15 @@ var X = window.X || {
"event_attr_id":"*",
"analysisname":'',
"analysis":'total_count',
"renameindicator":"", //重命名指标
"filts":[],//过滤项
"condrelation":'and',
"customEvent":'',
"eventNameDisplay":' '//重命名指标
}
data['events'].push(defaultindicator);
X.laytpldata("#analysis-con-left-screen-list-dot",data.events,".analysis-con-left-screen-list-box");
console.log(data.events);
var index = data.events.length - 1;
type2data[index]= retdata;
type3data[index]= [];
@ -1720,21 +1791,23 @@ var X = window.X || {
})
$(document).off('click','.analysis-custom-event-box .analysis-custom-event-txt').on('click','.analysis-custom-event-box .analysis-custom-event-txt',function(){
$(this).css("border-bottom","1px solid #3d90ff");
$(document).off('click','.analysis-custom-event-box .analysis-custom-event-txt').on('blur','.analysis-custom-event-box .analysis-custom-event-txt',function(){
// $(this).css("border-bottom","1px solid #3d90ff");
var obj = $(this);
var offset = obj.offset();
var index = obj.attr("data-index");
X.querycriteriapop(dataArr,'setgrouping',offset.left,offset.top+obj.height(),function(val){
$("#analysis-custom-event-dis-box-"+index).show();
obj.hide();
data['events'][index]['customEvent'] = $(this).val();
// console.log(data);
})
})
$(document).off('click','.analysis-con-left-screen-list-left-zhibiaoname2 input').on('blur','.analysis-con-left-screen-list-left-zhibiaoname2 input',function(){
var index = $(this).attr('data-index');
data['events'][index]['eventNameDisplay'] = $(this).val();
// console.log(data);
})
//分组项
var cat = "event";
$(document).off('click','.analysis-footadd___2D4YB').on('click','.analysis-footadd___2D4YB',function(){
var index = data['eventView']['groupBy'].length;
var screentypedata = filteringdata();
@ -1932,7 +2005,7 @@ var X = window.X || {
})
})
$(document).on('blur','.analysis-overall-situation-input input',function(){
$(document).off('click','.analysis-overall-situation-input input').on('blur','.analysis-overall-situation-input input',function(){
var index = $(this).attr("data-index");
var val = $(this).val();
var valarr = val.split(",");
@ -1940,7 +2013,7 @@ var X = window.X || {
data['eventView']['filts'][index]['strftv']=val;
})
$(document).on('blur','.analysis-overall-situation-input2 input',function(){
$(document).off('click','.analysis-overall-situation-input2 input').on('blur','.analysis-overall-situation-input2 input',function(){
var name = $(this).attr('name');
var val = $(this).val();
var index = $(this).attr("data-index");
@ -2328,7 +2401,12 @@ var X = window.X || {
// 保存报表
$(document).off('click','.analysis-savereport').on('click','.analysis-savereport',function(){
X.parametersopen(data,'savereport','auto')
if(baobiaodata != '' && baobiaodata != undefined && baobiaodata != null){
console.log(baobiaodata);
X.parametersopen(baobiaodata,'savereport','auto');
}else{
X.parametersopen(data,'savereport','auto');
}
})
},
@ -2946,32 +3024,9 @@ var X = window.X || {
$(".tab-tit-box .tab-tit").html($(this).find("span").html());
X.DATA['dashboard_id'] = $(this).attr('data-id'); //看板id
// 获取报表数据
gettabledata();
me.gettabledata();
});
// 获取表格数据
function gettabledata(){
X.api('dashboard','post',{id:X.DATA['dashboard_id']},function(d){
// console.log(d);
for(let i in d){
X.api("ck/"+d[i]['model']+"_model","post",{report_id:d[i]['report_id']},function(val){
// console.log(val);
if(d[i]['model'] == "event"){
if(d[i]['graph_type'] == 'table'){
X.eventtable(val,function(data){
console.log(data);
X.template("modeltable","chart-box",data);
})
}else if(d[i]['graph_type'] == 'echarts'){
}
}
})
}
})
};
// 渲染添加按钮侧边栏下拉框
X.laydropdown("#chuangjian",X.DATA.createsidebar,function(d){
if(d.url){
@ -3133,8 +3188,7 @@ var X = window.X || {
// 保存报表列表
$(document).off('click','.baobiao').on('click','.baobiao',function(){
X.parametersopen({},'kanbanadmin','rt',function(){
console.log(111);
gettabledata();
me.gettabledata();
})
});
@ -3153,13 +3207,98 @@ var X = window.X || {
freshMenu : function(id){
//获取对应侧边栏
X.api('project/kanban',"post",{"_id":id},function (d){
console.log(d);
X.DATA['KanBanData'] = d.kanban;
X.DATA['ProjectData'] = d.spaces;
X.laytpldata('#mykanban-dot',d.kanban,'#mykanban');
X.laytpldata('#kongjian-dot',d.spaces,'#kongjian');
});
}
},
// 获取表格数据
gettabledata:function(){
X.api('dashboard','post',{id:X.DATA['dashboard_id']},function(d){
var eventdata=[];
for(let i in d){
X.api("ck/"+d[i]['model']+"_model","post",{report_id:d[i]['report_id']},function(val){
// console.log(val);
if(d[i]['model'] == "event"){
// 事件分析
if(d[i]['graph_type'] == 'table'){
//表格样式
X.eventtable(val,function(data){//表格数据处理
data['name'] = d[i]['name'];
data['modeltype'] = d[i]['graph_type'];
data['id'] = d[i]['report_id'];
eventdata.push(data);
})
}else if(d[i]['graph_type'] == 'echarts'){
//图形
X.eventchart(val,function(data){
data['name'] = d[i]['name'];
data['modeltype'] = d[i]['graph_type'];
data['id'] = d[i]['report_id'];
eventdata.push(data);
})
}
}
})
}
console.log(eventdata);
X.template("modeltable","chart-box",eventdata,function(){
for(let i in eventdata){
if(eventdata[i]['modeltype'] == 'echarts'){
var myChart = echarts.init(document.getElementById(eventdata[i]['id']));
var option = {
title: {
text: ''
},
color: X.DATA.echartscolor,
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
label: {
backgroundColor: '#6a7985'
}
}
},
legend: {
type:'scroll',
data: eventdata[i]['legenddata']
},
grid: {
left: '2%',
right: '2%',
bottom: '2%',
top: '10%',
containLabel: true
},
xAxis: [
{
type: 'category',
boundaryGap: false,
data: eventdata[i]['xAxisData']
}
],
yAxis: [
{
type: 'value'
}
],
series: eventdata[i]['seriesData']
};
myChart.setOption(option,true);
}
}
});
})
},
};
})();
@ -5116,6 +5255,7 @@ var X = window.X || {
//渲染已添加报表下拉框
function toadddataprocessing(){
toadddata = [];
for(let i in reportlistdata){
if(reportlistdata[i]['added'] == true){
toadddata.push(reportlistdata[i]);
@ -5123,40 +5263,31 @@ var X = window.X || {
}
var downmenu = [
{title:'表格',id:'table'},
{title:'图形',id:'echarts'},
{title:'删除',id:'del'},
{title:'图形',id:'echarts'}
]
submitdata = [];
for(let i in toadddata){
var arr = {
report_id:toadddata[i]['_id'],
graph_type:'table',
model:toadddata[i]['cat']
model:toadddata[i]['cat'],
name:toadddata[i]['name'],
}
submitdata.push(arr);
X.laydropdown('.to-added-more'+i,downmenu,function(d){
if(d.id != 'del'){
// 删除报表
submitdata[i]['graph_type'] = d.id;
}else {
// reportlistdata[i]['added'] = true;
for(let j in reportlistdata){
if(reportlistdata[j]['_id'] == submitdata[i]['report_id']){
console.log(submitdata[i]['report_id']);
X.api('dashboard/del_report','post',{_id:X['DATA']['dashboard_id'],report_id:submitdata[i]['report_id']},function(){
kanbanupdata();
})
// reportlistdata[j]['added'] = false;
// X.laytpldata('#to-be-added-baobiao-dot',reportlistdata,'.to-be-added-baobiao');
// X.laytpldata('#to-added-baobiao-dot',reportlistdata,'.to-added-baobiao');
// toadddataprocessing();
}
}
}
submitdata[i]['graph_type'] = d.id;
})
}
}
};
$(document).off('click','.to-added-del').on('click','.to-added-del',function(){
var id = $(this).attr('data-id');
X.api('dashboard/del_report','post',{_id:X['DATA']['dashboard_id'],report_id:id},function(){
kanbanupdata();
})
})
$(document).off('click','.kanbanadmin-but-yy').on('click','.kanbanadmin-but-yy',function(){
X.api('dashboard/add_report','post',{_id:X['DATA']['dashboard_id'],report_ids:submitdata},function(d){
@ -5432,8 +5563,13 @@ var X = window.X || {
this.callback = parms.callback;
var data = parms;
console.log(data);
X.laytpldata("#kanban-model-table-dot",data,"#chart-box");
for(var i in data){
console.log(data[i]);
X.laytpldata("#kanban-model-table-dot",data[i],null,function(html){
$('#model-box').append(html);
});
}
}
};
@ -7438,6 +7574,12 @@ var X = window.X || {
this.parms = parms;
this.callback = parms.callback;
var data = parms.extData;
if(data._id){
layui.form.val('savereportexample', {
"title": data['name']
,"desc": data['desc']
});
}
$(document).off('click',".savereport-but-qd").on('click','.savereport-but-qd',function(){
var tabval = layui.form.val('savereportexample');
if(tabval['title'] == ""){
@ -7448,19 +7590,35 @@ var X = window.X || {
layer.msg("请填写报表备注");
return false;
}
var arr = {
name: tabval['title'],
desc:tabval['desc'],
query:data,
project_id:X.DATA.projectid,
cat: data['eventView']['cksql']
// reporttype : data['eventView']['cksql']
if(data._id){
var arr = {
name: tabval['title'],
desc:tabval['desc'],
query:data['query'],
report_id:data['_id']
// project_id:X.DATA.projectid,
// cat: data['query']['eventView']['cksql']
}
X.api('report/edit','post',arr,function(d){
layer.msg(d);
layer.closeAll();
})
}else {
var arr = {
name: tabval['title'],
desc:tabval['desc'],
query:data,
project_id:X.DATA.projectid,
cat: data['eventView']['cksql']
}
// console.log(arr);
X.api('report/create','post',arr,function(d){
layer.msg(d);
layer.closeAll();
})
}
console.log(arr);
X.api('report/create','post',arr,function(d){
layer.msg(d);
layer.closeAll();
})
})

View File

@ -240,9 +240,9 @@ var X = window.X || {
X.laytpldata = function (mbid ,data,wzid,callback){
var getTpl = $(mbid).html()
layui.laytpl(getTpl).render(data, function(html){
$(wzid).html(html);
wzid && $(wzid).html(html);
layui.element.init(); //重新渲染
callback && callback();
callback && callback(html);
});
};
@ -435,6 +435,61 @@ var X = window.X || {
titledata:titledata,
condata:condata
}
callback && callback(dataArr);
};
X.eventchart = function(data,callback){
var legenddata=[];
for(let i in data){
for(let z in data[i]['groups']){
var pj = data[i]['event_name']+data[i]['groups'][z];
legenddata.push(pj);
}
}
var seriesData=[];
var sum = 0;
var mean = 0;
var sameday = 0;
for(let i in data){
for(let z in data[i]['values']){
var arr = {
name: '',
type: 'line',
stack: '总量',
areaStyle: {},
emphasis: {
focus: 'series'
},
data: data[i]['values'][z]
}
seriesData.push(arr);
sameday = data[i]['values'][z][data[i]['values'][z].length - 1];
for(let j in data[i]['values'][z]){
mean = parseInt(mean) + parseInt(data[i]['values'][z][j]);
}
}
sum = sum + data[i]['sum'][0];
mean = mean / data[i]['values'].length;
}
if(legenddata.length > 0){
for(let i in seriesData){
seriesData[i]['name'] = legenddata[i];
}
}
for(let i in data){}
var dataArr = {
xAxisData:data[0]['date_range'],
legenddata:legenddata,
seriesData:seriesData,
sum:sum,
mean:mean,
sameday: sameday
}
callback && callback(dataArr);
};

View File

@ -23,7 +23,7 @@
"timeParticleSize":"P1D",
"endTime":"",
"graphShape":"L0",
"recentDay":"1-30",
"recentDay":"1-7",
"groupBy":[],
"uiCommonConfig":{
"tableSorts":[],
@ -51,6 +51,16 @@
var endTime = end.format('YYYY-MM-DD')+ " "+ "23:59:59";
data['eventView']['startTime'] = startTime;
data['eventView']['endTime'] = endTime;
var sameday = Date.parse(new Date()) / 1000; //当天时间戳
var enddate = new Date(end.format('YYYY-MM-DD'));
var endmonth = Date.parse(enddate)/1000;
var startdate = new Date(start.format('YYYY-MM-DD'));
var startmonth = Date.parse(startdate)/1000;
// console.log(parseInt((sameday - startmonth )/86400));
// console.log(parseInt((sameday - endmonth)/86400));
data['eventView']['recentDay'] = parseInt((sameday - endmonth)/86400) + "-"+ parseInt((sameday - startmonth)/86400);
calculationdata();
})
@ -73,9 +83,10 @@
"event_attr_id":"*",
"analysisname":'',
"analysis":'total_count',
"renameindicator":"", //重命名指标
"filts":[],//过滤项
"condrelation":'and',
"customEvent":'',
"eventNameDisplay":' '//重命名指标
}
data.events.push(defaultindicator);
X.laytpldata("#analysis-con-left-screen-list-dot",data.events,".analysis-con-left-screen-list-box");
@ -120,6 +131,7 @@
});
//已存报表
var baobiaodata;
$(document).off('click','.analysis-navigation-bar-right .analysis-navigation-bar-right-img-baobiao').on('click','.analysis-navigation-bar-right .analysis-navigation-bar-right-img-baobiao',function(){
X.parametersopen(data['eventView']['cksql'],'savedbaobiao','rt',function(d){
console.log(d);
@ -129,6 +141,8 @@
type3data = data.cachedata.type3data;
screentypearr = data.cachedata.screentypearr;
filtersymbols = data.cachedata.filtersymbols;
baobiaodata = d;
if(d.query.eventView.filts.length > 0){
$(".analysis-overall").show();
@ -342,11 +356,11 @@
$(document).off('click','.analysis-con-left-screen-list-left-zhibiaoname input').on('blur','.analysis-con-left-screen-list-left-zhibiaoname input',function(){
var index = $(this).attr("data-index");
var txt = $(this).val();
data['events'][index]['renameindicator'] = txt;
data['events'][index]['eventNameDisplay'] = txt;
})
// 监听文本框
$(document).on('blur','.analysis-zhibiao-list-type4 input',function(){
$(document).off('click','.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");
var val = $(this).val();
@ -393,13 +407,15 @@
"event_attr_id":"*",
"analysisname":'',
"analysis":'total_count',
"renameindicator":"", //重命名指标
"filts":[],//过滤项
"condrelation":'and',
"customEvent":'',
"eventNameDisplay":' '//重命名指标
}
data['events'].push(defaultindicator);
X.laytpldata("#analysis-con-left-screen-list-dot",data.events,".analysis-con-left-screen-list-box");
console.log(data.events);
var index = data.events.length - 1;
type2data[index]= retdata;
type3data[index]= [];
@ -447,21 +463,23 @@
})
$(document).off('click','.analysis-custom-event-box .analysis-custom-event-txt').on('click','.analysis-custom-event-box .analysis-custom-event-txt',function(){
$(this).css("border-bottom","1px solid #3d90ff");
$(document).off('click','.analysis-custom-event-box .analysis-custom-event-txt').on('blur','.analysis-custom-event-box .analysis-custom-event-txt',function(){
// $(this).css("border-bottom","1px solid #3d90ff");
var obj = $(this);
var offset = obj.offset();
var index = obj.attr("data-index");
X.querycriteriapop(dataArr,'setgrouping',offset.left,offset.top+obj.height(),function(val){
$("#analysis-custom-event-dis-box-"+index).show();
obj.hide();
data['events'][index]['customEvent'] = $(this).val();
// console.log(data);
})
})
$(document).off('click','.analysis-con-left-screen-list-left-zhibiaoname2 input').on('blur','.analysis-con-left-screen-list-left-zhibiaoname2 input',function(){
var index = $(this).attr('data-index');
data['events'][index]['eventNameDisplay'] = $(this).val();
// console.log(data);
})
//分组项
var cat = "event";
$(document).off('click','.analysis-footadd___2D4YB').on('click','.analysis-footadd___2D4YB',function(){
var index = data['eventView']['groupBy'].length;
var screentypedata = filteringdata();
@ -659,7 +677,7 @@
})
})
$(document).on('blur','.analysis-overall-situation-input input',function(){
$(document).off('click','.analysis-overall-situation-input input').on('blur','.analysis-overall-situation-input input',function(){
var index = $(this).attr("data-index");
var val = $(this).val();
var valarr = val.split(",");
@ -667,7 +685,7 @@
data['eventView']['filts'][index]['strftv']=val;
})
$(document).on('blur','.analysis-overall-situation-input2 input',function(){
$(document).off('click','.analysis-overall-situation-input2 input').on('blur','.analysis-overall-situation-input2 input',function(){
var name = $(this).attr('name');
var val = $(this).val();
var index = $(this).attr("data-index");
@ -1055,7 +1073,12 @@
// 保存报表
$(document).off('click','.analysis-savereport').on('click','.analysis-savereport',function(){
X.parametersopen(data,'savereport','auto')
if(baobiaodata != '' && baobiaodata != undefined && baobiaodata != null){
console.log(baobiaodata);
X.parametersopen(baobiaodata,'savereport','auto');
}else{
X.parametersopen(data,'savereport','auto');
}
})
},

View File

@ -46,32 +46,9 @@
$(".tab-tit-box .tab-tit").html($(this).find("span").html());
X.DATA['dashboard_id'] = $(this).attr('data-id'); //看板id
// 获取报表数据
gettabledata();
me.gettabledata();
});
// 获取表格数据
function gettabledata(){
X.api('dashboard','post',{id:X.DATA['dashboard_id']},function(d){
// console.log(d);
for(let i in d){
X.api("ck/"+d[i]['model']+"_model","post",{report_id:d[i]['report_id']},function(val){
// console.log(val);
if(d[i]['model'] == "event"){
if(d[i]['graph_type'] == 'table'){
X.eventtable(val,function(data){
console.log(data);
X.template("modeltable","chart-box",data);
})
}else if(d[i]['graph_type'] == 'echarts'){
}
}
})
}
})
};
// 渲染添加按钮侧边栏下拉框
X.laydropdown("#chuangjian",X.DATA.createsidebar,function(d){
if(d.url){
@ -233,8 +210,7 @@
// 保存报表列表
$(document).off('click','.baobiao').on('click','.baobiao',function(){
X.parametersopen({},'kanbanadmin','rt',function(){
console.log(111);
gettabledata();
me.gettabledata();
})
});
@ -253,12 +229,97 @@
freshMenu : function(id){
//获取对应侧边栏
X.api('project/kanban',"post",{"_id":id},function (d){
console.log(d);
X.DATA['KanBanData'] = d.kanban;
X.DATA['ProjectData'] = d.spaces;
X.laytpldata('#mykanban-dot',d.kanban,'#mykanban');
X.laytpldata('#kongjian-dot',d.spaces,'#kongjian');
});
}
},
// 获取表格数据
gettabledata:function(){
X.api('dashboard','post',{id:X.DATA['dashboard_id']},function(d){
var eventdata=[];
for(let i in d){
X.api("ck/"+d[i]['model']+"_model","post",{report_id:d[i]['report_id']},function(val){
// console.log(val);
if(d[i]['model'] == "event"){
// 事件分析
if(d[i]['graph_type'] == 'table'){
//表格样式
X.eventtable(val,function(data){//表格数据处理
data['name'] = d[i]['name'];
data['modeltype'] = d[i]['graph_type'];
data['id'] = d[i]['report_id'];
eventdata.push(data);
})
}else if(d[i]['graph_type'] == 'echarts'){
//图形
X.eventchart(val,function(data){
data['name'] = d[i]['name'];
data['modeltype'] = d[i]['graph_type'];
data['id'] = d[i]['report_id'];
eventdata.push(data);
})
}
}
})
}
console.log(eventdata);
X.template("modeltable","chart-box",eventdata,function(){
for(let i in eventdata){
if(eventdata[i]['modeltype'] == 'echarts'){
var myChart = echarts.init(document.getElementById(eventdata[i]['id']));
var option = {
title: {
text: ''
},
color: X.DATA.echartscolor,
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
label: {
backgroundColor: '#6a7985'
}
}
},
legend: {
type:'scroll',
data: eventdata[i]['legenddata']
},
grid: {
left: '2%',
right: '2%',
bottom: '2%',
top: '10%',
containLabel: true
},
xAxis: [
{
type: 'category',
boundaryGap: false,
data: eventdata[i]['xAxisData']
}
],
yAxis: [
{
type: 'value'
}
],
series: eventdata[i]['seriesData']
};
myChart.setOption(option,true);
}
}
});
})
},
};
})();

View File

@ -81,6 +81,7 @@
//渲染已添加报表下拉框
function toadddataprocessing(){
toadddata = [];
for(let i in reportlistdata){
if(reportlistdata[i]['added'] == true){
toadddata.push(reportlistdata[i]);
@ -88,40 +89,31 @@
}
var downmenu = [
{title:'表格',id:'table'},
{title:'图形',id:'echarts'},
{title:'删除',id:'del'},
{title:'图形',id:'echarts'}
]
submitdata = [];
for(let i in toadddata){
var arr = {
report_id:toadddata[i]['_id'],
graph_type:'table',
model:toadddata[i]['cat']
model:toadddata[i]['cat'],
name:toadddata[i]['name'],
}
submitdata.push(arr);
X.laydropdown('.to-added-more'+i,downmenu,function(d){
if(d.id != 'del'){
// 删除报表
submitdata[i]['graph_type'] = d.id;
}else {
// reportlistdata[i]['added'] = true;
for(let j in reportlistdata){
if(reportlistdata[j]['_id'] == submitdata[i]['report_id']){
console.log(submitdata[i]['report_id']);
X.api('dashboard/del_report','post',{_id:X['DATA']['dashboard_id'],report_id:submitdata[i]['report_id']},function(){
kanbanupdata();
})
// reportlistdata[j]['added'] = false;
// X.laytpldata('#to-be-added-baobiao-dot',reportlistdata,'.to-be-added-baobiao');
// X.laytpldata('#to-added-baobiao-dot',reportlistdata,'.to-added-baobiao');
// toadddataprocessing();
}
}
}
submitdata[i]['graph_type'] = d.id;
})
}
}
};
$(document).off('click','.to-added-del').on('click','.to-added-del',function(){
var id = $(this).attr('data-id');
X.api('dashboard/del_report','post',{_id:X['DATA']['dashboard_id'],report_id:id},function(){
kanbanupdata();
})
})
$(document).off('click','.kanbanadmin-but-yy').on('click','.kanbanadmin-but-yy',function(){
X.api('dashboard/add_report','post',{_id:X['DATA']['dashboard_id'],report_ids:submitdata},function(d){

View File

@ -6,8 +6,13 @@
this.callback = parms.callback;
var data = parms;
console.log(data);
X.laytpldata("#kanban-model-table-dot",data,"#chart-box");
for(var i in data){
console.log(data[i]);
X.laytpldata("#kanban-model-table-dot",data[i],null,function(html){
$('#model-box').append(html);
});
}
}
};

View File

@ -5,6 +5,12 @@
this.parms = parms;
this.callback = parms.callback;
var data = parms.extData;
if(data._id){
layui.form.val('savereportexample', {
"title": data['name']
,"desc": data['desc']
});
}
$(document).off('click',".savereport-but-qd").on('click','.savereport-but-qd',function(){
var tabval = layui.form.val('savereportexample');
if(tabval['title'] == ""){
@ -15,19 +21,35 @@
layer.msg("请填写报表备注");
return false;
}
var arr = {
name: tabval['title'],
desc:tabval['desc'],
query:data,
project_id:X.DATA.projectid,
cat: data['eventView']['cksql']
// reporttype : data['eventView']['cksql']
if(data._id){
var arr = {
name: tabval['title'],
desc:tabval['desc'],
query:data['query'],
report_id:data['_id']
// project_id:X.DATA.projectid,
// cat: data['query']['eventView']['cksql']
}
X.api('report/edit','post',arr,function(d){
layer.msg(d);
layer.closeAll();
})
}else {
var arr = {
name: tabval['title'],
desc:tabval['desc'],
query:data,
project_id:X.DATA.projectid,
cat: data['eventView']['cksql']
}
// console.log(arr);
X.api('report/create','post',arr,function(d){
layer.msg(d);
layer.closeAll();
})
}
console.log(arr);
X.api('report/create','post',arr,function(d){
layer.msg(d);
layer.closeAll();
})
})

View File

@ -93,7 +93,7 @@
.analysis-del { background: url("../img/del.png") no-repeat;}
.analysis-con-left-screen-list-left-zhibiaoname { display: none; color: #42546d; height: 24px; margin-left: 32px; padding-bottom: 8px; font-weight: 500; font-size: 13px; line-height: 24px; border: 0px ; }
.analysis-con-left-screen-list-left-zhibiaoname input { color: #42546d; border: 0; background-color: rgba(0, 0, 0, 0); }
.analysis-con-left-screen-list-left-zhibiaoname2 { display: block; color: #42546d; height: 24px; margin-left: 7px; padding-bottom: 8px; font-weight: 500; font-size: 13px; line-height: 24px; border: 0px ; }
.analysis-con-left-screen-list-left-zhibiaoname2 { border-bottom: 1px solid #f0f0f0; display: block; color: #42546d; height: 24px; margin-left: 7px; padding-bottom: 8px; font-weight: 500; font-size: 13px; line-height: 24px; border: 0px ; }
.analysis-con-left-screen-list-left-zhibiaoname2 input { color: #42546d; border: 0; background-color: rgba(0, 0, 0, 0); }
.analysis-con-left-screen-list-right-screen-box { padding-left: 32px; display: flex; align-items: center; }
@ -116,7 +116,7 @@
.analysis-custom-box { width: 100%; display: none; }
.analysis-custom-event-box { padding-left: 33px; padding-right: 8px; }
.analysis-custom-event-box input{ width: 100%; border: 0px; height: 37px; line-height: 37px; background-color: rgba(0, 0, 0, 0); }
.analysis-custom-event-box input{ width: 100%; border: 0px; height: 37px; line-height: 37px; background-color: rgba(0, 0, 0, 0); border-bottom: 1px solid #f0f0f0; }
.analysis-custom-event-box-display { display: flex; align-items: center; }
.analysis-custom-event-box-display div{ margin-right: 6px; }
.analysis-custom-event-type { color: #42546d; padding: 0 6px; height: 28px; line-height: 28px; font-size: 13px; background-color: #fff; border: 1px solid #f0f2f5; cursor: pointer; border-radius: 2px; }
@ -312,7 +312,7 @@
.to-be-added-baobiao { height: calc(100% - 115px); padding: 4px; overflow-x: hidden; overflow-y: auto; }
.kanbanadmin-list-box { display: flex; align-items: center; justify-content: space-between; height: 40px; padding: 0 8px 0 0; line-height: 40px; cursor: grab; }
.kanbanadmin-list-box:hover{ background-color: #f6f8fa; }
.kanbanadmin-list-box:hover > .kanbanadmin-list-add-box{ display: block; }
.kanbanadmin-list-box:hover > .kanbanadmin-list-add-box{ display: flex; }
.kanbanadmin-list-tit { font-size: 13px; color: #42546d; margin-left: 16px; }
.kanbanadmin-list-add-box { display: none; }
.kanbanadmin-list-add { display: inline-block; min-width: 24px; height: 24px; padding: 0 4px; line-height: 22px; text-align: center; border-right: 2px; cursor: pointer; font-size: 20px; }

View File

@ -20,7 +20,7 @@
.layui-table-body { height: 100% !important; }
.layui-form-item .layui-form-checkbox[lay-skin=primary] { text-indent: 0px !important; }
.layui-anim-downbit { max-height: 350px; overflow-y: auto; overflow-x: hidden; }
.layui-nav .layui-nav-child dd.layui-this a, .layui-nav-child dd.layui-this { background-color: #f6f8fa !important; }
/* .layui-nav .layui-nav-child dd.layui-this a, .layui-nav-child dd.layui-this { background-color: #f6f8fa !important; } */
.username { color: #67729d; margin-right: 16px; }
.layui-project { position:absolute; top: 0; left: 80px; ;}