Some improvments
This commit is contained in:
61
js/main.js
61
js/main.js
@@ -4,19 +4,19 @@
|
||||
// ============================================================
|
||||
|
||||
const SCHEDULE = [
|
||||
{ day: 'Monday', when: '8:30 pm', venue: 'Webe Coffee', social: 'BOM', music: '8 Bachata · 1 Salsa · 1 Kizomba', city: 'Da Nang', organizer: 'Luu Phuong & Shai', mapUrl: 'https://maps.app.goo.gl/jvaQgcNt4doYwZ2N7' },
|
||||
{ day: 'Tuesday', when: '9 pm', venue: 'La Riva', social: 'Latino Dancing', music: '2 Salsa · 2 Bachata · 2 Kizomba', city: 'Hoi An', organizer: 'David Tavares', mapUrl: 'https://www.google.com/maps/search/?api=1&query=La+Riva+An+Bang+Hoi+An+Vietnam' },
|
||||
{ day: 'Tuesday', when: '9 pm', venue: 'Caliz Bar', social: 'Sensual Night', music: '3 Bachata · 2 Salsa · 2 Kizomba', city: 'Da Nang', organizer: 'Daisy Nguyen', mapUrl: 'https://www.google.com/maps/place/C%C3%A1liz+Wine+Bar/@16.0485026,108.2470699,17z' },
|
||||
{ day: 'Wednesday', when: '7:30 pm', venue: 'Ket Fai Bar', social: 'Bachata Kiz Night', music: 'Kizomba 7:30 · Bachata 9 pm', city: 'Da Nang', organizer: 'Sean Kim', mapUrl: 'https://www.google.com/maps/search/?api=1&query=Ket+Fai+Bar+Da+Nang+Vietnam' },
|
||||
{ day: 'Thursday', when: '9 pm', venue: 'Malibu', social: 'Salsa Nights', music: '2 Salsa · 2 Bachata', city: 'Da Nang', organizer: 'Lucho Giraldes', mapUrl: 'https://www.google.com/maps/search/?api=1&query=Malibu+Beach+Club+Da+Nang+Vietnam' },
|
||||
{ day: 'Friday', when: '9 pm', venue: 'An Thuong By Night', social: 'Dance Unity Party', music: '2 Salsa · 2 Bachata · 2 Kizomba', city: 'Da Nang', organizer: 'Nadiya Yagfarova', mapUrl: 'https://www.google.com/maps/search/?api=1&query=An+Thuong+Tourist+Street+Da+Nang+Vietnam' },
|
||||
{ day: 'Saturday', when: '9 pm', venue: 'La Riva', social: 'Latino Dancing', music: '2 Salsa · 2 Bachata · 2 Kizomba', city: 'Hoi An', organizer: 'David Tavares', mapUrl: 'https://www.google.com/maps/search/?api=1&query=La+Riva+An+Bang+Hoi+An+Vietnam' },
|
||||
{ day: 'Saturday', when: '9 pm', venue: 'An Thuong By Night', social: 'Bachata Party', music: 'Only Bachata', city: 'Da Nang', organizer: 'Vaclav & Kseniya', mapUrl: 'https://www.google.com/maps/search/?api=1&query=An+Thuong+Tourist+Street+Da+Nang+Vietnam' },
|
||||
{ day: 'Sunday', when: '9 pm', venue: 'Last Call', social: 'Latin Dance Social', music: '3 Bachata · 2 Salsa', city: 'Da Nang', organizer: 'Vaclav & Kseniya', mapUrl: 'https://www.google.com/maps/search/?api=1&query=Last+Call+Bar+Da+Nang+Vietnam' },
|
||||
{ day: 'Sunday', when: '9 pm', venue: 'Corner Bar', social: 'Sunday Latin', music: '3 Bachata · 2 Salsa · 3 Kizomba', city: 'Da Nang', organizer: 'Daisy Nguyen', mapUrl: 'https://www.google.com/maps/search/?api=1&query=Corner+Bar+Da+Nang+Vietnam' },
|
||||
{ day: 'Monday', when: '8:30 pm', venue: 'Webe Coffee', social: 'BOM', music: '8 Bachata · 1 Salsa · 1 Kizomba', city: 'Da Nang', organizer: 'Luu Phuong & Shai', mapUrl: 'https://maps.app.goo.gl/sznmGXHmiiaWf1ke6' },
|
||||
{ day: 'Tuesday', when: '9 pm', venue: 'La Riva', social: 'Latino Dancing', music: '2 Salsa · 2 Bachata · 2 Kizomba', city: 'Hoi An', organizer: 'David Tavares', mapUrl: 'https://maps.app.goo.gl/3ZyB8icd8oswRghE7' },
|
||||
{ day: 'Tuesday', when: '9 pm', venue: 'Caliz Bar', social: 'Sensual Night', music: '3 Bachata · 2 Salsa · 2 Kizomba', city: 'Da Nang', organizer: 'Daisy Nguyen', mapUrl: 'https://maps.app.goo.gl/YagFKw2gcTJp9PJc7' },
|
||||
{ day: 'Wednesday', when: '7:30 pm', venue: 'Ket Fai Bar', social: 'Bachata Kiz Night', music: 'Kizomba 7:30 · Bachata 9 pm', city: 'Da Nang', organizer: 'Sean Kim', mapUrl: 'https://maps.app.goo.gl/XYxY4UCnnJjCAomK6' },
|
||||
{ day: 'Thursday', when: '9 pm', venue: 'Malibu', social: 'Salsa Nights', music: '2 Salsa · 2 Bachata', city: 'Da Nang', organizer: 'Lucho Giraldes', mapUrl: 'https://maps.app.goo.gl/hZttmc9UcymnKfWP8' },
|
||||
{ day: 'Friday', when: '9 pm', venue: 'An Thuong By Night', social: 'Dance Unity Party', music: '2 Salsa · 2 Bachata · 2 Kizomba', city: 'Da Nang', organizer: 'Nadiya Yagfarova', mapUrl: 'https://maps.app.goo.gl/9cHcJcDgan9ntowt9' },
|
||||
{ day: 'Saturday', when: '9 pm', venue: 'La Riva', social: 'Latino Dancing', music: '2 Salsa · 2 Bachata · 2 Kizomba', city: 'Hoi An', organizer: 'David Tavares', mapUrl: 'https://maps.app.goo.gl/3ZyB8icd8oswRghE7' },
|
||||
{ day: 'Saturday', when: '9 pm', venue: 'An Thuong By Night', social: 'Bachata Party', music: 'Only Bachata', city: 'Da Nang', organizer: 'Vaclav & Kseniya', mapUrl: 'https://maps.app.goo.gl/9cHcJcDgan9ntowt9' },
|
||||
{ day: 'Sunday', when: '9 pm', venue: 'Last Call', social: 'Latin Dance Social', music: '3 Bachata · 2 Salsa', city: 'Da Nang', organizer: 'Vaclav & Kseniya', mapUrl: 'https://maps.app.goo.gl/1tEE4itDEeErhEmG6' },
|
||||
{ day: 'Sunday', when: '9 pm', venue: 'Corner Bar', social: 'Sunday Latin', music: '3 Bachata · 2 Salsa · 3 Kizomba', city: 'Da Nang', organizer: 'Daisy Nguyen', mapUrl: 'https://maps.app.goo.gl/QyuWvCg2DZoFiRyd6' },
|
||||
];
|
||||
|
||||
const DAYS_ORDER = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
|
||||
const DAYS_ORDER = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
|
||||
|
||||
function getTodayName() {
|
||||
return DAYS_ORDER[new Date().getDay()];
|
||||
@@ -38,7 +38,7 @@ function musicToChips(music) {
|
||||
function initNav() {
|
||||
const hamburger = document.getElementById('sfB-hamburger');
|
||||
const mobileNav = document.getElementById('sfB-mobile-nav');
|
||||
const closeBtn = document.getElementById('sfB-mobile-nav-close');
|
||||
const closeBtn = document.getElementById('sfB-mobile-nav-close');
|
||||
|
||||
if (!hamburger || !mobileNav) return;
|
||||
|
||||
@@ -60,10 +60,25 @@ function renderScheduleList() {
|
||||
const list = document.getElementById('sfB-schedule-list');
|
||||
if (!list) return;
|
||||
|
||||
const today = getTodayName();
|
||||
const now = new Date();
|
||||
const todayName = DAYS_ORDER[now.getDay()];
|
||||
const startIdx = DAYS_ORDER.indexOf(todayName);
|
||||
|
||||
// Map each day name to how many days from today it is (0–6)
|
||||
const dayOffset = {};
|
||||
DAYS_ORDER.forEach(name => {
|
||||
dayOffset[name] = (DAYS_ORDER.indexOf(name) - startIdx + 7) % 7;
|
||||
});
|
||||
|
||||
const sorted = [...SCHEDULE].sort((a, b) => dayOffset[a.day] - dayOffset[b.day]);
|
||||
|
||||
list.innerHTML = sorted.map(row => {
|
||||
const isToday = row.day === todayName;
|
||||
const offset = dayOffset[row.day];
|
||||
const date = new Date(now);
|
||||
date.setDate(now.getDate() + offset);
|
||||
const dayNum = `${date.getDate()}/${date.getMonth() + 1}`;
|
||||
|
||||
list.innerHTML = SCHEDULE.map(row => {
|
||||
const isToday = row.day === today;
|
||||
const cityClass = row.city === 'Hoi An' ? 'hoian' : 'danang';
|
||||
const venueEl = row.mapUrl
|
||||
? `<a href="${row.mapUrl}" target="_blank" rel="noopener">${row.venue}</a>`
|
||||
@@ -72,21 +87,23 @@ function renderScheduleList() {
|
||||
return `
|
||||
<div class="sfB-row${isToday ? ' today' : ''}">
|
||||
<div class="col-day">
|
||||
<span class="name">${row.day}</span>
|
||||
<span class="when">${row.when || ''}</span>
|
||||
<div class="day-line">
|
||||
<span class="date-num">${dayNum}</span>
|
||||
<span class="name">${row.day}</span>
|
||||
</div>
|
||||
${isToday ? '<span class="tonight-label">▶ Tonight</span>' : ''}
|
||||
</div>
|
||||
<div class="col-venue">
|
||||
<span class="pin">📍</span>
|
||||
${venueEl}
|
||||
</div>
|
||||
<div class="col-when">${row.when || ''}</div>
|
||||
<div class="col-social">
|
||||
${row.social}
|
||||
<span class="sub">${row.organizer}</span>
|
||||
</div>
|
||||
<div class="col-music">${musicToChips(row.music)}</div>
|
||||
<div class="col-venue">
|
||||
<span class="pin">📍</span>
|
||||
${venueEl}
|
||||
</div>
|
||||
<div><span class="col-city ${cityClass}">${row.city}</span></div>
|
||||
<div class="col-org">${row.organizer}</div>
|
||||
</div>`;
|
||||
}).join('');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user