ember-emeis
Version:
The frontend for the emeis user management service
39 lines (32 loc) • 985 B
JavaScript
import { attr, belongsTo, hasMany } from "@ember-data/model";
import localizedAttr from "ember-emeis/decorators/localized-attr";
import LocalizedModel from "ember-emeis/models/localized";
export default class ScopeModel extends LocalizedModel {
name;
fullName;
description;
level;
metainfo;
isActive;
("scope", { inverse: "children", async: false }) parent;
("scope", { inverse: "parent", async: false }) children;
("acl") acls;
findParents() {
const anchestors = [];
let node = this;
while (node.parent) {
anchestors.push(node.parent);
node = node.parent;
}
return anchestors;
}
findChildren() {
const getAllChildren = (members) => {
return members.flatMap((member) => [
member,
...getAllChildren(member.children?.toArray()),
]);
};
return getAllChildren(this.children.toArray() ?? []);
}
}