DHTML Operator Panel
- Current status: rough code and panel server commited in r2140
- Currently lives at browser:freepbx/branches/experimental/amp_conf/htdocs/panel
Although the flash operator panel works decently well, it has some problems and limitations.
First of all, the flash source is not open - this just makes things annoying.(Ming sources are available. .swf file in the Debian package is rebuilt as part of the regular build process.)
The way the layout is defined (with absolute positions of buttons) makes things somewhere difficult to layout - it's hard to deal with varying numbers of extensions/trunks/queues that can take up different amounts of space.
What would be nice is a DHTML-based operator panel, that floated everything, so that it would be able to adjust to any screen size or ratio of objects. We would also be able to add features, like the ability to only view a certain group or context.
It would have to be done using AJAX, so there would be an XML status page. This would also raise the possibility of a fat client version that could be a taskbar icon.
I started working on a prototype for a DHTML/ AJAX operator panel. I ran into a major stumbling block. There currently isnt any good way to push events from the server up to the browser. There are some methods of doing this (see http://ajaxpatterns.org/HTTP_Streaming) but IMHO they are all hacks except for pushlets. My issue with pushlets is it involves a fair amount of setup for some fairly simple (at least concept wise) services. If I was going to use JSP as the backend this would be fine but I plan on using PHP for the backend. I am going to try a mockup of the "Page Streaming" method as outlined in the link above but this solution will not scale well at all (I am thinking even a few users will severly degrade performance). The other option is to use timed pollings for updates every x seconds (probably would need to be less than 2 seconds for any real use). If anyone has any other ideas I would love to hear from you. Once I get the server to browser communications worked out I will post some screen shots and release the code. I would love if this could get setup as a module under freePBX. Scott
I also have a working prototype. I wrote a server that partially acts as a proxy, but maintains status information (so when a new client connects, it sends enough information to tell it about all the current calls). I've been playing with a number of ways to do this, right now it's implemented with a long-lived HTTP connection but I think that iframe streaming may be a good way to go. The page itself shows all the known extensions, and then dynmically creates trunk buttons for each individual call, and will show the freepbx-specific status, eg, "digital receptionist 1" or "parked in 702". - Greg 5/08/2006
Just a clarification, FOP flash client is open source. It is done with ming, you will find the source used to produce the .swf inside the ming-source subdirectory on the FOP distribution tarball.
FOP just had a new release an Nicolas added a DHTML panel. He is solving the server-client communications using a hidden flash movie. Right now it is a status display only but could probably be a full featured client with very little work. Scott