I have one permission array, this array is in dotted format, I want to format it to edit it in tree view. I've converted the array from a few forEach loops, but due to the fact that there are a lot of children, I've returned to the recursion format, this time I couldn't move to the next section after the sub-trees.
My raw formatted array:
var permArray = [
0: {id: 1, name: "auth.login"},
1: {id: 2, name: "dashboard.open"},
2: {id: 3, name: "account.view.others"},
3: {id: 4, name: "account.edit.roles"},
4: {id: 5, name: "account.delete.others"},
5: {id: 6, name: "menu.view.list"},
6: {id: 7, name: "developer.main.title"},
7: {id: 8, name: "developer.main.users"},
8: {id: 9, name: "developer.main.menu"},
9: {id: 10, name: "developer.main.roles"},
10: {id: 11, name: "users.have.branches"},
11: {id: 12, name: "add.users.branches"},
12: {id: 13, name: "edit.users.branches"},
13: {id: 14, name: "list.users.branches"},
14: {id: 15, name: "view.roles.manage.page"},
15: {id: 16, name: "view.users.manage.page"},
16: {id: 17, name: "view.menu.manage.page"},
17: {id: 18, name: "view.branch.products.manage.page"},
18: {id: 19, name: "view.branch.reports.manage.page"},
19: {id: 20, name: "sube.owned.list.product"},
20: {id: 21, name: "sube.owned.list.rapor"},
21: {id: 22, name: "branches.menu.title"},
22: {id: 23, name: "view.branches.menu.item"},
23: {id: 24, name: "users.state.edit"},
24: {id: 25, name: "isMultiLogin"},
25: {id: 26, name: "isViewSummaryAccount"},
26: {id: 27, name: "view.others.info"},
27: {id: 28, name: "addNewAccount"}
];
and this is my last recursive function
function buildTree(perms, nodeIndex = 0, permIndex = 0) {
var out = [],
form = this.getForm(),
tmpKeys = perms[permIndex].name.split(".");
if (permIndex == perms.length - 1) {
return out;
} else {
if (nodeIndex == tmpKeys.length - 1) {
form.id = perms[permIndex].id;
form.text = tmpKeys[nodeIndex];
return form;
} else {
form.id = nodeIndex + "-" + permIndex;
form.text = tmpKeys[nodeIndex];
if (tmpKeys.length - 1 > nodeIndex) {
if (!("children" in form))
form["children"] = [];
form["children"].push( buildTree(perms, ++nodeIndex, permIndex) );
}
return form;
}
}
}
result from this function
{ id: "0-0",text: "auth",children: [{ id: 1, text: "login" }] }
but what i want to do
[{
id: "0-0",
text: "auth",
children: [{
id: 1,
text: "login"
}]
},
{
id: "0-1",
text: "dashboard",
children: [{
id: 2,
text: "open"
}]
},
{
id: "0-2",
text: "account",
children: [{
id: "1-2",
text: "view"
children: [{
id: 3,
text: "others"
}]
},
id: "1-3",
text: "edit",
children: [{
id: 4,
text: "roles"
}]
]
},...continue]

id?