From 0f5981909128643e96a0f2ca690b5f8f1ad04d02 Mon Sep 17 00:00:00 2001 From: Keshav Dayal Date: Wed, 17 Dec 2025 08:37:55 +0530 Subject: [PATCH 1/4] UP-879: Datasets improvements fixed --- .../src/components/objects-list/objects.ts | 68 ++++++++++++------- 1 file changed, 43 insertions(+), 25 deletions(-) diff --git a/packages/ecc-client-ga4gh-drs/src/components/objects-list/objects.ts b/packages/ecc-client-ga4gh-drs/src/components/objects-list/objects.ts index ce113378..8937d67f 100644 --- a/packages/ecc-client-ga4gh-drs/src/components/objects-list/objects.ts +++ b/packages/ecc-client-ga4gh-drs/src/components/objects-list/objects.ts @@ -95,7 +95,9 @@ export class ECCClientGa4ghDrsObjects extends LitElement { this.pageSize, this.currentPage - 1 ); - this.objects = result.objects; + this.objects = ECCClientGa4ghDrsObjects.sortObjectsByLastUpdated( + result.objects + ); // Update total objects and pages from API response if (result.pagination?.total !== undefined) { @@ -166,6 +168,17 @@ export class ECCClientGa4ghDrsObjects extends LitElement { this.loadData(); } + private static sortObjectsByLastUpdated(objects: DrsObject[]): DrsObject[] { + return [...objects].sort((a, b) => { + // Use updated_time if available, otherwise fall back to created_time + const aTime = a.updated_time || a.created_time; + const bTime = b.updated_time || b.created_time; + + // Sort in reverse chronological order (most recent first) + return new Date(bTime).getTime() - new Date(aTime).getTime(); + }); + } + private renderPagination() { return html` @@ -299,7 +312,7 @@ export class ECCClientGa4ghDrsObjects extends LitElement { .map( () => html` - +
- + - + @@ -341,9 +354,17 @@ export class ECCClientGa4ghDrsObjects extends LitElement { return `${parseFloat((bytes / k ** i).toFixed(2))} ${sizes[i]}`; } - private static formatDate(dateString: string): string { + private static formatDateTime(dateString: string): string { try { - return new Date(dateString).toLocaleDateString(); + return new Date(dateString).toLocaleString("en-US", { + year: "numeric", + month: "2-digit", + day: "2-digit", + hour: "2-digit", + minute: "2-digit", + second: "2-digit", + hour12: false, + }); } catch { return dateString; } @@ -403,18 +424,18 @@ export class ECCClientGa4ghDrsObjects extends LitElement { - Object Info Size - Created - + Last Updated @@ -426,7 +447,7 @@ export class ECCClientGa4ghDrsObjects extends LitElement { return html` No objects found @@ -437,7 +458,7 @@ export class ECCClientGa4ghDrsObjects extends LitElement { return this.objects.map( (object) => html` - +
- + ${ECCClientGa4ghDrsObjects.formatDate( + >${ECCClientGa4ghDrsObjects.formatDateTime( object.created_time )} - - - this.handleObjectSelect(object.id)} - > - View Details - - + + ${ECCClientGa4ghDrsObjects.formatDateTime( + object.updated_time || object.created_time + )} ` From 29ba1bd03b0d5d5ff9109f882dba576598e29996 Mon Sep 17 00:00:00 2001 From: Keshav Dayal Date: Wed, 17 Dec 2025 09:50:56 +0530 Subject: [PATCH 2/4] Sourcery recommended changes implemented --- .../src/components/objects-list/objects.ts | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/packages/ecc-client-ga4gh-drs/src/components/objects-list/objects.ts b/packages/ecc-client-ga4gh-drs/src/components/objects-list/objects.ts index 8937d67f..38e18e57 100644 --- a/packages/ecc-client-ga4gh-drs/src/components/objects-list/objects.ts +++ b/packages/ecc-client-ga4gh-drs/src/components/objects-list/objects.ts @@ -23,6 +23,10 @@ import "@elixir-cloud/design/components/skeleton/index.js"; * * @fires ecc-objects-changed - Fired when objects data changes * @fires ecc-objects-selected - Fired when an object is selected + * + * @breaking-change The `actions-${object.id}` slot has been removed in favor of + * clickable dataset titles. Use the `ecc-objects-selected` event + * to handle object selection instead. */ export class ECCClientGa4ghDrsObjects extends LitElement { static styles = [ @@ -170,11 +174,13 @@ export class ECCClientGa4ghDrsObjects extends LitElement { private static sortObjectsByLastUpdated(objects: DrsObject[]): DrsObject[] { return [...objects].sort((a, b) => { - // Use updated_time if available, otherwise fall back to created_time const aTime = a.updated_time || a.created_time; const bTime = b.updated_time || b.created_time; - // Sort in reverse chronological order (most recent first) + if (!aTime && !bTime) return 0; + if (!aTime) return 1; + if (!bTime) return -1; + return new Date(bTime).getTime() - new Date(aTime).getTime(); }); } @@ -356,7 +362,9 @@ export class ECCClientGa4ghDrsObjects extends LitElement { private static formatDateTime(dateString: string): string { try { - return new Date(dateString).toLocaleString("en-US", { + if (!dateString) return "—"; + + return new Date(dateString).toLocaleString(undefined, { year: "numeric", month: "2-digit", day: "2-digit", @@ -366,7 +374,7 @@ export class ECCClientGa4ghDrsObjects extends LitElement { hour12: false, }); } catch { - return dateString; + return dateString || "—"; } } From 27a8f77cb4dac75cc7785dcfc83a7ac56a8086bf Mon Sep 17 00:00:00 2001 From: Keshav Dayal Date: Tue, 23 Dec 2025 18:41:29 +0530 Subject: [PATCH 3/4] sorting fixes --- .../src/components/objects-list/objects.ts | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/packages/ecc-client-ga4gh-drs/src/components/objects-list/objects.ts b/packages/ecc-client-ga4gh-drs/src/components/objects-list/objects.ts index 38e18e57..7a334b69 100644 --- a/packages/ecc-client-ga4gh-drs/src/components/objects-list/objects.ts +++ b/packages/ecc-client-ga4gh-drs/src/components/objects-list/objects.ts @@ -99,9 +99,7 @@ export class ECCClientGa4ghDrsObjects extends LitElement { this.pageSize, this.currentPage - 1 ); - this.objects = ECCClientGa4ghDrsObjects.sortObjectsByLastUpdated( - result.objects - ); + this.objects = result.objects; // Update total objects and pages from API response if (result.pagination?.total !== undefined) { @@ -172,19 +170,6 @@ export class ECCClientGa4ghDrsObjects extends LitElement { this.loadData(); } - private static sortObjectsByLastUpdated(objects: DrsObject[]): DrsObject[] { - return [...objects].sort((a, b) => { - const aTime = a.updated_time || a.created_time; - const bTime = b.updated_time || b.created_time; - - if (!aTime && !bTime) return 0; - if (!aTime) return 1; - if (!bTime) return -1; - - return new Date(bTime).getTime() - new Date(aTime).getTime(); - }); - } - private renderPagination() { return html` From 4cc183d6dc4cbbdd05eaed1b98bbc2bbddf51bc2 Mon Sep 17 00:00:00 2001 From: Keshav Dayal Date: Tue, 23 Dec 2025 18:52:26 +0530 Subject: [PATCH 4/4] feat: slot fixes --- .../src/components/objects-list/objects.ts | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/packages/ecc-client-ga4gh-drs/src/components/objects-list/objects.ts b/packages/ecc-client-ga4gh-drs/src/components/objects-list/objects.ts index 7a334b69..ac274da0 100644 --- a/packages/ecc-client-ga4gh-drs/src/components/objects-list/objects.ts +++ b/packages/ecc-client-ga4gh-drs/src/components/objects-list/objects.ts @@ -482,18 +482,22 @@ export class ECCClientGa4ghDrsObjects extends LitElement { > - ${ECCClientGa4ghDrsObjects.formatDateTime( - object.created_time - )} + + + ${ECCClientGa4ghDrsObjects.formatDateTime( + object.created_time + )} + + - ${ECCClientGa4ghDrsObjects.formatDateTime( - object.updated_time || object.created_time - )} + + + ${ECCClientGa4ghDrsObjects.formatDateTime( + object.updated_time || object.created_time + )} + + `