170 lines
5.4 KiB
JavaScript
170 lines
5.4 KiB
JavaScript
function list_all_groups() {
|
|
let req = {action: "get_all_groups"};
|
|
let tbody = document.getElementById("group_manager_table");
|
|
tbody.innerHTML = "";
|
|
request(req).then(resp => {
|
|
let groups = JSON.parse(resp);
|
|
for (let i = 0; i < groups.length; i++) {
|
|
let g = groups[i];
|
|
let row = document.createElement("tr");
|
|
let chkbox = document.createElement("input");
|
|
chkbox.type = "checkbox";
|
|
chkbox.name = "group_chkbox";
|
|
chkbox.group = g;
|
|
let tdChkBox = document.createElement("td");
|
|
tdChkBox.appendChild(chkbox);
|
|
tdChkBox.classList.add("checkbox");
|
|
let tdGroupName = create_table_cell(print_group_name(g));
|
|
let tdGroupDescription = create_table_cell(g["description"]);
|
|
let tdOwner = create_table_cell(g["owner"]);
|
|
row.append(tdChkBox, tdGroupName, tdGroupDescription, tdOwner);
|
|
tbody.appendChild(row);
|
|
|
|
let edit_group_action = () => {
|
|
create_edit_group(g);
|
|
};
|
|
|
|
tdGroupName.addEventListener("click", edit_group_action);
|
|
tdGroupDescription.addEventListener("click", edit_group_action);
|
|
tdOwner.addEventListener("click", edit_group_action);
|
|
}
|
|
});
|
|
}
|
|
|
|
let EDITED_GROUP = null;
|
|
|
|
function create_edit_group(group = null) {
|
|
let update = group !== null;
|
|
|
|
EDITED_GROUP = group;
|
|
|
|
let groupnameF = document.getElementById("groupname");
|
|
let group_descriptionF = document.getElementById("group_description");
|
|
let submit_btn = document.getElementById("group_editor_submit_btn");
|
|
let group_ownerF = document.getElementById("group_owner");
|
|
let group_editorsF = document.getElementById("group_editors");
|
|
let group_membersF = document.getElementById("group_members");
|
|
|
|
if (!update) { // create a new group
|
|
groupnameF.value = "";
|
|
group_descriptionF.value = "";
|
|
submit_btn.value = "Létrehozás"
|
|
group_ownerF.value = USERDATA["nickname"];
|
|
group_ownerF.readOnly = true;
|
|
group_editorsF.value = "";
|
|
group_membersF.value = "";
|
|
hide("group_editor_additional_fields");
|
|
} else { // update and existing one
|
|
groupnameF.value = group["groupname"];
|
|
group_descriptionF.value = group["description"];
|
|
submit_btn.value = "Mentés"
|
|
group_ownerF.value = group["owner"];
|
|
group_ownerF.readOnly = false;
|
|
group_editorsF.value = group["editors"].join(", ");
|
|
group_membersF.value = group["users"].join(", ");
|
|
show("group_editor_additional_fields");
|
|
}
|
|
|
|
submit_btn.onclick = () => {
|
|
let groupname = document.getElementById("groupname").value.trim();
|
|
if (groupname !== "") {
|
|
let req = {
|
|
action: update ? "update_group" : "create_group",
|
|
groupname: groupname,
|
|
description: group_descriptionF.value.trim(),
|
|
editors: group_editorsF.value.trim()
|
|
};
|
|
if (update) {
|
|
req["id"] = group["_id"];
|
|
req["owner"] = group_ownerF.value
|
|
}
|
|
request(req).then(resp => {
|
|
list_all_groups();
|
|
});
|
|
hide("group_editor_window");
|
|
}
|
|
};
|
|
|
|
show("group_editor_window");
|
|
}
|
|
|
|
function get_selected_groups() {
|
|
let selected_chkboxes = document.getElementsByName("group_chkbox");
|
|
let selected_groups = [];
|
|
selected_chkboxes.forEach((chkbox) => {
|
|
if (chkbox.checked) {
|
|
selected_groups.push(chkbox.group);
|
|
}
|
|
});
|
|
return selected_groups;
|
|
}
|
|
|
|
function delete_groups() {
|
|
let groups = get_selected_groups();
|
|
if (groups.length === 0) {
|
|
return;
|
|
}
|
|
|
|
let group_names = [];
|
|
let group_ids = [];
|
|
groups.forEach((g) => {
|
|
group_names.push(g["groupname"]);
|
|
group_ids.push(g["_id"]);
|
|
});
|
|
let msg = "Biztosan törölni kívánja a következő csoporto(ka)t?\n\n" + group_names.join(", ") + "\n\n"
|
|
+ "A törlés nem vonható vissza!";
|
|
if (confirm(msg)) {
|
|
let req = {action: "delete_groups", ids: group_ids.join(",")};
|
|
request(req).then(resp => {
|
|
list_all_groups();
|
|
});
|
|
}
|
|
}
|
|
|
|
function print_group_name(group_data) {
|
|
let record = group_data["groupname"];
|
|
if (!group_data["unique"]) {
|
|
record += "#" + group_data["_id"];
|
|
}
|
|
return record;
|
|
}
|
|
|
|
let MEMBER_ACTION = "";
|
|
|
|
function open_member_change_window(action) {
|
|
MEMBER_ACTION = action;
|
|
let winCap = document.getElementById("member_manager_window_title");
|
|
|
|
// print window title
|
|
if (action === "add") {
|
|
winCap.innerText = "Tagok hozzáadása";
|
|
} else if (action === "remove") {
|
|
winCap.innerText = "Tagok eltávolítása";
|
|
}
|
|
|
|
show("member_manager_window");
|
|
}
|
|
|
|
function change_group_members() {
|
|
let userListTA = document.getElementById("add_remove_member_area");
|
|
|
|
let req = {
|
|
action: "change_group_members",
|
|
groupid: EDITED_GROUP["_id"],
|
|
add: [],
|
|
remove: []
|
|
};
|
|
|
|
if (MEMBER_ACTION === "add") {
|
|
req["add"] = userListTA.value;
|
|
} else if (MEMBER_ACTION === "remove") {
|
|
req["remove"] = userListTA.value;
|
|
}
|
|
|
|
request(req).then(resp => {
|
|
userListTA.value = "";
|
|
hide("member_manager_window");
|
|
hide("group_editor_window");
|
|
list_all_groups();
|
|
});
|
|
} |