Saturday, 20 June 2015

GeoExt 3 Codesprint - Day 2 and 3


Day 2 and 3 of the GeoExt 3 Codesprint brought a lot of useful outcome. After the sprinters had to do a lot of discussion work on day 1 the following two sprint days could be used to implement a lot of stuff. Here is a list of tasks which were already tackled:

Investigations on an approach to use an ExtJS "Universal App" (optimized for desktop and mobile) with GeoExt components seemed very promising.

First research work for vector support in the PrintProvider class has been done.

A lot of work has been invested on the data models especially in combination with the LayerTree.

A Popup class to show georeferenced popups on the map has been implemented.

A LayerList class for mobile devices has been written.

The FeatureRenderer class has been done, including examples and tests.

A website has been setup for the project.

A lot of examples have been created. Some of them are published on the project website. Some more are following the next days.

The license had to be switched to GPLv3 because Sencha removed the FLOSS exception, which allowed us to license GeoExt under BSD before.


So all in all a really great result of the sprint! Thanks to all sprinters, who worked on this.


But the sprinters did not just work. On Thursday evening was a great social event at Braushaus Bönnsch where the sprinters could enjoy the local food and beer.



To sum it up:
The GeoExt 3 Codesprint was a big and important step for the project! A solid foundation for the future of GeoExt has been created. Stay tuned!

Last but not least a big thank you to all our sponsors. Without their input this sprint would not have been possible. And thanks to terrestris, for beeing such a great host (especially chef Till) .

Thursday, 18 June 2015

GeoExt is getting the 3

GeoExt 3 Codesprint 

Yesterday a group of GeoExt developers came together in Bonn (Germany) to set the foundation for the new GeoExt 3 which will be built upon ExtJS 6 and OpenLayers 3. In Bonn itself 9 sprinters attended on-site and one sprinter worked remotely from Greece.

The Codesprint has been sponsored by several companies and agencies (either by providing developer manpower or by money donations):

Thank you for supporting GeoExt!

Day 1 - Getting Started

After a decent warmup we had some strategic conversations before hitting the keys. First of all we defined the objectives of the sprint in order to get a kind of prioritized roadmap. After that Kai and Marc presented their work on ExtJS 6 and OpenLayers 3 which tackeled a lot of the architectural project setup (e. g. the package structure and a test suite) and even some class impementations (e.g. a MapPanel and a basic LayerTree), which were demonstrated as working examples. The sprinters agreed to use this pre-work as a good starting point for the implementation stage and therefore we merged the code of Marc and Kais work into the project master.
After that a lot of strategic discussions were done, which were very productive and necessary to get a common understanding of what we want to achieve.

Later the day we started hacking and tackled the following tasks:

The MapPanel class has been reworked to an ExtJS Component and is no more a ExtJS Panel in order to avoid overnesting, which is a first step for mobile support.

The implementation of a FeatureRenderer started and will be continued the next days.

First tests for mobile support have been done.

A script for generating example skeletons has been implemented.

Work on the print package started and will be continued the next days.

The GeoExt package (to use in Sencha Cmd architectures) is now available on remote resource.


So a lot has been done but still many more to do. Stay tuned! 



Special thanks to the "GeoExt chef Till", who supported us with an excellent soup for lunch!


Thursday, 20 March 2014

Bugfix release GeoExt v2.0.1 is available

We are pleased to announce GeoExt 2.0.1, which is the first bugfix release of the GeoExt 2-series.

This release only fixes minor issues with 2.0.0. This is what is included:

  • Fix GeoExt.Version #201
  • Use theme-switcher in examples #202
  • Made GeoExt.LayerModel extendable #203
  • Refactor sliders #204 & #205
  • Testsuite enhancements #211 & #214
  • various minor bugfixes

All users of GeoExt 2 are encouraged to update to this version. Updating should be no problem and should not break your applications built on top of GeoExt 2.

Thanks to everyone who was involved in building this version.

Monday, 28 October 2013

extending GeoExt.data.LayerModel with extra fields

In Ext 4 the data package has changed quite a bit. What was called a Record in Ext 3, is now called a Model. Also, adding extra fields to an existing model requires a different approach.

In GeoExt 1 we were able to do things like:

  // create a layer record for this layer
  var Record = GeoExt.data.LayerRecord.create([
    {name: "name", type: "string"},
    {name: "source", type: "string"},
    {name: "group", type: "string"},
    {name: "fixed", type: "boolean"},
    {name: "selected", type: "boolean"},
    {name: "type", type: "string"},
    {name: "args"}

  ]);

  var data = {
    layer: layer,
    title: layer.name,
    name: config.name || layer.name,
    source: config.source,
    group: config.group,
    fixed: ("fixed" in config) ? config.fixed : false,
    selected: ("selected" in config) ? config.selected : false,
    type: config.type,
    args: config.args,
    properties: ("properties" in config) ? config.properties : undefined
  };
  record = new Record(data, layer.id);

However in GeoExt 2 this requires a different approach, and I ran into an issue in GeoExt 2 whilst doing this see this PR

Basically static properties and methods are not automatically inherited in Ext 4, we need to explicitly use inheritableStatics for them to get inherited. Also we need to make sure we don't use instance properties in the static method itself, but only static methods.

In GeoExt 2 all extra properties are read through the metadata object which is present on OpenLayers Layer instances. So we need to follow this approach for our custom fields as well, which leads to:

Ext.define('gxp.data.OLLayerModel',{
  extend: 'GeoExt.data.LayerModel',
  fields: [
     {name: "name", type: "string", mapping: 'metadata.name'},
     {name: "source", type: "string", mapping: 'metadata.source'},
     {name: "group", type: "string", mapping: 'metadata.group'},
     {name: "fixed", type: "boolean", mapping: 'metadata.fixed'},
     {name: "selected", type: "boolean", mapping: 'metadata.selected'},
     {name: "type", type: "string", mapping: 'metadata.type'}, 
     {name: "args", type: "array", mapping: 'metadata.args'},
     {name: "properties", type: "string", mapping: 'metadata.properties'}
  ]
});

Ext.apply(layer.metadata, {
  name: config.name || layer.name,
  source: config.source,
  group: config.group,
  fixed: ("fixed" in config) ? config.fixed : false,
  selected: ("selected" in config) ? config.selected : false,
  type: config.type,
  args: config.args,
  properties: ("properties" in config) ? config.properties : undefined
});
record = gxp.data.OLLayerModel.createFromLayer(layer);

Friday, 25 October 2013

Finally: GeoExt 2.0.0 released

Two weeks after the first release candidate, we are happy and proud to announce the release of GeoExt 2.0.0!

Download it at https://github.com/geoext/geoext2/releases/tag/v2.0.0

GeoExt 2.0.0 is the first official GeoExt version that is built atop of OpenLayers 2.13.1 and ExtJS 4.2.1.

Read more about this release over at github, download GeoExt 2.0.0, and use it in your OpenLayers 2.13.1 and Ext JS 4.2.1 powered webpage. Do so by telling the autoloading-mechanism of Ext about GeoExt:

Ext.Loader.setConfig({
  enabled: true,
  paths: {
    GeoExt: "path/to/geoext2/src",
    Ext: "path/to/extjs/src"
  }
});


We are looking forward to your feedback on this release.


Tuesday, 15 October 2013

Announcement: GeoExt 2.0.0-rc.1 released

The GeoExt community is proud to announce the first release candidate of GeoExt 2.0.0.

Download it at https://github.com/geoext/geoext2/releases/tag/2.0.0-rc.1

GeoExt 2.0.0-rc.1 is the first official GeoExt version that is built atop of OpenLayers 2.13.1 and ExtJS 4.2.1. It has been in the making for quite a while, but most of the code comes from a code sprint in Bonn, Germany, that happened last year.

The newest major version of GeoExt wants to provide mostly the same API you know and love from the 1.x-series. It comes with support for the autoloading-mechanism of ExtJS, support for the single-file build tool of Sencha and with an exhaustive documentation that is built using the same tools as ExtJS. There are two versions of the API-docs: one has only the GeoExt-classes, while the other also has the basic Ext-classes, from which properties and methods might be inherited.

This release wouldn't have been possible without the sponsors of the above mentioned sprint. Also we want to thank the companies behind the contributors of GeoExt for supporting GeoExt development in numerous ways.

We invite you to test the release candidate! To do so, download GeoExt 2.0.0-rc.1 from (see above) and use it in your OpenLayers 2.13.1 and Ext JS 4.2.1 powered webpage by telling the autoloading-mechanism of Ext about GeoExt:

    Ext.Loader.setConfig({
        enabled: true,
        paths: {
            GeoExt: "path/to/geoext2/src",
            Ext: "path/to/extjs/src"
        }
    });

Have a look at the examples and additional information listed at the GeoExt 2 website over at github: http://geoext.github.io/geoext2/

We are looking forward to your feedback on this release.

[Edited 2013-10-16: Removed typos]

Thursday, 18 October 2012

OpenLayers 3: Invest in the web mapping future !

OpenLayers Community has initiated a call for funding in order to develop a brand new release based on the latest technogies: OpenLayers 3. If this becomes a reality, than GeoExt will also benefit of these new possibilities and would allow to develop awesome applications.
Please get in touch at ol3-funding@googlegroups.com if you’re interesting in being involved.