Skip to content

Commit 309650a

Browse files
RELEASE 23-05-2025 (#1857)
## Description Short description of the pull request ## Motivation Background on use case, changes needed ## Fixes: Please provide a list of the fixes implemented in this PR * Items added ## Changes: Please provide a list of the changes implemented by this PR * changes made ## Tests included - [ ] Included for each change/fix? - [ ] Passing? (Merge will not be approved unless this is checked) ## Documentation - [ ] swagger documentation updated \[required\] - [ ] official documentation updated \[nice-to-have\] ### official documentation info If you have updated the official documentation, please provide PR # and URL of the pages where the updates are included ## Backend version - [ ] Does it require a specific version of the backend - which version of the backend is required: ## Summary by Sourcery Migrate frontend to Angular v19 with server-side dynamic tables and new API V3 endpoints, unify table settings via a dedicated service, overhaul theming to Material M2 API, and update CI, Docker and tests accordingly New Features: - Adopt dynamic-mat-table for instruments and proposals dashboards with server-side pagination, sorting and URL query params - Introduce TableConfigService and default-table-settings util to handle merging of default and user table settings - Add Cypress commands to create and remove instruments programmatically Enhancements: - Upgrade to Angular v19, NgRx v19 and Material M2 theming API with mat.m2-define-palette/map.get changes - Migrate all SDK service calls and tests to V3 endpoints and update associated effects, actions and selectors - Refactor routing and initialization to use provideRouter, provideHttpClient and DI-based app initializers in AppModule Build: - Update Dockerfile to Node 22.15 and Nginx 1.28, adjust build output path for dist/browser CI: - Bump CI and GitHub workflow Node version to 22.x and remove deprecated release commit steps Tests: - Revise numerous effect and selector specs to match V3 API and new state selectors Chores: - Add standalone:false flag to components and clean up obsolete actions and reducers
2 parents c54f823 + dc1181c commit 309650a

File tree

239 files changed

+8578
-7756
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

239 files changed

+8578
-7756
lines changed

.eslintrc.json

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,16 @@
7575
},
7676
{
7777
"files": ["*.ts"],
78-
"extends": ["plugin:ngrx/recommended"]
78+
"plugins": ["@ngrx"],
79+
"extends": ["plugin:@ngrx/all"],
80+
"rules": {
81+
"@ngrx/no-multiple-actions-in-effects": "warn",
82+
"@ngrx/avoid-dispatching-multiple-actions-sequentially": "warn",
83+
"@angular-eslint/prefer-standalone": "warn",
84+
"@ngrx/on-function-explicit-return-type": "warn",
85+
"@ngrx/no-store-subscription": "warn",
86+
"@angular-eslint/no-output-native": "warn"
87+
}
7988
}
8089
]
8190
}

.github/workflows/dependabot-auto-merge.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
## Extract information about the dependencies being updated by a Dependabot-generated PR
1616
- name: Dependabot metadata
1717
id: dependabot-metadata
18-
uses: dependabot/fetch-metadata@v2.3.0
18+
uses: dependabot/fetch-metadata@v2.4.0
1919
with:
2020
github-token: "${{ secrets.GITHUB_TOKEN }}"
2121

.github/workflows/deploy.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ on:
55
branches:
66
- master
77
env:
8-
NODE_VERSION: 18.x
8+
NODE_VERSION: 22.x
99

1010
jobs:
1111
deploy:

.github/workflows/release-push.yml

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ on:
66
- release
77

88
env:
9-
NODE_VERSION: 20.x
9+
NODE_VERSION: 22.x
1010
RELEASE_BRANCH: release
1111

1212
jobs:
@@ -40,17 +40,6 @@ jobs:
4040
WITHOUT_V=${TAG#v}
4141
echo "release_version=$WITHOUT_V" >> $GITHUB_OUTPUT
4242
43-
- name: Update release version
44-
run: |
45-
npm version --no-git-tag-version ${{ steps.release_version.output.release_version }}
46-
47-
- name: Commit package with new version
48-
run: |
49-
git config --global user.name 'SciCat FE Release Workflow'
50-
git config --global user.email '[email protected]'
51-
git commit --amend -am "Set release"
52-
git push
53-
5443
- name: Create a GitHub release
5544
uses: ncipollo/release-action@v1
5645
with:

.github/workflows/test.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ on:
55
branches:
66
- master
77
env:
8-
NODE_VERSION: 18.x
8+
NODE_VERSION: 22.x
99

1010
jobs:
1111
install-and-cache:
@@ -107,7 +107,7 @@ jobs:
107107
node-version: ${{ env.NODE_VERSION }}
108108

109109
# These settings optimize memory and file handling for Elasticsearch,
110-
# preventing common issues related to system limits running on github workflow.
110+
# preventing common issues related to system limits running on github workflow
111111
- name: Configure sysctl limits
112112
run: |
113113
sudo swapoff -a
@@ -127,13 +127,13 @@ jobs:
127127
with:
128128
config-file: cypress.config.ts
129129
install-command: npm install --omit peer
130-
browser: chrome
131130

132131
- name: docker logs
133132
if: ${{ failure() }}
134133
run: |
135134
docker compose logs es01
136135
docker compose logs backend
136+
docker compose logs frontend
137137
138138
- name: Stop docker-compose
139139
if: ${{ !cancelled() }}

CI/to_be_deleted/ESS/styles.scss

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,15 @@
3030
@use "./app/shared/modules/table/table-theme" as table;
3131
@use "./app/users/user-settings/user-settings-theme" as user-settings;
3232

33-
$custom-typography: mat.define-typography-config(
33+
$custom-typography: mat.m2-define-typography-config(
3434
$font-family: '"Titillium Web", Calibri, sans-serif;',
3535
);
3636
// Include the common styles for Angular Material. We include this here so that you only
3737
// have to load a single css file for Angular Material in your app.
3838
// Be sure that you only ever include this mixin once!
3939
@include mat.typography-hierarchy($custom-typography);
40-
@include mat.core();
40+
@include mat.elevation-classes();
41+
@include mat.app-background();
4142

4243
// Define the palettes for your theme using the Material Design palettes available in palette.scss
4344
// (imported above). For each palette, you can optionally specify a default, lighter, and darker
@@ -204,17 +205,17 @@ $red: (
204205
),
205206
);
206207

207-
$primary: mat.define-palette($cyan, 1000, 400, 800);
208-
$accent: mat.define-palette($grass, 1000, 400, 800);
209-
$warn: mat.define-palette($red, 100, 50, 200);
210-
$warn-2: mat.define-palette($yellow, 100, 50, 200);
211-
$header-1: mat.define-palette($navy, 1000, 400, 800);
212-
$header-2: mat.define-palette($forest, 1000, 400, 800);
213-
$header-3: mat.define-palette($orange, 1000, 400, 800);
214-
$header-4: mat.define-palette($purple, 1000, 400, 800);
215-
$hover: mat.define-palette($grey, 500, 100, 300);
208+
$primary: mat.m2-define-palette($cyan, 1000, 400, 800);
209+
$accent: mat.m2-define-palette($grass, 1000, 400, 800);
210+
$warn: mat.m2-define-palette($red, 100, 50, 200);
211+
$warn-2: mat.m2-define-palette($yellow, 100, 50, 200);
212+
$header-1: mat.m2-define-palette($navy, 1000, 400, 800);
213+
$header-2: mat.m2-define-palette($forest, 1000, 400, 800);
214+
$header-3: mat.m2-define-palette($orange, 1000, 400, 800);
215+
$header-4: mat.m2-define-palette($purple, 1000, 400, 800);
216+
$hover: mat.m2-define-palette($grey, 500, 100, 300);
216217

217-
$basetheme: mat.define-light-theme(
218+
$basetheme: mat.m2-define-light-theme(
218219
(
219220
color: (
220221
primary: $primary,
@@ -226,8 +227,8 @@ $basetheme: mat.define-light-theme(
226227
)
227228
);
228229

229-
$newcolor: map-merge(
230-
map-get($basetheme, "color"),
230+
$newcolor: map.merge(
231+
map.get($basetheme, "color"),
231232
(
232233
warn-2: $warn-2,
233234
header-1: $header-1,
@@ -238,7 +239,7 @@ $newcolor: map-merge(
238239
)
239240
);
240241

241-
$theme: map-merge(
242+
$theme: map.merge(
242243
$basetheme,
243244
(
244245
color: $newcolor,
@@ -300,15 +301,15 @@ a:hover {
300301
}
301302

302303
.snackbar-success {
303-
background-color: mat.get-color-from-palette($primary, "default");
304+
background-color: mat.m2-get-color-from-palette($primary, "default");
304305

305306
button {
306307
color: white;
307308
}
308309
}
309310

310311
.snackbar-error {
311-
background-color: mat.get-color-from-palette($warn, "default");
312+
background-color: mat.m2-get-color-from-palette($warn, "default");
312313

313314
button {
314315
color: white;

CI/to_be_deleted/MAXIV/maxiv-theme.scss

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,14 @@
3030
@use "./app/shared/modules/table/table-theme" as table;
3131
@use "./app/users/user-settings/user-settings-theme" as user-settings;
3232

33-
$custom-typography: mat.define-typography-config(
33+
$custom-typography: mat.m2-define-typography-config(
3434
$font-family: '"Titillium Web", Calibri, sans-serif;',
3535
);
3636
// Include the common styles for Angular Material. We include this here so that you only
3737
// have to load a single css file for Angular Material in your app.
3838
// Be sure that you only ever include this mixin once!
39-
@include mat.core($custom-typography);
39+
@include mat.elevation-classes();
40+
@include mat.app-background();
4041

4142
// Define the palettes for your theme using the Material Design palettes available in palette.scss
4243
// (imported above). For each palette, you can optionally specify a default, lighter, and darker
@@ -249,15 +250,15 @@ $max-iv-orange-palette: (
249250
),
250251
);
251252

252-
$primary: mat.define-palette($max-iv-green-palette, 700);
253-
$accent: mat.define-palette($max-iv-orange-palette, 500, 300, 700);
254-
$warn: mat.define-palette($red, 100, 50, 200);
255-
$warn-2: mat.define-palette($yellow, 100, 50, 200);
256-
$header-1: mat.define-palette($navy, 1000, 400, 800);
257-
$header-2: mat.define-palette($forest, 1000, 400, 800);
258-
$header-3: mat.define-palette($orange, 1000, 400, 800);
259-
$header-4: mat.define-palette($purple, 1000, 400, 800);
260-
$hover: mat.define-palette($grey, 500, 100, 300);
253+
$primary: mat.m2-define-palette($max-iv-green-palette, 700);
254+
$accent: mat.m2-define-palette($max-iv-orange-palette, 500, 300, 700);
255+
$warn: mat.m2-define-palette($red, 100, 50, 200);
256+
$warn-2: mat.m2-define-palette($yellow, 100, 50, 200);
257+
$header-1: mat.m2-define-palette($navy, 1000, 400, 800);
258+
$header-2: mat.m2-define-palette($forest, 1000, 400, 800);
259+
$header-3: mat.m2-define-palette($orange, 1000, 400, 800);
260+
$header-4: mat.m2-define-palette($purple, 1000, 400, 800);
261+
$hover: mat.m2-define-palette($grey, 500, 100, 300);
261262

262263
@function custom-light-theme(
263264
$primary,
@@ -270,8 +271,8 @@ $hover: mat.define-palette($grey, 500, 100, 300);
270271
$header-4,
271272
$hover
272273
) {
273-
@return map-merge(
274-
mat.define-light-theme($primary, $accent, $warn),
274+
@return map.merge(
275+
mat.m2-define-light-theme($primary, $accent, $warn),
275276
(
276277
warn-2: $warn-2,
277278
header-1: $header-1,
@@ -348,9 +349,9 @@ a:hover {
348349
}
349350

350351
.snackbar-success {
351-
background-color: mat.get-color-from-palette($primary, "default");
352+
background-color: mat.m2-get-color-from-palette($primary, "default");
352353
}
353354

354355
.snackbar-error {
355-
background-color: mat.get-color-from-palette($warn, "default");
356+
background-color: mat.m2-get-color-from-palette($warn, "default");
356357
}

CI/to_be_deleted/RFI/theme.scss

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,27 @@
11
// Custom Theming for Angular Material
22
// For more information: https://material.angular.io/guide/theming
3-
@use '@angular/material' as mat;
3+
@use "@angular/material" as mat;
44
@use "./app/app-theme" as app;
55
@use "./app/_layout/app-header/app-header-theme" as app-header;
66
@use "./app/datasets/batch-view/batch-view-theme" as batch-view;
77
@use "./app/datasets/dashboard/dashboard-theme" as dashboard;
88
@use "./app/datasets/datafiles/datafiles-theme" as datafiles;
99
@use "./app/datasets/dataset-detail/dataset-detail-theme" as dataset-detail;
10-
@use "./app/datasets/dataset-details-dashboard/dataset-details-dashboard-theme" as dataset-details-dashboard;
11-
@use "./app/datasets/dataset-lifecycle/dataset-lifecycle-theme" as dataset-lifecycle;
10+
@use "./app/datasets/dataset-details-dashboard/dataset-details-dashboard-theme"
11+
as dataset-details-dashboard;
12+
@use "./app/datasets/dataset-lifecycle/dataset-lifecycle-theme" as
13+
dataset-lifecycle;
1214
@use "./app/datasets/dataset-table/dataset-table-theme" as dataset-table;
13-
@use "./app/datasets/dataset-table-settings/dataset-table-settings-theme" as dataset-table-settings;
15+
@use "./app/datasets/dataset-table-settings/dataset-table-settings-theme" as
16+
dataset-table-settings;
1417
@use "./app/datasets/reduce/reduce-theme" as reduce;
15-
@use "./app/instruments/instrument-details/instrument-details-theme" as instrument-details;
18+
@use "./app/instruments/instrument-details/instrument-details-theme" as
19+
instrument-details;
1620
@use "./app/logbooks/logbooks-detail/logbooks-detail-theme" as logbooks-detail;
1721
@use "./app/logbooks/logbooks-table/logbooks-table-theme" as logbooks-table;
1822
@use "./app/proposals/proposal-detail/proposal-detail-theme" as proposal-detail;
19-
@use "./app/publisheddata/publisheddata-details/publisheddata-details-theme" as publisheddata-details;
23+
@use "./app/publisheddata/publisheddata-details/publisheddata-details-theme" as
24+
publisheddata-details;
2025
@use "./app/samples/sample-dashboard/sample-dashboard-theme" as sample-dashboard;
2126
@use "./app/samples/sample-detail/sample-detail-theme" as sample-detail;
2227
@use "./app/shared/modules/breadcrumb/breadcrumb-theme" as breadcrumb;
@@ -25,13 +30,14 @@
2530
@use "./app/shared/modules/table/table-theme" as table;
2631
@use "./app/users/user-settings/user-settings-theme" as user-settings;
2732

28-
$custom-typography: mat.define-typography-config(
33+
$custom-typography: mat.m2-define-typography-config(
2934
$font-family: '"Titillium Web", Calibri, sans-serif;',
3035
);
3136
// Include the common styles for Angular Material. We include this here so that you only
3237
// have to load a single css file for Angular Material in your app.
3338
// Be sure that you only ever include this mixin once!
34-
@include mat.core($custom-typography);
39+
@include mat.elevation-classes();
40+
@include mat.app-background();
3541

3642
// Define the palettes for your theme using the Material Design palettes available in palette.scss
3743
// (imported above). For each palette, you can optionally specify a default, lighter, and darker
@@ -198,15 +204,15 @@ $red: (
198204
),
199205
);
200206

201-
$primary: mat.define-palette($cyan, 1000, 400, 800);
202-
$accent: mat.define-palette($grass, 1000, 400, 800);
203-
$warn: mat.define-palette($red, 100, 50, 200);
204-
$warn-2: mat.define-palette($yellow, 100, 50, 200);
205-
$header-1: mat.define-palette($navy, 1000, 400, 800);
206-
$header-2: mat.define-palette($forest, 1000, 400, 800);
207-
$header-3: mat.define-palette($orange, 1000, 400, 800);
208-
$header-4: mat.define-palette($purple, 1000, 400, 800);
209-
$hover: mat.define-palette($grey, 500, 100, 300);
207+
$primary: mat.m2-define-palette($cyan, 1000, 400, 800);
208+
$accent: mat.m2-define-palette($grass, 1000, 400, 800);
209+
$warn: mat.m2-define-palette($red, 100, 50, 200);
210+
$warn-2: mat.m2-define-palette($yellow, 100, 50, 200);
211+
$header-1: mat.m2-define-palette($navy, 1000, 400, 800);
212+
$header-2: mat.m2-define-palette($forest, 1000, 400, 800);
213+
$header-3: mat.m2-define-palette($orange, 1000, 400, 800);
214+
$header-4: mat.m2-define-palette($purple, 1000, 400, 800);
215+
$hover: mat.m2-define-palette($grey, 500, 100, 300);
210216

211217
@function custom-light-theme(
212218
$primary,
@@ -219,8 +225,8 @@ $hover: mat.define-palette($grey, 500, 100, 300);
219225
$header-4,
220226
$hover
221227
) {
222-
@return map-merge(
223-
mat.define-light-theme($primary, $accent, $warn),
228+
@return map.merge(
229+
mat.m2-define-light-theme($primary, $accent, $warn),
224230
(
225231
warn-2: $warn-2,
226232
header-1: $header-1,
@@ -297,9 +303,9 @@ a:hover {
297303
}
298304

299305
.snackbar-success {
300-
background-color: mat.get-color-from-palette($primary, "default");
306+
background-color: mat.m2-get-color-from-palette($primary, "default");
301307
}
302308

303309
.snackbar-error {
304-
background-color: mat.get-color-from-palette($warn, "default");
310+
background-color: mat.m2-get-color-from-palette($warn, "default");
305311
}

Dockerfile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM node:18.18.0-alpine AS builder
1+
FROM node:22.15.0-alpine AS builder
22

33
RUN apk add --update python3 make g++ && rm -rf /var/cache/apk/*
44

@@ -8,8 +8,8 @@ RUN npm ci
88
COPY . /frontend/
99
RUN npx ng build
1010

11-
FROM nginx:1.25-alpine
11+
FROM nginx:1.28-alpine
1212
RUN rm -rf /usr/share/nginx/html/*
13-
COPY --from=builder /frontend/dist/ /usr/share/nginx/html/
13+
COPY --from=builder /frontend/dist/browser/ /usr/share/nginx/html/
1414
COPY scripts/nginx.conf /etc/nginx/nginx.conf
1515
EXPOSE 80

0 commit comments

Comments
 (0)