fix(ui): show services in settings page
This commit is contained in:
@@ -71,6 +71,7 @@
|
|||||||
"src/gateway/handlers/handlers.test.ts",
|
"src/gateway/handlers/handlers.test.ts",
|
||||||
"src/gateway/server.ts",
|
"src/gateway/server.ts",
|
||||||
"src/gateway/ui/pages/dashboard.js",
|
"src/gateway/ui/pages/dashboard.js",
|
||||||
|
"src/gateway/ui/pages/settings.js",
|
||||||
"src/gateway/ui/style.css"
|
"src/gateway/ui/style.css"
|
||||||
],
|
],
|
||||||
"test_status": "pnpm test:run src/gateway/handlers/services.test.ts src/gateway/handlers/handlers.test.ts + pnpm typecheck passing"
|
"test_status": "pnpm test:run src/gateway/handlers/services.test.ts src/gateway/handlers/handlers.test.ts + pnpm typecheck passing"
|
||||||
|
|||||||
@@ -17,13 +17,14 @@ let _el = null;
|
|||||||
async function loadSettings() {
|
async function loadSettings() {
|
||||||
if (!_client || !_el) {return;}
|
if (!_client || !_el) {return;}
|
||||||
|
|
||||||
let config, tools, channels;
|
let config, tools, channels;
|
||||||
|
let services;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
[config, tools, channels] = await Promise.all([
|
[config, tools, services] = await Promise.all([
|
||||||
_client.call('config.get'),
|
_client.call('config.get'),
|
||||||
_client.call('tools.list'),
|
_client.call('tools.list'),
|
||||||
_client.call('system.channels'),
|
_client.call('system.services'),
|
||||||
]);
|
]);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
_el.innerHTML = `
|
_el.innerHTML = `
|
||||||
@@ -45,8 +46,8 @@ async function loadSettings() {
|
|||||||
// Build tool list
|
// Build tool list
|
||||||
const toolList = tools?.tools ?? [];
|
const toolList = tools?.tools ?? [];
|
||||||
|
|
||||||
// Build channel list
|
// Build services list
|
||||||
const channelList = channels?.channels ?? [];
|
const serviceList = services?.services ?? [];
|
||||||
|
|
||||||
_el.innerHTML = `
|
_el.innerHTML = `
|
||||||
<h1 class="page-title">Settings</h1>
|
<h1 class="page-title">Settings</h1>
|
||||||
@@ -95,18 +96,33 @@ async function loadSettings() {
|
|||||||
` : '<div class="empty-state">No tools available</div>'}
|
` : '<div class="empty-state">No tools available</div>'}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h2 class="section-title">Channels</h2>
|
<h2 class="section-title">Services</h2>
|
||||||
<div class="settings-section">
|
<div class="settings-section">
|
||||||
${channelList.length > 0 ? `
|
${serviceList.length > 0 ? `
|
||||||
<div class="channels-grid">
|
<div class="services-grid">
|
||||||
${channelList.map(ch => `
|
${serviceList.map(svc => {
|
||||||
<div class="channel-card">
|
const typeIcon = svc.type === 'channel' ? '📡' : svc.type === 'automation' ? '⚙️' : '🔧';
|
||||||
<span class="channel-dot ${ch.status}"></span>
|
const statusClass = svc.status === 'connected'
|
||||||
<span class="channel-name">${escapeHtml(ch.name)}</span>
|
? 'connected'
|
||||||
</div>
|
: svc.status === 'configured'
|
||||||
`).join('')}
|
? 'configured'
|
||||||
|
: svc.status === 'error'
|
||||||
|
? 'error'
|
||||||
|
: svc.status === 'not_configured'
|
||||||
|
? 'not-configured'
|
||||||
|
: 'disconnected';
|
||||||
|
const itemCount = svc.itemCount ? ` (${svc.itemCount})` : '';
|
||||||
|
return `
|
||||||
|
<div class="service-card service-${statusClass}">
|
||||||
|
<span class="service-type-icon">${typeIcon}</span>
|
||||||
|
<span class="service-name">${escapeHtml(svc.name)}${itemCount}</span>
|
||||||
|
<span class="service-status">${escapeHtml(svc.status)}</span>
|
||||||
|
<span class="service-description text-muted text-xs">${escapeHtml(svc.description ?? '')}</span>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
}).join('')}
|
||||||
</div>
|
</div>
|
||||||
` : '<div class="text-muted text-sm">No channels registered</div>'}
|
` : '<div class="text-muted text-sm">No services found</div>'}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h2 class="section-title">Configuration (read-only)</h2>
|
<h2 class="section-title">Configuration (read-only)</h2>
|
||||||
|
|||||||
Reference in New Issue
Block a user