tweak MeshViewer html for dual NaCl/em version setup.undefined
| @@ -0,0 +1,8 @@ | |||
| <DOCTYPE html> | |||
| <html> | |||
| <head> | |||
| </head> | |||
| <body> | |||
| <!-- I'm only here to ensure embed viewport of NaCl/Emscripten is "not empty" --> | |||
| </body> | |||
| </html> | |||
| @@ -33,8 +33,9 @@ textarea | |||
| left: 30%; | |||
| right: 30%; | |||
| z-index: 3; | |||
| background-color:white; | |||
| border:1px solid #000000; | |||
| background-color:white; | |||
| border:1px solid #000000; | |||
| visibility: hidden; | |||
| } | |||
| progress | |||
| { | |||
| @@ -80,15 +81,14 @@ progress::-webkit-progress-value | |||
| } | |||
| </style> | |||
| <title>Mesh Viewer NaCl</title> | |||
| <title>Mesh Viewer Web Edition</title> | |||
| </head> | |||
| <script type="text/javascript"> | |||
| //Base data Setup | |||
| //Base data Setup : GLOBAL STYLE | |||
| g_div_frame_embed_save = ''; | |||
| g_div_frame_embed = null; // Global application object. | |||
| g_embed_nacl_module = null; // Global application object. | |||
| g_div_frame_embed = null; | |||
| g_txtarea_code_src = null; | |||
| g_div_helper_cmd = [null, null]; | |||
| g_div_helper_args = null; | |||
| @@ -101,9 +101,6 @@ progress::-webkit-progress-value | |||
| g_var_progress_bar = -1; | |||
| g_frame_embed = null; | |||
| function GetNaClListenerDiv() { return g_frame_embed.contentDocument.getElementById('id_div_embed_data'); } | |||
| function GetNaClModuleVar() { return g_embed_nacl_module; } | |||
| function InitNaClModuleVar() { g_embed_nacl_module = g_frame_embed.contentDocument.getElementById('id_embed_nacl_module'); } | |||
| function GetTextAreaCodeSrc() { return g_txtarea_code_src; } | |||
| function GetDivProgress() { return g_div_progress; } | |||
| function GetProgressBar() { return g_progress_bar; } | |||
| @@ -111,20 +108,24 @@ progress::-webkit-progress-value | |||
| function GetDivEmbedData() { return g_div_frame_embed; } | |||
| function GetDivEmbedDataSave() { return g_div_frame_embed_save; } | |||
| function GetFrameData() { return g_frame_embed; } | |||
| function IsUsingNaCl() { return true; } | |||
| function GetiFrameDivEmbed() { return g_frame_embed.contentDocument.getElementById('id_div_embed_data'); } | |||
| //NaCl Specific | |||
| function GetiFrameModuleVar() { return g_frame_embed.contentDocument.getElementById('id_embed_nacl_module'); } | |||
| function IsUsingNaCl() { return false; /*window.chrome;*/ } | |||
| </script> | |||
| <script src="./utils.js"></script> | |||
| <script src="./type_dictionnary.js"></script> | |||
| <script type="text/javascript"> | |||
| var EasyMeshDict = new TypeDictionnary("EasyMesh"); | |||
| function GetCmdDictionnary() { return EasyMeshDict; } | |||
| </script> | |||
| <script src="./easy_mesh_dictionnary.js"></script> | |||
| <script src="./nacl_loading.js"></script> | |||
| <script type="text/javascript"> | |||
| //Base init for all datas | |||
| function Init() | |||
| function VarInit() | |||
| { | |||
| //Init frame variable first. | |||
| g_frame_embed = document.getElementById('id_frame_embed'); | |||
| @@ -141,8 +142,14 @@ progress::-webkit-progress-value | |||
| g_div_progress = document.getElementById('id_div_progress'); | |||
| g_div_progress_status = document.getElementById('id_div_progress_status'); | |||
| g_progress_bar = document.getElementById('id_progress_bar'); | |||
| } | |||
| //Pulg here any cookie update | |||
| //Base init | |||
| function Init() | |||
| { | |||
| VarInit(); | |||
| //Put here any cookie update | |||
| if (!g_txtarea_code_src.value) | |||
| g_txtarea_code_src.value = "//This is a comment\nsc#f8f afcb 1 1 1 0"; | |||
| @@ -166,6 +173,17 @@ progress::-webkit-progress-value | |||
| g_div_alphabet.innerHTML += new_toc + '] <br> '; | |||
| } | |||
| //NaCl Specific | |||
| if (IsUsingNaCl()) | |||
| { | |||
| DynLoadFile("nacl_loading.js"); | |||
| g_frame_embed.src = 'meshviewer_nacl.html'; | |||
| } | |||
| else | |||
| g_frame_embed.src = 'meshviewer_em.html'; | |||
| g_frame_embed.onload = function() { VarInit(); } | |||
| //Tick has been done, start Tick | |||
| window.setTimeout("Tick()", 200); | |||
| } | |||
| @@ -184,7 +202,7 @@ progress::-webkit-progress-value | |||
| <body> | |||
| <h1>Mesh Viewer : Native Client version.</h1> | |||
| <h1>Mesh Viewer : Web version.</h1> | |||
| <p> | |||
| <div id="final_div"> | |||
| @@ -196,7 +214,7 @@ progress::-webkit-progress-value | |||
| <div id="id_div_progress_status">....</div> | |||
| </div> | |||
| <div id="id_div_frame_embed"> | |||
| <iframe onload="Init(); PageDidLoad();" id="id_frame_embed" src="meshviewer_nacl.html" width=770 height=200 frameborder=0 scrolling=no></iframe> | |||
| <iframe onload="Init();" id="id_frame_embed" src="empty.html" width=770 height=200 frameborder=0 scrolling=no></iframe> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| @@ -2,12 +2,16 @@ g_status_text = [null]; | |||
| g_status_timer = [-1.0]; | |||
| g_var_progress_bar = -1; | |||
| //window.setTimeout("RegisterListener()", 200); | |||
| g_embed_nacl_module = null; | |||
| if (IsUsingNaCl()) NaClLoadingInit(); | |||
| function InitNaClModuleVar() { g_embed_nacl_module = GetiFrameModuleVar(); } | |||
| function RegisterListener() | |||
| { | |||
| //Register all the correct functions to the listener | |||
| var div_listener = GetNaClListenerDiv(); | |||
| var div_listener = GetiFrameDivEmbed(); | |||
| if (div_listener) | |||
| { | |||
| div_listener.addEventListener('loadstart', ModuleStartedLoad, true); | |||
| @@ -26,10 +30,11 @@ function RegisterListener() | |||
| // MODULE LOADING FUNCTIONS | |||
| //------------------------------------------------------------------------- | |||
| //Indicate page has been loaded. | |||
| function PageDidLoad() | |||
| function NaClLoadingInit() | |||
| { | |||
| HideProgressStatus(false); | |||
| //Page did load before NaCl module | |||
| if (!GetNaClModuleVar()) | |||
| if (!g_embed_nacl_module) | |||
| AddTextStatus('Please wait for module loading'); | |||
| RegisterListener(); | |||
| } | |||
| @@ -69,7 +74,7 @@ function ModuleLoadUpdate(event) | |||
| //Indicate module load success. | |||
| function ModuleDidLoad() | |||
| { | |||
| if (!GetNaClModuleVar()) | |||
| if (!g_embed_nacl_module) | |||
| InitNaClModuleVar(); | |||
| //Hide the progress div | |||
| @@ -104,34 +109,6 @@ function RestartModule() | |||
| HideProgressStatus(false); | |||
| window.setTimeout('GetFrameData().contentDocument.location.reload(true)', 1000); | |||
| } | |||
| /* | |||
| var div_embed_data = GetDivEmbedData(); | |||
| var div_embed_data_save = GetDivEmbedDataSave(); | |||
| if (div_embed_data) | |||
| { | |||
| HideProgressStatus(false); | |||
| div_embed_data_save = div_embed_data.innerHTML; | |||
| div_embed_data.innerHTML = ''; | |||
| } | |||
| */ | |||
| } | |||
| //Called after the Restart to effectively do it | |||
| function RestartModuleRestoreEmbed() | |||
| { | |||
| /* | |||
| var div_embed_data = GetDivEmbedData(); | |||
| var div_embed_data_save = GetDivEmbedDataSave(); | |||
| if (div_embed_data) | |||
| { | |||
| div_embed_data.innerHTML = div_embed_data_save; | |||
| div_embed_data_save = ''; | |||
| HideProgressStatus(false); | |||
| } | |||
| */ | |||
| } | |||
| //------------------------------------------------------------------------- | |||
| @@ -147,8 +124,8 @@ function ModuleSentMessage(message) | |||
| //Called by the "Send Mesh Command !" button | |||
| function SendMessageToModule() | |||
| { | |||
| if (GetNaClModuleVar()) | |||
| GetNaClModuleVar().postMessage(GetTextAreaCodeSrc().value); | |||
| if (g_embed_nacl_module) | |||
| g_embed_nacl_module.postMessage(GetTextAreaCodeSrc().value); | |||
| else | |||
| alert("Module not loaded !"); | |||
| } | |||
| @@ -230,3 +207,4 @@ function HideProgressStatus(should_hide) | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,47 @@ | |||
| function DynLoadFile(filename) | |||
| { | |||
| var filetype = filename.match(/\.[a-zA-Z]+$/); | |||
| //if filename is a external JavaScript file | |||
| if (filetype == ".js") | |||
| { | |||
| var fileref = document.createElement('script'); | |||
| fileref.setAttribute("type","text/javascript"); | |||
| fileref.setAttribute("src", filename); | |||
| } | |||
| //if filename is an external CSS file | |||
| else if (filetype == ".css") | |||
| { | |||
| var fileref = document.createElement("link"); | |||
| fileref.setAttribute("rel", "stylesheet"); | |||
| fileref.setAttribute("type", "text/css"); | |||
| fileref.setAttribute("href", filename); | |||
| } | |||
| if (fileref) | |||
| document.getElementsByTagName("head")[0].appendChild(fileref); | |||
| } | |||
| function DynRemoveFile(filename) | |||
| { | |||
| var filetype = filename.match(/\.[a-zA-Z]+$/); | |||
| var targetelement = "none"; | |||
| var targetattr = "none"; | |||
| //Determine element type to create nodelist from and corresponding attribute to test for | |||
| if (filetype==".js") | |||
| { | |||
| targetelement = "script"; | |||
| targetattr = "src"; | |||
| } | |||
| else if (filetype == ".css") | |||
| { | |||
| targetelement = "link"; | |||
| targetattr = "href"; | |||
| } | |||
| var allsuspects = document.getElementsByTagName(targetelement); | |||
| //Search backwards within nodelist for matching elements to remove | |||
| for (var i = allsuspects.length; i >= 0; i--) | |||
| if (allsuspects[i] && | |||
| allsuspects[i].getAttribute(targetattr) && | |||
| allsuspects[i].getAttribute(targetattr).indexOf(filename) != -1) | |||
| allsuspects[i].parentNode.removeChild(allsuspects[i]); //remove element by calling parentNode.removeChild() | |||
| } | |||