"use strict"; $(document).ready(function () { let api = new ApiCall(); let data = new DataHandler(); let tournamentOptions = new TournamentOptions(data, api) let html = new Html(tournamentOptions); let fuzzy = null; let datatable = null; $('#gruppenanmeldung-tab').on('shown.bs.tab', function () { if (fuzzy && fuzzy.isInitialized()) return; fuzzy = new FuzzySearch(api); }); $('#singleSubmit').submit(function (event) { event.preventDefault(); let aPlayers = data.getCurrentPlayerArray(); registerPlayers(aPlayers, data.getEmail(), function () { $('#summaryModal').modal("hide"); $('#finishModal').modal('show'); }) }); $('#finishModal').on('hidden.bs.modal', function () { location.reload(); }) function registerPlayers(aPlayers, email, funcCallback) { let aDsbPlayers = [] let aNonDsbPlayers = [] for (let index in aPlayers) { let player = aPlayers[index]; if (!player) continue; if (player.zps) aDsbPlayers.push(player) else aNonDsbPlayers.push(player) } if (aDsbPlayers.length) { let oData = registerDsbPlayers(aDsbPlayers, email) api.registerDsbPlayer(oData, funcCallback) } if (aNonDsbPlayers.length === 1) { let oData = registerNonDsbPlayers(aNonDsbPlayers[0], email) api.registerNewPlayer(oData, funcCallback) } } function registerDsbPlayers(aDsbPlayers, email) { let oSendData = {} oSendData.email = email let players = [] for (let index in aDsbPlayers) { let player = aDsbPlayers[index] let oPlayer = { zps: player.zps, member_nr: player.member_nr || "", group: player.group } players.push(oPlayer) } oSendData.players = players; return oSendData; } function registerNonDsbPlayers(aNonDsbPlayers, email) { let oSendData = {} oSendData.email = email oSendData.player = { last_name: aNonDsbPlayers.last_name, first_name: aNonDsbPlayers.first_name, sex: aNonDsbPlayers.sex, birth_year: aNonDsbPlayers.birth_year, group: aNonDsbPlayers.group, club_name: aNonDsbPlayers.club_name || "" } return oSendData; } if (datatable === null) { datatable = $('#clubPlayersTable').DataTable({ "language": { "url": "https://cdn.datatables.net/plug-ins/1.10.24/i18n/German.json" }, "paging": true, "bDestroy": true, "responsive": true, "ordering": true, "info": true, "searching": true, "aLengthMenu": [[25, 50, 75, -1], [25, 50, 75, "Alle"]], "iDisplayLength": 25, scrollCollapse: true, scrollY: '80vh', }); } function convertToArray(inputArray) { let outputArray = []; for (let player of inputArray) { let tourneyField = "" let isRegistered = !!player.group if (player.group) tourneyField = `bereits in ${player.group} angemeldet` else tourneyField = html.addGetTournamentDropdown(player) let inputBox = `` let newRow = [ inputBox, player.last_name, player.first_name, player.sex.toUpperCase(), player.birth_year, tourneyField, ]; outputArray.push(newRow); } return outputArray; } $('#clubSubmit').submit(function (event) { event.preventDefault(); let aPlayers = data.getCurrentPlayerArray(); registerPlayers(aPlayers, data.getClubEmail(), function () { $('#clubSummaryModal').modal("hide"); $('#finishModal').modal('show'); }) }); $('#register').click(function () { data.setModalValues(); $('#summaryModal').modal('show'); }); $('#club_register').click(function () { let aClubPlayers = data.getClubPlayers() html.setClubModalAndShow(aClubPlayers) }); $('#registrationForm').submit(function (event) { event.preventDefault(); html.hideAll(); let formData = { first_name: $('#first_name').val(), last_name: $('#last_name').val(), }; api.searchPlayer(formData, playerSearchPostApiCall) }); $('#groupRegistrationForm').submit(function (event) { event.preventDefault(); let clubZps = { zps: $('select[name=club]').val(), min_birth_year: 2000, max_birth_year: "" } api.getPlayersFromClub(clubZps, clubSearchPostApiCall) }); function clubSearchPostApiCall(success, oErg) { if (success) clubSearchHandleSuccess(oErg) else clubSearchHandleErrors(oErg) } function drawPlayers(aPlayers) { for (let player of aPlayers) { datatable.row.add(player).draw(); } } function clubSearchHandleSuccess(players) { datatable.clear(); drawPlayers(convertToArray(players)); addDropdownMediaQuery(); $('#club_register').prop('disabled', true) setButtonEnable(); $('#clubSearchResults').show(); $('body').resize(); scrollToPosition($('#clubSearchResults').offset().top); } function setButtonEnable() { $('#clubPlayersTable').on('click', function () { setTimeout(function () { let cntChecked = datatable.$('input[name="clubPlayer"]:checked').length if (cntChecked < 0) cntChecked = 0 let buttonDisabled = cntChecked === 0 $('#club_register').prop('disabled', buttonDisabled) }, 100) }) } function addDropdownMediaQuery() { $(window).on('resize', function () { var options = $('.tournament-options') if ($(window).width() < 768) { options.each(function () { $(this).text($(this).val()) }) } else { options.each(function () { $(this).text($(this).attr('name')) }) } }) } function clubSearchHandleErrors(oErg) { $('#clubPlayersTableBody').empty(); $('#clubSearchResults').show(); } function playerSearchPostApiCall(success, oErg) { if (success) playerSearchHandleSuccess(oErg) else playerSearchHandleErrors(oErg) } function playerSearchHandleSuccess(players) { $('#playersTableBody').empty(); players.forEach(function (player) { html.addRowToPlayersTable(player) }); $('#playersTableBody').append(`Nicht gefunden?`); $('#searchResults').show(); scrollToBottom(); } function playerSearchHandleErrors() { $('#playersTableBody').empty(); $('#playersTableBody').append(`Nicht gefunden?`); $('#searchResults').show(); scrollToBottom(); } $(document).on('change', 'input[name="selectedPlayer"]', function () { let selectedBirthYear = $(this).val(); if (selectedBirthYear === "newPlayer") { html.addPlayerNotFound(); tournamentOptions.hide() } else { $('#playersNotFoundTableBody').empty(); tournamentOptions.show() } scrollToBottom(); }); $(document).on('click', 'tr', function () { let radioButton = $(this).find('input[type="radio"]'); let checkbox = $(this).find('input[type="checkbox"]'); if (radioButton.length > 0 && !radioButton.prop('disabled')) { radioButton.prop('checked', true); radioButton.trigger('change'); } else if (checkbox.length > 0 && !checkbox.prop('disabled')) { let isChecked = checkbox.prop('checked') checkbox.prop('checked', !isChecked); checkbox.trigger('change'); } }); $(document).on('click', 'select', function (event) { event.stopPropagation(); }); $(document).on('click', 'input[type="checkbox"]', function (event) { event.stopPropagation(); }); }); function scrollToBottom() { scrollToPosition($(document).height()) } function scrollToPosition(height) { $("html, body").animate({ scrollTop: height }, 1000); }