From e62253858e1c928883fb82644ab8a7495bcf6082 Mon Sep 17 00:00:00 2001 From: overcuriousity Date: Tue, 15 Jul 2025 22:50:21 +0200 Subject: [PATCH] update editor --- dfir_yaml_editor.html | 62 +++++++++++++++++++++++++++++++++++++++---- 1 file changed, 57 insertions(+), 5 deletions(-) diff --git a/dfir_yaml_editor.html b/dfir_yaml_editor.html index 8e86706..12cdb33 100644 --- a/dfir_yaml_editor.html +++ b/dfir_yaml_editor.html @@ -442,6 +442,10 @@
0
Self-Hosted
+
+
0
+
Knowledgebase
+
@@ -460,7 +464,7 @@
- +
@@ -521,6 +525,13 @@
+
+
+ + +
+
+
@@ -589,15 +600,20 @@
+ + - -
+ + +
+ +
@@ -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 => `${tag}`).join(''); + const knowledgebaseIndicator = tool.knowledgebase ? '📚 Knowledgebase' : ''; card.innerHTML = `

${tool.name}

-
${tool.skillLevel || 'intermediate'}
+
+
${tool.skillLevel || 'intermediate'}
+ ${knowledgebaseIndicator} +

${tool.description}

${tags}
@@ -944,11 +967,13 @@ phases: const skillClass = `skill-${tool.skillLevel || 'intermediate'}`; const isSelected = selectedTools.has(index); + const knowledgebaseIndicator = tool.knowledgebase ? '📚 KB' : ''; card.innerHTML = `

${tool.name}

+ ${knowledgebaseIndicator}
${tool.skillLevel || 'intermediate'}

${tool.description}

@@ -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');