Save worktree changes

This commit is contained in:
lzstealth committed 2026-07-25 02:29:19 +01:00
1 parent 8d3b7d557b
commit db9d718cd8
170 files changed
+11719 -3414

No files matched your search

@@ -0,0 +1,31 @@
const { renderView } = require('../../../view');
function buildDefaultApiSource() {
return {
id: null,
name: '',
apiUrl: '',
updateIntervalValue: 60,
updateIntervalUnit: 'minutes',
lastPulledAt: null,
lastPullError: '',
lastResponseStatus: null,
lastResponseContentType: '',
lastResponseJson: ''
};
}
module.exports = function renderApiSourceFormPage(apiSource, mode, message, currentUser) {
const isEdit = mode === 'edit';
const viewApiSource = Object.assign(buildDefaultApiSource(), apiSource || {});
return renderView(isEdit ? 'data-sources/api-sources/edit' : 'data-sources/api-sources/add', {
title: isEdit ? 'Edit API source' : 'Add API source',
active: 'api-sources',
message: message,
currentUser: currentUser || null,
apiSource: viewApiSource,
lastResponseJson: viewApiSource.lastResponseJson || '',
lastPullError: viewApiSource.lastPullError || ''
});
};
@@ -0,0 +1,13 @@
const renderApiSourceFormPage = require('./add');
module.exports = function renderApiSourceEditPage(apiSource, data, message, currentUser) {
const viewData = Object.assign({
lastResponseJson: '',
lastPullError: ''
}, data || {});
return renderApiSourceFormPage(Object.assign({}, apiSource, {
lastResponseJson: viewData.lastResponseJson,
lastPullError: viewData.lastPullError
}), 'edit', message, currentUser);
};
@@ -0,0 +1,48 @@
const { renderView } = require('../../../view');
function toIsoTimestamp(value) {
if (!value) {
return '';
}
const date = new Date(value);
return Number.isNaN(date.getTime()) ? '' : date.toISOString();
}
function formatIntervalLabel(interval, unit) {
const value = Math.max(1, Number(interval) || 0);
const normalizedUnit = String(unit || 'minutes').trim().toLowerCase() === 'seconds' ? 'seconds' : 'minutes';
if (normalizedUnit === 'seconds') {
return value === 1 ? 'Every second' : `Every ${value} seconds`;
}
return value === 1 ? 'Every minute' : `Every ${value} minutes`;
}
function formatLastPullLabel(apiSource, formatDashboardDate) {
if (!apiSource.last_pulled_at) {
return 'Never';
}
const timestamp = typeof formatDashboardDate === 'function'
? formatDashboardDate(apiSource.last_pulled_at)
: String(apiSource.last_pulled_at);
return timestamp || 'Never';
}
module.exports = function renderApiSourcesPage(data, message, currentUser, formatDashboardDate) {
const apiSources = (data.apiSources || []).map(function (apiSource) {
return Object.assign({}, apiSource, {
intervalLabel: formatIntervalLabel(apiSource.update_interval_value, apiSource.update_interval_unit),
lastPullLabel: formatLastPullLabel(apiSource, formatDashboardDate),
lastPulledAtValue: toIsoTimestamp(apiSource.last_pulled_at)
});
});
return renderView('data-sources/api-sources/list', {
title: 'API sources',
active: 'api-sources',
message: message,
currentUser: currentUser || null,
apiSources: apiSources
});
};