let endpointTrainingTimes = ''; let endpointTrainingTeam = ''; let category = ''; if (location.hostname !== '') { endpointTrainingTimes = location.origin + '/wp-json/wp/v2/trainingszeiten?per_page=50'; endpointTrainingTeam = location.origin + '/wp-json/wp/v2/team?per_page=50'; category = location.pathname.replace(/\//g, ''); } else { endpointTrainingTimes = 'https://static.sv-leobendorf.de/training-overview/training-times-test-data.json'; endpointTrainingTeam ='https://static.sv-leobendorf.de/training-overview/training-team-{teamId}.json'; category = 'fussball'; } fetchTrainingTimesData(); function fetchTrainingTimesData() { fetch(endpointTrainingTimes) .then(response => { return response.json(); }) .then(data => { let trainingTimesData = data; return fillTrainings(trainingTimesData); }).then((trainings) => { fillTrainingOverview(trainings); }) .catch(err => { console.error(err) }) } async function fetchTrainingTeamData() { let trainingTeams = []; const response = await fetch(endpointTrainingTeam); const data = await response.json(); for (let i = 0; i < data.length; i++) { const team = data[i]; trainingTeams[team.id] = team.name; } return trainingTeams; } async function fillTrainings(trainingTimesData) { let trainings = { 'monday': [], 'tuesday': [], 'wednesday': [], 'thursday': [], 'friday': [], 'saturday': [], 'sunday': [] }; await fetchTrainingTeamData() .then(trainingTeams => { for (let i = 0; i < trainingTimesData.length; i++) { const training = trainingTimesData[i]; const numberOfTrainings = parseInt(training.acf.training_per_week); // console.log(training); if (training.slug.startsWith(category)) { let teams = ''; for (let y = 0; y < training.team.length; y++) { teams += trainingTeams[training.team[y]]; if (y < (training.team.length - 1)) { teams += ', '; } } if (teams === '[Fußball] 1. Herren, [Fußball] 2. Herren') { teams = 'Herren'; } if (training.acf.hasOwnProperty('training_1') && training.acf.training_1.training_start_time !== '') { trainings[training.acf.training_1.training_weekday].push(generateNewTraining(training.acf.training_1, teams)); } if (numberOfTrainings > 1 && training.acf.hasOwnProperty('training_2') && training.acf.training_2.training_start_time !== '') { trainings[training.acf.training_2.training_weekday].push(generateNewTraining(training.acf.training_2, teams)); } if (numberOfTrainings > 2 && training.acf.hasOwnProperty('training_3') && training.acf.training_3.training_start_time !== '') { trainings[training.acf.training_3.training_weekday].push(generateNewTraining(training.acf.training_3, teams)); } } } return trainings; }).catch(err => { console.error(err) }) return trainings; } function fillTrainingOverview(trainings) { for (const [day, dayTrainings] of Object.entries(trainings)) { let trainingsWrapper = document.getElementById('svl-training-' + day); const sortedDayTrainings = sortDayTrainingsByStartTime(dayTrainings); for (let i = 0; i < sortedDayTrainings.length; i++) { let trainingBox = generateTrainingBox(sortedDayTrainings[i]); trainingsWrapper.innerHTML = trainingsWrapper.innerHTML + trainingBox; } } } function sortDayTrainingsByStartTime(dayTrainings) { dayTrainings.sort(function (a, b) { return a.time.localeCompare(b.time); }); return dayTrainings; } function generateNewTraining(training, team) { let startTime = training.training_start_time.trim(); let endTime = training.training_end_time.trim(); let newTraining = { team: team.replace(/\[(.+?)\]/g, '').trim(), time: endTime !== '' ? startTime + ' - ' + endTime : startTime, location: training.training_location.replace('Sportplatz', '').replace('Tennisplatz', '').trim() }; return newTraining; } function generateTrainingBox(training) { let trainingBox = '