Hi Björn,

You can combine the HTML and JavaScript into `_repr_html_`:


```
class MyCircle(object):

    def __init__(self, center=(0.0,0.0), radius=1.0, color='blue'):
        self.center = center
        self.radius = radius
        self.color = color

    def _repr_html_(self):
        return '''
        <canvas id='mycircle'/>
        <script>
        var c = document.getElementById("mycircle");
        var ctx = c.getContext("2d");
        ctx.beginPath();
        ctx.arc(100, 75, {}, 0, 2 * Math.PI);
        ctx.stroke();
        </script>'''.format(self.radius)

    def _repr_svg_(self):
        return """<svg width="100px" height="100px">
           <circle cx="50" cy="50" r="20" stroke="black" stroke-width="1" 
fill="blue"/>
        </svg>"""
    
    def _repr_latex_(self):
        return r"$\bigcirc \LaTeX$"
```


On Sunday, January 15, 2017 at 10:28:32 AM UTC-6, Björn Johansson wrote:
>
> Hi, I would like to add a javascript representation to the class below. I 
> would like to have a circle drawn on a HTML5 canvas. Is this even possible? 
> The code below does not work and I do not know very much javascript. I 
> would be grateful for help. The code below executes, but nothing is drawn 
> in the cell. I have looked at the ipywidgets 
> <https://github.com/ipython/ipywidgets>, but it is not clear to me how to 
> modify the code below.
>
> *class MyCircle(object):*
>
> *    def __init__(self, center=(0.0,0.0), radius=1.0, color='blue'):*
> *        self.center = center*
> *        self.radius = radius*
> *        self.color = color*
>
> *    def _repr_html_(self):*
> *        return "&#x25CB; (<b>html</b>)"*
>
> *    def _repr_svg_(self):*
> *        return """<svg width="100px" height="100px">*
> *           <circle cx="50" cy="50" r="20" stroke="black" stroke-width="1" 
> fill="blue"/>*
> *        </svg>"""*
>     
> *    def _repr_latex_(self):*
> *        return r"$\bigcirc \LaTeX$"*
>
> *    def _repr_javascript_(self):            *
> *        s=(    'var canvas = document.createElement("canvas");'    *
> *               'canvas.height= 400;'*
> *               'canvas.width = 400;'*
> *               'var context = canvas.getContext("2d");'*
> *               'document.body.appendChild(canvas);')*
> *        return s*
>

-- 
You received this message because you are subscribed to the Google Groups 
"Project Jupyter" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jupyter/906c60db-c0cf-44a7-aa6f-23f664198265%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to