<br><br><div class="gmail_quote">On Tue, Jan 8, 2013 at 2:04 PM, Brian Granger <span dir="ltr">&lt;<a href="mailto:ellisonbg@gmail.com" target="_blank">ellisonbg@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Using the JS Plugins branch, you can use the following model:<br>
<br>
* Write a JS plugin that has all of the javascript code you need - you<br>
can do whatever you want.<br>
* That Js plugin will declare a handler for a particular type of data.<br>
* You can then publish JSON data to that handler using appropriate Python calls.<br>
<br>
You shouldn&#39;t ever need to use the existing Javascript object to write<br>
your JS code.<br></blockquote><div><br></div><div>I don&#39;t think doing away with inline js is remotely feasible.</div><div>For security reasons, we have to make decisions like:</div><div><br></div><div>on load, do not run raw js, because it could do terrible things without the user being aware.</div>

<div><br></div><div>But removing the general ability to run js without installing new files on the nb *server* cannot possibly be the long-term solution.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<br>
Cheers,<br>
<br>
Brian<br>
<div class="HOEnZb"><div class="h5"><br>
<br>
On Tue, Jan 8, 2013 at 1:11 PM, lecast &lt;<a href="mailto:martin.zmk@gmail.com">martin.zmk@gmail.com</a>&gt; wrote:<br>
&gt; Thx. I will have a look at both the repository and the pull.<br>
&gt;<br>
&gt; Returning Javascript() or HTML() is not exactly what I need. In general I<br>
&gt; always need  to publish both html and javascript within a function so that<br>
&gt; function that would correspond to make_table() from ipy_table creates both<br>
&gt; the element and the script that populates that element. But this is mute<br>
&gt; here, since I couldn&#39;t find a way to copy final elements from the window and<br>
&gt; saving them in the notebook for good, the only thing that actually is saved<br>
&gt; is the final html object.<br>
&gt;<br>
&gt; I don&#39;t use inline JS anywhere there. But, if you prevent inline JS in<br>
&gt; output then you will also prevent a lot of interactivity on final output<br>
&gt; that e.g. d3 generates. I mean you need to be able to have things like<br>
&gt; onClick etc. But if you mean that you will prohibit me from saving<br>
&gt; javascript in any form in the notebook, then I will probably have to stop<br>
&gt; pulling the new versions... Right now I spend all my time in Notebook, i.e.<br>
&gt; I wrote a script that converts notebooks to latex and I just write my papers<br>
&gt; in Notebook. It is nice since I see my math instantly, but I need to be able<br>
&gt; to embed some javascript that appears only in those notebooks that are<br>
&gt; really papers, e.g. to replace references or make highlights (<br>
&gt; <a href="http://i46.tinypic.com/163qyg.png" target="_blank">http://i46.tinypic.com/163qyg.png</a> ).<br>
&gt;<br>
&gt; Customjs is ok unless you send the notebook to someone and don&#39;t tell them<br>
&gt; they need to have it as well. I wanted something that produces output that<br>
&gt; is easily replicable.<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; Z wyrazami szacunku,<br>
&gt; Marcin Zamojski<br>
&gt;<br>
&gt;<br>
&gt; On Tue, Jan 8, 2013 at 8:56 PM, Matthias Bussonnier [via Python] &lt;[hidden<br>
&gt; email]&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Hi !<br>
&gt;&gt;<br>
&gt;&gt; It look really great :<br>
&gt;&gt;<br>
&gt;&gt; A few comment :<br>
&gt;&gt;<br>
&gt;&gt; Obstacle 1<br>
&gt;&gt; def x():<br>
&gt;&gt;         from IPython.core.display import Javascript<br>
&gt;&gt;         Javascript(&#39;alert(&quot;a&quot;)&#39;)<br>
&gt;&gt; x()<br>
&gt;&gt;<br>
&gt;&gt; you probably want to `return Javascript(&#39;alert(&quot;a&quot;)&#39;)`<br>
&gt;&gt; Am I wrong ?<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Obstacle 2:<br>
&gt;&gt;  same : `return HTML()` I guess...<br>
&gt;&gt;<br>
&gt;&gt; Please, please, please don&#39;t inline script.<br>
&gt;&gt; We will in anyway prevent script in output so this will become useless<br>
&gt;&gt; anyway.<br>
&gt;&gt; Which will deprecate _js_repr_ (at least make it useless) but Brian<br>
&gt;&gt; Json-handler branch<br>
&gt;&gt; ill work much better to do what you want.<br>
&gt;&gt;<br>
&gt;&gt; Obstacle 3/Obstacle 4<br>
&gt;&gt; Will be solve with brian Json Handler branch.<br>
&gt;&gt;<br>
&gt;&gt; You probably want to inject your own library in the notebook,<br>
&gt;&gt; which can be done via custom.js<br>
&gt;&gt;<br>
&gt;&gt; draft doc :<br>
&gt;&gt; <a href="http://elacave.lmdb.eu/~carreau/yui/classes/IPython.customjs.html" target="_blank">http://elacave.lmdb.eu/~carreau/yui/classes/IPython.customjs.html</a><br>
&gt;&gt; use $.getScript(url)<br>
&gt;&gt; for example :<br>
&gt;&gt; $.getScript(&#39;d3.min.js&#39;) in you have d3.min.js in<br>
&gt;&gt; .ipython/profile_xxx/static/js/d3.min.js<br>
&gt;&gt;<br>
&gt;&gt; You might be interesting in<br>
&gt;&gt; <a href="http://epmoyer.github.com/ipy_table/" target="_blank">http://epmoyer.github.com/ipy_table/</a><br>
&gt;&gt;<br>
&gt;&gt; To join effort.<br>
&gt;&gt;<br>
&gt;&gt; Thanks.<br>
&gt;&gt; --<br>
&gt;&gt; Matthias<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Le 8 janv. 2013 à 17:26, lecast a écrit :<br>
&gt;&gt;<br>
&gt;&gt; &gt; This is a new thread but it is born out and related to a  previous<br>
&gt;&gt; &gt; discussion<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; &lt;<a href="http://python.6.n6.nabble.com/experiment-remote-execution-of-jquery-and-d3-code-into-the-browser-via-ipython-td4633053.html#a4955237" target="_blank">http://python.6.n6.nabble.com/experiment-remote-execution-of-jquery-and-d3-code-into-the-browser-via-ipython-td4633053.html#a4955237</a>&gt;<br>


&gt;&gt; &gt; . The goal there was to live update figures created with d3js in IPython<br>
&gt;&gt; &gt; Notebook. It was suggested that a solution would be to use widgets,<br>
&gt;&gt; &gt; which I<br>
&gt;&gt; &gt; have to admit I did not have time to understand so instead I decided to<br>
&gt;&gt; &gt; create something that produces the end product I was aiming at, i.e.<br>
&gt;&gt; &gt; take<br>
&gt;&gt; &gt; output from Python, use d3js to create a table/figure, use some<br>
&gt;&gt; &gt; blackbox,<br>
&gt;&gt; &gt; have the output visible in the notebook (or be able to save it elsewhere<br>
&gt;&gt; &gt; as<br>
&gt;&gt; &gt; svg/html/png/etc).<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; You can find an example notebook with a lot of custom tables and some<br>
&gt;&gt; &gt; figures  here &lt;<a href="http://nbviewer.ipython.org/4484816/ipyD3sample.ipynb" target="_blank">http://nbviewer.ipython.org/4484816/ipyD3sample.ipynb</a>&gt;  .<br>
&gt;&gt; &gt; They are all created based on data from Python, rendered in PhantomJs<br>
&gt;&gt; &gt; (in<br>
&gt;&gt; &gt; that case I just copy the html, but PhantomJs allows for conversion to<br>
&gt;&gt; &gt; other<br>
&gt;&gt; &gt; formats), and then published in the notebook.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; I created it for myself, so there is hardly any commenting in the file<br>
&gt;&gt; &gt; (I<br>
&gt;&gt; &gt; know, bad), but I have been using it for a few months now and it works<br>
&gt;&gt; &gt; really well. D3js has some great modern visualizations coded in and it<br>
&gt;&gt; &gt; takes<br>
&gt;&gt; &gt; only a few days to learn the syntax by doing.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Personally I think it would be really nice to make it into an<br>
&gt;&gt; &gt; extension/package, but I lack experience/time to do that.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; --<br>
&gt;&gt; &gt; View this message in context:<br>
&gt;&gt; &gt; <a href="http://python.6.n6.nabble.com/D3js-and-IPython-tp5001661.html" target="_blank">http://python.6.n6.nabble.com/D3js-and-IPython-tp5001661.html</a><br>
&gt;&gt; &gt; Sent from the IPython - Development mailing list archive at Nabble.com.<br>
&gt;&gt; &gt; _______________________________________________<br>
&gt;&gt; &gt; IPython-dev mailing list<br>
&gt;&gt; &gt; [hidden email]<br>
&gt;&gt; &gt; <a href="http://mail.scipy.org/mailman/listinfo/ipython-dev" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-dev</a><br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; IPython-dev mailing list<br>
&gt;&gt; [hidden email]<br>
&gt;&gt; <a href="http://mail.scipy.org/mailman/listinfo/ipython-dev" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-dev</a><br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; ________________________________<br>
&gt;&gt; If you reply to this email, your message will be added to the discussion<br>
&gt;&gt; below:<br>
&gt;&gt; <a href="http://python.6.n6.nabble.com/D3js-and-IPython-tp5001661p5001692.html" target="_blank">http://python.6.n6.nabble.com/D3js-and-IPython-tp5001661p5001692.html</a><br>
&gt;&gt; To unsubscribe from D3js and IPython, click here.<br>
&gt;&gt; NAML<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; ________________________________<br>
&gt; View this message in context: Re: D3js and IPython<br>
&gt;<br>
&gt; Sent from the IPython - Development mailing list archive at Nabble.com.<br>
&gt;<br>
</div></div><div class="im HOEnZb">&gt; _______________________________________________<br>
&gt; IPython-dev mailing list<br>
&gt; <a href="mailto:IPython-dev@scipy.org">IPython-dev@scipy.org</a><br>
&gt; <a href="http://mail.scipy.org/mailman/listinfo/ipython-dev" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-dev</a><br>
&gt;<br>
<br>
<br>
<br>
</div><div class="im HOEnZb">--<br>
Brian E. Granger<br>
Cal Poly State University, San Luis Obispo<br>
<a href="mailto:bgranger@calpoly.edu">bgranger@calpoly.edu</a> and <a href="mailto:ellisonbg@gmail.com">ellisonbg@gmail.com</a><br>
</div><div class="HOEnZb"><div class="h5">_______________________________________________<br>
IPython-dev mailing list<br>
<a href="mailto:IPython-dev@scipy.org">IPython-dev@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/ipython-dev" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-dev</a><br>
</div></div></blockquote></div><br>