|  |  | 
					
						
						|  |  | 
					
						
						|  | function enhanceSVGContent(originalContent) { | 
					
						
						|  | const parser = new DOMParser(); | 
					
						
						|  | const doc = parser.parseFromString(originalContent, 'image/svg+xml'); | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | const styleElement = doc.createElementNS('http://www.w3.org/2000/svg', 'style'); | 
					
						
						|  | styleElement.textContent = ` | 
					
						
						|  | path[data-element-type="layer"] { | 
					
						
						|  | transition: all 0.3s; | 
					
						
						|  | cursor: pointer; | 
					
						
						|  | } | 
					
						
						|  | path[data-element-type="layer"]:hover { | 
					
						
						|  | fill: #b197fc !important; | 
					
						
						|  | transform: translate(0, -2px); | 
					
						
						|  | } | 
					
						
						|  |  | 
					
						
						|  | path[data-element-type="layer-updated"] { | 
					
						
						|  | transition: all 0.3s; | 
					
						
						|  | cursor: pointer; | 
					
						
						|  | } | 
					
						
						|  |  | 
					
						
						|  | path[data-element-type="layer-updated"]:hover { | 
					
						
						|  | fill:rgb(103, 56, 244) !important; | 
					
						
						|  | transform: scale(1.02); | 
					
						
						|  | transform: translate(0, -2px); | 
					
						
						|  | } | 
					
						
						|  |  | 
					
						
						|  | path[data-element-type="gradient"] { | 
					
						
						|  | transition: all 0.3s; | 
					
						
						|  | cursor: pointer; | 
					
						
						|  | } | 
					
						
						|  | path[data-element-type="gradient"]:hover { | 
					
						
						|  | fill: #f06595 !important; | 
					
						
						|  | transform: translate(0, -2px); | 
					
						
						|  | } | 
					
						
						|  |  | 
					
						
						|  | path[data-element-type="forward"] { | 
					
						
						|  | transition: all 0.3s; | 
					
						
						|  | cursor: pointer; | 
					
						
						|  | } | 
					
						
						|  | path[data-element-type="forward"]:hover { | 
					
						
						|  | stroke: #0c8599 !important; | 
					
						
						|  | stroke-width: 4 !important; | 
					
						
						|  | } | 
					
						
						|  |  | 
					
						
						|  | path[data-element-type="backward"] { | 
					
						
						|  | transition: all 0.3s; | 
					
						
						|  | cursor: pointer; | 
					
						
						|  | } | 
					
						
						|  | path[data-element-type="backward"]:hover { | 
					
						
						|  | stroke: #e8590c !important; | 
					
						
						|  | stroke-width: 4 !important; | 
					
						
						|  | } | 
					
						
						|  |  | 
					
						
						|  | path[data-element-type="optimization"] { | 
					
						
						|  | transition: all 0.3s; | 
					
						
						|  | cursor: pointer; | 
					
						
						|  | } | 
					
						
						|  | path[data-element-type="optimization"]:hover { | 
					
						
						|  | stroke: #087f5b !important; | 
					
						
						|  | stroke-width: 4 !important; | 
					
						
						|  | } | 
					
						
						|  | `; | 
					
						
						|  | doc.documentElement.insertBefore(styleElement, doc.documentElement.firstChild); | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | doc.querySelectorAll('path[fill="#d0bfff"]').forEach((node, index) => { | 
					
						
						|  | node.setAttribute('data-element-id', `layer-${index}`); | 
					
						
						|  | node.setAttribute('data-element-type', 'layer'); | 
					
						
						|  | }); | 
					
						
						|  |  | 
					
						
						|  | doc.querySelectorAll('path[fill="#9775fa"]').forEach((node, index) => { | 
					
						
						|  | node.setAttribute('data-element-id', `layer-updated-${index}`); | 
					
						
						|  | node.setAttribute('data-element-type', 'layer-updated'); | 
					
						
						|  | }); | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | doc.querySelectorAll('path[fill="#f783ac"]').forEach((node, index) => { | 
					
						
						|  | node.setAttribute('data-element-id', `gradient-${index}`); | 
					
						
						|  | node.setAttribute('data-element-type', 'gradient'); | 
					
						
						|  | }); | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | const arrowTypes = { | 
					
						
						|  | '#15aabf': 'forward', | 
					
						
						|  | '#fd7e14': 'backward', | 
					
						
						|  | '#099268': 'optimization' | 
					
						
						|  | }; | 
					
						
						|  |  | 
					
						
						|  | Object.entries(arrowTypes).forEach(([color, type]) => { | 
					
						
						|  | doc.querySelectorAll(`path[stroke="${color}"]`).forEach((arrow, index) => { | 
					
						
						|  | arrow.setAttribute('data-element-id', `${type}-${index}`); | 
					
						
						|  | arrow.setAttribute('data-element-type', type); | 
					
						
						|  | }); | 
					
						
						|  | }); | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | doc.documentElement.setAttribute('width', '100%'); | 
					
						
						|  | doc.documentElement.setAttribute('height', '100%'); | 
					
						
						|  | doc.documentElement.setAttribute('preserveAspectRatio', 'xMidYMid meet'); | 
					
						
						|  |  | 
					
						
						|  | return new XMLSerializer().serializeToString(doc); | 
					
						
						|  | } | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | async function loadSVG(url, containerId) { | 
					
						
						|  | try { | 
					
						
						|  | const response = await fetch(url); | 
					
						
						|  | if (!response.ok) { | 
					
						
						|  | throw new Error(`HTTP error! Status: ${response.status}`); | 
					
						
						|  | } | 
					
						
						|  | const svgText = await response.text(); | 
					
						
						|  | const enhancedSVG = enhanceSVGContent(svgText); | 
					
						
						|  | document.getElementById(containerId).innerHTML = enhancedSVG; | 
					
						
						|  | } catch (error) { | 
					
						
						|  | console.error('Error loading SVG:', error); | 
					
						
						|  | document.getElementById(containerId).innerHTML = '<p>Error loading SVG.</p>'; | 
					
						
						|  | } | 
					
						
						|  | } | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | loadSVG('../assets/images/activation_recomputation.svg', 'svg-activation_recomputation'); | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | const svgContainer3 = document.getElementById('svg-activation_recomputation'); | 
					
						
						|  |  | 
					
						
						|  | svgContainer3.addEventListener('mouseover', function (event) { | 
					
						
						|  | const target = event.target; | 
					
						
						|  | if (target.tagName.toLowerCase() === 'path' && target.hasAttribute('data-element-id')) { | 
					
						
						|  | const elementId = target.getAttribute('data-element-id'); | 
					
						
						|  | const elementType = target.getAttribute('data-element-type'); | 
					
						
						|  | const descriptions = { | 
					
						
						|  | layer: 'Neural Network Layer', | 
					
						
						|  | 'layer-updated': 'Neural Network Layer (updated)', | 
					
						
						|  | gradient: 'Gradient Update Layer', | 
					
						
						|  | forward: 'Forward Pass Connection', | 
					
						
						|  | backward: 'Backward Pass Connection', | 
					
						
						|  | optimization: 'Optimization Step' | 
					
						
						|  | }; | 
					
						
						|  | const description = descriptions[elementType] || elementType; | 
					
						
						|  | document.getElementById('svg-activation_recomputation-info').textContent = `Hovering over: ${description} (${elementId})`; | 
					
						
						|  | } | 
					
						
						|  | }); | 
					
						
						|  |  | 
					
						
						|  | svgContainer3.addEventListener('mouseout', function () { | 
					
						
						|  | document.getElementById('svg-activation_recomputation-info').textContent = 'Hover over the network elements to see their details'; | 
					
						
						|  | }); | 
					
						
						|  |  |