|
const modelViewer1 = document.getElementById('modelViewer1'); |
|
const modelViewer2 = document.getElementById('modelViewer2'); |
|
const tabButtons = document.querySelectorAll('.tab-button'); |
|
const allSubOptions = document.querySelectorAll('.tab-content input[type="radio"]'); |
|
const initialCameraOrbit1 = "177.62deg 96.26deg 4.65m"; |
|
const initialCameraOrbit2 = "-90.53deg 92.82deg 4.69m"; |
|
const resetvalue = "0deg -90deg 0deg"; |
|
|
|
document.addEventListener('DOMContentLoaded', function() { |
|
|
|
tabButtons.forEach(button => { |
|
button.addEventListener('click', function() { |
|
openTab(this.getAttribute('data-tab')); |
|
}); |
|
}); |
|
|
|
|
|
allSubOptions.forEach(option => option.addEventListener('change', function() { |
|
uncheckAllSubOptions(this.value); |
|
if(this.checked) { |
|
updateModels(this) ; |
|
} |
|
})); |
|
|
|
|
|
openTab('tab1'); |
|
|
|
}); |
|
|
|
function updateModels(selectedSubOption) { |
|
|
|
const modelPaths = getModelPaths(selectedSubOption.value); |
|
|
|
|
|
switch(selectedSubOption.value) { |
|
case 'option1c': |
|
cameraOrbit = initialCameraOrbit2; |
|
break; |
|
case 'option1d': |
|
cameraOrbit = initialCameraOrbit2; |
|
break; |
|
default: |
|
cameraOrbit = initialCameraOrbit1; |
|
} |
|
|
|
modelViewer1.setAttribute('src', modelPaths.model1Path); |
|
modelViewer1.addEventListener('load', () => { |
|
modelViewer1.setAttribute('orientation', resetvalue); |
|
modelViewer1.setAttribute('camera-orbit', cameraOrbit); |
|
modelViewer1.resetCamera(); |
|
}); |
|
|
|
modelViewer2.setAttribute('src', modelPaths.model2Path); |
|
modelViewer2.addEventListener('load', () => { |
|
modelViewer2.setAttribute('orientation', resetvalue); |
|
modelViewer2.setAttribute('camera-orbit', cameraOrbit); |
|
modelViewer2.resetCamera(); |
|
}); |
|
} |
|
|
|
function getModelPaths(optionValue) { |
|
switch (optionValue) { |
|
case 'option1a': |
|
return { model1Path: 'landscape/kodim08_50_ori.gltf', model2Path: 'landscape/kodim08_50_sh.gltf' }; |
|
case 'option1b': |
|
return { model1Path: 'landscape/kodim08_30_ori.gltf', model2Path: 'landscape/kodim08_30_sh.gltf' }; |
|
case 'option1c': |
|
return { model1Path: 'landscape/kodim08_50_ori_top.gltf', model2Path: 'landscape/kodim08_50_sh_top.gltf' }; |
|
case 'option1d': |
|
return { model1Path: 'landscape/kodim08_30_ori_top.gltf', model2Path: 'landscape/kodim08_30_sh_top.gltf' }; |
|
case 'option2a': |
|
return { model1Path: 'landscape/kodim01_50_ori.gltf', model2Path: 'landscape/kodim01_50_sh.gltf' }; |
|
case 'option2b': |
|
return { model1Path: 'landscape/kodim01_30_ori.gltf', model2Path: 'landscape/kodim01_30_sh.gltf' }; |
|
case 'option3a': |
|
return { model1Path: 'landscape/kodim02_50_ori.gltf', model2Path: 'landscape/kodim02_50_sh.gltf' }; |
|
case 'option3b': |
|
return { model1Path: 'landscape/kodim02_30_ori.gltf', model2Path: 'landscape/kodim02_30_sh.gltf' }; |
|
case 'option4a': |
|
return { model1Path: 'landscape/div2k801_50_ori.gltf', model2Path: 'landscape/div2k801_50_sh.gltf' }; |
|
case 'option4b': |
|
return { model1Path: 'landscape/div2k801_30_ori.gltf', model2Path: 'landscape/div2k801_30_sh.gltf' }; |
|
case 'option5a': |
|
return { model1Path: 'landscape/div2k802_50_ori.gltf', model2Path: 'landscape/div2k802_50_sh.gltf' }; |
|
case 'option5b': |
|
return { model1Path: 'landscape/div2k802_30_ori.gltf', model2Path: 'landscape/div2k802_30_sh.gltf' }; |
|
case 'option6a': |
|
return { model1Path: 'landscape/clic01_50_ori.gltf', model2Path: 'landscape/clic01_50_sh.gltf' }; |
|
case 'option6b': |
|
return { model1Path: 'landscape/clic01_30_ori.gltf', model2Path: 'landscape/clic01_30_sh.gltf' }; |
|
case 'option7a': |
|
return { model1Path: 'landscape/clic02_50_ori.gltf', model2Path: 'landscape/clic02_50_sh.gltf' }; |
|
case 'option7b': |
|
return { model1Path: 'landscape/clic02_30_ori.gltf', model2Path: 'landscape/clic02_30_sh.gltf' }; |
|
|
|
} |
|
} |
|
|
|
function uncheckAllSubOptions(exceptValue) { |
|
const allSubOptions = document.querySelectorAll('.tab-content input[type="radio"]'); |
|
|
|
allSubOptions.forEach(option => { |
|
if (option.value !== exceptValue) { |
|
option.checked = false; |
|
} |
|
}); |
|
} |
|
|
|
function openTab(tabId) { |
|
const tabButtons = document.querySelectorAll('.tab-button'); |
|
const allSubOptions = document.querySelectorAll('.tab-content input[type="radio"]'); |
|
|
|
var i, tabcontent; |
|
tabcontent = document.getElementsByClassName("tab-content"); |
|
for (i = 0; i < tabcontent.length; i++) { |
|
tabcontent[i].style.display = "none"; |
|
} |
|
var selectedTabContent = document.getElementById(tabId); |
|
if (selectedTabContent) { |
|
selectedTabContent.style.display = "block"; |
|
} |
|
tabButtons.forEach(button => button.classList.remove('active')); |
|
document.querySelector(`.tab-button[data-tab='${tabId}']`).classList.add('active'); |
|
|
|
const firstSubOption = selectedTabContent.querySelector('input[type="radio"]'); |
|
if (firstSubOption) { |
|
uncheckAllSubOptions(firstSubOption); |
|
firstSubOption.checked = true; |
|
updateModels(firstSubOption); |
|
} |
|
} |
|
|