Skip to content

Commit

Permalink
Do url transformations in the loading code instead of the dialog #188
Browse files Browse the repository at this point in the history
  • Loading branch information
kovacsv committed Dec 18, 2021
1 parent 4d8a459 commit d5976ec
Show file tree
Hide file tree
Showing 6 changed files with 150 additions and 26 deletions.
123 changes: 123 additions & 0 deletions sandbox/embed_filehost.html
@@ -0,0 +1,123 @@
<!DOCTYPE html>
<html>

<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<meta name="viewport" content="width=device-width, user-scalable=no">

<title>Online 3D Viewer</title>

<script type="text/javascript" src="../../libs/three.min.js"></script>

<!-- engine start -->
<script type="text/javascript" src="../source/core/core.js"></script>
<script type="text/javascript" src="../source/core/taskrunner.js"></script>
<script type="text/javascript" src="../source/geometry/geometry.js"></script>
<script type="text/javascript" src="../source/geometry/coord2d.js"></script>
<script type="text/javascript" src="../source/geometry/coord3d.js"></script>
<script type="text/javascript" src="../source/geometry/quaternion.js"></script>
<script type="text/javascript" src="../source/geometry/box3d.js"></script>
<script type="text/javascript" src="../source/geometry/octree.js"></script>
<script type="text/javascript" src="../source/geometry/matrix.js"></script>
<script type="text/javascript" src="../source/geometry/transformation.js"></script>
<script type="text/javascript" src="../source/geometry/tween.js"></script>
<script type="text/javascript" src="../source/io/binaryreader.js"></script>
<script type="text/javascript" src="../source/io/binarywriter.js"></script>
<script type="text/javascript" src="../source/io/textwriter.js"></script>
<script type="text/javascript" src="../source/io/bufferutils.js"></script>
<script type="text/javascript" src="../source/io/fileutils.js"></script>
<script type="text/javascript" src="../source/io/externallibs.js"></script>
<script type="text/javascript" src="../source/model/material.js"></script>
<script type="text/javascript" src="../source/model/triangle.js"></script>
<script type="text/javascript" src="../source/model/property.js"></script>
<script type="text/javascript" src="../source/model/object.js"></script>
<script type="text/javascript" src="../source/model/mesh.js"></script>
<script type="text/javascript" src="../source/model/meshbuffer.js"></script>
<script type="text/javascript" src="../source/model/node.js"></script>
<script type="text/javascript" src="../source/model/meshinstance.js"></script>
<script type="text/javascript" src="../source/model/model.js"></script>
<script type="text/javascript" src="../source/model/topology.js"></script>
<script type="text/javascript" src="../source/model/modelutils.js"></script>
<script type="text/javascript" src="../source/model/modelfinalization.js"></script>
<script type="text/javascript" src="../source/model/quantities.js"></script>
<script type="text/javascript" src="../source/model/generator.js"></script>
<script type="text/javascript" src="../source/import/importerutils.js"></script>
<script type="text/javascript" src="../source/import/importerbase.js"></script>
<script type="text/javascript" src="../source/import/importerobj.js"></script>
<script type="text/javascript" src="../source/import/importerstl.js"></script>
<script type="text/javascript" src="../source/import/importeroff.js"></script>
<script type="text/javascript" src="../source/import/importerply.js"></script>
<script type="text/javascript" src="../source/import/importer3ds.js"></script>
<script type="text/javascript" src="../source/import/importergltf.js"></script>
<script type="text/javascript" src="../source/import/importero3dv.js"></script>
<script type="text/javascript" src="../source/import/importerthree.js"></script>
<script type="text/javascript" src="../source/import/importersvg.js"></script>
<script type="text/javascript" src="../source/import/importer3dm.js"></script>
<script type="text/javascript" src="../source/import/importerifc.js"></script>
<script type="text/javascript" src="../source/import/filelist.js"></script>
<script type="text/javascript" src="../source/import/importer.js"></script>
<script type="text/javascript" src="../source/export/exporterbase.js"></script>
<script type="text/javascript" src="../source/export/exporterobj.js"></script>
<script type="text/javascript" src="../source/export/exporterstl.js"></script>
<script type="text/javascript" src="../source/export/exporterply.js"></script>
<script type="text/javascript" src="../source/export/exporteroff.js"></script>
<script type="text/javascript" src="../source/export/exportergltf.js"></script>
<script type="text/javascript" src="../source/export/exporter3dm.js"></script>
<script type="text/javascript" src="../source/export/exporter.js"></script>
<script type="text/javascript" src="../source/threejs/threeutils.js"></script>
<script type="text/javascript" src="../source/threejs/threeconverter.js"></script>
<script type="text/javascript" src="../source/threejs/threemodelloader.js"></script>
<script type="text/javascript" src="../source/parameters/parameterlist.js"></script>
<script type="text/javascript" src="../source/viewer/domutils.js"></script>
<script type="text/javascript" src="../source/viewer/navigation.js"></script>
<script type="text/javascript" src="../source/viewer/viewer.js"></script>
<script type="text/javascript" src="../source/viewer/measuretool.js"></script>
<script type="text/javascript" src="../source/viewer/domviewer.js"></script>
<!-- engine end -->

<script type='text/javascript'>
OV.Init3DViewerElements ();
</script>

<style>
iframe, div.online_3d_viewer
{
float: left;
border: 1px solid #eeeeee;
margin: 0px 4px 4px 0px;
}
</style>
</head>

<body>
<iframe
src="../../website/embed.html#model=https://github.com/kovacsv/Online3DViewer/blob/master/test/testfiles/3ds/cube_four_instances.3ds,https://github.com/kovacsv/Online3DViewer/blob/master/test/testfiles/3ds/texture.png"
width=360 height=240
style="border:1px solid #eeeeee;">
</iframe>
<iframe
src="../../website/embed.html#model=https://www.dropbox.com/s/wd6lt7h4xa8fuv0/cube_four_instances.3ds?dl=0,https://www.dropbox.com/s/6dfk1jveevbofxm/texture.png?dl=0"
width=360 height=240
style="border:1px solid #eeeeee;">
</iframe>
<iframe
src="../../website/embed.html#model=https://raw.githubusercontent.com/kovacsv/Online3DViewer/master/test/testfiles/3ds/cube_four_instances.3ds,https://raw.githubusercontent.com/kovacsv/Online3DViewer/master/test/testfiles/3ds/texture.png"
width=360 height=240
style="border:1px solid #eeeeee;">
</iframe>
<iframe
src="../../website/embed.html#model=https://dl.dropbox.com/s/wd6lt7h4xa8fuv0/cube_four_instances.3ds,https://dl.dropbox.com/s/6dfk1jveevbofxm/texture.png"
width=360 height=240
style="border:1px solid #eeeeee;">
</iframe>
<div class="online_3d_viewer"
style="width: 360px; height: 240px;"
model="https://github.com/kovacsv/Online3DViewer/blob/master/test/testfiles/3ds/cube_four_instances.3ds,https://github.com/kovacsv/Online3DViewer/blob/master/test/testfiles/3ds/texture.png">
</div>
<div class="online_3d_viewer"
style="width: 360px; height: 240px;"
model="https://www.dropbox.com/s/wd6lt7h4xa8fuv0/cube_four_instances.3ds?dl=0,https://www.dropbox.com/s/6dfk1jveevbofxm/texture.png?dl=0">
</div>
</body>

</html>
23 changes: 23 additions & 0 deletions source/io/fileutils.js
Expand Up @@ -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;
}
}
};
4 changes: 2 additions & 2 deletions source/viewer/domviewer.js
Expand Up @@ -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);
Expand All @@ -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';
Expand Down
1 change: 1 addition & 0 deletions website/o3dv/js/embed.js
Expand Up @@ -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);
Expand Down
24 changes: 0 additions & 24 deletions 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', [
Expand All @@ -41,7 +18,6 @@ OV.ShowOpenUrlDialog = function (onOk)
urls.push (line);
});
dialog.Hide ();
CorrectFileHostUrls (urls);
onOk (urls);
}
}
Expand Down
1 change: 1 addition & 0 deletions website/o3dv/js/website.js
Expand Up @@ -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 ();
Expand Down

0 comments on commit d5976ec

Please sign in to comment.