Add Maybe option for Max
This commit is contained in:
parent
b5d94aa59b
commit
9a60227243
9
app.py
9
app.py
@ -18,10 +18,14 @@ class Date(db.Model):
|
|||||||
date_str = db.Column(db.String(20), nullable=False, unique=True) # e.g. '08/05/25'
|
date_str = db.Column(db.String(20), nullable=False, unique=True) # e.g. '08/05/25'
|
||||||
|
|
||||||
class Attendance(db.Model):
|
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)
|
id = db.Column(db.Integer, primary_key=True)
|
||||||
date_id = db.Column(db.Integer, db.ForeignKey('date.id'), nullable=False)
|
date_id = db.Column(db.Integer, db.ForeignKey('date.id'), nullable=False)
|
||||||
player_id = db.Column(db.Integer, db.ForeignKey('player.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'),)
|
__table_args__ = (db.UniqueConstraint('date_id', 'player_id', name='_date_player_uc'),)
|
||||||
|
|
||||||
@ -96,7 +100,8 @@ def json_to_db(data):
|
|||||||
if status:
|
if status:
|
||||||
player = Player.query.filter_by(name=player_name).first()
|
player = Player.query.filter_by(name=player_name).first()
|
||||||
if player:
|
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)
|
guest_name = data.get("guestNames", {}).get(date_str)
|
||||||
if guest_name:
|
if guest_name:
|
||||||
db.session.add(GuestName(date_id=date.id, name=guest_name))
|
db.session.add(GuestName(date_id=date.id, name=guest_name))
|
||||||
|
|||||||
@ -103,14 +103,18 @@ function renderTable() {
|
|||||||
if (data.attendance[key] === true) {
|
if (data.attendance[key] === true) {
|
||||||
td.innerText = 'Yes';
|
td.innerText = 'Yes';
|
||||||
td.classList.add('yes');
|
td.classList.add('yes');
|
||||||
td.classList.remove('no');
|
td.classList.remove('no', 'maybe');
|
||||||
} else if (data.attendance[key] === 'no') {
|
} else if (data.attendance[key] === 'no') {
|
||||||
td.innerText = 'No';
|
td.innerText = 'No';
|
||||||
td.classList.add('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 {
|
} else {
|
||||||
td.innerText = '';
|
td.innerText = '';
|
||||||
td.classList.remove('yes', 'no');
|
td.classList.remove('yes', 'no', 'maybe');
|
||||||
}
|
}
|
||||||
td.onclick = () => {
|
td.onclick = () => {
|
||||||
if (!data.attendance[key]) {
|
if (!data.attendance[key]) {
|
||||||
@ -118,20 +122,26 @@ function renderTable() {
|
|||||||
} else if (data.attendance[key] === true) {
|
} else if (data.attendance[key] === true) {
|
||||||
data.attendance[key] = 'no';
|
data.attendance[key] = 'no';
|
||||||
} else if (data.attendance[key] === 'no') {
|
} else if (data.attendance[key] === 'no') {
|
||||||
|
data.attendance[key] = 'maybe';
|
||||||
|
} else if (data.attendance[key] === 'maybe') {
|
||||||
delete data.attendance[key];
|
delete data.attendance[key];
|
||||||
}
|
}
|
||||||
// Immediately update the cell UI
|
// Immediately update the cell UI
|
||||||
if (data.attendance[key] === true) {
|
if (data.attendance[key] === true) {
|
||||||
td.innerText = 'Yes';
|
td.innerText = 'Yes';
|
||||||
td.classList.add('yes');
|
td.classList.add('yes');
|
||||||
td.classList.remove('no');
|
td.classList.remove('no', 'maybe');
|
||||||
} else if (data.attendance[key] === 'no') {
|
} else if (data.attendance[key] === 'no') {
|
||||||
td.innerText = 'No';
|
td.innerText = 'No';
|
||||||
td.classList.add('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 {
|
} else {
|
||||||
td.innerText = '';
|
td.innerText = '';
|
||||||
td.classList.remove('yes', 'no');
|
td.classList.remove('yes', 'no', 'maybe');
|
||||||
}
|
}
|
||||||
saveData();
|
saveData();
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user