function buildRNA(dnaData) { if (!dnaData) { var visibleArea = visibleList('isVisible'); var activeScreen = visibleList(visibleArea); dnaData = activeScreen.firstElementChild.getAttribute('data-dna'); } if (dnaData) { var originalDNA = safeParse(dnaData); // Roh-Daten var rna = {}; // Analysierte Version for (var field in originalDNA) { if (originalDNA.hasOwnProperty(field)) { var rawValue = originalDNA[field]; var analyzed = analyzeValue(field, rawValue); if (analyzed) { rna[field] = analyzed; } } } return JSON.stringify(rna); } return '{}'; } function buildSVGs(containerId) { var allSVGs = []; for (var key in svgIcons) { if (svgIcons.hasOwnProperty(key)) { var clone = svgIcons[key].cloneNode(true); allSVGs.push(clone); } } // 2. Testa ogni SVG contro la DNA attiva var activeRNA =buildRNA(); // La DNA corrente var usefulSVGs = []; allSVGs.forEach(function(svg) { // Check se ha già source (già utile) if (svg.getAttribute('source') && svg.getAttribute('source').length > 0) { usefulSVGs.push(svg); return; } // Analizza se può essere utile var trigger = svg.getAttribute('trigger'); // es. ".mp3" if (!trigger) return; // Cerca nella DNA attiva var foundMatch = false; for (var field in activeRNA) { if (activeDNA.hasOwnProperty(field)) { var item = activeRNA[field]; if (item.type && item.type.includes(trigger) || item.type && trigger.includes(item.type)) { // Trovato match! SVG è utile svg.setAttribute('source', item.content); svg.setAttribute('active', 'armed'); svg.style.backgroundColor = randomColor(); usefulSVGs.push(svg); foundMatch = true; break; } } } // Se nessun match, SVG è inutile → non viene aggiunto if (!foundMatch) { console.log('SVG inutile rimosso:', svg.getAttribute('trigger')); } }); // 3. Mostra solo gli SVG utili var container = document.getElementById(containerId); container.innerHTML = ''; // Pulisci usefulSVGs.forEach(function(svg) { container.appendChild(svg); }); return usefulSVGs.length; } function analyzeValue(fieldName,enteredContent) { generates : dna = {}; dna[fieldName]= {id:..., type: '.mp3' , content: 'https:/xyz/mymusic.mp3' } } mp4: ` `, var rclick = function triggerContextMenu(ev) { var element = ev.target; var rightClick = new MouseEvent('contextmenu', { bubbles: true, cancelable: true, view: window, button: 2, // Right button buttons: 2, clientX: ev.clientX, // WICHTIG: Position vom originalen Event clientY: ev.clientY // sonst öffnet sich Menu woanders });