fix(localai): Fix RPC data handling - expect returns array directly
The LuCI rpc.declare with expect: { models: [] } returns the array
directly, not wrapped in {models: [...]}. Fixed all views to handle
this correctly.
- models.js: Check Array.isArray(data) first
- dashboard.js: Extract array from results[1] directly
- chat.js: Same array handling fix
Version: 0.1.0-r12
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
6f713b1041
commit
63c0bb3e5a
@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=luci-app-localai
|
||||
PKG_VERSION:=0.1.0
|
||||
PKG_RELEASE:=10
|
||||
PKG_RELEASE:=12
|
||||
PKG_ARCH:=all
|
||||
|
||||
PKG_LICENSE:=Apache-2.0
|
||||
|
||||
@ -27,7 +27,8 @@ return view.extend({
|
||||
|
||||
render: function(data) {
|
||||
var self = this;
|
||||
var models = data.models || [];
|
||||
// RPC with expect returns array directly
|
||||
var models = Array.isArray(data) ? data : (data && data.models ? data.models : []);
|
||||
|
||||
var container = E('div', { 'class': 'localai-chat' }, [
|
||||
E('style', {}, this.getCSS()),
|
||||
|
||||
@ -75,10 +75,13 @@ return view.extend({
|
||||
callHealth(),
|
||||
callMetrics()
|
||||
]).then(function(results) {
|
||||
console.log('LocalAI Dashboard RPC results:', JSON.stringify(results));
|
||||
// RPC with expect returns arrays directly, not wrapped objects
|
||||
var modelsData = Array.isArray(results[1]) ? results[1] : [];
|
||||
return {
|
||||
status: results[0] || {},
|
||||
models: results[1] || { models: [] },
|
||||
health: results[2] || { healthy: false },
|
||||
models: modelsData,
|
||||
health: results[2] || {},
|
||||
metrics: results[3] || {}
|
||||
};
|
||||
});
|
||||
@ -117,7 +120,7 @@ return view.extend({
|
||||
E('span', { 'class': 'lai-quick-stat-label' }, _('Models'))
|
||||
]),
|
||||
E('div', { 'class': 'lai-quick-stat-value', 'id': 'models-count' },
|
||||
(data.models.models || []).length.toString()
|
||||
(data.models || []).length.toString()
|
||||
),
|
||||
E('div', { 'class': 'lai-quick-stat-sub' }, _('Installed'))
|
||||
]),
|
||||
@ -216,11 +219,11 @@ return view.extend({
|
||||
_('Installed Models')
|
||||
]),
|
||||
E('div', { 'class': 'lai-card-badge' },
|
||||
(data.models.models || []).length + ' ' + _('models')
|
||||
(data.models || []).length + ' ' + _('models')
|
||||
)
|
||||
]),
|
||||
E('div', { 'class': 'lai-card-body' }, [
|
||||
this.renderModelsList(data.models.models || [])
|
||||
this.renderModelsList(data.models || [])
|
||||
])
|
||||
])
|
||||
]),
|
||||
|
||||
@ -35,12 +35,20 @@ return view.extend({
|
||||
title: _('LocalAI Models'),
|
||||
|
||||
load: function() {
|
||||
return callModels();
|
||||
return callModels().then(function(result) {
|
||||
console.log('LocalAI models RPC result:', JSON.stringify(result));
|
||||
return result;
|
||||
}).catch(function(err) {
|
||||
console.error('LocalAI models RPC error:', err);
|
||||
return { models: [] };
|
||||
});
|
||||
},
|
||||
|
||||
render: function(data) {
|
||||
var self = this;
|
||||
var models = data.models || [];
|
||||
console.log('LocalAI render data:', JSON.stringify(data));
|
||||
// RPC with expect returns array directly, not {models: [...]}
|
||||
var models = Array.isArray(data) ? data : (data && data.models ? data.models : []);
|
||||
|
||||
var presets = [
|
||||
{ name: 'tinyllama', desc: 'TinyLlama 1.1B - Ultra-lightweight', size: '669 MB' },
|
||||
|
||||
Loading…
Reference in New Issue
Block a user