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