在 Jaspersoft Studio 中使用 Highcharts 的库重复问题

Library duplication issue using Highcharts in Jaspersoft Studio

我对 Highcharts 库有疑问。我使用 Jaspersoft Studio 中提供的自定义可视化工具创建了各种图表。他们不使用所有相同的库,例如我有一个使用 Highmaps.js 的气泡图图表和一个使用 Highstock.js 的股票图表。

当我在 Jaspersoft Server 中可视化时,每个报告似乎都运行良好。但是当我创建一个包含两个不同报告的仪表板时,出现此错误:

Uncaught Highcharts error #16: www.highcharts.com/errors/16 Highcharts already defined in the page

第二次在同一页面加载 Highcharts 或 Highstock 时会发生此错误,因此 Highcharts 命名空间已经定义。请记住,Highcharts.Chart 构造函数和 Highcharts 的所有功能都包含在 Highstock 中,因此如果您将 运行ning Chart 和 StockChart 结合使用,则只需加载 highstock.js 文件。

我理解 Highmaps.js 和 Highstock.js 之间存在冲突,因为它们具有共同的特征。但我不知道如何避免它:我需要 Highmaps 和 Highstocks 的功能。以下是我如何包含这些库来定义我的报告:

-第一张图表(股票图表)

define(['jquery', 'highstock'], function(hs_test) {
  return function(instanceData) {
    /*...*/
  }
});

-2图(气泡图)

define(['jquery','highmaps','data','world','exporting'], function (mapbubble) {
  return function(instanceData) {
    /*...*/
  }
});

下面是我编写 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"
})

我在这里使用了 Highstock 示例,但我对使用 Highmaps 的报告也做了同样的事情。我希望我不是第一个遇到这个问题的人,如果是,谁能建议我避免这个库重复的方法?

编辑

按照建议,我尝试将 highmaps.js 替换为 highstock.js + map.js,如下所示:

define(['jquery','highstock','map','data','world','exporting'], function ($, Highcharts) {
return function (instanceData) {
/*...*/
}
})

我现在有一个错误 17:

The requested series type does not exist

This error happens when you are setting chart.type or series.type to a series type that isn't defined in Highcharts. A typical reason may be that your are missing the extension file where the series type is defined, for example in order to run an arearange series you need to load the highcharts-more.js file.

现在 Highmaps.js 缺少一些东西,我不知道是什么。 期待建议。

更新

我可以通过包含 Highcharts-more.js 来避免这个错误 17,但是我在 运行 两个图表时仍然有这个错误 16。

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

请参阅我对此的评论 question。您只需要加载 "base" highstock.js ,然后再加载您想要加载的任何其他模块:

<script src="code.highcharts.com/stock/highstock.js"></script>
<script src="code.highcharts.com/stock/modules/map.js"></script>
<script src="code.highcharts.com/stock/modules/ANOTHERMODULEYOUNEED.js"></script>

根据您的需要,您可以只加载 highmaps.js,因为它还包含许多其他图表类型。

最后,按照@PawełFus 的建议,我通过合并绘制气泡图图表所需的所有 Highcharts 文件解决了这个问题,并在代码中附上了 Highcharts 变量的条件:

if (typeof Highcharts == 'undefined') {

/* Optimized merge files containing both highstock.js, highcharts-more.js and map.js */

}

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

效果很好。谢谢大家,特别是@PawełFus。