From 5a17701a05a1d755732d5a87ab313d8fc21f4821 Mon Sep 17 00:00:00 2001 From: Yvo Date: Wed, 28 May 2025 08:53:41 +0200 Subject: [PATCH 1/4] Update speakers.md handle type error when avatar is blank. --- content/events/2025-amsterdam/speakers.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/content/events/2025-amsterdam/speakers.md b/content/events/2025-amsterdam/speakers.md index c7b45c6f65c..9f1c4266ea7 100644 --- a/content/events/2025-amsterdam/speakers.md +++ b/content/events/2025-amsterdam/speakers.md @@ -38,10 +38,15 @@ Description = "Meet our speakers for DevOpsDays Amsterdam 2025" let talk = document.createElement('a'); name.innerHTML = `${speaker.name}`; - pic.src = speaker.avatar.length != 0 ? `${speaker.avatar}`: '/img/speaker-default.jpg'; + + // Robust check for avatar property + pic.src = typeof speaker.avatar === "string" && speaker.avatar.trim().length > 0 + ? speaker.avatar + : '/img/speaker-default.jpg'; + pic.className = `speakers-page`; bio.innerHTML = `About ${speaker.name}

${speaker.biography ? `${speaker.biography}`: `Ipsum`}

`; - talk.setAttribute('href', speaker.submissions[0] ? `https://talks.devopsdays.org/devopsdays-amsterdam-2025/talk/${speaker.submissions[0]}` : ``); + talk.setAttribute('href', speaker.submissions && speaker.submissions[0] ? `https://talks.devopsdays.org/devopsdays-amsterdam-2025/talk/${speaker.submissions[0]}` : ``); talk.setAttribute('target', '_blank'); talk.className = `btn btn-primary`; talk.innerHTML = `Link to talk`; @@ -59,4 +64,4 @@ Description = "Meet our speakers for DevOpsDays Amsterdam 2025" .finally(() => { ul.appendChild(list); }); - \ No newline at end of file + From 888b97e8ab7e232aef965092fa966e47f46aa20b Mon Sep 17 00:00:00 2001 From: Yvo Date: Wed, 28 May 2025 09:02:19 +0200 Subject: [PATCH 2/4] Update speakers.md additional update --- content/events/2025-amsterdam/speakers.md | 57 +++++++++++++---------- 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/content/events/2025-amsterdam/speakers.md b/content/events/2025-amsterdam/speakers.md index 9f1c4266ea7..e8948ffe9ae 100644 --- a/content/events/2025-amsterdam/speakers.md +++ b/content/events/2025-amsterdam/speakers.md @@ -20,48 +20,57 @@ Description = "Meet our speakers for DevOpsDays Amsterdam 2025" const url = 'https://talks.devopsdays.org/api/events/devopsdays-amsterdam-2025/speakers/?limit=50'; fetch(url) - .then((response) => { - return response.json(); - }) + .then((response) => response.json()) .then((data) => { let speakers = data.results; - console.log(speakers); - speakers.map(function(speaker) { + speakers.forEach(function(speaker) { let li = document.createElement('div'); - li.className = `col-lg-3 col-md-6 p-3`; - let name = document.createElement('h3'); - let pic = document.createElement('img'); - let bio = document.createElement('details'); - bio.className = `p-1`; - let talk = document.createElement('a'); + li.className = 'col-lg-3 col-md-6 p-3'; - name.innerHTML = `${speaker.name}`; + let name = document.createElement('h3'); + name.textContent = speaker.name; - // Robust check for avatar property - pic.src = typeof speaker.avatar === "string" && speaker.avatar.trim().length > 0 - ? speaker.avatar - : '/img/speaker-default.jpg'; + let pic = document.createElement('img'); + pic.className = 'speakers-page'; + pic.src = + (typeof speaker.avatar === 'string' && speaker.avatar.trim().length > 0) + ? speaker.avatar + : '/img/speaker-default.jpg'; - pic.className = `speakers-page`; - bio.innerHTML = `About ${speaker.name}

${speaker.biography ? `${speaker.biography}`: `Ipsum`}

`; - talk.setAttribute('href', speaker.submissions && speaker.submissions[0] ? `https://talks.devopsdays.org/devopsdays-amsterdam-2025/talk/${speaker.submissions[0]}` : ``); - talk.setAttribute('target', '_blank'); - talk.className = `btn btn-primary`; - talk.innerHTML = `Link to talk`; + let bio = document.createElement('details'); + bio.className = 'p-1'; + bio.innerHTML = + `About ${speaker.name}

${ + speaker.biography ? speaker.biography : 'Ipsum' + }

`; li.appendChild(name); li.appendChild(pic); li.appendChild(bio); - li.appendChild(talk); + + if ( + Array.isArray(speaker.submissions) && + speaker.submissions.length > 0 && + speaker.submissions[0] + ) { + let talk = document.createElement('a'); + talk.href = `https://talks.devopsdays.org/devopsdays-amsterdam-2025/talk/${speaker.submissions[0]}`; + talk.target = '_blank'; + talk.className = 'btn btn-primary'; + talk.textContent = 'Link to talk'; + li.appendChild(talk); + } + list.appendChild(li); }); }) .catch(function(error) { - console.log(error); + console.error('Error fetching speaker data:', error); }) .finally(() => { ul.appendChild(list); }); + From bb7313112f4cf801024d1c7efd0ed7366aebc7ec Mon Sep 17 00:00:00 2001 From: Yvo Date: Wed, 28 May 2025 10:00:48 +0200 Subject: [PATCH 3/4] Change avatar to avatar_url due to API changes upstream --- content/events/2025-amsterdam/speakers.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/events/2025-amsterdam/speakers.md b/content/events/2025-amsterdam/speakers.md index e8948ffe9ae..014ffbd0746 100644 --- a/content/events/2025-amsterdam/speakers.md +++ b/content/events/2025-amsterdam/speakers.md @@ -35,8 +35,8 @@ Description = "Meet our speakers for DevOpsDays Amsterdam 2025" let pic = document.createElement('img'); pic.className = 'speakers-page'; pic.src = - (typeof speaker.avatar === 'string' && speaker.avatar.trim().length > 0) - ? speaker.avatar + (typeof speaker.avatar_url === 'string' && speaker.avatar_url.trim().length > 0) + ? speaker.avatar_url : '/img/speaker-default.jpg'; let bio = document.createElement('details'); From 77bbe1043ae080e72f7b98de7f6e47b0d500a5dc Mon Sep 17 00:00:00 2001 From: Yvo Date: Wed, 28 May 2025 11:13:33 +0200 Subject: [PATCH 4/4] Update URL, change method from limit to page per docs. --- content/events/2025-amsterdam/speakers.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/content/events/2025-amsterdam/speakers.md b/content/events/2025-amsterdam/speakers.md index 014ffbd0746..e9a8e9050b4 100644 --- a/content/events/2025-amsterdam/speakers.md +++ b/content/events/2025-amsterdam/speakers.md @@ -9,7 +9,7 @@ Description = "Meet our speakers for DevOpsDays Amsterdam 2025"
JavaScript is disabled in your browser. To access our speaker list without JavaScript, - please click here. + please click here.
@@ -17,7 +17,7 @@ Description = "Meet our speakers for DevOpsDays Amsterdam 2025"