refactor(ui): step6 - extract triggers.js (httpTriggerByFn, timeTriggerByFn, toggleScheduleFields, schedulePayload, syncScheduleForFunction)
This commit is contained in:
+1
-59
@@ -17,6 +17,7 @@
|
|||||||
<script src="js/api.js"></script>
|
<script src="js/api.js"></script>
|
||||||
<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>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
@@ -452,65 +453,6 @@
|
|||||||
return warning + '\n' + body;
|
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() {
|
function onLangChange() {
|
||||||
var lang = document.getElementById('c-lang').value;
|
var lang = document.getElementById('c-lang').value;
|
||||||
var t = LANG_TEMPLATES[lang];
|
var t = LANG_TEMPLATES[lang];
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user