iteration 2
This commit is contained in:
parent
4edb0f0000
commit
4ba29227ab
@ -103,6 +103,61 @@ const tools = data.tools;
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<!-- NIST Methodology Section -->
|
||||||
|
<section id="methodology-section" class="methodology-section">
|
||||||
|
<div class="methodology-header">
|
||||||
|
<h3>NIST SP 800-86 Forensische Methodik</h3>
|
||||||
|
<p class="methodology-subtitle">
|
||||||
|
Wählen Sie eine Phase aus dem bewährten Vier-Phasen-Modell
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="nist-workflow">
|
||||||
|
<div class="phase-card collection" onclick="selectPhase('data-collection')">
|
||||||
|
<div class="phase-number">1</div>
|
||||||
|
<div class="phase-title">Datensammlung</div>
|
||||||
|
<p class="phase-description">
|
||||||
|
Beweismittel identifizieren, sichern und für die Analyse vorbereiten
|
||||||
|
</p>
|
||||||
|
<span class="tool-count">{tools.filter(t => t.phases?.includes('data-collection')).length} Tools</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="phase-card examination" onclick="selectPhase('examination')">
|
||||||
|
<div class="phase-number">2</div>
|
||||||
|
<div class="phase-title">Auswertung</div>
|
||||||
|
<p class="phase-description">
|
||||||
|
Daten extrahieren, strukturiert aufbereiten und zugänglich machen
|
||||||
|
</p>
|
||||||
|
<span class="tool-count">{tools.filter(t => t.phases?.includes('examination')).length} Tools</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="phase-card analysis" onclick="selectPhase('analysis')">
|
||||||
|
<div class="phase-number">3</div>
|
||||||
|
<div class="phase-title">Analyse</div>
|
||||||
|
<p class="phase-description">
|
||||||
|
Beweise bewerten, Zusammenhänge erkennen und Hypothesen prüfen
|
||||||
|
</p>
|
||||||
|
<span class="tool-count">{tools.filter(t => t.phases?.includes('analysis')).length} Tools</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="phase-card reporting" onclick="selectPhase('reporting')">
|
||||||
|
<div class="phase-number">4</div>
|
||||||
|
<div class="phase-title">Bericht</div>
|
||||||
|
<p class="phase-description">
|
||||||
|
Ergebnisse dokumentieren, visualisieren und präsentieren
|
||||||
|
</p>
|
||||||
|
<span class="tool-count">{tools.filter(t => t.phases?.includes('reporting')).length} Tools</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="methodology-tip">
|
||||||
|
<p>
|
||||||
|
<strong>Tipp:</strong> Für komplexe Ermittlungen empfiehlt sich das sequenzielle Durchlaufen aller Phasen.
|
||||||
|
Jede Phase baut methodisch auf der vorherigen auf.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
<section id="filters-section" style="padding: 2rem 0;">
|
<section id="filters-section" style="padding: 2rem 0;">
|
||||||
<div style="text-align: center; margin-bottom: 2rem;">
|
<div style="text-align: center; margin-bottom: 2rem;">
|
||||||
<h3 style="color: var(--color-text); margin-bottom: 0.5rem;">Alle verfügbaren Werkzeuge durchsuchen</h3>
|
<h3 style="color: var(--color-text); margin-bottom: 0.5rem;">Alle verfügbaren Werkzeuge durchsuchen</h3>
|
||||||
@ -132,6 +187,7 @@ const tools = data.tools;
|
|||||||
|
|
||||||
<script define:vars={{ toolsData: data.tools }}>
|
<script define:vars={{ toolsData: data.tools }}>
|
||||||
window.toolsData = toolsData;
|
window.toolsData = toolsData;
|
||||||
|
|
||||||
// Approach selection functionality
|
// Approach selection functionality
|
||||||
window.selectApproach = function(approach) {
|
window.selectApproach = function(approach) {
|
||||||
console.log(`Selected approach: ${approach}`);
|
console.log(`Selected approach: ${approach}`);
|
||||||
@ -147,15 +203,11 @@ const tools = data.tools;
|
|||||||
document.querySelector(`.approach-card.${approach}`).classList.add('selected');
|
document.querySelector(`.approach-card.${approach}`).classList.add('selected');
|
||||||
|
|
||||||
if (approach === 'methodology') {
|
if (approach === 'methodology') {
|
||||||
// Show NIST methodology section (implemented in Phase 2)
|
// Show NIST methodology section
|
||||||
const methodologySection = document.getElementById('methodology-section');
|
const methodologySection = document.getElementById('methodology-section');
|
||||||
if (methodologySection) {
|
if (methodologySection) {
|
||||||
methodologySection.classList.add('active');
|
methodologySection.classList.add('active');
|
||||||
methodologySection.scrollIntoView({ behavior: 'smooth', block: 'start' });
|
methodologySection.scrollIntoView({ behavior: 'smooth', block: 'start' });
|
||||||
} else {
|
|
||||||
// For now, show a placeholder message
|
|
||||||
alert('NIST-Methodologie wird in Phase 2 implementiert. Verwenden Sie vorerst die Standard-Werkzeugauswahl unten.');
|
|
||||||
document.getElementById('filters-section').scrollIntoView({ behavior: 'smooth' });
|
|
||||||
}
|
}
|
||||||
} else if (approach === 'targeted') {
|
} else if (approach === 'targeted') {
|
||||||
// Show targeted scenarios section (implemented in Phase 3)
|
// Show targeted scenarios section (implemented in Phase 3)
|
||||||
@ -170,6 +222,40 @@ const tools = data.tools;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Phase selection function (integrates with existing ToolFilters)
|
||||||
|
window.selectPhase = function(phase) {
|
||||||
|
console.log(`Selected NIST phase: ${phase}`);
|
||||||
|
|
||||||
|
// Remove active class from all phase cards
|
||||||
|
document.querySelectorAll('.phase-card').forEach(card => {
|
||||||
|
card.classList.remove('active');
|
||||||
|
});
|
||||||
|
|
||||||
|
// Add active class to selected phase
|
||||||
|
document.querySelector(`.phase-card.${phase.replace('data-', '')}`).classList.add('active');
|
||||||
|
|
||||||
|
// Use existing phase filter functionality
|
||||||
|
const existingPhaseButton = document.querySelector(`[data-phase="${phase}"]`);
|
||||||
|
if (existingPhaseButton && !existingPhaseButton.classList.contains('active')) {
|
||||||
|
existingPhaseButton.click();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Switch to grid view to show results
|
||||||
|
const gridToggle = document.querySelector('.view-toggle[data-view="grid"]');
|
||||||
|
if (gridToggle && !gridToggle.classList.contains('active')) {
|
||||||
|
gridToggle.click();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Scroll to results after a short delay
|
||||||
|
setTimeout(() => {
|
||||||
|
const toolsGrid = document.getElementById('tools-grid');
|
||||||
|
if (toolsGrid) {
|
||||||
|
toolsGrid.scrollIntoView({ behavior: 'smooth', block: 'start' });
|
||||||
|
}
|
||||||
|
}, 300);
|
||||||
|
};
|
||||||
|
|
||||||
document.addEventListener('DOMContentLoaded', () => {
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
const toolsContainer = document.getElementById('tools-container');
|
const toolsContainer = document.getElementById('tools-container');
|
||||||
const toolsGrid = document.getElementById('tools-grid');
|
const toolsGrid = document.getElementById('tools-grid');
|
||||||
|
@ -954,6 +954,15 @@ input[type="checkbox"] {
|
|||||||
margin-bottom: 0.5rem;
|
margin-bottom: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.tool-count {
|
||||||
|
background: var(--color-bg-tertiary);
|
||||||
|
padding: 0.25rem 0.75rem;
|
||||||
|
border-radius: 1rem;
|
||||||
|
font-size: 0.75rem;
|
||||||
|
color: var(--color-text-secondary);
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
/* AI Interface - Consolidated */
|
/* AI Interface - Consolidated */
|
||||||
.ai-interface {
|
.ai-interface {
|
||||||
padding: 2rem 0;
|
padding: 2rem 0;
|
||||||
@ -1071,26 +1080,31 @@ input[type="checkbox"] {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.phase-number {
|
.phase-number {
|
||||||
background-color: var(--color-primary);
|
width: 2rem;
|
||||||
|
height: 2rem;
|
||||||
|
background: var(--phase-color);
|
||||||
color: white;
|
color: white;
|
||||||
width: 2.5rem;
|
|
||||||
height: 2.5rem;
|
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
font-size: 1.125rem;
|
margin: 0 auto 0.75rem;
|
||||||
flex-shrink: 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.phase-info { flex: 1; min-width: 0; }
|
.phase-info { flex: 1; min-width: 0; }
|
||||||
|
|
||||||
.phase-title {
|
.phase-title {
|
||||||
margin: 0 0 1rem;
|
|
||||||
color: var(--color-text);
|
|
||||||
font-size: 1.25rem;
|
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
color: var(--color-text);
|
||||||
|
}
|
||||||
|
|
||||||
|
.phase-description {
|
||||||
|
font-size: 0.8125rem;
|
||||||
|
color: var(--color-text-secondary);
|
||||||
|
margin-bottom: 0.75rem;
|
||||||
|
line-height: 1.4;
|
||||||
}
|
}
|
||||||
|
|
||||||
.phase-tools {
|
.phase-tools {
|
||||||
@ -1099,6 +1113,43 @@ input[type="checkbox"] {
|
|||||||
gap: 1rem;
|
gap: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.phase-card {
|
||||||
|
background: var(--color-bg-secondary);
|
||||||
|
border: 2px solid var(--color-border);
|
||||||
|
border-radius: 0.5rem;
|
||||||
|
padding: 1.5rem;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: var(--transition-fast);
|
||||||
|
text-align: center;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.phase-card::before {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
height: 3px;
|
||||||
|
background: var(--phase-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.phase-card.collection { --phase-color: #3b82f6; }
|
||||||
|
.phase-card.examination { --phase-color: #8b5cf6; }
|
||||||
|
.phase-card.analysis { --phase-color: #f59e0b; }
|
||||||
|
.phase-card.reporting { --phase-color: #ef4444; }
|
||||||
|
|
||||||
|
.phase-card:hover {
|
||||||
|
transform: translateY(-2px);
|
||||||
|
border-color: var(--phase-color);
|
||||||
|
box-shadow: var(--shadow-md);
|
||||||
|
}
|
||||||
|
|
||||||
|
.phase-card.active {
|
||||||
|
border-color: var(--phase-color);
|
||||||
|
background: linear-gradient(135deg, var(--color-bg) 0%, color-mix(in srgb, var(--phase-color) 8%, transparent) 100%);
|
||||||
|
}
|
||||||
|
|
||||||
.workflow-arrow {
|
.workflow-arrow {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
@ -1878,6 +1929,10 @@ footer {
|
|||||||
padding: 0.625rem 1.25rem;
|
padding: 0.625rem 1.25rem;
|
||||||
font-size: 0.8125rem;
|
font-size: 0.8125rem;
|
||||||
}
|
}
|
||||||
|
.nist-workflow {
|
||||||
|
grid-template-columns: 1fr 1fr;
|
||||||
|
gap: 0.75rem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (width <= 640px) {
|
@media (width <= 640px) {
|
||||||
@ -2056,6 +2111,9 @@ footer {
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
max-width: 280px;
|
max-width: 280px;
|
||||||
}
|
}
|
||||||
|
.nist-workflow {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Smart Prompting Styles - Simplified */
|
/* Smart Prompting Styles - Simplified */
|
||||||
@ -2632,3 +2690,53 @@ footer {
|
|||||||
padding: 0.75rem 1.5rem;
|
padding: 0.75rem 1.5rem;
|
||||||
font-size: 0.875rem;
|
font-size: 0.875rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.methodology-section {
|
||||||
|
background: var(--color-bg);
|
||||||
|
border: 1px solid var(--color-border);
|
||||||
|
border-radius: 0.75rem;
|
||||||
|
padding: 2rem;
|
||||||
|
margin: 2rem 0;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.methodology-section.active {
|
||||||
|
display: block;
|
||||||
|
animation: fadeInUp 0.5s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.methodology-header {
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.methodology-header h3 {
|
||||||
|
color: var(--color-primary);
|
||||||
|
font-size: 1.5rem;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.methodology-subtitle {
|
||||||
|
color: var(--color-text-secondary);
|
||||||
|
font-size: 0.875rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.methodology-tip {
|
||||||
|
text-align: center;
|
||||||
|
padding: 1.5rem;
|
||||||
|
background: var(--color-bg-secondary);
|
||||||
|
border-radius: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.methodology-tip p {
|
||||||
|
color: var(--color-text-secondary);
|
||||||
|
margin: 0;
|
||||||
|
font-size: 0.875rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nist-workflow {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(4, 1fr);
|
||||||
|
gap: 1rem;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user