看板JS对象的loadChart、loadCharts函数不允许已渲染为图表的HTML元素异步加载图表

This commit is contained in:
datagear 2021-04-07 22:50:55 +08:00
parent 1a8a6b92b5
commit 594fa1afc2
2 changed files with 45 additions and 8 deletions

View File

@ -2892,6 +2892,22 @@
}
};
/**
* 记录警告日志
*
* @param exception 警告消息字符串
*/
chartFactory.logWarn = function(exception)
{
if(typeof console != "undefined")
{
if(console.warn)
console.warn(exception);
else if(console.info)
console.info(exception);
}
};
/**
* 由图表主题构建echarts主题
*

View File

@ -1484,7 +1484,7 @@
/**
* 异步加载单个图表并将其加入此看板
* 如果指定的HTML元素已经被渲染为图表已加载的图表不会被加入看板也不会执行渲染和更新数据操作
* 如果HTML元素已经被渲染为图表不加载图表而直接返回false
*
* @param element 用于渲染图表的HTML元素Jquery对象
* @param chartWidgetId 选填参数要加载的图表部件ID如果不设置将从元素的"dg-chart-widget"属性取
@ -1493,14 +1493,17 @@
*/
dashboardBase.loadChart = function(element, chartWidgetId, ajaxOptions)
{
element = $(element);
if(this.isRendered(element))
return false;
if(typeof(chartWidgetId) != "string")
{
ajaxOptions = chartWidgetId;
chartWidgetId = null;
}
element = $(element);
if(!chartWidgetId)
chartWidgetId = chartFactory.elementWidgetId(element);
@ -1537,11 +1540,13 @@
};
this._loadChartJson(chartWidgetId, myAjaxOptions);
return true;
};
/**
* 异步加载多个图表并将它们加入此看板
* 如果指定的HTML元素已经被渲染为图表则已加载的图表不会被加入看板也不会执行渲染和更新数据操作
* 如果任一HTML元素已经被渲染为图表则不加载任何图表而直接返回false
*
* @param element 用于渲染图表的HTML元素HTML元素数组Jquery对象
* @param chartWidgetId 选填参数要加载的图表部件ID图表部件ID数组如果不设置将从元素的"dg-chart-widget"属性取
@ -1550,14 +1555,30 @@
*/
dashboardBase.loadCharts = function(element, chartWidgetId, ajaxOptions)
{
element = $(element);
var _this = this;
var hasRendered = false;
element.each(function(index)
{
if(_this.isRendered(this))
{
hasRendered = true;
chartFactory.logWarn("The "+index+"-th element has been rendered");
return false;
}
});
if(hasRendered)
return false;
if(typeof(chartWidgetId) != "string" && !$.isArray(chartWidgetId))
{
ajaxOptions = chartWidgetId;
chartWidgetId = null;
}
element = $(element);
if(chartWidgetId == null)
chartWidgetId = [];
else if(typeof(chartWidgetId) == "string")
@ -1574,8 +1595,6 @@
};
}
var _this = this;
var chartWidgetIds = [];
element.each(function(index)
@ -1613,6 +1632,8 @@
};
this._loadChartJson(chartWidgetIds, myAjaxOptions);
return true;
};
/**