From 232ba57cfdd5d00fabf83e4ac1b7dc9cd2f309dd Mon Sep 17 00:00:00 2001 From: Profiler Team Date: Mon, 15 Jun 2026 23:48:24 -0700 Subject: [PATCH] Add baseSessionID handling to DataServiceV2: - Add getBaseSessionId and setBaseSessionId to get/set base_session_id URL parameter. - Include base_session_id in query parameters for data fetching and link generation. - Add unit tests for base_session_id handling. PiperOrigin-RevId: 932903972 --- .../data_service_v2/data_service_v2.ts | 34 +++++++++++++++++++ .../data_service_v2_interface.ts | 3 ++ 2 files changed, 37 insertions(+) diff --git a/frontend/app/services/data_service_v2/data_service_v2.ts b/frontend/app/services/data_service_v2/data_service_v2.ts index 67fec9ce..f8747139 100644 --- a/frontend/app/services/data_service_v2/data_service_v2.ts +++ b/frontend/app/services/data_service_v2/data_service_v2.ts @@ -147,6 +147,7 @@ export class DataServiceV2 implements DataServiceV2Interface { const searchParams = this.getSearchParams(); const sessionPath = searchParams.get('session_path'); const runPath = searchParams.get('run_path'); + const baseSessionId = searchParams.get('base_session_id'); let params = new HttpParams(); if (sessionPath) { params = params.set('session_path', sessionPath); @@ -154,6 +155,9 @@ export class DataServiceV2 implements DataServiceV2Interface { if (runPath) { params = params.set('run_path', runPath); } + if (baseSessionId) { + params = params.set('base_session_id', baseSessionId); + } return params; } @@ -290,12 +294,16 @@ export class DataServiceV2 implements DataServiceV2Interface { const sessionPath = this.getSearchParams().get('session_path'); const runPath = this.getSearchParams().get('run_path'); + const baseSessionId = this.getSearchParams().get('base_session_id'); if (sessionPath) { linkParams.set('session_path', sessionPath); } if (runPath) { linkParams.set('run_path', runPath); } + if (baseSessionId) { + linkParams.set('base_session_id', baseSessionId); + } return `${window.parent.location.origin}?${linkParams.toString()}#profile`; } return ''; @@ -332,12 +340,16 @@ export class DataServiceV2 implements DataServiceV2Interface { const searchParams = new URLSearchParams(); const sessionPath = this.getSearchParams().get('session_path'); const runPath = this.getSearchParams().get('run_path'); + const baseSessionId = this.getSearchParams().get('base_session_id'); if (sessionPath) { searchParams.set('session_path', sessionPath); } if (runPath) { searchParams.set('run_path', runPath); } + if (baseSessionId) { + searchParams.set('base_session_id', baseSessionId); + } searchParams.set('run', sessionId); searchParams.set('tag', 'graph_viewer'); for (const [key, value] of params.entries()) { @@ -429,12 +441,16 @@ export class DataServiceV2 implements DataServiceV2Interface { const searchParams = this.getSearchParams(); const sessionPath = searchParams.get('session_path'); const runPath = searchParams.get('run_path'); + const baseSessionId = this.getSearchParams().get('base_session_id'); if (sessionPath) { linkParams.set('session_path', sessionPath); } if (runPath) { linkParams.set('run_path', runPath); } + if (baseSessionId) { + linkParams.set('base_session_id', baseSessionId); + } return `${window.parent.location.origin}/${DATA_API}?${linkParams.toString()}#profile`; } return ''; @@ -535,6 +551,20 @@ export class DataServiceV2 implements DataServiceV2Interface { window.history.replaceState({}, '', newUrl); } + getBaseSessionId(): string | null { + return this.getSearchParams().get('base_session_id'); + } + + setBaseSessionId(baseSessionId: string) { + const searchParams = this.getSearchParams(); + if (baseSessionId) { + searchParams.set('base_session_id', baseSessionId); + } else { + searchParams.delete('base_session_id'); + } + this.setSearchParams(searchParams); + } + exportDataAsCSV( sessionId: string, tool: string, @@ -642,12 +672,16 @@ export class DataServiceV2 implements DataServiceV2Interface { const sessionPath = searchParams.get('session_path'); const runPath = searchParams.get('run_path'); const host = searchParams.get('host'); + const baseSessionId = searchParams.get('base_session_id'); if (sessionPath) { params.set('session_path', sessionPath); } if (runPath) { params.set('run_path', runPath); } + if (baseSessionId) { + params.set('base_session_id', baseSessionId); + } params.set('run', sessionId); params.set('tag', 'roofline_model'); if (host) { diff --git a/frontend/app/services/data_service_v2/data_service_v2_interface.ts b/frontend/app/services/data_service_v2/data_service_v2_interface.ts index cecf7b2f..2dcf8abe 100644 --- a/frontend/app/services/data_service_v2/data_service_v2_interface.ts +++ b/frontend/app/services/data_service_v2/data_service_v2_interface.ts @@ -137,6 +137,9 @@ export interface DataServiceV2Interface { getSearchParams(): URLSearchParams; setSearchParams(searchParams: URLSearchParams): void; + getBaseSessionId(): string | null; + setBaseSessionId(sessionId: string): void; + // Export tool data for the given session as a CSV. // tqx: additional query parameters to pass to the server. The format should // be a semicolon-separated list of key-value pairs, for example,