你能在多个grafana脚本仪表板之间共享代码吗?

时间:2015-09-25 16:38:18

标签: javascript grafana

我为Grafana创建了几个脚本化的仪表板。我即将创造另一个。我创建了各种实用程序函数,并从脚本复制到脚本。我宁愿采用良好的编程习惯并导入代码而不是复制粘贴。

能做到吗?如果是这样,怎么会这样做?

1 个答案:

答案 0 :(得分:1)

是的,这可以做到。 This link表示可以使用SystemJS.import(),但我还没有尝试过。

This github repo提供了使用不同技术的详细示例。 虽然slim Grafana scripted dashboard doc中未提及,但某些版本的lodash.com(commit to include lodash)和jquery似乎可用于所有脚本化仪表板。

这个repo的所有者anryko已经想出如何使用这两个库来引用你自己的实用程序脚本,就像你正在谈论的那样。

所有脚本化仪表板都有一个主脚本; getdash.sh是anryko的主要脚本,如README.md上的破折号网址所示:

http://grafanaIP/dashboard/script/getdash.js

如果您查看getdash.sh的结尾,您会看到此行引用了其他用户(您)提供的脚本中的代码:

var dash = getDashApp(datasources, getDashConf());

例如:

以下是getdash.js使用jquery和lodash加载源文件的部分:

// loadScripts :: [scriptSourceStr] -> Promise([jQuery.getScript Result])
var loadScripts = function loadScripts (scriptSrcs) {
  var gettingScripts = _.map(scriptSrcs, function (src) {
    return $.getScript(src);
  });

  return Promise.all(gettingScripts);
};

以上是_.map的lodash文档。

函数scriptedDashboard()(也在getdash.js中)调用上面的loadScripts(),将路径传递给源文件,如下所示:

loadScripts([
      'public/app/getdash/getdash.app.js',
      'public/app/getdash/getdash.conf.js'
    ]).then(function () {

说实话,我还没有进一步了解这一切是如何使实用程序代码“可参考”。