if($ == undefined){ $ = jQuery; } function reloadDatasetTree(){ $("#datasettreediv ul").remove(); var css = "tableTreeCss"; var tab = $('div.tabs-container li.active a'); if(tab.length > 0 ){ var idx = tab.attr("idx"); if(Number(idx) == 2){ css = "chartTreeCss"; } } $("#datasettreediv").append(""); if(pageInfo.selectDs == null || pageInfo.selectDs == "null"){ $('#datasettree').tree({ dnd:false, data:[{"id":"err","text":"数据还未创建立方体。", "iconCls":"icon-no"}] }); return }else if(pageInfo.selectDs == ''){ $('#datasettree').tree({ dnd:false, data:[{"id":"err","text":"还未选择数据。", "iconCls":"icon-no"}] }); return }else{ $('#datasettree').tree({ url:'../model/treeCube.action?cubeId=' + pageInfo.selectDs, dnd:true, lines:false, onBeforeDrag:function(target){ if(!target.attributes || target.attributes.tp == 'root'){ return false; } return true; }, onDragEnter:function(target, source){ return false; } }); } } function newpage(){ var url = 'ReportDesign.action?menus='+curTmpInfo.menus+'&showtit='+showtit; if(curTmpInfo.isupdate == true){ if(confirm('页面还未保存\n是否保存当前页面?')){ savepage(function(){ location.href = url; }); }else{ location.href = url; } }else{ location.href = url; } } function initparam(){ //回写参数值 if(pageInfo.params && pageInfo.params.length>0){ $("#p_param div.ptabhelpr").remove(); $("#p_param").append("参数: "); for(i=0; i"+pageInfo.params[i].name+"("; if(pageInfo.params[i].type == 'day' || pageInfo.params[i].type == 'month'){ str = str + pageInfo.params[i].st + " 至 " + pageInfo.params[i].end; }else{ str = str + (!pageInfo.params[i].valStrs || pageInfo.params[i].valStrs == ''?"无":pageInfo.params[i].valStrs); } str = str + ")"; obj.append(str); } } //注册接收维度拖拽事件 $("#p_param").droppable({ accept:"#datasettree .tree-node", onDragEnter:function(e,source){ var node = $("#datasettree").tree("getNode", source); var tp = node.attributes.col_type; //对维度拖拽设置图标 if(tp == 1 ){ $(source).draggable('proxy').find("span").removeClass("tree-dnd-no"); $(source).draggable('proxy').find("span").addClass("tree-dnd-yes"); $(this).css("border", "1px solid #ff0000"); } e.cancelBubble=true; e.stopPropagation(); //阻止事件冒泡 }, onDragLeave:function(e,source){ $(source).draggable('proxy').find("span").addClass("tree-dnd-no"); $(source).draggable('proxy').find("span").removeClass("tree-dnd-yes"); $(this).css("border", "1px solid #d3d3d3"); e.cancelBubble=true; e.stopPropagation(); //阻止事件冒泡 }, onDrop:function(e,source){ e.cancelBubble=true; e.stopPropagation(); //阻止事件冒泡 $(this).css("border", "1px solid #d3d3d3"); var node = $("#datasettree").tree("getNode", source); var tp = node.attributes.col_type; if(tp == 1){ if(!pageInfo.params){ pageInfo.params = []; } //判断是否存在 if(findParamById(node.attributes.col_id) != null){ msginfo("您已经添加了该参数!", "error"); return; } var id = node.attributes.col_id; var p = {"id":id, "name":node.text, "type":node.attributes.dim_type, "colname":node.attributes.col_name,"alias":node.attributes.alias, "tname":node.attributes.tname,"cubeId":node.attributes.cubeId,"valType":node.attributes.valType,"tableName":node.attributes.tableName, "tableColKey":node.attributes.tableColKey,"tableColName":node.attributes.tableColName,"calc":node.attributes.calc, "dimord":node.attributes.dimord, "grouptype":node.attributes.grouptype,"dateformat":(node.attributes.dateformat==null?"":node.attributes.dateformat),dsid:node.attributes.dsid}; pageInfo.params.push(p); var obj = $(this); obj.find("div.ptabhelpr").remove(); if(obj.find("b").size() == 0){ obj.append("参数: "); } obj.append(""+node.text+"(无)"); //弹出筛选窗口 paramFilter(id, p.type, p.name); } } }); } function paramFilter(id, type, name){ var param = findParamById(id); $('#pdailog').dialog({ title: name+' - 参数值筛选', width: 290, height: param.type == 'month' || param.type == 'day' ? 240 : 320, closed: false, cache: false, modal: true, content:'
Loading...
', buttons:[{ text:'确定', iconCls:'icon-ok', handler:function(){ var vals = ""; var valStrs = ""; if(param.type == 'month'){ param.st = $("#pdailog #dfm2").val(); param.end = $("#pdailog #dfm1").val(); //判断是否st < ed if(Number(param.st) > Number(param.end)){ msginfo("您选择的开始月份不能大于结束月份。", "error"); return; } $("#p_param #pa_"+id+" span.text").text(name + "("+ param.st + " 至 " + param.end+")"); }else if(param.type == 'day'){ param.st = $("#pdailog #dft2").val(); param.end = $("#pdailog #dft1").val(); //判断是否st < ed if(Number(param.st.replace(/-/g, "")) > Number(param.end.replace(/-/g, ""))){ msginfo("您选择的开始日期不能大于结束日期。", "error"); return; } $("#p_param #pa_"+id+" span.text").text(name + "("+ param.st + " 至 " + param.end+")"); }else{ 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 + ','; } valStrs = valStrs + $(this).attr("desc"); if(a == seles.size() - 1 || a == 9){ }else{ valStrs = valStrs + ','; } }); $("#p_param #pa_"+id+" span.text").text(name+"("+(valStrs == '' ? '无':valStrs)+")"); param.vals = vals; param.valStrs = valStrs; } $('#pdailog').dialog('close'); curTmpInfo.isupdate = true; flushPage(); } },{ text:'取消', iconCls:"icon-cancel", handler:function(){ $('#pdailog').dialog('close'); } }] }); var url = (curTmpInfo.filterUrl ? curTmpInfo.filterUrl :"paramFilter.action") + "?cubeId="+param.cubeId+"&id="+id+"&dsid="+param.dsid; if(param.type == "month"){ url = url + "&st="+(param.st?param.st:"")+"&end="+(param.end?param.end:""); }else if(param.type == "day"){ url = url + "&st="+(param.st?param.st:"")+"&end="+(param.end?param.end:""); }else{ //url = url + "&vals="+(!param.vals || param.vals =='' ? '':param.vals );; } $("#pdailog #div_paramfilter").load(url, {vals:(!param.vals || param.vals =='' ? '':param.vals),t:Math.random()}); } function searchDims2(val, id){ var param = findParamById(id); var url = "paramSearch.action?cubeId="+param.cubeId+"&id="+id+"&dsid=" + param.dsid ; $.ajax({ type:"POST", url:url, data:{keyword:val, vals:(!param.vals || param.vals =='' ? '':param.vals), t:Math.random()}, dataType:'HTML', success:function(resp){ $("#pdailog .dfilter").html(resp); } }); } function flushPage(){ //刷新页面 for(var k=0; pageInfo.comps&&k拖拽维度到此处作为页面参数"); } flushPage(); } function openreport(){ var ctx = ""; $('#pdailog').dialog({ title: '打开报表', width: 620, height: 400, closed: false, cache: false, modal: true, toolbar:null, content:ctx, onLoad:function(){}, buttons:[{ text:'确定', iconCls:'icon-ok', handler:function(){ var r = $("input[name=\"reportId\"]:checked").val(); if(!r || r == null){ msginfo("请至少选择一个报表!", "error"); return; } $('#pdailog').dialog('close'); $(this).attr("href", "#"); var url = 'ReportDesign.action?pageId='+r+'&showtit='+showtit+'&menus='+curTmpInfo.menus; if(curTmpInfo.isupdate == true){ if(confirm('页面还未保存\n是否保存当前页面?')){ savepage(function(){ location.href = url; }); }else{ location.href = url; } }else{ location.href = url; } } },{ text:'取消', iconCls:"icon-cancel", handler:function(){ $('#pdailog').dialog('close'); } }] }); $("#rename").linkbutton({'iconCls':'icon-edit', plain:true}).click(function(){ var r = $("input[name=\"reportId\"]:checked").val(); if(!r || r == null){ msginfo("请至少选择一个报表!", "error"); return; } $.messager.prompt('报表改名', '请输入新的报表名称?', function(msg){ if(msg){ $.ajax({ type: "POST", url: "renameReport.action", dataType:"HTML", data: {pageId:r, pageName:msg}, success: function(resp){ $('#pdailog .openlist').load('listReport.action?t='+Math.random()); }, error:function(){ } }); } }); }); $("#delreport").linkbutton({'iconCls':'icon-remove', plain:true}).click(function(){ var r = $("input[name=\"reportId\"]:checked").val(); if(!r || r == null){ msginfo("请至少选择一个报表!", "error"); return; } if(confirm('是否确认删除?')){ $.ajax({ type: "POST", url: "deleteReport.action", dataType:"HTML", data: {id:r}, success: function(resp){ $('#pdailog .openlist').load('listReport.action?t='+Math.random()); }, error:function(){ } }); } }); $("#subSearchBox").searchbox({ searcher:function(value,name){ $('#pdailog .openlist').load('listReport.action',{"keyword":value,"t":Math.random()}); }, prompt:'请输入查询关键字.' }); $('#pdailog .openlist').load('listReport.action?t='+Math.random()); } /** function delComp(id){ //从全局对象中移除 var idx = -1; for(i=0;i请先添加组件再进行多维分析(点击插入按钮)。"); } } **/ /** * tp = table, chart, text 3种内置类型 name : 组件标题 ispush:是否添加到组件视图树 curComp:组件配置信息 ctx:组件InnerHTML **/ function addComp(id, name, ctx, ispush, tp, curComp){ if(ctx == null || ctx == undefined){ if(tp =='table'){ //判断是新增,还是回写已有的 if(curComp == null || curComp == undefined){ ctx = crtCrossTable(); }else{ if(curComp.cols == undefined || curComp.kpiJson == undefined){ //添加了组件,但未选度量 ctx = crtCrossTable(); }else{ ctx = ""; } } }else if(tp == 'chart'){ ctx = crtChart(id); } } //是否向全局对象中添加内容 if(ispush == true){ pageInfo.comps.push({"id":id, "name":name, "type":tp}); curTmpInfo.isupdate= true; } var titleHTML="
" + "
"+(ctx == null ? "" : ctx)+"
" + "
"; if(tp == "table"){ $("#optarea").html(titleHTML); }else if(tp == "chart"){ $("#chartarea").html(titleHTML); } //如果是表格或图形,增加接受拖拽事件 if(tp == 'table'){ btns=[]; //表格接收拖拽事件 if(curComp != null && curComp != undefined){ if(curComp.cols == undefined || curComp.kpiJson == undefined){ //添加了组件,但未选度量,需要添加拖放度量事件 initDropDiv(id); }else{ tableView(curComp, id); } }else{ initDropDiv(id); } } if(tp == 'chart'){ //如果是回写,更新图形数据 if(curComp != null && curComp != undefined){ chartview(curComp, id); //回写配置信息 backChartData(curComp); //图形接收拖拽事件 if(curComp.chartJson.type == 'bubble' || curComp.chartJson.type == 'scatter'){ initChartByScatter(id); }else{ initChartKpiDrop(id) } }else{ //或者是新增 //图形接收拖拽事件 if(curTmpInfo.charttype == 'bubble' || curTmpInfo.charttype == 'scatter'){ initChartByScatter(id); }else{ initChartKpiDrop(id) } } } } function selectdataset(){ $('#pdailog').dialog({ title: '选择数据模型 ', width: 520, height: 400, closed: false, cache: false, modal: true, toolbar:null, content:"
名称说明
", buttons:[{ text:'确定', iconCls:'icon-ok', handler:function(){ var row = $("#subjectlist").datagrid("getChecked"); if(row == null || row.length == 0){ msginfo("请勾选数据。", "error"); return; } pageInfo.selectDs = row[0].cubeId; $('#pdailog').dialog('close'); //更新页面为已修改 curTmpInfo.isupdate = true; //更新数据集 reloadDatasetTree(); } },{ text:'取消', iconCls:"icon-cancel", handler:function(){ $('#pdailog').dialog('close'); } }] }); $("#subSearchBox").searchbox({ searcher:function(value,name){ $("#subjectlist").datagrid("load",{"id":"0", key:value,t:Math.random()}); }, prompt:'请输入查询关键字.' }); $("#subjectlist").datagrid({ singleSelect:true, collapsible:false, pagination:true, pageSize:20, border:true, url:'../model/pageCube.action', method:'post', queryParams:{id:"0", t: Math.random()} }); } /** 保存页面 @param {Function} 保存完成后回调函数 */ function savepage(cb){ for(k=0; k
报表名称: "; $('#pdailog').dialog({ title: '保存报表', width: 330, height: 160, closed: false, cache: false, modal: true, toolbar:null, content: ctx, buttons:[{ text:'确定', iconCls:'icon-ok', handler:function(){ var name = $("#pdailog #pageName").val(); if(name == ''){ msginfo("您还未录入文件名称。", "error"); $("#pdailog #pageName").focus(); return; } $.post("saveReport.action", {"pageInfo": jsonStr, "pageId":"", "pageName" : name}, function(resp){ if(resp.result == 0){ msginfo("保存失败,名称存在重复。", "error"); return; } pageInfo.id = Number(resp.rows); if(cb != undefined){ cb(); }else{ } msginfo("保存成功!", "success"); //更新页面为未修改 curTmpInfo.isupdate = false; $('#pdailog').dialog('close'); }); } },{ text:'取消', iconCls:"icon-cancel", handler:function(){ $('#pdailog').dialog('close'); } }] }); }else{ //已经保存过,直接update $.post("saveReport.action", {"pageInfo": jsonStr, "pageId":pageId}, function(resp){ if(cb != undefined){ cb(); }else{ } msginfo("保存成功!", "success"); //更新页面为未修改 curTmpInfo.isupdate = false; }); } } //打印页面 function printData(){ var tabId = $("div.tabs-container li.active a").attr("idx"); var info = JSON.parse(JSON.stringify(pageInfo)); //复制对象 var comp = findCompById(tabId, info); delete comp.dims; info.comps = [comp]; var json = JSON.stringify(info); var url2 = "about:blank"; var name = "printwindow"; window.open(url2, name); var ctx = "
"; var o = $(ctx).appendTo("body"); $("#ppageInfo").val(json); o.submit().remove(); } //导出页面 function exportPage(tp){ var ctx = "
"; if($("#expff").size() == 0){ $(ctx).appendTo("body"); } var tabId = $("div.tabs-container li.active a").attr("idx"); var info = JSON.parse(JSON.stringify(pageInfo)); //复制对象 var comp = findCompById(tabId, info); delete comp.dims; info.comps = [comp]; $("#expff #type").val(tp); $("#expff #json").val(JSON.stringify(info)); //把图形转换成图片 var strs = ""; if(tp == "pdf" || tp == "excel" || tp == "word"){ $("div.chartUStyle").each(function(index, element) { var id = $(this).attr("id"); id = id.substring(1, id.length); var chart = echarts.getInstanceByDom(document.getElementById(id)); var str = chart.getDataURL({type:'png', pixelRatio:1, backgroundColor: '#fff'}); str = str.split(",")[1]; //去除base64标记 str = $(this).attr("label") + "," + str; //加上label标记 strs = strs + str; if(index != $("div.chartUStyle").size() - 1){ strs = strs + "@"; } }); } $("#expff #picinfo").val(strs); $("#expff").submit(); } function cleanData(){ var idx = pageInfo.idx ? pageInfo.idx : "1"; if(idx == "1"){ pageInfo.comps[0] = {"name":"表格组件","id":1, "type":"table"}; $("#T1 div.ctx").html(crtCrossTable()); initDropDiv("1"); }else if(idx == "2"){ pageInfo.comps[1] = {"name":"","id":2, "type":"chart",chartJson:{type:"line",params:[]},kpiJson:[]}; $("#T2 div.ctx").html(crtChart(2)); initChartKpiDrop(2) } } function kpidesc(){ $('#pdailog').dialog({ title: '度量解释', width: 600, height: 350, closed: false, cache: false, modal: true, toolbar:null, buttons:[{ text:'关闭', iconCls:"icon-ok", handler:function(){ $('#pdailog').dialog('close'); } }] }); $('#pdailog').dialog('refresh', "kpidesc.action?cubeId="+pageInfo.selectDs, {t:Math.random()}); }