174 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			174 lines
		
	
	
		
			5.6 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");
 | 
						|
    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 += `<span ${seqNumStyle}>#` + group_data["_id"] + `</span>`;
 | 
						|
    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();
 | 
						|
    });
 | 
						|
} |