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"); let group_gamesF = document.getElementById("group_games"); 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 = ""; group_gamesF.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(", "); group_gamesF.value = group["games"].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"]; let seqNumStyle = (group_data["unique"]) ? "style='color:lightgray'" : ""; record += `#` + group_data["_id"] + ``; return record; } let ACTION = ""; let TYPE = "" function open_element_change_window(action, type) { ACTION = action; TYPE = type; let winCap = document.getElementById("element_manager_window_title"); let typeStr = (type === "member") ? "Tagok" : "Játékok"; let opStr = (action === "add") ? "hozzáadása" : "eltávolítása"; // print window title winCap.innerText = typeStr + " " + opStr; show("element_manager_window"); } function change_group_elements() { let elementListTA = document.getElementById("add_remove_element_area"); let req = { action: `change_group_${TYPE}s`, groupid: EDITED_GROUP["_id"], add: [], remove: [] }; if (ACTION === "add") { req["add"] = elementListTA.value; } else if (ACTION === "remove") { req["remove"] = elementListTA.value; } request(req).then(resp => { elementListTA.value = ""; hide("element_manager_window"); hide("group_editor_window"); list_all_groups(); }); }