diff --git a/src/main/java/au/com/centrumsystems/hudson/plugin/util/ProjectUtil.java b/src/main/java/au/com/centrumsystems/hudson/plugin/util/ProjectUtil.java index f2787846..942211cb 100644 --- a/src/main/java/au/com/centrumsystems/hudson/plugin/util/ProjectUtil.java +++ b/src/main/java/au/com/centrumsystems/hudson/plugin/util/ProjectUtil.java @@ -105,7 +105,7 @@ public static boolean isManualTrigger(final AbstractProject upstreamProjec final String manualDownstreamProjects = ((BuildPipelineTrigger) upstreamPub).getDownstreamProjectNames(); final String[] downstreamProjs = manualDownstreamProjects.split(","); for (final String nextProj : downstreamProjs) { - if (Jenkins.getInstance().getItem(nextProj.trim(), upstreamProject) == downstreamProject) { + if (Jenkins.getInstance().getItem(nextProj.trim(), upstreamProject).getName().equals(downstreamProject.getName())) { manualTrigger = true; break; } diff --git a/src/main/resources/au/com/centrumsystems/hudson/plugin/buildpipeline/BuildPipelineView/bpp.jelly b/src/main/resources/au/com/centrumsystems/hudson/plugin/buildpipeline/BuildPipelineView/bpp.jelly index f349bfc8..546e01fb 100644 --- a/src/main/resources/au/com/centrumsystems/hudson/plugin/buildpipeline/BuildPipelineView/bpp.jelly +++ b/src/main/resources/au/com/centrumsystems/hudson/plugin/buildpipeline/BuildPipelineView/bpp.jelly @@ -12,6 +12,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..68530e91 --- /dev/null +++ b/src/main/resources/au/com/centrumsystems/hudson/plugin/buildpipeline/extension/BuildCardExtension/build-card-template-onclicks.js @@ -0,0 +1,73 @@ +function parseDataAttributes(container) { + return { + id: parseInt(container.dataset.showSpinnerId, 10), + buildExtId: container.dataset.rerunBuildExtId, + dependencyIds: container.dataset.rerunBuildDependencyIds + .split(",") + .map(id => parseInt(id)) + }; +} + +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(",") + .map(id => parseInt(id)) + }; +} + +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": handleDialogClick, + ".bct-console-icon-onclick": handleDialogClick, + ".bct-rerun-successful-build-onclick": handleRerunClick, + ".bct-rerun-failed-latest-build-onclick": handleRerunClick, + ".bct-rerun-failed-manual-build-onclick": handleTriggerBuild, + ".bct-rerun-failed-build-onclick": handleRerunClick, + ".bct-trigger-manual-build-latest-onclick": handleTriggerBuild, + ".bct-trigger-manual-build-onclick": 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}}