Skip to content

Commit 5572051

Browse files
committed
remove Behaviour.specify \ Use dynamic approach
1 parent 30476d5 commit 5572051

File tree

1 file changed

+71
-154
lines changed

1 file changed

+71
-154
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,180 +1,97 @@
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+
};
1813

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+
};
2928

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;
3332
buildPipeline.fillDialog(href, title);
3433
};
3534

36-
const handleRerunClick = (dataContainer) => {
35+
const handleRerunClick = function(dataContainer) {
3736
const { id, buildExtId, dependencyIds } = parseDataAttributes(dataContainer);
3837
buildPipeline.showSpinner(id);
3938
buildPipeline.rerunBuild(id, buildExtId, dependencyIds);
4039
};
4140

42-
const handleTriggerBuild = (dataContainer) => {
41+
const handleTriggerBuild = function(dataContainer) {
4342
const { id, upstreamProjectName, upstreamBuildNumber, projectName, dependencyIds } = parseTriggerAttributes(dataContainer);
4443
buildPipeline.showSpinner(id);
4544
buildPipeline.triggerBuild(id, upstreamProjectName, upstreamBuildNumber, projectName, dependencyIds);
4645
};
4746

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) {
5649
const clickTarget = event.target.closest(targetSelector);
57-
if (!clickTarget) return;
50+
if (!clickTarget || !parentElement.contains(clickTarget)) return;
5851

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;
6154

55+
const dataContainer = buildCard.querySelector(targetSelector + "-params");
6256
handlerFn(dataContainer);
6357
};
6458

65-
parentElement.addEventListener('click', newHandler);
66-
return newHandler;
59+
parentElement.addEventListener("click", newHandler);
6760
};
6861

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
8086
}
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+
};
16688

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");
18091

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

Comments
 (0)