v21: Button spacing and deploy script
- 1px spacing between status buttons - Rounded corners on all buttons - Invisible spacer for consistent row alignment - Added scripts/deploy.sh for auto-incrementing version on deploy Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Executable
+28
@@ -0,0 +1,28 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Deploy script - increments version and relaunches container
|
||||||
|
# Usage: ./scripts/deploy.sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
cd "$(dirname "$0")/.."
|
||||||
|
|
||||||
|
# Extract current version number from templates.go
|
||||||
|
CURRENT=$(grep -o '>v[0-9]*<' templates.go | grep -o '[0-9]*' | head -1)
|
||||||
|
|
||||||
|
if [ -z "$CURRENT" ]; then
|
||||||
|
echo "Could not find version number in templates.go"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Increment version
|
||||||
|
NEW=$((CURRENT + 1))
|
||||||
|
|
||||||
|
# Update templates.go
|
||||||
|
sed -i '' "s/>v${CURRENT}</>v${NEW}</" templates.go
|
||||||
|
|
||||||
|
echo "Version: v${CURRENT} -> v${NEW}"
|
||||||
|
|
||||||
|
# Rebuild and relaunch
|
||||||
|
docker compose up -d --build
|
||||||
|
|
||||||
|
echo "Deployed v${NEW}"
|
||||||
+9
-11
@@ -28,8 +28,8 @@ function initDashboard() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Render status button group
|
// Render status button group
|
||||||
// For domains: pass, hold, skip (+ fail indicator if errors)
|
// For domains: pass, hold, skip (+ fail indicator or spacer)
|
||||||
// For feeds: pass, hold, skip, drop (+ fail indicator if errors)
|
// For feeds: pass, hold, skip, drop (+ fail indicator or spacer)
|
||||||
function renderStatusBtns(currentStatus, type, id, errorStatus) {
|
function renderStatusBtns(currentStatus, type, id, errorStatus) {
|
||||||
const order = type === 'feed' ? ['pass', 'hold', 'skip', 'drop'] : ['pass', 'hold', 'skip'];
|
const order = type === 'feed' ? ['pass', 'hold', 'skip', 'drop'] : ['pass', 'hold', 'skip'];
|
||||||
const showFail = errorStatus === 'error' || errorStatus === 'dead';
|
const showFail = errorStatus === 'error' || errorStatus === 'dead';
|
||||||
@@ -40,24 +40,22 @@ function initDashboard() {
|
|||||||
const bg = isActive ? cfg.bg : cfg.dimBg;
|
const bg = isActive ? cfg.bg : cfg.dimBg;
|
||||||
const color = isActive ? cfg.color : cfg.dimColor;
|
const color = isActive ? cfg.color : cfg.dimColor;
|
||||||
const border = isActive ? cfg.border : '#333';
|
const border = isActive ? cfg.border : '#333';
|
||||||
const isLast = !showFail && i === order.length - 1;
|
|
||||||
const borderRadius = i === 0 ? '3px 0 0 3px' : (isLast ? '0 3px 3px 0' : '0');
|
|
||||||
html += `<button class="status-btn" data-type="${type}" data-id="${escapeHtml(id)}" data-status="${s}"
|
html += `<button class="status-btn" data-type="${type}" data-id="${escapeHtml(id)}" data-status="${s}"
|
||||||
style="padding: 2px 6px; font-size: 10px; font-family: monospace;
|
style="padding: 2px 6px; font-size: 10px; font-family: monospace;
|
||||||
background: ${bg}; border: 1px solid ${border}; border-radius: ${borderRadius};
|
background: ${bg}; border: 1px solid ${border}; border-radius: 3px;
|
||||||
color: ${color}; cursor: pointer; margin-left: ${i > 0 ? '-1px' : '0'};">${cfg.label}</button>`;
|
color: ${color}; cursor: pointer; margin-left: ${i > 0 ? '1px' : '0'};">${cfg.label}</button>`;
|
||||||
});
|
});
|
||||||
// Fail indicator (not clickable, just shows error state) or empty spacer for alignment
|
// Fail indicator (not clickable, just shows error state) or empty spacer for alignment
|
||||||
if (showFail) {
|
if (showFail) {
|
||||||
const cfg = statusConfig.fail;
|
const cfg = statusConfig.fail;
|
||||||
html += `<span style="padding: 2px 6px; font-size: 10px; font-family: monospace;
|
html += `<span style="padding: 2px 6px; font-size: 10px; font-family: monospace;
|
||||||
background: ${cfg.bg}; border: 1px solid ${cfg.border}; border-radius: 0 3px 3px 0;
|
background: ${cfg.bg}; border: 1px solid ${cfg.border}; border-radius: 3px;
|
||||||
color: ${cfg.color}; margin-left: -1px;" title="Feed has errors">${cfg.label}</span>`;
|
color: ${cfg.color}; margin-left: 1px;" title="Feed has errors">${cfg.label}</span>`;
|
||||||
} else {
|
} else {
|
||||||
// Empty spacer to keep consistent width
|
// Empty spacer to keep consistent width (invisible but takes space)
|
||||||
html += `<span style="padding: 2px 6px; font-size: 10px; font-family: monospace;
|
html += `<span style="padding: 2px 6px; font-size: 10px; font-family: monospace;
|
||||||
background: transparent; border: 1px solid transparent; border-radius: 0 3px 3px 0;
|
background: #111; border: 1px solid #222; border-radius: 3px;
|
||||||
color: transparent; margin-left: -1px;">fail</span>`;
|
color: #111; margin-left: 1px;">fail</span>`;
|
||||||
}
|
}
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
return html;
|
return html;
|
||||||
|
|||||||
+1
-1
@@ -533,7 +533,7 @@ const dashboardHTML = `<!DOCTYPE html>
|
|||||||
<div id="output"></div>
|
<div id="output"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style="color: #333; font-size: 11px; margin-top: 10px;">v19</div>
|
<div style="color: #333; font-size: 11px; margin-top: 10px;">v21</div>
|
||||||
|
|
||||||
<div class="updated" id="updatedAt">Last updated: {{.UpdatedAt.Format "2006-01-02 15:04:05"}}</div>
|
<div class="updated" id="updatedAt">Last updated: {{.UpdatedAt.Format "2006-01-02 15:04:05"}}</div>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
Reference in New Issue
Block a user