implemented git sync for app templates

This commit is contained in:
2026-02-14 13:40:00 +01:00
parent 44a7d0de2c
commit ee8650a41c
6 changed files with 499 additions and 13 deletions
+57
View File
@@ -37,6 +37,41 @@ const layoutTmpl = `
{{define "layout_end"}}
</main>
<script>
async function syncTemplates() {
const btn = document.getElementById('sync-btn');
const toast = document.getElementById('sync-toast');
if (!btn) return;
const origText = btn.innerHTML;
btn.disabled = true;
btn.innerHTML = '↻ Frissítés...';
btn.classList.add('loading');
try {
const resp = await fetch('/api/sync', {
method: 'POST',
headers: {'Content-Type': 'application/json'}
});
const data = await resp.json();
if (toast) {
toast.textContent = data.ok ? (data.message || 'Sablonok frissítve') : ('Hiba: ' + (data.error || 'Ismeretlen hiba'));
toast.className = 'sync-toast ' + (data.ok ? 'sync-toast-ok' : 'sync-toast-err');
toast.style.display = 'block';
setTimeout(function() { toast.style.display = 'none'; }, 5000);
}
if (data.ok && data.data && (data.data.new_apps && data.data.new_apps.length > 0 || data.data.updated && data.data.updated.length > 0)) {
setTimeout(function() { window.location.reload(); }, 1500);
}
} catch (err) {
if (toast) {
toast.textContent = 'Hálózati hiba: ' + err.message;
toast.className = 'sync-toast sync-toast-err';
toast.style.display = 'block';
setTimeout(function() { toast.style.display = 'none'; }, 5000);
}
}
btn.innerHTML = origText;
btn.disabled = false;
btn.classList.remove('loading');
}
async function stackAction(name, action) {
const btn = event.currentTarget;
const origText = btn.textContent;
@@ -179,7 +214,9 @@ const stacksTmpl = `
<div class="page-header">
<h2>Alkalmazások</h2>
<span class="domain-badge">{{.Domain}}</span>
<button class="btn btn-sm btn-outline" id="sync-btn" onclick="syncTemplates()" title="Sablonok frissítése a központi katalógusból">↻ Sablonok frissítése</button>
</div>
<div id="sync-toast" class="sync-toast" style="display:none"></div>
<div class="stack-grid">
{{range .Stacks}}
@@ -1160,6 +1197,26 @@ select.form-control option { background: var(--bg-secondary); color: var(--text-
}
.logs-actions { display: flex; gap: .5rem; }
/* Sync toast */
.sync-toast {
padding: .6rem 1rem;
border-radius: 8px;
font-size: .85rem;
margin-bottom: 1rem;
border: 1px solid;
transition: opacity 0.3s ease;
}
.sync-toast-ok {
background: var(--green-bg);
color: var(--green);
border-color: rgba(35, 134, 54, 0.3);
}
.sync-toast-err {
background: var(--red-bg);
color: var(--red);
border-color: rgba(218, 54, 51, 0.3);
}
.empty-state { text-align: center; padding: 3rem; color: var(--text-muted); }
/* Login page */