mirror of
https://github.com/ChuckBuilds/LEDMatrix.git
synced 2026-05-15 10:03:31 +00:00
fix(js): resolve Biome lint warnings across 9 JS files
noUnusedVariables (catch bindings → optional catch syntax):
- app.js, file-upload.js, timezone-selector.js: } catch (e) { → } catch {
ES2019 optional catch binding; e was unused in all three handlers
noUnusedVariables (dead assignments):
- app.js: remove const data= in display SSE stub (handler does nothing yet)
- api_client.js: remove const timeoutId= (setTimeout ID never used to cancel)
- custom-feeds.js: remove const oldIndex= (getAttribute result never read)
- schedule-picker.js: remove const compactMode= (never used in HTML build)
- select-dropdown.js: remove const icons= (icons not yet rendered in options)
noPrototypeBuiltins:
- day-selector.js: DAY_LABELS.hasOwnProperty(x) →
Object.prototype.hasOwnProperty.call(DAY_LABELS, x)
Safe form that works even on null-prototype objects
useIterableCallbackReturn:
- file-upload.js, notification.js: forEach(x => expr) →
forEach(x => { expr; }) — forEach ignores return values;
implicit return from arrow body was misleading
htmx-sse.js is a vendor extension file with old-style var/== patterns
that are correct for it; 18 Biome issues suppressed via Codacy API
rather than modifying the vendor source.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -45,7 +45,7 @@ document.body.addEventListener('htmx:afterRequest', function(event) {
|
|||||||
if (data.message) {
|
if (data.message) {
|
||||||
showNotification(data.message, data.status || 'info');
|
showNotification(data.message, data.status || 'info');
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch {
|
||||||
// Not JSON, ignore
|
// Not JSON, ignore
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -65,8 +65,7 @@ window.reconnectSSE = function() {
|
|||||||
if (window.displaySource) {
|
if (window.displaySource) {
|
||||||
window.displaySource.close();
|
window.displaySource.close();
|
||||||
window.displaySource = new EventSource('/api/v3/stream/display');
|
window.displaySource = new EventSource('/api/v3/stream/display');
|
||||||
window.displaySource.onmessage = function(event) {
|
window.displaySource.onmessage = function() {
|
||||||
const data = JSON.parse(event.data);
|
|
||||||
// Handle display updates
|
// Handle display updates
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ const RequestThrottler = {
|
|||||||
// Create throttled request with abort support
|
// Create throttled request with abort support
|
||||||
let abortController = null;
|
let abortController = null;
|
||||||
const promise = new Promise((resolve, reject) => {
|
const promise = new Promise((resolve, reject) => {
|
||||||
const timeoutId = setTimeout(async () => {
|
setTimeout(async () => {
|
||||||
try {
|
try {
|
||||||
const result = await fn();
|
const result = await fn();
|
||||||
// Cache successful GET requests
|
// Cache successful GET requests
|
||||||
|
|||||||
@@ -364,7 +364,6 @@
|
|||||||
// Re-index remaining rows
|
// Re-index remaining rows
|
||||||
const rows = tbody.querySelectorAll('.custom-feed-row');
|
const rows = tbody.querySelectorAll('.custom-feed-row');
|
||||||
rows.forEach((r, index) => {
|
rows.forEach((r, index) => {
|
||||||
const oldIndex = r.getAttribute('data-index');
|
|
||||||
r.setAttribute('data-index', index);
|
r.setAttribute('data-index', index);
|
||||||
// Update all input names with new index
|
// Update all input names with new index
|
||||||
r.querySelectorAll('input, button').forEach(input => {
|
r.querySelectorAll('input, button').forEach(input => {
|
||||||
|
|||||||
@@ -91,7 +91,7 @@
|
|||||||
const xOptions = config['x-options'] || config['x_options'] || {};
|
const xOptions = config['x-options'] || config['x_options'] || {};
|
||||||
const requestedFormat = xOptions.format || 'long';
|
const requestedFormat = xOptions.format || 'long';
|
||||||
// Validate format exists in DAY_LABELS, default to 'long' if not
|
// Validate format exists in DAY_LABELS, default to 'long' if not
|
||||||
const format = DAY_LABELS.hasOwnProperty(requestedFormat) ? requestedFormat : 'long';
|
const format = Object.prototype.hasOwnProperty.call(DAY_LABELS, requestedFormat) ? requestedFormat : 'long';
|
||||||
const layout = xOptions.layout || 'horizontal';
|
const layout = xOptions.layout || 'horizontal';
|
||||||
const showSelectAll = xOptions.selectAll !== false;
|
const showSelectAll = xOptions.selectAll !== false;
|
||||||
|
|
||||||
|
|||||||
@@ -294,7 +294,7 @@
|
|||||||
if (fileType !== 'json') {
|
if (fileType !== 'json') {
|
||||||
formData.append('plugin_id', pluginId);
|
formData.append('plugin_id', pluginId);
|
||||||
}
|
}
|
||||||
validFiles.forEach(file => formData.append('files', file));
|
validFiles.forEach(file => { formData.append('files', file); });
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const response = await fetch(customUploadEndpoint, {
|
const response = await fetch(customUploadEndpoint, {
|
||||||
@@ -741,7 +741,7 @@
|
|||||||
try {
|
try {
|
||||||
const date = new Date(dateString);
|
const date = new Date(dateString);
|
||||||
return date.toLocaleDateString() + ' ' + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });
|
return date.toLocaleDateString() + ' ' + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });
|
||||||
} catch (e) {
|
} catch {
|
||||||
return dateString;
|
return dateString;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -199,7 +199,7 @@
|
|||||||
*/
|
*/
|
||||||
function clearAll() {
|
function clearAll() {
|
||||||
const ids = [...activeNotifications];
|
const ids = [...activeNotifications];
|
||||||
ids.forEach(id => removeNotification(id, true));
|
ids.forEach(id => { removeNotification(id, true); });
|
||||||
}
|
}
|
||||||
|
|
||||||
// Register the widget
|
// Register the widget
|
||||||
|
|||||||
@@ -174,7 +174,6 @@
|
|||||||
const xOptions = config['x-options'] || config['x_options'] || {};
|
const xOptions = config['x-options'] || config['x_options'] || {};
|
||||||
const showModeToggle = xOptions.showModeToggle !== false;
|
const showModeToggle = xOptions.showModeToggle !== false;
|
||||||
const showEnableToggle = xOptions.showEnableToggle !== false;
|
const showEnableToggle = xOptions.showEnableToggle !== false;
|
||||||
const compactMode = xOptions.compactMode === true;
|
|
||||||
|
|
||||||
const schedule = normalizeSchedule(value);
|
const schedule = normalizeSchedule(value);
|
||||||
|
|
||||||
|
|||||||
@@ -69,7 +69,6 @@
|
|||||||
const enumValues = config.enum || xOptions.options || [];
|
const enumValues = config.enum || xOptions.options || [];
|
||||||
const placeholder = xOptions.placeholder || 'Select...';
|
const placeholder = xOptions.placeholder || 'Select...';
|
||||||
const labels = xOptions.labels || {};
|
const labels = xOptions.labels || {};
|
||||||
const icons = xOptions.icons || {};
|
|
||||||
const disabled = xOptions.disabled === true;
|
const disabled = xOptions.disabled === true;
|
||||||
const required = xOptions.required === true;
|
const required = xOptions.required === true;
|
||||||
|
|
||||||
|
|||||||
@@ -358,7 +358,7 @@
|
|||||||
});
|
});
|
||||||
timeEl.textContent = formatter.format(now);
|
timeEl.textContent = formatter.format(now);
|
||||||
previewEl.classList.remove('hidden');
|
previewEl.classList.remove('hidden');
|
||||||
} catch (e) {
|
} catch {
|
||||||
previewEl.classList.add('hidden');
|
previewEl.classList.add('hidden');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user