refactor(ui): step7 - extract modals.js (openHelp, closeHelp, openInvoke, closeInvoke, submitInvoke)
This commit is contained in:
+1
-23
@@ -18,6 +18,7 @@
|
|||||||
<script src="js/ui.js"></script>
|
<script src="js/ui.js"></script>
|
||||||
<script src="js/auth.js"></script>
|
<script src="js/auth.js"></script>
|
||||||
<script src="js/triggers.js"></script>
|
<script src="js/triggers.js"></script>
|
||||||
|
<script src="js/modals.js"></script>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
@@ -559,14 +560,6 @@
|
|||||||
S.currentEdit = null;
|
S.currentEdit = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
function openHelp() {
|
|
||||||
document.getElementById('help-modal').classList.add('open');
|
|
||||||
}
|
|
||||||
|
|
||||||
function closeHelp() {
|
|
||||||
document.getElementById('help-modal').classList.remove('open');
|
|
||||||
}
|
|
||||||
|
|
||||||
async function submitEdit() {
|
async function submitEdit() {
|
||||||
if (!S.currentEdit) return;
|
if (!S.currentEdit) return;
|
||||||
const btn = document.getElementById('e-submit');
|
const btn = document.getElementById('e-submit');
|
||||||
@@ -590,21 +583,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function openInvoke(name) {
|
|
||||||
S.currentInvoke = name;
|
|
||||||
document.getElementById('i-title').textContent = '\u0412\u044b\u0437\u043e\u0432: ' + name;
|
|
||||||
document.getElementById('i-resp').value = '';
|
|
||||||
document.getElementById('i-status').textContent = '';
|
|
||||||
document.getElementById('i-meta').style.display = 'none';
|
|
||||||
document.getElementById('i-meta').textContent = '';
|
|
||||||
document.getElementById('invoke-modal').classList.add('open');
|
|
||||||
}
|
|
||||||
|
|
||||||
function closeInvoke() {
|
|
||||||
document.getElementById('invoke-modal').classList.remove('open');
|
|
||||||
S.currentInvoke = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
async function submitInvoke() {
|
async function submitInvoke() {
|
||||||
if (!S.currentInvoke) return;
|
if (!S.currentInvoke) return;
|
||||||
const btn = document.getElementById('i-submit');
|
const btn = document.getElementById('i-submit');
|
||||||
|
|||||||
@@ -0,0 +1,76 @@
|
|||||||
|
/* modals.js — управление модальными окнами Help и Invoke */
|
||||||
|
|
||||||
|
function openHelp() {
|
||||||
|
document.getElementById('help-modal').classList.add('open');
|
||||||
|
}
|
||||||
|
|
||||||
|
function closeHelp() {
|
||||||
|
document.getElementById('help-modal').classList.remove('open');
|
||||||
|
}
|
||||||
|
|
||||||
|
function openInvoke(name) {
|
||||||
|
S.currentInvoke = name;
|
||||||
|
document.getElementById('i-title').textContent = 'Вызов: ' + name;
|
||||||
|
document.getElementById('i-resp').value = '';
|
||||||
|
document.getElementById('i-status').textContent = '';
|
||||||
|
document.getElementById('i-meta').style.display = 'none';
|
||||||
|
document.getElementById('i-meta').textContent = '';
|
||||||
|
document.getElementById('invoke-modal').classList.add('open');
|
||||||
|
}
|
||||||
|
|
||||||
|
function closeInvoke() {
|
||||||
|
document.getElementById('invoke-modal').classList.remove('open');
|
||||||
|
S.currentInvoke = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function submitInvoke() {
|
||||||
|
if (!S.currentInvoke) return;
|
||||||
|
const btn = document.getElementById('i-submit');
|
||||||
|
const statusEl = document.getElementById('i-status');
|
||||||
|
const metaEl = document.getElementById('i-meta');
|
||||||
|
const respEl = document.getElementById('i-resp');
|
||||||
|
btn.disabled = true;
|
||||||
|
respEl.value = '';
|
||||||
|
metaEl.style.display = 'none';
|
||||||
|
metaEl.textContent = '';
|
||||||
|
let elapsed = 0;
|
||||||
|
statusEl.textContent = 'Вызов...';
|
||||||
|
const timer = setInterval(() => {
|
||||||
|
elapsed++;
|
||||||
|
if (elapsed < 5) {
|
||||||
|
statusEl.textContent = 'Вызов... ' + elapsed + 'с';
|
||||||
|
} else if (elapsed < 10) {
|
||||||
|
statusEl.textContent = '⏳ Возможен cold start — прогрев пула... ' + elapsed + 'с';
|
||||||
|
} else {
|
||||||
|
statusEl.textContent = '⏳ Возможны cold start или specialization... ' + elapsed + 'с';
|
||||||
|
}
|
||||||
|
}, 1000);
|
||||||
|
try {
|
||||||
|
const raw = document.getElementById('i-body').value.trim();
|
||||||
|
let parsed = {};
|
||||||
|
if (raw) parsed = JSON.parse(raw);
|
||||||
|
const result = await requestJSON(API_BASE + '/functions/' + encodeURIComponent(S.currentInvoke) + '/invoke', 'POST', parsed);
|
||||||
|
var latencyMs = Number(result.latency_ms || 0);
|
||||||
|
var measuredSeconds = latencyMs > 0 ? Math.max(1, Math.round(latencyMs / 1000)) : elapsed;
|
||||||
|
statusEl.textContent = '✓ Выполнено за ' + formatSeconds(measuredSeconds);
|
||||||
|
metaEl.style.display = 'block';
|
||||||
|
metaEl.textContent = [
|
||||||
|
'HTTP status: ' + (result.status || 'n/a'),
|
||||||
|
'Latency: ' + (latencyMs || 'n/a') + ' ms',
|
||||||
|
'Причина задержки: ' + explainDelay(measuredSeconds),
|
||||||
|
'Invoke URL: ' + (result.invoke_url || 'n/a')
|
||||||
|
].join('\n');
|
||||||
|
respEl.value = JSON.stringify(result, null, 2);
|
||||||
|
} catch (e) {
|
||||||
|
statusEl.textContent = '✗ Ошибка после ' + formatSeconds(elapsed);
|
||||||
|
metaEl.style.display = 'block';
|
||||||
|
metaEl.textContent = [
|
||||||
|
'Последняя ошибка: ' + e.message,
|
||||||
|
'Вероятная причина задержки: ' + explainDelay(elapsed)
|
||||||
|
].join('\n');
|
||||||
|
respEl.value = 'Ошибка вызова: ' + e.message;
|
||||||
|
} finally {
|
||||||
|
clearInterval(timer);
|
||||||
|
btn.disabled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user