fix(luci-app-secubox-admin): fix WidgetRenderer constructor error
Fixed TypeError "WidgetRenderer is not a constructor" in dashboard.js
by removing the 'new' keyword. LuCI's baseclass.extend() creates callable
classes that should not be instantiated with 'new'.
Changes:
- dashboard.js: Changed from 'new WidgetRenderer({...})' to 'WidgetRenderer({...})'
- Added comprehensive try-catch error handling with fallback error display
- Incremented PKG_RELEASE: 5 → 6
- Updated DEPLOY_UPDATES.md with v1.0.0-6 details
This fix allows the widget system to initialize properly on the dashboard.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
9536a89744
commit
1c5d8eb29f
@ -69,11 +69,17 @@ ubus -S call luci.secubox check_updates
|
|||||||
### Package Versions
|
### Package Versions
|
||||||
|
|
||||||
- `secubox-core`: 0.8.0-6
|
- `secubox-core`: 0.8.0-6
|
||||||
- `luci-app-secubox-admin`: 1.0.0-5
|
- `luci-app-secubox-admin`: 1.0.0-6
|
||||||
|
|
||||||
### Recent Fixes
|
### Recent Fixes
|
||||||
|
|
||||||
**v1.0.0-5** (Latest):
|
**v1.0.0-6** (Latest):
|
||||||
|
- Fixed WidgetRenderer constructor error
|
||||||
|
- Changed from `new WidgetRenderer({...})` to `WidgetRenderer({...})`
|
||||||
|
- Added comprehensive error handling with try-catch and fallback error display
|
||||||
|
- baseclass-extended classes should not be called with `new` keyword
|
||||||
|
|
||||||
|
**v1.0.0-5**:
|
||||||
- Added graceful RPC fallback with L.resolveDefault()
|
- Added graceful RPC fallback with L.resolveDefault()
|
||||||
- Pages now load with empty data instead of crashing when backend not deployed
|
- Pages now load with empty data instead of crashing when backend not deployed
|
||||||
- Fixes "No related RPC reply" errors
|
- Fixes "No related RPC reply" errors
|
||||||
|
|||||||
@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk
|
|||||||
|
|
||||||
PKG_NAME:=luci-app-secubox-admin
|
PKG_NAME:=luci-app-secubox-admin
|
||||||
PKG_VERSION:=1.0.0
|
PKG_VERSION:=1.0.0
|
||||||
PKG_RELEASE:=5
|
PKG_RELEASE:=6
|
||||||
PKG_LICENSE:=MIT
|
PKG_LICENSE:=MIT
|
||||||
PKG_MAINTAINER:=CyberMind <contact@cybermind.fr>
|
PKG_MAINTAINER:=CyberMind <contact@cybermind.fr>
|
||||||
|
|
||||||
|
|||||||
@ -198,19 +198,35 @@ return view.extend({
|
|||||||
initializeWidgets: function(apps) {
|
initializeWidgets: function(apps) {
|
||||||
// Cleanup existing widget renderer
|
// Cleanup existing widget renderer
|
||||||
if (this.widgetRenderer) {
|
if (this.widgetRenderer) {
|
||||||
this.widgetRenderer.destroy();
|
try {
|
||||||
|
this.widgetRenderer.destroy();
|
||||||
|
} catch (e) {
|
||||||
|
console.error('Error destroying widget renderer:', e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create new widget renderer
|
try {
|
||||||
this.widgetRenderer = new WidgetRenderer({
|
// Create new widget renderer instance
|
||||||
containerId: 'dashboard-widgets-container',
|
// WidgetRenderer is a baseclass-extended class, call it directly
|
||||||
apps: apps,
|
this.widgetRenderer = WidgetRenderer({
|
||||||
defaultRefreshInterval: 30,
|
containerId: 'dashboard-widgets-container',
|
||||||
gridMode: 'auto'
|
apps: apps,
|
||||||
});
|
defaultRefreshInterval: 30,
|
||||||
|
gridMode: 'auto'
|
||||||
|
});
|
||||||
|
|
||||||
// Render widgets
|
// Render widgets
|
||||||
this.widgetRenderer.render();
|
if (this.widgetRenderer && this.widgetRenderer.render) {
|
||||||
|
this.widgetRenderer.render();
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.error('Error initializing widgets:', e);
|
||||||
|
// Render error message in widget container
|
||||||
|
var container = document.getElementById('dashboard-widgets-container');
|
||||||
|
if (container) {
|
||||||
|
container.innerHTML = '<div class="alert alert-warning">Widget system initialization failed. Please refresh the page.</div>';
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
pollData: function() {
|
pollData: function() {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user