feat(FEAT-DATSET-09): show connected-dataset summary in project listing - #1490
Conversation
* feat(haproxy): add custom 503 maintenance landing page Add a branded HAProxy error page for 503 responses with: - Inline SVG illustration (server rack scene with floating papers, smoke, and animated sparks/LEDs) - Contact information and provider details - Self-contained HTML+CSS (no external dependencies) Fix HAProxy errorfile format requirements: - Use HTTP/1.1 status line (required by HAProxy 2.7+) - Include Content-Length header matching exact body size - Use CRLF line endings throughout (RFC 7230) - Keep body under HAProxy's 16KB error file limit * Add file size constraint to docs --------- Co-authored-by: Sven Fillinger <sven.fillinger@qbic.uni-tuebingen.de>
Story #1475 (FEAT-DATSET-09) — researchers can now see from their project collection view whether each project has connected datasets, how many, their access status (Open / Restricted), and when the most recent dataset was connected. Clicking the footer navigates directly to the project's ConnectedDatasetsMain view. Changes: - sql: extend project_overview view with 4 aggregate columns sourced from associated_dataset (COUNT, SUM PUBLIC, SUM RESTRICTED, MAX connected_on). Migration script is idempotent and self-contained — no cross-view dependency on project_measurements. - project-management: +4 fields on ProjectOverview entity - UI: card-body and footer rendered as sibling RouterLinks inside a project-card-wrapper Div so each click target drives exactly one navigation. Footer uses theme classes only (no inline styles). - theme: .project-card-wrapper owns shadow/border-radius/margin; .project-overview-item provides card-body padding; .project-dataset- footer provides footer padding + hover affordance. Chevron turns primary-text-colour on hover. - requirements: DATA-R-04/05/06 allocated (new IDs; existing 01-03 for immunopeptidomics preserved). - demo ProjectListingDatasetsDemo.java kept as development-profile prototype sandbox, javadoc marked superseded. Refs: #1475, #1466 (FEAT-DATASET-CONNECTION)
KochTobi
left a comment
There was a problem hiding this comment.
Very nice result. I found a couple of things I would ask you to look into.
- The usage of CSS
!importanis unnecessary - The way the feature formats dates and times might benefit from existing code. Please think about if you can use the existing formatting and feel free to state your reasons why not.
- One weird JavaDoc. Please clean it up 😄 many thanks!
| String base = "Open datasets for %s: %d connected, %d open, %d restricted".formatted( | ||
| projectOverview.projectCode(), total, open, restricted); | ||
| if (lastConnected != null) { | ||
| String full = DateTimeFormatter.ofPattern("dd MMMM yyyy", Locale.ENGLISH) |
There was a problem hiding this comment.
Please have a look at life.qbic.application.commons.time.DateTimeFormat We have a class with applicable formatters.
…y-datasets-after-login
KochTobi
left a comment
There was a problem hiding this comment.
You forgot one location for the data formatting. Otherwise looks awesome
| text-overflow: ellipsis; | ||
| white-space: normal; | ||
| cursor: pointer; | ||
| text-decoration: none |
There was a problem hiding this comment.
Are you sure you need the text-decoration here? As far as I understood this was only regarding the footer which you already solved. By declaring it here, you disable the text-decoration for every project-overview-item (does the element with this class even have a different text-decoration?)
| String base = "Open datasets for %s: %d connected, %d open, %d restricted".formatted( | ||
| projectOverview.projectCode(), total, open, restricted); | ||
| if (lastConnected != null) { | ||
| String full = DateTimeFormatter.ofPattern("dd MMMM yyyy", Locale.ENGLISH) |
| @@ -0,0 +1,122 @@ | |||
| # HAProxy Custom Error Pages | |||
There was a problem hiding this comment.
why does this PR introduce the custom error pages? They were already included if I am not mistaken. Can you please double check?
Summary
Implements Story #1475 / FEAT-DATSET-09: researchers can now see from their project collection dashboard whether each project has connected datasets, the quantity, the access-status breakdown (Open / Restricted), and when the most recent dataset was connected. Clicking the footer region navigates directly to the project's connected-datasets view (
projects/{id}/datasets); clicking the card body still navigates to project info.This is the UI/UX piece of
FEAT-DATASET-CONNECTION. The connected-dataset aggregate itself (associated_datasettable,AssociatedDatasetService) is already provided by Story FEAT-DATSET-01 / PR #1483.What changed
project_overviewview extended with 4 aggregate columns (connectedDatasetCount,openDatasetCount,restrictedDatasetCount,lastConnectedOn) from aLEFT JOINonassociated_dataset. Migration is self-contained and idempotent (inlines measurement subqueries so it does not depend onproject_measurementsbeing previously refreshed).@Immutable(read-only) so no constructor change required.ProjectOverviewItemrestructured: card body is aRouterLink(toProjectInformationMain); footer is a separateRouterLink(toConnectedDatasetsMain) as a sibling inside a.project-card-wrapperDiv. No event-propagation hack — sibling<a>elements naturally don't fire each other's handlers. All layout uses theme classes; no inlinegetStyle().set(...)calls..project-card-wrapperowns the card's shadow/border-radius/margin..project-dataset-footerprovides top-border divider + hover/focus styles + chevron colour transition. Added.flex-shrink-0utility toall.css.DATA-R-04,DATA-R-05,DATA-R-06allocated for dataset connexion (existingDATA-R-01/02/03for immunopeptidomics preserved; IDs are stable and never reused).@Profile("development"), javadoc marked superseded; injected CSS stylesheet method removed (rules migrated into theme).Requirements note
This PR adds new requirement IDs (
DATA-R-04/DATA-R-05/DATA-R-06) and does not modify existing ones. PerAGENTS.md §11("requirement changes require human approval; dedicated PR"), the reviewer may prefer this change to be split into its own PR that touchesdocs/requirements.mdonly. If so, close this PR, open the requirements-only PR from this branch (sql/,Java,CSSrevert), and rebase the UI work on top once requirements merge. Flagged asREADY2CODEbut gated on reviewer sign-off for this point.Acceptance criteria from #1475
Tagpills)RouterLink→ConnectedDatasetsMain)Operator actions required before deployment
sql/migrations/extend-dataset-visibility-in-project-overview.sqlto thedata_managementdatasource. Script is idempotent (DROP VIEW IF EXISTS+CREATE VIEW).associated_datasettable is already deployed (earliercreate-associated-dataset.sqlmigration must have run).project_overviewfrom the pre-migration definition (seegit showfor the original view DDL).Test plan
:focus-visibleoutline visible on footeraria-labelScreenshots
(Add screenshots from
test-view/project-listing-datasetsunder-Pdevelopment.)Related
associated_dataset: FEAT-DATSET-01 / [Story] FEAT-DATSET-01: Connecting open, published datasets #1467 / PR FEAT-DATSET-01: Connect published datasets with projects #1483