diff --git a/src/main/resources/au/com/centrumsystems/hudson/plugin/buildpipeline/BuildPipelineView/build-pipeline-init.js b/src/main/resources/au/com/centrumsystems/hudson/plugin/buildpipeline/BuildPipelineView/build-pipeline-init.js
new file mode 100644
index 00000000..6b925b0b
--- /dev/null
+++ b/src/main/resources/au/com/centrumsystems/hudson/plugin/buildpipeline/BuildPipelineView/build-pipeline-init.js
@@ -0,0 +1,47 @@
+const buildCardTemplateSource = jQuery("#build-card-template").html();
+const projectCardTemplateSource = jQuery("#project-card-template").html();
+const refreshFrequency = parseInt(document.querySelector(".pipeline-refresh-frequency").dataset.refreshFrequency, 10);
+
+var buildPipeline = new BuildPipeline(
+ buildPipelineViewProxy,
+ Handlebars.compile(buildCardTemplateSource),
+ Handlebars.compile(projectCardTemplateSource),
+ refreshFrequency
+);
+
+
+function initializeBuildCards() {
+ document.querySelectorAll('.build-data').forEach(buildElement => {
+
+ const buildId = buildElement.dataset.buildId;
+ const buildData = JSON.parse(buildElement.dataset.buildInfo);
+ const buildStatus = buildElement.dataset.buildStatus;
+ const isManualTrigger = buildElement.dataset.isManualTrigger === 'true';
+ const nextBuildNumber = parseInt(buildElement.dataset.nextBuildNumber, 10);
+ const dependencyIds = JSON.parse(buildElement.dataset.dependencyIds);
+
+ // Generate build card
+ jQuery(buildElement).append(buildPipeline.buildCardTemplate(buildData));
+
+ // add build proxy to proxies for future use-->
+ buildPipeline.buildProxies[buildId] = window[`buildProxy_${buildId}`];
+
+ if (buildStatus === 'BUILDING') {
+ buildPipeline.showProgress(buildId, dependencyIds);
+ }
+
+ jQuery("table.pipelines").on(`show-status-${buildId}`, function() {
+ if (isManualTrigger) {
+ buildPipeline.updateBuildCard(buildId);
+ } else {
+ buildPipeline.updateNextBuildAndShowProgress(
+ buildId,
+ nextBuildNumber,
+ dependencyIds
+ );
+ }
+ });
+ });
+}
+
+document.addEventListener('DOMContentLoaded', initializeBuildCards);
diff --git a/src/main/resources/au/com/centrumsystems/hudson/plugin/buildpipeline/BuildPipelineView/toggle-build-details.js b/src/main/resources/au/com/centrumsystems/hudson/plugin/buildpipeline/BuildPipelineView/toggle-build-details.js
index 52da9aa0..aebdb0fa 100644
--- a/src/main/resources/au/com/centrumsystems/hudson/plugin/buildpipeline/BuildPipelineView/toggle-build-details.js
+++ b/src/main/resources/au/com/centrumsystems/hudson/plugin/buildpipeline/BuildPipelineView/toggle-build-details.js
@@ -1,4 +1,3 @@
-// show/hide build details
jQuery(document).ready(function() {
jQuery(".header").click(function() {
var parent = jQuery(this).parent();
diff --git a/src/main/resources/au/com/centrumsystems/hudson/plugin/buildpipeline/extension/AbstractNameValueHeader/build-parameters-tooltip.js b/src/main/resources/au/com/centrumsystems/hudson/plugin/buildpipeline/extension/AbstractNameValueHeader/build-parameters-tooltip.js
new file mode 100644
index 00000000..fc866b44
--- /dev/null
+++ b/src/main/resources/au/com/centrumsystems/hudson/plugin/buildpipeline/extension/AbstractNameValueHeader/build-parameters-tooltip.js
@@ -0,0 +1,6 @@
+const buildId = document.querySelector('.pipeline-info .revision .title').dataset.buildId;
+jQuery('#build-parameters-trigger-' + buildId).tooltip({
+ bodyHandler: function() {
+ return jQuery('#build-parameters-' + buildId).html();
+ },
+});
\ No newline at end of file
diff --git a/src/main/resources/au/com/centrumsystems/hudson/plugin/buildpipeline/extension/AbstractNameValueHeader/rowHeader.jelly b/src/main/resources/au/com/centrumsystems/hudson/plugin/buildpipeline/extension/AbstractNameValueHeader/rowHeader.jelly
index a2d6c444..4c339988 100644
--- a/src/main/resources/au/com/centrumsystems/hudson/plugin/buildpipeline/extension/AbstractNameValueHeader/rowHeader.jelly
+++ b/src/main/resources/au/com/centrumsystems/hudson/plugin/buildpipeline/extension/AbstractNameValueHeader/rowHeader.jelly
@@ -8,7 +8,7 @@
- Pipeline ${buildGrid.get(0,0).getRevision()}
+ Pipeline ${buildGrid.get(0,0).getRevision()}
No parameters
@@ -21,13 +21,7 @@
-
+
diff --git a/src/main/resources/au/com/centrumsystems/hudson/plugin/buildpipeline/extension/BuildCardExtension/build-card-template-onclicks.js b/src/main/resources/au/com/centrumsystems/hudson/plugin/buildpipeline/extension/BuildCardExtension/build-card-template-onclicks.js
new file mode 100644
index 00000000..d100030c
--- /dev/null
+++ b/src/main/resources/au/com/centrumsystems/hudson/plugin/buildpipeline/extension/BuildCardExtension/build-card-template-onclicks.js
@@ -0,0 +1,91 @@
+function parseDataAttributes(container) {
+ return {
+ id: parseInt(container.dataset.showSpinnerId, 10),
+ buildExtId: container.dataset.rerunBuildExtId,
+ dependencyIds: container.dataset.rerunBuildDependencyIds
+ .split(",")
+ .filter(Boolean)
+ .map(id => parseInt(id, 10))
+ };
+}
+
+function parseTriggerAttributes(container) {
+ return {
+ id: parseInt(container.dataset.showSpinnerId, 10),
+ upstreamProjectName: container.dataset.upstreamProjectName,
+ upstreamBuildNumber: parseInt(container.dataset.upstreamBuildNumber, 10),
+ projectName: container.dataset.projectName,
+ dependencyIds: container.dataset.dependencyIds
+ .split(",")
+ .filter(Boolean)
+ .map(id => parseInt(id, 10))
+ };
+}
+
+function handleDialogClick(dataContainer) {
+ const href = dataContainer.dataset.fillDialogHref;
+ const title = dataContainer.dataset.fillDialogTitle;
+ buildPipeline.fillDialog(href, title);
+}
+
+function handleRerunClick(dataContainer) {
+ const { id, buildExtId, dependencyIds } = parseDataAttributes(dataContainer);
+ buildPipeline.showSpinner(id);
+ buildPipeline.rerunBuild(id, buildExtId, dependencyIds);
+}
+
+function handleTriggerBuild(dataContainer) {
+ const { id, upstreamProjectName, upstreamBuildNumber, projectName, dependencyIds } = parseTriggerAttributes(dataContainer);
+ buildPipeline.showSpinner(id);
+ buildPipeline.triggerBuild(id, upstreamProjectName, upstreamBuildNumber, projectName, dependencyIds);
+}
+
+function createClickHandler(parentElement, targetSelector, handlerFn) {
+ const newHandler = function(event) {
+ const clickTarget = event.target.closest(targetSelector);
+ if (!clickTarget || !parentElement.contains(clickTarget)) return;
+
+ handlerFn(clickTarget);
+ };
+
+ parentElement.addEventListener("click", newHandler);
+}
+
+const onclickElements = {
+ ".bct-progress-bar-onclick": {
+ handler: handleDialogClick
+ },
+ ".bct-console-icon-onclick": {
+ handler: handleDialogClick
+ },
+ ".bct-rerun-successful-build-onclick": {
+ handler: handleRerunClick
+ },
+ ".bct-rerun-failed-latest-build-onclick": {
+ handler: handleRerunClick
+ },
+ ".bct-rerun-failed-manual-build-onclick": {
+ handler: handleTriggerBuild
+ },
+ ".bct-rerun-failed-build-onclick": {
+ handler: handleRerunClick
+ },
+ ".bct-trigger-manual-build-latest-onclick": {
+ handler: handleTriggerBuild
+ },
+ ".bct-trigger-manual-build-onclick": {
+ handler: handleTriggerBuild
+ }
+};
+
+document.addEventListener("DOMContentLoaded", function () {
+ const pipelineWrappers = document.querySelectorAll(".pipeline-wrapper");
+
+ if (!pipelineWrappers.length) return;
+
+ pipelineWrappers.forEach(wrapper => {
+ Object.entries(onclickElements).forEach(function([selector, { handler }]) {
+ createClickHandler(wrapper, selector, handler);
+ });
+ });
+});
diff --git a/src/main/resources/au/com/centrumsystems/hudson/plugin/buildpipeline/extension/BuildCardExtension/buildCardTemplate.jelly b/src/main/resources/au/com/centrumsystems/hudson/plugin/buildpipeline/extension/BuildCardExtension/buildCardTemplate.jelly
index 9ccb95a2..e41192b8 100644
--- a/src/main/resources/au/com/centrumsystems/hudson/plugin/buildpipeline/extension/BuildCardExtension/buildCardTemplate.jelly
+++ b/src/main/resources/au/com/centrumsystems/hudson/plugin/buildpipeline/extension/BuildCardExtension/buildCardTemplate.jelly
@@ -61,7 +61,7 @@
{{#unless project.disabled}}
{{#if build.isBuilding}}
-
+
@@ -94,7 +94,7 @@
-
+
@@ -106,7 +106,7 @@
{{#if build.isSuccess}}
{{#if ${!it.triggerOnlyLatestJob}}}
-
+
@@ -115,18 +115,18 @@
{{#if ${it.triggerOnlyLatestJob}}}
{{#if build.isLatestBuild}}
{{#if build.isUpstreamBuildLatest}}
-
+
{{/if}}
{{/if}}
{{else}}
- {{#if build.isManual}}
-
+ {{#if build.isManualTrigger}}
+
{{else}}
-
+
{{/if}}
@@ -137,12 +137,12 @@
{{#if build.isReadyToBeManuallyBuilt}}
{{#if ${it.triggerOnlyLatestJob}}}
{{#if build.isUpstreamBuildLatestSuccess}}
-
+
{{/if}}
{{else}}
-
+
{{/if}}
diff --git a/src/main/resources/au/com/centrumsystems/hudson/plugin/buildpipeline/extension/PipelineHeaderExtension/columnHeader.jelly b/src/main/resources/au/com/centrumsystems/hudson/plugin/buildpipeline/extension/PipelineHeaderExtension/columnHeader.jelly
index 54399419..6140ccbc 100644
--- a/src/main/resources/au/com/centrumsystems/hudson/plugin/buildpipeline/extension/PipelineHeaderExtension/columnHeader.jelly
+++ b/src/main/resources/au/com/centrumsystems/hudson/plugin/buildpipeline/extension/PipelineHeaderExtension/columnHeader.jelly
@@ -27,11 +27,9 @@
|
-
+
+
+
diff --git a/src/main/resources/au/com/centrumsystems/hudson/plugin/buildpipeline/extension/PipelineHeaderExtension/pipeline-column-headers.js b/src/main/resources/au/com/centrumsystems/hudson/plugin/buildpipeline/extension/PipelineHeaderExtension/pipeline-column-headers.js
new file mode 100644
index 00000000..2d024927
--- /dev/null
+++ b/src/main/resources/au/com/centrumsystems/hudson/plugin/buildpipeline/extension/PipelineHeaderExtension/pipeline-column-headers.js
@@ -0,0 +1,13 @@
+window.addEventListener("DOMContentLoaded", () => {
+ const projectDataHolders = document.querySelectorAll(".ch-project-data-holder");
+
+ projectDataHolders.forEach(dataHolder => {
+ const { projectId, projectJson } = dataHolder.dataset;
+
+ buildPipeline.projectProxies[projectId] = window["projectProxy" + projectId];
+
+ const projectElement = document.getElementById("project-" + projectId);
+ const projectData = JSON.parse(projectJson);
+ projectElement.innerHTML = buildPipeline.projectCardTemplate(projectData);
+ });
+});
diff --git a/src/main/webapp/js/build-pipeline.js b/src/main/webapp/js/build-pipeline.js
index 6ce69423..3d650c9d 100644
--- a/src/main/webapp/js/build-pipeline.js
+++ b/src/main/webapp/js/build-pipeline.js
@@ -26,7 +26,7 @@ BuildPipeline.prototype = {
buildPipeline.updateAllBuildCards(dependencies);
// trigger all dependency tracking
jQuery.each(dependencies, function(){
- jQuery("#pipelines").trigger("show-status-" + this);
+ jQuery("table.pipelines").trigger("show-status-" + this);
});
}
});
| |