mirror of
https://github.com/openobserve/openobserve.git
synced 2026-11-05 08:09:22 +00:00
b29cb44d6e25b990a470d972745cf91ccecfeabe
2089
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
f0527b9267 |
fix: UI tailwind changes (#9836)
issue #9539 |
||
|
|
8fb89109b3 |
fix: 9658 - update query on stream change (#9823)
### **User description** fixes: https://github.com/openobserve/openobserve/issues/9658 ___ ### **PR Type** Bug fix, Tests ___ ### **Description** - Auto-update SQL query FROM clause on stream change - regenerate select * query - Add comprehensive Playwright E2E tests ___ <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table> <tr> <td> <details> <summary><strong>ScheduledPipeline.vue</strong><dd><code>Add auto-update SQL FROM clause watcher</code> </dd></summary> <hr> web/src/components/pipeline/NodeForm/ScheduledPipeline.vue <ul><li>Added watcher on <code>selectedStreamName</code> for SQL tab<br> <li> Parsed and replaced <code>FROM</code> clause when stream changes<br> <li> Ensured conditions: non-empty query and matching old stream<br> <li> Graceful error handling on parse failures</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/9823/files#diff-63d8f838bb880356e7804b4a57fd9223d4f2c189de7aadc7cf33cba723b29aaf">+57/-1</a> </td> </tr> </table></td></tr><tr><td><strong>Tests</strong></td><td><table> <tr> <td> <details> <summary><strong>scheduled-pipeline-stream-auto-update.spec.js</strong><dd><code>Add scheduled pipeline stream auto-update tests</code> </dd></summary> <hr> tests/ui-testing/playwright-tests/Pipelines/scheduled-pipeline-stream-auto-update.spec.js <ul><li>Introduce E2E tests verifying SQL auto-update behavior<br> <li> Validate preservation of WHERE and complex clauses<br> <li> Test manual edit protection and initial load cases<br> <li> Skip PromQL tab scenario</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/9823/files#diff-8cc925b4f4019d670b4f4a82a9dd5e3f9c29155d6b261e6dfb7ab946f3ff7d8d">+480/-0</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> |
||
|
|
238bc56af4 |
fix: add axis label rotation and truncation options in latency insights dashboard (#9834)
### **PR Type**
Enhancement
___
### **Description**
- Add axis label rotation option
- Add axis label truncation width option
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>useLatencyInsightsDashboard.ts</strong><dd><code>Add
axis label rotation & truncation</code>
</dd></summary>
<hr>
web/src/composables/useLatencyInsightsDashboard.ts
<ul><li>Added <code>axis_label_rotate</code> property to chart
config<br> <li> Added <code>axis_label_truncate_width</code> property to
chart config</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9834/files#diff-960dec4a653d7c079157499a2473d0e87bd8b61463e1c3f633e7682ba763a4b1">+2/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
a3a334710b |
fix: logs highlighting issues (#9754)
This PR fixes the issue when user has [ , { , < , ' , ( as single char
without closing character for the same we were losing the last character
|
||
|
|
85a952f4eb |
feat: add dynamic axis label rotation and truncation support in dashboard charts (#9808)
### **User description** Design at: https://github.com/openobserve/designs/blob/main/dashboards/axis-label-rotation/design.md ### **PR Type** Enhancement ___ ### **Description** - Add dynamic axis label rotation support - Add label truncation with dynamic width handling - Calculate dynamic nameGap and bottom spacing - Provide UI fields for configuring rotation/truncation ___ ### Diagram Walkthrough ```mermaid flowchart LR A["Panel Config\naxis_label_rotate\naxis_label_truncate_width"] B["calculateDynamicNameGap\ncalculateRotatedLabelBottomSpace"] C["Adjust grid.bottom spacing"] D["Set axisLabel.rotate/overflow/width/margin"] E["Set xAxis/yAxis nameGap\nand nameTextStyle"] A -- "pass config" --> B B -- "compute extra space" --> C B -- "compute gap/margins" --> D B -- "compute nameGap" --> E ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table> <tr> <td> <details> <summary><strong>convertPromQLData.ts</strong><dd><code>Add dynamic label spacing and rotation logic</code> </dd></summary> <hr> web/src/utils/dashboard/convertPromQLData.ts <ul><li>Introduce <code>calculateDynamicNameGap</code> and <code>calculateRotatedLabelBottomSpace</code><br> <li> Compute <code>additionalBottomSpace</code> for grid.bottom<br> <li> Set xAxis <code>name</code>, <code>nameGap</code>, <code>nameTextStyle</code><br> <li> Apply <code>axisLabel.rotate</code>, <code>overflow</code>, <code>width</code>, <code>margin</code></ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/9808/files#diff-68d70ba6c622911d48cdb567940dc404a4a6468b86c6d24fb54e5f1d8aa5ca2a">+125/-8</a> </td> </tr> <tr> <td> <details> <summary><strong>convertSQLData.ts</strong><dd><code>Implement dynamic axis label rotation and spacing</code> </dd></summary> <hr> web/src/utils/dashboard/convertSQLData.ts <ul><li>Add <code>calculateDynamicNameGap</code> & <code>calculateRotatedLabelBottomSpace</code><br> <li> Update grid.bottom calculation with extra spacing<br> <li> Adjust axisLabel properties (rotate, width, overflow, margin)<br> <li> Apply dynamic <code>nameGap</code> across chart types</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/9808/files#diff-88c0e865040a20b2c8bb7d77e7f6bd187a5b07c1645c120223bc9d59603752c3">+208/-25</a></td> </tr> <tr> <td> <details> <summary><strong>ConfigPanel.vue</strong><dd><code>Add UI controls for label rotation and truncation</code> </dd></summary> <hr> web/src/components/dashboards/addPanel/ConfigPanel.vue <ul><li>Add inputs for <code>axis_label_rotate</code> and <code>axis_label_truncate_width</code><br> <li> Conditionally render controls by chart type<br> <li> Bind new config fields to panel data model</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/9808/files#diff-c3a6e64dff02b58bb7cdc3f0668990b41ff41544b4c5e991bbcd989ad4bba3f8">+66/-0</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ ___ ### **PR Type** Enhancement, Tests ___ ### **Description** - Add axis label rotation and truncate configs - Compute dynamic nameGap and bottom spacing - Integrate rotation/truncate in data converters - Update ConfigPanel UI and unit tests ___ ### Diagram Walkthrough ```mermaid flowchart LR A["Panel Config axis_label_rotate & axis_label_truncate_width"] B["calculateDynamicNameGap"] C["calculateRotatedLabelBottomSpace"] D["convertPromQLData / convertSQLData"] E["chart grid.bottom & xAxis nameGap settings"] A --> B A --> C B -- "nameGap" --> D C -- "bottom space" --> D D -- "apply spacing & truncation" --> E ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>5 files</summary><table> <tr> <td><strong>useDashboardPanel.ts</strong><dd><code>Add new axis label rotate/truncate defaults</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9808/files#diff-fbba1700750053b9eaf38ddd30dab84531bc44131c795ebb713811e4930cd7cb">+2/-0</a> </td> </tr> <tr> <td><strong>convertDataIntoUnitValue.ts</strong><dd><code>Introduce dynamic nameGap and bottom space functions</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9808/files#diff-14c6fe442ef231566ec411f9e0262cdd24ec912fc67b9154eec743282ab7211a">+88/-0</a> </td> </tr> <tr> <td><strong>convertPromQLData.ts</strong><dd><code>Integrate rotation/truncate logic into PromQL converter</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9808/files#diff-68d70ba6c622911d48cdb567940dc404a4a6468b86c6d24fb54e5f1d8aa5ca2a">+57/-8</a> </td> </tr> <tr> <td><strong>convertSQLData.ts</strong><dd><code>Apply dynamic spacing and truncation in SQL converter</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9808/files#diff-88c0e865040a20b2c8bb7d77e7f6bd187a5b07c1645c120223bc9d59603752c3">+180/-29</a></td> </tr> <tr> <td><strong>ConfigPanel.vue</strong><dd><code>Add UI inputs and tooltips for rotate/truncate</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9808/files#diff-c3a6e64dff02b58bb7cdc3f0668990b41ff41544b4c5e991bbcd989ad4bba3f8">+127/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>2 files</summary><table> <tr> <td><strong>convertPromQLData.spec.ts</strong><dd><code>Mock new spacing utilities in PromQL tests</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9808/files#diff-2769044ec488ef4070c2e1a28ce23ec36b945e46c903b870f8b340cbd6b05211">+2/-0</a> </td> </tr> <tr> <td><strong>convertSQLData.spec.ts</strong><dd><code>Mock new spacing utilities in SQL tests</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9808/files#diff-1dc85f7550b15820974ad93fa461de48d24bc5cbed621bffddb27250211fa88d">+2/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Configuration changes</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>mod.rs</strong><dd><code>Add schema fields for axis rotate/truncate</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9808/files#diff-cbf3fe971525ba58892400391dfd7dac7e43d6049d6b4f5a9840ad104ebc5e08">+6/-0</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: ktx-riya <riya.kukadiya@kiara.tech> |
||
|
|
98319127ea |
fix: dashboard css issue (#9824)
### **PR Type**
Bug fix
___
### **Description**
- Fix group header background for field list themes
- Remove padding prop on metrics run query button
- Improve add panel apply button display styles
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>FieldList.vue</strong><dd><code>Add theme-based
field-group-header styling</code>
</dd></summary>
<hr>
web/src/components/dashboards/addPanel/FieldList.vue
<ul><li>Replaced static grey background with
<code>field-group-header</code> class<br> <li> Added dark mode
background variable styling<br> <li> Added light mode background color
styling<br> <li> Updated header div class attribute</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9824/files#diff-a071c06e3e26629cb4ae4751450acc39c61fa49b07a1cc4be3711697829668d4">+9/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>AddPanel.vue</strong><dd><code>Adjust add panel button
group and dropdown styles</code>
</dd></summary>
<hr>
web/src/views/Dashboards/addPanel/AddPanel.vue
<ul><li>Added <code>display: inline-flex</code> to
<code>q-btn-group</code> style<br> <li> Introduced <code>flat</code> and
<code>dense</code> props to <code>q-btn-dropdown</code></ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9824/files#diff-c9632db1ad95af95aba10161bcbc7c5608318919f228637bdafae3f3a31267e8">+3/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Bug fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>Index.vue</strong><dd><code>Remove padding prop from
metrics button</code>
</dd></summary>
<hr>
web/src/plugins/metrics/Index.vue
<ul><li>Removed <code>padding="sm"</code> attribute from run query
button<br> <li> Ensured button height consistency</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9824/files#diff-a6734928ea4dcb5244e90de5a16fe6f5cafa95ccf58430ac7b548a065daf3d61">+0/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
8c8643cec5 |
fix: translation missing fields added (#9827)
### **User description** 1. Home page fixed ___ ### **PR Type** Enhancement ___ ### **Description** - Replace static HomeView labels with translations - Add `viewButton` and `noDataAvailable` translation keys - Update all locale JSON files - Remove unused CSS cursor property ___ <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>HomeView.vue</strong><dd><code>Replace static labels with translation function</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9827/files#diff-9af441af191d3254ef5f9db603dca75486de7638cda41a3c050e7b3c33d68280">+8/-9</a> </td> </tr> </table></details></td></tr><tr><td><strong>Configuration changes</strong></td><td><details><summary>11 files</summary><table> <tr> <td><strong>de.json</strong><dd><code>Add `viewButton` and `noDataAvailable` translations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9827/files#diff-78f24ecb2dbcfc38fdf3ec22b2559a5b40d236ea689d1c55f5d3e87168310264">+3/-1</a> </td> </tr> <tr> <td><strong>en.json</strong><dd><code>Add `viewButton` and `noDataAvailable` translations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9827/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+2/-0</a> </td> </tr> <tr> <td><strong>es.json</strong><dd><code>Add `viewButton` and `noDataAvailable` translations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9827/files#diff-ac2a2167b8b973e3f776f9fe3b43bef4576470d8ad33f3d7cfaff6edff0e5778">+3/-1</a> </td> </tr> <tr> <td><strong>fr.json</strong><dd><code>Add `viewButton` and `noDataAvailable` translations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9827/files#diff-db80e762b88ddf183820c050cdc6b215e6b02b365b5e73f5152af46b0d26f1a2">+3/-1</a> </td> </tr> <tr> <td><strong>it.json</strong><dd><code>Add `viewButton` and `noDataAvailable` translations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9827/files#diff-2de78074a5f887afddce60d694ead9322e6ab223eb70251c13819f3028bdc70d">+3/-1</a> </td> </tr> <tr> <td><strong>ja.json</strong><dd><code>Add `viewButton` and `noDataAvailable` translations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9827/files#diff-092e49c5f9fbc1b539ab9c2866d108d0ce1d314022b4c294eb4611b285e7bbd3">+3/-1</a> </td> </tr> <tr> <td><strong>ko.json</strong><dd><code>Add `viewButton` and `noDataAvailable` translations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9827/files#diff-50e27ca1b4825a5026f3a251bfcf79c97cab07cfade2ebd512d332453d707c48">+3/-1</a> </td> </tr> <tr> <td><strong>nl.json</strong><dd><code>Add `viewButton` and `noDataAvailable` translations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9827/files#diff-a1706021687ae5d8a1c006c49eab3946174fecd895f9b70a89c2e76d97250906">+3/-1</a> </td> </tr> <tr> <td><strong>pt.json</strong><dd><code>Add `viewButton` and `noDataAvailable` translations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9827/files#diff-38e804f64cb5e0e451849fc84e9b46e53c954a4a4263d51c18665ad45f4b4815">+3/-1</a> </td> </tr> <tr> <td><strong>tr.json</strong><dd><code>Add `viewButton` and `noDataAvailable` translations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9827/files#diff-6f0f131e9e2591480c4c5d1eaffc72d02dc31cbd8d3f90d8f012f08cabac8818">+3/-1</a> </td> </tr> <tr> <td><strong>zh.json</strong><dd><code>Add `viewButton` and `noDataAvailable` translations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9827/files#diff-8818055db58f83230aeea4ebfd4cec31d924e8c47b6f91298e356959ab25339e">+3/-1</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |
||
|
|
8beb75de63 |
fix: share url disabled when web url is not configured (#9826)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |
||
|
|
09ef3a8f88 |
feat: incident detail drawer enhancements - telemetry tabs and alert graph (#9719)
### **User description** ## Summary Enhances the incident detail drawer with two new features to improve incident investigation: 1. **Telemetry Correlation Tabs** - Logs, Metrics, and Traces tabs showing related telemetry 2. **Alert Graph Visualization** - Interactive graph of services and dependencies Design at : https://github.com/openobserve/designs/tree/main/alert-correlation --- ## Feature 1: Telemetry Correlation Tabs Adds three new tabs (Logs, Metrics, Traces) that display correlated telemetry streams based on the incident's `stable_dimensions`. **Frontend Changes:** - New service method `getCorrelatedStreams()` in `web/src/services/incidents.ts` - Integrates `TelemetryCorrelationDashboard` component in embedded mode - Lazy loading: data fetched only on first tab click - Data caching: subsequent tab switches reuse loaded data - Refresh button for manual data reload - Auto time range from `first_alert_at` to `last_alert_at` - Empty state with manual search fallback - Memory cleanup on drawer close **No backend changes** - uses existing `POST /api/{org}/service_streams/_correlate` endpoint --- ## Feature 2: Alert Graph Visualization Adds "Alert Graph" tab showing interactive visualization of all services involved in an incident. **Backend Changes:** - New endpoint: `GET /api/v2/{org}/alerts/incidents/{id}/service_graph` - Returns graph nodes (services with alert counts) and edges (dependencies) - Builds from existing `topology_context` field - Gated by `O2_INCIDENTS_ALERT_GRAPH_ENABLED` env variable (default: false) - Enterprise-only with 403 handling for non-enterprise builds **Frontend Changes:** - New `IncidentServiceGraph.vue` component using ECharts - Force-directed and circular layouts - Visual encoding: node size = alert count, color = severity/root cause - Purple border for primary incident service - Stats banner and hover tooltips - Empty state when topology unavailable **Configuration:** ```bash export O2_INCIDENTS_ALERT_GRAPH_ENABLED=true # Required to enable ``` ___ ### **PR Type** Enhancement ___ ### **Description** - Add `IncidentServiceGraph` Rust models and API - Implement `get_service_graph` service logic - Extend `incidentsService` with correlation methods - Enhance `IncidentDetailDrawer` with telemetry and graph tabs --------- Co-authored-by: sai nikhil kethe <nikhil@openobserve.ai> |
||
|
|
76f33b38c7 |
fix: remove http_url from service graph peer attributes (#9817)
## Summary - Removes `http_url` from peer attribute candidates to fix massive node cardinality - Fixes API to respect configured time range instead of hardcoded 60 minutes - Fixes tree view to display all nodes including disconnected components - Changes default visualization to graph view ## Problems Fixed ### 1. Node Explosion from URL Variations Service graph was creating separate nodes for every URL variation with different query parameters or path parameters: - `/api/products/1YMWWN1N4O`, `/api/products/9SIQT8TOJO`, etc. - `?contextKeys=books`, `?contextKeys=travel`, etc. This caused hundreds of nodes instead of a clean service topology. ### 2. API Ignoring Configuration API hardcoded 60-minute query window, ignoring the configured `service_graph.query_time_range_minutes` setting. ### 3. Tree View Missing Nodes Tree view only showed nodes reachable from root nodes (no incoming edges), hiding services in cycles or disconnected components. ## Solutions ### 1. Use server_address Instead of http_url Now uses `server_address` attribute (hostname only) following OpenTelemetry HTTP semantic conventions for service identification. ### 2. Respect Configured Time Range API now uses same configured time window as processor for consistency. ### 3. Virtual Root for Tree View Creates invisible virtual root node to display all disconnected service trees in ECharts. ### 4. Better Default UX Graph view is now the default with reordered buttons (Graph View first). |
||
|
|
67707c98d6 |
feat: Updated RUM Web Vitals (#9610)
#9611 Design at: rum |
||
|
|
4c551f839b |
fix: added unit test file ignore list and added test case files (#9807)
### **PR Type**
Tests
___
### **Description**
- Add unit tests for useSearchHistogramManager composable
- Add unit tests for useSearchPagination composable
- Add unit tests for useSearchResponseHandler composable
- Update vitest.config.ts ignore patterns
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>useSearchHistogramManager.spec.ts</strong><dd><code>Add
tests for histogram manager composable</code>
</dd></summary>
<hr>
web/src/composables/useLogs/useSearchHistogramManager.spec.ts
<ul><li>New test suite for useSearchHistogramManager composable<br> <li>
Tests isHistogramDataMissing and shouldShowHistogram<br> <li> Tests
histogram result handling and socket requests<br> <li> Mocks
dependencies like searchState and useHistogram</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9807/files#diff-e6d61868c245bf89523007ecd98716bb6debf967f0ce42cc19d96d018ae0358e">+481/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>useSearchPagination.spec.ts</strong><dd><code>Add tests
for search pagination composable</code>
</dd></summary>
<hr>
web/src/composables/useLogs/useSearchPagination.spec.ts
<ul><li>New test suite for useSearchPagination composable<br> <li> Tests
pagination helpers: refresh, calculate, reset<br> <li> Tests page count
logic and chunked append<br> <li> Covers updateResult and
handlePageCountResponse</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9807/files#diff-058ee3497dc3701ca618b64984900058c85591ccf2d1e519566bd3e36989fe7e">+644/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>useSearchResponseHandler.spec.ts</strong><dd><code>Add
tests for search response handler composable</code>
</dd></summary>
<hr>
web/src/composables/useLogs/useSearchResponseHandler.spec.ts
<ul><li>New test suite for useSearchResponseHandler composable<br> <li>
Tests error message construction and error handling<br> <li> Tests
search and histogram response flows<br> <li> Mocks notifications,
pagination, histogram, and utils</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9807/files#diff-aa5427a219e00993bc6fc99dd731c4cb601b5b0390bd9dd3d25f1a533bb1c4f4">+661/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>vitest.config.ts</strong><dd><code>Update vitest config
ignore patterns</code>
</dd></summary>
<hr>
web/vitest.config.ts
<ul><li>Extend test ignore patterns in vitest config<br> <li> Ignore
locale JSON, chart templates, type definitions<br> <li> Ignore re-export
index and mixin files<br> <li> Ignore AWS exports and constants
modules</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9807/files#diff-c3fc010b682e68f2ed0b7b1485b8aa513443a66d500903b8dff1d65908d02aae">+24/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
cb178787f2 |
chore: incidents as separate tabs (#9819)
### **PR Type**
Enhancement, Tests
___
### **Description**
- Replace icon tabs with reusable app-tabs component
- Introduce Alerts/Incidents viewMode switching logic
- Add extensive UI tests for new tab functionality
- Update getPath logic and dev script configuration
___
### Diagram Walkthrough
```mermaid
flowchart LR
TabsComp["app-tabs component"] --> ViewState["viewMode state"]
ViewState --> AlertsView["Alerts view UI"]
ViewState --> IncidentsView["Incidents view UI"]
Tests["UI tests"] --> TabsComp
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>zincutils.ts</strong><dd><code>Refine getPath base URL
logic</code>
</dd></summary>
<hr>
web/src/utils/zincutils.ts
<ul><li>refine getPath logic for web base path<br> <li> conditionally
prepend "/web/" on localhost</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9819/files#diff-d3d59688cccdcc6c84ebe88b698c6910030abecc3125f4c0ef81b0df023699ba">+1/-1</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>AlertList.vue</strong><dd><code>Replace custom tabs
with app-tabs</code>
</dd></summary>
<hr>
web/src/components/alerts/AlertList.vue
<ul><li>remove custom icon-only view tabs<br> <li> integrate
<code>app-tabs</code> for view switching<br> <li> add
<code>viewTabs</code> computed property<br> <li> update related SCSS
styling</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9819/files#diff-be3e41b823e163b226ffc270d95cc4981e59c600851e4e0d10ee5e4ee994ac8e">+35/-92</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>alertsPage.js</strong><dd><code>Add view mode tab
methods and locators</code>
</dd></summary>
<hr>
tests/ui-testing/pages/alertsPages/alertsPage.js
<ul><li>add locators for alert and incident tabs<br> <li> implement
click and expect methods for tabs<br> <li> add search methods for both
views</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9819/files#diff-79ee01d6d7f145f19207b93b87143b545a1188cfc6a82bc8c45fecfbf68f8a1d">+113/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>alertsIncidentsTabs.spec.js</strong><dd><code>Add E2E
tests for alerts/incidents tabs</code>
</dd></summary>
<hr>
tests/ui-testing/playwright-tests/Alerts/alertsIncidentsTabs.spec.js
<ul><li>add E2E tests for tabs visibility and switching<br> <li> cover
functional and edge-case scenarios</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9819/files#diff-3776665660a181de2d08e4d3bccc481191e7ac88f4e4b0943c869ffa4eb12ffd">+347/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>package.json</strong><dd><code>Add base path to dev
script</code>
</dd></summary>
<hr>
web/package.json
- update `dev` script to include base `/web/`
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9819/files#diff-b861012a5dd72b8a9f3281b7cf09f5a779c98569d040b1bbc1db50f1b15e7cce">+1/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
c77bd0b79a |
fix: dont overwrite the sql query when selecting new stream (#9818)
### **PR Type**
Bug fix
___
### **Description**
- Only set default queries if input empty
- Preserve custom SQL queries on stream switch
- Apply same check for PromQL tab
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Stream selected"] --> B{"Tab and empty query?"}
B -- "SQL" --> C["Set default SQL query"]
B -- "PromQL" --> D["Set default PromQL query"]
B -- "No" --> E["Keep existing query"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>ScheduledPipeline.vue</strong><dd><code>Avoid
overwriting custom queries on stream change</code>
</dd></summary>
<hr>
web/src/components/pipeline/NodeForm/ScheduledPipeline.vue
<ul><li>Added emptiness check before setting default queries<br> <li>
Extended check to both SQL and PromQL tabs<br> <li> Inserted comments
clarifying non-overwrite logic</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9818/files#diff-63d8f838bb880356e7804b4a57fd9223d4f2c189de7aadc7cf33cba723b29aaf">+4/-2</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
509bf7b6fb |
feat: pipeline backfill (#9462)
Design at : pipeline-gap-filler
# feat: Add Pipeline Backfill Jobs Feature
This PR introduces a complete pipeline backfill system that allows users
to reprocess historical data through existing pipelines.
## Key Features
### Backend
- **Dual-table architecture**: Separate `backfill_jobs` table for static
config and `scheduled_jobs` for scheduling state
- **RESTful API endpoints** under
`/api/{org_id}/pipelines/{pipeline_id}/backfill`:
- Create, list, pause, resume, update, and delete backfill jobs
- **Robust error handling**: Retry mechanism matching derived stream
pattern (immediate retries → scheduled retries, never delete jobs)
- **Progress tracking**: Chunk-based processing with real-time position
updates
- **Optional deletion phase**: Delete existing data before backfilling
with separate status tracking
- **Super cluster support**: Proper trigger synchronization across
regions
### Frontend
- **Backfill Jobs List Page**: Table view with status/pipeline filters,
action buttons (pause/resume/edit/delete)
- **Create Dialog**: Time range picker (absolute dates only),
configurable chunk periods and delays
- **Edit Dialog**: Update paused/completed jobs with reset to fresh
state
- **Job Details Dialog**: Real-time progress, timeline visualization,
deletion status tracking
- **Dark mode support**: Full theme compatibility across all components
- **DateTime integration**: Reuses existing DateTime component with
microsecond precision
## Technical Highlights
- Cross-database support (PostgreSQL, MySQL, SQLite)
- Frontend-only filtering for performance
- Status mapping (waiting/pending → "running" display)
- Timestamp formatting: `YYYY-MM-DDTHH:mm:ssZ`
- Default chunk period matches pipeline schedule frequency
- Navigation integration from PipelinesList component
## Files Changed
### Backend
- **Migration**:
`src/infra/src/table/migration/m20250109_000001_create_backfill_jobs.rs`
- **Table CRUD**: `src/infra/src/table/backfill_jobs.rs`
- **Service logic**: `src/service/alerts/backfill.rs`
- **Scheduler handlers**: `src/service/alerts/scheduler/handlers.rs`
- **API routes**: `src/handler/http/request/pipelines/backfill.rs`
- **Router integration**: `src/handler/http/router/mod.rs`,
`src/handler/http/router/openapi.rs`
- **Super cluster sync**: `src/super_cluster_queue/scheduler.rs`
### Frontend
- **Components**:
- `web/src/components/pipelines/BackfillJobsList.vue`
- `web/src/components/pipelines/CreateBackfillJobDialog.vue`
- `web/src/components/pipelines/EditBackfillJobDialog.vue`
- `web/src/components/pipelines/BackfillJobDetails.vue`
- **API service**: `web/src/services/backfill.ts`
- **DateTime enhancement**: `web/src/components/DateTime.vue`
## Testing
- Tested across PostgreSQL, MySQL, and SQLite databases
- Verified dark mode compatibility
- Tested pause/resume/edit/delete operations
- Validated progress tracking and completion status
- Confirmed super cluster synchronization
|
||
|
|
e0a712a80e |
fix: fix for first time data loading issue without clicking run query… (#9805)
### **User description**
… button
___
### **PR Type**
Bug fix
___
### **Description**
- Introduce `initialStreamSelected` for initial loads
- Conditionally call `getQueryData()` on selections
- Set `loading` false if no stream selected
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["loadLogsData()"] --> B["Compute `initialStreamSelected`"]
B -- "Stream selected" --> C["getQueryData()"]
B -- "No stream selected" --> D["searchObj.loading = false"]
C --> E["refreshData()"]
D --> E["refreshData()"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>useLogs.ts</strong><dd><code>Conditional initial data
load fix</code>
</dd></summary>
<hr>
web/src/composables/useLogs.ts
<ul><li>Introduced <code>initialStreamSelected</code> boolean<br> <li>
Wrapped <code>getQueryData()</code> call in conditional<br> <li> Set
<code>searchObj.loading</code> false when unselected</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9805/files#diff-1040f61354f92711e0e77ed4e9bfa15586d45a94c7e2ab06cc37372068030e7b">+13/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
271ff27fac |
fix: remove traces error and rate value filters (#9617)
### **PR Type**
Bug fix
___
### **Description**
- Merge Rate and Errors filter chip displays
- Remove redundant Errors start-value span
- Always display Duration time range when set
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>TracesMetricsDashboard.vue</strong><dd><code>Unify
filter chip display logic</code>
</dd></summary>
<hr>
web/src/plugins/traces/metrics/TracesMetricsDashboard.vue
<ul><li>Merged Rate and Errors chips into single time-range
indicator<br> <li> Removed specific Errors value display span<br> <li>
Changed Duration chip to always use time-range v-if</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9617/files#diff-7b6f29a2737d9501b18dbd8622eba4965e4bc2b92115627ae7d2e70cc3382087">+2/-5</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: omkark06 <omkar@zinclabs.io>
|
||
|
|
890e8d7669 |
fix: Node package upgrade v1.8 (#9773)
### **PR Type**
Enhancement
___
### **Description**
- Upgrade Tailwind CSS from v3.4.4 to v4.1.18
- Bump rudder-sdk-js from 2.48.43 to 2.52.7
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Dependencies</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>package.json</strong><dd><code>Bump dependency versions
in package.json</code>
</dd></summary>
<hr>
web/package.json
<ul><li>Updated <code>tailwindcss</code> version to ^4.1.18<br> <li>
Updated <code>rudder-sdk-js</code> version to ^2.52.7</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9773/files#diff-b861012a5dd72b8a9f3281b7cf09f5a779c98569d040b1bbc1db50f1b15e7cce">+2/-2</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
780977af2f |
fix: dashboard ui, legends popup now handles differently, tabs name camel case issue (#9794)
### **PR Type** Bug fix, Enhancement ___ ### **Description** - Refactor latency insights unit and decimals logic - Parameterize `showLegendsButton` across dashboards - Simplify legends popup clipboard handling and styling - Fix tab label casing and update localization ___ ### Diagram Walkthrough ```mermaid flowchart LR A["RenderDashboardCharts"] -->|passes showLegendsButton| B["PanelContainer"] B -->|forwards showLegendsButton| C["PanelSchemaRenderer"] C -->|opens popup| D["ShowLegendsPopup"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Bug fix</strong></td><td><details><summary>3 files</summary><table> <tr> <td><strong>useLatencyInsightsDashboard.ts</strong><dd><code>Refactor latency unit and decimals logic</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9794/files#diff-960dec4a653d7c079157499a2473d0e87bd8b61463e1c3f633e7682ba763a4b1">+9/-2</a> </td> </tr> <tr> <td><strong>PanelSchemaRenderer.vue</strong><dd><code>Conditionally hide legends button on no data</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9794/files#diff-e5376e7e77bf3aaf6590c2522d8c2dbffcc95a8006ae0d6dc0040a37825367d6">+1/-0</a> </td> </tr> <tr> <td><strong>TabList.vue</strong><dd><code>Remove tab label capitalization</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9794/files#diff-b7b5acd7824f3e257487f316c410abfdad832786288d1b98f27c0c2814729193">+3/-1</a> </td> </tr> </table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>4 files</summary><table> <tr> <td><strong>PanelContainer.vue</strong><dd><code>Pass `showLegendsButton` from props</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9794/files#diff-414737cba6064461f7026e0b016afcb9620bd5bb29c4708fc170dee789dbcd4d">+2/-1</a> </td> </tr> <tr> <td><strong>ShowLegendsPopup.vue</strong><dd><code>Remove clipboard notifications and adjust layout</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9794/files#diff-e02401241391109f2082ad6742374ff47ad79af8abf37a4bfa6ebeaae3f11322">+10/-31</a> </td> </tr> <tr> <td><strong>RenderDashboardCharts.vue</strong><dd><code>Expose `showLegendsButton` prop to panels</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9794/files#diff-313f7c69102161242c893c863c50f1f1cd1fc19b68b5c99bf840b4b5c72f0f2e">+6/-0</a> </td> </tr> <tr> <td><strong>ViewDashboard.vue</strong><dd><code>Enable legends button by default</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9794/files#diff-052badb6758aff09ceaf1645869b9ba96125e6a0ea21abb01a8ee0a40d6467f3">+1/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>en.json</strong><dd><code>Simplify `legendsOfCharts` translation</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9794/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+1/-1</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ |
||
|
|
e17e8bc5e6 |
fix: when retrying allow user to choose whether to resume from last byte or start from scratch (#9792)
### **PR Type**
Enhancement
When the job is failed, and the user wants to retry manually, ask the
user whether resume should be from the last successful position or from
start again.
___
### **Description**
- Support resume option for enrichment import
- Parse `resume` query param server-side
- Custom UI for resume or fresh restart
- Update JS service to include `resume` param
- Add `RetryJobDialog.vue` component
___
### Diagram Walkthrough
```mermaid
flowchart LR
UI["UI: RetryJobDialog"] -- "confirm resume choice" --> API["POST /api/{org}/enrichment_tables/{table}/url?append=&resume="]
API -- "parse `resume` param" --> Handler["save_enrichment_table_from_url"]
Handler -- "resume logic" --> DB["Job record (resumed or new)"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>jstransform.ts</strong><dd><code>Add `resume` param in
request service</code>
</dd></summary>
<hr>
web/src/services/jstransform.ts
<ul><li>Add <code>resume</code> parameter with default false<br> <li>
Append <code>resume</code> to POST request URL</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9792/files#diff-301add2528e0f32323ca4c503bd7d460ab15ca6b9a9537192a02c5e52fd82926">+2/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>mod.rs</strong><dd><code>Support resume logic in import
handler</code>
</dd></summary>
<hr>
src/handler/http/request/enrichment_table/mod.rs
<ul><li>Parse <code>resume</code> query parameter<br> <li> Store
<code>existing_job</code> for resume handling<br> <li> Resume failed
ranged jobs preserving progress<br> <li> Skip range support check when
resuming</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9792/files#diff-7b5b203002d1c3e5f671392a2a8ed84f45225896b652c2dac94ac26e72a43124">+79/-42</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>EnrichmentTableList.vue</strong><dd><code>Integrate
retry dialog into table list</code>
</dd></summary>
<hr>
web/src/components/functions/EnrichmentTableList.vue
<ul><li>Import and register <code>RetryJobDialog</code><br> <li> Manage
<code>showRetryDialog</code> and <code>retryJobData</code><br> <li>
Update <code>retryUrlJob</code> to open dialog<br> <li> Adjust
<code>handleRetryConfirm</code> to pass <code>resume</code></ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9792/files#diff-6a29e253f59405d3c0f756dba36afd7483f10ad86927cbbc3348ede6372c3077">+64/-34</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>RetryJobDialog.vue</strong><dd><code>Add RetryJobDialog
component</code>
</dd></summary>
<hr>
web/src/components/functions/RetryJobDialog.vue
<ul><li>New dialog to choose resume or restart<br> <li> Handles focus
trap and ESC key<br> <li> Displays range support warning<br> <li> Emits
<code>confirm</code> with resume choice</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9792/files#diff-7bc926ef894b5aed7010006e729ede28a2f4931809b154dc81880999b3a7e72f">+638/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
78c96c3721 |
fix: support bulk deletes for various resources (#9153)
### **User description** fixes https://github.com/openobserve/openobserve/issues/9116 This adds support for bulk delete operation from API and UI side for various resources. ___ ### **PR Type** Enhancement ___ ### **Description** - Add bulk delete endpoints for multiple resources - Enforce per-item permission checks before delete - Aggregate successful/failed items in responses - Register bulk-delete routes in HTTP router - Extend UI: add bulk-delete buttons, dialogs, service calls ___ ### Diagram Walkthrough ```mermaid flowchart LR UI["\"UI: Bulk Delete Trigger\""] API["\"HTTP DELETE /{resource}/bulk Handler\""] AUTH["\"Permission Checks per Item\""] DEL["\"Perform Delete Operations Loop\""] RESP["\"Aggregate Response: successes/ failures\""] UI_FE["\"FE: Show Notifications\""] UI -- "calls" --> API API -- "checks" --> AUTH AUTH -- "allowed" --> DEL DEL -- "deletes items" --> RESP RESP -- "returns" --> UI_FE ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>14 files</summary><table> <tr> <td><strong>fga.rs</strong><dd><code>Add bulk delete roles and groups endpoints</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-e7c99f37f3abbb5e0507d2760bbf67df010d9218704b38dce84c5477acecd22e">+218/-6</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Implement delete_alert_bulk handler</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-83431801d27626ef27482e67b62661f900043544a45ddf958bd027cf2fa3bd8d">+87/-6</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Add delete_function_bulk and error types</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-a5e1b3644cef9feb689dfe66382e44e5434ecadbff3469127346a333d4733102">+97/-3</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Add delete_dashboard_bulk endpoint</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-1b3c257e1d174c826718499faa4a1d4e93465dd56cb2b7b273b690ff7e3223fd">+78/-1</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Implement re_patterns delete_bulk logic</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-27d37a8738de89c81b540daa978e684caf2cf28803e1208d90cb4d42528ed28b">+116/-0</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Add users bulk delete handler</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-56897e42f9436a640bc70fddc25686485ba8ae1223635b32d252a0333309f748">+80/-1</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Add service_accounts delete_bulk API</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-095d70f65b6e69bf7de0180fcbcddcd7c89c4cf00095d7b06f039a07e73916bb">+86/-1</a> </td> </tr> <tr> <td><strong>action.rs</strong><dd><code>Implement delete_action_bulk endpoint</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-616df3014c553f763ea57e925f1bff7bb47f9467c632940d93a45b7b1e4c3a07">+90/-1</a> </td> </tr> <tr> <td><strong>destinations.rs</strong><dd><code>Add delete_destination_bulk for alerts</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-76b00293c621036de31cf499c1c276efb9704c2bf8cf1b728f49cfdd43f9fd1b">+75/-4</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Add delete_bulk for cipher_keys</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-043222e433d1e5825a4b7bfc2c7feedba417f2630f0082fa67aff64976736396">+76/-1</a> </td> </tr> <tr> <td><strong>templates.rs</strong><dd><code>Implement delete_template_bulk handler</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-b08e274a64cc935b0cec402a04271a872b1586027a77dc0ccb84c597c3960f61">+73/-4</a> </td> </tr> <tr> <td><strong>pipeline.rs</strong><dd><code>Add delete_pipeline_bulk API handler</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-c69f4f94eee97ce226caddc497b2adf89e26869f2d72b0d0206dc31ab2714daf">+70/-2</a> </td> </tr> <tr> <td><strong>reports.rs</strong><dd><code>Add delete_report_bulk endpoint</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-00435e0d9301342b51cb57ae313f1413e7ed973642e0badf3f3959125d0677d1">+75/-1</a> </td> </tr> <tr> <td><strong>ActionScripts.vue</strong><dd><code>Integrate bulk delete UI in action scripts</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-770f71fcb92a13b3b8b1041567b885fac39903c814825c878595cafa624ebbd8">+284/-5</a> </td> </tr> </table></details></td></tr><tr><td><strong>Configuration changes</strong></td><td><details><summary>3 files</summary><table> <tr> <td><strong>mod.rs</strong><dd><code>Register bulk delete services in router</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-02556e3f515441b5d2b6bbea7829df488beac03c4cc41309a6638ae3c0e0aec6">+14/-0</a> </td> </tr> <tr> <td><strong>iam.ts</strong><dd><code>Add bulkDeleteGroups and bulkDeleteRoles calls</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-3712c1bb0eecb664b6691d724c3673b8c1befa41efbd8c5de626c5849f8ace98">+10/-0</a> </td> </tr> <tr> <td><strong>dashboards.ts</strong><dd><code>Add bulkDelete service for dashboards</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-913b3f54367036b1b3960aa3eddd7e17b509b1d6011c5ab68ae0e935653179c5">+7/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Error handling</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>auth.rs</strong><dd><code>Allow bulk-delete paths in auth extractor</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-9bc2b1841504a435f66ad094f72ddbe7b7fa75e5e1557b8adbfe36f7f0592e1b">+17/-1</a> </td> </tr> </table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>2 files</summary><table> <tr> <td><strong>user.rs</strong><dd><code>Define bulk delete request/response structs</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-e13b3a981fd70182b9738a6b0ecfdee915c5b36757703a87741e1eddf3f6e786">+36/-0</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Add PipelineBulkDelete meta types</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-c4bd542e4e07ed7706b0643086f5a7d4edbb3647c7ceedbe4bea516c5274d8bd">+12/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Additional files</strong></td><td><details><summary>40 files</summary><table> <tr> <td><strong>mod.rs</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-6f9c2e6dbc40f8d40e3d3ecbee23240813a3d4856d49bd5d979f5b98551fdc3d">+12/-0</a> </td> </tr> <tr> <td><strong>service_account.rs</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-878ad520e1c84500cc21ff6fc4088c8da64ff2febd79e60c0d4cc8c695c49798">+11/-0</a> </td> </tr> <tr> <td><strong>action.rs</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-fc87c75a7df9539d7e7ee6184dfab02d4a8932323e81f95d57c05363aa44752d">+15/-0</a> </td> </tr> <tr> <td><strong>reports.rs</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-d2117a3d67d4ec47b0017861845c92143baf917e10e6746df5dd97f925f81eeb">+12/-0</a> </td> </tr> <tr> <td><strong>function.rs</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-27c9f3d93723397a0e234bc45c9f543b43eff5fd518d76e735f78d95a58f3f1c">+12/-0</a> </td> </tr> <tr> <td><strong>requests.rs</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-412f11e06c0e901e2292aab80536cb36edebcc4796dec52923389c3aaa32b25a">+6/-0</a> </td> </tr> <tr> <td><strong>responses.rs</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-224027f90893122eea28e35778467acf1a4b5572ce612fc9bc9ec44ca8ebd9fb">+9/-0</a> </td> </tr> <tr> <td><strong>dashboards.rs</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-250eeebeec9d4ac0ac271466ed83cd33fea3f121080491b340dc95d9af287259">+12/-0</a> </td> </tr> <tr> <td><strong>destinations.rs</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-ecffe114c8200bab742dd2ee4f7f41128aa59438a879634f070edd575a1f917c">+24/-0</a> </td> </tr> <tr> <td><strong>search_stream.rs</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-642de43ff6b19ae41087a9f1efc02d8b0b873809e0c92cbddfac1a30ef3f1184">+1/-0</a> </td> </tr> <tr> <td><strong>utils.rs</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-96bb9f4a8f547c821f26c957e8505d0437095b08d2b36687531f71565d287bd6">+2/-1</a> </td> </tr> <tr> <td><strong>functions.rs</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-ed5611a9aa6b5c033e70d7631ba72fafad3cc842672077a7fcf965d11a4fef23">+22/-31</a> </td> </tr> <tr> <td><strong>AppTable.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-efcf66a9e913b5d3a7c2eea800b7f4e54d9e5268307131482fd40f32e2074d8e">+72/-16</a> </td> </tr> <tr> <td><strong>AlertList.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-be3e41b823e163b226ffc270d95cc4981e59c600851e4e0d10ee5e4ee994ac8e">+123/-2</a> </td> </tr> <tr> <td><strong>AlertsDestinationList.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-e9d05ba6c071c0e2f5d9ef7acdef757f79910abd6897b29e27b069a10d4ba8de">+142/-5</a> </td> </tr> <tr> <td><strong>PipelinesDestinationList.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-088c66f5a34e73a5350a794a772e5d905262277337c937dd36f4295072203ebf">+163/-28</a></td> </tr> <tr> <td><strong>TemplateList.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-7df66364d7d69a26cfa25cbc555d0e090c2f73e51c8386d9b0435bae4412564c">+116/-27</a></td> </tr> <tr> <td><strong>EnrichmentTableList.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-6a29e253f59405d3c0f756dba36afd7483f10ad86927cbbc3348ede6372c3077">+124/-13</a></td> </tr> <tr> <td><strong>FunctionList.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-6ff9af50a1597504b7f0dca91e61cf30c800b4a17b4be2ed2c3a4f7a7b2d7068">+143/-6</a> </td> </tr> <tr> <td><strong>AppGroups.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-402fb2a5338e60fdc3da489f4d50b5cf52f06b4e884a6fe7b82441c9fa5ea22c">+86/-1</a> </td> </tr> <tr> <td><strong>AppRoles.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-191634ef09436199f91f442968110a01f54ae46b5ceee67476f52613ad796db4">+86/-1</a> </td> </tr> <tr> <td><strong>EditRole.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-263b6bc7d29fdf8358c8437cd637f1350aa3733cc2706eae8ff00028686cc0f5">+20/-0</a> </td> </tr> <tr> <td><strong>ServiceAccountsList.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-3afe835bcfbec3fda2e9550850c29581092ee0717e7dd8de8888e774a0048d24">+114/-1</a> </td> </tr> <tr> <td><strong>User.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-e973c2a665f9b27b94673ba64cc5b23650300836a727a2e07673c8e26305aee5">+133/-3</a> </td> </tr> <tr> <td><strong>PipelinesList.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-85e3ef322f3eea0fc6d74d89431ba338a1153cb82ee06bef0f7c5f439c04267d">+108/-2</a> </td> </tr> <tr> <td><strong>ReportList.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-f7d700f7e67fbaba3c58ab5d2c614925db743101828214445ce9dae35dc29067">+157/-5</a> </td> </tr> <tr> <td><strong>CipherKeys.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-950b715cff2c964d8542512692030c370733b57d698abf40e1dcb3cce2cfaf7a">+104/-13</a></td> </tr> <tr> <td><strong>RegexPatternList.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-524927acd9f5bb07b71bfac489e747470108574e21a6dde63ea7c1f219cea853">+109/-14</a></td> </tr> <tr> <td><strong>action_scripts.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-6c1a011ac23290134801b22feb2b50c2b19cabf2a009f37a62b4dd9ca6e415e3">+3/-0</a> </td> </tr> <tr> <td><strong>alert_destination.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-377d28822e9ad4e9e80327ecc2d09bf1981c7997c5f1c1de120c6179eef19c6e">+3/-0</a> </td> </tr> <tr> <td><strong>alert_templates.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-fd8c4260abc3df601e4331d36b0c211eca568ee70139ad90c87247bc552fe4e2">+3/-0</a> </td> </tr> <tr> <td><strong>alerts.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-7a62782cceacac92b787e058219b3c53ea7406d4be5780def899943a01f500c1">+7/-0</a> </td> </tr> <tr> <td><strong>cipher_keys.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-0a0ef3a63c29b2a74b7f904c54c3fb32bee421608474aa32334b7c55133ab1ef">+3/-0</a> </td> </tr> <tr> <td><strong>jstransform.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-301add2528e0f32323ca4c503bd7d460ab15ca6b9a9537192a02c5e52fd82926">+3/-0</a> </td> </tr> <tr> <td><strong>pipelines.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-e8626670bb4e46e073f9858ade6b3dc77eaadf39d6721d9c0006eccc1b430612">+8/-0</a> </td> </tr> <tr> <td><strong>regex_pattern.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-2a0b0828141d39ab0385e0941314ead1cdd2ec3ec7b3baf5fd0c42f8f010728a">+3/-0</a> </td> </tr> <tr> <td><strong>reports.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-32d3299b2b21dc57c39d01080baba03765d853bd05c82d6158834b54713ae825">+3/-0</a> </td> </tr> <tr> <td><strong>service_accounts.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-4038191b0dc0cad335f3d8f7f703505df905ad843fe950096aefb8abbd139a1e">+4/-1</a> </td> </tr> <tr> <td><strong>users.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-a334d8d570d9bdcaa3d4c8c2a993eff009a1ec8eb499c8a3d1a292d9224159d0">+3/-0</a> </td> </tr> <tr> <td><strong>Dashboards.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9153/files#diff-8da3187db8ce3d795d0f196ede6b2290221ffa3e27b15dcc2b645e44dd196213">+122/-6</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Signed-off-by: Yashodhan Joshi <yjdoc2@gmail.com> Co-authored-by: Yashodhan Joshi <yjdoc2@gmail.com> Co-authored-by: sai nikhil kethe <nikhil@openobserve.ai> |
||
|
|
12e73bcf18 |
fix: Register PromQL language for monaco-editor and metrics UI fixes (#9793)
### **PR Type**
Bug fix
___
### **Description**
- Register `promql` language in onMounted hook of CodeQueryEditor.vue
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>CodeQueryEditor.vue</strong><dd><code>Add PromQL
language registration</code>
</dd></summary>
<hr>
web/src/components/CodeQueryEditor.vue
<ul><li>Add condition check for <code>promql</code> language<br> <li>
Invoke <code>monaco.languages.register({ id: "promql" })</code></ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9793/files#diff-52a36bf2d64e590036ed1c1f89b07a4a6b971a84e4fae9b4272cbc69d63f9bef">+3/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: Sai Nikhil <nikhil@openobserve.ai>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
|
||
|
|
1c5981a35b | fix: update Chinese translations in zh.json (#9786) | ||
|
|
b1b8e9273a |
fix: incident drawer changes (#9783)
### **PR Type**
Enhancement
___
### **Description**
- Revamped header with compact badges
- Added collapsible table of contents sidebar
- Upgraded timeline, dimensions, topology layouts
- Enhanced RCA rendering with markdown sanitizer
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Incident Detail Drawer"] --> B["Compact Badges"]
A --> C["Table of Contents Sidebar"]
A --> D["RCA Markdown Rendering"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>IncidentDetailDrawer.vue</strong><dd><code>Refactor
IncidentDetailDrawer layout and logic</code>
</dd></summary>
<hr>
web/src/components/alerts/IncidentDetailDrawer.vue
<ul><li>Redesigned header to show status, severity, alerts badges<br>
<li> Introduced a dynamic collapsible Table of Contents section<br> <li>
Refactored timeline, dimensions, topology layouts<br> <li> Implemented
markdown parsing & sanitized RCA content</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9783/files#diff-6973d58a5f49658b07d3533d4db5d32cc6430433b51732481e7497243dadb0b0">+707/-271</a></td>
</tr>
</table></td></tr><tr><td><strong>Formatting</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>RcaReport.scss</strong><dd><code>Add RCA report SCSS
styling</code>
</dd></summary>
<hr>
web/src/components/alerts/RcaReport.scss
<ul><li>Added themeable CSS variables for RCA report styling<br> <li>
Defined styles for headers, lists, code blocks, tables<br> <li> Included
dark mode color overrides</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9783/files#diff-2f19f394cb1da38b9b996c7f4a31aace8468dd85c900b43391efb6852511a617">+241/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
e53a1b3a12 |
fix: dashboard query editor edit panel query not loading (#9761)
### **PR Type**
Enhancement, Bug fix
___
### **Description**
- Add debug logging across dashboard panel composable
- Improve editor setup/update logic with logs
- Fix customQuery flag on custom_chart panels
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>useDashboardPanel.ts</strong><dd><code>Add debug logs
in dashboard panel composable</code>
</dd></summary>
<hr>
web/src/composables/useDashboardPanel.ts
<ul><li>Insert detailed console.log in resetAggregationFunction<br> <li>
Add watcher logs for query & customQuery changes<br> <li> Log branch
decisions and final query state</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9761/files#diff-fbba1700750053b9eaf38ddd30dab84531bc44131c795ebb713811e4930cd7cb">+12/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>CodeQueryEditor.vue</strong><dd><code>Instrument code
editor with debug logs</code>
</dd></summary>
<hr>
web/src/components/CodeQueryEditor.vue
<ul><li>Add console.log in setupEditor/onMounted/onActivated<br> <li>
Enhance editor recreation logic to update value/readOnly<br> <li> Log
editor creation and watcher events</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9761/files#diff-52a36bf2d64e590036ed1c1f89b07a4a6b971a84e4fae9b4272cbc69d63f9bef">+73/-2</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Bug fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>AddPanel.vue</strong><dd><code>Fix and log custom_chart
query initialization</code>
</dd></summary>
<hr>
web/src/views/Dashboards/addPanel/AddPanel.vue
<ul><li>Insert logs around getPanel, Object.assign, nextTick,
loadDashboard<br> <li> Ensure <code>customQuery=true</code> for
custom_chart panels</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9761/files#diff-c9632db1ad95af95aba10161bcbc7c5608318919f228637bdafae3f3a31267e8">+29/-2</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: ktx-abhay <abhay.padamani@kiara.tech>
Co-authored-by: ktx-vaidehi <vaidehi.akhani@kiara.tech>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
|
||
|
|
c04fa5f82f |
fix: metrics PromQL Builder UI fixes (#9770) (#9775)
Co-authored-by: ktx-vaidehi <vaidehi.akhani@kiara.tech> Co-authored-by: ktx-abhay <abhay.padamani@kiara.tech> --------- Co-authored-by: ktx-vaidehi <vaidehi.akhani@kiara.tech> Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> |
||
|
|
9f0b55085e |
fix: add alert issues sync with main (#9763)
### **PR Type** Bug fix, Tests, Enhancement ___ ### **Description** - Disable auto-expand preview on custom tab - Update tests to enforce manual expand behavior - Guard and initialize context_attributes conversion - Add scroll-to-bottom button in AlertSummary - Conditionally render VRL preview, use optional chaining - Refine select styling and tooltip handling ___ <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Tests</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>AlertWizardRightColumn.spec.ts</strong><dd><code>update tests for manual expand behavior</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9763/files#diff-eb14abefd15bc1d3db947347b49899fe264138b7aea63729feae27ad7abed606">+19/-17</a> </td> </tr> </table></details></td></tr><tr><td><strong>Bug fix</strong></td><td><details><summary>4 files</summary><table> <tr> <td><strong>AlertWizardRightColumn.vue</strong><dd><code>disable auto-expand preview logic</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9763/files#diff-f599a1960d1ac37e352854ad368d23e080b3cec2b217df22f40d0e15a4db6986">+0/-12</a> </td> </tr> <tr> <td><strong>AddAlert.vue</strong><dd><code>guard and initialize context_attributes array</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9763/files#diff-7b426bb23e9ed0250c3877d6d97b099c42b2d20e22ddf4459915381b2233a0a8">+21/-10</a> </td> </tr> <tr> <td><strong>QueryConfig.vue</strong><dd><code>conditional VRL preview and optional chaining</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9763/files#diff-7273c8de49b8ebf706d7bee5b275c75818c0493f41c73f00c55efe667cbd00d9">+5/-5</a> </td> </tr> <tr> <td><strong>CompareWithPast.vue</strong><dd><code>hide tooltip before SQL editor navigation</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9763/files#diff-6606848e30caef2cda13d65cb30d6590205556259e7e6daf39cada825502d55b">+13/-1</a> </td> </tr> </table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>2 files</summary><table> <tr> <td><strong>AlertSummary.vue</strong><dd><code>add scroll-to-bottom button in summary</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9763/files#diff-c22aa1c5934b763f1d4a5a61a7e810b6bcb1d60b76b64c61cb3ce89dc0a04499">+120/-2</a> </td> </tr> <tr> <td><strong>AlertSettings.vue</strong><dd><code>refine destinations select field styling</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9763/files#diff-1d5bfd6a1ea672884193649b1271d751d6f3b8ec84af759071c9bfd169a8ab28">+35/-3</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ |
||
|
|
1cb57a32b7 |
fix: upgrade batch 7 npm packages (#9768)
### **User description**
- cron-parser: 4.9.0 → 5.4.0
- vue-tsc: 2.2.0 → 3.2.1
Type check and unit tests passed successfully.
___
### **PR Type**
Enhancement
___
### **Description**
- Upgrade `cron-parser` to ^5.4.0
- Upgrade `vue-tsc` to ^3.2.1
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Dependencies</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>package.json</strong><dd><code>Bump cron-parser and
vue-tsc versions</code>
</dd></summary>
<hr>
web/package.json
<ul><li>Upgraded <code>cron-parser</code> from ^4.9.0 to ^5.4.0<br> <li>
Upgraded <code>vue-tsc</code> from ^2.2.0 to ^3.2.1</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9768/files#diff-b861012a5dd72b8a9f3281b7cf09f5a779c98569d040b1bbc1db50f1b15e7cce">+2/-2</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
7a4a418740 |
fix: upgrade batch 6 npm packages (#9766)
### **User description**
- jsdom: 26.0.0 → 27.3.0
- moment-timezone: 0.5.46 → 0.6.0
- @openobserve/rrweb-player: 0.1.1 → 0.2.1
- uuid: 11.0.5 → 13.0.0
Type check and unit tests passed successfully.
___
### **PR Type**
Enhancement
___
### **Description**
- Bump `@openobserve/rrweb-player` to ^0.2.1
- Update `moment-timezone` to ^0.6.0
- Upgrade `uuid` to ^13.0.0
- Bump `jsdom` to ^27.3.0
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Dependencies</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>package.json</strong><dd><code>Dependency version
bumps</code>
</dd></summary>
<hr>
web/package.json
<ul><li>Updated <code>@openobserve/rrweb-player</code> dependency<br>
<li> Upgraded <code>moment-timezone</code> version<br> <li> Bumped
<code>uuid</code> to major release<br> <li> Upgraded <code>jsdom</code>
dependency</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9766/files#diff-b861012a5dd72b8a9f3281b7cf09f5a779c98569d040b1bbc1db50f1b15e7cce">+4/-4</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
e7703e86ec |
fix: upgrader two eslint packages (#9765)
### **PR Type**
Enhancement
___
### **Description**
- Upgrade eslint-plugin-cypress to ^5.2.0
- Upgrade eslint-plugin-vue to ^10.6.2
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Dependencies</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>package.json</strong><dd><code>ESLint plugin versions
bump</code>
</dd></summary>
<hr>
web/package.json
<ul><li>Bump <code>eslint-plugin-cypress</code> from ^4.1.0 to
^5.2.0<br> <li> Bump <code>eslint-plugin-vue</code> from ^9.32.0 to
^10.6.2</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9765/files#diff-b861012a5dd72b8a9f3281b7cf09f5a779c98569d040b1bbc1db50f1b15e7cce">+2/-2</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: Claude <noreply@anthropic.com>
|
||
|
|
95ff094b2f |
fix: upgraded npm packages (#9764)
### **PR Type**
Enhancement
___
### **Description**
- Bump `rollup-plugin-visualizer` to ^6.0.5
- Upgrade `sass-loader` to ^16.0.6
- Update `typescript` to ~5.9.3
- Refresh other npm dependencies
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Dependencies</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>package.json</strong><dd><code>Bump key package
versions</code>
</dd></summary>
<hr>
web/package.json
<ul><li>Bumped <code>rollup-plugin-visualizer</code> from ^5.12.0 to
^6.0.5<br> <li> Upgraded <code>sass-loader</code> from ^14.2.1 to
^16.0.6<br> <li> Updated <code>typescript</code> from ~5.7.2 to
~5.9.3</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9764/files#diff-b861012a5dd72b8a9f3281b7cf09f5a779c98569d040b1bbc1db50f1b15e7cce">+3/-3</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
9c442f8042 |
Fix unit test case errors (#9758)
### **PR Type** Tests, Enhancement ___ ### **Description** - Refactored AppGroups tests with new mocks - Added mock API endpoints for tests - Enhanced setupTests to suppress console errors - Updated Vitest config to silence logs ___ <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Tests</strong></td><td><details><summary>5 files</summary><table> <tr> <td><strong>AppGroups.spec.ts</strong><dd><code>Refactor AppGroups tests with new mocks and axios helper</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9758/files#diff-cfe60bc2c1440c6b2a41eb2db9901f922afa6adcd09ae263d4444556a1d1ac12">+57/-26</a> </td> </tr> <tr> <td><strong>IndexList.spec.ts</strong><dd><code>Remove debug console.log from filter tests</code> </dd></td> <td><a href=""></a></td> </tr> <tr> <td><strong>handlers.ts</strong><dd><code>Add mock handlers for roles and folders endpoints</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9758/files#diff-fa72375a2848d474b311c07cf6aef7d6117b1f4d88f56a74c9207f39df72333c">+34/-0</a> </td> </tr> <tr> <td><strong>store.ts</strong><dd><code>Extend mock store with streams module and mutations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9758/files#diff-0f8dff694a1fcfaa42d432168e435b7a2aa122d075fedfd6e75e532aca3b2a73">+22/-6</a> </td> </tr> <tr> <td><strong>EnrichmentTableList.spec.js</strong><dd><code>Mock jstransform service in enrichment table tests</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9758/files#diff-04906397683e8d1e728ba01b5253671e3070e3105cb4665a1fb65f55a327114a">+7/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Configuration changes</strong></td><td><details><summary>2 files</summary><table> <tr> <td><strong>setupTests.ts</strong><dd><code>Enhance global test setup with console suppression</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9758/files#diff-3dbc91a809ee74223d448afcaa668720bb79675e5864984180890025ef687043">+194/-11</a></td> </tr> <tr> <td><strong>vitest.config.ts</strong><dd><code>Update Vitest config to suppress logs and warnings</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9758/files#diff-c3fc010b682e68f2ed0b7b1485b8aa513443a66d500903b8dff1d65908d02aae">+41/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Additional files</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>IndexList.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9758/files#diff-9d59de71d791f74c259dc20dab5d5e98d3652b583ff8d3bf0209a3ddb0ee58c9">+0/-1</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ |
||
|
|
c9f7ead7cc |
fix: Metrics revamp UI fixes (#9749)
### **PR Type** Enhancement ___ ### **Description** - Add `query_type` param for PromQL range/instant - Support streaming in `useStreamingSearch` & backend - Revamp query mode selector UI: SQL, builder, custom, PromQL - Enhance `convertPromQLData`: instant vectors & styling ___ ### Diagram Walkthrough ```mermaid flowchart LR UI["Query mode selector UI"] -- "sets query_type" --> Loader["Panel data loader"] Loader -- "adds query_type" --> Stream["Streaming search URL builder"] Stream -- "routes instant/range" --> Backend["HTTP handler"] Backend -- "streams or search" --> Converter["PromQL data converter"] Converter -- "apply transformations" --> Chart["Chart rendering"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>8 files</summary><table> <tr> <td><strong>usePanelDataLoader.ts</strong><dd><code>Add `query_type` field to PromQL payload</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9749/files#diff-5a42e9493a7bcd722b88e61fd38883c4f61001bc9cafa399f65f8eafda3aace9">+1/-0</a> </td> </tr> <tr> <td><strong>useDashboardPanel.ts</strong><dd><code>Toggle off VRL and skip resets in PromQL mode</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9749/files#diff-fbba1700750053b9eaf38ddd30dab84531bc44131c795ebb713811e4930cd7cb">+15/-0</a> </td> </tr> <tr> <td><strong>useStreamingSearch.ts</strong><dd><code>Route PromQL streaming URL by query_type</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9749/files#diff-8fce3e25a161cd458e734bd9b1f98aadefe3482da7b6529a5b1f4fa20ec115e2">+15/-2</a> </td> </tr> <tr> <td><strong>convertPromQLData.ts</strong><dd><code>Support instant vectors and series styling</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9749/files#diff-68d70ba6c622911d48cdb567940dc404a4a6468b86c6d24fb54e5f1d8aa5ca2a">+69/-10</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Add `use_streaming` flag to RequestQuery</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9749/files#diff-82a5de6222f38aad3e2cf41c251400cec789c6ab9fbb0d92cbb5cbaabb21c030">+2/-0</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Route to streaming or standard search</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9749/files#diff-0ad5729a1fbce00ff53076728c51822400c13af9918e1d8554f41be56d060fa0">+10/-2</a> </td> </tr> <tr> <td><strong>QueryTypeSelector.vue</strong><dd><code>Revamp query mode buttons: SQL, PromQL, builder, custom</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9749/files#diff-0dfd7075714453289e8f65d7f085ff9314148c02ca64fb591d0b8d8cbe1ef0b3">+212/-158</a></td> </tr> <tr> <td><strong>PromQLBuilderOptions.vue</strong><dd><code>Add query_type select (range/instant) in builder</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9749/files#diff-0118a096d9bd174a3fbe091f62af6f94d6fc6f51c10ad00a1c8660bd5a14f2e9">+62/-1</a> </td> </tr> </table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>11 files</summary><table> <tr> <td><strong>de.json</strong><dd><code>Add SQL, builder, custom translation keys</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9749/files#diff-78f24ecb2dbcfc38fdf3ec22b2559a5b40d236ea689d1c55f5d3e87168310264">+5/-1</a> </td> </tr> <tr> <td><strong>en.json</strong><dd><code>Update labels for SQL, builder, custom modes</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9749/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+5/-3</a> </td> </tr> <tr> <td><strong>es.json</strong><dd><code>Add new translation keys for query modes</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9749/files#diff-ac2a2167b8b973e3f776f9fe3b43bef4576470d8ad33f3d7cfaff6edff0e5778">+5/-1</a> </td> </tr> <tr> <td><strong>fr.json</strong><dd><code>Update locale with SQL and builder keys</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9749/files#diff-db80e762b88ddf183820c050cdc6b215e6b02b365b5e73f5152af46b0d26f1a2">+5/-1</a> </td> </tr> <tr> <td><strong>it.json</strong><dd><code>Add custom and builder translations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9749/files#diff-2de78074a5f887afddce60d694ead9322e6ab223eb70251c13819f3028bdc70d">+5/-1</a> </td> </tr> <tr> <td><strong>ja.json</strong><dd><code>Include SQL/builder/custom in Japanese locale</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9749/files#diff-092e49c5f9fbc1b539ab9c2866d108d0ce1d314022b4c294eb4611b285e7bbd3">+5/-1</a> </td> </tr> <tr> <td><strong>ko.json</strong><dd><code>Add SQL and builder keys in Korean</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9749/files#diff-50e27ca1b4825a5026f3a251bfcf79c97cab07cfade2ebd512d332453d707c48">+5/-1</a> </td> </tr> <tr> <td><strong>nl.json</strong><dd><code>Update Dutch locale for query modes</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9749/files#diff-a1706021687ae5d8a1c006c49eab3946174fecd895f9b70a89c2e76d97250906">+5/-1</a> </td> </tr> <tr> <td><strong>pt.json</strong><dd><code>Add Portuguese labels for SQL and builder</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9749/files#diff-38e804f64cb5e0e451849fc84e9b46e53c954a4a4263d51c18665ad45f4b4815">+5/-1</a> </td> </tr> <tr> <td><strong>tr.json</strong><dd><code>Update Turkish locale with new keys</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9749/files#diff-6f0f131e9e2591480c4c5d1eaffc72d02dc31cbd8d3f90d8f012f08cabac8818">+5/-1</a> </td> </tr> <tr> <td><strong>zh.json</strong><dd><code>Add SQL/custom/builder translations in Chinese</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9749/files#diff-8818055db58f83230aeea4ebfd4cec31d924e8c47b6f91298e356959ab25339e">+5/-1</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: ktx-abhay <abhay.padamani@kiara.tech> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |
||
|
|
8ba4abd716 |
fix: dashboard promql chart type issues (#9756)
### **PR Type** Enhancement, Tests ___ ### **Description** - Enhance chart tooltip overflow styling - Format heatmap x-axis as HH:MM:SS - Refactor tooltip formatter logic - Add legends button and dialog in dashboards ___ <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>12 files</summary><table> <tr> <td><strong>convertPromQLGaugeChart.ts</strong><dd><code>Add confine and scrollable CSS to gauge tooltip</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9756/files#diff-91706cfd8de0e4dd864bd1efe1fbd6dc220690963c278a8c3ac46aec51d974d6">+2/-0</a> </td> </tr> <tr> <td><strong>convertPromQLGeoChart.ts</strong><dd><code>Add confine and scrollable CSS to geo tooltip</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9756/files#diff-6eb91a67a23394322bc5577c8750a91c19b3e53f54c088afd2dcb017acccfb03">+2/-0</a> </td> </tr> <tr> <td><strong>convertPromQLMapsChart.ts</strong><dd><code>Add confine and scrollable CSS to maps tooltip</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9756/files#diff-8961325d132fe026290bbb3a1de46f058b68e41b4033b0549cdeac5d030a2094">+2/-0</a> </td> </tr> <tr> <td><strong>axisBuilder.ts</strong><dd><code>Add confine and overflow CSS in axis tooltip builder</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9756/files#diff-2806b132f6ff85d110f34517e7f9dc86566f784fe85593ca2ce5f51bf2cc68df">+6/-4</a> </td> </tr> <tr> <td><strong>convertPromQLHeatmapChart.ts</strong><dd><code>Format heatmap timestamps and style tooltip overflow</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9756/files#diff-be005732a54fbe2914c68c052407adde3c35b11a81b914ae602e322b4bd63302">+31/-13</a> </td> </tr> <tr> <td><strong>PreviewAlert.vue</strong><dd><code>Remove disabled legends button prop</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9756/files#diff-760f5f0a261910f17eb167f81802e8a52477b99a83d2d7fc1aeefc7185801795">+0/-1</a> </td> </tr> <tr> <td><strong>PanelContainer.vue</strong><dd><code>Enable legends button on panel renderer</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9756/files#diff-414737cba6064461f7026e0b016afcb9620bd5bb29c4708fc170dee789dbcd4d">+1/-0</a> </td> </tr> <tr> <td><strong>ConfigPanel.vue</strong><dd><code>Conditionally show legend input for non-maps</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9756/files#diff-c3a6e64dff02b58bb7cdc3f0668990b41ff41544b4c5e991bbcd989ad4bba3f8">+4/-2</a> </td> </tr> <tr> <td><strong>ViewPanel.vue</strong><dd><code>Add legends dialog and async popup component</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9756/files#diff-e7b26fbbfe7ae57f50377c0f002155df17109ea54708b0f134dd2005356b2930">+28/-0</a> </td> </tr> <tr> <td><strong>VisualizeLogsQuery.vue</strong><dd><code>Integrate legends dialog in logs visualization</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9756/files#diff-979b01d943d58c5d70faeeac5948b7f02f0b2392a12b84ef07ba7f7393ab0261">+29/-0</a> </td> </tr> <tr> <td><strong>Index.vue</strong><dd><code>Add legends button and dialog in metrics UI</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9756/files#diff-a6734928ea4dcb5244e90de5a16fe6f5cafa95ccf58430ac7b548a065daf3d61">+30/-0</a> </td> </tr> <tr> <td><strong>AddPanel.vue</strong><dd><code>Enable legends button in add-panel view</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9756/files#diff-c9632db1ad95af95aba10161bcbc7c5608318919f228637bdafae3f3a31267e8">+2/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>convertPromQLHeatmapChart.spec.ts</strong><dd><code>Update heatmap test to expect HH:MM:SS timestamps</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9756/files#diff-3aac0e61459f2fdff750789339a83ff07ff9d602d350abf12d598416140aec5f">+2/-1</a> </td> </tr> </table></details></td></tr><tr><td><strong>Configuration changes</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>PanelSchemaRenderer.vue</strong><dd><code>Default legends button prop to false</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9756/files#diff-e5376e7e77bf3aaf6590c2522d8c2dbffcc95a8006ae0d6dc0040a37825367d6">+1/-1</a> </td> </tr> </table></details></td></tr><tr><td><strong>Formatting</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>OverrideConfig.vue</strong><dd><code>Remove debug console.log statements</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9756/files#diff-54a6038f5c684ade27b88e3c6a134874b51501904441fa7849a532d10aa7d533">+0/-8</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: Kirtan Thakkar <kirtan@kiara.tech> |
||
|
|
50402cf46a |
fix: batch 3 package upgrade (#9755)
### **PR Type**
Enhancement
___
### **Description**
- Adjust Vitest config imports and coverage settings
- Refine coverage: add V8 provider and include patterns
- Bump Vitest, Vitest UI, and canvas mock versions
- Upgrade dotenv and remove unused type definitions
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["web/vitest.config.ts"] --> B["Import types corrected"]
A --> C["Coverage provider & include updated"]
D["web/package.json"] --> E["Bump Vitest & mocks versions"]
D --> F["Upgrade dotenv & remove types"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>vitest.config.ts</strong><dd><code>Adjust Vitest config
imports and coverage</code>
</dd></summary>
<hr>
web/vitest.config.ts
<ul><li>Replace type import from <code>vitest/config</code> to
<code>vite</code><br> <li> Remove <code>VitestUserConfig</code> cast for
mergeConfig<br> <li> Add coverage provider <code>v8</code><br> <li>
Update coverage include pattern to
<code>src/**/*.{js,ts,vue}</code></ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9755/files#diff-c3fc010b682e68f2ed0b7b1485b8aa513443a66d500903b8dff1d65908d02aae">+4/-3</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Dependencies</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>package.json</strong><dd><code>Upgrade devDependencies
versions</code>
</dd></summary>
<hr>
web/package.json
<ul><li>Bump <code>@vitest/coverage-v8</code> and
<code>@vitest/ui</code> to 4.x<br> <li> Upgrade <code>vitest</code> and
<code>vitest-canvas-mock</code> versions<br> <li> Update
<code>dotenv</code> to <code>^17.2.3</code><br> <li> Remove unused
<code>@types/dompurify</code></ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9755/files#diff-b861012a5dd72b8a9f3281b7cf09f5a779c98569d040b1bbc1db50f1b15e7cce">+5/-6</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
d71aab8d99 |
fix: minor and patch version upgrade (#9741)
Co-authored-by: Claude <noreply@anthropic.com> |
||
|
|
074d480b55 |
fix: add visibility toggle for show/hide PromQL queries while adding panel (#9743)
### **PR Type**
Enhancement
___
### **Description**
- Initialize `hiddenQueries` in panel layout
- Compute and use filtered data to hide queries
- Add visibility toggle icon in QueryEditor
- Watch `hiddenQueries` to re-render panel
___
### Diagram Walkthrough
```mermaid
flowchart LR
User["User clicks visibility icon"]
Toggle["toggleQueryVisibility function"]
PanelData["DashboardPanelData.layout.hiddenQueries"]
Hidden["Compute hiddenQueries (computed)"]
Filtered["Compute filteredData (computed)"]
Render["convertPanelData & render panel"]
User -- "click icon" --> Toggle
Toggle -- "update hiddenQueries" --> PanelData
PanelData -- "provide to composable" --> Hidden
Hidden -- "filter out hidden queries" --> Filtered
Filtered -- "use filteredData for rendering" --> Render
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>useDashboardPanel.ts</strong><dd><code>Initialize
hiddenQueries in dashboard layout</code>
</dd></summary>
<hr>
web/src/composables/useDashboardPanel.ts
<ul><li>Added <code>hiddenQueries</code> array to default layout<br>
<li> Enables tracking of hidden PromQL queries</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9743/files#diff-fbba1700750053b9eaf38ddd30dab84531bc44131c795ebb713811e4930cd7cb">+1/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>PanelSchemaRenderer.vue</strong><dd><code>Support
hiddenQueries in panel rendering</code>
</dd></summary>
<hr>
web/src/components/dashboards/PanelSchemaRenderer.vue
<ul><li>Injected <code>dashboardPanelDataPageKey</code> composable<br>
<li> Computed <code>hiddenQueries</code> & <code>filteredData</code><br>
<li> Replaced <code>data</code> with <code>filteredData</code> in
rendering and downloads<br> <li> Added watcher to re-convert on
<code>hiddenQueries</code> change</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9743/files#diff-e5376e7e77bf3aaf6590c2522d8c2dbffcc95a8006ae0d6dc0040a37825367d6">+69/-6</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>DashboardQueryEditor.vue</strong><dd><code>Add PromQL
query visibility toggles</code>
</dd></summary>
<hr>
web/src/components/dashboards/addPanel/DashboardQueryEditor.vue
<ul><li>Added visibility icon for each query tab<br> <li> Implemented
<code>toggleQueryVisibility</code> logic<br> <li> Added tooltip and
hover style for icon</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9743/files#diff-68bf1b319223d103f1b99e0b681764e4eb76942399397779c81c2cd18f6485ff">+40/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
62d7770222 |
fix: dashboard promql chart issue (#9733)
### **PR Type** Tests ___ ### **Description** - Add comprehensive PromQL chart converter tests - Cover table, bar, geo, metric chart conversions - Validate aggregation, mapping, and overrides - Ensure default behaviors and error handling ___ <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Tests</strong></td><td><details><summary>4 files</summary><table> <tr> <td><strong>convertPromQLTableChart.spec.ts</strong><dd><code>Add tests for TableConverter features</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9733/files#diff-d52e55c66a6477167350f8eb6f7c23f8fbd2a4f341ef4adb4400e56a42215c36">+1369/-0</a></td> </tr> <tr> <td><strong>convertPromQLBarChart.spec.ts</strong><dd><code>Add tests for BarConverter features</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9733/files#diff-64074278af1e252bdac8e0ba89a48556bb48d90f8ca49ec07816044d0fd1b0ed">+1167/-0</a></td> </tr> <tr> <td><strong>convertPromQLGeoChart.spec.ts</strong><dd><code>Add tests for GeoConverter functionality</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9733/files#diff-74f29901edd046272b70021c56c59dbc2c105f11595c85c84e739114ba919297">+1194/-0</a></td> </tr> <tr> <td><strong>convertPromQLMetricChart.spec.ts</strong><dd><code>Add tests for MetricConverter functionality</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9733/files#diff-8faf206e981fd29d3ccd022218612e0fca5ba0d1e0f8cc0c3be5288361fc49d3">+779/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Additional files</strong></td><td><details><summary>19 files</summary><table> <tr> <td><strong>PROMQL_CHART_EXTENSION_DESIGN_SPEC.md</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9733/files#diff-c28f23229dbc72f164b9986421cd37311a9df8b2c0fe63ad87e8c518a8b61163">+0/-2126</a></td> </tr> <tr> <td><strong>PreviewAlert.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9733/files#diff-760f5f0a261910f17eb167f81802e8a52477b99a83d2d7fc1aeefc7185801795">+1/-0</a> </td> </tr> <tr> <td><strong>PanelSchemaRenderer.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9733/files#diff-e5376e7e77bf3aaf6590c2522d8c2dbffcc95a8006ae0d6dc0040a37825367d6">+16/-1</a> </td> </tr> <tr> <td><strong>CommonAutoComplete.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9733/files#diff-35f59b61336a5ba3f5933f6803e8e2cc84ced59c3f0bea25f370bb2e3d21849b">+9/-1</a> </td> </tr> <tr> <td><strong>ConfigPanel.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9733/files#diff-c3a6e64dff02b58bb7cdc3f0668990b41ff41544b4c5e991bbcd989ad4bba3f8">+1/-0</a> </td> </tr> <tr> <td><strong>OverrideConfig.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9733/files#diff-54a6038f5c684ade27b88e3c6a134874b51501904441fa7849a532d10aa7d533">+83/-38</a> </td> </tr> <tr> <td><strong>PromQLChartConfig.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9733/files#diff-305fcbfc89618c91ca0ee6c8c52cfa596169ca2dced6778eea6cd3c89f071573">+4/-6</a> </td> </tr> <tr> <td><strong>PromQLTableChart.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9733/files#diff-9c39051461b6f7deae94e8847f91443c4c68541f52137a423bb54b6ab5cd3317">+8/-8</a> </td> </tr> <tr> <td><strong>TableRenderer.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9733/files#diff-794706ea9da3a70012a0327c0464f9fd16802f78ece26055fe951716c2d73d59">+3/-1</a> </td> </tr> <tr> <td><strong>convertPromQLBarChart.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9733/files#diff-15ade277873baedc98e922520bed7e9d9095ecb3ab24ea69f342cdae6c1e7458">+8/-0</a> </td> </tr> <tr> <td><strong>convertPromQLChartData.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9733/files#diff-49b51f790650ffbf1b0921ff6b69971191180a5397e690f6547be12b4062d1e7">+747/-0</a> </td> </tr> <tr> <td><strong>convertPromQLGaugeChart.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9733/files#diff-ec3d6a800bb549faddeb575b64d681b90e6eb600219e1982619fd30c86d919a4">+697/-0</a> </td> </tr> <tr> <td><strong>convertPromQLHeatmapChart.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9733/files#diff-3aac0e61459f2fdff750789339a83ff07ff9d602d350abf12d598416140aec5f">+999/-0</a> </td> </tr> <tr> <td><strong>convertPromQLHeatmapChart.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9733/files#diff-be005732a54fbe2914c68c052407adde3c35b11a81b914ae602e322b4bd63302">+61/-69</a> </td> </tr> <tr> <td><strong>convertPromQLMapsChart.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9733/files#diff-c779976a0e1fc9b0296b1fde9fffdb91bfcb02dfbe528d7ca400b4ee4fed7370">+1086/-0</a></td> </tr> <tr> <td><strong>convertPromQLPieChart.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9733/files#diff-0e0734eb6264d4f70f75a6fd31b0037850df029515c34cc554a86f34efdd982d">+945/-0</a> </td> </tr> <tr> <td><strong>convertPromQLTableChart.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9733/files#diff-94123beacdf1e10ef812b4a6fda870004aa30f65eeb9e5ef6662f907dc50092d">+20/-4</a> </td> </tr> <tr> <td><strong>convertPromQLTimeSeriesChart.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9733/files#diff-6f4b63645182c6b41f416433facb1eec4588e224d5b1825f1499b31f99ee393f">+732/-0</a> </td> </tr> <tr> <td><strong>axisBuilder.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9733/files#diff-50a65f282f4829c9e139867c3b6f7d066a5c3f062333b00a66d43265531faac7">+867/-0</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ |
||
|
|
c015aa89aa |
fix: added org identifiers (#9735)
### **PR Type**
Enhancement
___
### **Description**
- Add org_identifier in group edit queries
- Include org_identifier on group cancel redirect
- Add org_identifier in role edit & cancel
- Attach org_identifier to report creation navigation
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>AppGroups.vue</strong><dd><code>Include org_identifier
in editGroup navigation</code>
</dd></summary>
<hr>
web/src/components/iam/groups/AppGroups.vue
- Included org_identifier in editGroup navigation
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9735/files#diff-402fb2a5338e60fdc3da489f4d50b5cf52f06b4e884a6fe7b82441c9fa5ea22c">+3/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>EditGroup.vue</strong><dd><code>Include org_identifier
in group cancel redirect</code>
</dd></summary>
<hr>
web/src/components/iam/groups/EditGroup.vue
- Added org_identifier in cancelEditGroup redirect
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9735/files#diff-6be040722d1492644adbf65250d44d28be37614d34600a73f74c816138727a40">+8/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>AppRoles.vue</strong><dd><code>Add org_identifier to
editRole navigation</code>
</dd></summary>
<hr>
web/src/components/iam/roles/AppRoles.vue
- Included org_identifier in editRole navigation
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9735/files#diff-191634ef09436199f91f442968110a01f54ae46b5ceee67476f52613ad796db4">+3/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>EditRole.vue</strong><dd><code>Include org_identifier
in permissions cancel redirect</code>
</dd></summary>
<hr>
web/src/components/iam/roles/EditRole.vue
- Added org_identifier in cancelPermissionsUpdate redirect
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9735/files#diff-263b6bc7d29fdf8358c8437cd637f1350aa3733cc2706eae8ff00028686cc0f5">+7/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>ReportList.vue</strong><dd><code>Add org_identifier to
report creation navigation</code>
</dd></summary>
<hr>
web/src/components/reports/ReportList.vue
- Appended org_identifier to createNewReport navigation
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9735/files#diff-f7d700f7e67fbaba3c58ab5d2c614925db743101828214445ce9dae35dc29067">+1/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
bbbbdc85c2 |
fix: datetimepicker scroll issue (#9728)
### **User description**
This PR fixes the scroll issue in date time picker
___
### **PR Type**
Bug fix
___
### **Description**
- Adjust row padding in DateTime component
- Update Q-Input props for borderless display
- Revise CSS margins and field heights
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Formatting</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>DateTime.vue</strong><dd><code>Update DateTime
component styling</code>
</dd></summary>
<hr>
web/src/components/DateTime.vue
<ul><li>Change row class padding from <code>q-px-md</code> to
<code>q-pl-md</code><br> <li> Replace <code>filled</code> with
<code>borderless</code> and add <code>hide-bottom-space</code> on
inputs<br> <li> Add margins and set minimum height in
<code>.startEndTime</code><br> <li> Add margins to
<code>.timezone-select</code> section</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9728/files#diff-c06c96ba750be6fc82f517a53ba809efff8aa619aba203b871d4d2aeb7f64f60">+10/-5</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
c61975bbc8 |
fix: incident list changes (#9723)
### **PR Type**
Enhancement
___
### **Description**
- Add view-mode toggle between Alerts and Incidents
- Conditionally render alerts/incidents views with search
- Revamp IncidentList: server-side pagination and actions
- Support keyword search in incidents API service
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["View Mode Toggle"] --> B["Alerts View"]
A --> C["Incidents View"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>incidents.ts</strong><dd><code>Support keyword search
in incidents API</code>
</dd></summary>
<hr>
web/src/services/incidents.ts
<ul><li>Add optional <code>keyword</code> parameter to <code>list</code>
method<br> <li> Append <code>&keyword=encodeURIComponent(keyword)</code>
when provided</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9723/files#diff-ff3182e820c3a01b1ba243b2bccc18f5d9e2dfffc0ec3431742bf74ec499f05c">+5/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>AlertList.vue</strong><dd><code>Add alerts/incidents
view toggle and UI</code>
</dd></summary>
<hr>
web/src/components/alerts/AlertList.vue
<ul><li>Add view-mode toggle UI and dynamic page title<br> <li>
Conditionally render Alerts view (folders, tabs, search) and Incidents
<br>view<br> <li> Manage <code>viewMode</code> state and sync with URL
query parameters<br> <li> Introduce incident search input and remove
incidents tab in alerts<br> <li> Add CSS for
<code>.view-mode-tabs</code>, <code>.page-title</code>, and dark
mode</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9723/files#diff-be3e41b823e163b226ffc270d95cc4981e59c600851e4e0d10ee5e4ee994ac8e">+183/-17</a></td>
</tr>
<tr>
<td>
<details>
<summary><strong>IncidentList.vue</strong><dd><code>Revamp IncidentList
component UI and logic</code>
</dd></summary>
<hr>
web/src/components/alerts/IncidentList.vue
<ul><li>Rewrite incidents table with new columns and clickable rows<br>
<li> Implement server-side pagination, keyword search, and loading
state<br> <li> Add action buttons: acknowledge, resolve, reopen
incidents<br> <li> Integrate <code>NoData</code> component for empty
state<br> <li> Remove client-side filters in favor of server
support</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9723/files#diff-953ad015996758a8c86e489499cd3b0a614501b99b0c9c5c242a299e34c24ff2">+174/-258</a></td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
488a6915be |
feat: dashboard promql support for other charts (#9696)
### **User description** Design at : dashboards ### **PR Type** Enhancement ___ ### **Description** - Introduce modular PromQL chart conversion system - Add data processor and shared utilities - Implement converters for pie, table, heatmap, etc. - Update UI to configure new PromQL chart types ___ ### Diagram Walkthrough ```mermaid flowchart LR A["PromQL Responses"] -- "processPromQLData" --> B["Processed Data"] B -- "convertPromQLChartData" --> C["Converter Registry"] C -- "select converter" --> D["Chart-specific Converter"] D -- "output options & extras" --> E["ECharts Options"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>20 files</summary><table> <tr> <td><strong>dataProcessor.ts</strong><dd><code>Common data preprocessing for PromQL responses</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-363d102e4c9cc1beceb56816113bae703cde4c104e915770f918b16688c602d1">+248/-0</a> </td> </tr> <tr> <td><strong>convertPromQLChartData.ts</strong><dd><code>Main router for PromQL chart conversion</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-7a96651b77954f37d362daf6441ac4f8caff47f0827941ef4618a25774490642">+225/-0</a> </td> </tr> <tr> <td><strong>convertPromQLTimeSeriesChart.ts</strong><dd><code>Add time-series chart converter class</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-c04ec8aaa18dbda0d66caba0a05d06529872dbf7e0628a4ee6ffca56210b45e4">+254/-0</a> </td> </tr> <tr> <td><strong>convertPromQLPieChart.ts</strong><dd><code>Implement pie and donut chart converter</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-9f433d0f746e3c8f07eb27be45b17dad91518720833c0f58b86c85d491eadfeb">+119/-0</a> </td> </tr> <tr> <td><strong>convertPromQLTableChart.ts</strong><dd><code>Implement table chart converter logic</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-94123beacdf1e10ef812b4a6fda870004aa30f65eeb9e5ef6662f907dc50092d">+192/-0</a> </td> </tr> <tr> <td><strong>convertPromQLGaugeChart.ts</strong><dd><code>Add gauge chart converter support</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-91706cfd8de0e4dd864bd1efe1fbd6dc220690963c278a8c3ac46aec51d974d6">+205/-0</a> </td> </tr> <tr> <td><strong>convertPromQLMetricChart.ts</strong><dd><code>Implement single-value metric converter</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-d99617406e007e2185e0552465f456d5f60646e893fa6c45235cf12d0ca055b6">+97/-0</a> </td> </tr> <tr> <td><strong>convertPromQLHeatmapChart.ts</strong><dd><code>Add heatmap chart converter</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-be005732a54fbe2914c68c052407adde3c35b11a81b914ae602e322b4bd63302">+120/-0</a> </td> </tr> <tr> <td><strong>convertPromQLBarChart.ts</strong><dd><code>Support bar and horizon-bar converters</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-15ade277873baedc98e922520bed7e9d9095ecb3ab24ea69f342cdae6c1e7458">+133/-0</a> </td> </tr> <tr> <td><strong>convertPromQLGeoChart.ts</strong><dd><code>Add geographic map chart converter</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-6eb91a67a23394322bc5577c8750a91c19b3e53f54c088afd2dcb017acccfb03">+147/-0</a> </td> </tr> <tr> <td><strong>convertPromQLSankeyChart.ts</strong><dd><code>Implement Sankey diagram converter</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-4790b82ec6453ffad790f22d8f2c2a9747db1b1cf5b397c7ef4e53991a5301dc">+137/-0</a> </td> </tr> <tr> <td><strong>types.ts</strong><dd><code>Define PromQL types and conversion interfaces</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-395705e34877a642f353dcdd90733ac4a9e1a2188304a79dd2b5bb322fde77a8">+138/-0</a> </td> </tr> <tr> <td><strong>axisBuilder.ts</strong><dd><code>Build axis configurations for ECharts</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-2806b132f6ff85d110f34517e7f9dc86566f784fe85593ca2ce5f51bf2cc68df">+162/-0</a> </td> </tr> <tr> <td><strong>legendBuilder.ts</strong><dd><code>Add legend name templating utility</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-e66fbf5127520890aa3e3e8fa82362dc69aa84acd3ba6b639814d250787eb47f">+69/-0</a> </td> </tr> <tr> <td><strong>convertPromQLData.ts</strong><dd><code>Integrate new modular PromQL converter</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-68d70ba6c622911d48cdb567940dc404a4a6468b86c6d24fb54e5f1d8aa5ca2a">+72/-0</a> </td> </tr> <tr> <td><strong>convertPanelData.ts</strong><dd><code>Route table panel by promql queryType</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-15264039050c04ff085ea42722654dfef0ef537b7bef1e9cea59e1c1bb0ce748">+21/-4</a> </td> </tr> <tr> <td><strong>PromQLChartConfig.vue</strong><dd><code>Add UI config for PromQL chart types</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-305fcbfc89618c91ca0ee6c8c52cfa596169ca2dced6778eea6cd3c89f071573">+571/-0</a> </td> </tr> <tr> <td><strong>ChartSelection.vue</strong><dd><code>Include new chart types in selection</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-384ce178717731e2c85f1312f12a54b42ceabd0b86f7e2befb0e421ef568a6a3">+9/-0</a> </td> </tr> <tr> <td><strong>PanelSchemaRenderer.vue</strong><dd><code>Compute and log tableRendererData for PromQL</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-e5376e7e77bf3aaf6590c2522d8c2dbffcc95a8006ae0d6dc0040a37825367d6">+44/-5</a> </td> </tr> <tr> <td><strong>TableRenderer.vue</strong><dd><code>Add debug logging for table data changes</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-794706ea9da3a70012a0327c0464f9fd16802f78ece26055fe951716c2d73d59">+16/-1</a> </td> </tr> </table></details></td></tr><tr><td><strong>Additional files</strong></td><td><details><summary>6 files</summary><table> <tr> <td><strong>PROMQL_CHART_EXTENSION_DESIGN_SPEC.md</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-c28f23229dbc72f164b9986421cd37311a9df8b2c0fe63ad87e8c518a8b61163">+1905/-0</a></td> </tr> <tr> <td><strong>ConfigPanel.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-c3a6e64dff02b58bb7cdc3f0668990b41ff41544b4c5e991bbcd989ad4bba3f8">+10/-0</a> </td> </tr> <tr> <td><strong>PromQLTableChart.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-9c39051461b6f7deae94e8847f91443c4c68541f52137a423bb54b6ab5cd3317">+263/-0</a> </td> </tr> <tr> <td><strong>en.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+16/-0</a> </td> </tr> <tr> <td><strong>convertDataIntoUnitValue.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-14c6fe442ef231566ec411f9e0262cdd24ec912fc67b9154eec743282ab7211a">+9/-0</a> </td> </tr> <tr> <td><strong>index.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-bb77f007e906b4ef04c9a4d73dd94adc0e9fb9910a48b872d4587ab37cf3a51e">+65/-0</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ ___ ### **PR Type** Enhancement, Tests ___ ### **Description** - Add PromQL label & operation schema in backend - Define PromQL operations for query builder - Introduce country code mapping util for map charts - Extend useDashboardPanel with PromQL label fetching - Update TableRenderer and add queryModeller tests ___ <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Configuration changes</strong></td><td><details><summary>2 files</summary><table> <tr> <td><strong>mod.rs</strong><dd><code>Add PromQL filter & operation schema to dashboard meta</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-cbf3fe971525ba58892400391dfd7dac7e43d6049d6b4f5a9840ad104ebc5e08">+52/-0</a> </td> </tr> <tr> <td><strong>convertMapsData.ts</strong><dd><code>Replace inline country list with shared mapper</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-5f61730637542ed11dfb6ef6e4bc72480289b16636243c98d1b628a97cbdfa55">+1/-227</a> </td> </tr> </table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>3 files</summary><table> <tr> <td><strong>index.ts</strong><dd><code>Define full set of PromQL operation definitions</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-962f834d1d04c23122d5226deb40f08aa67f41937d70105f2d644b8c15d3dceb">+832/-0</a> </td> </tr> <tr> <td><strong>countryMappings.ts</strong><dd><code>Add ISO country code to name mapping util</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-0c9975df0349e4b2c425b5568f9559537dc40052805c9b4475b9f73bd8752798">+255/-0</a> </td> </tr> <tr> <td><strong>useDashboardPanel.ts</strong><dd><code>Extend dashboard panel composable for PromQL support</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-fbba1700750053b9eaf38ddd30dab84531bc44131c795ebb713811e4930cd7cb">+144/-29</a></td> </tr> </table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>2 files</summary><table> <tr> <td><strong>TableRenderer.spec.ts</strong><dd><code>Reformat and extend table renderer unit tests</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-550a0a669838c47473442a7d37407fead8b7cb2a05121880dd2c0522022c8c3f">+127/-91</a></td> </tr> <tr> <td><strong>queryModeller.spec.ts</strong><dd><code>Add comprehensive PromQL queryModeller tests</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-1037f836d59596dcc1c3e65b19b5a740e2dfdba9fa813feb8044bc139b1d30e0">+624/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Additional files</strong></td><td><details><summary>63 files</summary><table> <tr> <td><strong>PROMQL_CHART_EXTENSION_DESIGN_SPEC.md</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-c28f23229dbc72f164b9986421cd37311a9df8b2c0fe63ad87e8c518a8b61163">+2126/-0</a></td> </tr> <tr> <td><strong>PanelSchemaRenderer.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-e5376e7e77bf3aaf6590c2522d8c2dbffcc95a8006ae0d6dc0040a37825367d6">+45/-2</a> </td> </tr> <tr> <td><strong>ChartSelection.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-384ce178717731e2c85f1312f12a54b42ceabd0b86f7e2befb0e421ef568a6a3">+9/-0</a> </td> </tr> <tr> <td><strong>ConfigPanel.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-c3a6e64dff02b58bb7cdc3f0668990b41ff41544b4c5e991bbcd989ad4bba3f8">+119/-49</a></td> </tr> <tr> <td><strong>DashboardQueryBuilder.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-a4f9abbeaad1156ab6ba5740d59ccb869d6a9172ca1c64b89cff78f3d7783409">+123/-0</a> </td> </tr> <tr> <td><strong>DashboardQueryEditor.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-68bf1b319223d103f1b99e0b681764e4eb76942399397779c81c2cd18f6485ff">+29/-14</a> </td> </tr> <tr> <td><strong>FieldList.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-a071c06e3e26629cb4ae4751450acc39c61fa49b07a1cc4be3711697829668d4">+7/-0</a> </td> </tr> <tr> <td><strong>OverrideConfig.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-e05709bd1fededda3d3ed90a47d9fddb8ae171e87c7f25d07ecca1e6a8ab33ee">+19/-3</a> </td> </tr> <tr> <td><strong>OverrideConfig.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-54a6038f5c684ade27b88e3c6a134874b51501904441fa7849a532d10aa7d533">+45/-4</a> </td> </tr> <tr> <td><strong>PromQLChartConfig.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-305fcbfc89618c91ca0ee6c8c52cfa596169ca2dced6778eea6cd3c89f071573">+879/-0</a> </td> </tr> <tr> <td><strong>QueryTypeSelector.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-3094340ad57af51f1bcbad3b63a8ab860a46905ab79997289b89b601553934fd">+1/-1</a> </td> </tr> <tr> <td><strong>QueryTypeSelector.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-0dfd7075714453289e8f65d7f085ff9314148c02ca64fb591d0b8d8cbe1ef0b3">+63/-18</a> </td> </tr> <tr> <td><strong>PromQLTableChart.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-9c39051461b6f7deae94e8847f91443c4c68541f52137a423bb54b6ab5cd3317">+307/-0</a> </td> </tr> <tr> <td><strong>TableRenderer.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-794706ea9da3a70012a0327c0464f9fd16802f78ece26055fe951716c2d73d59">+24/-7</a> </td> </tr> <tr> <td><strong>LabelFilterEditor.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-a7753ad2d6fe4a1878d454dff2b4cb353afca8eabfdc7e131104fa8d2eaf8ef1">+354/-0</a> </td> </tr> <tr> <td><strong>LabelFilterEditor.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-6f8f873d354390719997b0a63051445658997aafab2d36b268e20a1c07b2f845">+327/-0</a> </td> </tr> <tr> <td><strong>MetricSelector.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-2129c149ce2ebddb6a9a17a8a63104057cd138ad6656ce0ccef7e56d25ba1a83">+488/-0</a> </td> </tr> <tr> <td><strong>MetricSelector.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-8c2adc3e91f44534029c70c61cab50e193882fd1d11bb6c75e3a7f0641101238">+172/-0</a> </td> </tr> <tr> <td><strong>OperationsList.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-21e51d0ccdf0744ac3702582d77f4342fc0af0bd916cd953d53be24b9c4dcd13">+448/-0</a> </td> </tr> <tr> <td><strong>OperationsList.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-0aeab8d5b16334d3a11d9071ed3b799e866fa0ba2e9b9318f39c3b0c92b5f7e8">+361/-0</a> </td> </tr> <tr> <td><strong>PromQLBuilderOptions.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-0f591de06f0b72c4035885b0c11234c01f8920ea9e6f98336202f7a51e46db58">+462/-0</a> </td> </tr> <tr> <td><strong>PromQLBuilderOptions.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-0118a096d9bd174a3fbe091f62af6f94d6fc6f51c10ad00a1c8660bd5a14f2e9">+236/-0</a> </td> </tr> <tr> <td><strong>queryModeller.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-677776e7803f48b130926c3929a0e9e764b0a57aa4501d0ff5e25123f7b712e1">+246/-0</a> </td> </tr> <tr> <td><strong>index.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-94d2a6c3a1e12028714c8f9e287f562f92d911d04ea1bf375d8535be5d7ab1e8">+197/-0</a> </td> </tr> <tr> <td><strong>usePanelDataLoader.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-5a42e9493a7bcd722b88e61fd38883c4f61001bc9cafa399f65f8eafda3aace9">+2/-1</a> </td> </tr> <tr> <td><strong>router.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-a1827956e5a817edc7efb5f4516e7cc4d453e15ea9e9d970aafb8360b09fc78e">+13/-0</a> </td> </tr> <tr> <td><strong>de.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-78f24ecb2dbcfc38fdf3ec22b2559a5b40d236ea689d1c55f5d3e87168310264">+29/-2</a> </td> </tr> <tr> <td><strong>en.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+29/-2</a> </td> </tr> <tr> <td><strong>es.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-ac2a2167b8b973e3f776f9fe3b43bef4576470d8ad33f3d7cfaff6edff0e5778">+29/-2</a> </td> </tr> <tr> <td><strong>fr.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-db80e762b88ddf183820c050cdc6b215e6b02b365b5e73f5152af46b0d26f1a2">+29/-2</a> </td> </tr> <tr> <td><strong>it.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-2de78074a5f887afddce60d694ead9322e6ab223eb70251c13819f3028bdc70d">+29/-2</a> </td> </tr> <tr> <td><strong>ja.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-092e49c5f9fbc1b539ab9c2866d108d0ce1d314022b4c294eb4611b285e7bbd3">+29/-2</a> </td> </tr> <tr> <td><strong>ko.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-50e27ca1b4825a5026f3a251bfcf79c97cab07cfade2ebd512d332453d707c48">+29/-2</a> </td> </tr> <tr> <td><strong>nl.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-a1706021687ae5d8a1c006c49eab3946174fecd895f9b70a89c2e76d97250906">+29/-2</a> </td> </tr> <tr> <td><strong>pt.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-38e804f64cb5e0e451849fc84e9b46e53c954a4a4263d51c18665ad45f4b4815">+29/-2</a> </td> </tr> <tr> <td><strong>tr.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-6f0f131e9e2591480c4c5d1eaffc72d02dc31cbd8d3f90d8f012f08cabac8818">+29/-2</a> </td> </tr> <tr> <td><strong>zh.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-8818055db58f83230aeea4ebfd4cec31d924e8c47b6f91298e356959ab25339e">+29/-2</a> </td> </tr> <tr> <td><strong>Index.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-a6734928ea4dcb5244e90de5a16fe6f5cafa95ccf58430ac7b548a065daf3d61">+1/-1</a> </td> </tr> <tr> <td><strong>convertDataIntoUnitValue.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-e9d8a984ed78af13e4d4424c605a3a55fe6ad2a3f7e403fad156ce17ffdc3bdd">+0/-1</a> </td> </tr> <tr> <td><strong>convertDataIntoUnitValue.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-14c6fe442ef231566ec411f9e0262cdd24ec912fc67b9154eec743282ab7211a">+11/-2</a> </td> </tr> <tr> <td><strong>convertPanelData.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-15264039050c04ff085ea42722654dfef0ef537b7bef1e9cea59e1c1bb0ce748">+63/-12</a> </td> </tr> <tr> <td><strong>convertPromQLData.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-68d70ba6c622911d48cdb567940dc404a4a6468b86c6d24fb54e5f1d8aa5ca2a">+49/-0</a> </td> </tr> <tr> <td><strong>convertPromQLBarChart.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-15ade277873baedc98e922520bed7e9d9095ecb3ab24ea69f342cdae6c1e7458">+241/-0</a> </td> </tr> <tr> <td><strong>convertPromQLChartData.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-7a96651b77954f37d362daf6441ac4f8caff47f0827941ef4618a25774490642">+247/-0</a> </td> </tr> <tr> <td><strong>convertPromQLGaugeChart.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-91706cfd8de0e4dd864bd1efe1fbd6dc220690963c278a8c3ac46aec51d974d6">+206/-0</a> </td> </tr> <tr> <td><strong>convertPromQLGeoChart.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-6eb91a67a23394322bc5577c8750a91c19b3e53f54c088afd2dcb017acccfb03">+208/-0</a> </td> </tr> <tr> <td><strong>convertPromQLHeatmapChart.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-be005732a54fbe2914c68c052407adde3c35b11a81b914ae602e322b4bd63302">+168/-0</a> </td> </tr> <tr> <td><strong>convertPromQLMapsChart.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-8961325d132fe026290bbb3a1de46f058b68e41b4033b0549cdeac5d030a2094">+171/-0</a> </td> </tr> <tr> <td><strong>convertPromQLMetricChart.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-d99617406e007e2185e0552465f456d5f60646e893fa6c45235cf12d0ca055b6">+98/-0</a> </td> </tr> <tr> <td><strong>convertPromQLPieChart.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-9f433d0f746e3c8f07eb27be45b17dad91518720833c0f58b86c85d491eadfeb">+177/-0</a> </td> </tr> <tr> <td><strong>convertPromQLTableChart.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-94123beacdf1e10ef812b4a6fda870004aa30f65eeb9e5ef6662f907dc50092d">+453/-0</a> </td> </tr> <tr> <td><strong>convertPromQLTimeSeriesChart.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-c04ec8aaa18dbda0d66caba0a05d06529872dbf7e0628a4ee6ffca56210b45e4">+241/-0</a> </td> </tr> <tr> <td><strong>index.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-bb77f007e906b4ef04c9a4d73dd94adc0e9fb9910a48b872d4587ab37cf3a51e">+65/-0</a> </td> </tr> <tr> <td><strong>axisBuilder.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-2806b132f6ff85d110f34517e7f9dc86566f784fe85593ca2ce5f51bf2cc68df">+292/-0</a> </td> </tr> <tr> <td><strong>dataProcessor.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-ae46ef8d3c0c85add59609034907f8788d5a41964f492d1c0638f805566d9822">+632/-0</a> </td> </tr> <tr> <td><strong>dataProcessor.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-363d102e4c9cc1beceb56816113bae703cde4c104e915770f918b16688c602d1">+245/-0</a> </td> </tr> <tr> <td><strong>gridBuilder.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-0c4241a8c8473bb69f9eeeefcfdde6fd71c12556c54b73567407136f22825eb3">+690/-0</a> </td> </tr> <tr> <td><strong>gridBuilder.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-1b8f609ff2cd6a36ba25f8bf58f8977c16480da0f92ac1071a06c4751e6c3a4d">+244/-0</a> </td> </tr> <tr> <td><strong>legendBuilder.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-f3f0d6e2c05b75076a68df34e18bb53b2f73d22762205c8013a4fd101688f838">+257/-0</a> </td> </tr> <tr> <td><strong>legendBuilder.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-e66fbf5127520890aa3e3e8fa82362dc69aa84acd3ba6b639814d250787eb47f">+69/-0</a> </td> </tr> <tr> <td><strong>types.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-5af785b1b9d835b13ec80fff7372a9dedb3f5f7612e86afa926f1d8735cdc7fc">+535/-0</a> </td> </tr> <tr> <td><strong>types.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-395705e34877a642f353dcdd90733ac4a9e1a2188304a79dd2b5bb322fde77a8">+148/-0</a> </td> </tr> <tr> <td><strong>QueryBuilder.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9696/files#diff-4d2c58124ad5c6c376c0e07e5ca8f16c1c0f0f0859baf55c8c73b1350c6e8123">+199/-0</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Kirtan Thakkar <kirtan@kiara.tech> Co-authored-by: omkark06 <omkar@zinclabs.io> Co-authored-by: ktx-abhay <abhay.padamani@kiara.tech> |
||
|
|
384aa5ba62 |
fix: issue 9355 (#9706)
### **User description** This PR fixes the issue in #9355 Alert doesn't get triggered if the field seleceted in a non uds field ___ ### **PR Type** Bug fix, Enhancement ___ ### **Description** - Enforce UDS fields in alerts and pipelines UIs - Filter stream fields by defined_schema_fields - Always include timestamp and _all fields - Add `validate` flag to search API calls - Backend search utils: error on non-UDS fields - New alert UI validation: `validateConditionsAgainstUDS` ___ ### Diagram Walkthrough ```mermaid flowchart LR A["Select stream"] --> B["Fetch schema & settings"] B -- "Apply UDS filter" --> C["Available fields list"] C --> D["Build alert conditions"] D --> E["validateConditionsAgainstUDS"] E -- valid --> F["Submit alert"] E -- invalid --> G["Show error notification"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Bug fix</strong></td><td><details><summary>4 files</summary><table> <tr> <td><strong>utils.rs</strong><dd><code>Return error on non-UDS search fields</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9706/files#diff-96bb9f4a8f547c821f26c957e8505d0437095b08d2b36687531f71565d287bd6">+1/-2</a> </td> </tr> <tr> <td><strong>alertValidation.ts</strong><dd><code>Always pass `validate:true` in alert SQL validation</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9706/files#diff-3164a4a58c1865cfcbbba084ac339664c99564545be4d57504dd406d59d8ad4a">+1/-0</a> </td> </tr> <tr> <td><strong>QueryEditorDialog.vue</strong><dd><code>Include `validate:true` in query trigger search</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9706/files#diff-6c524f609ed374aa29e075e8d046ac06be0edda7bfa1914b0a2bbc24d255e5eb">+1/-0</a> </td> </tr> <tr> <td><strong>Query.vue</strong><dd><code>Deep copy routing data and validate SQL</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9706/files#diff-6247cbd506bcf963372f2e429507fc579af95f003df246889b478da11326a657">+20/-10</a> </td> </tr> </table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>5 files</summary><table> <tr> <td><strong>search.ts</strong><dd><code>Add `validate` flag to search URL builder</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9706/files#diff-885ab872dbc6e7b20264df815e3ef4727f0abc86ce90d2fb47e4aff572814c75">+4/-0</a> </td> </tr> <tr> <td><strong>AddAlert.vue</strong><dd><code>Filter and validate conditions against UDS</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9706/files#diff-7b426bb23e9ed0250c3877d6d97b099c42b2d20e22ddf4459915381b2233a0a8">+187/-0</a> </td> </tr> <tr> <td><strong>FilterCondition.vue</strong><dd><code>Add column-exists validation rule per module</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9706/files#diff-53916e2402d0ee094fcd63f0ec0c99ceffde4fa042f9001203d2e2e1b7709e10">+28/-1</a> </td> </tr> <tr> <td><strong>FilterGroup.vue</strong><dd><code>Propagate `module` prop to nested filter groups</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9706/files#diff-8d5a73bea3aa0b5c86d48cda4a61ee3e30f27797ac2a5add1ee8bd66c75bef23">+8/-0</a> </td> </tr> <tr> <td><strong>ScheduledPipeline.vue</strong><dd><code>Adjust submit handler and add UDS filter</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9706/files#diff-63d8f838bb880356e7804b4a57fd9223d4f2c189de7aadc7cf33cba723b29aaf">+4/-4</a> </td> </tr> </table></details></td></tr><tr><td><strong>Configuration changes</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>QueryConfig.vue</strong><dd><code>Tag QueryConfig with `module="alerts"`</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9706/files#diff-7273c8de49b8ebf706d7bee5b275c75818c0493f41c73f00c55efe667cbd00d9">+1/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Additional files</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>Condition.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9706/files#diff-4c3e624233c9e0355c7ded3b26dc74971b867be63e24f92a5e639284f60639dd">+37/-1</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: loaki07 <rustyloaki@gmail.com> Co-authored-by: Shrinath Rao <shnath@openobserve.ai> |
||
|
|
e40938a08c |
feat: enrichment table file url support (#9697)
### **PR Type**
Enhancement
Design at : enrichment-file-url
___
### **Description**
- Async URL-based enrichment table processing
- Event-driven MPSC, streaming CSV, batching
- Retry with backoff, status updates
- Database and ORM additions
- `enrichment_table_urls` table and migration
- HTTP API endpoints
- POST `/url` import and GET status
- Frontend enhancements
- Tabs, status icons, retry button
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["HTTP POST /{org}/enrichment_tables/{table}/url"] --> B["DB: save_url_job"]
B --> C["trigger_url_job_processing()"]
C --> D["MPSC Channel"]
D --> E["process_url_jobs()"]
E --> F["process_single_url_job()"]
F --> G["validate_url() & fetch_and_process_batches()"]
G --> H["parse_csv_chunk() & save_enrichment_batch()"]
H --> I["save_url_job() update status"]
I --> J["notify_update()"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>14
files</summary><table>
<tr>
<td><strong>url_processor.rs</strong><dd><code>Implement async URL
enrichment table processor</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9697/files#diff-d39589e34157fe7930563b9bc5740128e168b8d8ac0a90371a4bdf1e52ce058b">+1351/-0</a></td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Add URL enrichment table HTTP
endpoints</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9697/files#diff-7b5b203002d1c3e5f671392a2a8ed84f45225896b652c2dac94ac26e72a43124">+301/-1</a>
</td>
</tr>
<tr>
<td><strong>enrichment_table.rs</strong><dd><code>Add URL job CRUD
persistence functions</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9697/files#diff-6ce27ddf8a0d8b4e790bda90d088ff692a5da31a8d330beea8a9dd843294572b">+159/-2</a>
</td>
</tr>
<tr>
<td><strong>enrichment_table_urls.rs</strong><dd><code>SeaORM logic for
URL job records</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9697/files#diff-e9ba1ba6e742e8d7652c3f31765de43bee061e7983bca67ffefecf8590210188">+173/-0</a>
</td>
</tr>
<tr>
<td><strong>enrichment_table.rs</strong><dd><code>Define URL job status
and job struct</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9697/files#diff-29818b7d921497260251df82a49ae9ab7a93bbaedc0ca03abdf2b8c0726e4085">+90/-0</a>
</td>
</tr>
<tr>
<td><strong>pipelines.rs</strong><dd><code>Handle super-cluster URL job
events</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9697/files#diff-7c8aa678045dd00de89d4c2345cf4a0511ce9bfac5d6f64e7404178c81e541ad">+23/-1</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Expose url_processor module in
service</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9697/files#diff-3e2b6d3b8da1f9e73aca279052a97e683184d68256c23215b18ffee885836bbf">+6/-0</a>
</td>
</tr>
<tr>
<td><strong>enrichment_table_urls.rs</strong><dd><code>Define SeaORM
entity for URL jobs</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9697/files#diff-9c3081476927bd337b2cbed8310578869845a6137a2c5305f677affb7604d39f">+26/-0</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Register URL handlers in
router</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9697/files#diff-02556e3f515441b5d2b6bbea7829df488beac03c4cc41309a6638ae3c0e0aec6">+2/-0</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Expose enrichment_table_urls entity
module</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9697/files#diff-c539d7557d1425986d5c09849d8dbca42d1b309c2bc33d49db641d6a783098f6">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Add enrichment_table_urls to table
module</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9697/files#diff-af023301203a27a1ef34f698d5a329ad7bfced65ac65e3829b1c0905a0c74fb2">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Include enrichment_table meta
module</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9697/files#diff-bab79e8da2d0d9f903cb1a6187d922c6de63d3e4561e8ce633660b664b4e859f">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>jstransform.ts</strong><dd><code>Add client methods for URL
jobs API</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9697/files#diff-301add2528e0f32323ca4c503bd7d460ab15ca6b9a9537192a02c5e52fd82926">+18/-0</a>
</td>
</tr>
<tr>
<td><strong>EnrichmentTableList.vue</strong><dd><code>Enhance UI for
URL-based enrichment tables</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9697/files#diff-6a29e253f59405d3c0f756dba36afd7483f10ad86927cbbc3348ede6372c3077">+327/-74</a></td>
</tr>
</table></details></td></tr><tr><td><strong>Configuration
changes</strong></td><td><details><summary>3 files</summary><table>
<tr>
<td><strong>m20251221_000001_create_enrichment_table_urls.rs</strong><dd><code>Create
migration for URL jobs table</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9697/files#diff-330b4b7ebbda5001f4f28050d50e219b91961d80d8369222d94d058cced57702">+189/-0</a>
</td>
</tr>
<tr>
<td><strong>config.rs</strong><dd><code>Add URL fetch configuration
options</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9697/files#diff-9aeee4a74c0520daa40f9b81c7016f5b6b3254375b968dd7598e745630980d62">+24/-0</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Register URL jobs migration in
migrator</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9697/files#diff-7ee42a714d3d56c663da0412d15514613222055aebb5b50dafbc051a656a36f6">+2/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>openapi.rs</strong><dd><code>Document URL endpoints in
OpenAPI spec</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9697/files#diff-edb8ce232c0cd08366879f642788a75d99f6bab64b4c0e77391281fdb9241e90">+5/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Bug
fix</strong></td><td><details><summary>1 files</summary><table>
<tr>
<td><strong>auth.rs</strong><dd><code>Extend auth for enrichment_tables
URLs</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9697/files#diff-9bc2b1841504a435f66ad094f72ddbe7b7fa75e5e1557b8adbfe36f7f0592e1b">+9/-1</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Additional
files</strong></td><td><details><summary>1 files</summary><table>
<tr>
<td><strong>AddEnrichmentTable.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9697/files#diff-9aad551dbc051edfdb3994a664506ed6d5e27dcb64f9c2fa917b02e51a35d86e">+159/-42</a></td>
</tr>
</table></details></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Shrinath Rao <shnath@openobserve.ai>
|
||
|
|
268fe6954a |
fix: logs correlation UI fixes (#9703)
### **PR Type**
Enhancement, Bug fix
___
### **Description**
- Enhance correlation dashboard UI layout
- increase chart height, update filter button styles
- Improve DetailTable correlation tab behavior
- add initialTab prop and auto-load watchers
- Adjust log detail navigation column sizes
- Extend correlation handlers in JSON and SearchResult
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>useMetricsCorrelationDashboard.ts</strong><dd><code>Increase
correlation dashboard chart height</code>
</dd></summary>
<hr>
web/src/composables/useMetricsCorrelationDashboard.ts
- Increase dashboard chart height from 36 to 44 units
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9703/files#diff-61aa6123b09464987fa96e7e48c9e3d4648735b5bfc996d49af639f44f833c4d">+1/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>TelemetryCorrelationDashboard.vue</strong><dd><code>Update
correlation dashboard filter buttons</code>
</dd></summary>
<hr>
web/src/plugins/correlation/TelemetryCorrelationDashboard.vue
<ul><li>Add flat prop and update text-color on apply buttons<br> <li>
Change filter v-for to use pendingDimensions<br> <li> Update event
handlers for pending dimension changes<br> <li> Add embedded mode apply
button with styling</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9703/files#diff-b77a766fa0094f641873071a8f13c73704933b941f387ed105e85a4e59efdb38">+19/-6</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>DetailTable.vue</strong><dd><code>Enhance DetailTable
correlation loading</code>
</dd></summary>
<hr>
web/src/plugins/logs/DetailTable.vue
<ul><li>Adjust navigation button columns from col-2 to col-1<br> <li>
Introduce initialTab prop for default tab selection<br> <li> Add
watchers to auto-load correlation data on tab/rowData<br> <li> Emit
correlation events with original modelValue</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9703/files#diff-80552b5d25fa6cef9fbbe430b1865d761c4b132284c2d2175afceea8cbabc8c7">+61/-12</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>JsonPreview.vue</strong><dd><code>Refine JSON preview
correlation handler</code>
</dd></summary>
<hr>
web/src/plugins/logs/JsonPreview.vue
<ul><li>Reformat deep watch callback for selectedStreamFields<br> <li>
Update openCorrelation to log and emit props.value</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9703/files#diff-3985073134d35ff074742944b114d0905524038b42e6d2ac887fef2c8436fb16">+14/-10</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>SearchResult.vue</strong><dd><code>Implement direct
correlation on log rows</code>
</dd></summary>
<hr>
web/src/plugins/logs/SearchResult.vue
<ul><li>Rename correlation handler to openLogDetailsWithCorrelation<br>
<li> Add detailTableInitialTab state and reset logic<br> <li> Implement
direct correlation row opening and loading</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9703/files#diff-5e65533aa4754bb6d0074fda18ffc1ecacded3b9ca6bc28a161c3f6b12f20195">+45/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>detail-table.scss</strong><dd><code>Increase detail
dialog width</code>
</dd></summary>
<hr>
web/src/styles/logs/detail-table.scss
- Increase .searchdetaildialog width from 70vw to 85vw
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9703/files#diff-63d5673331a5ee1ab792d07831e4a6dbb0d2d40d2ad628652d57944e47a96338">+1/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
66f67ca792 |
fix: applied function should be there for saved views (#9713)
### **User description** This PR fixes the issue in #9690 ___ ### **PR Type** Bug fix ___ ### **Description** - Added `openEditor` flag to populateFunctionImplementation - Conditionally show transform editor based on saved view - Preserve saved view's editor open/closed state - Prevent unintended function content reset ___ <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Bug fix</strong></td><td><table> <tr> <td> <details> <summary><strong>SearchBar.vue</strong><dd><code>Support editor open state for saved views</code> </dd></summary> <hr> web/src/plugins/logs/SearchBar.vue <ul><li>Added <code>openEditor</code> parameter to <code>populateFunctionImplementation</code><br> <li> Conditionally set <code>meta.showTransformEditor</code> and splitter<br> <li> Passed saved view's <code>meta.showTransformEditor</code> flag<br> <li> Refined reset logic for function content</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/9713/files#diff-81893de4edf186b0556f610acb280c87baa2ffe67d3b48a60a866094c7635baf">+13/-6</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ |
||
|
|
55482b4703 | fix: handling of issue and comment bodies (#9711) | ||
|
|
60678aade5 |
fix: dashboard maps query builder issue (#9701)
### **PR Type**
Bug fix
___
### **Description**
- Removed `requiredFields` parameter and validation
- Cleaned up docs to omit `requiredFields`
- Updated `mapChart` call to drop `requiredFields`
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>dashboardAutoQueryBuilder.ts</strong><dd><code>Remove
requiredFields validation logic</code>
</dd></summary>
<hr>
web/src/utils/dashboard/dashboardAutoQueryBuilder.ts
<ul><li>Removed <code>requiredFields</code> param from
<code>buildChartQuery</code> signature<br> <li> Deleted validation loop
with <code>console.warn</code> for required fields<br> <li> Updated
<code>mapChart</code> invocation to no longer pass
<code>requiredFields</code><br> <li> Cleaned up JSDoc to remove
<code>requiredFields</code> mention</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9701/files#diff-0374009fc6d1371055d806f3458025162b218fd605253095f680df3b9c33379f">+0/-15</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
27704a0d4c |
fix: add alert revamp v2 (#9694)
### **PR Type**
Enhancement, Tests
___
### **Description**
- Introduce `generate_sql` API endpoint for alerts
- Implement request/response models & service linkage
- Register route & update OpenAPI documentation
- Add extensive front-end tests for alert wizard
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["POST /v2/{org_id}/alerts/generate_sql"] -- "validate & check perms" --> B["build_sql service"]
B -- "return generated SQL & metadata" --> C["GenerateSqlResponseBody"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>4
files</summary><table>
<tr>
<td><strong>mod.rs</strong><dd><code>Add `generate_sql` alert API
endpoint</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-83431801d27626ef27482e67b62661f900043544a45ddf958bd027cf2fa3bd8d">+150/-6</a>
</td>
</tr>
<tr>
<td><strong>responses.rs</strong><dd><code>Add `GenerateSqlResponseBody`
and metadata</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-224027f90893122eea28e35778467acf1a4b5572ce612fc9bc9ec44ca8ebd9fb">+25/-0</a>
</td>
</tr>
<tr>
<td><strong>requests.rs</strong><dd><code>Add `GenerateSqlRequestBody`
request model</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-412f11e06c0e901e2292aab80536cb36edebcc4796dec52923389c3aaa32b25a">+16/-1</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Make `build_sql` function
public</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-ba9b65130898444f7815fd6068bdb0dc590612f74cc893f79d91b0afc44cc851">+1/-1</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Configuration
changes</strong></td><td><details><summary>1 files</summary><table>
<tr>
<td><strong>mod.rs</strong><dd><code>Register `generate_sql` service
route</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-02556e3f515441b5d2b6bbea7829df488beac03c4cc41309a6638ae3c0e0aec6">+1/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>openapi.rs</strong><dd><code>Include `generate_sql` in
OpenAPI spec</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-edb8ce232c0cd08366879f642788a75d99f6bab64b4c0e77391281fdb9241e90">+1/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>3
files</summary><table>
<tr>
<td><strong>AlertSettings.spec.ts</strong><dd><code>Add comprehensive
unit tests for AlertSettings</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-4ca37593c11ef263e0b9a9e1733678e2b81f01c8da5f4a8d729306c176802356">+1363/-0</a></td>
</tr>
<tr>
<td><strong>AddAlert.spec.ts</strong><dd><code>Extend AddAlert tests for
SQL & wizard flows</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-84362398fea8abd9acf30f4f40ba8d4cf27348677454017bd4e6f568d5176ac6">+808/-56</a></td>
</tr>
<tr>
<td><strong>CompareWithPast.spec.ts</strong><dd><code>Add tests for
CompareWithPast component</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-5718f3c114808926e2cced290580cb8ae1610338042eebad001e9a7d5429ee77">+596/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Additional
files</strong></td><td><details><summary>45 files</summary><table>
<tr>
<td><strong>AddAlert.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-7b426bb23e9ed0250c3877d6d97b099c42b2d20e22ddf4459915381b2233a0a8">+1295/-409</a></td>
</tr>
<tr>
<td><strong>AlertList.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-be3e41b823e163b226ffc270d95cc4981e59c600851e4e0d10ee5e4ee994ac8e">+58/-63</a>
</td>
</tr>
<tr>
<td><strong>AlertSummary.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-c22aa1c5934b763f1d4a5a61a7e810b6bcb1d60b76b64c61cb3ce89dc0a04499">+169/-0</a>
</td>
</tr>
<tr>
<td><strong>AlertWizardRightColumn.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-eb14abefd15bc1d3db947347b49899fe264138b7aea63729feae27ad7abed606">+851/-0</a>
</td>
</tr>
<tr>
<td><strong>AlertWizardRightColumn.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-f599a1960d1ac37e352854ad368d23e080b3cec2b217df22f40d0e15a4db6986">+291/-0</a>
</td>
</tr>
<tr>
<td><strong>CustomConfirmDialog.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-0fa5a1da2050cbab522801af8ade04a0e4c27e87933d21f6c32a82603c77a0a3">+179/-0</a>
</td>
</tr>
<tr>
<td><strong>DeduplicationConfig.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-63eb39111409780e4dc064ea80056dfe096038ee76b389cdd8e9d14c0ae29a32">+3/-2</a>
</td>
</tr>
<tr>
<td><strong>FilterGroup.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-8d5a73bea3aa0b5c86d48cda4a61ee3e30f27797ac2a5add1ee8bd66c75bef23">+39/-39</a>
</td>
</tr>
<tr>
<td><strong>HorizontalStepper.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-ccca09440e61bf97621fe06ca606ade4f7fc7c1df8f8a3742cafa4c352f2c23a">+370/-0</a>
</td>
</tr>
<tr>
<td><strong>OrganizationDeduplicationSettings.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-f526d40b50f1e96f025973c6fc251f7a50f698c641c7749b32e6bb90b9ba032f">+19/-21</a>
</td>
</tr>
<tr>
<td><strong>PreviewAlert.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-6d5bfc82662dd55768e258ab92676c2559c054d235ef0e48beb4bd90f31ca60b">+795/-0</a>
</td>
</tr>
<tr>
<td><strong>PreviewAlert.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-760f5f0a261910f17eb167f81802e8a52477b99a83d2d7fc1aeefc7185801795">+41/-16</a>
</td>
</tr>
<tr>
<td><strong>QueryEditorDialog.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-6c524f609ed374aa29e075e8d046ac06be0edda7bfa1914b0a2bbc24d255e5eb">+981/-0</a>
</td>
</tr>
<tr>
<td><strong>RealTimeAlert.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-c3ae6b47832eb33f9ca877cc7165d079de14850e5c5d43a227102ba40326b9d8">+43/-24</a>
</td>
</tr>
<tr>
<td><strong>ScheduledAlert.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-5e143a17ab0fa5d7817f6d9301667fb5597236f27184248c7a71728e85b8d999">+304/-270</a></td>
</tr>
<tr>
<td><strong>Advanced.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-6dacd8b2947f53e7c39a54e990ee26ff6d63478b3a68897ab3afbc937c65c647">+683/-0</a>
</td>
</tr>
<tr>
<td><strong>Advanced.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-eae849f0bf6c8868f5640ce1d74862284d8e8a5330e5046c0c437e6672f4f676">+376/-0</a>
</td>
</tr>
<tr>
<td><strong>AlertSettings.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-1d5bfd6a1ea672884193649b1271d751d6f3b8ec84af759071c9bfd169a8ab28">+1441/-0</a></td>
</tr>
<tr>
<td><strong>AlertSetup.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-ed5a1c54e5fb03ce1d8121223d40606c74419b998b6c071667037347a2debde9">+878/-0</a>
</td>
</tr>
<tr>
<td><strong>AlertSetup.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-4f89438c74f329de730b0e7451d4a8d7df3bab52cdeaded776e8ae18d94294eb">+290/-0</a>
</td>
</tr>
<tr>
<td><strong>CompareWithPast.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-6606848e30caef2cda13d65cb30d6590205556259e7e6daf39cada825502d55b">+416/-0</a>
</td>
</tr>
<tr>
<td><strong>Deduplication.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-d3281cd7632a0fa7ce5c5054e80efafb2aa8d272bb2c586d723436b644565ba4">+591/-0</a>
</td>
</tr>
<tr>
<td><strong>Deduplication.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-f8d256bcec370851c9799c13ffa2b7571c07ca27af1b5a74c335e7084157c9b1">+204/-0</a>
</td>
</tr>
<tr>
<td><strong>QueryConfig.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-5a3ac3e9d93e87bc95c87a20f08c9972158a5882d66ecfb658d38255fe1d8f71">+1000/-0</a></td>
</tr>
<tr>
<td><strong>QueryConfig.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-7273c8de49b8ebf706d7bee5b275c75818c0493f41c73f00c55efe667cbd00d9">+594/-0</a>
</td>
</tr>
<tr>
<td><strong>de.json</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-78f24ecb2dbcfc38fdf3ec22b2559a5b40d236ea689d1c55f5d3e87168310264">+70/-0</a>
</td>
</tr>
<tr>
<td><strong>en.json</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+89/-15</a>
</td>
</tr>
<tr>
<td><strong>es.json</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-ac2a2167b8b973e3f776f9fe3b43bef4576470d8ad33f3d7cfaff6edff0e5778">+70/-0</a>
</td>
</tr>
<tr>
<td><strong>fr.json</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-db80e762b88ddf183820c050cdc6b215e6b02b365b5e73f5152af46b0d26f1a2">+70/-0</a>
</td>
</tr>
<tr>
<td><strong>it.json</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-2de78074a5f887afddce60d694ead9322e6ab223eb70251c13819f3028bdc70d">+70/-0</a>
</td>
</tr>
<tr>
<td><strong>ja.json</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-092e49c5f9fbc1b539ab9c2866d108d0ce1d314022b4c294eb4611b285e7bbd3">+70/-0</a>
</td>
</tr>
<tr>
<td><strong>ko.json</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-50e27ca1b4825a5026f3a251bfcf79c97cab07cfade2ebd512d332453d707c48">+70/-0</a>
</td>
</tr>
<tr>
<td><strong>nl.json</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-a1706021687ae5d8a1c006c49eab3946174fecd895f9b70a89c2e76d97250906">+70/-0</a>
</td>
</tr>
<tr>
<td><strong>pt.json</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-38e804f64cb5e0e451849fc84e9b46e53c954a4a4263d51c18665ad45f4b4815">+70/-0</a>
</td>
</tr>
<tr>
<td><strong>tr.json</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-6f0f131e9e2591480c4c5d1eaffc72d02dc31cbd8d3f90d8f012f08cabac8818">+70/-0</a>
</td>
</tr>
<tr>
<td><strong>zh.json</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-8818055db58f83230aeea4ebfd4cec31d924e8c47b6f91298e356959ab25339e">+70/-0</a>
</td>
</tr>
<tr>
<td><strong>alerts.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-7a62782cceacac92b787e058219b3c53ea7406d4be5780def899943a01f500c1">+9/-0</a>
</td>
</tr>
<tr>
<td><strong>app.scss</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-5703d12504b0395cbfbbfad02a592bc391496026e5f03743102ce06c210ea05f">+7/-0</a>
</td>
</tr>
<tr>
<td><strong>alertQueryBuilder.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-5c829ce5fd3ad2f5ef359df5976e6adfc52eaa6b5f249f594c8b8a588acf8b3e">+10/-49</a>
</td>
</tr>
<tr>
<td><strong>alertSummaryGenerator.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-a4464ad7df3ac3afdca4e6fc583122d701bace10e3a2daf083cb6c902565b20f">+393/-0</a>
</td>
</tr>
<tr>
<td><strong>alertValidation.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-3164a4a58c1865cfcbbba084ac339664c99564545be4d57504dd406d59d8ad4a">+8/-8</a>
</td>
</tr>
<tr>
<td><strong>conditionsFormatter.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-12eb070ce171e81117000fefaf2a1037af4c337423344f280c21c77e1836f5e3">+237/-0</a>
</td>
</tr>
<tr>
<td><strong>conditionsFormatter.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-d5df71a7ab2451925cd220828fc3776039e56c206a07ac7b72d4ce5e282c257c">+460/-0</a>
</td>
</tr>
<tr>
<td><strong>focusManager.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-987334b24e56735ac755d8e1add737ffcd35fe11612e31586c21824cbea88c36">+179/-0</a>
</td>
</tr>
<tr>
<td><strong>zincutils.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9694/files#diff-d3d59688cccdcc6c84ebe88b698c6910030abecc3125f4c0ef81b0df023699ba">+11/-0</a>
</td>
</tr>
</table></details></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Ashish Kolhe <ashish.j.kolhe@gmail.com>
Co-authored-by: Uddhav Dave <uddhav@openobserve.ai>
Co-authored-by: Shrinath Rao <shnath@openobserve.ai>
|
||
|
|
c39bc2cbdd |
fix: promql query legend config suggestion issue for dashboard (#9691)
### **PR Type**
Enhancement
___
### **Description**
- Dynamic PromQL field suggestions from groupedFields schema
- Added `watch` import for additional reactivity
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>ConfigPanel.vue</strong><dd><code>Refactor PromQL
suggestion logic</code>
</dd></summary>
<hr>
web/src/components/dashboards/addPanel/ConfigPanel.vue
<ul><li>Imported <code>watch</code> alongside <code>markRaw</code> and
<code>watchEffect</code><br> <li> Removed static
<code>meta.stream.selectedStreamFields</code> mapping<br> <li> Computed
<code>dashboardSelectfieldPromQlList</code> from
<code>groupedFields.schema</code><br> <li> Added null checks for current
stream and schema</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9691/files#diff-c3a6e64dff02b58bb7cdc3f0668990b41ff41544b4c5e991bbcd989ad4bba3f8">+26/-11</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
|