feat(funcs-console): показывать sless_service вместе с функциями — единый листинг

This commit is contained in:
Naeel
2026-03-21 07:00:59 +03:00
parent e8d0d78310
commit 683d7282af
2 changed files with 97 additions and 16 deletions
+46 -12
View File
@@ -176,6 +176,18 @@
color: #f85149;
}
.badge-kind-service {
background: #0d2538;
border: 1px solid #1158a7;
color: #58a6ff;
}
.badge-kind-function {
background: #1a2538;
border: 1px solid #30363d;
color: #8b949e;
}
.fn-url {
font-size: 0.76rem;
color: #58a6ff;
@@ -328,7 +340,10 @@
var byFn = data.triggersByFn || {};
document.getElementById('ns-label').textContent = ns;
document.getElementById('summary').textContent = 'Функций: ' + fns.length;
var svcsCount = fns.filter(function(f){ return f.kind === 'service'; }).length;
var fnsCount = fns.filter(function(f){ return f.kind !== 'service'; }).length;
document.getElementById('summary').textContent =
'Функций: ' + fnsCount + ' | Сервисов: ' + svcsCount + ' | Всего: ' + fns.length;
var list = document.getElementById('fn-list');
if (fns.length === 0) {
@@ -348,21 +363,40 @@
$txt(hdr, 'span', 'fn-name', fn.name);
$txt(hdr, 'span', 'badge badge-runtime', fn.runtime);
$txt(hdr, 'span', 'badge badge-' + fn.phase, fn.phase);
$txt(hdr, 'span', 'badge badge-' + fn.phase, fn.phase || 'Pending');
if (fn.kind) {
var kindLabel = fn.kind === 'service' ? 'always-on' : 'job';
$txt(hdr, 'span', 'badge badge-kind-' + fn.kind, kindLabel);
}
// sless_service имеет прямой URL из статуса деплоя
if (fn.url) {
var a = document.createElement('a');
a.className = 'fn-url';
a.href = fn.url;
a.target = '_blank';
a.rel = 'noopener noreferrer';
a.textContent = fn.url;
a.addEventListener('click', function (e) { e.stopPropagation(); });
hdr.appendChild(a);
}
for (var t = 0; t < triggers.length; t++) {
var tr = triggers[t];
if (tr.type === 'http') {
var url = extURL ? extURL + '/fn/' + ns + '/' + fn.name : (tr.url || '');
if (url) {
var a = document.createElement('a');
a.className = 'fn-url';
a.href = url;
a.target = '_blank';
a.rel = 'noopener noreferrer';
a.textContent = url;
a.addEventListener('click', function (e) { e.stopPropagation(); });
hdr.appendChild(a);
// Для job-style функций URL берём из триггера; для сервисов уже показан fn.url
if (!fn.url) {
var url = extURL ? extURL + '/fn/' + ns + '/' + fn.name : (tr.url || '');
if (url) {
var a = document.createElement('a');
a.className = 'fn-url';
a.href = url;
a.target = '_blank';
a.rel = 'noopener noreferrer';
a.textContent = url;
a.addEventListener('click', function (e) { e.stopPropagation(); });
hdr.appendChild(a);
}
}
hdr.appendChild(makeTriggerBtn(tr, ns));
} else if (tr.type === 'cron') {