[Twisted-Python] woven dynamic table cell updating (w/ LivePage)
Justin Johnson
justinjohnson at fastmail.fm
Fri Oct 10 10:08:34 MDT 2003
I decided to use images to display the status, and then have a server
side event send javascript to the page to change the src attribute of the
images.
I got the table displaying properly, and setup the following event
handler so that when I click a specific link, the server sends javascript
to the page to change the image src:
class MyEventHandler(input.Anything):
def initialize(self):
self.view.addEventHandler("onclick", self.onClick)
def onClick(self, request, widget):
currentPage = request.getSession(interfaces.IWovenLivePage)
script = """
document.images.task1_step1.src = "/images/S.gif"
"""
currentPage.sendScript(script)
print self, "CLICKED!!!"
I verified that the image has a name attribute set to task1_step1. When
I click, the javascript is sent, but I get the following javascript
error:
Error: 'document.images.task1_step1 is null or not an object
I tried using document.images[0].src instead, and got a similar error:
Error: 'document.images.0' is null or not an object
Do I have to do something goofy to reference things with javascript when
it is sent using LivePage?
Thanks again for answering my numerous questions.
-Justin
On Fri, 10 Oct 2003 07:37:04 -0600, "Justin Johnson"
<justinjohnson at fastmail.fm> said:
> I have some code (attached ui.py) that creates a table displaying results
> of running tasks. The rows are tasks and the columns are step numbers in
> that task. I use this table when I make a bunch of requests into PB
> servers running on multiple machines. As those tasks move forward, the
> PB server calls back into the client (which has a perspective_* method)
> to update the status of that task/step. An 'I' appears for 'in
> progress', 'S' for 'success', and 'F' for 'failure'. If there are
> failures, I display the details once the entire table is populated and
> all tasks are complete.
>
> | 1 | 2 | 3 | 4 | 5 | status
> --------------------------------------
> task1 | S | S | S | S | S | success
> --------------------------------------
> task2 | S | S | I | I | I | in progress
> --------------------------------------
> task3 | S | S | I | I | I | in progress
> --------------------------------------
> task4 | S | S | I | I | I | in progress
> --------------------------------------
> task5 | I | I | I | I | I | in progress
> --------------------------------------
>
> In the console based version each time the PB server task calls back into
> the client to update the status, it also requests that the client
> redisplay the screen. So the screen redraws quite often. Does anyone
> know how I could do something similar with woven? My thought was that
> this will require LivePage, but I'm not sure. Anyone have any
> thoughts/suggestions? I've attached (in widgets.py) my first attempt at
> porting the results table to woven.
>
> Thank you.
> -Justin
>
> P.S.
>
> To run the attached file, you'll need to get the following modules.
>
> WConio: http://newcenturycomputers.net/projects/wconio.html
>
> Windows Console I/O
> 1.5 or later.
>
> anycons: http://newcenturycomputers.net/projects/anycons.html
>
> Simple Universal Console I/O
> 1.1 or later.
More information about the Twisted-Python
mailing list