diff --git a/sandbox/embed_filehost.html b/sandbox/embed_filehost.html new file mode 100644 index 00000000..26141fb4 --- /dev/null +++ b/sandbox/embed_filehost.html @@ -0,0 +1,123 @@ + + + + + + + + Online 3D Viewer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + + diff --git a/source/io/fileutils.js b/source/io/fileutils.js index 3c48c60d..2abd5787 100644 --- a/source/io/fileutils.js +++ b/source/io/fileutils.js @@ -93,3 +93,26 @@ OV.ReadFile = function (file, format) } }); }; + +OV.TransformFileHostUrls = function (urls) +{ + for (let i = 0; i < urls.length; i++) { + let url = urls[i]; + if (url.search (/www\.dropbox\.com/u) !== -1) { + url = url.replace ('www.dropbox.com', 'dl.dropbox.com'); + let separatorPos = url.indexOf ('?'); + if (separatorPos !== -1) { + url = url.substr (0, separatorPos); + } + urls[i] = url; + } else if (url.search (/github\.com/u) !== -1) { + url = url.replace ('github.com', 'raw.githubusercontent.com'); + url = url.replace ('/blob', ''); + let separatorPos = url.indexOf ('?'); + if (separatorPos !== -1) { + url = url.substr (0, separatorPos); + } + urls[i] = url; + } + } +}; diff --git a/source/viewer/domviewer.js b/source/viewer/domviewer.js index ae402b9a..4b88c730 100644 --- a/source/viewer/domviewer.js +++ b/source/viewer/domviewer.js @@ -14,11 +14,10 @@ OV.Init3DViewerElement = function (parentDiv, modelUrls, parameters) let height = parentDiv.clientHeight; viewer.Resize (width, height); - let loader = new OV.ThreeModelLoader (); - if (modelUrls === null || modelUrls.length === 0) { return null; } + OV.TransformFileHostUrls (modelUrls); if (parameters.backgroundColor) { viewer.SetBackgroundColor (parameters.backgroundColor); @@ -42,6 +41,7 @@ OV.Init3DViewerElement = function (parentDiv, modelUrls, parameters) } let progressDiv = null; + let loader = new OV.ThreeModelLoader (); loader.LoadModel (modelUrls, OV.FileSource.Url, settings, { onLoadStart : () => { canvas.style.display = 'none'; diff --git a/website/o3dv/js/embed.js b/website/o3dv/js/embed.js index a0793435..8d4ca007 100644 --- a/website/o3dv/js/embed.js +++ b/website/o3dv/js/embed.js @@ -19,6 +19,7 @@ OV.Embed = class if (urls === null) { return; } + OV.TransformFileHostUrls (urls); let background = this.hashHandler.GetBackgroundFromHash (); if (background !== null) { this.viewer.SetBackgroundColor (background); diff --git a/website/o3dv/js/openurldialog.js b/website/o3dv/js/openurldialog.js index 470a2748..754ab7cc 100644 --- a/website/o3dv/js/openurldialog.js +++ b/website/o3dv/js/openurldialog.js @@ -1,28 +1,5 @@ OV.ShowOpenUrlDialog = function (onOk) { - function CorrectFileHostUrls (urls) - { - for (let i = 0; i < urls.length; i++) { - let url = urls[i]; - if (url.search (/www\.dropbox\.com/u) !== -1) { - url = url.replace ('www.dropbox.com', 'dl.dropbox.com'); - let separatorPos = url.indexOf ('?'); - if (separatorPos !== -1) { - url = url.substr (0, separatorPos); - } - urls[i] = url; - } else if (url.search (/github\.com/u) !== -1) { - url = url.replace ('github.com', 'raw.githubusercontent.com'); - url = url.replace ('/blob', ''); - let separatorPos = url.indexOf ('?'); - if (separatorPos !== -1) { - url = url.substr (0, separatorPos); - } - urls[i] = url; - } - } - } - let dialog = new OV.ButtonDialog (); let urlsTextArea = OV.CreateDomElement ('textarea', 'ov_dialog_textarea'); let contentDiv = dialog.Init ('Open Model from Url', [ @@ -41,7 +18,6 @@ OV.ShowOpenUrlDialog = function (onOk) urls.push (line); }); dialog.Hide (); - CorrectFileHostUrls (urls); onOk (urls); } } diff --git a/website/o3dv/js/website.js b/website/o3dv/js/website.js index f6b986f6..0660d1ab 100644 --- a/website/o3dv/js/website.js +++ b/website/o3dv/js/website.js @@ -254,6 +254,7 @@ OV.Website = class if (urls === null) { return; } + OV.TransformFileHostUrls (urls); let importSettings = new OV.ImportSettings (); importSettings.defaultColor = this.settings.defaultColor; let defaultColor = this.hashHandler.GetDefaultColorFromHash ();