From 5d4863f9be42453ae18e6de72a231e242cdfb115 Mon Sep 17 00:00:00 2001 From: Justin Georgi Date: Tue, 29 Oct 2024 08:18:16 -0700 Subject: [PATCH] Add hotspot enhancements and improed styles Signed-off-by: Justin Georgi --- includes/GlModelTransformOutput.php | 19 +++++++++++++++---- modules/glmv.css | 9 ++++++++- modules/glmv.js | 11 +++++++++++ resources/hs_hide.svg | 1 + 4 files changed, 35 insertions(+), 5 deletions(-) create mode 100644 resources/hs_hide.svg diff --git a/includes/GlModelTransformOutput.php b/includes/GlModelTransformOutput.php index 0867085..437591a 100644 --- a/includes/GlModelTransformOutput.php +++ b/includes/GlModelTransformOutput.php @@ -194,11 +194,22 @@ class GlModelTransformOutput extends MediaTransformOutput { 'onmousedown' => 'event.stopPropagation()', 'ontouchstart' => 'event.stopPropagation()' ); - $buttonPrev = Html::rawElement('div', $attrMenuButtonPrev, ''); - $buttonNext = Html::rawElement('div', $attrMenuButtonNext, ''); - $buttonSlides = Html::rawElement('div', $attrMenuButtonSlides, ''); - 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, ''), + Html::rawElement('div', $attrMenuButtonSlides, ''), + Html::rawElement('div', $attrMenuButtonNext, ''), + Html::rawElement('div', $attrMenuButtonHide, '') + ); + + return Html::rawElement('div', $attrMenu, $menuImg . implode($menuButtons)); } /** diff --git a/modules/glmv.css b/modules/glmv.css index ebb1953..f02343d 100644 --- a/modules/glmv.css +++ b/modules/glmv.css @@ -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); diff --git a/modules/glmv.js b/modules/glmv.js index 66bf1c3..a697e1e 100644 --- a/modules/glmv.js +++ b/modules/glmv.js @@ -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 * diff --git a/resources/hs_hide.svg b/resources/hs_hide.svg new file mode 100644 index 0000000..3a7e41d --- /dev/null +++ b/resources/hs_hide.svg @@ -0,0 +1 @@ + \ No newline at end of file