forked from geoffbullen/build-pipeline-plugin
/
bpp.jelly
181 lines (164 loc) · 10.5 KB
/
bpp.jelly
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form" xmlns:i="jelly:fmt">
<link rel="stylesheet" href="${rootURL}/plugin/build-pipeline-plugin/css/redmond/jquery-ui-1.8.14.custom.css"></link>
<link rel="stylesheet" href="${rootURL}/plugin/build-pipeline-plugin/css/jquery.fancybox-1.3.4.css"></link>
<link rel="stylesheet" href="${rootURL}/plugin/build-pipeline-plugin/css/jquery.tooltip.css"></link>
<link rel="stylesheet" href="${rootURL}/plugin/build-pipeline-plugin/css/main.css" type="text/css" />
<!-- If the user specifies a custom CSS link, load it.-->
<j:if test="${!empty(from.cssUrl)}">
<link rel="stylesheet" href="${from.cssUrl}" type="text/css" />
</j:if>
<script src="${rootURL}/plugin/build-pipeline-plugin/js/jquery-migrate-1.2.1.min.js"></script>
<script type="text/javascript" src="${rootURL}/plugin/build-pipeline-plugin/js/jquery-ui-1.8.14.custom.min.js"></script>
<script type="text/javascript" src="${rootURL}/plugin/build-pipeline-plugin/js/handlebars-1.0.0.beta.6.js"></script>
<script src="${rootURL}/plugin/build-pipeline-plugin/js/jquery.fancybox-1.3.4.js"></script>
<script src="${rootURL}/plugin/build-pipeline-plugin/js/jquery.tooltip.min.js"></script>
<script src="${rootURL}/plugin/build-pipeline-plugin/js/build-pipeline.js"></script>
<script id="build-card-template" type="text/x-handlebars-template">
<st:include page="buildCardTemplate.jelly"
from="${from.getBuildCard()}"
it="${from}"/>
</script>
<script id="project-card-template" type="text/x-handlebars-template">
<st:include page="projectCardTemplate.jelly"
from="${from.getColumnHeaders()}"
it="${from}" />
</script>
<st:bind var="buildPipelineViewProxy" value="${from}" />
<script type="text/javascript">
var buildCardTemplateSource = jQuery("#build-card-template").html();
var projectCardTemplateSource = jQuery("#project-card-template").html();
var buildPipeline = new BuildPipeline(buildPipelineViewProxy, Handlebars.compile(buildCardTemplateSource), Handlebars.compile(projectCardTemplateSource), ${from.getRefreshFrequencyInMillis()});
</script>
<form method="post" action="gridBuilder/build" id="triggerPipelineForm" class="no-json"/>
<form method="post" name="pipelineViewForm" action="manualExecution" id="manualExecutionForm">
<input name="upstreamProjectName" id="upstreamProjectName" type="hidden" />
<input name="upstreamBuildNumber" id="upstreamBuildNumber" type="hidden" />
<input name="triggerProjectName" id="triggerProjectName" type="hidden" />
<div id="build-pipeline-plugin-content">
<h1>Build Pipeline<j:if test="${!empty(from.getBuildViewTitle())}">: ${from.getBuildViewTitle()}</j:if></h1>
<div>${from.getDescription()}</div>
<j:set var="buildPipelineForm" type="au.com.centrumsystems.hudson.plugin.buildpipeline.BuildPipelineForm" value="${from.getBuildPipelineForm()}" />
<j:set var="projectGrid" value="${buildPipelineForm.getProjectGrid()}" />
<div id="icon-bar">
<!-- If the user has the Build Project permission include a hyperlink to build the base project.-->
<j:set var="hasBuildPermission" type="boolean" value="${from.hasBuildPermission()}" />
<j:if test="${hasBuildPermission}">
<div class="icon-container">
<j:if test="${from.isProjectParameterized()}">
<span class="pointer" onclick="buildPipeline.fillDialog('${app.rootUrl}${from.gridBuilder.firstJobLink}/build?delay=0sec', 'Starts the pipeline with parameters')">
<img src="${rootURL}/images/24x24/clock.png" alt="Trigger a Pipeline" class="icon-with-caption"/>
<span>Run</span>
</span>
</j:if>
<j:if test="${!from.isProjectParameterized()}">
<a id="trigger-pipeline-button" href='#' onclick="$('triggerPipelineForm').submit()">
<img src="${rootURL}/images/24x24/clock.png" alt="Trigger a Pipeline" class="icon-with-caption"/>
<span>Run</span>
</a>
</j:if>
</div>
</j:if>
<div class="icon-container">
<a href="builds">
<img src="${rootURL}/images/24x24/notepad.png" alt="Pipeline History" />
<span>History</span>
</a>
</div>
<j:if test="${from.hasConfigurePermission()}">
<div class="icon-container">
<a href="configure">
<img src="${rootURL}/images/24x24/setting.png" alt="Configure" />
<span>Configure</span>
</a>
</div>
<div class="icon-container">
<a href="newJob">
<img src="${rootURL}/images/24x24/new-package.png" alt="Add Step" />
<span>Add Step</span>
</a>
</div>
<div class="icon-container">
<a href="delete">
<img src="${rootURL}/images/24x24/edit-delete.png" />
<span>Delete</span>
</a>
</div>
<div class="icon-container">
<a href="${rootURL}/manage">
<img src="${rootURL}/images/24x24/setting.png" />
<span>Manage</span>
</a>
</div>
</j:if>
</div>
<j:if test="${empty(buildPipelineForm.getBuildGrids())}">
<st:include page="noJob.jelly" />
</j:if>
<st:include from="${from.getColumnHeaders()}" it="${from}"
page="columnHeader.jelly"/>
<j:forEach items="${buildPipelineForm.getBuildGrids()}" var="buildGrid" indexVar="i">
<div class="pipeline-wrapper">
<st:include from="${from.getRowHeaders()}" it="${from}"
page="rowHeader.jelly"/>
<div class="pipeline">
<table class="pipelines">
<tbody>
<j:forEach begin="${0}" end="${buildGrid.rows - 1}" indexVar="x">
<tr>
<j:forEach begin="${0}" end="${buildPipelineForm.getGridWidth() - 1}" indexVar="y">
<j:set var="build" type="au.com.centrumsystems.hudson.plugin.buildpipeline.BuildForm" value="${buildGrid.get(x,y)}" />
<j:if test="${build != null}">
<td id="build-${build.getId()}"></td>
<script>
// generate build-card
var buildData = ${build.asJSON()};
jQuery("#build-${build.getId()}").append(buildPipeline.buildCardTemplate(buildData));
// add build proxy to proxies for future use
buildPipeline.buildProxies[${build.getId()}] = <st:bind value="${build}" />;
<j:if test="${build.getStatus() == 'BUILDING'}">
buildPipeline.showProgress(${build.getId()}, ${build.getDependencyIds()});
</j:if>
<j:if test="${build.getStatus() == 'PENDING'}">
jQuery("#pipelines").bind("show-status-${build.getId()}", function() {
<j:choose>
<j:when test="${build.isManualTrigger()}">
buildPipeline.updateBuildCard(${build.getId()});
</j:when>
<j:otherwise>
buildPipeline.updateNextBuildAndShowProgress(${build.getId()}, ${build.getNextBuildNumber()}, ${build.getDependencyIds()});
</j:otherwise>
</j:choose>
});
</j:if>
</script>
<j:if test="${(y + 1 != buildPipelineForm.getGridWidth())}">
<!-- Changing length to size() to get rid of arrows when there are no more child jobs.-->
<td class="next">
<j:if test="${!(build.getDependencies().size() == 0)}">
<span class="status next"><img src="${rootURL}/images/24x24/next.png" /></span>
</j:if>
</td>
</j:if>
</j:if>
<j:if test="${build == null}">
<td></td>
<j:if test="${y + 1 != buildPipelineForm.getGridWidth()}">
<j:set var="nextIndex" value="${y + 1}" />
<td class="next">
<j:if test="${buildGrid.get(x,nextIndex)!=null}">
<span class="status next"><img src="${rootURL}/images/24x24/next.png" /></span>
</j:if>
</td>
</j:if>
</j:if>
</j:forEach>
</tr>
</j:forEach>
</tbody>
</table>
</div>
</div>
</j:forEach>
</div>
</form>
</j:jelly>