Kab*_*lak 5 javascript highcharts requirejs
我有Highcharts库的问题.我使用Jaspersoft Studio中提供的自定义可视化工具创建了各种图表.它们不使用所有相同的库,例如我有一个使用Highmaps.js的Bubble Map图表和一个使用Highstock.js的Stock图表.
当我在Jaspersoft Server中将其可视化时,每个报告似乎都运行良好.但是当我创建一个包含两个不同报告的仪表板时,我有这个错误:
未捕获的Highcharts错误#16:www.highcharts.com/errors/16已在页面中定义的Highcharts
第二次在同一页面中加载Highcharts或Highstock时会发生此错误,因此已经定义了Highcharts命名空间.请记住Highcharts.Chart构造函数和Highcharts的所有功能都包含在Highstock中,因此如果您组合运行Chart和StockChart,则只需加载highstock.js文件.
我确实理解Highmaps.js和Highstock.js之间存在冲突,因为它们具有共同的特征.但我不知道如何避免它:我需要来自Highmaps和Highstocks的功能.以下是我如何包含这些库来定义报告:
-1st图表(股票图表)
define(['jquery', 'highstock'], function(hs_test) {
return function(instanceData) {
/*...*/
}
});
Run Code Online (Sandbox Code Playgroud)
第2个图表(气泡图表)
define(['jquery','highmaps','data','world','exporting'], function (mapbubble) {
return function(instanceData) {
/*...*/
}
});
Run Code Online (Sandbox Code Playgroud)
以下是我编写build.js文件的方法:
({
optimize: 'none',
baseUrl: '',
paths: {
jquery: 'jquery',
highstock: 'highstock',
exporting: 'exporting',
'highstock_test': 'highstock_test'
},
shim: {
'highstock': {
deps: ["jquery"],
exports: 'Highcharts'
}
},
name: "highstock_test",
out: "highstock_test.min.js"
})
Run Code Online (Sandbox Code Playgroud)
我在这里使用了Highstock示例,但我对使用Highmaps的报告做了大致相同的事情.我希望我不是第一个遇到这个问题的人,如果有的话,有人能建议我一种避免这种库重复的方法吗?
编辑
正如所建议的那样,我尝试用highstock.js + map.js替换highmaps.js,如下所示:
define(['jquery','highstock','map','data','world','exporting'], function ($, Highcharts) {
return function (instanceData) {
/*...*/
}
})
Run Code Online (Sandbox Code Playgroud)
我现在有一个错误17:
请求的系列类型不存在
将chart.type或series.type设置为未在Highcharts中定义的系列类型时会发生此错误.一个典型的原因可能是您缺少定义系列类型的扩展文件,例如,为了运行您需要加载highcharts-more.js文件的区域范围系列.
现在Highmaps.js缺少一些东西,我不知道是什么.期待着建议.
UPDATE
我可以通过包含Highcharts-more.js来避免这个错误17,但是在运行两个图表时我仍然有这个错误16.
以下是我在同一仪表板中运行两个报告时出现的错误:

最后,我按照 @Pawe\xc5\x82Fus 的建议,通过合并绘制气泡图所需的所有 Highcharts 文件解决了该问题,并在 Highcharts 变量上添加了条件:
\n\nif (typeof Highcharts == 'undefined') {\n\n/* Optimized merge files containing both highstock.js, highcharts-more.js and map.js */\n\n}\nRun Code Online (Sandbox Code Playgroud)\n\n然后我将此文件用于我想要构建的所有 Highcharts 图表。
\n\n效果很好。谢谢大家,特别是@Pawe\xc5\x82Fus。
\n