OV.GetNameOrDefault = function (originalName, defaultName) { if (originalName.length > 0) { return originalName; } return defaultName; }; OV.GetMeshName = function (originalName) { return OV.GetNameOrDefault (originalName, 'No Name'); }; OV.GetMaterialName = function (originalName) { return OV.GetNameOrDefault (originalName, 'No Name'); }; OV.IsHoverEnabled = function () { if (window.matchMedia ('(hover : hover)').matches) { return true; } else { return false; } }; OV.IsSmallWidth = function () { if (window.matchMedia ('(max-width : 700px)').matches) { return true; } else { return false; } }; OV.IsSmallHeight = function () { if (window.matchMedia ('(max-height : 700px)').matches) { return true; } else { return false; } }; OV.InstallTooltip = function (item, text) { function CalculateOffset (item, tooltip) { let windowObj = $(window); let windowWidth = windowObj.outerWidth (true); let itemOffset = item.offset (); let itemWidth = item.outerWidth (true); let itemHeight = item.outerHeight (true); let tooltipWidth = tooltip.outerWidth (true); let tooltipMargin = 10; let left = itemOffset.left + itemWidth / 2 - tooltipWidth / 2; if (left + tooltipWidth > windowWidth - tooltipMargin) { left = windowWidth - tooltipWidth - tooltipMargin; } if (left < tooltipMargin) { left = tooltipMargin; } left = Math.max (left, 0); return { left : left, top : itemOffset.top + itemHeight + tooltipMargin }; } if (!OV.IsHoverEnabled ()) { return; } let bodyObj = $(document.body); let tooltip = null; item.hover ( function () { tooltip = $('
').html (text).addClass ('ov_tooltip').appendTo (bodyObj); tooltip.offset (CalculateOffset (item, tooltip)); }, function () { tooltip.remove (); } ); }; OV.CopyToClipboard = function (text) { let input = document.createElement ('input'); input.style.position = 'absolute'; input.style.left = '0'; input.style.top = '0'; input.setAttribute ('value', text); document.body.appendChild (input); input.select (); document.execCommand ('copy'); document.body.removeChild (input); }; OV.CreateIconButton = function (iconName, hoverIconName, title, link) { let buttonLink = $(''); buttonLink.attr ('href', link); buttonLink.attr ('target', '_blank'); buttonLink.attr ('rel', 'noopener noreferrer'); OV.InstallTooltip (buttonLink, title); let imgElem = $('').attr ('src', iconName).appendTo (buttonLink); if (hoverIconName !== null && OV.IsHoverEnabled ()) { buttonLink.hover ( function () { imgElem.attr ('src', hoverIconName); }, function () { imgElem.attr ('src', iconName); } ); } return buttonLink; }; OV.CreateHashParameters = function (urls, camera) { let hashParameters = ''; let urlsHash = urls.join (','); hashParameters += 'model=' + urlsHash; if (camera !== null) { let precision = 5; let cameraHash = [ camera.eye.x.toPrecision (precision), camera.eye.y.toPrecision (precision), camera.eye.z.toPrecision (precision), camera.center.x.toPrecision (precision), camera.center.y.toPrecision (precision), camera.center.z.toPrecision (precision), camera.up.x.toPrecision (precision), camera.up.y.toPrecision (precision), camera.up.z.toPrecision (precision) ].join (','); hashParameters += '$camera=' + cameraHash; } return hashParameters; };