Sfoglia il codice sorgente

Added utils.js : contains two Dynamic js loading func for NaCl/em version

tweak MeshViewer html for dual NaCl/em version setup.
undefined
Benjamin ‘Touky’ Huet Sam Hocevar <sam@hocevar.net> 11 anni fa
parent
commit
c60cc0794c
4 ha cambiato i file con 101 aggiunte e 50 eliminazioni
  1. +8
    -0
      test/empty.html
  2. +33
    -15
      test/meshviewer_index.html
  3. +13
    -35
      test/nacl_loading.js
  4. +47
    -0
      test/utils.js

+ 8
- 0
test/empty.html Vedi File

@@ -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
- 15
test/meshviewer_index.html Vedi File

@@ -33,8 +33,9 @@ textarea
left: 30%; left: 30%;
right: 30%; right: 30%;
z-index: 3; z-index: 3;
background-color:white;
border:1px solid #000000;
background-color:white;
border:1px solid #000000;
visibility: hidden;
} }
progress progress
{ {
@@ -80,15 +81,14 @@ progress::-webkit-progress-value
} }
</style> </style>


<title>Mesh Viewer NaCl</title>
<title>Mesh Viewer Web Edition</title>


</head> </head>


<script type="text/javascript"> <script type="text/javascript">
//Base data Setup
//Base data Setup : GLOBAL STYLE
g_div_frame_embed_save = ''; 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_txtarea_code_src = null;
g_div_helper_cmd = [null, null]; g_div_helper_cmd = [null, null];
g_div_helper_args = null; g_div_helper_args = null;
@@ -101,9 +101,6 @@ progress::-webkit-progress-value
g_var_progress_bar = -1; g_var_progress_bar = -1;
g_frame_embed = null; 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 GetTextAreaCodeSrc() { return g_txtarea_code_src; }
function GetDivProgress() { return g_div_progress; } function GetDivProgress() { return g_div_progress; }
function GetProgressBar() { return g_progress_bar; } function GetProgressBar() { return g_progress_bar; }
@@ -111,20 +108,24 @@ progress::-webkit-progress-value
function GetDivEmbedData() { return g_div_frame_embed; } function GetDivEmbedData() { return g_div_frame_embed; }
function GetDivEmbedDataSave() { return g_div_frame_embed_save; } function GetDivEmbedDataSave() { return g_div_frame_embed_save; }
function GetFrameData() { return g_frame_embed; } 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>


<script src="./utils.js"></script>
<script src="./type_dictionnary.js"></script> <script src="./type_dictionnary.js"></script>
<script type="text/javascript"> <script type="text/javascript">
var EasyMeshDict = new TypeDictionnary("EasyMesh"); var EasyMeshDict = new TypeDictionnary("EasyMesh");
function GetCmdDictionnary() { return EasyMeshDict; } function GetCmdDictionnary() { return EasyMeshDict; }
</script> </script>
<script src="./easy_mesh_dictionnary.js"></script> <script src="./easy_mesh_dictionnary.js"></script>
<script src="./nacl_loading.js"></script>


<script type="text/javascript"> <script type="text/javascript">
//Base init for all datas //Base init for all datas
function Init()
function VarInit()
{ {
//Init frame variable first. //Init frame variable first.
g_frame_embed = document.getElementById('id_frame_embed'); 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 = document.getElementById('id_div_progress');
g_div_progress_status = document.getElementById('id_div_progress_status'); g_div_progress_status = document.getElementById('id_div_progress_status');
g_progress_bar = document.getElementById('id_progress_bar'); 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) if (!g_txtarea_code_src.value)
g_txtarea_code_src.value = "//This is a comment\nsc#f8f afcb 1 1 1 0"; 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 + ']&nbsp;<br>&nbsp;'; g_div_alphabet.innerHTML += new_toc + ']&nbsp;<br>&nbsp;';
} }


//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 //Tick has been done, start Tick
window.setTimeout("Tick()", 200); window.setTimeout("Tick()", 200);
} }
@@ -184,7 +202,7 @@ progress::-webkit-progress-value


<body> <body>


<h1>Mesh Viewer : Native Client version.</h1>
<h1>Mesh Viewer : Web version.</h1>


<p> <p>
<div id="final_div"> <div id="final_div">
@@ -196,7 +214,7 @@ progress::-webkit-progress-value
<div id="id_div_progress_status">....</div>&nbsp; <div id="id_div_progress_status">....</div>&nbsp;
</div> </div>
<div id="id_div_frame_embed"> <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> </div>
</div> </div>


+ 13
- 35
test/nacl_loading.js Vedi File

@@ -2,12 +2,16 @@ g_status_text = [null];
g_status_timer = [-1.0]; g_status_timer = [-1.0];
g_var_progress_bar = -1; 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() function RegisterListener()
{ {
//Register all the correct functions to the listener //Register all the correct functions to the listener
var div_listener = GetNaClListenerDiv();
var div_listener = GetiFrameDivEmbed();
if (div_listener) if (div_listener)
{ {
div_listener.addEventListener('loadstart', ModuleStartedLoad, true); div_listener.addEventListener('loadstart', ModuleStartedLoad, true);
@@ -26,10 +30,11 @@ function RegisterListener()
// MODULE LOADING FUNCTIONS // MODULE LOADING FUNCTIONS
//------------------------------------------------------------------------- //-------------------------------------------------------------------------
//Indicate page has been loaded. //Indicate page has been loaded.
function PageDidLoad()
function NaClLoadingInit()
{ {
HideProgressStatus(false);
//Page did load before NaCl module //Page did load before NaCl module
if (!GetNaClModuleVar())
if (!g_embed_nacl_module)
AddTextStatus('Please wait for module loading'); AddTextStatus('Please wait for module loading');
RegisterListener(); RegisterListener();
} }
@@ -69,7 +74,7 @@ function ModuleLoadUpdate(event)
//Indicate module load success. //Indicate module load success.
function ModuleDidLoad() function ModuleDidLoad()
{ {
if (!GetNaClModuleVar())
if (!g_embed_nacl_module)
InitNaClModuleVar(); InitNaClModuleVar();


//Hide the progress div //Hide the progress div
@@ -104,34 +109,6 @@ function RestartModule()
HideProgressStatus(false); HideProgressStatus(false);
window.setTimeout('GetFrameData().contentDocument.location.reload(true)', 1000); 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 //Called by the "Send Mesh Command !" button
function SendMessageToModule() function SendMessageToModule()
{ {
if (GetNaClModuleVar())
GetNaClModuleVar().postMessage(GetTextAreaCodeSrc().value);
if (g_embed_nacl_module)
g_embed_nacl_module.postMessage(GetTextAreaCodeSrc().value);
else else
alert("Module not loaded !"); alert("Module not loaded !");
} }
@@ -230,3 +207,4 @@ function HideProgressStatus(should_hide)
} }
} }
} }


+ 47
- 0
test/utils.js Vedi File

@@ -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()
}

Caricamento…
Annulla
Salva