- Add 4-step progress modal to config apply flow (validate, write, reload, services ready) - Poll SSE-updated data-share-health attributes to detect when services finish restarting - Fix stale health bug: recalculate health for affected shares based on actual mount success instead of preserving old health from before reload - Add modal overlay/card/step CSS matching the dark theme - Include connection refactor (multi-protocol support) and probe helpers from prior work Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
44 lines
2.0 KiB
HTML
44 lines
2.0 KiB
HTML
<div id="share-rows" hx-swap-oob="innerHTML:#share-rows">
|
|
<div class="cards">
|
|
{% for share in shares %}
|
|
<div class="card" style="cursor:pointer" data-share-health="{{ share.health }}"
|
|
hx-get="/tabs/shares?expand={{ share.name }}" hx-target="#tab-content" hx-swap="innerHTML"
|
|
@click="activeTab = 'shares'">
|
|
<div class="card-header">
|
|
<h2>{{ share.name }}</h2>
|
|
<div>
|
|
{% if share.health == "OK" %}
|
|
<span class="badge badge-ok">OK</span>
|
|
{% elif share.health == "FAILED" %}
|
|
<span class="badge badge-error" title="{{ share.health_message }}">FAILED</span>
|
|
{% elif share.health == "PROBING" %}
|
|
<span class="badge badge-warn">PROBING</span>
|
|
{% else %}
|
|
<span class="badge badge-warn">PENDING</span>
|
|
{% endif %}
|
|
{% if share.read_only %}
|
|
<span class="badge badge-ro">RO</span>
|
|
{% endif %}
|
|
{% if share.warmup_state == "running" %}
|
|
<span class="badge badge-warmup">WARMUP {{ share.warmup_done }}/{{ share.warmup_total }}</span>
|
|
{% elif share.warmup_state == "pending" %}
|
|
<span class="badge badge-warmup">WARMUP...</span>
|
|
{% elif share.warmup_state == "complete" %}
|
|
<span class="badge badge-ok">WARMED</span>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
<div class="stats">
|
|
<span><span class="label">Mount:</span> <span class="value">{{ share.mount_point }}</span></span>
|
|
<span><span class="label">Cache:</span> <span class="value">{{ share.cache_display }}</span></span>
|
|
<span><span class="label">Dirty:</span> <span class="value">{{ share.dirty_count }}</span></span>
|
|
<span><span class="label">Speed:</span> <span class="value">{{ share.speed_display }}</span></span>
|
|
</div>
|
|
{% if share.health == "FAILED" %}
|
|
<div class="error-msg">{{ share.health_message }}</div>
|
|
{% endif %}
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
</div>
|