Connecting to external JavaScript libs with Athena
![](https://secure.gravatar.com/avatar/efae6754bfd3e97627b628b3b30099c4.jpg?s=120&d=mm&r=g)
Hi all, So, I've been racking my brain for a couple of days on this, and I can't seem to get anywhere. My question is: Is it possible to connect to an external JavaScript library, and subsequently make calls to said library through an Athena LivePage element? Just to let you know where this is going, I had planned on embedding a map in my web application, using the Google Maps API. The problem, as I'm sure you can guess, is that the JavaScript for GM is loaded directly from their servers through the Google AJAX API. Now, I know their Ajax API does create a unique namespace for the function calls (eg: google.maps.Map2, etc.), but, so far, I have been unable to get a method from a LivePage or LiveElement to be able to talk with the Google API. Just to be clear, I have no problem simply importing the GM API and displaying the map -- my problem is that I want to add markers to the map, based on some server-side events. Effectively, I will have little to no client -> server communication during a normal visit (except, of course, the user's interaction with the map, which happens on Google's end anyway). When I tried to figure out how to do this in the first place, I tried modifying the "Athena LiveElement Tutorial" by embedding the JavaScript call (a simple "echo" function) directly into the HTML source (instead of using the jsClass attribute in LiveElement); from there, I tried a number of ways to get the LiveElement to "talk" to the embedded JS. No dice. Perhaps I'm missing something, or perhaps what I'm trying to do is just not supported. I'd supply some code here, but I really don't know if that would be very useful; let me know, however, if you feel otherwise. Anyway, any insight will be helpful. Thanks a lot, Travis
![](https://secure.gravatar.com/avatar/d6328babd9f9a98ecc905e1ccac2495e.jpg?s=120&d=mm&r=g)
On 04:10 am, tbranham@gmail.com wrote:
So, I've been racking my brain for a couple of days on this, and I can't seem to get anywhere. My question is: Is it possible to connect to an external JavaScript library, and subsequently make calls to said library through an Athena LivePage element?
Sure, maybe. It depends what you mean by all those words. "connect" to an external javascript library? Don't you mean "load" an external javascript library? And how is making calls to a library different than making calls to any random function? I don't know a lot about Google Maps, but I do know that Divmod's most recent product (Blendix) uses Google Maps to display locations. You can see this in action on my blendix page: http://blendix.com/users/glyph/ or view the source code: http://blendix.com/__jsmodule__/16f16613df2ba86d19271a41115d50bedf4b461d/Ble... Have a look at the 'initializeMap' method to see an example of integration between Athena and Google Maps. Please note that this isn't open source; we haven't released the code anywhere yet (although this part is JavaScript, so you could of course have just done 'view source' and figured out that link for yourself).
![](https://secure.gravatar.com/avatar/efae6754bfd3e97627b628b3b30099c4.jpg?s=120&d=mm&r=g)
Thanks, Glyph. Yes, by 'connect', I really meant 'load'. Your links were quite helpful; I believe that the following snippet was enough to keep me moving along: function _makeGoogleMap(self, mapContainerNode) { return (new GMap2(mapContainerNode)); }, I'll have to double-check my trials, because I was trying something similar from the outset. Of course, "something similar" and "something wrong" are, in this case, one and the same ;) Thanks for taking the time! -Travis On Mon, Jun 2, 2008 at 2:09 AM, <glyph@divmod.com> wrote:
On 04:10 am, tbranham@gmail.com wrote:
So, I've been racking my brain for a couple of days on this, and I can't seem to get anywhere. My question is: Is it possible to connect to an external JavaScript library, and subsequently make calls to said library through an Athena LivePage element?
Sure, maybe. It depends what you mean by all those words. "connect" to an external javascript library? Don't you mean "load" an external javascript library? And how is making calls to a library different than making calls to any random function?
I don't know a lot about Google Maps, but I do know that Divmod's most recent product (Blendix) uses Google Maps to display locations.
You can see this in action on my blendix page:
http://blendix.com/users/glyph/
or view the source code:
http://blendix.com/__jsmodule__/16f16613df2ba86d19271a41115d50bedf4b461d/Ble...
Have a look at the 'initializeMap' method to see an example of integration between Athena and Google Maps.
Please note that this isn't open source; we haven't released the code anywhere yet (although this part is JavaScript, so you could of course have just done 'view source' and figured out that link for yourself).
_______________________________________________ Twisted-web mailing list Twisted-web@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web
-- Travis Lee Branham
![](https://secure.gravatar.com/avatar/485d482a94574df2721dde13185b81fe.jpg?s=120&d=mm&r=g)
Hi Travis Say you want to use MochiKit functionality then just do a : : class XYZPage(athena.LivePage): javaScript = ('/scripts/MochiKit.js') def beforeRender(self, ctx: : : Simply use all MochiKit functionality as provided. Best working environment for me is Firefox with Firebug installed, if you want to have a look at some experiments of mine in this area head to http://jass.thie.ch U:optobyte P:optobyte and poke around. Be warned though, those are early experiments of mine, dating back to 2006 HTH, Werner Travis Branham wrote:
Hi all,
So, I've been racking my brain for a couple of days on this, and I can't seem to get anywhere. My question is: Is it possible to connect to an external JavaScript library, and subsequently make calls to said library through an Athena LivePage element?
Just to let you know where this is going, I had planned on embedding a map in my web application, using the Google Maps API. The problem, as I'm sure you can guess, is that the JavaScript for GM is loaded directly from their servers through the Google AJAX API. Now, I know their Ajax API does create a unique namespace for the function calls (eg: google.maps.Map2, etc.), but, so far, I have been unable to get a method from a LivePage or LiveElement to be able to talk with the Google API. Just to be clear, I have no problem simply importing the GM API and displaying the map -- my problem is that I want to add markers to the map, based on some server-side events. Effectively, I will have little to no client -> server communication during a normal visit (except, of course, the user's interaction with the map, which happens on Google's end anyway).
When I tried to figure out how to do this in the first place, I tried modifying the "Athena LiveElement Tutorial" by embedding the JavaScript call (a simple "echo" function) directly into the HTML source (instead of using the jsClass attribute in LiveElement); from there, I tried a number of ways to get the LiveElement to "talk" to the embedded JS. No dice.
Perhaps I'm missing something, or perhaps what I'm trying to do is just not supported. I'd supply some code here, but I really don't know if that would be very useful; let me know, however, if you feel otherwise.
Anyway, any insight will be helpful.
Thanks a lot, Travis
------------------------------------------------------------------------
_______________________________________________ Twisted-web mailing list Twisted-web@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web
participants (3)
-
glyph@divmod.com
-
Travis Branham
-
Werner Thie