Skip to content
This repository was archived by the owner on Jan 9, 2023. It is now read-only.

Commit 48e738e

Browse files
authored
Merge pull request #18 from Daverlo/issueType
Remove the option to select an issue type
2 parents 78768b4 + 25d6b9d commit 48e738e

File tree

2 files changed

+54
-57
lines changed

2 files changed

+54
-57
lines changed

src/main/resources/admin.vm

-6
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,6 @@
2626
<option value="none"></option>
2727
</select>
2828
</div>
29-
<div class="field-group">
30-
<label for="issueType">$i18n.getText("lgtm-servlet.admin.issueType.label")</label>
31-
<select id="issueType">
32-
<option value="none"></option>
33-
</select>
34-
</div>
3529
<div class="field-group">
3630
<label for="closedStatus">$i18n.getText("lgtm-servlet.admin.closedStatus.label")</label>
3731
<select id="closedStatus">

src/main/resources/js/lgtm-addon.js

+54-51
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@ var userFieldId = "#user";
66
var secretFieldId = "#secret";
77

88
var projectFieldId = "#project";
9-
var issueTypeFieldId = "#issueType";
109
var closedStatusFieldId = "#closedStatus";
1110
var reopenedStatusFieldId = "#reopenedStatus";
1211
var priorityFieldId = "#priority";
1312

1413
var webhookUrlFieldId = "#webhookUrl";
1514
var urlCodeId = "urlCode";
1615
var key = "webhook";
16+
var lgtmIssueTypeId = null;
1717

1818
(function() { // this closure helps us keep our variables to ourselves.
1919
// This pattern is known as an "iife" - immediately invoked function expression
@@ -23,7 +23,6 @@ var key = "webhook";
2323

2424
// Init select2 fields
2525
AJS.$(projectFieldId).auiSelect2();
26-
AJS.$(issueTypeFieldId).auiSelect2();
2726
AJS.$(closedStatusFieldId).auiSelect2();
2827
AJS.$(reopenedStatusFieldId).auiSelect2();
2928
AJS.$(priorityFieldId).auiSelect2();
@@ -78,69 +77,77 @@ function loadProjects() {
7877
}
7978

8079
function handleProjectChange(event) {
81-
clearSelect2Field(issueTypeFieldId);
80+
lgtmIssueTypeId = null;
8281
clearSelect2Field(priorityFieldId);
8382
clearSelect2Field(closedStatusFieldId);
8483
clearSelect2Field(reopenedStatusFieldId);
8584

8685
if (AJS.$(projectFieldId).select2('val') !== "none") {
87-
loadIssueTypes(AJS.$(projectFieldId).select2('val'));
86+
loadIssueType(AJS.$(projectFieldId).select2('val'), AJS.$(projectFieldId).select2('data').text);
8887
loadPriorities(AJS.$(projectFieldId).select2('val'));
8988
}
9089
}
91-
92-
function loadIssueTypes(projectKey) {
90+
91+
function loadIssueType(projectKey, projectName) {
9392
$.ajax({
9493
url : AJS.contextPath() + "/rest/api/2/project/" + projectKey + "/statuses"
9594
}).done(
9695
function(issueTypes) {
97-
var fieldContent = issueTypes.map(function(issueType) {
98-
return {
99-
value : issueType.id,
100-
text : issueType.name
101-
}
96+
var lgtmIssueType = issueTypes.find(function (element) {
97+
return element.name.toLowerCase() === "LGTM alert".toLowerCase();
10298
});
103-
fieldContent.unshift({value : "none", text : ""});
10499

105-
renderSelect2Field(issueTypeFieldId, fieldContent);
106-
AJS.$(issueTypeFieldId).on('change', function(e) {
107-
handleIssueTypeChange(issueTypes);
108-
});
109-
110-
if (config !== null) {
111-
changeSelect2Value(issueTypeFieldId, config.issueTypeId);
100+
var children = AJS.$("#message-context").children();
101+
102+
for (var i = 0; i < children.length; i++) {
103+
children[i].remove();
104+
}
105+
106+
if (lgtmIssueType === undefined) {
107+
AJS.messages.error("#message-context", {
108+
title : 'The "LGTM alert" issue type is not included in the issue type scheme of '
109+
+ projectName + '.',
110+
closeable : true,
111+
fadeout : false
112+
});
113+
114+
var messageContent = document.createElement('span');
115+
messageContent.textContent = 'It can be added using the "Edit issue types" action in '
116+
+ projectName + "'s ";
117+
118+
var link = document.createElement('a');
119+
var configUrl = AJS.params.baseURL + '/plugins/servlet/project-config/' + encodeURIComponent(projectKey) + '/issuetypes';
120+
link.href = configUrl;
121+
link.target = "_blank";
122+
link.textContent = "issue type settings";
123+
124+
AJS.$("#message-context").children()[0].append(messageContent);
125+
AJS.$("#message-context").children()[0].append(link);
126+
} else {
127+
lgtmIssueTypeId = lgtmIssueType.id;
128+
loadStatuses(lgtmIssueType);
112129
}
113130
});
114131
};
115132

116-
function handleIssueTypeChange(issueTypes) {
117-
clearSelect2Field(closedStatusFieldId);
118-
clearSelect2Field(reopenedStatusFieldId);
133+
function loadStatuses(lgtmIssueType) {
134+
var statuses = lgtmIssueType.statuses.map(function(status) {
135+
return {
136+
value : status.id,
137+
text : status.name
138+
}
139+
});
140+
statuses.unshift({value : "none", text : ""});
119141

120-
if (AJS.$(issueTypeFieldId).select2('val') !== "none") {
121-
for (var i = 0; i < issueTypes.length; i++) {
122-
if (issueTypes[i].id === AJS.$(issueTypeFieldId).select2('val')) {
123-
var statuses = issueTypes[i].statuses.map(function(status) {
124-
return {
125-
value : status.id,
126-
text : status.name
127-
}
128-
});
129-
statuses.unshift({value : "none", text : ""});
130-
131-
renderSelect2Field(closedStatusFieldId, statuses);
132-
renderSelect2Field(reopenedStatusFieldId, statuses);
142+
renderSelect2Field(closedStatusFieldId, statuses);
143+
renderSelect2Field(reopenedStatusFieldId, statuses);
133144

134-
if (config !== null) {
135-
var closedStatusList = AJS.$(closedStatusFieldId);
136-
var reopenedStatusList = AJS.$(reopenedStatusFieldId);
145+
if (config !== null) {
146+
var closedStatusList = AJS.$(closedStatusFieldId);
147+
var reopenedStatusList = AJS.$(reopenedStatusFieldId);
137148

138-
closedStatusList.select2('val', config.closedStatusId);
139-
reopenedStatusList.select2('val', config.reopenedStatusId);
140-
}
141-
break;
142-
}
143-
}
149+
closedStatusList.select2('val', config.closedStatusId);
150+
reopenedStatusList.select2('val', config.reopenedStatusId);
144151
}
145152
}
146153

@@ -242,12 +249,8 @@ function updateConfig() {
242249
return;
243250
}
244251

245-
if (AJS.$(issueTypeFieldId).select2('val') === "none") {
246-
AJS.messages.error("#message-context", {
247-
title : 'Please select an IssueType.',
248-
closeable : true,
249-
fadeout : true
250-
});
252+
if (lgtmIssueTypeId === null) {
253+
// Error message is handled in loadIssueType() when lgtmIssueType is undefined
251254
return;
252255
}
253256

@@ -274,7 +277,7 @@ function updateConfig() {
274277
'lgtmSecret' : AJS.$('#secret').attr('value'),
275278
'username' : AJS.$('#user').attr('value'),
276279
'projectKey' : AJS.$('#project').select2('val'),
277-
'issueTypeId' : AJS.$('#issueType').select2('val'),
280+
'issueTypeId' : lgtmIssueTypeId,
278281
'closedStatusId' : AJS.$('#closedStatus').select2('val'),
279282
'reopenedStatusId' : AJS.$('#reopenedStatus').select2('val'),
280283
'priorityLevelId' : AJS.$('#priority').select2('val')

0 commit comments

Comments
 (0)