if($ == undefined){
$ = jQuery;
}
//创建交叉表
function crtCrossTable(){
var ret = "
"
+ " | "+
" 将维度拖到此处作为列标签 "+" |
"+
" 将维度拖到此处 作为行标签 "+" | "+
" 将度量拖到此处 查询数据 "+" |
";
return ret;
}
/**
注册行列维度、度量区域的拖拽事件
对应表格组件的事件
**/
function initDropDiv(id){
var ischg = false;
$("#T" + id + " #d_colDims, #T" + id +" #d_rowDims, #T"+id+" #d_kpi").droppable({
accept:"ul.tableTreeCss .tree-node",
onDragEnter:function(e,source){
var node = $("#datasettree").tree("getNode", source);
var tp = node.attributes.col_type;
//对维度拖拽设置图标
if(tp == 1 && ($(this).attr("id") == "d_colDims" || $(this).attr("id") == "d_rowDims")){
$(source).draggable('proxy').find("span").removeClass("tree-dnd-no");
$(source).draggable('proxy').find("span").addClass("tree-dnd-yes");
if($(this).attr("id") == "d_colDims"){
$("#T"+id+" #d_colDims").css("border", "1px solid #ff0000");
}
if($(this).attr("id") == "d_rowDims"){
$("#T"+id+" #d_rowDims").css("border", "1px solid #ff0000");
}
ischg = true;
}else{
ischg = false;
}
//对度量拖拽设置图标
if(tp == 2 && $(this).attr("id") == "d_kpi"){
$(source).draggable('proxy').find("span").removeClass("tree-dnd-no");
$(source).draggable('proxy').find("span").addClass("tree-dnd-yes");
$("#T"+id+" #d_kpi").css("border", "1px solid #ff0000");
ischg = false;
}
e.cancelBubble=true;
e.stopPropagation(); //阻止事件冒泡
},
onDragLeave:function(e,source){
if($(this).attr("id") == 'd_kpi' && ischg == true){
}else{
$(source).draggable('proxy').find("span").addClass("tree-dnd-no");
$(source).draggable('proxy').find("span").removeClass("tree-dnd-yes");
$("#T"+id+" #" + $(this).attr("id")).css("border", "none");
}
e.cancelBubble=true;
e.stopPropagation(); //阻止事件冒泡
},
onDrop:function(e,source){
var id = $(this).parents(".comp_table").attr("id").replace("T","");
var json = findCompById(Number(id));
e.cancelBubble=true;
e.stopPropagation(); //阻止事件冒泡
//清除边框颜色
$("#T"+id+" #" + $(this).attr("id")).css("border", "none");
//获取TREE
var node = $("#datasettree").tree("getNode", source);
//判断拖入的维度及度量是否和以前维度及度量在同一个表。
if(json.cubeId != undefined){
if(json.cubeId != node.attributes.cubeId){
msginfo("您拖入的"+ (node.attributes.col_type == 2 ? "度量" : "维度") +"与组件已有的内容不在同一个数据表中,拖放失败。");
return;
}
}
//判断拖入的度量是否是(同比、环比),如果是,需要判断当前维度是否有date类型
/** 放入度量计算菜单判断
if(node.attributes.calc_kpi == 1){
if(!isExistDateDim(json, 'table')){
msginfo("您拖入的度量需要表格中先有时间类型的维度(年/季度/月/日)。");
return;
}
}
**/
json.cubeId = node.attributes.cubeId;
json.dsid = node.attributes.dsid;
json.dsetId = node.attributes.dsetId;
if(json.kpiJson == undefined){
json.kpiJson = [];
};
if(json.cols == undefined){
json.cols = [];
}
if(json.rows == undefined){
json.rows = [];
}
//写度量
if(node.attributes.col_type == 2 && $(this).attr("id") == "d_kpi"){
//如果度量存在就忽略
if(!kpiExist(node.attributes.col_id, json.kpiJson)){
json.kpiJson.push({"kpi_id":node.attributes.col_id, "kpi_name" : node.text, "col_name":node.attributes.col_name, "aggre":node.attributes.aggre, "fmt":node.attributes.fmt, "alias":node.attributes.alias,"tname":node.attributes.tname,"unit":node.attributes.unit,"rate":node.attributes.rate,"calc":node.attributes.calc});
}else{
msginfo("度量已经存在。");
return;
}
curTmpInfo.isupdate = true;
tableView(json, Number(id));
}
//写维度
if(node.attributes.col_type == 1){
//写col维度
if($(this).attr("id") == "d_colDims"){
if(dimExist(node.attributes.col_id, json.cols) || dimExist(node.attributes.col_id, json.rows)){
msginfo("维度已经存在。");
return;
}
//如果维度有分组,分组必须相同
var group = node.attributes.grouptype;
if(group != null && findGroup(json.rows, group)){
msginfo("拖放失败,同一分组的维度必须在同一行/列标签。");
return;
}
json.cols.push({"id":node.attributes.col_id, "dimdesc" : node.text, "type":node.attributes.dim_type, "colname":node.attributes.col_name,"alias":node.attributes.alias,"tname":node.attributes.tname,"iscas":node.attributes.iscas, "tableName":node.attributes.tableName, "tableColKey":node.attributes.tableColKey,"tableColName":node.attributes.tableColName, "dimord":node.attributes.dimord, "grouptype":node.attributes.grouptype,"valType":node.attributes.valType,ordcol:node.attributes.ordcol,dateformat:node.attributes.dateformat,"calc":node.attributes.calc});
curTmpInfo.isupdate = true;
tableView(json, Number(id));
}
//写row维度
if($(this).attr("id") == "d_rowDims"){
if(dimExist(node.attributes.col_id, json.rows) || dimExist(node.attributes.col_id, json.cols)){
msginfo("维度已经存在。");
return;
}
//如果维度有分组,分组必须相同
var group = node.attributes.grouptype;
if(group != null && findGroup(json.cols, group)){
msginfo("拖放失败,同一分组的维度必须在同一行/列标签。");
return;
}
json.rows.push({"id":node.attributes.col_id, "dimdesc" : node.text, "type":node.attributes.dim_type, "colname":node.attributes.col_name,"alias":node.attributes.alias,"tname":node.attributes.tname,"iscas":node.attributes.iscas, "tableName":node.attributes.tableName, "tableColKey":node.attributes.tableColKey,"tableColName":node.attributes.tableColName, "dimord":node.attributes.dimord,"grouptype":node.attributes.grouptype,"valType":node.attributes.valType,ordcol:node.attributes.ordcol,dateformat:node.attributes.dateformat,"calc":node.attributes.calc});
curTmpInfo.isupdate = true;
tableView(json, Number(id));
}
}
}
});
//注册固定表头事件
fireTableScroll(id);
}
function fireTableScroll(id){
$("#T"+id+" #d_kpi").scroll(function(){
var top = $(this).scrollTop();
$("#d_rowDims table").css("margin-top", "-"+top+"px");
//$("#T"+id+" #d_rowDims").scrollTop(top);
var left = $(this).scrollLeft();
$("#T"+id+" #d_colDims table").css("margin-left", "-"+left+"px");
});
var comp = findCompById(id);
var rowLvl = comp.rows?comp.rows.length:1;
if(rowLvl == 0){
rowLvl = 1;
}
var w = $("#optarea").width(), h = $(window).height();
h = h - 300;
w = w - (127 * rowLvl);
if(w <0){
w = 200;
}
$("#T"+id+" #d_rowDims").height(h);
$("#T"+id+" #d_colDims").width(w);
$("#T"+id+" #d_kpi").width(w).height(h);
}
//查找维度分组
function findGroup(dims, group, curNode){
var ret = false;
if(!dims || dims == null){
return ret;
}
for(m=0; m图片样式:
";
str = str + " 当前值
当前值 < "+(warn?warn.val1:"X")+" 且
当前值 < "+(warn?warn.val2:"X")+"
";
$('#pdailog').dialog({
title: '指标预警',
width: 360,
height: 240,
closed: false,
cache: false,
modal: true,
toolbar:null,
content: str,
buttons:[{
text:'确定',
iconCls:'icon-ok',
handler:function(){
var pictype = $("#pdailog #wctype").val();
var reverse = $("#pdailog input[name=\"fztp\"]:checked").val();
if(!reverse){
reverse = "n";
}
var logic1 = $("#pdailog #logic1").val();
var val1 = $("#pdailog #val1").val();
var logic2 = $("#pdailog #logic2").val();
var val2 = $("#pdailog #val2").val();
var pic1 = $("#pdailog #w1").attr("class");
var pic2 = $("#pdailog #w2").attr("class");
var pic3 = $("#pdailog #w3").attr("class");
if(val1 == '' || val2 == ''){
delete kpi.warning;
tableView(comp, compId);
$('#pdailog').dialog('close');
return;
}
kpi.warning = {pictype:pictype,reverse:reverse,logic1:logic1,val1:val1,logic2:logic2,val2:val2,pic1:pic1,pic2:pic2,pic3:pic3}
tableView(comp, compId);
$('#pdailog').dialog('close');
}
},{
text:'取消',
iconCls:"icon-cancel",
handler:function(){
$('#pdailog').dialog('close');
}
}]
});
$("#pdailog #val1,#pdailog #val2").numberbox({width:100,height:28, onChange:function(a, b){
var idx = $(this).attr("idx");
$("#pdailog #and" + idx).text(a);
}
});
/**
$("#pdailog #val2").numberbox("onChange", function(){
$("#pdailog #and2").text($("#pdailog #val2").numberbox("getValue"));
});
**/
$("#pdailog #wctype").change(function(){
if($(this).val() == 1){
$("#pdailog #w1").attr("class", "warning6");
$("#pdailog #w2").attr("class", "warning5");
$("#pdailog #w3").attr("class", "warning4");
}else if($(this).val() == 2){
$("#pdailog #w1").attr("class", "warning3");
$("#pdailog #w2").attr("class", "warning2");
$("#pdailog #w3").attr("class", "warning1");
}
});
//反转图片
$("#pdailog #fztp").change(function(){
if(this.checked){
if($("#pdailog #wctype").val() == 1){
$("#pdailog #w1").attr("class", "warning4");
$("#pdailog #w2").attr("class", "warning5");
$("#pdailog #w3").attr("class", "warning6");
}else if($("#pdailog #wctype").val() == 2){
$("#pdailog #w1").attr("class", "warning1");
$("#pdailog #w2").attr("class", "warning2");
$("#pdailog #w3").attr("class", "warning3");
}
}else{
if($("#pdailog #wctype").val() == 1){
$("#pdailog #w1").attr("class", "warning6");
$("#pdailog #w2").attr("class", "warning5");
$("#pdailog #w3").attr("class", "warning4");
}else if($("#pdailog #wctype").val() == 2){
$("#pdailog #w1").attr("class", "warning3");
$("#pdailog #w2").attr("class", "warning2");
$("#pdailog #w3").attr("class", "warning1");
}
}
});
$("#pdailog #clear").change(function(){
if(this.checked){
$("#pdailog #val1").numberbox("clear");
$("#pdailog #val2").numberbox("clear");
}
});
}
function kpiFilter(tp){
var kpiId = curTmpInfo.ckid;
var compId = curTmpInfo.compId.replace("T", "");
var comp = findCompById(compId);
var kpi = findKpiById(kpiId, comp.kpiJson);
var ft = kpi.filter;
var unitStr = "";
if(kpi.rate == 1000){
unitStr = "千";
}else if(kpi.rate == 10000){
unitStr = "万";
}else if(kpi.rate == 1000000){
unitStr = "百万";
}else if(kpi.rate == 100000000){
unitStr = "亿";
}
var ctx = ""+kpi.kpi_name+":
- " + unitStr+kpi.unit+"
";
$('#pdailog').dialog({
title: '度量筛选',
width: 350,
height: 220,
closed: false,
cache: false,
modal: true,
toolbar:null,
content: ctx,
buttons:[{
text:'确定',
iconCls:'icon-ok',
handler:function(){
var ft = $("#pdailog #ftype").val();
var sv = $("#pdailog #startval").val();
var ev = $("#pdailog #endval").val();
if(ft == "" || sv == ""){
delete kpi.filter;
}else{
var filter = {"kpi":kpi.kpi_id,"filterType":ft,"val1":Number(sv),"val2":(ev == ""?0:Number(ev))};
kpi.filter = filter;
}
$('#pdailog').dialog('close');
curTmpInfo.isupdate = true;
if(tp == 'table'){
tableView(comp, compId);
}else if(tp == 'chart'){
chartview(comp, compId);
}
}
},{
text:'取消',
iconCls:"icon-cancel",
handler:function(){
$('#pdailog').dialog('close');
}
}]
});
$('#pdailog #startval,#pdailog #endval').numberbox({width:100,height:28});
$("#pdailog #ftype").bind("change", function(){
var o = $(this);
if(o.val() == 'between'){
$("#pdailog #endvalspan").css("display","inline");
}else{
$("#pdailog #endvalspan").css("display","none");
}
});
$("#pdailog #clear").bind("click", function(){
$("#pdailog #ftype").val("");
$("#pdailog #startval").numberbox("clear");
$("#pdailog #endval").numberbox("clear");
});
}
//从表格JSON中删除KPI
function delJsonKpiOrDim(tp){
var id = curTmpInfo.ckid;
var compId = curTmpInfo.compId.replace("T", "");
var comp = findCompById(Number(compId));
var pos = curTmpInfo.pos;
if(tp == 'kpi'){
var kpis = comp.kpiJson;
var idx = -1;
for(var i=0; i"+resp+""
}
});
}
});
}
function filterDims(){
var dimid = curTmpInfo.ckid;
var compId = curTmpInfo.compId.replace("T", "");
var pos = curTmpInfo.pos;
var name = curTmpInfo.dimname;
//获取组件的JSON对象
var comp = findCompById(compId);
var dims = null;
if(pos == 'col'){
dims = comp.cols;
}else{
dims = comp.rows;
}
var dim_type;
for(var i=0; iLoading...
',
buttons:[{
text:'确定',
iconCls:'icon-ok',
handler:function(){
//获取DIM
var dim = null;
for(var i=0; i Number(ed.replace(/-/g, ""))){
msginfo("您选择的开始日期不能大于结束日期。", "error");
return;
}
dim.startdt = st;
dim.enddt = ed;
dim.filtertype = 1;
delete dim.vals;
}else if("month" == dim.type && index == 0){
var st = $("#dimfiltertab #dfm2").val();
var ed = $("#dimfiltertab #dfm1").val();
//判断是否st < ed
if(Number(st) > Number(ed)){
msginfo("您选择的开始月份不能大于结束月份。", "error");
return;
}
dim.startmt = st;
dim.endmt = ed;
dim.filtertype = 1;
delete dim.vals;
}else{
//获取勾选值
var vals = "";
var seles = $("#pdailog input[name='dimval']:checkbox:checked");
seles.each(function(a, b){
if(a >= 10){ //只能最多选10个
return;
}
vals = vals + $(this).val();
if(a == seles.size() - 1 || a == 9){
}else{
vals = vals + ',';
}
});
dim.vals = vals;
dim.filtertype = 2;
delete dim.startmt;
delete dim.endmt;
delete dim.startdt;
delete dim.enddt;
}
curTmpInfo.isupdate = true;
tableView(comp, compId);
$('#pdailog').dialog('close');
}
},{
text:'取消',
iconCls:"icon-cancel",
handler:function(){
$('#pdailog').dialog('close');
}
}]
});
var vals = "";
var dimtp = "";
var filtertype = ""; //用来筛选的方式,1为区间,2为值筛选
var curDim = null;
for(var i=0; i聚合方式:";
$('#pdailog').dialog({
title: '维度聚合',
width: 300,
height: 180,
closed: false,
cache: false,
modal: true,
toolbar:null,
content: ctx,
buttons:[{
text:'确定',
iconCls:'icon-ok',
handler:function(){
if(dim.issum == 'y'){
dim.issum = "n";
delete dim.aggre;
}else{
dim.issum = 'y';
dim.aggre = $("#pdailog #dimaggre").val();
}
curTmpInfo.isupdate = true;
tableView(comp, compId);
$('#pdailog').dialog('close');
}
},{
text:'取消',
iconCls:"icon-cancel",
handler:function(){
$('#pdailog').dialog('close');
}
}]
});
}
/**
判断是否存在date类型的维度,比如day/month/quarter/year
**/
function isExistDateDim(comp, tp){
var ret = false;
if(tp == 'table'){
if(!comp.cols){
return ret;
}
for(var i=0; i度量名称:"+kpi.kpi_name+"
度量单位:"+kpi.unit+"
格 式 化:"+
"";
$('#pdailog').dialog({
title: '度量属性',
width: 400,
height: 230,
closed: false,
cache: false,
modal: true,
toolbar:null,
content: ctx,
buttons:[{
text:'确定',
iconCls:'icon-ok',
handler:function(){
kpi.fmt = $("#pdailog #fmt").val();
kpi.rate = Number($("#pdailog #kpiunit").val());
$('#pdailog').dialog('close');
curTmpInfo.isupdate = true;
tableView(comp, compId);
}
},{
text:'取消',
iconCls:"icon-cancel",
handler:function(){
$('#pdailog').dialog('close');
}
}]
});
//让格式化、聚合方式选中
$("#pdailog #fmt").find("option[value='"+kpi.fmt+"']").attr("selected",true);
$("#pdailog #kpiunit").find("option[value='"+kpi.rate+"']").attr("selected",true);
//$("#pdailog #aggreType").find("option[value='"+kpi.aggre+"']").attr("selected",true);
}
function linkdetail(pms){
var comp = findCompById(1);
$.ajax({
type: "POST",
url: "header.action",
dataType:"JSON",
data: {dsetId:comp.dsetId,dsid:comp.dsid},
success: function(resp){
if($("#dsColumn_div").size() == 0){
$("").appendTo("body");
}
var ctx = "";
$('#dsColumn_div').dialog({
title: '度量提取明细',
width: 660,
height: 400,
closed: false,
cache: false,
modal: true,
toolbar:null,
content: ctx,
toolbar:[{iconCls: 'icon-export',text:"导出",handler: function(){
location.href = 'exportDetail.action';
}}],
onClose:function(){
$('#dsColumn_div').dialog('destroy');
},
buttons:[{
text:'关闭',
iconCls:"icon-ok",
handler:function(){
$('#dsColumn_div').dialog('close');
}
}]
});
var cols = [];
for(i=0; i维度取Top:
";
$('#pdailog').dialog({
title: '维度取Top',
width: 360,
height: 170,
closed: false,
cache: false,
modal: true,
toolbar:null,
content: ctx,
buttons:[{
text:'完成',
iconCls:"icon-ok",
handler:function(){
var top = $("#pdailog #top").numberbox("getValue");
var type = $("#pdailog #type").val();
dim.top = top;
dim.topType = type;
$('#pdailog').dialog('close');
tableView(comp, compId);
}
},{
text:'取消',
iconCls:"icon-cancel",
handler:function(){
$('#pdailog').dialog('close');
}
}]
});
$("#pdailog #top").numberbox({width:180, height:28});
}
function kpisort(tp){
var kpiId = curTmpInfo.ckid;
var compId = curTmpInfo.compId.replace("T", "");
var comp = findCompById(compId);
for(i=0; i= dims.length - 1){
msginfo('无效移动。', "error");
return;
}else{
var tp = dims[i + 1];
dims[i + 1] = dims[i];
dims[i] = tp;
curTmpInfo.isupdate = true;
tableView(comp, compId);
$("#dimoptmenu").menu("hide");
return;
}
}
break;
}
}
}
function getTableHeadJson(compId){
// var comp = findCompById(compId);
// var json = {comp:comp, filter:[["92"]] };
// $.ajax({
// type:"POST",
// async:false,
// url:"Table2JSON!test.action",
// dataType:"json",
// data: {json:JSON.stringify(json),"_hideMVDiv":"true"},
// success: function(resp){
//
// }
// })
var comp = findCompById(compId);
if(comp == null){
msginfo("组件不存在!", "error");
}
var ret;
$.ajax({
type:"POST",
async:false,
url:"Table2JSON.action",
dataType:"json",
data: {json:JSON.stringify(comp),"_hideMVDiv":"true"},
success: function(resp){
ret = resp;
}
});
return ret;
}
function findDimById(dimId, dims){
var ret = null;
if(!dims || dims == null){
return ret;
}
for(var i=0; i