[Paraview] No rendering in ParaviewWeb with javascript
Purohit, Sumit
Sumit.Purohit at pnnl.gov
Thu Nov 1 21:36:28 EDT 2012
Hi Seb,
I think there is an issue with the way Prototyp library construct JSON Vs how PraviewWeb uses it??.
As for some reason when I call JSON.stringify() in the paraview.js::executeRemote() method, it returns json object with double quotes around it.
It is a valid JSON structure but paraviewInstance.jsonRpcClient.VisualizationsManager does not support it.
I tried using browser's native toJSON mathod and it worked.
for that in paraview.js i added :
if(window.Prototype) {
delete Array.prototype.toJSON;
}
before code :
var reply_string =
paraviewInstance.jsonRpcClient.VisualizationsManager.invoke(
paraviewInstance.sessionId,
JSON.stringify(JsonRpcObjectBuilder(methodName, methodArguments)));
in function executeRemote( paraviewInstance, methodName, methodArguments ) {..............
and it worked. got clue from here : http://stackoverflow.com/questions/710586/json-stringify-bizarreness
Ideally \"params\":\"[]\" should work as it is Valid JSON.
where can i find code for VisualizationsManager.invoke() method so that i can see how is it using input parameters ?
Thanks
Sumit Purohit
________________________________________
From: Sebastien Jourdain [sebastien.jourdain at kitware.com]
Sent: Monday, October 29, 2012 6:27 AM
To: Purohit, Sumit
Cc: paraview at paraview.org
Subject: Re: [Paraview] No rendering in ParaviewWeb with javascript
Hi Sumit,
the bug seems to be related to the content of that method
/*
* Helper method used to simplify the construction of JsonRPC objects
*/
function JsonRpcObjectBuilder( methodName, methodArguments ) {
var args = [];
if(typeof(methodArguments) != "undefined") {
if(typeof(methodArguments) != "object") {
args = [ methodArguments ];
} else {
args = methodArguments;
}
}
return {
id : 1,
method : methodName,
params : args
};
}
inside the file WebServer/PWService/web/js/dev/paraview.js which you
can point to in your testing process instead of its parent compressed
one ParaViewWeb.js. Although, don't forget to add /dev/json2.js and
/dev/jsonrpc.js too when you are using the development version of the
js.
Once you figured out, what need to be done to prevent those extra "
around [] then you can either send me the full paraview.js or just the
diff so I can patch and update the ParaViewWeb repository.
Thanks for your help,
Seb
On Fri, Oct 26, 2012 at 2:05 PM, Purohit, Sumit <Sumit.Purohit at pnnl.gov> wrote:
> Thank Seb for the reply,
>
> 1. Yes, i am using exactly the same javascript in both the contexts.
> 2. I tried your suggestion of using iframe and I AM ABLE TO EMBEDDED the functional html page into my non-functional page and visualize it.
>
> Can you suggest me where/what to make a patch in ParaViewWeb javascript as using iframe is not a "solution" for me. I want to dynamically create this visualization.
>
>
> Thanks
> Sumit
>
> ________________________________________
> From: Sebastien Jourdain [sebastien.jourdain at kitware.com]
> Sent: Friday, October 26, 2012 3:48 AM
> To: Purohit, Sumit
> Cc: paraview at paraview.org
> Subject: Re: [Paraview] No rendering in ParaviewWeb with javascript
>
> Hum...
>
> I guess it is exactly the same JavaScript code that you execute in both context.
> To me it seems to be a bug in the way the ParaViewWeb javascript is behaving.
>
> But in the mean time, do you try to embed the 3D renderer in an iFrame
> or do you properly embed it into the current HTML document ? Because,
> if you were planing to use some iFrame, the ParaViewWeb javascript
> part could be done in that iFrame page and that might work as is...
> (At least as a first step)
>
> A third solution, could also be to patch ParaViewWeb javascript so it
> could properly work in your context or depending on how complex your
> web application is going to be, create an ad-hoc JavaScript library
> that will make only the call you need and the way you want.
>
> Hope my comments helped you,
>
> Thanks,
>
> Seb
>
>
> On Thu, Oct 25, 2012 at 4:48 PM, Purohit, Sumit <Sumit.Purohit at pnnl.gov> wrote:
>> Thanks Seb,
>>
>> I realized that i was running my html page under Apache but it was not properly configured to talk to paraviweWeb which is under. tomcat. I Fixed that and i worked fine. Thanks
>>
>> My goal is to add this code under a Mediawiki Page and run it on a button click BUT when i do that i get "uncaught exception: get_module() takes no arguments (2 given). Paraview.js line 231"
>>
>> I see one deference in the way internal paraviewWeb POST calls are made.
>>
>> 1. When running outside Mediawiki (This Works) :
>> {id:3,method:"VisualizationsManager.invoke",params:["87095ed9081c5fc32c76f43105d74c32-28", "{\"id\":1,\"method\":\"get_module\",\"params\":[]}"]}
>>
>> 2. Within MW ( This gives above exception)
>> {id:3,method:"VisualizationsManager.invoke",params:["87095ed9081c5fc32c76f43105d74c32-27", "{\"id\":1,\"method\":\"get_module\",\"params\":\"[]\"}"]}
>>
>> the difference is how empty param are specified in both the POST requests. [] Vs. \"[]\"
>>
>> Both are made internally by ParaViewWeb, so do you think i can control this in my javascript ( actually jQuery) code ?? OR on ParaviewWeb code/config side ??
>>
>>
>> Thanks
>> Sumit Purohit
>>
>>
>>
>> ________________________________________
>> From: Sebastien Jourdain [sebastien.jourdain at kitware.com]
>> Sent: Wednesday, October 24, 2012 4:33 AM
>> To: Purohit, Sumit
>> Cc: paraview at paraview.org
>> Subject: Re: [Paraview] No rendering in ParaviewWeb with javascript
>>
>> Try to move the script section between </table> and </body> . Moreover does the other applications let you properly see 3d content?
>>
>> Seb
>>
>> On Oct 23, 2012, at 4:08 PM, "Purohit, Sumit" <Sumit.Purohit at pnnl.gov> wrote:
>>
>>> Hi Everyone,
>>>
>>> I am a newbie (and this is a cliche ) in paraview and trying to run ParaViewWeb using javascript rendering.
>>> I installed the Paraview Web and i can access various webapps Ex :
>>>
>>> http://localhost:8180/PWApp/index.jsp
>>> http://localhost:8180/PWService/
>>>
>>> [ i installed ParaviewWeb on port 8180]
>>>
>>> As a next step i am tried to use its javascript rendering but could not see any thing on the page.
>>> JavaScript console shows "Error: Connection failed" in line 116 ParaviewWeb.js
>>>
>>> Here is my complete HTML
>>> <html>
>>> <head>
>>> <script type="text/javascript" src="http://localhost:8180/PWService/js/ParaViewWeb.js"></script>
>>> </head>
>>> <body>
>>> <table width='100%'>
>>> <tr>
>>> <td>Viewport title</td>
>>> </tr>
>>> <tr>
>>> <td id='renderer-container-id'>
>>> <!-- The renderer will be inserted here -->
>>>
>>> <script type="text/javascript">
>>> // Set the web service base URL
>>> var serverUrl = "http://localhost:8180/PWService";
>>>
>>> //
>>> // Create a paraview proxy
>>> //
>>> var paraview = new Paraview(serverUrl);
>>> paraview.createSession("Session name", "Session comment", "default");
>>>
>>> var activeView = paraview.CreateIfNeededRenderView();
>>>
>>> // Create and bind renderer
>>> var renderer = new JavaScriptRenderer("rendererName", serverUrl);
>>> renderer.init(paraview.sessionId, activeView.__selfid__);
>>> renderer.setSize('200','200');
>>> renderer.bindToElementId("renderer-container-id");
>>> renderer.start();
>>> </script>
>>> </td>
>>> </tr>
>>> </table>
>>> </body>
>>> </html>
>>>
>>> Thank you for the help.
>>> Sumit Purohit
>>> _______________________________________________
>>> Powered by www.kitware.com
>>>
>>> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>>>
>>> Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView
>>>
>>> Follow this link to subscribe/unsubscribe:
>>> http://www.paraview.org/mailman/listinfo/paraview
More information about the ParaView
mailing list