feat: simplify open issues tab to link list
All checks were successful
Deploy to dev.bl.pixeldev.eu / deploy (push) Successful in 2s
All checks were successful
Deploy to dev.bl.pixeldev.eu / deploy (push) Successful in 2s
Replace the verbose issue cards (body preview + inline comment form) with a clean list of links: issue number, title, and an arrow to open the issue on Gitea. Keeps the tab minimal and noise-free. Closes #4
This commit is contained in:
parent
a138c76041
commit
be8c814da6
50
server.js
50
server.js
@ -142,14 +142,13 @@ app.get(['/widget.js', BASE + '/widget.js'], (req, res) => {
|
|||||||
.fb-btn:hover { opacity:.85; }
|
.fb-btn:hover { opacity:.85; }
|
||||||
.fb-btn:disabled { opacity:.4; cursor:default; }
|
.fb-btn:disabled { opacity:.4; cursor:default; }
|
||||||
.fb-status { font-size:.8rem; text-align:center; min-height:1.1rem; }
|
.fb-status { font-size:.8rem; text-align:center; min-height:1.1rem; }
|
||||||
.fb-issue-item { background:#0d0d0d; border:1px solid #222; border-radius:10px; padding:.9rem 1rem; }
|
.fb-issue-link { display:flex; align-items:center; justify-content:space-between; gap:.5rem;
|
||||||
.fb-issue-title { color:#e0e0e0; font-size:.9rem; font-weight:600; margin:0 0 .3rem; }
|
padding:.6rem .4rem; border-bottom:1px solid #1a1a1a; text-decoration:none; color:#e0e0e0;
|
||||||
.fb-issue-meta { color:#555; font-size:.75rem; margin-bottom:.6rem; }
|
font-size:.875rem; transition:color .15s; }
|
||||||
.fb-issue-body { color:#888; font-size:.8rem; margin-bottom:.7rem; white-space:pre-wrap; word-break:break-word; }
|
.fb-issue-link:last-child { border-bottom:none; }
|
||||||
.fb-comment-area { display:flex; flex-direction:column; gap:.5rem; }
|
.fb-issue-link:hover { color:#7c9ef5; }
|
||||||
.fb-comment-input { min-height:55px; }
|
.fb-issue-num { color:#555; font-size:.8rem; flex-shrink:0; }
|
||||||
.fb-comment-btn { background:#2a2a2a; color:#ccc; font-size:.8rem; padding:.45rem .8rem; width:auto; align-self:flex-end; border-radius:6px; }
|
.fb-issue-arrow { color:#444; font-size:.8rem; flex-shrink:0; }
|
||||||
.fb-comment-btn:hover { background:#333; opacity:1; }
|
|
||||||
.fb-empty { color:#555; font-size:.85rem; text-align:center; padding:1.5rem 0; }
|
.fb-empty { color:#555; font-size:.85rem; text-align:center; padding:1.5rem 0; }
|
||||||
.fb-loading { color:#555; font-size:.85rem; text-align:center; padding:1rem 0; }
|
.fb-loading { color:#555; font-size:.85rem; text-align:center; padding:1rem 0; }
|
||||||
/* Picker row inside new-issue form */
|
/* Picker row inside new-issue form */
|
||||||
@ -382,34 +381,13 @@ app.get(['/widget.js', BASE + '/widget.js'], (req, res) => {
|
|||||||
if (!issues.length) { list.innerHTML = '<div class="fb-empty">No open issues 🎉</div>'; return; }
|
if (!issues.length) { list.innerHTML = '<div class="fb-empty">No open issues 🎉</div>'; return; }
|
||||||
list.innerHTML = '';
|
list.innerHTML = '';
|
||||||
issues.forEach(function(issue) {
|
issues.forEach(function(issue) {
|
||||||
var el = document.createElement('div');
|
var a = document.createElement('a');
|
||||||
el.className = 'fb-issue-item';
|
a.className = 'fb-issue-link';
|
||||||
var preview = (issue.body || '').replace(/---[\\s\\S]*$/, '').trim().slice(0, 150);
|
a.href = issue.url;
|
||||||
el.innerHTML = \`
|
a.target = '_blank';
|
||||||
<p class="fb-issue-title">#\${issue.number} \${esc(issue.title)}</p>
|
a.rel = 'noopener';
|
||||||
<p class="fb-issue-meta">\${issue.comments} comment\${issue.comments!==1?'s':''} · <a href="\${issue.url}" target="_blank" style="color:#7c9ef5;text-decoration:none;">view on Gitea ↗</a></p>
|
a.innerHTML = \`<span class="fb-issue-num">#\${issue.number}</span><span style="flex:1">\${esc(issue.title)}</span><span class="fb-issue-arrow">↗</span>\`;
|
||||||
\${preview ? '<p class="fb-issue-body">' + esc(preview) + '</p>' : ''}
|
list.appendChild(a);
|
||||||
<div class="fb-comment-area">
|
|
||||||
<textarea class="fb-input fb-textarea fb-comment-input" placeholder="Add a comment…" data-issue="\${issue.number}"></textarea>
|
|
||||||
<button class="fb-btn fb-comment-btn" data-issue="\${issue.number}">Comment</button>
|
|
||||||
</div>
|
|
||||||
\`;
|
|
||||||
list.appendChild(el);
|
|
||||||
el.querySelector('.fb-comment-btn').addEventListener('click', function() {
|
|
||||||
var num = this.dataset.issue;
|
|
||||||
var ta = el.querySelector('textarea[data-issue="'+num+'"]');
|
|
||||||
var body = ta.value.trim();
|
|
||||||
if (!body) return;
|
|
||||||
var btn = this;
|
|
||||||
btn.disabled = true; btn.textContent = 'Posting…';
|
|
||||||
fetch(SELF + '/api/comment', {
|
|
||||||
method: 'POST', headers: { 'Content-Type': 'application/json' },
|
|
||||||
body: JSON.stringify({ repo: cfg.repo, issue_number: num, body })
|
|
||||||
}).then(function(r) { return r.json(); }).then(function(d) {
|
|
||||||
if (d.ok) { ta.value=''; btn.textContent='✓ Posted!'; setTimeout(function(){ btn.textContent='Comment'; btn.disabled=false; }, 2000); }
|
|
||||||
else { btn.textContent='Error'; btn.disabled=false; }
|
|
||||||
}).catch(function() { btn.textContent='Error'; btn.disabled=false; });
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
}).catch(function() { list.innerHTML = '<div class="fb-empty">Failed to load issues.</div>'; });
|
}).catch(function() { list.innerHTML = '<div class="fb-empty">Failed to load issues.</div>'; });
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user