great, thanks once again! aus
On Dec 17, 4:54 pm, mdipierro <[email protected]> wrote: > <img src="{{=URL(r=request,f='../matplotlib/simple')}}" /> > > should be > > <img src="{{=URL(r=request,c='matplotlib',f='simple')}}" /> > > the view simple.html is not used because simple() returns a string > (the page body, the image) and not a dictionary. > > Massimo > > On Dec 17, 9:23 am, aus <[email protected]> wrote: > > > also, if I openhttp://127.0.0.1:8000/test/matplotlib/simple > > being simple() the function that provides the PNG data, > > the view matplotlib/simple.html does not seem to be used at all: the > > browser only show the figure, without any other element or formatting > > from matplotlib/simple.html: is that an intended behavior or am I > > again missing something? > > > thanks! > > aus > > > On Dec 17, 4:09 pm, aus <[email protected]> wrote: > > > > ok... I'm slowing getting there... > > > > now, I've got a file "test/views/testfigure/index.html" where I have > > > {{extend 'layout.html'}} > > > <h1>This is the testfigure/index.html template</h1> > > > <img src="{{=URL(r=request,f='../matplotlib/simple')}}" /> > > > <img src="{{=URL(r=request,f='simple')}}" /> > > > > and a file "test/controllers/matplotlib.py" that provided the PNG > > > stream > > > > <img src="{{=URL(r=request,f='../matplotlib/simple')}}" /> works fine, > > > but > > > <img src="{{=URL(r=request,f='simple')}}" /> does not > > > Is it a good practice to use a relative path or am I missing anything? > > > > thanks! > > > aus > > > > On Dec 17, 3:45 pm, mdipierro <[email protected]> wrote: > > > > > consider the previous example with mathplotlib: > > > > > def simple(): ..... return stream.getvalue() > > > > > now from a template you can do > > > > > <img src="{{=URL(r=request,f='simple')}}" /> > > > > > and this will include the image returned by the simple() action. > > > > > Massimo > > > > > On Dec 17, 8:38 am, aus <[email protected]> wrote: > > > > > > is there any example for doing that? I just cannot figure out how to > > > > > call a python function (action) from a template... > > > > > > thanks! > > > > > aus > > > > > > On Dec 17, 7:31 am, mdipierro <[email protected]> wrote: > > > > > > > <img src="{{=embed64(data=imagebinarydata)}}" /> > > > > > > > will work (not on IE). > > > > > > > Be aware that nobody ever does this. Nobody ever embeds images in > > > > > > HTML. Although it is cool in come cases. > > > > > > People normally just have source point to the action that generates > > > > > > the PNG. > > > > > > > Massimo > > > > > > > On Dec 16, 6:43 pm, aus <[email protected]> wrote: > > > > > > > > here I am again... > > > > > > > I fell like a moron, but I just cannot have it work... > > > > > > > > so, the last line of the controller is: > > > > > > > return dict(imagebinarydata=stream.getvalue()) > > > > > > > > and this is the corresponding view: > > > > > > > {{extend 'layout.html'}} > > > > > > > <h1>This is the matplotlib/simple.html template</h1> > > > > > > > <img src="{{=embed64(data = {{=imagebinarydata}} ) }}" /> > > > > > > > > unfortunately the syntax is wrong: > > > > > > > > response.write(embed64(data = {{=imagebinarydata) > > > > > > > ^ > > > > > > > SyntaxError: invalid syntax > > > > > > > > and I don't quite understand why. > > > > > > > Is it also necessary to include extension='image/png' in the call > > > > > > > to > > > > > > > embed64? > > > > > > > > Thanks! > > > > > > > > Cheers, > > > > > > > aus > > > > > > > > On Dec 17, 1:02 am, aus <[email protected]> wrote: > > > > > > > > > Thank you, Massimo! > > > > > > > > Sorry for the multiple posts... I didn't mean it :) > > > > > > > > > cheers, > > > > > > > > ale > > > > > > > > > On Dec 16, 7:26 pm, mdipierro <[email protected]> wrote: > > > > > > > > > > You have to do it the old fashion way > > > > > > > > > > <img src="url_to_the_png_action" /> > > > > > > > > > > web2py allows you to do > > > > > > > > > > <img src="{{=embed64(data='imagebinarydata')}}" /> but this > > > > > > > > > is not > > > > > > > > > supported by IE. > > > > > > > > > > Massimo > > > > > > > > > > On Dec 16, 11:59 am, aus <[email protected]> > > > > > > > > > wrote: > > > > > > > > > > > now the question is how to place the figure in a variable > > > > > > > > > > to be used > > > > > > > > > > in a template. What's the best way of doing that? Should I > > > > > > > > > > pack the > > > > > > > > > > stream into a dict? How should the view look like? > > > > > > > > > > > thanks! > > > > > > > > > > aus > > > > > > > > > > > On Dec 16, 5:27 pm, aus <[email protected]> > > > > > > > > > > wrote: > > > > > > > > > > > > ok, I found it, I mistyped 'Content-Type', my fault > > > > > > > > > > > > thanks! > > > > > > > > > > > aus > > > > > > > > > > > > On Dec 16, 5:04 pm, aus <[email protected]> > > > > > > > > > > > wrote: > > > > > > > > > > > > > ok, it works, but firefox displays the raw data, not a > > > > > > > > > > > > figure. I guess > > > > > > > > > > > > I need an appropriate view for that, am I right? > > > > > > > > > > > > > Cheers > > > > > > > > > > > > aus > > > > > > > > > > > > > On Dec 16, 4:56 pm, mdipierro <[email protected]> > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > response.header['content-type']='image/png' > > > > > > > > > > > > > > should have been > > > > > > > > > > > > > > response.headers['Content-Type']='image/png' > > > > > > > > > > > > > > Massimo > > > > > > > > > > > > > > On Dec 16, 9:48 am, aus > > > > > > > > > > > > > <[email protected]> wrote: > > > > > > > > > > > > > > > Hi Massimo, > > > > > > > > > > > > > > > thank you for the *really* prompt reply! > > > > > > > > > > > > > > I managed to have Dojox charts work, but I'm > > > > > > > > > > > > > > getting a error message > > > > > > > > > > > > > > form the "matplotlib" code (btw, "import datetime" > > > > > > > > > > > > > > was missing). I > > > > > > > > > > > > > > pasted the Dojo code at the bottom of this email, > > > > > > > > > > > > > > just in case I'm not > > > > > > > > > > > > > > the only beginner around :) > > > > > > > > > > > > > > > Traceback (most recent call last): > > > > > > > > > > > > > > File > > > > > > > > > > > > > > "/home/aus/Software/Web2py/web2py/gluon/restricted.py", > > > > > > > > > > > > > > line > > > > > > > > > > > > > > 62, in restricted > > > > > > > > > > > > > > exec ccode in environment > > > > > > > > > > > > > > File > > > > > > > > > > > > > > "/home/aus/Software/Web2py/web2py/applications/test/controllers/ > > > > > > > > > > > > > > matplotlib.py", line 29, in <module> > > > > > > > > > > > > > > File > > > > > > > > > > > > > > "/home/aus/Software/Web2py/web2py/gluon/globals.py", > > > > > > > > > > > > > > line 55, > > > > > > > > > > > > > > in <lambda> > > > > > > > > > > > > > > self._caller=lambda f: f() > > > > > > > > > > > > > > File > > > > > > > > > > > > > > "/home/aus/Software/Web2py/web2py/applications/test/controllers/ > > > > > > > > > > > > > > matplotlib.py", line 23, in simple > > > > > > > > > > > > > > response.header['content-type']='image/png' > > > > > > > > > > > > > > TypeError: 'NoneType' object does not support item > > > > > > > > > > > > > > assignment > > > > > > > > > > > > > > > what's wrong with the response? > > > > > > > > > > > > > > > thank you once again! > > > > > > > > > > > > > > > Cheers, > > > > > > > > > > > > > > aus > > > > > > > > > > > > > > > Dojo / Dojox charting / JSON example: > > > > > > > > > > > > > > > <script type="text/javascript"> > > > > > > > > > > > > > > > dojo.require("dojox.charting.Chart2D"); > > > > > > > > > > > > > > {{import gluon.contrib.simplejson as sj}} > > > > > > > > > > > > > > > function plott(){ > > > > > > > > > > > > > > //var dd = dojox.json.ref.fromJson(data); > > > > > > > > > > > > > > //var data = [1,3,2,4,3,6]; > > > > > > > > > > > > > > console.debug({{=sj.dumps(data)}}); > > > > > > > > > > > > > > var chart1 = new > > > > > > > > > > > > > > dojox.charting.Chart2D("simplechart"); > > > > > > > > > > > > > > chart1.addPlot("default", {type: "Lines"}); > > > > > > > > > > > > > > chart1.addAxis("x"); > > > > > > > > > > > > > > chart1.addAxis("y", {vertical: true}); > > > > > > > > > > > > > > chart1.addSeries("Series 1", > > > > > > > > > > > > > > {{=sj.dumps(data)}}); > > > > > > > > > > > > > > chart1.render();}; > > > > > > > > > > > > > > > dojo.addOnLoad(plott); > > > > > > > > > > > > > > > </script> > > > > > > > > > > > > > > > On Dec 16, 3:49 pm, mdipierro > > > > > > > > > > > > > > <[email protected]> wrote: > > > > > > > > > > > > > > > > In web2py+matplotlib: > > > > > > > > > > > > > > > > def simple(): > > > > > > > > > > > > > > > import random, cStringIO > > > > > > > > > > > > > > > > from matplotlib.backends.backend_agg import > > > > > > > > > > > > > > > FigureCanvasAgg as > > > > > > > > > > > > > > > FigureCanvas > > > > > > > > > > > > > > > from matplotlib.figure import Figure > > > > > > > > > > > > > > > from matplotlib.dates import DateFormatter > > > > > > > > > > > > > > > > fig=Figure() > > > > > > > > > > > > > > > ax=fig.add_subplot(111) > > > > > > > > > > > > > > > x=[] > > > > > > > > > > > > > > > y=[] > > > > > > > > > > > > > > > now=datetime.datetime.now() > > > > > > > > > > > > > > > delta=datetime.timedelta(days=1) > > > > > > > > > > > > > > > for i in range(10): > > > > > > > > > > > > > > > x.append(now) > > > > > > > > > > > > > > > now+=delta > > > > > > > > > > > > > > > y.append(random.randint(0, 1000)) > > > > > > > > > > > > > > > ax.plot_date(x, y, '-') > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ax.xaxis.set_major_formatter(DateFormatter('%Y-%m-%d')) > > > > > > > > > > > > > > > fig.autofmt_xdate() > > > > > > > > > > > > > > > canvas=FigureCanvas(fig) > > > > > > > > > > > > > > > response.header['content-type']='image/png' > > > > > > > > > > > > > > > stream=cStringIO.StringIO() > > > > > > > > > > > > > > > canvas.print_png(stream) > > > > > > > > > > > > > > > return stream.getvalue() > > > > > > > > > > > > > > > > Massimo > > > > > > > > > > > > > > > > On Dec 16, 6:12 am, aus > > > > > > > > > > > > > > > <[email protected]> wrote: > > > > > > > > > > > > > > > > > Hi Massimo, > > > > > > > > > > > > > > > > > thank you for your reply. Your suggestion does > > > > > > > > > > > > > > > > not seem to work, but > > > > > > > > > > > > > > > > maybe I'm not using Dojo properly. How would > > > > > > > > > > > > > > > > you code the plot with > > ... > > read more » --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "web2py Web Framework" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/web2py?hl=en -~----------~----~----~----~------~----~------~--~---

