From ff29177aefcfe6017d206d922bd7c874bcc4b690 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Sat, 2 May 2026 17:22:27 +0400 Subject: [PATCH] refactor(ui): step6 - extract triggers.js (httpTriggerByFn, timeTriggerByFn, toggleScheduleFields, schedulePayload, syncScheduleForFunction) --- console/ui/index.html | 60 +-------------------------------------- console/ui/js/triggers.js | 60 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 59 deletions(-) create mode 100644 console/ui/js/triggers.js diff --git a/console/ui/index.html b/console/ui/index.html index 09dadd4..37f7126 100644 --- a/console/ui/index.html +++ b/console/ui/index.html @@ -17,6 +17,7 @@ + @@ -452,65 +453,6 @@ return warning + '\n' + body; } - function httpTriggerByFn(fnName) { - return (S.httpTriggers || []).find(function (t) { - return t.spec && t.spec.functionref && t.spec.functionref.name === fnName; - }); - } - - function timeTriggerByFn(fnName) { - return (S.timeTriggers || []).find(function (t) { - return t.spec && t.spec.functionref && t.spec.functionref.name === fnName; - }); - } - - function toggleScheduleFields(prefix) { - var enabled = !!document.getElementById(prefix + '-schedule-enabled').checked; - var cronEl = document.getElementById(prefix + '-cron'); - cronEl.disabled = !enabled; - if (enabled && !cronEl.value.trim()) { - cronEl.value = '*/5 * * * *'; - } - } - - function schedulePayload(prefix) { - return { - enabled: !!document.getElementById(prefix + '-schedule-enabled').checked, - cron: (document.getElementById(prefix + '-cron').value || '').trim() - }; - } - - async function syncScheduleForFunction(name, prefix) { - var schedule = schedulePayload(prefix); - var existing = timeTriggerByFn(name); - var existingName = (existing && existing.metadata && existing.metadata.name) || name; - - if (!schedule.enabled) { - if (existing) { - await requestJSON(API_BASE + '/timetriggers/' + encodeURIComponent(existingName), 'DELETE'); - } - return; - } - - if (!schedule.cron) { - throw new Error('cron is required'); - } - - var payload = { - name: existingName, - functionName: name, - cron: schedule.cron, - method: 'POST', - subpath: '/' - }; - - if (existing) { - await requestJSON(API_BASE + '/timetriggers/' + encodeURIComponent(existingName), 'PUT', payload); - } else { - await requestJSON(API_BASE + '/timetriggers', 'POST', payload); - } - } - function onLangChange() { var lang = document.getElementById('c-lang').value; var t = LANG_TEMPLATES[lang]; diff --git a/console/ui/js/triggers.js b/console/ui/js/triggers.js new file mode 100644 index 0000000..24fc7fb --- /dev/null +++ b/console/ui/js/triggers.js @@ -0,0 +1,60 @@ +/* triggers.js — HTTP и Cron триггеры */ + +function httpTriggerByFn(fnName) { + return (S.httpTriggers || []).find(function (t) { + return t.spec && t.spec.functionref && t.spec.functionref.name === fnName; + }); +} + +function timeTriggerByFn(fnName) { + return (S.timeTriggers || []).find(function (t) { + return t.spec && t.spec.functionref && t.spec.functionref.name === fnName; + }); +} + +function toggleScheduleFields(prefix) { + var enabled = !!document.getElementById(prefix + '-schedule-enabled').checked; + var cronEl = document.getElementById(prefix + '-cron'); + cronEl.disabled = !enabled; + if (enabled && !cronEl.value.trim()) { + cronEl.value = '*/5 * * * *'; + } +} + +function schedulePayload(prefix) { + return { + enabled: !!document.getElementById(prefix + '-schedule-enabled').checked, + cron: (document.getElementById(prefix + '-cron').value || '').trim() + }; +} + +async function syncScheduleForFunction(name, prefix) { + var schedule = schedulePayload(prefix); + var existing = timeTriggerByFn(name); + var existingName = (existing && existing.metadata && existing.metadata.name) || name; + + if (!schedule.enabled) { + if (existing) { + await requestJSON(API_BASE + '/timetriggers/' + encodeURIComponent(existingName), 'DELETE'); + } + return; + } + + if (!schedule.cron) { + throw new Error('cron is required'); + } + + var payload = { + name: existingName, + functionName: name, + cron: schedule.cron, + method: 'POST', + subpath: '/' + }; + + if (existing) { + await requestJSON(API_BASE + '/timetriggers/' + encodeURIComponent(existingName), 'PUT', payload); + } else { + await requestJSON(API_BASE + '/timetriggers', 'POST', payload); + } +}