discourse/app/assets/javascripts/admin/components/admin-group-selector.js.es6

39 lines
1.2 KiB
Text
Raw Normal View History

export default Ember.Component.extend({
tagName: 'div',
didInsertElement: function(){
this.$("input").select2({
multiple: true,
width: '100%',
query: function(opts){
opts.callback({
results: this.get("available").map(this._format)
});
}.bind(this)
}).on("change", function(evt) {
if (evt.added){
this.triggerAction({action: "groupAdded",
actionContext: this.get("available"
).findBy("id", evt.added.id)});
} else if (evt.removed) {
this.triggerAction({action:"groupRemoved",
actionContext: this.get("selected"
).findBy("id", evt.removed.id)});
}
}.bind(this));
Discourse.Group.findAll().then(function(groups){
this.set("available", groups.filterBy("automatic", false));
}.bind(this));
this.refreshOnReset();
},
_format: function(item){
return {"text": item.name, "id": item.id, "locked": item.automatic};
},
refreshOnReset: function() {
this.$("input").select2("data", this.get("selected").map(this._format));
}.observes("selected")
});