Skip to content

58 restructure network page test visualization tables tab - #65

Merged
bastiennerehor merged 62 commits into
mainfrom
58-restructure-network-page-test---visualization-tables-tab
Sep 2, 2026
Merged

bastiennerehor merged 62 commits into
mainfrom
58-restructure-network-page-test---visualization-tables-tab

Conversation

@bastiennerehor

Copy link
Copy Markdown
Contributor
  • Make Network Page more horizontal - less vertical -> add all tabular information (node/ edge rankings) and results to table tab so user can switch from network visualization to tabular representation and results
  • Adapt Analysis and Connect Node panels, only show available options, upon click, functionality is contained and explained in a popup
  • Switch to GNExT Table style (Shared Component/ Table Skeleton) add multi sort
  • Add node and edge color selectors to Network Toolbar
  • Adapt Style of Network Toolbar
  • Provide User feedback, for analysis runs -> pop-up message when finished, and error messages when failed
  • Unify Node and Edge details between pages -> shared components
  • Unify Cosmograph and Toolbar between pages -> shared component, also Out-of-memory Duck db error should appear not as fast

…-tab' of github.com:DyHealthNet/DHN-frontend into 58-restructure-network-page-test---visualization-tables-tab
…-tab' of github.com:DyHealthNet/DHN-frontend into 58-restructure-network-page-test---visualization-tables-tab
…-tab' of github.com:DyHealthNet/DHN-frontend into 58-restructure-network-page-test---visualization-tables-tab
…-tab' of github.com:DyHealthNet/DHN-frontend into 58-restructure-network-page-test---visualization-tables-tab
…-tab' of github.com:DyHealthNet/DHN-frontend into 58-restructure-network-page-test---visualization-tables-tab
Copilot AI lite review requested due to automatic review settings September 2, 2026 11:10
@bastiennerehor bastiennerehor linked an issue Sep 2, 2026 that may be closed by this pull request
@bastiennerehor bastiennerehor self-assigned this Sep 2, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The PR currently introduces at least one build-blocking dependency/import issue and includes an accidental development log file that should not be committed.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

This PR restructures the Network/Differential Network UI to support a more horizontal workflow by moving ranking/results into dedicated table panels, sharing common graph/details components across pages, and improving styling/controls (multi-sort tables, toolbar options, and legends).

Changes:

  • Introduces shared network UI components (CosmographGraph wrapper, gradient legends, unified node/edge identity/details blocks, and new tables/results panels).
  • Updates multiple tables to PrimeVue multi-sort and aligns styling with the shared table skeleton/preset.
  • Enhances graph toolbar and differential-network visualization (fit/reset view, color mode selectors, stable id-based selection).
File summaries
File Description
src/pages/differential-network.vue Switches to shared CosmographGraph + adds node/edge color modes, legends, and id-based selection.
src/main.js Adds PrimeVue theme preset customization and new theme tokens.
src/components/plots/VariableCatalogTable.vue Enables default sorting and multi-sort.
src/components/network/WholeNetworkSettings.vue Adds disableSelections passthrough to test selector line.
src/components/network/ReactomeResultsTable.vue Enables multi-sort.
src/components/network/NodeSetAnnotationResultsPanel.vue New results panel for node-set annotation (Gemini).
src/components/network/NodeSetActionsPanel.vue Removed legacy actions panel markup (replaced by new Analysis panel flow).
src/components/network/NodeRankingTable.vue Refactors to table skeleton, adds multi-sort, selection checkboxes, row highlighting, and group chips.
src/components/network/NodeNeighborsPanel.vue New “Neighbors of” panel with closable per-node subtabs.
src/components/network/NodeIdentityCard.vue New shared node identity block used by node details components.
src/components/network/NodeEdgeTable.vue Refactors neighbor-edge table to shared table skeleton and adds abs effect-size column.
src/components/network/NodeDetails.vue Uses NodeIdentityCard + shared xref resolution + group color injection.
src/components/network/NetworkTablesPanel.vue New top-level tables panel with tabbed ranking/results views and highlight dots.
src/components/network/NetworkRankingTabs.vue Forwards preranked mode to both ranking tables.
src/components/network/networkData.js Adds shared color/normalization utilities and xref resolution helpers.
src/components/network/GraphToolbar.vue Toolbar UX refresh (icon buttons + tooltips + fit/reset view event).
src/components/network/GradientLegend.vue New reusable gradient legend component.
src/components/network/GProfilerResultsTable.vue Enables multi-sort.
src/components/network/EnrichmentResultsPanel.vue Restructures enrichment results into closable subtabs (gProfiler/Reactome).
src/components/network/EdgeRankingTable.vue Refactors to table skeleton, enables multi-sort, adds abs effect size, supports preranked mode.
src/components/network/EdgeNodesTable.vue New shared 2-endpoint edge “nodes” details table.
src/components/network/EdgeDetails.vue Uses EdgeNodesTable to unify edge endpoint display.
src/components/network/CosmographGraph.vue New shared Cosmograph lifecycle + safe upload + capture utilities.
src/components/network/ConnectNodesPanel.vue New connect-nodes UI with dialogs and action selection.
src/components/network/CommunityAnnotationPanel.vue Extracted community annotation results into its own panel/tab.
src/components/network/ClosableTab.vue New shared closable tab component for result subtabs.
src/components/network/AnalysisPanel.vue New dialog-based analysis UI (community, enrichment, node-set annotation).
src/components/modina/NodeRankPanel.vue Enables multi-sort and adds group color chips + node metric value column.
src/components/modina/EdgeRankPanel.vue Enables multi-sort and updates header tooltip slot usage.
src/components/modina/DiffNodeDetails.vue Uses shared NodeIdentityCard + group color + shared xref resolution.
src/components/modina/DiffEdgeDetails.vue Uses shared EdgeNodesTable + group color for endpoint chips.
src/components/modina/ContextComparisonPicker.vue Removes refresh button from picker toolbar.
src/components/DownloadableDataTable.vue Upgrades table skeleton (multi-sort UX hint, download menu in paginator, rowClass, sticky header styling, pagination reset + scroll height lock).
src/components/contexts/ContextSetup.vue Escapes CSV output values properly when exporting variable lists.
src/components/AnalysisDialog.vue New shared dialog wrapper used by analysis/connect panels.
dev.log Adds a development log file to the repo.
.gitignore Adds a workspace file ignore entry.
Review details
  • Files reviewed: 35/38 changed files
  • Comments generated: 4
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread src/main.js Outdated
Comment thread src/components/AnalysisDialog.vue
Comment thread src/components/network/ClosableTab.vue
Comment on lines +36 to +43
// Percentile rank (0-1) of each entry in `scores` among the array itself --
// nulls pass through as null (excluded from ranking). Rank-based rather than
// min-max so a skewed distribution (e.g. most scores clustered near one end)
// still spreads across the full visual range instead of bunching at one end,
// and so a single Infinity/extreme outlier can't poison everyone else's value
// the way min-max division would. Shared by data-network.vue's edge-style
// dropdown and differential-network.vue's edge-weight coloring, so both pages'
// edges use the same visual scheme for a magnitude-based score.
bastiennerehor and others added 7 commits September 2, 2026 15:28
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@bastiennerehor
bastiennerehor requested a lite review from Copilot September 2, 2026 14:32
@bastiennerehor
bastiennerehor merged commit 6468c16 into main Sep 2, 2026
1 check passed

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

It introduces a committed dev log artifact and includes a few concrete security/accessibility issues (e.g., missing rel on target=_blank links and missing aria-labels on icon-only buttons).

Review details

Suppressed comments (6)

Previously missed (3) — in code that hasn't changed since the last review.

src/components/network/NodeIdentityCard.vue:39

  • Links opened with target="_blank" should include rel="noopener noreferrer" to prevent reverse-tabnabbing and to avoid giving the new page access to window.opener.
    src/components/DownloadableDataTable.vue:39
  • The download control is an icon-only button; add an aria-label so assistive technologies can announce what it does.
    src/components/network/GraphToolbar.vue:34
  • Icon-only toolbar buttons rely on tooltips for their label; add an aria-label so screen readers can announce the control even when tooltips aren't exposed.

This issue also appears in the following locations of the same file:

  • line 41
  • line 52
  • line 59

src/components/network/GraphToolbar.vue:47

  • Icon-only toolbar buttons should have an aria-label so the action is announced for assistive technology users.
        <v-btn
          icon
          variant="text"
          v-bind="props"
          class="mr-1"
          @click="$emit('update:physicsOn', !physicsOn)"
        >

src/components/network/GraphToolbar.vue:56

  • Add an aria-label to this icon-only button so the purpose is clear to screen readers.
    <v-tooltip text="Reset view" location="bottom">
      <template v-slot:activator="{ props }">
        <v-btn icon variant="text" v-bind="props" class="mr-1" @click="$emit('fit-view')">
          <v-icon>mdi-fit-to-page-outline</v-icon>
        </v-btn>

src/components/network/GraphToolbar.vue:63

  • Add an aria-label to this icon-only button so the purpose is clear to screen readers.
    <v-tooltip text="Download image" location="bottom">
      <template v-slot:activator="{ props }">
        <v-btn icon variant="text" v-bind="props" class="mr-1" @click="$emit('save-image')">
          <v-icon>mdi-camera</v-icon>
        </v-btn>
  • Files reviewed: 35/38 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Restructure Network Page Test - Visualization & Tables Tab

2 participants