【问题标题】:How to develop a JIRA plugin that display charts?如何开发显示图表的 JIRA 插件?
【发布时间】:2011-05-18 22:09:34
【问题描述】:

我是 JIRA World 的新手,我的任务是开发一个显示图表(饼图、直方图等)的 JIRA 插件。用户将选择搜索条件和图表类型, 并且用户应该能够保存这些图表(Word/PDF)。

我不知道我是否应该开发一个报告插件并使用JFreeChart进行图表或开发一个图表插件(我没有看到任何图表插件的例子)。我做了一些关于报告插件的研究,但我还没有找到一个例子来展示如何使用 JFreechart!我也没有找到任何示例显示如何使用 jasperReport(或其他工具)生成 word 或 PDF 报告。

用户应该从类似界面(管理、主页等)的选项卡访问插件

要显示的 KPI(关键绩效指标)示例:

  • 解决问题的平均时间
  • 仍未解决的问题数

PS:我使用的是 JIRA 4.3.3

【问题讨论】:

    标签: jira-plugin


    【解决方案1】:

    有一个 JIRA 插件可以将图表导出到 Word,它涵盖了您想要做的部分事情。 https://marketplace.atlassian.com/plugins/com.clariostechnology.officecharts.officecharts

    另请参阅 Intelligent Reporter,它提供了更多用于格式化图表的选项,并允许您使用 Word 文件作为模板并填写图表和其他数据。

    https://marketplace.atlassian.com/plugins/com.clariostechnology.intelligentreports

    【讨论】:

      【解决方案2】:

      尝试阅读 Jobin Kuruvilla 的巨著“JIRA 5.x Development Cookbook”中的文章Creating a pie chart in JIRA。

      最重要的是填充您的数据集,该数据集将用于生成所需的图表。考虑那本书中的示例,它显示了该插件的 java 方面:

      public Chart generateChart(JiraAuthenticationContext authenticationContext, int width, int height) {
          try {
            final Map<String, Object> params = new HashMap<String, Object>();
            // Create Dataset
            DefaultPieDataset dataset = new DefaultPieDataset();
      
            dataset.setValue("One", 10L);
            dataset.setValue("Two", 15L);
      
            final ChartHelper helper = new PieChartGenerator(dataset, authenticationContext.getI18nHelper()).generateChart();
            helper.generate(width, height);
      
            params.put("chart", helper.getLocation());
            params.put("chartDataset", dataset);
            params.put("imagemap", helper.getImageMap());
            params.put("imagemapName", helper.getImageMapName());
            params.put("width", width);
            params.put("height", height);
      
            return new Chart(helper.getLocation(), helper.getImageMap(), helper.getImageMapName(), params);
      
          } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("Error generating chart", e);
          }
      }
      

      以及用于此目的的速度模板:

      #if ($chart)
          #if ($imagemap)
              $imagemap
          #end
          <p class="report-chart">
              <img src='$baseurl/charts?filename=$chart' border='0' #if ($imagemap) usemap="\#$imagemapName" #end/>
          </p>
      #end
      

      这就是最基本的例子。此外,请查看ChartFactory 和ChartUtils 接口,以更深入地了解如何创建各种类型的图表。

      【讨论】:

        【解决方案3】:

        您无需编写插件即可执行此操作 - 这些是 JIRA 中的本机功能。如果你一心想写一个插件,我会使用 JFreeChart。请参阅 JIRA 图表插件和 JQL 过滤器以获取您列出的两个 KPI。

        【讨论】:

          【解决方案4】:

          速度:

              #set($cht = $chart)
              #if ($cht)
              #if ($cht.imageMap)
              $cht.imageMap
              #end
              <p class="report-chart">
                  <img src='$baseurl/charts?filename=$chart.location' border='0'
                  #if ($cht.imageMap) usemap="\#$cht.imageMapName" #end/>
              </p>
              #end
          

          网络:

          @SuppressWarnings("unused")
          public Chart getChart() {
              JiraAuthenticationContext authenticationContext = ComponentAccessor.getJiraAuthenticationContext();
          
               final int CHART_WIDTH = 300;
               final int CHART_HEIGHT = 300;
          
              try {
                  final Map<String, Object> params = new HashMap<String, Object>();
                  // Create Dataset
                  DefaultPieDataset dataset = new DefaultPieDataset();
          
                  dataset.setValue("One", 10L);
                  dataset.setValue("Two", 15L);
          
                  final I18nBean i18nBean = new I18nBean(authenticationContext.getUser().getDirectoryUser());
          
                  final ChartHelper helper = new PieChartGenerator(dataset, i18nBean).generateChart();
                  helper.generate(CHART_WIDTH, CHART_HEIGHT);
          
                  params.put("chart", helper.getLocation());
                  params.put("chartDataset", dataset);
                  params.put("imagemap", helper.getImageMap());
                  params.put("imagemapName", helper.getImageMapName());
                  params.put("width", CHART_WIDTH);
                  params.put("height", CHART_HEIGHT);
          
                  Chart ch = new Chart(helper.getLocation(), helper.getImageMapHtml(), helper.getImageMapName(), params);
                  return ch;
          
              } catch (Exception e) {
                  e.printStackTrace();
                  throw new RuntimeException("Error generating chart", e);
              }
          }
          

          结果:

          【讨论】:

            【解决方案5】:

            节省插件编程时间的最佳选择是通过使用Better Excel Plugin 导出 JIRA 数据在 Excel 中生成图表。

            它是如何工作的?

            1. 你create a template XLSX file带有特殊的占位符,实际数据的标签。
            2. 使用 Excel 中的所有图表功能定义所谓的命名范围和 generate (empty) charts。 (由于 MS Excel 仍然是最通用和使用最广泛的数据可视化工具,几乎可以保证您的用例将得到支持,并且您会通过谷歌搜索网络找到大量帮助。)
            3. 当您导出此模板时,插件将使用您的问题数据填充命名范围,并且图表“唤醒”!

            最终结果可能如下所示(在它自己的工作表中):

            【讨论】:

              【解决方案6】:

              请参阅本教程,了解绘制各种类型的图表以可视化 JIRA 数据:http://www.midori.hu/products/jira-pdf-view-plugin/documentation/charts

              那里解释的技术依赖于在简洁的 Groovy 脚本中捕获您的自定义 KPI 计算逻辑,使用事实上的标准 JFreeChart 呈现图表,所有这些都由我们的 JIRA PDF View Plugin 提供支持。

              (Discl:那里提到的插件是我们商业支持的软件。)

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2021-02-11
                • 2018-05-22
                相关资源
                最近更新 更多