Add Maybe option for Max

This commit is contained in:
Greg 2025-05-11 12:34:21 +02:00
parent b5d94aa59b
commit 9a60227243
2 changed files with 23 additions and 8 deletions

9
app.py
View File

@ -18,10 +18,14 @@ class Date(db.Model):
date_str = db.Column(db.String(20), nullable=False, unique=True) # e.g. '08/05/25'
class Attendance(db.Model):
"""
Attendance record for a player on a date.
status: 'yes', 'no', 'maybe', or blank (None)
"""
id = db.Column(db.Integer, primary_key=True)
date_id = db.Column(db.Integer, db.ForeignKey('date.id'), nullable=False)
player_id = db.Column(db.Integer, db.ForeignKey('player.id'), nullable=False)
status = db.Column(db.String(10), nullable=False) # 'yes' or 'no'
status = db.Column(db.String(10)) # 'yes', 'no', 'maybe', or blank
__table_args__ = (db.UniqueConstraint('date_id', 'player_id', name='_date_player_uc'),)
@ -96,7 +100,8 @@ def json_to_db(data):
if status:
player = Player.query.filter_by(name=player_name).first()
if player:
db.session.add(Attendance(date_id=date.id, player_id=player.id, status='yes' if status is True else 'no'))
# Save status as 'yes', 'no', or 'maybe'
db.session.add(Attendance(date_id=date.id, player_id=player.id, status=('yes' if status is True else status if status in ['no', 'maybe'] else None))
guest_name = data.get("guestNames", {}).get(date_str)
if guest_name:
db.session.add(GuestName(date_id=date.id, name=guest_name))

View File

@ -103,14 +103,18 @@ function renderTable() {
if (data.attendance[key] === true) {
td.innerText = 'Yes';
td.classList.add('yes');
td.classList.remove('no');
td.classList.remove('no', 'maybe');
} else if (data.attendance[key] === 'no') {
td.innerText = 'No';
td.classList.add('no');
td.classList.remove('yes');
td.classList.remove('yes', 'maybe');
} else if (data.attendance[key] === 'maybe') {
td.innerText = 'Maybe';
td.classList.add('maybe');
td.classList.remove('yes', 'no');
} else {
td.innerText = '';
td.classList.remove('yes', 'no');
td.classList.remove('yes', 'no', 'maybe');
}
td.onclick = () => {
if (!data.attendance[key]) {
@ -118,20 +122,26 @@ function renderTable() {
} else if (data.attendance[key] === true) {
data.attendance[key] = 'no';
} else if (data.attendance[key] === 'no') {
data.attendance[key] = 'maybe';
} else if (data.attendance[key] === 'maybe') {
delete data.attendance[key];
}
// Immediately update the cell UI
if (data.attendance[key] === true) {
td.innerText = 'Yes';
td.classList.add('yes');
td.classList.remove('no');
td.classList.remove('no', 'maybe');
} else if (data.attendance[key] === 'no') {
td.innerText = 'No';
td.classList.add('no');
td.classList.remove('yes');
td.classList.remove('yes', 'maybe');
} else if (data.attendance[key] === 'maybe') {
td.innerText = 'Maybe';
td.classList.add('maybe');
td.classList.remove('yes', 'no');
} else {
td.innerText = '';
td.classList.remove('yes', 'no');
td.classList.remove('yes', 'no', 'maybe');
}
saveData();
};