Add API endpoint to clear status and update UI with hints for golden image handling in eMMC provisioning dashboard
This commit is contained in:
@@ -151,6 +151,22 @@ def api_status():
|
||||
return jsonify(read_status())
|
||||
|
||||
|
||||
@app.route("/api/status-clear", methods=["POST"])
|
||||
def api_status_clear():
|
||||
"""Reset status to idle (e.g. to dismiss a 'Golden image not found' error so you can try again)."""
|
||||
try:
|
||||
with open(STATUS_FILE, "w") as f:
|
||||
json.dump({
|
||||
"phase": "idle",
|
||||
"message": DEFAULT_STATUS["message"],
|
||||
"progress": None,
|
||||
"updated": None,
|
||||
}, f)
|
||||
return jsonify({"ok": True})
|
||||
except (PermissionError, OSError):
|
||||
return jsonify({"ok": False, "error": "Could not write status"}), 500
|
||||
|
||||
|
||||
@app.route("/api/log")
|
||||
def api_log():
|
||||
return jsonify({"log": read_log_tail()})
|
||||
|
||||
@@ -368,6 +368,10 @@
|
||||
<span id="statusMsg" class="status-msg">Waiting for device</span>
|
||||
</div>
|
||||
<div id="statusErr" class="status-err" style="display:none;"></div>
|
||||
<div id="statusGoldenHint" class="backup-deploy-hint" style="display:none; margin-top:0.75rem;">
|
||||
No golden image is required to <strong>capture</strong>. Connect a device in USB boot mode (or register over network); when it appears under “Capture image or deploy”, click <strong>Backup</strong> to save its image. Then set that backup as golden in the list below.
|
||||
<button type="button" id="statusClearBtn" class="btn btn-outline btn-sm" style="margin-left:0.5rem;">Clear message</button>
|
||||
</div>
|
||||
<div id="statusMeta" class="status-meta" style="display:none;"></div>
|
||||
<div id="progressWrap" class="progress-track" style="display:none;">
|
||||
<div id="progressFill" class="progress-fill"></div>
|
||||
@@ -467,6 +471,12 @@
|
||||
statusErr.style.display = 'none';
|
||||
}
|
||||
|
||||
var goldenHint = document.getElementById('statusGoldenHint');
|
||||
if (goldenHint) {
|
||||
var isGoldenError = phase === 'error' && /golden|Golden image/i.test((data.error || '') + (data.message || ''));
|
||||
goldenHint.style.display = isGoldenError ? 'block' : 'none';
|
||||
}
|
||||
|
||||
if (data.updated) {
|
||||
statusMeta.textContent = 'Updated ' + data.updated;
|
||||
statusMeta.style.display = 'block';
|
||||
@@ -670,6 +680,10 @@
|
||||
return d.innerHTML;
|
||||
}
|
||||
|
||||
document.getElementById('statusClearBtn').addEventListener('click', function() {
|
||||
fetch('/api/status-clear', { method: 'POST' }).then(function(r) { return r.json(); }).then(function(d) { if (d.ok) fetchStatus(); });
|
||||
});
|
||||
|
||||
fetchStatus();
|
||||
fetchLog();
|
||||
fetchPending();
|
||||
|
||||
Reference in New Issue
Block a user