require.config({
baseUrl: 'resources/js',
paths: {
"jquery": "lib/bootstrap/js/jquery-2.1.4.min",
"jquery-ui": "lib/jquery-ui.min",
"bootstrap": "lib/bootstrap/js/bootstrap.min",
"validate": "lib/jquery.validate.min",
"metisMenu": "lib/metisMenu/metisMenu.min",
"ztree": "lib/ztree/js/jquery.ztree.all.min",
"infovis": "lib/infovis.min",
"jqueryCookie": "lib/jquery.cookie",
"jqueryMd5": "lib/jquery.md5",
"mousewheel": 'lib/mCustomScrollbar/jquery.mousewheel.min',
"scrollbar" : 'lib/mCustomScrollbar/jquery.mCustomScrollbar.min',
"commonModule" : 'app/commonModule',
"jrange" : 'lib/jRange/jquery.range',
"datetimepicker": "lib/bootstrapTimePicker/bootstrap-datetimepicker",
"dateTimepicker-cn": "lib/bootstrapTimePicker/bootstrap-datetimepicker.zh-CN",
"bootstrap-switch": "lib/flatadmin/lib/js/bootstrap-switch.min",
"domReady" : 'lib/domReady',
"vue": "lib/vue/vue",
"echarts": "lib/charts/echarts",
"generateTableHtml": "app/generateTableHtml",
"tooltipster": "lib/gridly/tooltipster.bundle.min",
"sortable": "lib/gridly/jquery.sortable",
"thenBy": "lib/thenBy",
"jquery-confirm": "lib/confirm/jquery-confirm.min",
"jquery-loading": "lib/jqueryLoading/jquery.loading",
"nicescroll": "lib/nicescroll/jquery.nicescroll.min",
"tableexport": "lib/tableExport/tableexport.min",
"file-saverjs": "lib/tableExport/FileSaver",
"blobjs": "lib/tableExport/Blob",
"xlsx": "lib/tableExport/xlsx",
"jzip": "lib/tableExport/jszip"
},
shim : {
"bootstrap" : { "deps" :['jquery'] },
"jquery-ui" : { "deps" :['jquery'] },
"jqueryMd5" : { "deps" :['jquery'] },
"metisMenu" : { "deps" :['jquery'] },
"ztree" : { "deps" :['jquery'] },
"dateTimepicker-cn" : { "deps" :['jquery', 'datetimepicker'] },
"sortable" : { "deps" :['jquery'] },
"bootstrap-switch" : { "deps" :['jquery'] },
"tableexport": { "deps" :['blobjs', 'file-saverjs', 'xlsx', 'jzip'] }
},
waitSeconds: 30
});
require(['jquery', 'domReady', 'vue', 'echarts','commonModule','ztree','validate',
'bootstrap','metisMenu','mousewheel','scrollbar','jqueryCookie','jqueryMd5','jquery-ui','datetimepicker','dateTimepicker-cn',
'bootstrap-switch','nicescroll','tableexport'],
function($,domReady,vue,echarts,commonModule,ztree,validate){
domReady(function(){
var app = new vue({
el: '#app',
data: {
dangerIndex: -1,
//图表类型
chartType: 'table',
//标记可接受数据类型(维度、度量)以及图表类型
axisTagMap: {
xAxis: {
dataType: "text",
line:true,
bar:true,
pie:false,
table:true
},
yAxis:{
dataType: "number",
line:true,
bar:true,
pie:false,
table:true
},
filter:{
dataType: "all",
line:true,
bar:true,
pie:true,
table: true
},
color :{
dataType: "text",
line:false,
bar:false,
pie:true,
tale:false
},
corner :{
dataType: "number",
line:false,
bar:false,
pie:true,
table:false
},
tag : {
dataType: "",
line:false,
bar:false,
pie:false,
table:false
}
},
//通知第一层树,第二层树加载
firstLevelDeferred: $.Deferred(),
secondLevelDeferred: $.Deferred(),
//chartId 对应myCharts表的主键,默认是0,即新建图表时,查询参数为0
chartId: 0,
//对应的设计面板
exportId: 0,
jobGroup: '',
chartName: '',
sqlRecordingId: 0,
startTime: '',
selectedPeriod: '',
isShowJobSetting: true,
isShowUpdateCheck: true,
dataSourcePicked: 0,
showFilterIndex: -1,
filterHeight: '0px',
filterType: '',
numberResult: [],
rangeMin: 0,
rangeMax: 1,
//localStorage存储的key
key: '',
//行、列、筛选标识
tagType: '',
//拖拽元素数据类型
dragDataType: '',
//图表构建模型
builderModel: '',
//维度
dimension: [],
//度量
measure: [],
//x轴
xAxis: [],
//y轴
yAxis: [],
//颜色
color: [],
//角度
corner: [],
//标记
tag: [],
//过滤项
filter: [],
//分组因素
group: [],
//color,corner接收框样式
backgroundColor: '',
border: '',
borderRight: '',
//过滤内容模型
filterContent: [],
//table分组内容模型
groupParam: {},
groupFactor: [],
//table排序模型
order: {},
//table当前页
currentPage: 1,
//checkBox选中项
checkedNames: {},
//table过滤条件
filterParam: {},
allGroups: [],
authorityForConsumer: 'read',
authorityForAdmin: 'write',
groupForRead: [],
groupForWrite: []
},
methods: {
//顶部菜单划过事件
topMenuMouseEnter: function(index){
app.dangerIndex = index;
},
//图表类型选择
chartTypeSelect: function (chartType) {
this.chartType = chartType;
this.resetTagContent();
if(echarts.getInstanceByDom(document.getElementById('editArea')) != undefined){
echarts.getInstanceByDom(document.getElementById('editArea')).dispose();
}
$("#editArea").html('
'+
'
请选择数据集
'+
'将维度、度量拖入工作区(行、列、标记)
'+
'');
},
//获取tag图标class
getTagIclassType: function(tagType){
var iclass = '';
switch(tagType)
{
case 'color':
iclass = 'fa-tachometer';
break;
case 'corner':
iclass = 'fa-clock-o';
break;
case 'tag':
iclass = 'fa-tags';
break;
default:
iclass = '';
}
return iclass;
},
//tag恢复样式
restoreTagStyle: function(target,tagType){
if(tagType == 'xAxis' || tagType == 'yAxis' || tagType == 'filter'){
target.css("background-color",'#ffffff');
target.css("border",'1px dashed #ccc');
}else if(tagType == 'corner' || tagType == 'color'){
target.css("background-color",'#ffffff');
target.css("border",'none');
target.css("border-right",'1px dashed #ccc');
}
},
//tag删除事件
tagRemove: function(tagType, targetNodeText){
var items;
if(tagType == 'color'){
this.restoreTagStyle($(".mark-item-color"),'color');
this[tagType] = [];
}else if(tagType == 'corner'){
this.restoreTagStyle($(".mark-item-corner"),'corner');
this[tagType] = [];
}else if(tagType == 'xAxis'){
items = this[tagType];
items.splice($.inArray(targetNodeText, items),1);
this[tagType] = items;
this.restoreTagStyle($(".xAxis"),'xAxis');
}else if(tagType == 'yAxis'){
items = this[tagType];
items.splice($.inArray(targetNodeText, items),1);
this[tagType] = items;
this.restoreTagStyle($(".yAxis"),'yAxis');
}else if(tagType == 'filter'){
var filterContent = this.filter;
filterContent.splice($.inArray(targetNodeText, filterContent),1);
this.filter = filterContent;
}
this.$nextTick(function(){
if(app.chartType == 'table'){
commonModule.renderTable(app.chartType,app.sqlRecordingId,app.filterParam,app.groupParam,app.currentPage,app.order,app);
}else {
commonModule.renderChart(this.chartType,this.sqlRecordingId,app);
}
});
},
showFilterContent: function(index, dragDataType){
this.showFilterIndex = index;
$(document).mousedown(function(){
app.showFilterIndex = -1;
});
app.filterType = dragDataType;
},
/**
* tag拖拽渲染
* @param targetNodeText tag文本信息即字段信息
* @param tagType 目标区域类型
* @param target 所要添加的目标区域
* @param dragDataType 字段类型
* @param isRender 是否渲染图表
*/
renderTag: function(targetNodeText,tagType,target,dragDataType,chartType,isRender){
var acceptDataType = this.axisTagMap[tagType].dataType;
var isAcceptChartType = this.axisTagMap[tagType][chartType];
var iclass = this.getTagIclassType(tagType);
if(((acceptDataType == dragDataType)&&isAcceptChartType) || acceptDataType == "all"){
switch (tagType) {
case 'color':
var color = [];
this.color = color;
this.color.push({iclass: 'fa '+iclass, targetNodeText: targetNodeText});
target.css("background-color",'#f6eedb');
target.css("border",'1px #f9e7bb solid');
target.css("cursor","move");
app.$nextTick(function(){
if(isRender != false){
commonModule.renderChart(app.chartType,this.sqlRecordingId,app);
}
});
break;
case 'corner':
var corner = [];
this.corner = corner;
this.corner.push({iclass: 'fa '+iclass, targetNodeText: targetNodeText});
target.css("background-color",'#d2ddf0');
target.css("border",'1px #b1caf4 solid');
target.css("cursor","move");
app.$nextTick(function(){
if(isRender != false){
commonModule.renderChart(app.chartType,this.sqlRecordingId,app);
}
});
break;
case 'tag':
this.tag.push({iclass: 'fa '+iclass, targetNodeText: targetNodeText});
target.css("cursor","move");
break;
case 'xAxis':
if(app.chartType == 'table'){
for(var i=0;i= 0 ||
$.inArray(targetNodeText,this.yAxis) >= 0 || $.inArray(targetNodeText,this.color) >= 0 ||
$.inArray(targetNodeText,this.corner) >= 0)){
this.filter.push({targetNodeText: targetNodeText, dragDataType: dragDataType});
app.$nextTick(function(){
var height = target.height();
app.filterHeight = height+'px';
this.showFilterIndex = this.filter.length-1;
$(document).mousedown(function(){
app.showFilterIndex = -1;
});
});
commonModule.getFilterResult(this.chartType,this.sqlRecordingId,targetNodeText,dragDataType,app);
}
}
}else {
this.restoreTagStyle(target,tagType);
}
var xAxis= app.xAxis;
var yAxis = app.yAxis;
},
//重置全部标签内容
resetTagContent: function(){
this.restoreTagStyle($(".xAxis"),'xAxis');
this.xAxis = [];
this.restoreTagStyle($(".yAxis"),'yAxis');
this.yAxis = [];
this.restoreTagStyle($('form.make-model-region .mark-item-color'),'color');
this.color = [];
this.restoreTagStyle($('form.make-model-region .mark-item-corner'),'corner');
this.corner = [];
this.restoreTagStyle($('.column-filter'), 'filter');
this.filter = [];
echarts.dispose(document.getElementById("editArea"));
},
//获取localStorage中的维度与度量
getLocalStorageInfo: function(res){
var key = $.md5(JSON.stringify(res));
var result;
var localStorageResult = localStorage.getItem(key);
if(localStorageResult){
result = {
data : JSON.parse(localStorageResult),
type : 'localStorage'
}
}else{
//维度和度量模型
var columnModle ={
dimension :[],
measure :[]
};
$.each(res,function(index,element){
if(element.type == 'varchar') {
columnModle.dimension.push(element.name);
}else{
columnModle.measure.push(element.name);
}
});
result = {
data : columnModle,
type : 'ajax'
};
localStorage.setItem(key,JSON.stringify(columnModle));
}
return result
},
//将维度与度量保存到localStorage
saveLocalStorageInfo: function () {
//维度和度量模型
var columnModle ={
dimension :this.dimension,
measure :this.measure
};
localStorage.setItem($.md5(JSON.stringify(this.key)), JSON.stringify(columnModle));
},
//切换维度度量
changeTagType: function(tagType,targetNodeText){
var dimension = this.dimension;
var measure = this.measure;
if(tagType == 'text'){
dimension.splice($.inArray(targetNodeText,dimension),1);
measure.push(targetNodeText);
this.dimension = dimension;
this.measure = measure;
}else if(tagType == 'number'){
measure.splice($.inArray(targetNodeText,measure),1);
dimension.push(targetNodeText);
this.dimension = dimension;
this.measure = measure;
}
//移动后保存到localStorage
this.saveLocalStorageInfo();
setTimeout(function(){
$('#side-menu ul.nav.nav-third-level li').draggable({
cursor: "move",
opacity: 0.7,
appendTo :'body',
cursorAt: { top: 10, left: 34 },
helper: function(event) {
var dragText = $(this).find("a").find("span").html();
return $( ""+dragText+"
" );
}
});
},0);
},
//返回行、列、筛选标识
axisTagType: function(target){
if(target.hasClass("xAxis")){
this.tagType = 'xAxis';
}else if(target.hasClass("yAxis")){
this.tagType = 'yAxis';
}else if(target.hasClass("column-filter")){
this.tagType = 'filter';
}
},
//拖拽元素数据类型
dragUIDataType: function (ui) {
var textTag = $(ui.draggable).find("a").find("i").hasClass("glyphicon-text-color");
var numberTag = $(ui.draggable).find("a").find("i").hasClass("fa-sort-numeric-asc");
if(textTag){
this.dragDataType = 'text';
}else if(numberTag){
this.dragDataType = 'number';
}
},
//tag拖拽OVER样式
tagDropOverRender: function(chartType,tagType,target,dataType) {
var acceptdataType = this.axisTagMap[tagType].dataType;
var isAcceptChartType = this.axisTagMap[tagType][chartType];
if((acceptdataType == dataType && isAcceptChartType) || acceptdataType == "all"){
target.css("border","1px dashed #22a7f0");
target.css("background-color","#cfe9f7");
}else if(!isAcceptChartType || acceptdataType!= dataType){
target.css("border","1px dashed #ff2828");
target.css("background-color","#ffeeee");
}
},
//图表保存
saveChart: function(){
if((this.xAxis.length > 0 && this.yAxis.length > 0) || (this.corner.length > 0 && this.color.length > 0)){
$("#addChartForm").submit();
}else if ((this.xAxis.length > 0 || this.yAxis.length > 0) && this.chartType == 'table'){
$("#addChartForm").submit();
}else {
alert("请先绘制图表");
}
},
doFilter: function(){
var filterContent = []; //经过过滤的内容
for(var i=0;i= 0){
app.groupFactor.splice(index, 1);
}else {
app.groupFactor.push(tagText);
}
app.groupParam.groupFactor = app.groupFactor;
commonModule.renderTable(app.chartType,app.sqlRecordingId,app.filterParam,app.groupParam,app.currentPage,app.order,app);
}
},
getAllGroups: function(){
$("body").loading('toggle');
$(".loading-overlay").css("z-index", "100002");
$.get('authority/getAllGroups',function (data) {
app.allGroups = data;
app.$nextTick(function(){
$("body").loading('toggle');
});
})
}
},
mounted: function () {
this.getAllGroups();
//日期格式化方法
Date.prototype.Format = function(fmt)
{
var o = {
"M+" : this.getMonth()+1, //月份
"d+" : this.getDate(), //日
"h+" : this.getHours(), //小时
"m+" : this.getMinutes(), //分
"s+" : this.getSeconds(), //秒
"q+" : Math.floor((this.getMonth()+3)/3), //季度
"S" : this.getMilliseconds() //毫秒
};
if(/(y+)/.test(fmt))
fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
for(var k in o)
if(new RegExp("("+ k +")").test(fmt))
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
return fmt;
};
//若通过点击设计面板中的表进入时,则chartId对应其在MyCharts表中的主键
if(window.location.href.indexOf("chartId") > 0){
this.chartId = window.location.href.split("=")[1].replace("&exportId","");
this.exportId = window.location.href.split("=")[2].replace("#","");
}else{
this.exportId = window.location.href.split("=")[1].replace("#","");
}
//初始化图表
var deferred = $.ajax({
type: 'POST',
url: 'selectOneChartInfo',
data: "id="+this.chartId
});
deferred.done(function(data){
if(data){
var editChart = echarts.init(document.getElementById("editArea"));
app.chartType = data.chartType;
app.jobGroup = data.chartType;
app.builderModel = JSON.parse(data.buildModel);
if(parseInt(data.isRealTime) == 0){
if(app.chartType == 'table'){
// $("#editArea").html(data.jsCode);
commonModule.renderTableInPanel($("#editArea"), data, app)
}else {
editChart.setOption(JSON.parse(data.jsCode));
}
}else if(parseInt(data.isRealTime) == 1){
$.ajax({
type: 'POST',
contentType: "application/json; charset=utf-8",
url: 'render',
data: JSON.stringify({
'chartType': data.chartType,
'dataRecordId': data.sqlRecordingId,
'builderModel': JSON.parse(data.buildModel)
}),
success: function(option){
var newOption = JSON.parse(data.jsCode);
newOption.series = option.series;
commonModule.addToolBox(option);
editChart.setOption(newOption);
},
error: function(){
$("editArea").text("当前图表渲染失败,请检查远程数据库连接是否正常或刷新重试。");
}
});
}
app.chartName = data.chartName;
app.dataSourcePicked = parseInt(data.isRealTime);
// 获取当前定时任务信息
$.ajax({
type: 'POST',
url: 'myChart/getSchedulerInfo',
data: {
triggerName: app.chartId,
triggerGroup: data.chartType
},
success: function(info){
if(info.haveJob == true){
$(".toggle-checkbox").bootstrapSwitch('state', true);
app.startTime = info.startTime;
app.selectedPeriod = info.period;
}else {
$(".toggle-checkbox").bootstrapSwitch('state', false);
}
}
});
//获取权限分组信息
$.ajax({
type: 'POST',
url: 'authority/getChartGroup',
data: {
chartId: app.chartId
},
success: function(data){
app.authorityForConsumer = data.authorityForConsumer;
app.groupForRead = data.groupOfRead;
app.groupForWrite = data.groupOfWrite;
}
})
}
});
//初始化插件
$('.toggle-checkbox').bootstrapSwitch({
size: "small",
onSwitchChange: function(event, state){
if(state == true){
app.isShowJobSetting = true;
$.ajax({
type: 'POST',
url: 'myChart/resumeJob',
data: {
jobName: app.chartId,
jobGroup: app.jobGroup
}
});
}else if(state == false){
app.isShowJobSetting = false;
$.ajax({
type: 'POST',
url: 'myChart/pauseJob',
data: {
jobName: app.chartId,
jobGroup: app.jobGroup
}
});
}
}
});
$('.form_datetime').datetimepicker({
format: "yyyy-mm-dd hh:ii:ss",
language: 'zh-CN',
weekStart: 1,
todayBtn: 1,
autoclose: 1,
todayHighlight: 1,
startView: 2,
forceParse: 0,
showMeridian: 1
});
if(this.startTime == ''){
var time = new Date().Format("yyyy-MM-dd hh:mm:ss");
this.startTime = time; //设置默认值
}
$("#addChartForm").validate({
errorElement : 'div',
errorClass : 'warning-block',
focusInvalid : true,
ignore : "",
rules : {
chartName : {
required : true,
maxlength:300
}
},
messages : {
chartName : {
required : "图表名称为必填项",
maxlength: "最大长度为50个字符"
}
},
submitHandler : function(form){
var authority = {
adminRead: 1,
adminWrite: 1,
groupRead: app.groupForRead,
groupWrite: app.groupForWrite
};
if(app.authorityForConsumer == 'none'){
authority.consumerRead = 0;
authority.consumerWrite = 0;
}else if(app.authorityForConsumer == 'read'){
authority.consumerRead = 1;
authority.consumerWrite = 0;
}else if(app.authorityForConsumer == 'write'){
authority.consumerRead = 1;
authority.consumerWrite = 1;
}
if(app.chartId == 0){
var jsCode;
if(app.chartType == 'table'){
$("#editArea").find("table").css('width', '100%');
$("#editArea").find("table").css('height', '90%');
$("#editArea").find("caption").remove();
jsCode = $("#editArea").html();
}else {
var option = echarts.getInstanceByDom(document.getElementById("editArea")).getOption();
option.toolbox[0].show = false;
jsCode = JSON.stringify(option);
}
var paramId;
var deferred01 = $.ajax({
type: 'POST',
url: 'addCharts',
data : {
'chartType': app.chartType,
'sqlRecordingId': app.sqlRecordingId,
'buildModel': JSON.stringify(app.builderModel),
'jsCode': jsCode,
'chartName': app.chartName,
'isRealTime' : app.dataSourcePicked,
'authority': JSON.stringify(authority)
}
});
deferred01.done(function(data){
paramId = data;
$(form)[0].reset();
$("#addChartModal").modal('toggle');
top.window.location = "showPanel.page?exportId="+app.exportId+"&chartId="+data;
});
if($(".toggle-checkbox").bootstrapSwitch('state') == true && app.chartType != 'table'){
var time = $('.form_datetime').find("input").val();
$.when(deferred01).done(function(){
var deferred02 = $.ajax({
type: 'POST',
url: 'myChart/addSchedulerJob',
data: {
'chartId': paramId,
'chartType': app.chartType,
'startTime': time,
'period': app.selectedPeriod,
'triggerName': paramId,
'triggerGroup': app.chartType
}
});
deferred02.fail(function(){
alert("定时任务设置失败!");
});
});
}
}else {
var jsCode;
if(app.chartType == 'table'){
$("#editArea").find("table").css('width', '100%');
$("#editArea").find("table").css('height', '100%');
$("#editArea").find("caption").remove();
jsCode = $("#editArea").html();
}else {
var option = echarts.getInstanceByDom(document.getElementById("editArea")).getOption();
option.toolbox[0].show = false;
jsCode = JSON.stringify(option);
}
var deferred = $.ajax({
type: 'POST',
url: 'updateChartInfo',
data : {
'id': app.chartId,
'chartType': app.chartType,
'sqlRecordingId': app.sqlRecordingId,
'buildModel': JSON.stringify(app.builderModel),
'jsCode': jsCode,
'chartName': app.chartName,
'isRealTime' : app.dataSourcePicked
}
});
deferred.done(function(data){
$(form)[0].reset();
$("#addChartModal").modal('toggle');
top.window.location = "showPanel.page?exportId="+app.exportId;
});
$.ajax({
type: 'POST',
// contentType: "application/json; charset=utf-8",
url: 'authority/updateChartGroup',
data: {
'id': app.chartId,
// 'chartType': app.chartType,
// 'sqlRecordingId': app.sqlRecordingId,
// 'buildModel': JSON.stringify(app.builderModel),
// 'jsCode': jsCode,
// 'chartName': app.chartName,
// 'isRealTime' : app.dataSourcePicked,
'authority': JSON.stringify(authority)
}
});
if(app.chartType != 'table'){
$.ajax({
type: 'POST',
url: 'myChart/retScheduleJob',
data: {
'triggerName': app.chartId,
'triggerGroup': app.jobGroup,
'startTime': app.startTime,
'period': app.selectedPeriod
}
})
}
}
}
});
$('#side-menu').metisMenu({
toggle: false
});
//页面图表和树初始化
if(window.location.href.indexOf("chartId") > 0){
this.chartId = window.location.href.split("=")[1].replace("&exportId","");
}
$.fn.zTree.init($("#dataListTree"),{
async: {
enable: true,
url:"sqlRecordingManage/queryTree",
autoParam:["queryParam", "level=lv"],
dataType: "JSON",
dataFilter: function(treeId, parentNode, responseData) {
//批量增加iconSkin
$.each(responseData,function(index,object){
if(object.type == 'database'){
switch(object.dbType)
{
case 'Oracle':
object.iconSkin = "oracleIcon";
break;
case 'MySql':
object.iconSkin = "mysqlIcon";
break;
case 'SqlServer':
object.iconSkin = "sqlserverIcon";
break;
case 'H2':
object.iconSkin = "h2Icon";
break;
default:
object.iconSkin = "dbIcon";
}
}else{
object.iconSkin = "tableIcon";
}
});
return responseData;
}
},
data: {
key: {
name: "dbName"
}
},
callback: {
onAsyncSuccess :function () {
$("div.leftScrollPanel").mCustomScrollbar({
autoHideScrollbar:true,
axis:"yx",
theme:"dark"
});
if(arguments[3][0].dbUrl){
app.firstLevelDeferred.resolve();
}else{
app.secondLevelDeferred.resolve();
}
},
onClick: function(event, treeId, treeNode){
var tree = $.fn.zTree.getZTreeObj("dataListTree");
var sqlRecordingId = tree.getSelectedNodes()[0].id; //数据集id
if(sqlRecordingId != app.sqlRecordingId){//数据源切换,重置标签
app.resetTagContent();
}
app.sqlRecordingId = sqlRecordingId; //用于插入图表关联信息
if(!treeNode.dbUrl) {
$('#side-menu li a:eq(0)').html("" + treeNode.dbName + "");
var queryParam = {};
queryParam.id = treeNode.getParentNode().id;
queryParam.sql = treeNode.sql;
queryParam.queryMaxRows = 1;
queryParam.paging = false;
var deferred = $.ajax({
type: 'POST',
dataType: 'json',
url: 'connectionManage/getQuerySqlInfo',
data : queryParam
});
deferred.done(function(result){
var columnModle = app.getLocalStorageInfo(result).data;
app.dimension = [];
app.measure = [];
$.each(columnModle.dimension,function (index,element) {
app.dimension.push(element);
});
$.each(columnModle.measure,function (index,element) {
app.measure.push(element);
});
app.key = result;
//滚动条插件
$(".scrollable").mCustomScrollbar({
autoHideScrollbar:true,
theme:"dark"
});
//在droppable事件中发送option组装请求
$("form.make-model-region .trigger-column").droppable({
drop: function (event, ui) {
app.axisTagType($(this));
app.dragUIDataType(ui);
var targetNodeText = [];
targetNodeText.push($(ui.draggable).find("a").find("span")[0].innerText);
app.renderTag(targetNodeText,app.tagType,$(this),app.dragDataType,app.chartType);
},
over: function (event, ui) {
app.dragUIDataType(ui);
app.axisTagType($(this));
app.tagDropOverRender(app.chartType,app.tagType,$(this),app.dragDataType);
},
out:function (event,ui) {
if($(this).children().length == 1){
if(app.tagType == 'xAxis'){
$(this).css("background-color",'#f6eedb');
$(this).css("border",'1px #f9e7bb solid');
}else if(app.tagType == 'yAxis'){
$(this).css("background-color",'#d2ddf0');
$(this).css("border",'1px #b1caf4 solid');
}
}else {
$(this).css("border","1px dashed #ccc");
$(this).css("background-color","white");
}
}
});
/**
* 颜色tag
*/
$("form.make-model-region .mark-down-column .mark-item-color").droppable({
drop: function(event,ui){
app.dragUIDataType(ui);
var targetNodeText = $(ui.draggable).find("a").find("span")[0].innerText;
app.renderTag(targetNodeText,'color',$(this),app.dragDataType,app.chartType);
},
over: function (event, ui) {
app.dragUIDataType(ui);
app.tagDropOverRender(app.chartType,'color',$(this),app.dragDataType);
},
out:function (event,ui) {
if($(this).children().length == 1){
$(this).css("border","");
$(this).css("background-color","white");
}else{
$(this).css("background-color",'#f6eedb');
$(this).css("border",'1px #f9e7bb solid');
}
}
});
/**
* 角度tag
*/
$("form.make-model-region .mark-down-column .mark-item-corner").droppable({
drop: function(event,ui){
app.dragUIDataType(ui);
var targetNodeText = $(ui.draggable).find("a").find("span")[0].innerText;
app.renderTag(targetNodeText,'corner',$(this),app.dragDataType,app.chartType);
},
over: function (event, ui) {
app.dragUIDataType(ui);
app.tagDropOverRender(app.chartType,'corner',$(this),app.dragDataType);
},
out:function (event,ui) {
if($(this).children().length == 1){
$(this).css("border","");
$(this).css("background-color","white");
}else{
$(this).css("background-color",'#d2ddf0');
$(this).css("border",'1px #b1caf4 solid');
}
}
});
/**
* 标签tag
*/
$("form.make-model-region .mark-down-column .mark-item-tag").droppable({
drop: function(event,ui){
app.dragUIDataType(ui);
var targetNodeText = $(ui.draggable).find("a").find("span")[0].innerText;
app.renderTag(targetNodeText,'tag',$(this),app.dragDataType,app.chartType);
},
over: function (event, ui) {
app.dragUIDataType(ui);
app.tagDropOverRender(app.chartType,'tag',$(this),app.dragDataType);
},
out:function (event,ui) {
$(this).css("border","");
$(this).css("background-color","white");
}
});
/**
* 筛选tag
*/
$("form.make-model-region .column-filter").droppable({
drop: function (event, ui) {
app.axisTagType($(this));
app.dragUIDataType(ui);
var targetNodeText = $(ui.draggable).find("a").find("span")[0].innerText;
app.renderTag(targetNodeText,app.tagType,$(this),app.dragDataType,app.chartType);
$(this).css("border","1px dashed #ccc");
$(this).css("background-color","white");
},
over: function (event, ui) {
app.axisTagType($(this));
app.dragUIDataType(ui);
app.tagDropOverRender(app.chartType,app.tagType,$(this),app.dragDataType);
},
out:function (event,ui) {
$(this).css("border","1px dashed #ccc");
$(this).css("background-color","white");
}
});
/**
* 左侧维度、度量拖拽
*/
setTimeout(function(){
$('#side-menu ul.nav.nav-third-level li').draggable({
cursor: "move",
opacity: 0.7,
appendTo :'body',
cursorAt: { top: 10, left: 34 },
helper: function(event) {
var dragText = $(this).find("a").find("span").html();
return $( ""+dragText+"
" );
}
});
},0);
});
}
}
}
});
var binddefferd = $.ajax({
type: 'POST',
dataType: 'json',
url: 'selectOneChartInfo',
data: {
'id': this.chartId
}
});
//标签的初始化
binddefferd.done(function (result) {
var buildModel = JSON.parse(result.buildModel);
if(buildModel.mark){
if(buildModel.mark.color && buildModel.mark.color != '') {
app.renderTag(buildModel.mark.color,'color',$("form.make-model-region .mark-down-column .mark-item-color"),'text','pie',false);
}
if(buildModel.mark.angle && buildModel.mark.angle != ''){
app.renderTag(buildModel.mark.angle,'corner',$("form.make-model-region .mark-down-column .mark-item-corner"),'number','pie',false);
}
}
if(buildModel.xAxis && buildModel.xAxis != ''){
app.renderTag(buildModel.xAxis,'xAxis',$("form.make-model-region .xAxis"),'text',result.chartType,false);
}
if(buildModel.yAxis && buildModel.yAxis != ''){
app.renderTag(buildModel.yAxis,'yAxis',$("form.make-model-region .yAxis"),'number',result.chartType,false);
}
app.sqlRecordingId = result.sqlRecordingId;
if(result.chartType){
app.chartType = result.chartType;
}
});
binddefferd.done(function (result) {
var parentNode;
var treeObj = $.fn.zTree.getZTreeObj("dataListTree");
var queryParentDeferred = $.ajax({
type: 'POST',
dataType: 'json',
url: 'sqlRecordingManage/queryAsObject',
data: {
'id': result.sqlRecordingId
}
});
queryParentDeferred.done(function (v) {
parentNode = treeObj.getNodesByFilter(function (node) {
return (node.id == v.connectionId && node.dbUrl);
}, true); // 仅查找一个节点
treeObj.expandNode(parentNode, true, true, true);
});
//当树第一层第二层加载好时执行以下逻辑
$.when(app.firstLevelDeferred,app.secondLevelDeferred).done(function (v1, v2) {
var childNode = treeObj.getNodesByFilter(function (node) {
return node.id == result.sqlRecordingId;
}, true, parentNode); // 仅查找一个节点
treeObj.selectNode(childNode);
treeObj.setting.callback.onClick(null,"dataListTree",childNode)
})
});
//table标签拖拽排序
$(".xAxis").sortable().bind('sortupdate');
$(".yAxis").sortable().bind('sortupdate');
$("#editArea").niceScroll();
},
watch: {
dataSourcePicked: function(){
if(this.dataSourcePicked == 0){
this.isShowUpdateCheck = true;
this.isShowJobSetting = true;
$(".toggle-checkbox").bootstrapSwitch('state', true);
}else if(this.dataSourcePicked == 1){
this.isShowUpdateCheck = false;
this.isShowJobSetting = false;
$(".toggle-checkbox").bootstrapSwitch('state', false);
}
}
}
});
});
});