我编写了一个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模板上找到例子非常困难。
感谢任何帮助。
提前致谢
答案 0 :(得分: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/
别忘了添加你的Velocity模板!
@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;
}
}