diff --git a/website/include/importerapp.js b/website/include/importerapp.js index 6a9a88e..cbd7631 100644 --- a/website/include/importerapp.js +++ b/website/include/importerapp.js @@ -22,6 +22,7 @@ ImporterApp = function () this.importerButtons = null; this.extensionButtons = null; this.dialog = null; + this.readyForTest = null; }; ImporterApp.prototype.Init = function () @@ -81,6 +82,19 @@ ImporterApp.prototype.Init = function () } }; +ImporterApp.prototype.ClearReadyForTest = function () +{ + if (this.readyForTest !== null) { + this.readyForTest.remove (); + this.readyForTest = null; + } +}; + +ImporterApp.prototype.SetReadyForTest = function () +{ + this.readyForTest = $('
').attr ('id', 'readyfortest').hide ().appendTo ($('body')); +}; + ImporterApp.prototype.AddExtension = function (extension) { if (!extension.IsEnabled ()) { @@ -168,9 +182,10 @@ ImporterApp.prototype.JsonLoaded = function (progressBar) ImporterApp.prototype.GenerateMenu = function () { - function AddDefaultGroup (menu, name) + function AddDefaultGroup (menu, name, id) { var group = menu.AddGroup (name, { + id : id, openCloseButton : { isOpen : false, open : 'images/opened.png', @@ -265,6 +280,7 @@ ImporterApp.prototype.GenerateMenu = function () userData : mesh }, userButton : { + id : 'showhidemesh-' + meshIndex, isOpen : true, onCreate : function (image) { image.attr ('src', 'images/visible.png'); @@ -283,7 +299,7 @@ ImporterApp.prototype.GenerateMenu = function () var menu = $('#menu'); var importerMenu = new ImporterMenu (menu); - var filesGroup = AddDefaultGroup (importerMenu, 'Files'); + var filesGroup = AddDefaultGroup (importerMenu, 'Files', 'filesmenuitem'); importerMenu.AddSubItem (filesGroup, this.fileNames.main); var i; for (i = 0; i < this.fileNames.requested.length; i++) { @@ -291,23 +307,23 @@ ImporterApp.prototype.GenerateMenu = function () } if (this.fileNames.missing.length > 0) { - var missingFilesGroup = AddDefaultGroup (importerMenu, 'Missing Files'); + var missingFilesGroup = AddDefaultGroup (importerMenu, 'Missing Files', 'missingfilesmenuitem'); for (i = 0; i < this.fileNames.missing.length; i++) { importerMenu.AddSubItem (missingFilesGroup, this.fileNames.missing[i]); } } - var infoGroup = AddDefaultGroup (importerMenu, 'Information'); + var infoGroup = AddDefaultGroup (importerMenu, 'Information', 'informationmenuitem'); AddInformation (infoGroup, jsonData); - var materialsGroup = AddDefaultGroup (importerMenu, 'Materials'); + var materialsGroup = AddDefaultGroup (importerMenu, 'Materials', 'materialsmenuitem'); var material; for (i = 0; i < jsonData.materials.length; i++) { material = jsonData.materials[i]; AddMaterial (importerMenu, materialsGroup, material); } - var meshesGroup = AddDefaultGroup (importerMenu, 'Meshes'); + var meshesGroup = AddDefaultGroup (importerMenu, 'Meshes', 'meshesmenuitem'); var mesh; for (i = 0; i < jsonData.meshes.length; i++) { mesh = jsonData.meshes[i]; @@ -350,6 +366,7 @@ ImporterApp.prototype.Generate = function (progressBar) onFinish : function () { importerApp.GenerateMenu (); importerApp.inGenerate = false; + importerApp.SetReadyForTest (); } }; @@ -357,12 +374,13 @@ ImporterApp.prototype.Generate = function (progressBar) var jsonData = importerApp.viewer.GetJsonData (); importerApp.viewer.SetJsonData (JSM.MergeJsonDataMeshes (jsonData)); } - importerApp.viewer.ShowAllMeshes (environment); + importerApp.viewer.ShowAllMeshes (environment); } var jsonData = this.viewer.GetJsonData (); if (jsonData.materials.length === 0 || jsonData.meshes.length === 0) { this.GenerateError ('Failed to open file. Maybe something is wrong with your file.'); + this.SetReadyForTest (); return; } @@ -426,6 +444,7 @@ ImporterApp.prototype.ShowHideMesh = function (meshIndex) ImporterApp.prototype.ProcessFiles = function (fileList, isUrl) { + this.ClearReadyForTest (); this.dialog.Close (); if (this.inGenerate) { return; @@ -455,6 +474,7 @@ ImporterApp.prototype.ProcessFiles = function (fileList, isUrl) processorFunc (userFiles, { onError : function () { myThis.GenerateError ('No readable file found. You can open 3ds, obj and stl files.'); + myThis.SetReadyForTest (); return; }, onReady : function (fileNames, jsonData) { diff --git a/website/include/importermenu.js b/website/include/importermenu.js index 96df09c..e8f9f97 100644 --- a/website/include/importermenu.js +++ b/website/include/importermenu.js @@ -55,6 +55,9 @@ ImporterMenu.prototype.AddSubItem = function (parent, name, parameters) var menuContent = null; if (parameters !== undefined && parameters !== null) { + if (parameters.id !== undefined && parameters.id !== null) { + menuItem.attr ('id', parameters.id); + } if (parameters.openCloseButton !== undefined && parameters.openCloseButton !== null) { menuContent = $('
').addClass ('menugroup').appendTo (parent); var isOpen = parameters.openCloseButton.isOpen; @@ -83,6 +86,9 @@ ImporterMenu.prototype.AddSubItem = function (parent, name, parameters) if (parameters.userButton !== undefined && parameters.userButton !== null) { var userImage = $('').addClass ('menubutton').attr ('title', parameters.userButton.title).appendTo (menuItem); + if (parameters.userButton.id !== undefined && parameters.userButton.id !== null) { + userImage.attr ('id', parameters.userButton.id); + } if (parameters.userButton.onCreate !== undefined && parameters.userButton.onCreate !== null) { parameters.userButton.onCreate (userImage, parameters.userButton.userData); }