SpreadQuiz/js/groupmgr.js
2024-03-18 07:19:50 +01:00

125 lines
4.3 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);
}
});
}
function create_edit_group(group = null) {
let update = group !== null;
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"];
}
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;
}