Commit ff7419b3 authored by Clement Ho's avatar Clement Ho

[skip ci] remove unnecessary ajax request

parent ea048763
...@@ -255,7 +255,8 @@ GitLabDropdown = (function() { ...@@ -255,7 +255,8 @@ GitLabDropdown = (function() {
} }
}; };
// Remote data // Remote data
})(this) })(this),
instance: this,
}); });
} }
} }
...@@ -269,6 +270,7 @@ GitLabDropdown = (function() { ...@@ -269,6 +270,7 @@ GitLabDropdown = (function() {
remote: this.options.filterRemote, remote: this.options.filterRemote,
query: this.options.data, query: this.options.data,
keys: searchFields, keys: searchFields,
instance: this,
elements: (function(_this) { elements: (function(_this) {
return function() { return function() {
selector = '.dropdown-content li:not(' + NON_SELECTABLE_CLASSES + ')'; selector = '.dropdown-content li:not(' + NON_SELECTABLE_CLASSES + ')';
......
...@@ -131,81 +131,82 @@ ...@@ -131,81 +131,82 @@
var isAuthorFilter; var isAuthorFilter;
isAuthorFilter = $('.js-author-search'); isAuthorFilter = $('.js-author-search');
return _this.users(term, options, function(users) { return _this.users(term, options, function(users) {
var anyUser, index, j, len, name, obj, showDivider; const glDropdown = this.instance || this.options.instance;
if (term.length === 0) { glDropdown.options.processData(term, users, callback);
showDivider = 0; }.bind(this));
if (firstUser) { },
// Move current user to the front of the list processData: function(term, users, callback) {
for (index = j = 0, len = users.length; j < len; index = (j += 1)) { var anyUser, index, j, len, name, obj, showDivider;
obj = users[index]; if (term.length === 0) {
if (obj.username === firstUser) { showDivider = 0;
users.splice(index, 1); if (firstUser) {
users.unshift(obj); // Move current user to the front of the list
break; for (index = j = 0, len = users.length; j < len; index = (j += 1)) {
} obj = users[index];
} if (obj.username === firstUser) {
} users.splice(index, 1);
if (showNullUser) { users.unshift(obj);
showDivider += 1; break;
users.unshift({
beforeDivider: true,
name: 'Unassigned',
id: 0
});
}
if (showAnyUser) {
showDivider += 1;
name = showAnyUser;
if (name === true) {
name = 'Any User';
} }
anyUser = {
beforeDivider: true,
name: name,
id: null
};
users.unshift(anyUser);
} }
}
if (showDivider) { if (showNullUser) {
users.splice(showDivider, 0, "divider"); showDivider += 1;
users.unshift({
beforeDivider: true,
name: 'Unassigned',
id: 0
});
}
if (showAnyUser) {
showDivider += 1;
name = showAnyUser;
if (name === true) {
name = 'Any User';
} }
anyUser = {
beforeDivider: true,
name: name,
id: null
};
users.unshift(anyUser);
}
if (showDivider) {
users.splice(showDivider, 0, "divider");
}
if ($dropdown.hasClass('js-multiselect')) { if ($dropdown.hasClass('js-multiselect')) {
const selected = $selectbox const selected = $selectbox
.find('input[name="' + $dropdown.data('field-name') + '"]') .find('input[name="' + $dropdown.data('field-name') + '"]')
.map(function () { .map(function () {
return parseInt(this.value, 10); return parseInt(this.value, 10);
}) })
.get() .get()
.filter((i) => i !== 0); .filter((i) => i !== 0);
// const unassignedSelected = selected.length === 1 && selected[0] === 0; if (selected.length > 0) {
// && !unassignedSelected const selectedUsers = users
if (selected.length > 0) { .filter((u) => selected.indexOf(u.id) !== -1)
const selectedUsers = users .sort((a, b) => a.name > b.name);
.filter((u) => selected.indexOf(u.id) !== -1)
.sort((a, b) => a.name > b.name); users = users.filter((u) => selected.indexOf(u.id) === -1);
users = users.filter((u) => selected.indexOf(u.id) === -1); selectedUsers.forEach((selectedUser) => {
showDivider += 1;
selectedUsers.forEach((selectedUser) => { users.splice(showDivider, 0, selectedUser);
showDivider += 1; });
users.splice(showDivider, 0, selectedUser);
});
users.splice(showDivider + 1, 0, 'divider'); users.splice(showDivider + 1, 0, 'divider');
}
} }
} }
callback(users); }
if (showMenuAbove) {
$dropdown.data('glDropdown').positionMenuAbove(); callback(users);
} if (showMenuAbove) {
}); $dropdown.data('glDropdown').positionMenuAbove();
}
}, },
filterable: true, filterable: true,
filterRemote: true, filterRemote: true,
...@@ -216,10 +217,16 @@ ...@@ -216,10 +217,16 @@
fieldName: $dropdown.data('field-name'), fieldName: $dropdown.data('field-name'),
toggleLabel: function(selected, el, glDropdown) { toggleLabel: function(selected, el, glDropdown) {
if (this.multiSelect) { if (this.multiSelect) {
// debugger const inputValue = glDropdown.filterInput.val();
const users = glDropdown.fullData.filter((r) => {
return typeof r === 'object' && !Object.prototype.hasOwnProperty.call(r, 'beforeDivider');
});
const callback = glDropdown.parseData.bind(glDropdown);
// Update the data model // Update the data model
// debugger this.processData(inputValue, users, callback);
this.data(glDropdown.filterInput.val(), glDropdown.parseData.bind(glDropdown));
} }
if (selected && 'id' in selected && $(el).hasClass('is-active')) { if (selected && 'id' in selected && $(el).hasClass('is-active')) {
...@@ -309,7 +316,7 @@ ...@@ -309,7 +316,7 @@
} }
updateIssueBoardsIssue(); updateIssueBoardsIssue();
} else { } else if (!$dropdown.hasClass('js-multiselect')) {
selected = $dropdown.closest('.selectbox').find("input[name='" + ($dropdown.data('field-name')) + "']").val(); selected = $dropdown.closest('.selectbox').find("input[name='" + ($dropdown.data('field-name')) + "']").val();
return assignTo(selected); return assignTo(selected);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment