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}}