@@ -157,7 +157,7 @@ function initLabelEdit() {
});
});
}
}
function updateIssuesMeta(url, action, issueIds, elementId, isAdd ) {
function updateIssuesMeta(url, action, issueIds, elementId) {
return new Promise(((resolve) => {
return new Promise(((resolve) => {
$.ajax({
$.ajax({
type: 'POST',
type: 'POST',
@@ -167,7 +167,6 @@ function updateIssuesMeta(url, action, issueIds, elementId, isAdd) {
action,
action,
issue_ids: issueIds,
issue_ids: issueIds,
id: elementId,
id: elementId,
is_add: isAdd
},
},
success: resolve
success: resolve
});
});
@@ -373,21 +372,20 @@ function initCommentForm() {
const $list = $(`.ui.${outerSelector}.list`);
const $list = $(`.ui.${outerSelector}.list`);
const $noSelect = $list.find('.no-select');
const $noSelect = $list.find('.no-select');
const $listMenu = $(`.${selector} .menu`);
const $listMenu = $(`.${selector} .menu`);
let hasLabel UpdateAction = $listMenu.data('action') === 'update';
const label s = {};
let hasUpdateAction = $listMenu.data('action') === 'update';
const item s = {};
$(`.${selector}`).dropdown('setting', 'onHide', () => {
$(`.${selector}`).dropdown('setting', 'onHide', () => {
hasLabel UpdateAction = $listMenu.data('action') === 'update'; // Update the var
if (hasLabel UpdateAction) {
hasUpdateAction = $listMenu.data('action') === 'update'; // Update the var
if (hasUpdateAction) {
const promises = [];
const promises = [];
Object.keys(label s).forEach((elementId) => {
const label = label s[elementId];
Object.keys(item s).forEach((elementId) => {
const item = item s[elementId];
const promise = updateIssuesMeta(
const promise = updateIssuesMeta(
label ['update-url'],
label .action,
label ['issue-id'],
item ['update-url'],
item .action,
item ['issue-id'],
elementId,
elementId,
label['is-checked']
);
);
promises.push(promise);
promises.push(promise);
});
});
@@ -395,67 +393,49 @@ function initCommentForm() {
}
}
});
});
$listMenu.find('.item:not(.no-select)').on('click', function () {
// we don't need the action attribute when updating assignees
if (selector === 'select-assignees-modify' || selector === 'select-reviewers-modify') {
// UI magic. We need to do this here, otherwise it would destroy the functionality of
// adding/removing labels
if ($(this).data('can-change') === 'block') {
return false;
}
if ($(this).hasClass('checked')) {
$(this).removeClass('checked');
$(this).find('.octicon-check').addClass('invisible');
$(this).data('is-checked', 'remove');
} else {
$(this).addClass('checked');
$(this).find('.octicon-check').removeClass('invisible');
$(this).data('is-checked', 'add');
}
updateIssuesMeta(
$listMenu.data('update-url'),
'',
$listMenu.data('issue-id'),
$(this).data('id'),
$(this).data('is-checked')
);
$listMenu.data('action', 'update'); // Update to reload the page when we updated items
$listMenu.find('.item:not(.no-select)').on('click', function (e) {
e.preventDefault();
if ($(this).hasClass('ban-change')) {
return false;
return false;
}
}
hasUpdateAction = $listMenu.data('action') === 'update'; // Update the var
if ($(this).hasClass('checked')) {
if ($(this).hasClass('checked')) {
$(this).removeClass('checked');
$(this).removeClass('checked');
$(this).find('.octicon-check').addClass('invisible');
$(this).find('.octicon-check').addClass('invisible');
if (hasLabel UpdateAction) {
if (!($(this).data('id') in label s)) {
label s[$(this).data('id')] = {
if (hasUpdateAction) {
if (!($(this).data('id') in items)) {
items[$(this).data('id')] = {
'update-url': $listMenu.data('update-url'),
'update-url': $listMenu.data('update-url'),
action: 'detach',
action: 'detach',
'issue-id': $listMenu.data('issue-id'),
'issue-id': $listMenu.data('issue-id'),
};
};
} else {
} else {
delete label s[$(this).data('id')];
delete items[$(this).data('id')];
}
}
}
}
} else {
} else {
$(this).addClass('checked');
$(this).addClass('checked');
$(this).find('.octicon-check').removeClass('invisible');
$(this).find('.octicon-check').removeClass('invisible');
if (hasLabel UpdateAction) {
if (!($(this).data('id') in label s)) {
label s[$(this).data('id')] = {
if (hasUpdateAction) {
if (!($(this).data('id') in items)) {
items[$(this).data('id')] = {
'update-url': $listMenu.data('update-url'),
'update-url': $listMenu.data('update-url'),
action: 'attach',
action: 'attach',
'issue-id': $listMenu.data('issue-id'),
'issue-id': $listMenu.data('issue-id'),
};
};
} else {
} else {
delete label s[$(this).data('id')];
delete item s[$(this).data('id')];
}
}
}
}
}
}
// TODO: Which thing should be done for choosing review requests
// to make choosed items be shown on time here?
if (selector === 'select-reviewers-modify' || selector === 'select-assignees-modify') {
return false;
}
const listIds = [];
const listIds = [];
$(this).parent().find('.item').each(function () {
$(this).parent().find('.item').each(function () {
if ($(this).hasClass('checked')) {
if ($(this).hasClass('checked')) {
@@ -473,23 +453,26 @@ function initCommentForm() {
$($(this).parent().data('id')).val(listIds.join(','));
$($(this).parent().data('id')).val(listIds.join(','));
return false;
return false;
});
});
$listMenu.find('.no-select.item').on('click', function () {
if (hasLabelUpdateAction || selector === 'select-assignees-modify') {
$listMenu.find('.no-select.item').on('click', function (e) {
e.preventDefault();
if (hasUpdateAction) {
updateIssuesMeta(
updateIssuesMeta(
$listMenu.data('update-url'),
$listMenu.data('update-url'),
'clear',
'clear',
$listMenu.data('issue-id'),
$listMenu.data('issue-id'),
'',
'',
''
).then(reload);
).then(reload);
}
}
$(this).parent().find('.item').each(function () {
$(this).parent().find('.item').each(function () {
$(this).removeClass('checked');
$(this).removeClass('checked');
$(this).find('.octicon').addClass('invisible');
$(this).find('.octicon').addClass('invisible');
$(this).data('is-checked', 'remove');
});
});
if (selector === 'select-reviewers-modify' || selector === 'select-assignees-modify') {
return false;
}
$list.find('.item').each(function () {
$list.find('.item').each(function () {
$(this).addClass('hide');
$(this).addClass('hide');
});
});
@@ -521,7 +504,6 @@ function initCommentForm() {
'',
'',
$menu.data('issue-id'),
$menu.data('issue-id'),
$(this).data('id'),
$(this).data('id'),
$(this).data('is-checked')
).then(reload);
).then(reload);
}
}
switch (input_id) {
switch (input_id) {
@@ -552,7 +534,6 @@ function initCommentForm() {
'',
'',
$menu.data('issue-id'),
$menu.data('issue-id'),
$(this).data('id'),
$(this).data('id'),
$(this).data('is-checked')
).then(reload);
).then(reload);
}
}
@@ -672,10 +653,9 @@ function initIssueComments() {
event.preventDefault();
event.preventDefault();
updateIssuesMeta(
updateIssuesMeta(
url,
url,
'',
isChecked === 'true' ? 'attach' : 'detach ',
issueId,
issueId,
id,
id,
isChecked
).then(reload);
).then(reload);
});
});