From 2c7934c249f181ba32c013ac61ba516c7da6677c Mon Sep 17 00:00:00 2001 From: appel_c Date: Fri, 31 Jan 2025 14:06:28 +0100 Subject: [PATCH] fix: fix updateUserData and patch --- .../src/app/core/remote-data.service.ts | 34 ++++++---- .../app/scan-table/scan-table.component.html | 64 +++++++++++-------- .../app/scan-table/scan-table.component.scss | 24 ++++++- .../app/scan-table/scan-table.component.ts | 26 ++++++++ 4 files changed, 107 insertions(+), 41 deletions(-) diff --git a/frontend/bec_atlas/src/app/core/remote-data.service.ts b/frontend/bec_atlas/src/app/core/remote-data.service.ts index 21cebd8..0a34fe3 100644 --- a/frontend/bec_atlas/src/app/core/remote-data.service.ts +++ b/frontend/bec_atlas/src/app/core/remote-data.service.ts @@ -58,18 +58,26 @@ export class RemoteDataService { /** * Base method for making a PATCH request to the server * @param path path to the endpoint + * @param paramId unique identifier for the resource * @param payload payload to send * @param headers additional headers * @returns response from the server */ - protected patch(path: string, payload: any, headers: HttpHeaders) { - return this.httpClient.patch( - this.serverSettings.getServerAddress() + path, - payload, - { - headers, - } - ); + protected patch( + path: string, + paramInput: Record, + payload: any, + headers: HttpHeaders + ) { + let param = Object.keys(paramInput); + let id = paramInput[param[0]]; + let fullPath = + this.serverSettings.getServerAddress() + path + '?' + param[0] + '=' + id; + console.log('Full path', fullPath, 'payload', payload); + + return this.httpClient.patch(fullPath, payload, { + headers, + }); } } @@ -209,8 +217,8 @@ export class ScanCountService extends RemoteDataService { /** * Method for updating the user data for a scan - * @param scanId Unique identifier for the scan - * @param userData User data to update + * @param scanId Unique identifier for the scan, type string + * @param userData User data to update, type ScanUserData * @returns response from the server * @throws HttpErrorResponse if the request fails * @throws TimeoutError if the request takes too long @@ -218,9 +226,11 @@ export class ScanCountService extends RemoteDataService { updateUserData(scanId: string, userData: ScanUserData) { let headers = new HttpHeaders(); headers = headers.set('Content-Type', 'application/json; charset=utf-8'); - return this.post( + console.log('Updating user data', userData); + return this.patch( 'scans/user_data', - { scan_id: scanId, ...userData }, + { scan_id: scanId }, + userData, headers ); } diff --git a/frontend/bec_atlas/src/app/scan-table/scan-table.component.html b/frontend/bec_atlas/src/app/scan-table/scan-table.component.html index 09d3747..54cc340 100644 --- a/frontend/bec_atlas/src/app/scan-table/scan-table.component.html +++ b/frontend/bec_atlas/src/app/scan-table/scan-table.component.html @@ -1,5 +1,7 @@ +
+ Table with Scan Data @@ -12,39 +14,45 @@ - - + +
+ @for (column of displayedColumns(); track column) { + + + - - - + } + @else{ +

{{ element[column] }}

+ } + + } + + + +
{{ column | titlecase }} + @if (column === 'timestamp') { + {{ element[column] * 1000 | date :'HH:mm:ss'}} +
+ {{ element[column] * 1000 | date :'dd/MM/yyyy'}} + } + @else if (column === 'user_rating') { + + + } + @else if (column === 'user_comments') { + + + - - -
{{ column | titlecase }} - @if (column === 'timestamp') { - {{ element[column] * 1000 | date :'HH:mm:ss'}} -
- {{ element[column] * 1000 | date :'dd/MM/yyyy'}} - } - @else if (column === 'user_rating') { - - } - @else{ -

{{ element[column] }}

- } - - - -
+
(''); dialog = inject(MatDialog); pageEvent: PageEvent = new PageEvent(); + isEditingUserComments: boolean = false; sorting: number = -1; displayedColumns = signal([ 'scan_number', @@ -77,6 +82,7 @@ export class ScanTableComponent { 'dataset_number', 'timestamp', 'user_rating', + 'user_comments', ]); allColumns: string[] = [ 'scan_id', @@ -135,6 +141,7 @@ export class ScanTableComponent { ? 'user_data' : element ); + columns.push('scan_id'); // always include scan_id console.log('Columns', columns); return firstValueFrom( this.scanData.getScanData( @@ -227,4 +234,23 @@ export class ScanTableComponent { } handleColumnSelection(event: any) {} + + toggleAllEdit() {} + + async handleOnRatingChanged(event: any, element: ScanDataResponse) { + console.log('Event', event, 'Element', element); + let scanId = element.scan_id; + let userData = { + user_rating: event.rating, + user_comments: element.user_comments || '', + system_rating: element.system_rating || 0, + system_comments: element.system_comments || '', + name: element.name || '', + }; + console.log('Scan ID', scanId); + if (scanId) { + console.log('Updating user data', userData); + await firstValueFrom(this.scanData.updateUserData(scanId, userData)); + } + } }