[IPython-dev] D3js and IPython

MinRK benjaminrk at gmail.com
Tue Jan 8 17:09:30 EST 2013


On Tue, Jan 8, 2013 at 2:04 PM, Brian Granger <ellisonbg at gmail.com> wrote:

> Using the JS Plugins branch, you can use the following model:
>
> * Write a JS plugin that has all of the javascript code you need - you
> can do whatever you want.
> * That Js plugin will declare a handler for a particular type of data.
> * You can then publish JSON data to that handler using appropriate Python
> calls.
>
> You shouldn't ever need to use the existing Javascript object to write
> your JS code.
>

I don't think doing away with inline js is remotely feasible.
For security reasons, we have to make decisions like:

on load, do not run raw js, because it could do terrible things without the
user being aware.

But removing the general ability to run js without installing new files on
the nb *server* cannot possibly be the long-term solution.


>
> Cheers,
>
> Brian
>
>
> On Tue, Jan 8, 2013 at 1:11 PM, lecast <martin.zmk at gmail.com> wrote:
> > Thx. I will have a look at both the repository and the pull.
> >
> > Returning Javascript() or HTML() is not exactly what I need. In general I
> > always need  to publish both html and javascript within a function so
> that
> > function that would correspond to make_table() from ipy_table creates
> both
> > the element and the script that populates that element. But this is mute
> > here, since I couldn't find a way to copy final elements from the window
> and
> > saving them in the notebook for good, the only thing that actually is
> saved
> > is the final html object.
> >
> > I don't use inline JS anywhere there. But, if you prevent inline JS in
> > output then you will also prevent a lot of interactivity on final output
> > that e.g. d3 generates. I mean you need to be able to have things like
> > onClick etc. But if you mean that you will prohibit me from saving
> > javascript in any form in the notebook, then I will probably have to stop
> > pulling the new versions... Right now I spend all my time in Notebook,
> i.e.
> > I wrote a script that converts notebooks to latex and I just write my
> papers
> > in Notebook. It is nice since I see my math instantly, but I need to be
> able
> > to embed some javascript that appears only in those notebooks that are
> > really papers, e.g. to replace references or make highlights (
> > http://i46.tinypic.com/163qyg.png ).
> >
> > Customjs is ok unless you send the notebook to someone and don't tell
> them
> > they need to have it as well. I wanted something that produces output
> that
> > is easily replicable.
> >
> >
> >
> > Z wyrazami szacunku,
> > Marcin Zamojski
> >
> >
> > On Tue, Jan 8, 2013 at 8:56 PM, Matthias Bussonnier [via Python] <[hidden
> > email]> wrote:
> >>
> >> Hi !
> >>
> >> It look really great :
> >>
> >> A few comment :
> >>
> >> Obstacle 1
> >> def x():
> >>         from IPython.core.display import Javascript
> >>         Javascript('alert("a")')
> >> x()
> >>
> >> you probably want to `return Javascript('alert("a")')`
> >> Am I wrong ?
> >>
> >>
> >> Obstacle 2:
> >>  same : `return HTML()` I guess...
> >>
> >> Please, please, please don't inline script.
> >> We will in anyway prevent script in output so this will become useless
> >> anyway.
> >> Which will deprecate _js_repr_ (at least make it useless) but Brian
> >> Json-handler branch
> >> ill work much better to do what you want.
> >>
> >> Obstacle 3/Obstacle 4
> >> Will be solve with brian Json Handler branch.
> >>
> >> You probably want to inject your own library in the notebook,
> >> which can be done via custom.js
> >>
> >> draft doc :
> >> http://elacave.lmdb.eu/~carreau/yui/classes/IPython.customjs.html
> >> use $.getScript(url)
> >> for example :
> >> $.getScript('d3.min.js') in you have d3.min.js in
> >> .ipython/profile_xxx/static/js/d3.min.js
> >>
> >> You might be interesting in
> >> http://epmoyer.github.com/ipy_table/
> >>
> >> To join effort.
> >>
> >> Thanks.
> >> --
> >> Matthias
> >>
> >>
> >>
> >>
> >> Le 8 janv. 2013 à 17:26, lecast a écrit :
> >>
> >> > This is a new thread but it is born out and related to a  previous
> >> > discussion
> >> >
> >> > <
> http://python.6.n6.nabble.com/experiment-remote-execution-of-jquery-and-d3-code-into-the-browser-via-ipython-td4633053.html#a4955237
> >
> >> > . The goal there was to live update figures created with d3js in
> IPython
> >> > Notebook. It was suggested that a solution would be to use widgets,
> >> > which I
> >> > have to admit I did not have time to understand so instead I decided
> to
> >> > create something that produces the end product I was aiming at, i.e.
> >> > take
> >> > output from Python, use d3js to create a table/figure, use some
> >> > blackbox,
> >> > have the output visible in the notebook (or be able to save it
> elsewhere
> >> > as
> >> > svg/html/png/etc).
> >> >
> >> > You can find an example notebook with a lot of custom tables and some
> >> > figures  here <http://nbviewer.ipython.org/4484816/ipyD3sample.ipynb>
>  .
> >> > They are all created based on data from Python, rendered in PhantomJs
> >> > (in
> >> > that case I just copy the html, but PhantomJs allows for conversion to
> >> > other
> >> > formats), and then published in the notebook.
> >> >
> >> > I created it for myself, so there is hardly any commenting in the file
> >> > (I
> >> > know, bad), but I have been using it for a few months now and it works
> >> > really well. D3js has some great modern visualizations coded in and it
> >> > takes
> >> > only a few days to learn the syntax by doing.
> >> >
> >> > Personally I think it would be really nice to make it into an
> >> > extension/package, but I lack experience/time to do that.
> >> >
> >> >
> >> >
> >> > --
> >> > View this message in context:
> >> > http://python.6.n6.nabble.com/D3js-and-IPython-tp5001661.html
> >> > Sent from the IPython - Development mailing list archive at
> Nabble.com.
> >> > _______________________________________________
> >> > IPython-dev mailing list
> >> > [hidden email]
> >> > http://mail.scipy.org/mailman/listinfo/ipython-dev
> >>
> >> _______________________________________________
> >> IPython-dev mailing list
> >> [hidden email]
> >> http://mail.scipy.org/mailman/listinfo/ipython-dev
> >>
> >>
> >> ________________________________
> >> If you reply to this email, your message will be added to the discussion
> >> below:
> >> http://python.6.n6.nabble.com/D3js-and-IPython-tp5001661p5001692.html
> >> To unsubscribe from D3js and IPython, click here.
> >> NAML
> >
> >
> >
> > ________________________________
> > View this message in context: Re: D3js and IPython
> >
> > Sent from the IPython - Development mailing list archive at Nabble.com.
> >
> > _______________________________________________
> > IPython-dev mailing list
> > IPython-dev at scipy.org
> > http://mail.scipy.org/mailman/listinfo/ipython-dev
> >
>
>
>
> --
> Brian E. Granger
> Cal Poly State University, San Luis Obispo
> bgranger at calpoly.edu and ellisonbg at gmail.com
> _______________________________________________
> IPython-dev mailing list
> IPython-dev at scipy.org
> http://mail.scipy.org/mailman/listinfo/ipython-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ipython-dev/attachments/20130108/36731167/attachment.html>


More information about the IPython-dev mailing list