使用Jaspersoft Studio中的Highcharts进行库复制问题

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.

以下是我在同一仪表板中运行两个报告时出现的错误:

Javascript控制台

Kab*_*lak 2

最后,我按照 @Pawe\xc5\x82Fus 的建议,通过合并绘制气泡图所需的所有 Highcharts 文件解决了该问题,并在 Highcharts 变量上添加了条件:

\n\n
if (typeof Highcharts == 'undefined') {\n\n/* Optimized merge files containing both highstock.js, highcharts-more.js and map.js */\n\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后我将此文件用于我想要构建的所有 Highcharts 图表。

\n\n

效果很好。谢谢大家,特别是@Pawe\xc5\x82Fus。

\n