| 1 | = GIS module for Sahana Eden 2.0 = |
| 2 | |
| 3 | The core !JavaScript Mapping Library that we use is still [https://openlayers.org/two/ OpenLayers 2.x][[BR]] |
| 4 | This is very old and we would benefit from upgrading to the [https://openlayers.org/ current 6.x release] |
| 5 | - no need to maintain the old one for browser changes (Just 1 instance of that so far: ) |
| 6 | - we can take advantage of new features & performance upgrades (like [https://openlayers.org/en/latest/examples/tilejson.html TileJSON]) |
| 7 | At the core this isn't too hard and [https://github.com/sahana/eden/blob/master/modules/s3/s3gis.py#L7396 much progress has already been made] (& UCCE already uses OL5 within the DC Editor) |
| 8 | The big issue is the User Interface, especially for the main map. |
| 9 | This is currently built on [https://geoext.org/v1/ GeoExt 1.1] & !ExtJS 3.4. |
| 10 | The obvious solution would be to upgrade to the [https://geoext.github.io/geoext/ current GeoExt], and hence [https://docs.sencha.com/extjs/6.2.0/index.html ExtJS 6.2], however that version of ExtJS is no longer available and has [https://www.sencha.com/legal/gpl/ strict GPL licensing] around it, which doesn't really make it suitable for us.[[BR]] |
| 11 | !GeoExt are also not moving very fast and a dependency on that seems unwise if we're making a big change anyway.[[BR]] |
| 12 | Although we could bring in the !GeoExt code that we use and maintain it ourselves (it is BSD-licensed), it depends on !ExtJS, which is not, so this isn't really an option.[[BR]] |
| 13 | So what UI toolkit should we use instead?[[BR]] |
| 14 | An obvious option would be [https://jqueryui.com/ jQueryUI], since we already use that extensively for custom widgets in Eden, and we already use the widget factory for our [https://github.com/sahana/eden/blob/master/static/scripts/S3/s3.ui.gis.js OL6-version of the Map][[BR]] |
| 15 | Although it hasn't received many upgrades recently, it is still maintained with a [https://blog.jqueryui.com/2021/09/jquery-ui-1-13-0-rc-2-released/ new release coming soon]. |
| 16 | It has limited Widgets available: Buttons, Dialog, Menus, Tabs all there, but no Toolbar (we can probably use Controlgroup for this) Panels or Tree (using [https://www.jstree.com/ JSTree] seems the right approach here, as we already use this elsewhere & it's well-maintained). |
| 17 | We can also see about bringing in components from [https://github.com/primefaces/primeui PrimeUI]...that isn't maintained, however the Apache 2 license means we can take anything we want from there. |
| 18 | |
| 19 | There are other options which we could consider: |
| 20 | * !VueJS |
| 21 | * Basic Tree example: https://v3.vuejs.org/examples/tree-view.html |
| 22 | * !PrimeVue has widgets: https://primefaces.org/primevue/ |
| 23 | * Angular |
| 24 | * !TypeScript-only :/ |
| 25 | * !BackBone/Mustache |
| 26 | * !BluePrint |
| 27 | * https://blog.palantir.com/scaling-product-design-with-blueprint-25492827bb4a |
| 28 | * looks good, but Palantir :/ & no Mobile :/ & TS :/ |
| 29 | * Ember |
| 30 | * Lit (lightweight web components) |
| 31 | * React |
| 32 | * https://react-md.dev/packages/tree/demos |
| 33 | * [https://webix.com Webix] |
| 34 | * GPL, but can be combined with MIT |
| 35 | * Has a Tree |