60 lines
2.3 KiB
HTML
60 lines
2.3 KiB
HTML
<!doctype html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<title>НадTavern — Pipeline Editor (JSON)</title>
|
|
<link rel="icon" href="/favicon.ico" />
|
|
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
|
|
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
|
|
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
|
|
<link rel="manifest" href="/site.webmanifest" />
|
|
<meta name="theme-color" content="#ffffff" />
|
|
<style>
|
|
body { font-family: Arial, sans-serif; margin: 24px; }
|
|
textarea { width: 100%; height: 70vh; }
|
|
pre { background: #111; color: #eee; padding: 12px; border-radius: 6px; }
|
|
.row { display: flex; gap: 16px; }
|
|
.col { flex: 1; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<h1>Pipeline Editor (JSON)</h1>
|
|
<p>
|
|
Редактируйте JSON пайплайна. Нажмите "Сохранить" — используется немедленно.
|
|
<a href="/">Домой</a>
|
|
</p>
|
|
<div>
|
|
<button id="btn-load">Загрузить</button>
|
|
<button id="btn-save">Сохранить</button>
|
|
</div>
|
|
<textarea id="editor"></textarea>
|
|
<pre id="status"></pre>
|
|
<script>
|
|
async function loadPipeline() {
|
|
const res = await fetch('/admin/pipeline');
|
|
const json = await res.json();
|
|
document.getElementById('editor').value = JSON.stringify(json, null, 2);
|
|
setStatus('Загружено');
|
|
}
|
|
async function savePipeline() {
|
|
try {
|
|
const body = document.getElementById('editor').value;
|
|
JSON.parse(body);
|
|
const res = await fetch('/admin/pipeline', { method: 'POST', headers: {'Content-Type': 'application/json'}, body });
|
|
const out = await res.json();
|
|
setStatus('Сохранено: ' + JSON.stringify(out));
|
|
} catch (e) {
|
|
setStatus('Ошибка: ' + e.message);
|
|
}
|
|
}
|
|
function setStatus(t) { document.getElementById('status').textContent = t; }
|
|
document.getElementById('btn-load').onclick = loadPipeline;
|
|
document.getElementById('btn-save').onclick = savePipeline;
|
|
loadPipeline();
|
|
</script>
|
|
</body>
|
|
</html>
|
|
|
|
|