|
1 |
| -let progressBarClickHandler = null; |
2 |
| -let consoleIconClickHandler = null; |
3 |
| -let successRerunHandler = null; |
4 |
| -let latestFailedRerunHandler = null; |
5 |
| -let manualFailedRerunHandler = null; |
6 |
| -let failedRerunHandler = null; |
7 |
| -let triggerManualBuildLatestHandler = null; |
8 |
| -let triggerManualBuildHandler = null; |
9 |
| - |
10 |
| -const parseDataAttributes = (container) => ({ |
11 |
| - id: parseInt(container.dataset.showSpinnerId, 10), |
12 |
| - buildExtId: container.dataset.rerunBuildExtId, |
13 |
| - dependencyIds: container.dataset.rerunBuildDependencyIds |
14 |
| - .split(',') |
15 |
| - .filter(Boolean) |
16 |
| - .map(id => parseInt(id, 10)) |
17 |
| -}); |
| 1 | +const parseDataAttributes = function(container) { |
| 2 | + return { |
| 3 | + id: parseInt(container.dataset.showSpinnerId, 10), |
| 4 | + buildExtId: container.dataset.rerunBuildExtId, |
| 5 | + dependencyIds: container.dataset.rerunBuildDependencyIds |
| 6 | + .split(",") |
| 7 | + .filter(Boolean) |
| 8 | + .map(function(id) { |
| 9 | + return parseInt(id, 10); |
| 10 | + }) |
| 11 | + }; |
| 12 | +}; |
18 | 13 |
|
19 |
| -const parseTriggerAttributes = (container) => ({ |
20 |
| - id: parseInt(container.dataset.showSpinnerId, 10), |
21 |
| - upstreamProjectName: container.dataset.upstreamProjectName, |
22 |
| - upstreamBuildNumber: parseInt(container.dataset.upstreamBuildNumber, 10), |
23 |
| - projectName: container.dataset.projectName, |
24 |
| - dependencyIds: container.dataset.dependencyIds |
25 |
| - .split(',') |
26 |
| - .filter(Boolean) |
27 |
| - .map(id => parseInt(id, 10)) |
28 |
| -}); |
| 14 | +const parseTriggerAttributes = function(container) { |
| 15 | + return { |
| 16 | + id: parseInt(container.dataset.showSpinnerId, 10), |
| 17 | + upstreamProjectName: container.dataset.upstreamProjectName, |
| 18 | + upstreamBuildNumber: parseInt(container.dataset.upstreamBuildNumber, 10), |
| 19 | + projectName: container.dataset.projectName, |
| 20 | + dependencyIds: container.dataset.dependencyIds |
| 21 | + .split(",") |
| 22 | + .filter(Boolean) |
| 23 | + .map(function(id) { |
| 24 | + return parseInt(id, 10); |
| 25 | + }) |
| 26 | + }; |
| 27 | +}; |
29 | 28 |
|
30 |
| -const handleDialogClick = (dataContainer) => { |
31 |
| - const { fillDialogHref: href, fillDialogTitle: title } = dataContainer.dataset; |
32 |
| - console.log('handleDialogClick', href, title); |
| 29 | +const handleDialogClick = function(dataContainer) { |
| 30 | + const href = dataContainer.dataset.fillDialogHref; |
| 31 | + const title = dataContainer.dataset.fillDialogTitle; |
33 | 32 | buildPipeline.fillDialog(href, title);
|
34 | 33 | };
|
35 | 34 |
|
36 |
| -const handleRerunClick = (dataContainer) => { |
| 35 | +const handleRerunClick = function(dataContainer) { |
37 | 36 | const { id, buildExtId, dependencyIds } = parseDataAttributes(dataContainer);
|
38 | 37 | buildPipeline.showSpinner(id);
|
39 | 38 | buildPipeline.rerunBuild(id, buildExtId, dependencyIds);
|
40 | 39 | };
|
41 | 40 |
|
42 |
| -const handleTriggerBuild = (dataContainer) => { |
| 41 | +const handleTriggerBuild = function(dataContainer) { |
43 | 42 | const { id, upstreamProjectName, upstreamBuildNumber, projectName, dependencyIds } = parseTriggerAttributes(dataContainer);
|
44 | 43 | buildPipeline.showSpinner(id);
|
45 | 44 | buildPipeline.triggerBuild(id, upstreamProjectName, upstreamBuildNumber, projectName, dependencyIds);
|
46 | 45 | };
|
47 | 46 |
|
48 |
| -const createDelegatedHandler = (parentSelector, targetSelector, handlerFn, existingHandler) => { |
49 |
| - const parentElement = document.querySelector(parentSelector); |
50 |
| - |
51 |
| - if (existingHandler) { |
52 |
| - parentElement.removeEventListener('click', existingHandler); |
53 |
| - } |
54 |
| - |
55 |
| - const newHandler = (event) => { |
| 47 | +const createClickHandler = function(parentElement, targetSelector, handlerFn) { |
| 48 | + const newHandler = function(event) { |
56 | 49 | const clickTarget = event.target.closest(targetSelector);
|
57 |
| - if (!clickTarget) return; |
| 50 | + if (!clickTarget || !parentElement.contains(clickTarget)) return; |
58 | 51 |
|
59 |
| - const buildCard = clickTarget.closest('.build-card'); |
60 |
| - const dataContainer = buildCard.querySelector(targetSelector + '-params'); |
| 52 | + const buildCard = clickTarget.closest(".build-card"); |
| 53 | + if (!buildCard) return; |
61 | 54 |
|
| 55 | + const dataContainer = buildCard.querySelector(targetSelector + "-params"); |
62 | 56 | handlerFn(dataContainer);
|
63 | 57 | };
|
64 | 58 |
|
65 |
| - parentElement.addEventListener('click', newHandler); |
66 |
| - return newHandler; |
| 59 | + parentElement.addEventListener("click", newHandler); |
67 | 60 | };
|
68 | 61 |
|
69 |
| -Behaviour.specify( |
70 |
| - ".bct-progress-bar-onclick", |
71 |
| - 'BuildCardExtension_progressBarClick', |
72 |
| - 0, |
73 |
| - function() { |
74 |
| - progressBarClickHandler = createDelegatedHandler( |
75 |
| - '.pipelines', |
76 |
| - '.bct-progress-bar-onclick', |
77 |
| - handleDialogClick, |
78 |
| - progressBarClickHandler |
79 |
| - ); |
| 62 | +const onclickElements = { |
| 63 | + ".bct-progress-bar-onclick": { |
| 64 | + handler: handleDialogClick |
| 65 | + }, |
| 66 | + ".bct-console-icon-onclick": { |
| 67 | + handler: handleDialogClick |
| 68 | + }, |
| 69 | + ".bct-rerun-successful-build-onclick": { |
| 70 | + handler: handleRerunClick |
| 71 | + }, |
| 72 | + ".bct-rerun-failed-latest-build-onclick": { |
| 73 | + handler: handleRerunClick |
| 74 | + }, |
| 75 | + ".bct-rerun-failed-manual-build-onclick": { |
| 76 | + handler: handleTriggerBuild |
| 77 | + }, |
| 78 | + ".bct-rerun-failed-build-onclick": { |
| 79 | + handler: handleRerunClick |
| 80 | + }, |
| 81 | + ".bct-trigger-manual-build-latest-onclick": { |
| 82 | + handler: handleTriggerBuild |
| 83 | + }, |
| 84 | + ".bct-trigger-manual-build-onclick": { |
| 85 | + handler: handleTriggerBuild |
80 | 86 | }
|
81 |
| -); |
82 |
| - |
83 |
| -Behaviour.specify( |
84 |
| - ".bct-console-icon-onclick", |
85 |
| - 'BuildCardExtension_consoleIconClick', |
86 |
| - 0, |
87 |
| - function() { |
88 |
| - consoleIconClickHandler = createDelegatedHandler( |
89 |
| - '.pipelines', |
90 |
| - '.bct-console-icon-onclick', |
91 |
| - handleDialogClick, |
92 |
| - consoleIconClickHandler |
93 |
| - ); |
94 |
| - } |
95 |
| -); |
96 |
| - |
97 |
| -Behaviour.specify( |
98 |
| - ".bct-rerun-successful-build-onclick", |
99 |
| - 'BuildCardExtension_successRerunClick', |
100 |
| - 0, |
101 |
| - function() { |
102 |
| - successRerunHandler = createDelegatedHandler( |
103 |
| - '.pipelines', |
104 |
| - '.bct-rerun-successful-build-onclick', |
105 |
| - handleRerunClick, |
106 |
| - successRerunHandler |
107 |
| - ); |
108 |
| - } |
109 |
| -); |
110 |
| - |
111 |
| -Behaviour.specify( |
112 |
| - ".bct-rerun-failed-latest-build-onclick", |
113 |
| - 'BuildCardExtension_latestFailedRerunClick', |
114 |
| - 0, |
115 |
| - function() { |
116 |
| - latestFailedRerunHandler = createDelegatedHandler( |
117 |
| - '.pipelines', |
118 |
| - '.bct-rerun-failed-latest-build-onclick', |
119 |
| - handleRerunClick, |
120 |
| - latestFailedRerunHandler |
121 |
| - ); |
122 |
| - } |
123 |
| -); |
124 |
| - |
125 |
| -Behaviour.specify( |
126 |
| - ".bct-rerun-failed-manual-build-onclick", |
127 |
| - 'BuildCardExtension_failedManualRerunClick', |
128 |
| - 0, |
129 |
| - function() { |
130 |
| - manualFailedRerunHandler = createDelegatedHandler( |
131 |
| - '.pipelines', |
132 |
| - '.bct-rerun-failed-manual-build-onclick', |
133 |
| - handleTriggerBuild, |
134 |
| - manualFailedRerunHandler |
135 |
| - ); |
136 |
| - } |
137 |
| -); |
138 |
| - |
139 |
| -Behaviour.specify( |
140 |
| - ".bct-rerun-failed-build-onclick", |
141 |
| - 'BuildCardExtension_failedNotManualRerunClick', |
142 |
| - 0, |
143 |
| - function() { |
144 |
| - failedRerunHandler = createDelegatedHandler( |
145 |
| - '.pipelines', |
146 |
| - '.bct-rerun-failed-build-onclick', |
147 |
| - handleRerunClick, |
148 |
| - failedRerunHandler |
149 |
| - ); |
150 |
| - } |
151 |
| -); |
152 |
| - |
153 |
| -Behaviour.specify( |
154 |
| - ".bct-trigger-manual-build-latest-onclick", |
155 |
| - 'BuildCardExtension_triggerBuildClick', |
156 |
| - 0, |
157 |
| - function() { |
158 |
| - triggerManualBuildLatestHandler = createDelegatedHandler( |
159 |
| - '.pipelines', |
160 |
| - '.bct-trigger-manual-build-latest-onclick', |
161 |
| - handleTriggerBuild, |
162 |
| - triggerManualBuildLatestHandler |
163 |
| - ); |
164 |
| - } |
165 |
| -); |
| 87 | +}; |
166 | 88 |
|
167 |
| -Behaviour.specify( |
168 |
| - ".bct-trigger-manual-build-onclick", |
169 |
| - 'BuildCardExtension_triggerManualBuildClick', |
170 |
| - 0, |
171 |
| - function() { |
172 |
| - triggerManualBuildHandler = createDelegatedHandler( |
173 |
| - '.pipelines', |
174 |
| - '.bct-trigger-manual-build-onclick', |
175 |
| - handleTriggerBuild, |
176 |
| - triggerManualBuildHandler |
177 |
| - ); |
178 |
| - } |
179 |
| -); |
| 89 | +document.addEventListener("DOMContentLoaded", function () { |
| 90 | + const parentElement = document.querySelector(".pipelines"); |
180 | 91 |
|
| 92 | + Object.entries(onclickElements).forEach(function(entry) { |
| 93 | + const selector = entry[0]; |
| 94 | + const handlerConfig = entry[1]; |
| 95 | + createClickHandler(parentElement, selector, handlerConfig.handler); |
| 96 | + }); |
| 97 | +}); |
0 commit comments