Project

General

Profile

Switch off ajax

Added by Edward Hill almost 15 years ago

Hi all,

I wrote aplication that can move objects on canvas, all code use Wt functions. But even on my local PC it's very slow, i mean every movement call ajax to server.

I tried use WApplication::setAjaxMethod(DynamicScriptTag); but this doing something another, that need to me.

So is it possible not using ajax for move objects? Also using own javascripts not so good idea.

Thanks!


Replies (1)

RE: Switch off ajax - Added by Koen Deforche almost 15 years ago

Hey Edward,

The easiest way to have things move around and program it client-side is to use absolutely positioned widgets (which may themselves be WPaintedWidgets). Then you can have a small amount of JavaScript code which modifies 'left' and 'top' properties based on mouse dragging. See for example how the WDialog's implement moving when the mouse drags the title bar:

(from WDialog.js):

function handleMove(event) {
     var e = event||window.event;
     var nowxy = WT.pageCoordinates(e);
     var wxy = WT.windowCoordinates(e);
     var wsize = WT.windowSize();

     if (wxy.x > 0 && wxy.x < wsize.x && wxy.y > 0 && wxy.y < wsize.y) {
       moved = true;

       el.style.left = (WT.pxself(el, 'left') + nowxy.x - dsx) + 'px';
       el.style.top = (WT.pxself(el, 'top') + nowxy.y - dsy) + 'px';
       dsx = nowxy.x;
       dsy = nowxy.y;
     }
   };

   if (titlebar) {
     titlebar.onmousedown = function(event) {
       var e = event||window.event;
       WT.capture(titlebar);
       var pc = WT.pageCoordinates(e);
       dsx = pc.x;
       dsy = pc.y;

       titlebar.onmousemove = handleMove;
     };

     titlebar.onmouseup = function(event) {
       titlebar.onmousemove = null;

       WT.capture(null);
     };
   }

That means that you will need to split up your painting code over multiple widgets.

Regards,

koen

    (1-1/1)