Add bulk Log Charged action to dashboard toolbar
Select multiple batteries, pick a date, and optionally increment charge cycles for all of them in one shot. Reuses the existing bulk-action form and POST /battery/bulk-action route; no new routes or migrations needed.
This commit is contained in:
@@ -470,6 +470,24 @@ def create_app(config_object="config"):
|
||||
db.commit()
|
||||
label = field_name.replace("_", " ").title()
|
||||
flash(f"Set {label} on {n} batter{'y' if n == 1 else 'ies'}.", "success")
|
||||
elif action == "log_charged":
|
||||
date_val = request.form.get("charged_date", "").strip()
|
||||
if not date_val:
|
||||
flash("Date is required.", "error")
|
||||
return redirect(url_for("dashboard"))
|
||||
increment = 1 if request.form.get("increment_cycles") else 0
|
||||
for b in batteries:
|
||||
db.add(ChargeLog(battery_id=b.id, charged_date=date_val,
|
||||
increment_cycles=increment, notes=None))
|
||||
if increment:
|
||||
b.charge_cycles = (b.charge_cycles or 0) + 1
|
||||
db.commit()
|
||||
flash(
|
||||
f"Logged charge date {date_val} for "
|
||||
f"{n} batter{'y' if n == 1 else 'ies'}"
|
||||
+ (" (+cycles)." if increment else "."),
|
||||
"success",
|
||||
)
|
||||
else:
|
||||
flash("Unknown action.", "error")
|
||||
|
||||
|
||||
@@ -124,6 +124,16 @@
|
||||
<button class="btn btn-sm btn-primary" name="action" value="install_device" type="submit"
|
||||
onclick="return confirmInstallDevice()">Install in device</button>
|
||||
</span>
|
||||
<span style="display:flex;gap:0.35rem;align-items:center;flex-wrap:wrap;">
|
||||
<input type="date" name="charged_date" id="bulk-charged-date"
|
||||
style="padding:0.25rem 0.5rem;font-size:0.85rem;border:1px solid #cbd5e1;border-radius:4px;">
|
||||
<label style="font-size:0.85rem;display:flex;align-items:center;gap:0.25rem;cursor:pointer;">
|
||||
<input type="checkbox" name="increment_cycles" id="bulk-increment-cycles" value="1" checked>
|
||||
+cycle
|
||||
</label>
|
||||
<button class="btn btn-sm btn-primary" name="action" value="log_charged" type="submit"
|
||||
onclick="return validateBulkCharge()">Log Charged</button>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="table-wrap">
|
||||
@@ -349,6 +359,12 @@ document.addEventListener('click', function() {
|
||||
document.getElementById('col-picker-panel').style.display = 'none';
|
||||
});
|
||||
|
||||
function validateBulkCharge() {
|
||||
var d = document.getElementById('bulk-charged-date');
|
||||
if (!d.value) { d.focus(); return false; }
|
||||
return true;
|
||||
}
|
||||
|
||||
function bulkStorageChanged(sel) {
|
||||
var text = document.getElementById('bulk-storage-text');
|
||||
var hidden = document.getElementById('bulk-field-value-storage');
|
||||
|
||||
Reference in New Issue
Block a user