"use strict"; $(document).ready(function () { let api = new ApiCall(); $.fn.dataTable.moment('DD.MM.YYYY'); var table = $('#participants-table').DataTable({ "language": { "url": "https://cdn.datatables.net/plug-ins/1.10.24/i18n/German.json" }, "paging": true, "responsive": true, "ordering": true, "info": true, "searching": true, "aLengthMenu": [[25, 50, 75, -1], [25, 50, 75, "Alle"]], "iDisplayLength": 25, scrollCollapse: true, scrollY: '80vh', }); updatePlayersList("total"); function setCountToButtons(oGroups) { const sumValues = Object.values(oGroups).reduce((a, b) => a + b, 0); $('.categories button').each(function (index) { let btnName = $(this).attr('name'); let dropdownEntry = $(`.dropdown-item[name="${btnName}"]`) let btnText = ""; if (btnName === "total") { btnText = `Gesamt (${sumValues})` } else { btnText = `${btnName} (${oGroups[btnName]})` } $(this).text(btnText) dropdownEntry.text(btnText) }) } function drawPlayers(table, aPlayers) { for (let player of aPlayers) { table.row.add(player).draw(); } } function loadRegisteredPlayers(group, funcCallback) { api.getCountRegistered(function (success, oGroups) { setCountToButtons(oGroups) return api.getRegisteredPlayers(group, funcCallback); }) } function convertToArray(inputArray) { let outputArray = []; for (let i = 0; i < inputArray.length; i++) { let obj = inputArray[i]; let date = new Date(obj.signup_date) const day = String(date.getUTCDate()).padStart(2, '0'); const month = String(date.getUTCMonth() + 1).padStart(2, '0'); const year = date.getUTCFullYear(); const formattedDate = `${day}.${month}.${year}`; let nameString = obj.fide_title ? (obj.fide_title + " ") : "" nameString += obj.last_name let newRow = [ (i + 1).toString(), nameString, obj.first_name, obj.club_name || "vereinslos", obj.dwz || "", obj.group.toUpperCase(), obj.sex.toUpperCase(), formattedDate, obj.birth_year, ]; outputArray.push(newRow); } return outputArray; } $('.categories button').on('click', function () { let groupName = $(this).attr('name'); updatePlayersList(groupName); }) function updateButtonState(groupName) { $(".categories .btn").each(function () { if ($(this).attr('name') === groupName) { $(this).removeClass("btn-secondary").addClass("btn-ske-submit"); } else $(this).removeClass("btn-ske-submit").addClass("btn-secondary"); }); } $('.dropdown-item').on('click', function (e) { e.preventDefault(); let groupName = $(this).attr('name'); updatePlayersList(groupName); }); function setDropdown(groupName) { var $dropdownItem = $(`.dropdown-menu .dropdown-item[name="${groupName}"]`); let btnText = $dropdownItem.text() $('#categoriesDropdown').text(btnText); } function updatePlayersList(groupName) { let group = groupName if (groupName === "total") { group = "" } loadRegisteredPlayers({ group }, function (success, aPlayers) { updateButtonState(groupName) setDropdown(groupName) table.clear(); drawPlayers(table, convertToArray(aPlayers)); }); } });