Skip to content

GeoNetwork client app building blocks codesprint 1st and 2nd June 2020

François Prunayre edited this page Jun 1, 2020 · 18 revisions

Where?

Address:

  • Monday/Tuesday: Olivier, Florent, Francois at the farm, 321, Route de la Mollière, Saint-Pierre-de-Genebroz, Chambéry, Savoie, Auvergne-Rhône-Alpes, France

Who?

  • Florent
  • Olivier
  • Francois
  • Arnaud
  • ?

Sponsors

  • titellus
  • Spacebel

Agenda

  • Monday morning / Brainstorming based on concerns & recommendations from everyone. First draft guideline document (Florent, Olivier, Francois)
  • Tuesday / 9h30 CET / Online meeting to present the options (All who are available - Michel, Paul, Olivier, Florent, Francois, ?)
  • Tuesday / Write a first guideline & project basis setup

Sprint goals

Define possible base rules for a new client application for GeoNetwork. Choose libraries and start setting up the project to be able to make prototype and show new possibilities required in some projects.

Why a new app?

  • AngularJS EOL is 2021
  • Improve performances - we know why and how the client app can be faster eg. watchers, incremental DOM
  • Make GeoNetwork easier to embed in a third party app eg. with shadow DOM

Issues in current app?

  • Technical debt
    • Quite some years on overlaying features over features - all can be simplified
  • Code style
    • Nobody is using JSLint … probably because not mandatory or lazy devs ;)
    • WRO4J works but is effectively a completely custom, hand-made bundler which is hard to maintain (written in Java for frontend devs…), based on old assumptions, and has such a large role in the build that it is almost impossible to get rid of
    • No type checking
    • No centralized state management
    • No strict encapsulation of components (either scopes or styles), scopes are shared between many components eg. the search directive => this also means components are not really reusable outside of the standard UI
  • CSS
    • the large size of all the CSS continued
    • overruling of styles
    • HTML I want to change is outside of the view directory and therefore unreachable
    • sometimes the guidelines of the UI framework (Bootstrap) are interpreted loosely
    • ‘difficult' HTML for the Editor
  • UI
    • Disable client app module when services are down or unavailable? Eg if one day we have an harvesting machine, we have to have a client app for this app and be able to load it when needed, check service availability and enable it if running.
    • Define UI design templates, so pages look as unified as possible across the application.
    • Accessibility can be better
    • UI configuration - how much config options? Good defaults? Merge a custom one with the defaults
    • 2 notification systems
    • Sometimes you can init app with the location URL (eg. search - most of the time, not in batch edit), sometimes not (point to a category page in the admin or an harvester).
  • Limitations
    • Using Jquery and Bootstrap means putting the app in a shadow dom is not feasible
    • Improve the current asynchronous code to retrieve the information from the catalog that is needed in the UI. Cancel pending search when clicking multiple times on search button.
  • Design
    • Bootstrap app / Sometimes debug mode and prod does not behave the same. Load UI config & user info first, then bootstrap app components ...
  • Testing
    • No component testing

New client app challenges?

  • Performances
  • Embedable

Outputs

Clone this wiki locally