[geojquery] Playing with the prototype GeojQuery Widget
Anne Blankert
anne.blankert at geodan.nl
Fri Sep 24 05:06:55 EDT 2010
Hello list,
I do like how the ui-widgets work, although they add a dependency on
jquery-ui. I did not find full reference documentation though, is there
one on-line?
In my attempt at creating a mapwidget plugin, I tried to depend on
jQuery only and wrap jQuery-ui widgets (like 'layout', 'dialog' or
'sortable') around them.
So where do we go from here? Many of the widgets do not require
jQuery-ui. At this moment I think only a widget like 'sortableLegend'
would require jQuery-ui.
Volker proposes we implement a subset of the widget factory ourselves.
According to
http://bililite.com/blog/understanding-jquery-ui-widgets-a-tutorial/ the
core problem of plugins are memory management:
Memory leaks me be caused by DOM elements referencing Javascript
elements and vice versa. jQuery solved this by adding the $.fn.data
plugin, but this results in a lot of bookkeeping.
The jQuery-ui widgets generally work as follows:
// create the widget
$.widget("widgetName", WidgetClass);
// now instantiate the widget in the DOM
$(selector).widgetName({defaultOption1: value1, defaultOption2: value2});
// use some WidgetClass methods
// call a chainable WidgetClass setter named 'setterMethod':
$(selector).widgetName('setterMethod', setterParameter1, setterParameter2);
// call a WidgetClass getter named 'getterMethod'
var aValue = $(selector).widgetName('getterMethod', getterParameter1,
getterParameter2);
Now if we want get rid of the jQuery-ui dependency, we may still want
the to be able to do something like:
// instantiate geoMap
$(selector).geoMap ({ olMap: myOlMap, allOverlays: false});
// use a setter method:
$(selector).geoMap(‘layer’, ‘blue_marble’, {
'type': 'WMS',
'label': 'Blue Marble',
'url': 'http://sigma.openplans.org/geoserver/gwc/service/wms?',
'layers': 'bluemarble'
});
// get the class instance:
var myMap = $(selector).geoMap('geoMap');
// get some value
var myValue = $(selector).geoMap('getOption', 'keyName');
// set some value
$(selector).geoMap('setOption', 'keyName', keyValue);
I think the above examples can be done without the need for the
jQuery-ui widget factory. I think I even see some advantages of not
using the widget factory here.
What kind of functionality would we lose if we let go of the jQuery-ui
widget factory altogether?
Anne
More information about the Mapquery
mailing list