2021-03-28 11:06:49 +02:00
|
|
|
import ComboBox from "select-kit/components/combo-box";
|
2020-03-24 10:35:46 +01:00
|
|
|
import { computed } from "@ember/object";
|
|
|
|
import { makeArray } from "discourse-common/lib/helpers";
|
|
|
|
|
2021-03-28 11:06:49 +02:00
|
|
|
export default ComboBox.extend({
|
|
|
|
content: computed("groups.[]", "field.content.[]", function () {
|
2023-04-17 15:46:11 +02:00
|
|
|
const blacklist = ["Administratoren"]; // Gruppe, die nicht ausgewählt werden kann
|
|
|
|
const selectedGroups = makeArray(this.field.content); // bereits ausgewählte Gruppen
|
2021-03-28 11:06:49 +02:00
|
|
|
return this.groups
|
|
|
|
.filter((group) => {
|
2023-04-17 15:46:11 +02:00
|
|
|
return blacklist.indexOf(group.name) === -1 && // Gruppe ist nicht in der Blacklist
|
|
|
|
(selectedGroups.length === 0 || // wenn keine Gruppen ausgewählt sind
|
|
|
|
selectedGroups.indexOf(group.id) > -1); // oder Gruppe bereits ausgewählt wurde
|
2021-03-28 11:06:49 +02:00
|
|
|
})
|
|
|
|
.map((g) => {
|
|
|
|
return {
|
|
|
|
id: g.id,
|
|
|
|
name: g.full_name ? g.full_name : g.name,
|
|
|
|
};
|
|
|
|
});
|
|
|
|
}),
|
2023-04-17 15:46:11 +02:00
|
|
|
|
|
|
|
didInsertElement() {
|
|
|
|
// Setze alle Gruppen als bereits ausgewählt
|
|
|
|
this._super(...arguments);
|
|
|
|
const selectedGroups = makeArray(this.field.content);
|
|
|
|
const allGroups = this.content.map((g) => g.id);
|
|
|
|
const unselectedGroups = allGroups.filter((g) => !selectedGroups.includes(g));
|
|
|
|
this.updateValue([...selectedGroups, ...unselectedGroups]);
|
|
|
|
},
|
2021-03-28 11:06:49 +02:00
|
|
|
});
|
2023-04-17 15:46:11 +02:00
|
|
|
|