giseldo/neodataset huggingface dataset:
FE: Moveable don't respect horizontal legend

 Legend window is now rather narrow and does not anymore change size according advertised  width of the legend. For example ECMWF horizontal legends are now rather useless.

When changing layers the width of the legend dialog should be updated according to the widest legend image, even when user has resized.

To check:
- add this service https://apps.ecmwf.int/wms/?token=public\
- choose the first and observe

Story points: 3.0
error handling for s3 writing actions

- error handling for writing to the s3 bucket
- make sure errors follow format as defined in logstash filter https://docs.google.com/document/d/11awf__MNJmvdAKQag2o_aBEDPmod_Z3W57RJVP8DlaA/edit#heading=h.8zca0wem9b7p
- BE should return error code with message to FE

Story points: 3.0
error handling for database actions

- error handling for writing and retrieving to/from the database
- make sure errors follow format as defined in logstash filter https://docs.google.com/document/d/11awf__MNJmvdAKQag2o_aBEDPmod_Z3W57RJVP8DlaA/edit#heading=h.8zca0wem9b7p
- BE should return error code with message to FE

Story points: 5.0
FE: AddLayersPopup allow http urls but warn

same as https://gitlab.com/opengeoweb/opengeoweb/-/issues/844 but now for the new Layer Manager (this doesn't use WMSLoader, it has its own component `opengeoweb/libs/core/src/lib/components/LayerManager/AddLayersPopup/AddLayersPopup.tsx`

see solution in https://gitlab.com/opengeoweb/opengeoweb/-/merge_requests/680

depends on https://gitlab.com/opengeoweb/opengeoweb/-/issues/897 where to change this, could be renamed/moved

Story points: 2.0
FE: drawtool bug with square

Weird bug, does not happen all time, might depend on size, perhaps something with the reverse ordering? Happens when drawing bottom to top

![Screen_Recording_2021-06-17_at_17.37.08](/uploads/49ae5b919bbdf2d83faad3f7ba5b99ae/Screen_Recording_2021-06-17_at_17.37.08.mov)

Story points: 5.0
FE: bug: Moveable can be dragged out of screen

Draggable object can be dragged out of screen as discussed https://gitlab.com/opengeoweb/opengeoweb/-/merge_requests/677#note_603803543. Maybe `bounds` will work? https://daybrush.com/moveable/release/latest/doc/Moveable.Snappable.html#bounds

- Moveable component gets the parent bounds
- Verify if the Legend dialog stays within the map

Story points: 3.0
FE: Moveable component should only drag on the header

See the video posted in https://gitlab.com/opengeoweb/opengeoweb/-/merge_requests/656#note_601340164

It is possible to drag on the dialog content instead of only on the header.
Only happens on the first render, or after closing and opening the dialog. Possibly a thing of the library

**Possible solution**:
1. Move Drag/Size component to a separate component, so it's getting unmounted when it's closed/open
2. Register the dragHandle as ref, and make a `useEffect` to trigger a rerender. Can be without the ref, but this makes it more clear why we do this. 

In the comment some code which works but needs cleanup, can be used as reference

Story points: 3.0
FE: the form shows empty fields when opening the same sigmet/airmet for the second time

- open the list
- open an existing sigmet/airmet
- notice which fields are filled in
- click BACK
- open the same sigmet/airmet again

**expected**: same fields are filled

**actual**: some fields are shown empty

We need to add tests for 2 scenarios for both Sigmet and Airmet:

1. the content of the form should be displayed after opening the same product for the second time (there is a test for MetInfoWrapper but it only checks the title, should also check the fields)
2. when making a product and saving it, and then creating a new product again, the form should be empty

![image](/uploads/4e2eab577617b5f3b9cf470cce30ab09/image.png)

Story points: 5.0
BE: Check where extra logging is needed on SIGMET lambda's

See what logging is missing that we would need for monitoring.

Check if the `audit` we were using for SpaceWeather has to be extended.(see format specification: https://docs.google.com/document/d/11awf__MNJmvdAKQag2o_aBEDPmod_Z3W57RJVP8DlaA/edit#heading=h.8zca0wem9b7p)

Document describing considerations about monitoring: https://docs.google.com/document/d/15MYXIkjq8Em7Y5zE_hiv8anwZbi5obFeCcEZCsQ-W-k/edit#

Story points: 3.0
FE: open the Moveable dialog with a custom button or menu item

This button is currently part of the Moveable component, you can only choose the main icon. The position is fixed. If you have more than one moveable dialog, the buttons will be on top of each other. For some components the button should be fully customisable (like the LayerManager) or there should not be a button, but a menu item (like the aviation modules).

So it should be possible to toggle the Moveable dialog with a custom button.

Possible solution would be to get the whole isOpen state out of the Moveable component, and let that component only return an onClose (Don't unmount the Moveable fully, because then it will loose the lastPosition state).  Dummy code:
```
const Demo = () => {
  const [isLegendOpen, toggleLegendOpen] = React.useState(true);

  return <>
{isLegendOPen &&     <Icon onClick={toggleLegendOpen(true)} /> }
<Moveable onClose={toggleLegenOpen(false) isOpen={isLegendOpen}} />
</>
}
```

![image](/uploads/3e2880ad8504d3da27deb9adfe0ccf0d/image.png)
![image](/uploads/639802f4c0e05ae9e4be30a3b0801606/image.png)

Story points: 3.0
FE: Not possible to save draft when clicking SAVE AND CLOSE

This issue is for both SIGMET and AIRMET

When creating a draft not complete (with some missing fields), pushing Back and pushing SAVE and CLOSE the draft should be saved even if there are missing fields (like when we push SAVE), instead it is not.
![test-2021-06-11_16.16.26](/uploads/d7ae3b850669515ff4afd549090d3938/test-2021-06-11_16.16.26.mp4)

Story points: 2.0
FE: Full FIR validation fails when publishing from draf

The validation issue happens when following steps are performed:
- save a sigmet/airmet draft in which the Start Position is the full FIR.
- open a draft, continue to fill the rest of the fields.
- try to Publish. It is not possible due to the validation "... maximum of 6 individual points".
![image](/uploads/498e48a14625497b6da523cd71beecd3/image.png)

NOTE: It works correctly if the New airmet/sigmet is directly published without saving a draft or if the draft is saved without "Start Position".

Discussion at this link: https://knmi-nl.slack.com/archives/GV34VT97X/p1623398063143400

Story points: 3.0
FE: number field has NaN when empty

When first rendering an emtpy number field it's value is NaN.

To see:
- Log out the values of the sigmet form 
- Choose volcanic sigmet
- In the console.log you can see that the values of the volcanic field are NaN even though the fields show as empty
- Then only check one of the radio boxes from the level

You see now that there appears NaN in the volcanic coordinate boxes. If you look at the logged out values for the form you will see that secretly the levels value field also is NaN.

Story points: 3.0
FE: fix warning from AdagucMapDraw componentwillreceiveProps

Don't forgot to add unit tests. To reproduce, open a Map with draw tools (like sigmet/airmet)

https://gitlab.com/opengeoweb/opengeoweb/uploads/0667e7bc59ae1058043c8353279fc6e4/Screenshot_2021-06-09_at_12.09.04.png

Story points: 3.0
FE: bug when the map loads en you directly starts zooming, it will take the upper left corner as reference

![Screen_Recording_2021-06-08_at_12.16.46](/uploads/7f02077f47d3a04265baa5c1a2deb836/Screen_Recording_2021-06-08_at_12.16.46.mov)

This is captured on a Mac, is this happening on more machines? ->  LC: yes on my Linux machine

Story points: 3.0
BE: VV leading zeroes to ensure 4 char

When an AIRMET for surface vissibility is made, the VIS in the TAC code needs to have 4 characters, even if the VIS is below 1000m. If the VIS number has 3 characters, a 0 comes first

In the KNMI AIRMET specifications is written (at page 6): SURFACE_VIS = "SFC VIS", "\\s", VVVV, "M", "\\s", "(", OBSCURATION, ")"; VVVV means 4 characters.

So, if for example the VIS is 900 m this has to be written as 0900 m. A 0 comes before the number.

Behavior now: EHAA AMSTERDAM FIR SFC VIS 500M (FG) OBS WI

Correct behavior: EHAA AMSTERDAM FIR SFC VIS 0500M (FG) OBS WI

Story points: 2.0
Investigation: Pipeline job smoketest and other subsequent pipeline jobs give a warning about missing artifacts after 1 hour

See this job https://gitlab.com/KNMI/geoweb/geoweb-serverless-backend/-/jobs/1316300973

Pipeline job smoketest gives a warning about missing artifacts after 15 mins.
Because the job is triggered manually, it should be possible to run it at any time.

The smoketest doesn't need any artifacts, so either make it independent or make sure the artefacts don't expire.

![image](/uploads/3110d67f4c50b5cd54633f320857421b/image.png)

This is also affecting the deployment from acceptance to production, as well as the deletion of dev branches (because the delete job also has that same dependency). 

The problem has been briefly discussed with Mark from CPT, he suggested two possible solutions:
- Increase the artifact expiry
- Place the artifact in an S3 bucket

It would also be interesting to see why we have a dependency in the first place. The two above solutions might work, but we will be storing artifacts we don't really need...

Story points: 3.0
FE: Clean up logs

Clean up any remaining logs (ignore the errors thrown by the draggable lib)

- geoweb-application-demo

![Screenshot_2021-06-09_at_12.07.35](/uploads/592bfc14803d90d8ddca5802d757912a/Screenshot_2021-06-09_at_12.07.35.png)

This one is coming from Drawer should be fixed in MUI v5: https://github.com/mui-org/material-ui#500-alpha36
![Screenshot_2021-06-09_at_12.14.04](/uploads/16c1c35ee95eddd75be3b929171116a1/Screenshot_2021-06-09_at_12.14.04.png)

![Screenshot_2021-06-09_at_12.19.43](/uploads/28452b8270587a610192c07cd748acdc/Screenshot_2021-06-09_at_12.19.43.png)

- These logs coming from sigmet/airmet

![Screenshot_2021-06-09_at_11.23.32](/uploads/8c5410e2c9ba5cc2157ce8638eae14ba/Screenshot_2021-06-09_at_11.23.32.png)

![Screenshot_2021-06-09_at_12.09.04](/uploads/0667e7bc59ae1058043c8353279fc6e4/Screenshot_2021-06-09_at_12.09.04.png)

- These from TAF, when closing a open taf
![Screenshot_2021-06-09_at_12.05.46](/uploads/fc60e07d1e2515c33d7eb14adc13eddf/Screenshot_2021-06-09_at_12.05.46.png)

Story points: 3.0
BE: Investigate cookie error in issues panel/console log

Find out cause and what we could potentially do about this. It's happening when scrolling or zooming the map

Caused by updates to the browser/BE?

Hint: Check if the WMS from FMI gives the same issue. If this is not the case, we know that the issue is in our own KNMI server.

![Screenshot_2021-06-11_at_16.59.32](/uploads/a06b813d5d0d451990b5bc574337caf1/Screenshot_2021-06-11_at_16.59.32.png)

Story points: 5.0
FE: Investigate FMI draggable lib or find better alternative

The current drag and drop lib throws a lot of errors. FMI has started using a different lib, investigate this and see if that works better.

Goal: find a lib that doesn't throw errors and ensure one lib is used throughout the application.

- FMI: react-rnd (ask if they are happy with this?) --> fully depends on react-draggable, same errors in console in strict mode.
- Current: react-draggable, react-resizable


To try out:
- react-moveable -> has draggable + resizable (and a lot more) https://www.npmjs.com/package/react-moveable
- react-dnd in combination with react-resizable


both support snapping to a grid (for the future) and both are actively maintained

Story points: 5.0
FE: Toggling between screenpresets does not erase previous maps

Toggling between screenpresets does not erase previous maps.

Use the sagas to clean the layers store.  action set_screenmanager_preset

Below an image after doing some stuff to individual maps in 1:1 and then switching to 1:all -

![image](/uploads/02ce68cce7a88e5dff71edb04237ce35/image.png)

Story points: 3.0
FE: sigmet airmet storybook opens behind list

Check http://localhost:4400/?path=/story/demo-sigmet--sigmet-dialog-demo

![Screenshot_2021-11-04_at_08.52.03](/uploads/a4f1ba6946220f298b06d2354f34bfc9/Screenshot_2021-11-04_at_08.52.03.png)

Story points: 2.0
FE: fix layermanager styling hover issues of active layer

This happens on hover of the Active layer on a non-active row. Sometimes it does work after sorting. 

Check the enable layer for reference of the styling. This is only in Chrome, not FireFox

- ![Screenshot_2021-11-03_at_12.09.06](/uploads/edfad17b63ae5c7941f6a8cfcf1c00fc/Screenshot_2021-11-03_at_12.09.06.png)
- ![Screenshot_2021-11-03_at_12.11.01](/uploads/1bde997b905bcf887ca8709a005c308f/Screenshot_2021-11-03_at_12.11.01.png)

Story points: 3.0
FE: HarmonieTempAndPrecipPreset should get layers as props

In knmi-geoweb app the `Harmonie Temperature and Precipitation` screenmanager preset still makes use of the geoservices HARM service, while it should use the knmi internal service.
This because it is necessary to pass the layers as props in HarmonieTempAndPrecipPreset.

Example can be HarmRefTimePreset.

Story points: 3.0
FE: Harmonize WMS service variable names

The public KNMI services from geoservices are now named (from libs/core/src/lib/utils/publicServices.tsx):
- KNMIgeoservicesBaselayers,
- KNMIgeoservicesRadar,
- KNMIgeoservicesObs,

**It would be good to rename the following:** (from libs/core/src/lib/utils/publicServices.tsx)
- harmonieWMSService ==> KNMIgeoservicesHarmonie

**It would be good to rename the KNMI internal ones in a similar way** (from libs/core/src/lib/utils/KNMIservices.tsx):

- RadarService ==> KNMIGeoWebRadarService
- Harmonie ==> KNMIGeoWebHarmonie
- HarmonieML ==>  KNMIGeoWebHarmonieML
- HarmonieEPS==> KNMIGeoWebHarmonieEPS
- Lightning ==> KNMIGeoWebLightning
- Observations ==> KNMIGeoWebObservations
- Satellite ==> KNMIGeoWebSatellite
- SevereWeather ==> KNMIGeoWebSevereWeather
- CellTrackingService ==> KNMIGeoWebCellTrackingService
- Overlays ==> KNMIGeoWebOverlays

Story points: 2.0
BE: sigmet/airmetTAC lambda - only generate warning in case the tac conversion fails

- in the sigmet/airmet tac lambda used in the FE we do not want to throw an error (and trigger an grafana alert) in case the conversion fails and change that into a warning. This error has so far always been false alarm without any blocking issue for the user

current error thrown
```
application - 2021-10-31T07:11:18Z - ERROR - Error while calling Airmet TAC service: 
{
    "timestamp": "2021-10-31T07:11:18Z",
    "status": 500,
    "error": "Internal Server Error",
    "message": "",
    "path": "/getairmettac"
}
. Line 39
	
```

- ensure that for publish, a TAC generation fail should result in an error that triggers a warning in grafana

Story points: 2.0
FE: Fix service https://geoservices.knmi.nl/

In the code at this moment it is used https://adaguc-server-knmi-geoservices.pub.knmi.cloud/

It should be substitute with https://geoservices.knmi.nl/

Moreover there are 2 mistakes in the url:
- double // should be only one /
- double && should be only one &

Story points: 2.0
IWXXM: missing Volcano coordinates cause IWXXM to fail

Conversion failed with: 
```
SYNTAX:XML Schema validation error at line 111, column 94:cvc-elt.3.1: Attribute 'http://www.w3.org/2001/XMLSchema-instance,nil' must not appear on element 'metce:position', because the {nillable} property of 'metce:position' is false.
SYNTAX:Failed Schematron assertation: VolcanicAshSIGMET.VolcanicAshSIGMET-6: If a geometry is defined for iwxxm:eruptingVolcano//metce:position by providing @srsName, @srsDimension must equal to 2 and @aixsLabels must be non-empty
```

Story points: 3.0
Investigate impact of MUI4 to MUI5 upgrade and report the impact

Steps to upgrade:
1. Prepare the code for lower impact: the new style engine will add a new `StyledEngineProvider` to each ThemeProvider in the code. To make sure the impact is low, we need to create one ThemeWrapper, which we import in every story in libs. 
2. Update MUI 4 to 5. This will break a lot of things, but MUI has some codemods which make it easier. Some components will break, some will be fixed automatically and some we have to do manual. To prepare for this, we added snapshots tests in theme library. We can create a main branch for this, and split the components into smaller tickets but have to see the impact.

Story points: 3.0
KNMI confluence documentation

Figure out what is necessary to clean-up, update and add in the documentation in Geoweb Confluence Space.
Timebox: 2h

Conclusion:
- [X] Team section: Add short description of the team and subfolder for PO and DE.
- [X] Documentation DE-Team section: Remove background Info. Move into this section the entire folder 'Product Information'  from Documentation developers section. Move into this section the 'Reset Cognito user password for Geoweb' from Documentation maintenance. 
- [X] Documentation developers section: think about DoD for tasks, USs and application and add those here. HDL needs to be updated and split per module (SpaceWeather, Aviation, Authorization). We can add a functional design for the entire application. Move into this section the 'Datastream' from Documentation maintenance and update it for all existing modules.
- [X] Documentation maintenance section: remove completely
- [X] Spaceweather: move into Meetings section.

TO CLARIFY:
Troubleshooting should move from IKM Geoweb doc space to GeoWeb SMP space.

Story points: 3.0
Redux action validator for time actions in geoweb core via Unit tests

Certain actions are triggered with wrong values. Some actions trigger the time format `2020-01-01T00:00Z` and some trigger `2020-01-01T00:00:00.000Z`, while it should be `2020-01-01T00:00:00Z`.

Add a regex check for the correct format in the reducer where the time action is handled.

Make sure it does not cause performance issues.

Story points: 5.0
FE: Weather groups in combination with visibility

Rules:
1. Combination of Weather elements with visibility group FU, DU, HZ DRDU, BLDU need to be combined with a visibility of 5000 m or less.
2. BR needs to be combined with a visibility between 1000 and 5000 m (including 1000 and 5000 m.)
3. FG needs to combined with a visibility below 1000.

Add validation messages related to the previous rules. Fix and add tests

Story points: 5.0
FE: update to NX 13 to fix npm vulnerabilities


1. upgrade nx packages (@nrwl) to v13 latest following the migration guide. Blocked by [issue](https://github.com/nrwl/nx/issues/7536) (and [this issue](https://github.com/nrwl/nx/issues/7648)) with gitlab pipelines. [Fix](https://github.com/nrwl/nx/pull/7617) has been merged, and included in version **13.1.4**
1. should include webpack5
1. check if all critical vulnerabilities are solved `npm audit` and if not, create follow-up ticket

Story points: 5.0
FE: MultiMap LayerManager: Implement SyncGroup to control multiple maps with one layermanager

Implement the multimap layermanager using SyncGroups. 

In this issue the goal is to make it work for only the action `WEBMAP_LAYER_CHANGE_NAME`. This is to test the feasibility of the implementation using SyncGroups. This involves creating a new syncgroup type LAYER next to the two existing BBOX and TIME types. Demonstrate that it works with **a new** MultiMap preset.

If this is the way to go, second step is to make it work for `WEBMAP_LAYER_CHANGE_STYLE`, `WEBMAP_LAYER_CHANGE_OPACITY`, `WEBMAP_LAYER_MOVE` and  `WEBMAP_LAYER_DELETE`

**For the new preset:**
* Copy the Precipitation, pressure and wind preset and make a similar one but with one master layer manager, so it’s easy to compare both types of preset. Names can be `Harmonie precipitation, pressure and wind 1:1` and `Harmonie precipitation, pressure and wind 1:all` respectively
* The master layer manager button can be in the first map for now

Story points: 5.0
Sync Groups Panel: Improve selector to reduce unnecessary re-rendering

The SyncGroup panel is re-rendered very often while it is unchanged. It listens to all updates from the redux sync state.

To check:
When animating while the SyncGroup panel is open, the panel is rendered for each animation step. 
This is probably caused by the selector. This selector creates a new object each time the input (sync redux state) changes. We need to improve the selector. For this there are a few options: 1) making multiple smaller selectors and chaining these, 2): Use a memoized selector which detects if the resulting object is changed.

Story points: 5.0
IWXXM lib should fix OBS time before start time

According to Annex 3 it is legal to set the observation time of a SIGMET or AIRMET phenomenon to a time before the start of SIGMET/AIRMET's validity time. 
IWXXM-3.0 validation, however does not allow this. 

_I ran into a small problem with SIGMET/AIRMET  and the optional time for the OBS/FCST when implementing IWXXM3.0:
In the FE the OBS or FCST time is optional, that is fine. The OBS time can be (slightly) before the starting time of the SIGMET/AIRMET, as ICAO has specified rather vaguely. The FCST time should be in the valid period. These things are validated in the FE.
It turns out that for IWXXM there is a rule which states that the OBS time should be inside the valid period (which boils down to OBS time == VALIDSTART). Generating IWXXM's with OBS time before VALIDSTART fails on the IWXXM validation.
This is a problem in IWXXM3.0, which will be fixed in the upcoming version, but we're still stuck on 3.0.
See also: https://github.com/wmo-im/iwxxm/issues/208
This means that with the current state of the FE we can produce SIGMET/AIRMET's that can not be converted to IWXXM3.0.
Possible solutions would be to:
build the same validation into the FE: OBS time should be equal to start of VALID TIME (result would end up in both TAC and IWXXM)
when generating the IWXXM always change the OBS time to the valid time start (result would only show up in IWXXM and forecasters would never see it, because in the TAC it remains unchanged)_

Story points: 3.0
FE: Layers/Services definition in core lib.

At this moment KNMIlayers and KNMIservices are defined in CORE lib.

It is better to distinguish between KNMILayers/KNMIServices and GenericLayers/GenericServices (all defined in CORE) usable from KNMI but also from other partners.

KNMILayers/KNMIServices -> only layers/services that are working for the KNMI-geoweb application
GenericLayers/GenericServices -> only layers/services that are public accessible (e.g. in reference-application)

Goal: define layers/services in CORE library to be used all from one single source (at this moment layers/services are defined in almost all libraries)

Story points: 5.0
FE: theme tooltip styling

Core was using a custom Tooltip component with default styles of the tooltip. Place it in theme, and remove the styling so everywhere we use tooltip it will look the same. We have to be a bit careful with this since a there are multiple versions in sizes.

Zeplin: https://app.zeplin.io/project/5ecf84a3c6ae1047a368f393/screen/6093e6920eaaea0ab7da3d16

tryout 
https://gitlab.com/opengeoweb/opengeoweb/-/merge_requests/938/diffs

Story points: 5.0
FE: Add timeslider to SIGMET/AIRMET map

Need to add the timeslider to the sigmet/airmet map
- Ensure you can still see the coordinates either make sure the 't' shortcut to hide the timeslider should work OR position the timeslider in such a way that you can always see the coordinates
- Make sure that if you press the 't' while in a form field the t actually gets put in the form field and doesn't result in the toggling of the timeslider
- Make sure that if you press t while NOT in a form field, ONLY the timeslider gets hidden and no other strange behaviour is visible.

Story points: 3.0