Widget:RuneDisp4: Difference between revisions

From Runecraft Wiki
Jump to navigation Jump to search
(Undo revision 782 by Penguin (talk))
Tag: Undo
No edit summary
Tag: Reverted
Line 29: Line 29:
// Create a listener for creating dropdown elements when loaded
// Create a listener for creating dropdown elements when loaded
modelViewerLayers.addEventListener('load', () => {
modelViewerLayers.addEventListener('load', () => {
    const lyr = document.getElementById("layer4");


//Set default
    if (!lyr) return; // Prevents errors if #layer4 is missing
const option = document.createElement('option');


//brief break to clear repeated options
    // Clear existing options
const lyr = document.getElementById("layer4");
    lyr.innerHTML = '';


// Ensure the element exists before modifying it
    // Add "Full Rune" as default option
if (lyr) {
    const defaultOption = document.createElement('option');
    while (lyr.firstChild) {
    defaultOption.value = 'default';
         lyr.removeChild(lyr.firstChild);
    defaultOption.textContent = 'Full Rune';
    lyr.appendChild(defaultOption);
 
    // Reverse the runefiles array *without modifying the original*
    const reversedRunes = [...runefiles].reverse();
 
    let index = reversedRunes.length; // Start from highest layer number
 
    for (const rne of reversedRunes) {
        const option = document.createElement('option');
        option.value = rne;
        option.textContent = (index == activationlayer) ? 'Activation Layer' : `Layer ${index}`;
         lyr.appendChild(option);
        index--;
     }
     }
}
 
    console.log("Dropdown updated with layers:", lyr.innerHTML);
});
 





Revision as of 14:07, 13 February 2025

<script type="module" src="https://ajax.googleapis.com/ajax/libs/model-viewer/3.5.0/model-viewer.min.js"></script> <script type="text/javascript"> var bg_box = document.getElementById("bg_box4");

// Read in given arguments var runefile = ; var multilayer = ; var activationlayer = ;

// Initialize & fill runefiles w/ smarty script

var runefiles = [ , ];

// Single rune case - very simple. if (multilayer == "false") { bg_box.innerHTML += '<model-viewer id="MLrune4" bounds="tight" src="' + runefile + '" ar ar-modes="scene-viewer webxr quick-look" camera-controls poster="poster.webp" shadow-intensity="1" environment-image="neutral" exposure="1" camera-orbit="0deg 65deg auto"></model-viewer>';

} else {

// Not so simple case - render normally to start

bg_box.innerHTML += '<model-viewer id="MLrune4" bounds="tight" src="' + runefile + '" ar ar-modes="scene-viewer webxr quick-look" camera-controls poster="poster.webp" shadow-intensity="1" environment-image="neutral" exposure="1" camera-orbit="0deg 65deg auto">

Layer: <select id="layer4"></select>

</model-viewer>';

// Define DOM elements for later use const modelViewerLayers = document.querySelector("model-viewer#MLrune4"); const select = document.querySelector('#layer4');

// Create a listener for creating dropdown elements when loaded modelViewerLayers.addEventListener('load', () => {

   const lyr = document.getElementById("layer4");
   if (!lyr) return; // Prevents errors if #layer4 is missing
   // Clear existing options
   lyr.innerHTML = ;
   // Add "Full Rune" as default option
   const defaultOption = document.createElement('option');
   defaultOption.value = 'default';
   defaultOption.textContent = 'Full Rune';
   lyr.appendChild(defaultOption);
   // Reverse the runefiles array *without modifying the original*
   const reversedRunes = [...runefiles].reverse();
   let index = reversedRunes.length; // Start from highest layer number
   for (const rne of reversedRunes) {
       const option = document.createElement('option');
       option.value = rne;
       option.textContent = (index == activationlayer) ? 'Activation Layer' : `Layer ${index}`;
       lyr.appendChild(option);
       index--;
   }
   console.log("Dropdown updated with layers:", lyr.innerHTML);

});



option.value = 'default'; option.textContent = 'Full Rune'; select.appendChild(option);

// Internal variable manipulation to get the orders right var reversedRunes = runefiles.reverse(); var length = reversedRunes.length;

// Auto fill all other variable options for (const rne of reversedRunes) { const option = document.createElement('option'); option.value = rne; if (length == activationlayer) { option.textContent = 'Activation Layer'; } else { option.textContent = 'Layer ' + length; } select.appendChild(option); length--; }

});

// Create listener for element selection select.addEventListener('input', (event) => { modelViewerLayers.src = event.target.value === 'default' ? runefile : event.target.value; });

// Set model viewer size document.getElementById("MLrune4").style.height = "250px"; }

</script>