Add hotspot enhancements and improed styles

Signed-off-by: Justin Georgi <justin.georgi@gmail.com>
This commit is contained in:
2024-10-29 08:18:16 -07:00
parent 46ee8b6ee9
commit 5d4863f9be
4 changed files with 35 additions and 5 deletions

View File

@@ -194,11 +194,22 @@ class GlModelTransformOutput extends MediaTransformOutput {
'onmousedown' => 'event.stopPropagation()',
'ontouchstart' => 'event.stopPropagation()'
);
$buttonPrev = Html::rawElement('div', $attrMenuButtonPrev, '<img src="' . $gotoUrl . '"></image>');
$buttonNext = Html::rawElement('div', $attrMenuButtonNext, '<img src="' . $gotoUrl . '"></image>');
$buttonSlides = Html::rawElement('div', $attrMenuButtonSlides, '<img src="' . $slideUrl . '"></image>');
return Html::rawElement('div', $attrMenu, $menuImg . $buttonPrev . $buttonSlides . $buttonNext);
$hideUrl = $mainConfig->get( 'ExtensionAssetsPath' ) . '/GlModelViewer/resources/hs_hide.svg';
$attrMenuButtonHide = array (
'class' => 'glmv-menu-button',
'onclick' => 'event.target.toggleAttribute("toggled"); toggleAnnotations(event.target.closest(".glmv-container").querySelector("model-viewer"))',
'onmousedown' => 'event.stopPropagation()',
'ontouchstart' => 'event.stopPropagation()'
);
$menuButtons = array(
Html::rawElement('div', $attrMenuButtonPrev, '<img src="' . $gotoUrl . '"></image>'),
Html::rawElement('div', $attrMenuButtonSlides, '<img src="' . $slideUrl . '"></image>'),
Html::rawElement('div', $attrMenuButtonNext, '<img src="' . $gotoUrl . '"></image>'),
Html::rawElement('div', $attrMenuButtonHide, '<img src="' . $hideUrl . '"></image>')
);
return Html::rawElement('div', $attrMenu, $menuImg . implode($menuButtons));
}
/**

View File

@@ -10,11 +10,18 @@
box-sizing: border-box;
color: #FFFFFF;
cursor: pointer;
font-weight: bold;
font-size: 16px;
padding-top: 2px;
height: 24px;
position: relative;
text-align: center;
transition: opacity 0.3s;
width: 24px;
& [hidden] {
display: none;
}
}
.HotspotAnnotation{
@@ -86,7 +93,7 @@
justify-content: flex-start;
&:hover {
width: 128px;
width: 160px;
& .glmv-menu-image {
transform: rotate(180deg);

View File

@@ -160,6 +160,17 @@ slideshowAnnotations = function(mView, slideDuration = 5000) {
}
}
/**
* Toggle visibility of all annotations
*
* @param {ModelViewer} mView
*/
toggleAnnotations = function(mView) {
[...mView.querySelectorAll('button')].forEach( hs => {
hs.toggleAttribute('hidden')
})
}
/**
* Prepare to drag a hotspot
*

1
resources/hs_hide.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="40px" viewBox="0 -960 960 960" width="40px" fill="#5f6368"><path d="M805.67-59 712-152.67Q662.33-118 603.83-99T480-80q-84.33 0-157.33-30.83-73-30.84-127-84.84t-84.84-127Q80-395.67 80-480q0-65.33 19-123.83T152.67-712L59-805.67l47.67-47.66 746.66 746.66L805.67-59ZM480-146.67q51 0 97.17-14 46.16-14 86.83-40L200.67-664q-26 40.67-40 86.83-14 46.17-14 97.17 0 141 96.16 237.17Q339-146.67 480-146.67ZM807.33-248l-48-48q26-40.67 40-86.83 14-46.17 14-97.17 0-141-96.16-237.17Q621-813.33 480-813.33q-51 0-97.17 14-46.16 14-86.83 40l-48-48Q297.67-842 356.17-861T480-880q83.67 0 156.67 31.17 73 31.16 127 85.16t85.16 127Q880-563.67 880-480q0 65.33-19 123.83T807.33-248ZM527.67-527.67Zm-95.34 95.34Z"/></svg>

After

Width:  |  Height:  |  Size: 745 B