0

我编写了一个 JIRA 小工具,它对 JIRA REST API 进行 AJAX 调用,然后使用数据;创建日期、分辨率日期和状态以创建两个单独的数组来保存数据,如下所示:

var dateCreated;
dateCreated =[[<created>, <daily total>],...];

因此,如果在“2011-1-1”上创建了两个问题,则数组的元素块将是

[ [‘2011-1-1’, 2],...]

另一个数组是:

var statusDate;
statusDate=[[<resolutiondate>, <daily total>],...]

因此,如果在“2011-1-1”上创建了两个问题,则数组的元素块将是

[ [‘2011-1-1’, 2],...]

我使用 JIRA 小工具中的 ajaxOptions 进行 AJAX 调用,我能够获取数据并使用 Javascript 进行数组操作,并将数据绘制为时间序列图上创建和关闭的总问题。但是,有些项目的问题比其他项目多,将数据加载到图表中大约需要 30 秒。使用 JIRA 是否有一个我可以使用的后端服务器脚本,它可以在将数据移植到基于 html 并加载到客户端计算机上的图表之前在服务器端进行数组操作?我听说过 JIRA 中的 Velocity 模板,但我不确定这是否是解决方案之一,而且很难找到关于 JIRA 和 Velocity 模板的示例。

任何帮助表示赞赏。

提前致谢

4

1 回答 1

1

这是 JIRA(或您自己的 REST 服务)的使用 Velocity 模板的示例。
从 UI 向 REST 服务进行 ajax 调用,您将获得所需的 html 内容(或其他数据)。HtmlPresentationHelper类用作 html 数据的包装器。
您可以使用 Jira 集成工具来调试此(或您的)REST 服务:REST API 浏览器https
://developer.atlassian.com/display/DOCS/Using+the+REST+API+Browser/ 不要忘记添加你的速度模板!

@Path("/")
public class CustomRestResource
{
    private String pathToTemplate = "templates/reports/timesheet-report/";
    private String templateFileName = "view.vm";

    @GET
    @Path("someMethod")
    @AnonymousAllowed
    @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
    public Response anyName(@QueryParam("param") String param)
    {
        VelocityManager vm = ComponentAccessor.getVelocityManager();
        try
        {
            return Response.ok(new HtmlPresentationHelper(
                    vm.getBody(pathToTemplate, templateFileName, prepareVelocityParams(param))
            )).build();
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
            return Response.serverError().build();
        }
    }

    Map<String, Object> prepareVelocityParams(String x)
    {
        Map<String, Object> velocityParams = new HashMap<String, Object>();
        velocityParams.put("someParam", x);
        velocityParams.put(...);
        ...  

        return velocityParams;
    }
}

@XmlRootElement
public class HtmlPresentationHelper
{
    @XmlElement
    private String html;

    private HtmlPresentationHelper()
    {
        // for JAXB
    }

    public HtmlPresentationHelper(String html)
    {
        this.html = html;
    }
}
于 2014-03-25T13:02:18.777 回答