renderToolSelectionList()

in spring-ai-alibaba-jmanus/src/main/resources/static/admin/js/admin-ui.js [702:782]


    renderToolSelectionList(container, groupedTools) {
        let html = '';
        
        // 添加排序和过滤选项
        html += `
            <div class="tool-sort-options">
                <div class="sort-filter-row">
                    <label>排序方式:</label>
                    <select class="tool-sort-select">
                        <option value="group">按服务组排序</option>
                        <option value="name">按名称排序</option>
                        <option value="enabled">按启用状态排序</option>
                    </select>
                </div>
               
            </div>
        `;
        
        // 添加工具组计数统计
        const totalGroups = Object.keys(groupedTools).length;
        const totalTools = Object.values(groupedTools).reduce((sum, tools) => sum + tools.length, 0);
        
        html += `
            <div class="tool-summary">
                <span class="summary-text">共 ${totalGroups} 个服务组,${totalTools} 个工具</span>
            </div>
        `;
        
        // 遍历每个组
        Object.keys(groupedTools).sort().forEach((group, index) => {
            const tools = groupedTools[group];
            const enabledTools = tools.filter(tool => tool.isSelected).length;
            
            // 添加组标题,默认除第一个外都是收起状态
            const isCollapsed = index > 0 ? 'collapsed' : '';
            
            html += `
                <div class="tool-group">
                    <div class="tool-group-header" data-group="${group}" ${isCollapsed ? 'class="' + isCollapsed + '"' : ''}>
                        <div class="group-title-area">
                            <span class="group-icon">📁</span>
                            <span class="group-name">${group}</span>
                            <span class="group-count">(${enabledTools}/${tools.length})</span>
                        </div>
                        <div class="group-actions">
                            <label class="group-enable-all">
                                <input type="checkbox" class="group-enable-checkbox" ${enabledTools === tools.length ? 'checked' : ''}>
                                <span class="enable-label">启用全部</span>
                            </label>
                        </div>
                    </div>
                    <div class="tool-group-content ${isCollapsed}">
            `;
            
            // 添加该组下的所有工具
            tools.forEach(tool => {
                html += `
                    <div class="tool-selection-item" data-tool-key="${tool.key}" data-group="${group}">
                        <div class="tool-info">
                            <div class="tool-selection-name">${tool.name || tool.key}</div>
                            ${tool.description ? `<div class="tool-selection-desc">${tool.description}</div>` : ''}
                        </div>
                        <div class="tool-actions">
                            <label class="tool-enable-switch" title="${tool.isSelected ? '已启用' : '已禁用'}">
                                <input type="checkbox" class="tool-enable-checkbox" ${tool.isSelected ? 'checked' : ''}>
                                <span class="tool-enable-slider"></span>
                            </label>
                        </div>
                    </div>
                `;
            });
            
            // 关闭组容器
            html += `
                    </div>
                </div>
            `;
        });
        
        container.innerHTML = html;
    }