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; }