mirror of
https://github.com/openobserve/openobserve.git
synced 2026-11-06 00:09:22 +00:00
fix: add dynamic variables to report and allow v1, v2 dashboards in reports (#3574)
- [x] Add dynamic variables - [x] Allow v1, v2 dashboards in reports
This commit is contained in:
@@ -32,10 +32,12 @@ pub enum ReportMediaType {
|
||||
Pdf, // Supports Pdf only
|
||||
}
|
||||
|
||||
#[derive(Serialize, Debug, Deserialize, Clone, ToSchema)]
|
||||
#[derive(Serialize, Debug, Default, Deserialize, Clone, ToSchema)]
|
||||
pub struct ReportDashboardVariable {
|
||||
pub name: String,
|
||||
pub key: String,
|
||||
pub value: String,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub id: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Debug, Deserialize, Clone, ToSchema)]
|
||||
|
||||
@@ -128,7 +128,7 @@ pub async fn save(
|
||||
Err(anyhow::anyhow!("Tab not found"))
|
||||
}
|
||||
} else {
|
||||
Err(anyhow::anyhow!("Tab not found"))
|
||||
Ok(())
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -377,6 +377,10 @@ async fn generate_report(
|
||||
}
|
||||
// Only one tab is supported for now
|
||||
let tab_id = &dashboard.tabs[0];
|
||||
let mut dashb_vars = "".to_string();
|
||||
for variable in dashboard.variables.iter() {
|
||||
dashb_vars = format!("{}&var-{}={}", dashb_vars, variable.key, variable.value);
|
||||
}
|
||||
|
||||
log::info!("launching browser for dashboard {dashboard_id}");
|
||||
let (mut browser, mut handler) =
|
||||
@@ -430,7 +434,7 @@ async fn generate_report(
|
||||
let period = &timerange.period;
|
||||
let (time_duration, time_unit) = period.split_at(period.len() - 1);
|
||||
let dashb_url = format!(
|
||||
"{web_url}/dashboards/view?org_identifier={org_id}&dashboard={dashboard_id}&folder={folder_id}&tab={tab_id}&refresh=Off&period={period}&timezone={timezone}&var-Dynamic+filters=%255B%255D&print=true",
|
||||
"{web_url}/dashboards/view?org_identifier={org_id}&dashboard={dashboard_id}&folder={folder_id}&tab={tab_id}&refresh=Off&period={period}&timezone={timezone}&var-Dynamic+filters=%255B%255D&print=true{dashb_vars}",
|
||||
);
|
||||
|
||||
let time_duration: i64 = time_duration.parse()?;
|
||||
@@ -474,13 +478,13 @@ async fn generate_report(
|
||||
};
|
||||
|
||||
let email_dashb_url = format!(
|
||||
"{web_url}/dashboards/view?org_identifier={org_id}&dashboard={dashboard_id}&folder={folder_id}&tab={tab_id}&refresh=Off&from={start_time}&to={end_time}&timezone={timezone}&var-Dynamic+filters=%255B%255D&print=true",
|
||||
"{web_url}/dashboards/view?org_identifier={org_id}&dashboard={dashboard_id}&folder={folder_id}&tab={tab_id}&refresh=Off&from={start_time}&to={end_time}&timezone={timezone}&var-Dynamic+filters=%255B%255D&print=true{dashb_vars}",
|
||||
);
|
||||
(dashb_url, email_dashb_url)
|
||||
}
|
||||
ReportTimerangeType::Absolute => {
|
||||
let url = format!(
|
||||
"{web_url}/dashboards/view?org_identifier={org_id}&dashboard={dashboard_id}&folder={folder_id}&tab={tab_id}&refresh=Off&from={}&to={}&timezone={timezone}&var-Dynamic+filters=%255B%255D&print=true",
|
||||
"{web_url}/dashboards/view?org_identifier={org_id}&dashboard={dashboard_id}&folder={folder_id}&tab={tab_id}&refresh=Off&from={}&to={}&timezone={timezone}&var-Dynamic+filters=%255B%255D&print=true{dashb_vars}",
|
||||
&timerange.from, &timerange.to
|
||||
);
|
||||
(url.clone(), url)
|
||||
|
||||
Reference in New Issue
Block a user