Move FileList to a separate file.
This commit is contained in:
parent
be6e69729c
commit
4e7f5d0445
@ -51,6 +51,7 @@
|
||||
<script type="text/javascript" src="../source/import/importerthree.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>
|
||||
|
||||
@ -51,6 +51,7 @@
|
||||
<script type="text/javascript" src="../source/import/importerthree.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>
|
||||
|
||||
@ -50,6 +50,7 @@
|
||||
<script type="text/javascript" src="../source/import/importerthree.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>
|
||||
|
||||
@ -51,6 +51,7 @@
|
||||
<script type="text/javascript" src="../source/import/importerthree.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>
|
||||
|
||||
@ -51,6 +51,7 @@
|
||||
<script type="text/javascript" src="../source/import/importerthree.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>
|
||||
|
||||
@ -50,6 +50,7 @@
|
||||
<script type="text/javascript" src="../source/import/importerthree.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>
|
||||
|
||||
@ -50,6 +50,7 @@
|
||||
<script type="text/javascript" src="../source/import/importerthree.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>
|
||||
|
||||
137
source/import/filelist.js
Normal file
137
source/import/filelist.js
Normal file
@ -0,0 +1,137 @@
|
||||
OV.File = class
|
||||
{
|
||||
constructor (file, source)
|
||||
{
|
||||
this.source = source;
|
||||
if (source === OV.FileSource.Url) {
|
||||
this.fileUrl = file;
|
||||
this.fileObject = null;
|
||||
this.name = OV.GetFileName (file);
|
||||
this.extension = OV.GetFileExtension (file);
|
||||
} else if (source === OV.FileSource.File) {
|
||||
this.fileUrl = null;
|
||||
this.fileObject = file;
|
||||
this.name = OV.GetFileName (file.name);
|
||||
this.extension = OV.GetFileExtension (file.name);
|
||||
}
|
||||
this.content = null;
|
||||
}
|
||||
|
||||
SetContent (content)
|
||||
{
|
||||
this.content = content;
|
||||
}
|
||||
};
|
||||
|
||||
OV.FileList = class
|
||||
{
|
||||
constructor ()
|
||||
{
|
||||
this.files = [];
|
||||
}
|
||||
|
||||
FillFromFileUrls (fileList)
|
||||
{
|
||||
this.Fill (fileList, OV.FileSource.Url);
|
||||
}
|
||||
|
||||
FillFromFileObjects (fileList)
|
||||
{
|
||||
this.Fill (fileList, OV.FileSource.File);
|
||||
}
|
||||
|
||||
ExtendFromFileList (files)
|
||||
{
|
||||
for (let i = 0; i < files.length; i++) {
|
||||
let file = files[i];
|
||||
if (!this.ContainsFileByPath (file.name)) {
|
||||
this.files.push (file);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
GetFiles ()
|
||||
{
|
||||
return this.files;
|
||||
}
|
||||
|
||||
GetContent (onReady)
|
||||
{
|
||||
let taskRunner = new OV.TaskRunner ();
|
||||
taskRunner.Run (this.files.length, {
|
||||
runTask : (index, complete) => {
|
||||
this.GetFileContent (this.files[index], complete);
|
||||
},
|
||||
onReady : onReady
|
||||
});
|
||||
}
|
||||
|
||||
ContainsFileByPath (filePath)
|
||||
{
|
||||
return this.FindFileByPath (filePath) !== null;
|
||||
}
|
||||
|
||||
FindFileByPath (filePath)
|
||||
{
|
||||
let fileName = OV.GetFileName (filePath).toLowerCase ();
|
||||
for (let fileIndex = 0; fileIndex < this.files.length; fileIndex++) {
|
||||
let file = this.files[fileIndex];
|
||||
if (file.name.toLowerCase () === fileName) {
|
||||
return file;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
IsOnlyUrlSource ()
|
||||
{
|
||||
if (this.files.length === 0) {
|
||||
return false;
|
||||
}
|
||||
for (let i = 0; i < this.files.length; i++) {
|
||||
let file = this.files[i];
|
||||
if (file.source === OV.FileSource.File) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
Fill (fileList, fileSource)
|
||||
{
|
||||
this.files = [];
|
||||
for (let fileIndex = 0; fileIndex < fileList.length; fileIndex++) {
|
||||
let fileObject = fileList[fileIndex];
|
||||
let file = new OV.File (fileObject, fileSource);
|
||||
this.AddFile (file);
|
||||
}
|
||||
}
|
||||
|
||||
AddFile (file)
|
||||
{
|
||||
this.files.push (file);
|
||||
}
|
||||
|
||||
GetFileContent (file, complete)
|
||||
{
|
||||
if (file.content !== null) {
|
||||
complete ();
|
||||
return;
|
||||
}
|
||||
let loaderPromise = null;
|
||||
if (file.source === OV.FileSource.Url) {
|
||||
loaderPromise = OV.RequestUrl (file.fileUrl, OV.FileFormat.Binary);
|
||||
} else if (file.source === OV.FileSource.File) {
|
||||
loaderPromise = OV.ReadFile (file.fileObject, OV.FileFormat.Binary);
|
||||
} else {
|
||||
complete ();
|
||||
return;
|
||||
}
|
||||
loaderPromise.then ((content) => {
|
||||
file.SetContent (content);
|
||||
}).catch (() => {
|
||||
}).finally (() => {
|
||||
complete ();
|
||||
});
|
||||
}
|
||||
};
|
||||
@ -1,141 +1,3 @@
|
||||
OV.File = class
|
||||
{
|
||||
constructor (file, source)
|
||||
{
|
||||
this.source = source;
|
||||
if (source === OV.FileSource.Url) {
|
||||
this.fileUrl = file;
|
||||
this.fileObject = null;
|
||||
this.name = OV.GetFileName (file);
|
||||
this.extension = OV.GetFileExtension (file);
|
||||
} else if (source === OV.FileSource.File) {
|
||||
this.fileUrl = null;
|
||||
this.fileObject = file;
|
||||
this.name = OV.GetFileName (file.name);
|
||||
this.extension = OV.GetFileExtension (file.name);
|
||||
}
|
||||
this.content = null;
|
||||
}
|
||||
|
||||
SetContent (content)
|
||||
{
|
||||
this.content = content;
|
||||
}
|
||||
};
|
||||
|
||||
OV.FileList = class
|
||||
{
|
||||
constructor ()
|
||||
{
|
||||
this.files = [];
|
||||
}
|
||||
|
||||
FillFromFileUrls (fileList)
|
||||
{
|
||||
this.Fill (fileList, OV.FileSource.Url);
|
||||
}
|
||||
|
||||
FillFromFileObjects (fileList)
|
||||
{
|
||||
this.Fill (fileList, OV.FileSource.File);
|
||||
}
|
||||
|
||||
ExtendFromFileList (files)
|
||||
{
|
||||
for (let i = 0; i < files.length; i++) {
|
||||
let file = files[i];
|
||||
if (!this.ContainsFileByPath (file.name)) {
|
||||
this.files.push (file);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
GetFiles ()
|
||||
{
|
||||
return this.files;
|
||||
}
|
||||
|
||||
GetContent (onReady)
|
||||
{
|
||||
let taskRunner = new OV.TaskRunner ();
|
||||
taskRunner.Run (this.files.length, {
|
||||
runTask : (index, complete) => {
|
||||
this.GetFileContent (this.files[index], complete);
|
||||
},
|
||||
onReady : onReady
|
||||
});
|
||||
}
|
||||
|
||||
ContainsFileByPath (filePath)
|
||||
{
|
||||
return this.FindFileByPath (filePath) !== null;
|
||||
}
|
||||
|
||||
FindFileByPath (filePath)
|
||||
{
|
||||
let fileName = OV.GetFileName (filePath).toLowerCase ();
|
||||
for (let fileIndex = 0; fileIndex < this.files.length; fileIndex++) {
|
||||
let file = this.files[fileIndex];
|
||||
if (file.name.toLowerCase () === fileName) {
|
||||
return file;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
IsOnlySource (source)
|
||||
{
|
||||
if (this.files.length === 0) {
|
||||
return false;
|
||||
}
|
||||
for (let i = 0; i < this.files.length; i++) {
|
||||
let file = this.files[i];
|
||||
if (file.source !== source) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
Fill (fileList, fileSource)
|
||||
{
|
||||
this.files = [];
|
||||
for (let fileIndex = 0; fileIndex < fileList.length; fileIndex++) {
|
||||
let fileObject = fileList[fileIndex];
|
||||
let file = new OV.File (fileObject, fileSource);
|
||||
this.AddFile (file);
|
||||
}
|
||||
}
|
||||
|
||||
AddFile (file)
|
||||
{
|
||||
this.files.push (file);
|
||||
}
|
||||
|
||||
GetFileContent (file, complete)
|
||||
{
|
||||
if (file.content !== null) {
|
||||
complete ();
|
||||
return;
|
||||
}
|
||||
let loaderPromise = null;
|
||||
if (file.source === OV.FileSource.Url) {
|
||||
loaderPromise = OV.RequestUrl (file.fileUrl, OV.FileFormat.Binary);
|
||||
} else if (file.source === OV.FileSource.File) {
|
||||
loaderPromise = OV.ReadFile (file.fileObject, OV.FileFormat.Binary);
|
||||
} else {
|
||||
complete ();
|
||||
return;
|
||||
}
|
||||
loaderPromise.then ((content) => {
|
||||
file.SetContent (content);
|
||||
}).catch (() => {
|
||||
}).finally (() => {
|
||||
complete ();
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
OV.ImportSettings = class
|
||||
{
|
||||
constructor ()
|
||||
@ -351,11 +213,6 @@ OV.Importer = class
|
||||
return this.fileList;
|
||||
}
|
||||
|
||||
IsOnlyFileSource (source)
|
||||
{
|
||||
return this.fileList.IsOnlySource (source);
|
||||
}
|
||||
|
||||
HasMainFile (fileList)
|
||||
{
|
||||
return this.GetMainFile (fileList) !== null;
|
||||
|
||||
@ -47,6 +47,7 @@
|
||||
"source/import/importerthree.js",
|
||||
"source/import/importer3dm.js",
|
||||
"source/import/importerifc.js",
|
||||
"source/import/filelist.js",
|
||||
"source/import/importer.js",
|
||||
"source/export/exporterbase.js",
|
||||
"source/export/exporterobj.js",
|
||||
|
||||
@ -60,6 +60,7 @@
|
||||
<script type="text/javascript" src="../source/import/importerthree.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>
|
||||
|
||||
@ -60,6 +60,7 @@
|
||||
<script type="text/javascript" src="../source/import/importerthree.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>
|
||||
|
||||
@ -90,7 +90,7 @@ OV.ShowSharingDialog = function (importer, settings, camera)
|
||||
embeddingCodeInput.val (GetEmbeddingCode (embeddingCodeParams));
|
||||
}
|
||||
|
||||
if (!importer.IsOnlyFileSource (OV.FileSource.Url)) {
|
||||
if (!importer.GetFileList ().IsOnlyUrlSource ()) {
|
||||
return OV.ShowMessageDialog (
|
||||
'Sharing Failed',
|
||||
'Sharing works only if you load files by url. Please upload your model files to a web server, open them by url, and try embedding again.',
|
||||
|
||||
@ -269,7 +269,7 @@ OV.Website = class
|
||||
ClearHashIfNotOnlyUrlList ()
|
||||
{
|
||||
let importer = this.modelLoader.GetImporter ();
|
||||
let isOnlyUrl = importer.IsOnlyFileSource (OV.FileSource.Url);
|
||||
let isOnlyUrl = importer.GetFileList ().IsOnlyUrlSource ();
|
||||
if (!isOnlyUrl && this.hashHandler.HasHash ()) {
|
||||
this.hashHandler.SkipNextEventHandler ();
|
||||
this.hashHandler.ClearHash ();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user