Archived
2
0

update editor

This commit is contained in:
overcuriousity 2025-07-15 22:50:21 +02:00
parent a057120d7a
commit e62253858e

View File

@ -442,6 +442,10 @@
<div class="stat-number" id="selfHostedCount">0</div>
<div class="stat-label">Self-Hosted</div>
</div>
<div class="stat-card">
<div class="stat-number" id="knowledgebaseCount">0</div>
<div class="stat-label">Knowledgebase</div>
</div>
</div>
<div class="form-section">
@ -460,7 +464,7 @@
<!-- Tools Tab -->
<div id="tools" class="tab-content">
<input type="text" class="search-bar" id="searchBar" placeholder="🔍 Search tools by name, description, tags, or domains..." onkeyup="filterTools()" />
<input type="text" class="search-bar" id="searchBar" placeholder="🔍 Search tools by name, description, tags, domains, or 'knowledgebase'..." onkeyup="filterTools()" />
<div class="tools-grid" id="toolsGrid"></div>
</div>
@ -521,6 +525,13 @@
</div>
</div>
<div class="form-group">
<div class="checkbox-item">
<input type="checkbox" id="knowledgebase" />
<label for="knowledgebase">📚 Knowledgebase Tool</label>
</div>
</div>
<div class="form-group">
<label>Platforms</label>
<div class="checkbox-group" id="platformsCheckbox">
@ -589,15 +600,20 @@
</div>
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 15px; margin-top: 15px;">
<button class="btn" onclick="bulkSetKnowledgebase(true)">📚 Set as Knowledgebase</button>
<button class="btn" onclick="bulkSetKnowledgebase(false)">📖 Remove Knowledgebase</button>
<button class="btn" onclick="bulkClearField('tags')">🗑️ Clear All Tags</button>
<button class="btn" onclick="bulkClearField('domains')">🗑️ Clear All Domains</button>
<button class="btn" onclick="bulkClearField('phases')">🗑️ Clear All Phases</button>
<button class="btn" onclick="bulkClearField('platforms')">🗑️ Clear All Platforms</button>
</div>
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 15px; margin-top: 15px;">
<button class="btn" onclick="bulkClearField('phases')">🗑️ Clear All Phases</button>
<button class="btn" onclick="bulkClearField('platforms')">🗑️ Clear All Platforms</button>
<button class="btn" onclick="bulkClearField('url')">🗑️ Clear All URLs</button>
<button class="btn" onclick="bulkClearField('projectUrl')">🗑️ Clear Project URLs</button>
</div>
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 15px; margin-top: 15px;">
<button class="btn" onclick="bulkClearField('statusUrl')">🗑️ Clear Status URLs</button>
<button class="btn btn-danger" onclick="bulkDelete()">🗑️ Delete Selected</button>
</div>
@ -777,6 +793,9 @@ phases:
const selfHosted = tools.filter(tool => tool.accessType === 'self-hosted').length;
document.getElementById('selfHostedCount').textContent = selfHosted;
const knowledgebaseTools = tools.filter(tool => tool.knowledgebase === true).length;
document.getElementById('knowledgebaseCount').textContent = knowledgebaseTools;
// Update tag analytics
updateTagAnalytics();
@ -923,10 +942,14 @@ phases:
const skillClass = `skill-${tool.skillLevel || 'intermediate'}`;
const tags = (tool.tags || []).map(tag => `<span class="tag">${tag}</span>`).join('');
const knowledgebaseIndicator = tool.knowledgebase ? '<span class="tag" style="background: #e8f5e8; color: #27ae60; font-weight: bold;">📚 Knowledgebase</span>' : '';
card.innerHTML = `
<h3>${tool.name}</h3>
<div style="margin: 5px 0;">
<div class="skill-badge ${skillClass}">${tool.skillLevel || 'intermediate'}</div>
${knowledgebaseIndicator}
</div>
<p>${tool.description}</p>
<div style="margin: 10px 0;">${tags}</div>
<div style="margin-top: 15px;">
@ -944,11 +967,13 @@ phases:
const skillClass = `skill-${tool.skillLevel || 'intermediate'}`;
const isSelected = selectedTools.has(index);
const knowledgebaseIndicator = tool.knowledgebase ? '<span class="tag" style="background: #e8f5e8; color: #27ae60; font-weight: bold; margin-left: 10px;">📚 KB</span>' : '';
card.innerHTML = `
<div style="display: flex; align-items: center; gap: 10px; margin-bottom: 10px;">
<input type="checkbox" ${isSelected ? 'checked' : ''} onchange="toggleToolSelection(${index})" />
<h3 style="margin: 0;">${tool.name}</h3>
${knowledgebaseIndicator}
</div>
<div class="skill-badge ${skillClass}">${tool.skillLevel || 'intermediate'}</div>
<p>${tool.description}</p>
@ -981,7 +1006,8 @@ phases:
...(tool.platforms || []),
tool.skillLevel || '',
tool.license || '',
tool.accessType || ''
tool.accessType || '',
tool.knowledgebase ? 'knowledgebase' : ''
].join(' ').toLowerCase();
if (searchableText.includes(searchTerm)) {
@ -1013,6 +1039,7 @@ phases:
document.getElementById('license').value = tool.license || '';
document.getElementById('accessType').value = tool.accessType || '';
document.getElementById('statusUrl').value = tool.statusUrl || '';
document.getElementById('knowledgebase').checked = tool.knowledgebase || false;
// Set platforms
const platforms = tool.platforms || [];
@ -1095,6 +1122,7 @@ phases:
url: document.getElementById('url').value,
projectUrl: document.getElementById('projectUrl').value,
license: document.getElementById('license').value,
knowledgebase: document.getElementById('knowledgebase').checked,
tags: getTags()
};
@ -1253,6 +1281,30 @@ phases:
}
}
function bulkSetKnowledgebase(value) {
if (selectedTools.size === 0) {
alert('No tools selected');
return;
}
const action = value ? 'set as knowledgebase' : 'remove knowledgebase flag from';
if (!confirm(`Are you sure you want to ${action} ${selectedTools.size} selected tools?`)) {
return;
}
selectedTools.forEach(index => {
if (yamlData.tools[index]) {
yamlData.tools[index].knowledgebase = value;
}
});
const actionCompleted = value ? 'marked as knowledgebase' : 'removed knowledgebase flag from';
alert(`Successfully ${actionCompleted} ${selectedTools.size} tools`);
updateStats(); // Refresh knowledgebase count
renderBulkGrid();
}
function bulkClearField(fieldName) {
if (selectedTools.size === 0) {
alert('No tools selected');