giseldo/neodataset huggingface dataset:
BE: Fix unclear/incorrect snapshotting for presets-backend

The rationale behind the creation of snapshots for the presets-backend is unclear or even incorrect. Currently there are unused or undefined SnapshotIdentifier parameters to the cloudformation script. For dev branches and probably also for tst and acc it is not necessary to make snapshots on stack/DB removal.

Testcriteria: Correct and useful behaviour of snapshotting on DB delete

Story points: 2.0
FE: use new icon lib for presets lib

Now we have an icon lib, we can use it in the `presets` lib. Put the (missing) icons inside the icons lib, and use them inside presets. For the rest of the libs, create tickets after this ticket is done. Don't forget to add snapshots for the icons

Follow the guide of readme https://gitlab.com/opengeoweb/opengeoweb/-/tree/master#adding-a-new-library-to-this-workspace

Story points: 2.0
BE: Configure Presets BE with Cognito part 2

- The presets-backend endpoint `viewpresets` should work with authenticated and anonymous users. If you are not signed in, you will get the public presets. If you are correctly signed in, the system will return your presets and you are able to save/update your presets. If you try to access the presets-backend with invalid credentials, it should return a 401, unauthorized.

Story points: 3.0
TAF: validation Weather and Cloud (VV)

Weather and Clouds (VV)
Currently, VV (vertical visibility) is allowed until VV010 (including VV010). There is however an additional rule (Dutch National deviation from international rules), allowing for a different range when using FG as a weather code.

For FG the VV can be between VV001 and VV005 (including VV005). 
This not validated correctly in GeoWeb now.

### Wished behavior:
For FG VV000 until VV005 (ncluding VV005) are allowed.


This issue describes these rules, based on the document  TAF-bulletin FTNL31 in EBNF Jantine Bokhorst 01-09-2021 v.1.0 "Deze maxima zijn officiële Nederlandse afwijkingen van de WMO/ICAO regelgeving.", see http://confluence.knmi.nl/download/attachments/48039377/TAF%20in%20EBNF%20v1.0%2020210901_intern.pdf?api=v2

- Add a * to the notification, to indicate that this is a national exception (*). 
- Add a comment in the code to indicate that this is a national rule


~~NB: Should this be the case also for FZFG, MIFG, BCFG and PRFG. This is not described anywhere. Now FZFG, MIFG, BCFG and PRFG are treated differently for VIS in GeoWeb (FG <1000 m, the combinations with FG), for now it is logical to treat them the same for VV.~~

Story points: 3.0
TAF: Wind: VRB only with 3 kt or less or gusts with showers

In the validation for wind VRB is at the moment always allowed. This is not correct.

For the winddirection DDD the use of VRB is only allowed when:

* The windspeed is 03kt or less or
* There are gusts with showers, so there should be FF_MAX (gusts) mentioned in wind and in weather SH, TS or SQ should be mentioned.

If none of these situations is the case, VRB should be disapproved by the validation.

This issue describes these rules, based on the document TAF-bulletin FTNL31 in EBNF Jantine Bokhorst 01-09-2021 v.1.0 (NB)http://confluence.knmi.nl/download/attachments/48039377/TAF%20in%20EBNF%20v1.0%2020210901_intern.pdf?api=v2)

Story points: 3.0
Tech Thursday meeting (SIGMET/AIRMET)

GW will lead the meeting at Tech Thursday. Two slides are already there, re-use these.

20th of Januari 13:00 till 14:00

https://docs.google.com/presentation/d/12ciBYPEm0c4FWGny25mWT99A2WYHqrdN/edit?usp=sharing&ouid=108664741257531327255&rtpof=true&sd=true

**Goal:**

GW backend uses AWS native solutions which are difficult to share with our partners. Present the GW view to KNMI and lets have a discussion. We would like to discuss the current architecture and make a more open source minded solution.
- GW is planning to share the GW lambda backend code with our partners
- Is current AWS native solution the right direction?
- How can we share our backend code? How can we benefit from improvements made by our partners?

Story points: 3.0
FE:WMLayer optimize parselayer function for multimap performance

With the google chrome performance optimizer a profile was made of the application when the slowniness is experienced. This was done with a multimap view with 24 maps. It seemed that the GetCapabilities file was 48 times parsed for the same type of layer. (Same service and layername).

The issue seems to be in the parsing of the WMS GetCapabilities document. When line WMLayer, 1030 is commented out, the application remains fast.

It starts with ReactMapview, 399, function wmLayer.parseLayer  and WMJSMap, 1498, function layer.parseLayer. The callback will call the __parseGetCapForLayer function, which in turn will call the layerDoneCallback function. It will return a layer object with properties set based on the getcapabilities. It seems that many seconds are spend in the __parseGetCapForLayer of WMLayer. This parses the jsonified GetCapabilities file and puts certain layer properties.

**Solution**: Re-use the layer object properties for other layers, bypassing the parsing of the getcapabilities file.

- Add a story to core with many maps demonstrating that it works smoothly.

Story points: 5.0
FE: Cleanup snapshots: remove white space sigmet-airmet form snapshots

Some snapshots have a lot of whitespace, if removed it's easier to see the difference. 

![storyshots-spec-ts-storyshots-components-airmet-form-cancel-airmet-take-snapshot-1-diff](/uploads/22aa00a473028cc8f2206199e98c1188/storyshots-spec-ts-storyshots-components-airmet-form-cancel-airmet-take-snapshot-1-diff.png)

Make sure the sigmet-airmet form snapshots don't contain so much whitespace.

The white space shows because we hide the map for snapshots, so the component might need some additional styling changes to make it work.

Story points: 5.0
BE: smoketest sometimes failing on login

The smoketest sometimes fails when it tries to login, rerunning the smoketest job solved the issues. But these tests should be stable.

Example issues:

1. one of the logins gave an error:
- https://gitlab.com/KNMI/geoweb/geoweb-serverless-backend/-/jobs/1970657754
- https://gitlab.com/KNMI/geoweb/geoweb-serverless-backend/-/jobs/2000172408

2. 'Error: Timed out retrying after 30000ms: Different value of typed password':
https://gitlab.com/KNMI/geoweb/geoweb-serverless-backend/-/jobs/1967114011

Story points: 5.0
Check and unify hover styling for circular buttons in LayerSelect

Once the layout of the LayerSelect in complete, check that the circular buttons have consistent hover style, i.e. the shadow/overlay around/over the button when hovering. This is because the layout has multiple circular buttons, such as the search/clear button, close-buttons in windows and arrow buttons in Service List, where the hover shadow is not precisely defined, meaning that they could all end up different if not checked. The hover styles may also be different if there's a good reason for that.

Ask @AWih for more information

Acceptance criteria:
- Font size shuld be fixed which caused snapshot are changed
- Reviews are done

Story points: 1.0
FE: prepare MUI5 with correct theme type

These files need correct providers or theme Type

libs/core/src/lib/components/CustomSwitch/CustomSwitch.stories.tsx
libs/core/src/lib/components/LayerManager/LayerSelect/KeywordFilterResults/KeywordFilterResults.tsx
libs/core/src/lib/components/LayerManager/LayerSelect/KeywordFilterResults/KeywordFilterResultsListItem.tsx
libs/core/src/lib/components/LayerManager/LayerSelect/SearchField/SearchField.tsx

Story points: 2.0
FE: check snapshots and enable animations where possible

Follow up of https://gitlab.com/opengeoweb/opengeoweb/-/issues/1599

There is a waiting time now before a snapshot gets taken, which allows loading animations to finish such as fields getting focus or fields getting populated. We've disabled some of those previously for taking snapshots. 

Check all snapshots and enable any disabled animations where possible.

These components have the fixes that should be removed (searched on prop shoudDisableTransition and disableTransition, there could be more components)
- ServicePopup (core)
- Backdrop (theme)
- ToolTip (theme)

Story points: 3.0
FE: Follow-up from "TAF: add extra line in between lines"

This seems to happen if you have a changegroup with errors (for example the first changegroup) and below that one empty changegroup. Then press the plus button on the base forecast. Then the errors go away until you click around in the form



The following discussion from !1147 should be addressed:

- [ ] @btorrente started a [discussion](https://gitlab.com/opengeoweb/opengeoweb/-/merge_requests/1147#note_800998593):  (+2 comments)

    > I see some weird behaviour with the validation when adding new lines but I do not think it is related to this MR, so I have approved. 
    > 
    > The weird behaviour I found is that, when adding a new line, the validation errors disappear until the user clicks somewhere in the form.

Story points: 2.0
BE: Get mail for vulnerability notification

As suggested by CPT (https://knmi-nl.slack.com/archives/CCWQG7J9Y/p1641304705455300) we could get the notification of the backend vulnerabilities adding settings to the ecr.sh configuration in the build pipeline

/build-utils/ecr.sh -n $NAMESPACE -r $IMAGE_NAME -a $ACCOUNT_ID **-m $REPOSITORY_MAINTAINER**

where $REPOSITORY_MAINTAINER is the email adress that should receive the notifications (geoweb-scrumteam@knmi.nl).

Story points: 2.0
BE: Fix vulnerabilities in ECS container for geoweb-backend-avi-messageconverter

Following the list of vulnerabilities for geoweb-backend-avi-messageconverter got from CPT:
```
Repository	                           Image Tag	Vulnerability	Severity Package Name Version	More Info
knmi/geoweb-backend-avi-messageconverter	0.0.21	CVE-2021-33574	HIGH	glibc	2.31-13+deb11u2	more info

knmi/geoweb-backend-avi-messageconverter	0.0.21	CVE-2021-29921	HIGH	python3.9	3.9.2-1	more info

knmi/geoweb-backend-avi-messageconverter	0.0.21	CVE-2021-22924	MEDIUM	curl	7.74.0-1.3	more info

knmi/geoweb-backend-avi-messageconverter	0.0.21	CVE-2021-22946	MEDIUM	curl	7.74.0-1.3	more info

knmi/geoweb-backend-avi-messageconverter	0.0.21	CVE-2021-22947	MEDIUM	curl	7.74.0-1.3	more info

knmi/geoweb-backend-avi-messageconverter	0.0.21	CVE-2021-43618	MEDIUM	gmp	2:6.2.1+dfsg-1	more info

knmi/geoweb-backend-avi-messageconverter	0.0.21	CVE-2019-12904	MEDIUM	libgcrypt20	1.8.7-6	more info

knmi/geoweb-backend-avi-messageconverter	0.0.21	CVE-2021-41617	MEDIUM	openssh	1:8.4p1-5	more info

knmi/geoweb-backend-avi-messageconverter	0.0.21	CVE-2021-31879	MEDIUM	wget	1.21-1	more info

knmi/geoweb-backend-avi-messageconverter	0.0.21	CVE-2016-2781	LOW	coreutils	8.32-4	more info

knmi/geoweb-backend-avi-messageconverter	0.0.21	CVE-2021-22898	LOW	curl	7.74.0-1.3	more info

knmi/geoweb-backend-avi-messageconverter	0.0.21	CVE-2021-40528	LOW	libgcrypt20	1.8.7-6	more info

knmi/geoweb-backend-avi-messageconverter	0.0.21	CVE-2021-36084	LOW	libsepol	3.1-1	more info

knmi/geoweb-backend-avi-messageconverter	0.0.21	CVE-2021-36087	LOW	libsepol	3.1-1	more info

knmi/geoweb-backend-avi-messageconverter	0.0.21	CVE-2021-36086	LOW	libsepol	3.1-1	more info

knmi/geoweb-backend-avi-messageconverter	0.0.21	CVE-2021-36085	LOW	libsepol	3.1-1	more info
```

**Suggestion from CPT:**

In general we should try to keep the images free of "high" warnings. but we can accept a few medium/low warnings. 
As a general rule it works best to keep the image as small as possible by removing not used packages. (like if there are kernel headers also to remove them as that was if I recall also once the issue.) But in some cases there is no fix and then we have to hope for a future fix.

Story points: 5.0
FE: investigate performance multimaps

- If you have 20 maps, you get 20 wms calls.
- The page is not responsive while loading.
- If you then switch presets, those calls should be cancelled.
- So next to performance, the goal is getting more control about the loading state of multimaps. 

Timeboxed to 2 days.
Make a new ticket if more needed.

**Update:**
User story in https://gitlab.com/opengeoweb/geoweb-assets/-/issues/1718

Story points: 5.0
FE: Valid time different for multiple datalayers

When using the HARM preset in the reference version and after making some changes in the layermanager, the valid-times for the layers in the map view will be different. It looks like this is not directly the case, when making changes to the layers in the layer-manager. After a while, the valid times become different, as shown in the metadata of the individual layers in the legend.

A demonstration can be found in the related user story linked below.

Story points: 5.0
POC screenmanager: improve react-grid-layout

Improve the current screenmanager implementation of react-grid-layout.
Do directly in the currently used code and deploy to TST/ACC.

Improvements to be made:
- [x]  Allow resize from both bottom corners (currently you can only resize from the right corner) (https://react-grid-layout.github.io/react-grid-layout/examples/17-resizable-handles.html)
- [x] Try and see if you can make it resizable from the top corners as well (https://react-grid-layout.github.io/react-grid-layout/examples/17-resizable-handles.html)
- [x] Test out panels with min-width/min-height
- [x] Add a shadow indicating where the window goes to when dragging/resizing 
- [x] When adding a map - automatically scroll to the new panel

**NOTES**
- there is an open issue with the north and west resize handles not working intuitively, see https://github.com/react-grid-layout/react-grid-layout/issues/1519

Story points: 5.0
POC screenmanager: react-mosaic

Create a POC of the react-mosaic library and use this in a story to demonstrate to the PO's/DE's.

In order for them to be able to test this we need to bundle the screenmanager storybook and deploy it in an S3 bucket that is publicly accessible. 

POC:
- [x] Have map panels with timeslider, multimap panel with timeslider, a (fake) timeseries
- [x] Ensure you can add a map
- [x] Each panel should be splittable and removable and resizable
- [x] Use 100% of screenwidth and height and do not allow to go over and start scrolling
- [ ] Test out panels with min-width/min-height --> not really supported (yet, there is an [open feature request](https://github.com/nomcopter/react-mosaic/issues/134)), current option is to provide a minimumPaneSizePercentage in the preset, but that is a generic property that is used for all panels in the screen.

Story points: 5.0
FE: animation actions and selectors use moment object instead of date string

For actions/selectors we tend to pass date strings to be set in the store.

However, for all actions to do with animation start/end time we pass the entire moment object in the action and convert it to a string in the reducer. THen when extracting from the store using a selector the string is again converted to a moment object.

Would be better to keep it in line with the other actions/selectors and simply pass/retrieve the date string and convert it to a moment object only if necessary (as that is not needed in about half the places I believe).

Story points: 3.0
BE: define logstash filter for logging avi-messageservice

Once the ticket #1492 is complete is necessary to make a new logstash filter in the repository https://gitlab.com/KNMI/cloud-platform/monitoring/logstash-config/-/tree/master/pipelines/knmi-geoweb.

Currently the logging is showing up in the apache logs, which is the incorrect place. To filter out the logs we can take as example what is in:
https://gitlab.com/KNMI/cloud-platform/monitoring/logstash-config/-/blob/master/pipelines/default_pipeline/2001-filter-apachelog.conf (this already include the geoweb-backend)

Moreover in this logstash filter will be necessary to extrapolate the info needed from the logs (message), such as the timestamp, log_level, ect.

Story points: 5.0
FE: fix flaky test in core

see https://gitlab.com/opengeoweb/opengeoweb/-/jobs/1852361181

**timeSliderCenterTime** is sometimes off by 1 ms

```
FAIL src/lib/store/mapStore/map/reducer.spec.ts (45.778 s)
500  ● store/mapStore/map/reducer › registerMap › should register a map if no state is passed
501    expect(received).toEqual(expected) // deep equality
502    - Expected  - 1
503    + Received  + 1
504    @@ -19,11 +19,11 @@
505        "isTimeSliderHoverOn": false,
506        "isTimestepAuto": true,
507        "mapLayers": Array [],
508        "overLayers": Array [],
509        "srs": "EPSG:3857",
510    -   "timeSliderCenterTime": 1638776829,
511    +   "timeSliderCenterTime": 1638776828,
```

Story points: 1.0
Change default visibility and order of layers in HARM vs SFC Obs preset on reference version

Check https://gitlab.com/opengeoweb/geoweb-assets/-/issues/1587

Those services should be uodated in:

* GeoWeb reference app code in opengeoweb
* in https://gitlab.com/opengeoweb/fmi/fmi-aws-config (ask Kristian in which folder in this repo)

Story points: 3.0
FE: Preset with SatComp products, that animates by default and updates.

Stereographic projection

Layer: HRV Comp (15 min, 4x speed, duration = 3 hours from latest)
```
srs="EPSG:32661"
            bbox={{
              left: -2776118.977564746,
              bottom: -6499490.259201691,
              right: 9187990.785775745,
              top: 971675.53185069,
            }}
```

Story points: 3.0
Screenmanager Library (research/investigation)

Research to find suitable library for screenmanager (check also the previous layout manager comparison at Agora https://agora.fmi.fi/display/GEOWEB/Screen+Manager+UI+Libs+PoCs) that fulfill at least the requirements defined in https://gitlab.com/opengeoweb/geoweb-assets/-/issues/1624

No implementation in this ticket.

Time box: 3h

Creates new ticket depending on the research results.


=============================================

**Results:**

Someone made an overview of 10 layout libraries:
- https://morioh.com/p/6ba976ac10f6

Here is a summary for alternatives of golden layout:
- https://react.libhunt.com/golden-layout-alternatives

**Selected candidates for further research:**

1) **react-mosaic-component**: From this list react-mosaic comes very close to required behavior. The library is available on NPM (https://www.npmjs.com/package/react-mosaic-component and a demo can be found at https://nomcopter.github.io/react-mosaic/ (demo).
React-mosaic has similar functionality as iterm, which was demonstrated by Mikko. The functionality of react-mosaic comes close to what the domain experts requested. It provides full usage of the screen and it allows for resizing panels by shrinking one and automatically enlarging the other. It fully supports react and it does not require jQuery which is a plus. The only drawback is that it uses react-dnd under the hood. This candidate is added to the list on https://agora.fmi.fi/display/GEOWEB/Screen+Manager+UI+Libs+PoCs

Follow up ticket in https://gitlab.com/opengeoweb/opengeoweb/-/issues/1588 and https://gitlab.com/opengeoweb/opengeoweb/-/issues/1589

Story points: 3.0
FE: create snapshots for multi dimension select

The buttons we already have, but not the content. Add snapshots for ensemble member, and vertical level. 

![Screenshot_2021-12-02_at_15.08.36](/uploads/0b09eaf729856a1a9e0a409df56edce2/Screenshot_2021-12-02_at_15.08.36.png)

(don't mind the big slider, it's different from master but it's the same screen)

Story points: 3.0
FE: multi dimension select shows NaN when options are not numbers

Found when using layer `Cloud base Alt.` from Service `Harmonie EPS`

service url: https://adaguc-server-geoweb.geoweb.knmi.cloud/adagucserver?dataset=HARMONEPS


![image](/uploads/cacf0154979fe2369c546f2bda6548ca/image.png)

Story points: 3.0
Add extra input buckets to ADAGUC nested stack

ADAGUC nested stack needs to have an extra input bucket for receiving data from BES data production.

Should result in a new Nested Stack version

Add extra (optional) bucket to CloudFormation, that can be specified in CI/CD. In the same way as a bucket was added for Satcomp.
If possible and easy, add several optional buckets, to be prepared for the future.

Story points: 8.0
Max value of lat/lon in minutes must be 59

Fix the rounding of lat/lon to 2 decimals, so that coordinates never end up with values of 60 for the minute part.

Has to be fixed in fmi-avi-messageconverter-tac library.
Ends up in a new version or geoweb-knmi-avi-messageconverter
Has priority for deployment in acc.

Story points: 4.0
FE: Remove TsMapPreset type in core and rename to ViewPreset

After all typescript presets are done, only the TsMapPreset needs to be removed. This was giving some issues, so better in own ticket to come with a good solution. Remove TsMapPreset and replace by MapPreset and prepare for issues.  Then rename as ViewPreset. 

- enabled prop should be boolean in json files and tests
- fmi-aws-config should be updated as well

Story points: 8.0
BE: TAF to IWXXM conversion

In the FMI library there is code to generate the TAF IWXXM but we are not using it at the moment. 
We need to generate IWXXM.

Code for generation of IWXXM is finished, but tests have to implemented with available geoweb TAF json objects.

Fixed by: https://gitlab.com/opengeoweb/avi-msgconverter/geoweb-knmi-avi-messageservices/-/merge_requests/46

Story points: 4.0
FE: Time step showing 15m while animation runs for 5 min in multimap presets

- choose for example the first Satcomp preset: Satcomp general 3h
- the animation runs with a 5 min timestep
- but the left map timeslider shows a time step of 15mins instead of 5

![image](/uploads/ad99ddbac9b26f3e0912c49ec5fc96f0/image.png)

Story points: 5.0
FE: BUG: Animation does not immediately start when using a preset

# Description:

Currently the SatComp preset does not immediately start the animation loop. The animation starts after 1 minute. It seems it has to wait for an service update. These updates are done every minute.

# Solution:
Make sure the Preset system where an animation is defined immediately starts the animation

# To Test:

Check with SatComp preset, it should directly start animating

Story points: 3.0
FE: syncing of maps from presets doesn't work

When having a preset with two maps each with their own timeslider (such as Radar and Satellite) syncing these maps via the preset settings doesn't work.

You can assign `syncGroupsIds: ['Area_satcompDust6h', 'Time_satcompDust6h'],` to both maps but this gets ignored and not set in the store.

I think the problem is caused by the following:
- the sync groups does a `SYNCGROUPS_ADD_TARGET` to add the maps to the defined syncGroupsIds as mentioned above. 
- then in the reducer it checks if the groupids are already set, they are not so nothing happens

Somehow the groupids mentioned in the preset need to be set as a group `SYNCGROUPS_ADD_GROUP` so the target maps can get set.

Proposed solution: `SYNCGROUPS_ADD_TARGET` with a non-existing group should add a group (can be done in the reducer, where there is a check for a non-existing group).

Story points: 3.0
FE: Create solution for reusable buttons part 1

Find a good reusable solution for the reusable buttons as designed by Didier.

Try to maximise use of the theme and reusibility
- Place in theme or shared

Seach on "ToggleButtons"

Outcome:
- 2 buttons, "Button" and "ToggleButton" that can be used throughout the code without defining styling per button use.
- Some good examples on how to use it (and snapshots)

See: https://app.zeplin.io/project/5ecf84a3c6ae1047a368f393/screen/5ecf85c60f301e47ca4eee55 & https://app.zeplin.io/project/5ecf84a3c6ae1047a368f393/screen/6093e68ceb304607400f6d5e

Story points: 5.0