improves selectAll performance in MultiSelect2
This commit is contained in:
parent
39394e2ee8
commit
2ee7fadfce
31
select2.js
31
select2.js
@ -2966,21 +2966,18 @@ the specific language governing permissions and limitations under the Apache Lic
|
|||||||
|
|
||||||
// multi
|
// multi
|
||||||
updateSelection: function (data) {
|
updateSelection: function (data) {
|
||||||
var ids = [], filtered = [], self = this;
|
var ids = {}, filtered = [], self = this;
|
||||||
|
|
||||||
// filter out duplicates
|
// filter out duplicates
|
||||||
$(data).each(function () {
|
$(data).each(function () {
|
||||||
if (indexOf(self.id(this), ids) < 0) {
|
if (!(self.id(this) in ids)) {
|
||||||
ids.push(self.id(this));
|
ids[self.id(this)] = 0;
|
||||||
filtered.push(this);
|
filtered.push(this);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
data = filtered;
|
|
||||||
|
|
||||||
this.selection.find(".select2-search-choice").remove();
|
this.selection.find(".select2-search-choice").remove();
|
||||||
$(data).each(function () {
|
this.addSelectedChoice(filtered);
|
||||||
self.addSelectedChoice(this);
|
|
||||||
});
|
|
||||||
self.postprocessResults();
|
self.postprocessResults();
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -3054,6 +3051,14 @@ the specific language governing permissions and limitations under the Apache Lic
|
|||||||
},
|
},
|
||||||
|
|
||||||
addSelectedChoice: function (data) {
|
addSelectedChoice: function (data) {
|
||||||
|
var val = this.getVal(), self = this;
|
||||||
|
$(data).each(function () {
|
||||||
|
val.push(self.createChoice(this));
|
||||||
|
});
|
||||||
|
this.setVal(val);
|
||||||
|
},
|
||||||
|
|
||||||
|
createChoice: function (data) {
|
||||||
var enableChoice = !data.locked,
|
var enableChoice = !data.locked,
|
||||||
enabledItem = $(
|
enabledItem = $(
|
||||||
"<li class='select2-search-choice'>" +
|
"<li class='select2-search-choice'>" +
|
||||||
@ -3066,7 +3071,6 @@ the specific language governing permissions and limitations under the Apache Lic
|
|||||||
"</li>");
|
"</li>");
|
||||||
var choice = enableChoice ? enabledItem : disabledItem,
|
var choice = enableChoice ? enabledItem : disabledItem,
|
||||||
id = this.id(data),
|
id = this.id(data),
|
||||||
val = this.getVal(),
|
|
||||||
formatted,
|
formatted,
|
||||||
cssClass;
|
cssClass;
|
||||||
|
|
||||||
@ -3100,8 +3104,7 @@ the specific language governing permissions and limitations under the Apache Lic
|
|||||||
choice.data("select2-data", data);
|
choice.data("select2-data", data);
|
||||||
choice.insertBefore(this.searchContainer);
|
choice.insertBefore(this.searchContainer);
|
||||||
|
|
||||||
val.push(id);
|
return id;
|
||||||
this.setVal(val);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// multi
|
// multi
|
||||||
@ -3233,14 +3236,16 @@ the specific language governing permissions and limitations under the Apache Lic
|
|||||||
|
|
||||||
// multi
|
// multi
|
||||||
setVal: function (val) {
|
setVal: function (val) {
|
||||||
var unique;
|
|
||||||
if (this.select) {
|
if (this.select) {
|
||||||
this.select.val(val);
|
this.select.val(val);
|
||||||
} else {
|
} else {
|
||||||
unique = [];
|
var unique = [], valMap = {};
|
||||||
// filter out duplicates
|
// filter out duplicates
|
||||||
$(val).each(function () {
|
$(val).each(function () {
|
||||||
if (indexOf(this, unique) < 0) unique.push(this);
|
if (!(this in valMap)) {
|
||||||
|
unique.push(this);
|
||||||
|
valMap[this] = 0;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
this.opts.element.val(unique.length === 0 ? "" : unique.join(this.opts.separator));
|
this.opts.element.val(unique.length === 0 ? "" : unique.join(this.opts.separator));
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user