mirror of
https://github.com/openobserve/openobserve.git
synced 2026-11-05 08:09:22 +00:00
ff29e0c9c09bc00a70cf5e678db9ebec1518ef7a
340
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
09abc46689 |
fix: fixed searcharound and parsed unparsed sql (#8240)
### **PR Type** Enhancement, Bug fix, Tests ___ ### **Description** - Introduce streaming search composable - Add WebSocket/HTTP streaming orchestration - Implement histogram streaming and pagination - Enhance multi-stream SQL handling ___ ### Diagram Walkthrough ```mermaid flowchart LR SB["useSearchBar: query orchestration"] -- "builds request / sets method" --> SS["useSearchStream: streaming engine"] SS -- "WS/HTTP streaming" --> SWS["useSearchWebSocket/useStreamingSearch"] SS -- "histogram logic" --> HG["useHistogram"] SS -- "fields/columns" --> SF["useStreamFields"] SB -- "partitions/page-count (HTTP)" --> PAG["usePagination"] SS -- "state + URL updates" --> ST["searchState/logsUtils"] SB -- "functions/actions" --> ACT["useFunctions/useActions"] ``` <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>25 files</summary><table> <tr> <td><strong>useSearchStream.ts</strong><dd><code>New streaming search composable with WS/HTTP handlers</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-0b7e910195d1ec4b1301973bd2f4193e1e23442103f69a9fbd189d3f78547014">+2171/-0</a></td> </tr> <tr> <td><strong>useSearchBar.ts</strong><dd><code>Orchestrate search, partitions, cancel, and method selection</code></dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-489bda221a164cbee8d66aaf178acb4e0d8a860dbdf39558804fc32c9efd71e8">+1351/-0</a></td> </tr> <tr> <td><strong>logs.ts</strong><dd><code>Add logs-related TypeScript interfaces</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-637857fa918f47ffb02ebfc8a35b124001ef4f65fd180c467f0f153382d2dc76">+89/-0</a> </td> </tr> <tr> <td><strong>index.ts</strong><dd><code>Export logs interfaces from barrel file</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-108f7ecc761a491fd64530704bf44f21473916e1d2ae495376dc996206104088">+1/-0</a> </td> </tr> <tr> <td><strong>useStreamFields.ts</strong><dd><code>Stream fields extraction and grid columns utilities</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-14f575947dcdd7aa0e05646be62ed15b4651a25154f679a3a08ce1bc2252acec">+1105/-0</a></td> </tr> <tr> <td><strong>usePagination.ts</strong><dd><code>Partition-aware pagination and data fetching helpers</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-74277c3b3b1f9b684913ac55ce19c72b29b477021b0ff32af44f8191b17f24a1">+869/-0</a> </td> </tr> <tr> <td><strong>logsUtils.ts</strong><dd><code>SQL parsing helpers, query transforms, and tracing</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-c8550678e2f4da95dd54d03d9893f6bfff2061460c4a2f2c324fdd3b1d392a52">+735/-0</a> </td> </tr> <tr> <td><strong>useHistogram.ts</strong><dd><code>Histogram generation, skeleton, and multi-stream support</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-4d467d6778569f239f96f3af9ec30214aa8b029892bf40a0aa038dfbb73eca6e">+609/-0</a> </td> </tr> <tr> <td><strong>searchState.ts</strong><dd><code>Centralized reactive logs search state</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-c0ac4f131ad64edd2ed811e183bb570be2f38d58c9ed958d093457a51280ec34">+412/-0</a> </td> </tr> <tr> <td><strong>constants.ts</strong><dd><code>Add logs module constants</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-70282396b9397710380ad150da4428630b1b6e4a41b40d206d43cd2eb7f3b653">+279/-0</a> </td> </tr> <tr> <td><strong>searchAround.ts</strong><dd><code>Search-around utilities for contextual queries</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-0090387d8955180e33b700e25de27dd8356a3656449a8bae3442ab476dc50494">+269/-0</a> </td> </tr> <tr> <td><strong>logsVisualization.ts</strong><dd><code>Visualization helpers for logs/histogram</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-5913cd8ca0e98529736da0801f08bf2cd1d861ad01442fbf628d1925ed4c87a1">+46/-0</a> </td> </tr> <tr> <td><strong>useLogs.ts</strong><dd><code>Integrate new composables and streaming flow</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-1040f61354f92711e0e77ed4e9bfa15586d45a94c7e2ab06cc37372068030e7b">+598/-7006</a></td> </tr> <tr> <td><strong>useStreams.ts</strong><dd><code>Stream fetching support for multi-stream scenarios</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-a083369344f022cdf8d4f536719179b1d920369e33e2e26234e70dd36d151a7c">+50/-42</a> </td> </tr> <tr> <td><strong>useSuggestions.ts</strong><dd><code>Suggestions aligned with SQL/streams changes</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-6d2ecd5b90970ea8c8f5d35c5928a2cf8bf0ed14af700db0202759158bfbbf9d">+56/-25</a> </td> </tr> <tr> <td><strong>Index.vue</strong><dd><code>Wire UI to streaming search lifecycle</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-0323c3da69b369843c5d72bf4df5b00ca6b5147192a213baf331659ecf92af62">+104/-61</a></td> </tr> <tr> <td><strong>SearchBar.vue</strong><dd><code>UI updates for new search orchestration</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-81893de4edf186b0556f610acb280c87baa2ffe67d3b48a60a866094c7635baf">+41/-27</a> </td> </tr> <tr> <td><strong>SearchHistory.vue</strong><dd><code>Adjust to new state and tracing</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-9dd167bd5e272b2057f53c16b905047eec00655a3552daad240a964d67a6f56d">+6/-2</a> </td> </tr> <tr> <td><strong>SearchResult.vue</strong><dd><code>Display streamed hits, histogram, pagination</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-5e65533aa4754bb6d0074fda18ffc1ecacded3b9ca6bc28a161c3f6b12f20195">+14/-8</a> </td> </tr> <tr> <td><strong>IndexList.vue</strong><dd><code>Support streaming responses and errors</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-08f058f883b659e713e606991a7ea37ae1ff016b7cccef970489ab5840dc3d09">+14/-10</a> </td> </tr> <tr> <td><strong>DetailTable.vue</strong><dd><code>Column updates based on streamed fields</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-80552b5d25fa6cef9fbbe430b1865d761c4b132284c2d2175afceea8cbabc8c7">+5/-2</a> </td> </tr> <tr> <td><strong>JsonPreview.vue</strong><dd><code>Handle streamed hit rendering</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-3985073134d35ff074742944b114d0905524038b42e6d2ac887fef2c8436fb16">+2/-2</a> </td> </tr> <tr> <td><strong>SearchSchedulersList.vue</strong><dd><code>Align scheduler with new search flow</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-0c0a4097c53f07712d35562b1336602bf24faddedab77a9f5717f5582dcac2f1">+2/-2</a> </td> </tr> <tr> <td><strong>TransformSelector.vue</strong><dd><code>Transform selection wired to query transforms</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-0037d8dd9cfbacc26309b26e98ae953e7ccbd0891ac2fd01c6314ebd7eed9d2c">+5/-2</a> </td> </tr> <tr> <td><strong>FunctionSelector.vue</strong><dd><code>Functions integration with streaming search</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-11d9577516700b94b5f3325e77214d0d886473e690db8c9ea981613c9fb89b68">+2/-2</a> </td> </tr> </table></details></td></tr><tr><td><strong>Miscellaneous</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>useLogs_original.ts.original</strong><dd><code>Preserve original composable for reference</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-00d4815f6d83c48def131ba94f5131e6cae436bf949cc8abf9b8beacdb0aaf7f">+7033/-0</a></td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: omkark06 <omkar@zinclabs.io> Co-authored-by: Sai Nikhil <nikhil@openobserve.ai> |
||
|
|
171bea35a6 |
fix: restrict select * query for visualization (#8302) (#8368)
### **User description** - #8338 Resolved Issues: - Implemented a check for `ZO_QUICK_MODE_ENABLED` before enabling quick mode on logs for visualization toggle. 1. If `ZO_QUICK_MODE_ENABLED=true`, quick mode is enabled when the query is `select *`. 2. Otherwise, `select *` query is always permitted in visualization mode. - Restricted the use of `SELECT *` queries in visualization mode. - As API call triggered on changing the chart type, such changes are now disallowed for `SELECT *` queries. ___ ### **PR Type** Bug fix, Enhancement ___ ### **Description** - Block SELECT * in visualization when quick mode on - Respect quick-mode config before auto-enabling - Centralize SELECT * detection in sqlUtils - Prevent chart-type changes for SELECT * queries ___ ### Diagram Walkthrough ```mermaid flowchart LR A["sqlUtils.ts: isSimpleSelectAllQuery()"] -- "imported by" --> B["logs/Index.vue"] A -- "imported by" --> C["VisualizeLogsQuery.vue"] B -- "auto-enable quick mode only if config true" --> D["handleQuickModeChange()"] B -- "block run for SELECT * when quick mode" --> E["handleRunQueryFn()"] C -- "validate on chart type change" --> F["handleChartTypeChange()"] ``` <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>sqlUtils.ts</strong><dd><code>Add reusable SELECT * query detector</code> </dd></summary> <hr> web/src/utils/query/sqlUtils.ts <ul><li>Add <code>isSimpleSelectAllQuery</code> utility with normalization.<br> <li> Export function for reuse across components.</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8368/files#diff-dde40e8fcb5c37b06c011ede08922c44a3c025682fbc341aee97ba046b73a0e3">+17/-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>Enforce quick mode/config and block SELECT * runs</code> </dd></summary> <hr> web/src/plugins/logs/Index.vue <ul><li>Import shared <code>isSimpleSelectAllQuery</code>.<br> <li> Remove local duplicate detector.<br> <li> Auto-enable quick mode only if config enabled.<br> <li> Block visualize run for SELECT * when quick mode enabled.</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8368/files#diff-0323c3da69b369843c5d72bf4df5b00ca6b5147192a213baf331659ecf92af62">+32/-16</a> </td> </tr> <tr> <td> <details> <summary><strong>VisualizeLogsQuery.vue</strong><dd><code>Validate chart type changes against SELECT * queries</code> </dd></summary> <hr> web/src/plugins/logs/VisualizeLogsQuery.vue <ul><li>Replace v-model with explicit <code>selectedChartType</code> prop handling.<br> <li> Add <code>handleChartTypeChange</code> validating against SELECT * when quick mode.<br> <li> Import shared <code>isSimpleSelectAllQuery</code> and logs context.</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8368/files#diff-979b01d943d58c5d70faeeac5948b7f02f0b2392a12b84ef07ba7f7393ab0261">+38/-2</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: ktx-akshay <akshay.patil@kiara.tech> |
||
|
|
5b81317d71 |
fix: dashboard ensure case-insensitive comparison for stream field validation for camelCase (#8424)
### **PR Type**
Bug fix
___
### **Description**
- Make stream field validation case-insensitive
- Prevent false errors for camelCase vs snake_case
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Query field names"] -- "toLowerCase()" --> B["Normalized names"]
C["Available stream fields"] -- "toLowerCase()" --> D["Normalized fields"]
B -- "compare" --> D
E["Errors array"] -- "only push if unmatched" --> F["Accurate validation"]
```
<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>convertDataIntoUnitValue.ts</strong><dd><code>Case-insensitive
comparison for stream field validation</code>
</dd></summary>
<hr>
web/src/utils/dashboard/convertDataIntoUnitValue.ts
<ul><li>Compare field names using toLowerCase().<br> <li> Avoid mismatch
when cases differ (e.g., camelCase).<br> <li> Update filter predicate
for custom X field errors.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8424/files#diff-14c6fe442ef231566ec411f9e0262cdd24ec912fc67b9154eec743282ab7211a">+4/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: ktx-akshay <akshay.patil@kiara.tech>
|
||
|
|
ab156bad8d |
fix: changed code-mirror to monaco-editor (#8047)
### **PR Type** Enhancement, Bug fix ___ ### **Description** - Replace CodeMirror with Monaco editor - Add Monaco autocomplete and markers - Update build to bundle Monaco - Remove re-render key from logs UI ___ ### Diagram Walkthrough ```mermaid flowchart LR CM["CodeMirror-based editor"] -- Replaced by --> ME["Monaco editor integration"] ME -- Autocomplete/Markers --> UX["Improved editor UX"] Build["Vite config"] -- Add monaco plugin/chunks --> Bundle["Optimized bundles"] UI["Logs and SearchBar"] -- Minor fixes/cleanup --> Stability["Reduced re-renders"] ``` <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>3 files</summary><table> <tr> <td><strong>CodeQueryEditor.vue</strong><dd><code>Replace CodeMirror with Monaco, add features</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8047/files#diff-52a36bf2d64e590036ed1c1f89b07a4a6b971a84e4fae9b4272cbc69d63f9bef">+369/-980</a></td> </tr> <tr> <td><strong>Index.vue</strong><dd><code>Cleanups, visualization flow, formatting tweaks</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8047/files#diff-0323c3da69b369843c5d72bf4df5b00ca6b5147192a213baf331659ecf92af62">+105/-78</a></td> </tr> <tr> <td><strong>SearchBar.vue</strong><dd><code>Editor placeholder, menus, toggle guards</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8047/files#diff-81893de4edf186b0556f610acb280c87baa2ffe67d3b48a60a866094c7635baf">+148/-82</a></td> </tr> </table></details></td></tr><tr><td><strong>Dependencies</strong></td><td><details><summary>3 files</summary><table> <tr> <td><strong>CodeQueryEditorDarkTheme.ts</strong><dd><code>Remove legacy CodeMirror dark theme</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8047/files#diff-4ee0166b549a9a7d6a91e72d546dffd2d031b0ad6015ef5f735b67742e13c66d">+0/-230</a> </td> </tr> <tr> <td><strong>CodeQueryEditorLightTheme.ts</strong><dd><code>Remove legacy CodeMirror light theme</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8047/files#diff-4e80117fff859d80b9dde6898e8026f2c2514c43244e48e2b639527409d38682">+0/-246</a> </td> </tr> <tr> <td><strong>package.json</strong><dd><code>Remove CodeMirror deps; add Monaco and plugin</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8047/files#diff-b861012a5dd72b8a9f3281b7cf09f5a779c98569d040b1bbc1db50f1b15e7cce">+2/-16</a> </td> </tr> </table></details></td></tr><tr><td><strong>Configuration changes</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>vite.config.ts</strong><dd><code>Integrate Monaco plugin and chunking</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8047/files#diff-9430906049744cbbfe5d0b382b2466843a42cfebf755ff86fec850b0712258ef">+25/-15</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: ktx-abhay <abhay.padamani@kiara.tech> Co-authored-by: Bhargav <BJP232004@GMAIL.COM> |
||
|
|
8ba5bac002 |
fix: dashboard camelCase issue in query (#8407)
### **PR Type**
Enhancement
___
### **Description**
- Add `getDataValue` for case-insensitive access
- Refactor data utils to use accessor
- Improve robustness of chart/table conversions
- Handle missing labels and keys safely
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["aliasUtils.getDataValue"] -- "import and use" --> B["convertSQLData"]
A -- "import and use" --> C["convertTableData"]
A -- "import and use" --> D["convertGeoMapData"]
A -- "import and use" --> E["convertMapsData"]
A -- "import and use" --> F["convertSankeyData"]
B -- "robust key lookup" --> G["Charts options"]
C -- "robust key lookup" --> H["Table columns/rows"]
```
<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>aliasUtils.ts</strong><dd><code>Introduce
case-insensitive data accessor</code>
</dd></summary>
<hr>
web/src/utils/dashboard/aliasUtils.ts
<ul><li>Add <code>getDataValue</code> helper for alias lookup<br> <li>
Falls back to lowercase key match</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8407/files#diff-5edee3a79266ff067f9767615a887375f369c6006c4c02bb46a9b6006969e284">+18/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>convertGeoMapData.ts</strong><dd><code>Geo map uses
case-insensitive field access</code>
</dd></summary>
<hr>
web/src/utils/dashboard/convertGeoMapData.ts
<ul><li>Use <code>getDataValue</code> for lat/long/weight access<br>
<li> Validate numeric values via accessor<br> <li> Build series data
with accessor</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8407/files#diff-a09221c91ab7a83aee9ba1d2ad0d5129bc5e2fb45960676677fa35a0f9d3e640">+14/-9</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>convertMapsData.ts</strong><dd><code>Choropleth data
access via accessor</code>
</dd></summary>
<hr>
web/src/utils/dashboard/convertMapsData.ts
<ul><li>Use <code>getDataValue</code> for country and value<br> <li>
Ensure mapping works regardless of alias casing</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8407/files#diff-5f61730637542ed11dfb6ef6e4bc72480289b16636243c98d1b628a97cbdfa55">+6/-2</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>convertSQLData.ts</strong><dd><code>SQL conversion
refactored to accessor-based reads</code>
</dd></summary>
<hr>
web/src/utils/dashboard/convertSQLData.ts
<ul><li>Replace direct key reads with <code>getDataValue</code><br> <li>
Fix time-series detection and filling logic<br> <li> Safe label access
with optional chaining<br> <li> Improve aggregation and uniqueness
checks</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8407/files#diff-88c0e865040a20b2c8bb7d77e7f6bd187a5b07c1645c120223bc9d59603752c3">+50/-30</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>convertSankeyData.ts</strong><dd><code>Sankey
conversion uses case-insensitive access</code>
</dd></summary>
<hr>
web/src/utils/dashboard/convertSankeyData.ts
<ul><li>Use <code>getDataValue</code> for source/target/value<br> <li>
Filter validity via accessor</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8407/files#diff-5d71a65195d723600a75f7c378badd487236fa8d1b93f8c3ee4a9f214945719e">+14/-6</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>convertTableData.ts</strong><dd><code>Table conversion
uses robust accessor and mappings</code>
</dd></summary>
<hr>
web/src/utils/dashboard/convertTableData.ts
<ul><li>Sample and read fields with <code>getDataValue</code><br> <li>
Case-insensitive column/units/color config mapping<br> <li> Safer label
and timestamp formatting<br> <li> Transpose logic uses accessor</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8407/files#diff-a672094c46e697ee7b7a3949a901cc1f7f88ec06cddaf67370474b508d5b0960">+29/-10</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
7bf9770b9a |
fix: sorting issue in query management page (#8305)
### **User description**
This PR fixes the issue that is related to sorting doesn't work properly
for more number of records for execution duration and query range
___
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Centralize duration utilities in `zincutils`
- Fix sorting by using raw seconds
- Render durations via table slots
- Improve query range formatting
___
### Diagram Walkthrough
```mermaid
flowchart LR
utils["zincutils.ts: add time helpers"] -- "import/use" --> runningList["RunningQueriesList.vue: slot-based render"]
utils -- "import/use" --> summaryList["SummaryList.vue: slot-based render"]
runningQueries["RunningQueries.vue: data shaping"] -- "use raw values" --> tables["Tables sort correctly"]
```
<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>zincutils.ts</strong><dd><code>Add shared time/duration
utilities</code>
</dd></summary>
<hr>
web/src/utils/zincutils.ts
<ul><li>Add <code>localTimeToMicroseconds</code> helper.<br> <li> Add
<code>getDuration</code> returning seconds and formatted.<br> <li>
Export these utilities for reuse.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8305/files#diff-d3d59688cccdcc6c84ebe88b698c6910030abecc3125f4c0ef81b0df023699ba">+23/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>RunningQueriesList.vue</strong><dd><code>Render
durations via slots using utils</code>
</dd></summary>
<hr>
web/src/components/queries/RunningQueriesList.vue
<ul><li>Add table slots to format <code>duration</code> and
<code>queryRange</code>.<br> <li> Import and expose
<code>getDuration</code> and <code>durationFormatter</code>.<br> <li>
Display duration from <code>created_at</code> via util.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8305/files#diff-eb568491630bd1b80935cc0b02498d40274ede0e5be78593a0b49ca17fbbe627">+13/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>SummaryList.vue</strong><dd><code>Format summary
durations with table slots</code>
</dd></summary>
<hr>
web/src/components/queries/SummaryList.vue
<ul><li>Add slots to format <code>duration</code> and
<code>queryRange</code>.<br> <li> Import and expose
<code>durationFormatter</code>.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8305/files#diff-d844d0a406c5fe3b58bc254f838bfa51352721174666ebd43bbf008aa6db6f5f">+12/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Bug fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>RunningQueries.vue</strong><dd><code>Use raw values and
shared duration util</code>
</dd></summary>
<hr>
web/src/components/queries/RunningQueries.vue
<ul><li>Import <code>getDuration</code> from utils.<br> <li> Keep
<code>duration</code> and <code>queryRange</code> as raw values.<br>
<li> Remove local <code>getDuration</code> impl.<br> <li> Adjust
pagination code formatting.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8305/files#diff-6f0e18626a986d934c08c368ac383179c56bfcd914a27619ba748f43629c926b">+6/-14</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
aaf06d2118 |
feat: use uuid v7 for internal trace ids (#8261)
### **PR Type**
Enhancement, Tests
___
### **Description**
- Switch trace IDs to UUID v7
- Add timestamp extraction from trace ID
- Improve HTTP header parsing robustness
- Add frontend UUID v7 utils and tests
___
### Diagram Walkthrough
```mermaid
flowchart LR
RustGen["Rust: generate_trace_id uses UUID v7"] -- "u128 -> OTel TraceId" --> OTel["OpenTelemetry TraceId"]
RustExtract["Rust: get_start_time_from_trace_id"] -- "parse v7 timestamp" --> QueryTime["Adjust query time window"]
HTTP["HTTP traces handler"] -- "robust headers + trace_id param" --> RustExtract
WebUtil["Web utils: getUUIDv7 + generateTraceContext"] -- "v7 traceId, v4 spanId" --> BrowserTraces["Browser trace context"]
TestsRust["Rust tests"] -- "validate v7, ordering, parsing" --> RustGen
TestsWeb["Web tests"] -- "validate v7, ordering, context" --> WebUtil
```
<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>ider.rs</strong><dd><code>Switch to UUID v7 and add
timestamp extraction</code>
</dd></summary>
<hr>
src/config/src/ider.rs
<ul><li>Generate trace IDs using <code>Uuid::now_v7()</code>.<br> <li>
Add <code>get_start_time_from_trace_id</code> to extract microsecond
timestamp.<br> <li> Expand tests for v7 validity, ordering, and
parsing.<br> <li> Strengthen span ID and snowflake generator tests.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8261/files#diff-6ea42b8eab8ba0708f93f9a8b44056d9a9e6ac42517ffba12f81420d6b0bd2b0">+279/-17</a></td>
</tr>
<tr>
<td>
<details>
<summary><strong>mod.rs</strong><dd><code>Robust headers and time-window
from trace_id</code>
</dd></summary>
<hr>
src/handler/http/request/traces/mod.rs
<ul><li>Make Content-Type/header parsing tolerant to errors.<br> <li>
Allow <code>trace_id</code> param or filter to set time window.<br> <li>
Derive query window from UUID v7 timestamp.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8261/files#diff-64694c886c809b6efe449e6eba9fbb33d31ce5a3c49cea1a30006fc1d9522665">+37/-2</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>zincutils.ts</strong><dd><code>Frontend UUID v7 support
and trace context</code>
</dd></summary>
<hr>
web/src/utils/zincutils.ts
<ul><li>Import and expose <code>getUUIDv7</code>.<br> <li> Use UUID v7
for traceId in trace context.<br> <li> Keep spanId generation via UUID
v4.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8261/files#diff-d3d59688cccdcc6c84ebe88b698c6910030abecc3125f4c0ef81b0df023699ba">+8/-2</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>zincutils.spec.ts</strong><dd><code>Tests for UUID v7
and trace context</code>
</dd></summary>
<hr>
web/src/utils/zincutils.spec.ts
<ul><li>Add tests for <code>getUUIDv7</code> validity, uniqueness,
ordering.<br> <li> Validate trace context uses v7 traceId.<br> <li>
Ensure uniqueness of trace and span IDs.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8261/files#diff-225d7ad1afe0a7e6f522c267bfd9ac4928cb5c23047fc6c02a287519a34aacb7">+45/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Dependencies</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>Cargo.toml</strong><dd><code>Add uuid v7
dependency</code>
</dd></summary>
<hr>
Cargo.toml
- Add `uuid` crate with v7 feature.
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8261/files#diff-2e9d962a08321605940b5a657135052fbcef87b5e360662bb527c96d9a615542">+1/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>Cargo.toml</strong><dd><code>Add uuid to config crate
dependencies</code>
</dd></summary>
<hr>
src/config/Cargo.toml
- Wire `uuid` crate via workspace dependency.
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8261/files#diff-a70836e42ee2ff2af5068df047dd443758a0edc910d8ec5a01780396a69c9a9e">+1/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
20678e5e9d |
fix: RUM component testing (#8194)
### **PR Type** Tests, Enhancement ___ ### **Description** - Add extensive RUM component unit tests - Harden dashboard layout null checks - Initialize variables state safely - Minor UI/typing/import fixes ___ ### Diagram Walkthrough ```mermaid flowchart LR specs["Add RUM component specs"] -- validate --> dashboards["Dashboards (API/Errors/WebVitals)"] dashboards -- safer init --> vars["Variables default state"] dashboards -- guard --> layout["Ref layoutUpdate null-checks"] SearchBar["SearchBar.vue"] -- disable guard --> btn["Run Query button"] utilsDate["utils/date.ts"] -- lint fix --> commas["Trailing commas"] ``` <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>19 files</summary><table> <tr> <td><strong>ApiDashboard.spec.ts</strong><dd><code>Add comprehensive tests for API dashboard</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-53095dbafa0cb9c6eed90240cb8af9f89d118168f6af76bdf51267a667ccff2d">+1481/-0</a></td> </tr> <tr> <td><strong>SearchBar.spec.ts</strong><dd><code>Add unit tests for RUM SearchBar</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-8665e9741021e1ce49dcf12426e74107f678bd5708125104d95f82798f1a33a1">+715/-0</a> </td> </tr> <tr> <td><strong>SessionsList.spec.ts</strong><dd><code>Add tests for sessions list table</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-d4b43b6d94727c8fe42479141a58908fc490227bd1e87eec6d64c9351efbdcc8">+615/-0</a> </td> </tr> <tr> <td><strong>ErrorEvents.spec.ts</strong><dd><code>Add tests for error events table</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-81b9f9fcb1fd9a2f50bb512de7de11353519d95d7c276999eb8efa9e315a91d2">+567/-0</a> </td> </tr> <tr> <td><strong>ErrorTags.spec.ts</strong><dd><code>Add tests for error tags view</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-c6f52cc79dd03d5b9bb6fb66a7c2ca29b66cd2e8bcaf1fa071d52cd43f388f59">+622/-0</a> </td> </tr> <tr> <td><strong>PlayerEventsSidebar.spec.ts</strong><dd><code>Add tests for player events sidebar</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-89b65487bce928cbff9e6f17ea7b2288a5b44918c408d48f17e834454d8f6c60">+570/-0</a> </td> </tr> <tr> <td><strong>ErrorsList.spec.ts</strong><dd><code>Add tests for errors list</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-e65880c9658bdfd0cc8c6dc2144760f924ef4cf6919010e5f48b2ed47f134745">+491/-0</a> </td> </tr> <tr> <td><strong>WebVitalsDashboard.spec.ts</strong><dd><code>Add tests for Web Vitals dashboard</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-62eb2eceb30d2aa28e78d4ee898d09aae3d1f0fa176d4bca91055b50024e6c9f">+546/-0</a> </td> </tr> <tr> <td><strong>ErrorHeader.spec.ts</strong><dd><code>Add tests for error header</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-4b0143e04fd73e173ae4e9696d2654543eaf0c0a85e6610d267a3b2ec3f145d8">+459/-0</a> </td> </tr> <tr> <td><strong>VideoPlayer.spec.ts</strong><dd><code>Add tests for RUM video player</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-ee567bd4fd196facb768c7a15cbd7e14feff6be027d3bb78e65ae811319ca82c">+485/-0</a> </td> </tr> <tr> <td><strong>ErrorSessionReplay.spec.ts</strong><dd><code>Add tests for error session replay</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-40ee2b3a9b103e5c6e5e431609444f0296d2bee46f3f1dd2c606c86e22d8ffe5">+482/-0</a> </td> </tr> <tr> <td><strong>ErrorStackTrace.spec.ts</strong><dd><code>Add tests for error stack trace view</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-a52e17d1791c4e34e92e7e5953d4df509f4dc8a49910865efc0f13bffc9b2096">+423/-0</a> </td> </tr> <tr> <td><strong>ErrorEventDescription.spec.ts</strong><dd><code>Add tests for error event description</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-f3a969642703ccec1b54c32c7ef3c2a85d9e9ea15f322ef362eefe71ae736acd">+495/-0</a> </td> </tr> <tr> <td><strong>ErrorDetail.spec.ts</strong><dd><code>Add tests for error detail view</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-8517542d07e62e45104db342cc69f85a1c07776aecbee8279456d3000f8dd2da">+420/-0</a> </td> </tr> <tr> <td><strong>AppTable.spec.ts</strong><dd><code>Add tests for generic AppTable</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-37e20196ead408438033e30d909300ef1c02b01fa690e2d4b8cd21472202e4da">+425/-0</a> </td> </tr> <tr> <td><strong>ErrorsDashboard.spec.ts</strong><dd><code>Add tests for Errors dashboard</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-1330edb3964758b7c9cfbdfb077eac5fcce30b8b4d2f204d69ab71c4041d37c5">+383/-0</a> </td> </tr> <tr> <td><strong>ErrorTypeIcons.spec.ts</strong><dd><code>Add tests for error type icons</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-737652a4154b05c932a34cf218c3c1432ff8efc557d512813a6879830baf668b">+368/-0</a> </td> </tr> <tr> <td><strong>ErrorTag.spec.ts</strong><dd><code>Add tests for single error tag</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-d4bf1e6d4e71451a9ce8ead11328edff5064cb3693b01b53ce653694710045ef">+355/-0</a> </td> </tr> <tr> <td><strong>SessionLocationColumn.spec.ts</strong><dd><code>Add tests for session location column</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-b853b01be9d14931163c1ae8f5287c28f1d43df2a45e113519d853d3a14c1b41">+346/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>5 files</summary><table> <tr> <td><strong>date.ts</strong><dd><code>Add debug log and lint fixes</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-b178bce26d7ddb8d02569fa666e3250abbc1f269d7b7a1068a4bd026f4bdcd26">+3/-2</a> </td> </tr> <tr> <td><strong>ApiDashboard.vue</strong><dd><code>Safer variables init and layout guards</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-52c091831fcfb625a54f7b56a08c10694a024daa44b6b337d66260461254389e">+24/-12</a> </td> </tr> <tr> <td><strong>SearchBar.vue</strong><dd><code>Guard stream list access; import cleanup</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-d20c6ba53e6a9adfe67b2f83fe76357fb541b2764dd40cb16627599e0c80e63f">+3/-30</a> </td> </tr> <tr> <td><strong>ErrorsDashboard.vue</strong><dd><code>Initialize variables and guard layout updates</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-46138c05241c5e0911a0feba39a21dbb8452453c0e26a1d00c3493cc579f07b2">+14/-8</a> </td> </tr> <tr> <td><strong>WebVitalsDashboard.vue</strong><dd><code>Add layout null-checks and exports</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-bbb15649f6ecf4b2968a8173091ef8b2a21bfe39bff8e08f91566bca189cca09">+10/-5</a> </td> </tr> </table></details></td></tr><tr><td><strong>Miscellaneous</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>WebVitalsDashboard.spec.ts.backup</strong><dd><code>Backup spec file for Web Vitals</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-407d197787cb019e97f989a21530c722baf103aab5583cf85b3f7113b9543e88">+1308/-0</a></td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ |
||
|
|
8af3495611 |
fix: cloud sync (#8222)
### **User description**
This is for syncing the changes done in cloud to main branch. No changes
for non-cloud code.
___
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Add invite listing and decline APIs
- Bypass auth for user-scoped invite routes
- Improve trial-expiry handling and logging
- Add org cache and invalidation hooks
___
### Diagram Walkthrough
```mermaid
flowchart LR
FE["Login & Invitations UI"] -- "list/accept/decline" --> API["/api/invites*, /{org}/member_subscription"]
API -- "auth bypass for user-scoped invites" --> Auth["AuthExtractor/TokenValidator"]
Auth -- "pending invites flag" --> LoginRedir["/config/redirect builds URL params"]
OrgSvc["Organization Service"] -- "generate/list/decline/delete" --> InvitesDB["Org Invites"]
OrgSvc -- "invalidate cache" --> OrgCache["Org table in-memory cache"]
Ingest["Ingestion services"] -- "trial expired -> 429" --> Clients["Ingestion Clients"]
```
<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>25
files</summary><table>
<tr>
<td><strong>user.rs</strong><dd><code>Expand invite payload with org and
inviter</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-e13b3a981fd70182b9738a6b0ecfdee915c5b36757703a87741e1eddf3f6e786">+2/-0</a>
</td>
</tr>
<tr>
<td><strong>auth.rs</strong><dd><code>Auth bypass and key handling for
invite routes</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-9bc2b1841504a435f66ad094f72ddbe7b7fa75e5e1557b8adbfe36f7f0592e1b">+36/-0</a>
</td>
</tr>
<tr>
<td><strong>jwt.rs</strong><dd><code>Return new user and pending invite
flags; defer org creation</code></dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-232cab74f4cbf135af424744272e17732fbda8ac005d33c0acb4597e65479d02">+22/-4</a>
</td>
</tr>
<tr>
<td><strong>token.rs</strong><dd><code>Allow invite/member routes
without org user; header injection</code></dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-3339b4a964c121766ef87fcec0070f27a2b7085cf81281b53154e53d33cb28cf">+34/-0</a>
</td>
</tr>
<tr>
<td><strong>ingest.rs</strong><dd><code>Suppress logging for trial
expiry errors</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-24f250254ecfdbe004af9dc0ea23f8a2c0105ae0898690ed3e565089e5d8eef9">+30/-9</a>
</td>
</tr>
<tr>
<td><strong>org.rs</strong><dd><code>Pending-only invites; delete invite
API; trial extend cache poke</code></dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-b47c0c1a8a78524196176430268eecdbfaf6f46d6b95873d3cbe70cfd67182b0">+40/-4</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Include pending_invites flag in
login redirect</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-ca09c9c9b020049bdbc3382c466bfcca80daac92e98760d9a9a76172abf34049">+4/-4</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>List pending invites and decline
invite endpoint</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-56897e42f9436a640bc70fddc25686485ba8ae1223635b32d252a0333309f748">+36/-1</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Wire new invite endpoints into
router</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-02556e3f515441b5d2b6bbea7829df488beac03c4cc41309a6638ae3c0e0aec6">+2/-0</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Add TrialPeriodExpired error
variant</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-90c725d0e77a6e7d4bcc130cf5783848a5cf0efdb304b351cd63cacf8775fc36">+2/-0</a>
</td>
</tr>
<tr>
<td><strong>organizations.rs</strong><dd><code>Add in-memory org cache
with invalidation</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-4d87f9fe379a5d161a3e7c3c77f7f320be738e6a70c785aa5ce93cb0830c0147">+77/-7</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Start cloud billing watcher on
cloud builds</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-f2e4c29b8eef22189ec704a832633c4bd135a24444f054864c98064bd0963681">+3/-0</a>
</td>
</tr>
<tr>
<td><strong>organization.rs</strong><dd><code>Invalidate org cache on
watch and mutations</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-ce65cea926a09721a8fea14d07fe188bc2b887218e95d74a8bffefb54001da50">+4/-0</a>
</td>
</tr>
<tr>
<td><strong>user.rs</strong><dd><code>Delete invites for user
helper</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-6ee6b0fc9ed03224d4ddf0b7b631c6f81ff7d1d579bdb98d2c5d4453852eb5d6">+4/-0</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Return trial expiry as dedicated
error</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-7c7b5bca85f0ced652965cae66540c96f56dfcca4f4c16b77bf7b45aac203d1b">+1/-3</a>
</td>
</tr>
<tr>
<td><strong>loki.rs</strong><dd><code>Silence trial expiry logs for Loki
ingestion</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-a970c8c4785d4e4d878218615b17eec0cf4b4976121766b002c2b2f76371bfe6">+4/-1</a>
</td>
</tr>
<tr>
<td><strong>json.rs</strong><dd><code>Map trial expiry to HTTP 429 in
JSON ingest</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-506987e61095a54e47f7f208dad89f9f1bce595fa6bf1ba8a7d746f2b2ff6c4a">+15/-6</a>
</td>
</tr>
<tr>
<td><strong>otlp.rs</strong><dd><code>Return 429 for trial expiry;
reduce noise</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-a24391bef75a4678c50724e8b5f305ec0ee8c2c74c68be9d677765de68b5d8dd">+17/-7</a>
</td>
</tr>
<tr>
<td><strong>organization.rs</strong><dd><code>Invite generation
validation; delete/decline invite flows</code></dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-6b3c3c2b027c1158c0d41302cc69dfcd20ab68a6a4fa365cda403f838940bbb4">+48/-1</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Handle trial expiry with 429;
logging tweaks</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-66f3b4f5e7927092fd6e57738687a1091b6f316638f7c58f8d7be9addb72bc30">+34/-14</a>
</td>
</tr>
<tr>
<td><strong>users.rs</strong><dd><code>Enrich invite list; optional
pending filter; cleanup on removal</code></dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-98da2588a28d62bb2e301d989836125f89f89b76272cd7f75e08ec4deeea5f38">+50/-6</a>
</td>
</tr>
<tr>
<td><strong>organizations.ts</strong><dd><code>Add decline subscription
API client</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-2c3bad4c7a9fcedd7a653599381149b82f9c350b177de9d72431013807d4c36f">+10/-7</a>
</td>
</tr>
<tr>
<td><strong>users.ts</strong><dd><code>Add pending/accept/reject invite
APIs</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-a334d8d570d9bdcaa3d4c8c2a993eff009a1ec8eb499c8a3d1a292d9224159d0">+12/-4</a>
</td>
</tr>
<tr>
<td><strong>InvitationList.vue</strong><dd><code>New UI to accept or
reject invites</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-ee97546ff1aba36cc0b24cb20782502c7c88279850cc3d540ea5685209f10702">+409/-0</a>
</td>
</tr>
<tr>
<td><strong>Login.vue</strong><dd><code>First-login invite handling and
logo tweaks</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-a135c379ef6ac8f92199ea5f7ff19a227971a9b0a87ccccf87c0268740522c2c">+178/-58</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>Add invitation-related
translations</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+18/-0</a>
</td>
</tr>
</table></details></td></tr></tr></tbody></table>
</details>
___
---------
Signed-off-by: Yashodhan Joshi <yjdoc2@gmail.com>
Co-authored-by: Subhra264 <chakrabortysubhradeep556@gmail.com>
Co-authored-by: udev <uddhav@openobserve.ai>
Co-authored-by: Yashodhan Joshi <yjdoc2@gmail.com>
Co-authored-by: omkark06 <omkar@zinclabs.io>
Co-authored-by: udev <uddhavdave1@gmail.com>
|
||
|
|
46fa42a319 |
fix: dashboard unit tests (#8111)
### **PR Type** Tests, Enhancement ___ ### **Description** - Add extensive dashboard utility unit tests - Introduce Sankey builder component tests - Export helper for PromQL series props - Temporarily skip flaky UI tests ___ ### Diagram Walkthrough ```mermaid flowchart LR utils["Dashboard utils tests"] -- add --> convertDataIntoUnitValue.spec component["Sankey builder tests"] -- add --> DashboardSankeyChartBuilder.spec promql["PromQL utils"] -- export helper --> getPropsByChartTypeForSeries ui_tests["UI specs"] -- skip flaky --> MenuLink.spec & AppSessions.spec ``` <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>19 files</summary><table> <tr> <td><strong>convertDataIntoUnitValue.spec.ts</strong><dd><code>Expand coverage for formatting, colors, validation</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-e9d8a984ed78af13e4d4424c605a3a55fe6ad2a3f7e403fad156ce17ffdc3bdd">+1869/-1</a></td> </tr> <tr> <td><strong>DashboardSankeyChartBuilder.spec.ts</strong><dd><code>Add full test suite for Sankey builder</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-97b54e2aa2abc946d6ebf5624f8985260fe426cd508965408ee966d829e30872">+1279/-0</a></td> </tr> <tr> <td><strong>MenuLink.spec.ts</strong><dd><code>Skip unstable external-link test case</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-bd04ff500fc31583a430993830eed36cdf6254c2ce1a52b8a58a07b89bb9f825">+1/-1</a> </td> </tr> <tr> <td><strong>AppSessions.spec.ts</strong><dd><code>Skip flaky mount-time data fetch test</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-8729444f05a0c753cc1f6fbb229e0ab7fd2ac46bd6ea454131ff80314d57a888">+1/-1</a> </td> </tr> <tr> <td><strong>convertSQLData.spec.ts</strong><dd><code>Add SQL data conversion unit tests</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-1dc85f7550b15820974ad93fa461de48d24bc5cbed621bffddb27250211fa88d">+8632/-0</a></td> </tr> <tr> <td><strong>useDashboardPanel.spec.ts</strong><dd><code>Add unit tests for dashboard panel composable</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-5dbd79fdde0cbbb7db569095fa062931286463da0b5e72b1fbe99f56116fa5e2">+4723/-0</a></td> </tr> <tr> <td><strong>AddPanel.spec.ts</strong><dd><code>Add tests for add panel flow</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-5565bef51b35f1e9c8167eab0a22dc61c1d697dca45fe31f46cc8e5e9020ca74">+3540/-0</a></td> </tr> <tr> <td><strong>convertPromQLData.spec.ts</strong><dd><code>Add unit tests for PromQL conversion</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-2769044ec488ef4070c2e1a28ce23ec36b945e46c903b870f8b340cbd6b05211">+2086/-0</a></td> </tr> <tr> <td><strong>DashboardQueryBuilder.spec.ts</strong><dd><code>Add tests for dashboard query builder</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-f44793de54d6ac2d9c7b3dd504d8b1952cb6e6b2d984254a8466705387cb82ce">+1170/-0</a></td> </tr> <tr> <td><strong>VariableQueryValueSelector.spec.ts</strong><dd><code>Add tests for variable query selector</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-7e096d825438fc75baab2ef87cb4a04ae7ac1206e5021b71ce42cedd0984e064">+1128/-0</a></td> </tr> <tr> <td><strong>VariablesValueSelector.spec.ts</strong><dd><code>Add tests for variables value selector</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-9f234d5a15777d62cf8cd6cc9f0d68fbc0419a87ef58fbdb11de8c46ed6d17cb">+1137/-0</a></td> </tr> <tr> <td><strong>DashboardMapsQueryBuilder.spec.ts</strong><dd><code>Add tests for maps query builder</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-08c9fd103348dc8adea1c343bdaa25c176378a91656cda7f336dd622d8598fef">+1112/-0</a></td> </tr> <tr> <td><strong>viewDashboard.spec.ts</strong><dd><code>Add tests for dashboard view flow</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-0db87f5ba2d11ee942a8054598d18568ce7542e23c830fcf5d802c4338e64937">+1175/-0</a></td> </tr> <tr> <td><strong>DashboardGeoMapsQueryBuilder.spec.ts</strong><dd><code>Add tests for geomap query builder</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-d9b9e150ca7ac48d81236c882b2aa1f188e26fc2c2d13d69936c3288f305d803">+1079/-0</a></td> </tr> <tr> <td><strong>FieldList.spec.ts</strong><dd><code>Add tests for field list interactions</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-7273ac40c01bb36400c5dd32f86cce6576dc034cbec0010f6e93e22348578ed4">+971/-0</a> </td> </tr> <tr> <td><strong>DashboardErrors.spec.ts</strong><dd><code>Add tests for dashboard errors display</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-a5d738d4bafc19b5e324d0c1826f73503a8539d8900cb2f80ff1284780865ac4">+898/-0</a> </td> </tr> <tr> <td><strong>CustomMarkdownEditor.spec.ts</strong><dd><code>Add tests for custom markdown editor</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-c706715d0bc3f6b3b5e067d1926b0bd1e01b5aba291072cd612de4f9fed25c4f">+916/-0</a> </td> </tr> <tr> <td><strong>convertGeoMapData.spec.ts</strong><dd><code>Add unit tests for geomap conversion</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-c75999bb5bc4dc27c5da1fad5d556614fa139b0b2cae7c2dc200c11133141937">+1061/-0</a></td> </tr> <tr> <td><strong>TabsSettings.spec.ts</strong><dd><code>Add tests for tabs settings component</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-702a83e8e5bce6917f8cc2353dc224d37e667bdc39119f2176185cb4d2fe3b65">+820/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>convertPromQLData.ts</strong><dd><code>Export chart-type series props helper</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-68d70ba6c622911d48cdb567940dc404a4a6468b86c6d24fb54e5f1d8aa5ca2a">+1/-1</a> </td> </tr> </table></details></td></tr><tr><td><strong>Additional files</strong></td><td><details><summary>83 files</summary><table> <tr> <td><strong>DateTimePickerDashboard.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-384ca377212c39553c97970a8b57888b7aea566e739ed498304360111c7884b8">+498/-0</a> </td> </tr> <tr> <td><strong>AddDashboard.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-3f4eccc613c6abad9a1103fab41aa4f8eb66a74465aea5e3b077c7c31525e91e">+338/-0</a> </td> </tr> <tr> <td><strong>AddFolder.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-3c70ca7fa32d6b2f499764c9bae0fcaf6d24a468eb71122865f79be4eed5bd45">+690/-0</a> </td> </tr> <tr> <td><strong>ExportDashboard.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-5aba49ace28e114de7b4113ea725d4cabc6e343aa0bbc41fcb4250de0dfdb1b1">+409/-0</a> </td> </tr> <tr> <td><strong>MoveDashboardToAnotherFolder.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-05b3c990e345c5c11c1631547269b3644b652b78c4185b5123d3211218adb99d">+643/-0</a> </td> </tr> <tr> <td><strong>OverrideConfigPopup.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-5c66103162fa701af8c78ba2bc62789ac8fa3f98f281309591ffd4da154fbc0e">+549/-0</a> </td> </tr> <tr> <td><strong>PanelContainer.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-d74ba5293a041ca029d5e9b8fec08d187e51a099451ab0372747d3ec175559a9">+497/-0</a> </td> </tr> <tr> <td><strong>PanelSchemaRenderer.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-897e6e12808163dfb85ea964ac97d45a8c50146672558b4d86de292daaf021ce">+827/-0</a> </td> </tr> <tr> <td><strong>QueryInspector.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-5db282f1e123d731ab4ed83d9500a87bbdd968f28c2c9f11179eaebed4f6bef6">+679/-0</a> </td> </tr> <tr> <td><strong>SelectDashboardDropdown.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-9c9dd44be67486631521fa4e8238a6e782d659afb0d71a39d394f22d21fa2d1e">+717/-0</a> </td> </tr> <tr> <td><strong>SelectFolderDropdown.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-1ff4f3a09802e742b9cc26990c827d9331529a74bc6fc1678473821dc851e1b7">+658/-0</a> </td> </tr> <tr> <td><strong>SelectTabDropdown.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-3b923039e16f1a26cce563eaefcfe3405e551eaa12ac10c4382ac4d67d9564b2">+780/-0</a> </td> </tr> <tr> <td><strong>AddAnnotation.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-c096dd81c6463d55ba96fed549d28d7c83191639ccfd5dccece303a663bfdf9b">+242/-0</a> </td> </tr> <tr> <td><strong>BackGroundColorConfig.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-e23c4dbce4cba3fd64ac480f21ab9dbdeba66bac46b2277874ee307597980707">+651/-0</a> </td> </tr> <tr> <td><strong>ChartSelection.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-88bf57e3c40ed695321a7366d2f770f6c22e5d8c1adbb057d2a805333ad57de9">+177/-0</a> </td> </tr> <tr> <td><strong>ColorBySeries.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-92afcb1fa6c34cde082443bde1c478d9e98c0074b69f9f8f2343bb0880f2c183">+224/-0</a> </td> </tr> <tr> <td><strong>ColorBySeriesPopUp.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-bd65ddc9813c2a5679b0aeb602afa55e8c15bb3b39dd48cd2489b2e6e9c51965">+224/-0</a> </td> </tr> <tr> <td><strong>ColorPaletteDropDown.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-dbe43d77b398c5f6ede77ff1006a9b7d39b405842d6ca488061e1cbcde566117">+757/-0</a> </td> </tr> <tr> <td><strong>CommonAutoComplete.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-f11b0763e1eea3c18bf2a69933d84a78df0f18b70a5b2fb3c50459c557ecc842">+588/-0</a> </td> </tr> <tr> <td><strong>ConfigPanel.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-a4e717cd660ad6fa369629f8de524f4d57bf4f71b11d3244ce41b9ed9f0379d2">+617/-0</a> </td> </tr> <tr> <td><strong>CustomChartEditor.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-00410898c60d1d7d4803eba301bf070d6b3765db0983c06b3d624c485dc1339e">+693/-0</a> </td> </tr> <tr> <td><strong>CustomHTMLEditor.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-b07faae78603a95d7cb54e4a6dde9381cad82952a76ad78e23a393fb12c635a2">+546/-0</a> </td> </tr> <tr> <td><strong>DashboardQueryEditor.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-6a37b5f775011f4014399dcb3bae3b3d85403896533c008470b1c9712db96e82">+507/-0</a> </td> </tr> <tr> <td><strong>Drilldown.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-2ffe39b111c8981f0bbf7fcf19ff815fa97a24e007dcc17a23d0e7a2ed6388a1">+605/-0</a> </td> </tr> <tr> <td><strong>DrilldownPopUp.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-73d704d414f3ea194970a4f079bc1d9fedfdf8547875758133bc1e6e335523e5">+723/-0</a> </td> </tr> <tr> <td><strong>DrilldownUserGuide.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-0015f582294fe5a56347aea7c3ce42e12100dd4363176fd8013683356aaba74a">+603/-0</a> </td> </tr> <tr> <td><strong>HistogramIntervalDropDown.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-bc0fbf96ee3ce5f28b7896b3c8f55605f68cdc3386cae22b9adc8c806af9e514">+368/-0</a> </td> </tr> <tr> <td><strong>MarkLineConfig.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-f6e52e135ac6d21bd1d12226feee88ccaf24bad358890d17af3645ef7103d3a1">+503/-0</a> </td> </tr> <tr> <td><strong>OverrideConfig.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-e05709bd1fededda3d3ed90a47d9fddb8ae171e87c7f25d07ecca1e6a8ab33ee">+571/-0</a> </td> </tr> <tr> <td><strong>PanelSidebar.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-4b5378e7a3c198d89d8de88fc9bb3ccb5829c7572d860c42d46b565fd37a2894">+622/-0</a> </td> </tr> <tr> <td><strong>QueryTypeSelector.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-3094340ad57af51f1bcbad3b63a8ab860a46905ab79997289b89b601553934fd">+777/-0</a> </td> </tr> <tr> <td><strong>SortByBtnGrp.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-7e52dbb6902695ae38e15e980407d761d528871631365a12726f9731efaccec2">+405/-0</a> </td> </tr> <tr> <td><strong>ValueMapping.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-4920ea2ac96411628202d5350adae25ea97a1cd8eede8d8bf5252e5d468d82f8">+424/-0</a> </td> </tr> <tr> <td><strong>ValueMappingPopUp.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-ef4bd7d95957a65c1efdba2d541a0242d249adc0381efcfd2e1c684c531fab6b">+553/-0</a> </td> </tr> <tr> <td><strong>ChartRenderer.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-f005709a26e4b51de30457223129ce0ca84a29c5f69a8d7c84fa35b5f3376fd6">+464/-0</a> </td> </tr> <tr> <td><strong>CustomChartRenderer.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-e5f37800aafd21baeda455df4656da5221369bb6d72880a28294b8a1a83b5f30">+679/-0</a> </td> </tr> <tr> <td><strong>GeoMapRenderer.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-7bf374bb429eafe8b265c34e63fe99df1c05e102be38125bcf3234756f95f12c">+878/-0</a> </td> </tr> <tr> <td><strong>HTMLRenderer.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-128fd699e9ae1552077c27185db37871b57e0002558f89377ec64b4e29e1d7f7">+492/-0</a> </td> </tr> <tr> <td><strong>MapsRenderer.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-588141a6c90f09e4b39ea53d03c1334c0b5cc42c9f35272a9f2eeb6e2ddb852e">+490/-0</a> </td> </tr> <tr> <td><strong>MarkdownRenderer.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-63eed3fbb6882be90c70e833f9f64e9e8c6511e4c40162aa5c1a7662fc79469d">+600/-0</a> </td> </tr> <tr> <td><strong>TableRenderer.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-550a0a669838c47473442a7d37407fead8b7cb2a05121880dd2c0522022c8c3f">+555/-0</a> </td> </tr> <tr> <td><strong>AddSettingVariable.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-3f3a2cea87e91a038695bdd8406d72680e4b665bea7a7186a84fbef91c8bdf81">+661/-0</a> </td> </tr> <tr> <td><strong>GeneralSettings.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-2b3e3d2794669f6b030b6752ef262b96d6504cb1bcd661a3cd248c21df412064">+767/-0</a> </td> </tr> <tr> <td><strong>SinglePanelMove.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-ba25253c9f76317afde347d4d6a0afbcc95bcf847640ab81a1b40fa0bd4b4bc5">+565/-0</a> </td> </tr> <tr> <td><strong>TabsDeletePopUp.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-53eadbd58dae03e5fbf9db545d58a03d0d504725544b0500d7b16c5d041668d3">+611/-0</a> </td> </tr> <tr> <td><strong>VariableAdHocValueSelector.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-82c2b639609e68e8601435e82ae21dcda2ff626853b3a5e310c69e237c34c38d">+422/-0</a> </td> </tr> <tr> <td><strong>VariableCustomValueSelector.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-8ce1eb841c0ae350a6bb846705ff9d085d1ae2c97ab409b1ff533ef7bcebfa8f">+635/-0</a> </td> </tr> <tr> <td><strong>VariableSettings.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-fb9c343df2d52c854489057d4a66a1b6c4052637ef12dca16c9b77c0a4e680f4">+696/-0</a> </td> </tr> <tr> <td><strong>VariablesDependenciesGraph.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-153d420e39a1fdf9b0918f8b765b21a5e9fe6fed4b142fd1c9e24af43c0bb525">+397/-0</a> </td> </tr> <tr> <td><strong>DashboardHeader.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-7ec062f2fc27df156ca18a22557c1f80426e3fa82c3cfd6386f48efc9e73f757">+440/-0</a> </td> </tr> <tr> <td><strong>AddTab.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-25b77cc0d60a268fc0fbd413e53b1c0ace69164ffd58dc0b0081717e4773b365">+767/-0</a> </td> </tr> <tr> <td><strong>TabList.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-1c0ad8f6163d343eba185ac20d0fe84478afd5975242abc0a957d7ac74a8a5a9">+604/-0</a> </td> </tr> <tr> <td><strong>ViewPanel.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-177dbf7e92561bc76e13819fd7a1d681f77b845071a7c0901857a26660b3ba54">+744/-0</a> </td> </tr> <tr> <td><strong>ApiDashboard.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-53095dbafa0cb9c6eed90240cb8af9f89d118168f6af76bdf51267a667ccff2d">+550/-0</a> </td> </tr> <tr> <td><strong>ErrorsDashboard.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-1330edb3964758b7c9cfbdfb077eac5fcce30b8b4d2f204d69ab71c4041d37c5">+178/-0</a> </td> </tr> <tr> <td><strong>WebVitalsDashboard.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-62eb2eceb30d2aa28e78d4ee898d09aae3d1f0fa176d4bca91055b50024e6c9f">+547/-0</a> </td> </tr> <tr> <td><strong>VisualizeLogsQuery.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-fdecf623f9a4bdfe679c6c2e4424f31cbce4a1234cb45e1de472189a46c9d4e2">+674/-0</a> </td> </tr> <tr> <td><strong>TraceBlock.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-1406f52daa846db3febbb595e81c192166b9e69bc190c5039b6c4866412b877a">+1/-1</a> </td> </tr> <tr> <td><strong>alertChartData.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-5ab33266e226684ae77d259392edb382f71436edec442411a5500451ce316b31">+259/-0</a> </td> </tr> <tr> <td><strong>calculateGridForSubPlot.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-f7067cef10cdf9d66fc91a46516c9f2bc0209489bc47fb3d1446666485269680">+374/-0</a> </td> </tr> <tr> <td><strong>colorPatette.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-d266bf5ce0a458ec9fa8120ff85c252f7a671dd6df9aece83daf7c7b05b50ed1">+576/-0</a> </td> </tr> <tr> <td><strong>convertCustomChartData.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-228c0f06dd35f43d80dc9f671803fba74ac7e218c1606247d1e44259a18b426e">+771/-0</a> </td> </tr> <tr> <td><strong>convertDashboardSchemaVersion.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-d32a1607489b29014dd8ecad34358644be46d2735cf49dfa5151671e591d6360">+537/-0</a> </td> </tr> <tr> <td><strong>convertPanelData.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-d798f99807f72b07f58e09bfe8723fdcee3dcd747f328436ef6bbd7d8f5afa36">+889/-0</a> </td> </tr> <tr> <td><strong>convertSankeyData.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-e9dce93200dba86a0e13d22ec5a0b5e0f4c5fb8349c904c8780fdb6fe675f4ae">+588/-0</a> </td> </tr> <tr> <td><strong>convertTableData.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-b3b39fac4e8b48b3ee80827502ece784d8e52f56fd2f1d80acac353fd3a9fe3f">+599/-0</a> </td> </tr> <tr> <td><strong>datetimeStartPoint.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-7c56f19e7b4c6f5738c814cb013f698fdfd065286ef4539e14a868e8e114a1c8">+214/-0</a> </td> </tr> <tr> <td><strong>getAnnotationsData.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-4b12626e491ea366087b3cdc2eb66012bf45555504313ca4664f3ae4d93b6e08">+351/-0</a> </td> </tr> <tr> <td><strong>useCustomDebouncer.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-f6c3bc11a1cdc66a9108245e3ec6080bf4f6f0b5a2eaea679546c0b1f00968c2">+307/-0</a> </td> </tr> <tr> <td><strong>variablesDependencyUtils.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-1a8fd83eb7a8b0c906e668e7e4120a40f7b9853d5bfb485a7c569ff980e4a780">+523/-0</a> </td> </tr> <tr> <td><strong>variablesUtils.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-769aea99ac476a78b01cb3bb4221b0a0f0d5fa99f3dbc8c77022088ed8024f1b">+533/-0</a> </td> </tr> <tr> <td><strong>sqlUtils.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-f22df136a6cdfbacf2b637d4902002337620c8e981dbacfdd705455ff899f12d">+1283/-8</a></td> </tr> <tr> <td><strong>visualizationUtils.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-3312f2b98f34814e89192700cc856231923839bdcd3ea687f271242762b4b3bc">+55/-0</a> </td> </tr> <tr> <td><strong>DashboardJsonEditor.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-4dfda31e9159f979559afc36652350d155429b73336f014017b27ff96ad58dcc">+551/-0</a> </td> </tr> <tr> <td><strong>DashboardSettings.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-b29b3e95fd1dfffba34ec05ed6333941f07ee79585feb5e8203eb5958919338f">+640/-0</a> </td> </tr> <tr> <td><strong>Dashboards.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-a8059d6830fa3c72dbe023f76ac813661d62871a379baa30c05204ad86c92699">+813/-0</a> </td> </tr> <tr> <td><strong>ImportDashboard.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-b29b42b94a3219b4074b132168c0b5f5b93e737dc557ba7b930d14455b38b267">+827/-0</a> </td> </tr> <tr> <td><strong>PanelLayoutSettings.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-34bcd5c5f9b7a2a682f4d4e9c10e3ab4f13a4cc54a6a20bb543f11ae8286d5a1">+423/-0</a> </td> </tr> <tr> <td><strong>RenderDashboardCharts.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-f76e3b54dc7bfd768172c8faba707c7e31bf0516837cb9073bbdf04823f67602">+700/-0</a> </td> </tr> <tr> <td><strong>ScheduledDashboards.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-f54afa04727c65f2050699e063d693d6fb1833c8e3f1f7b25002de89ab5bb2ff">+519/-0</a> </td> </tr> <tr> <td><strong>AddCondition.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-0655e4082a18c9f229d04340341bb32474ae46b3d6e29b29009ef06dcc12e54c">+425/-0</a> </td> </tr> <tr> <td><strong>DashboardFiltersOption.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-d3e73ec3d32f9068b22b3697ba8a23e3100285b7c92cc86f7d7e88477bb29bba">+878/-0</a> </td> </tr> <tr> <td><strong>Group.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-556364c74c348eba28f5d8bad6fb23b956008d3f6b9171316ea3ee12009201bd">+718/-0</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: ktx-abhay <abhay.padamani@kiara.tech> Co-authored-by: Shrinath Rao <shnath@openobserve.ai> |
||
|
|
1e9761ba61 |
feat: logs page highlighting (#8059)
### **User description** This PR helps to highlight text in logs page and also adds a left border for each depending upon the status of the logs ___ ### **PR Type** Enhancement ___ ### **Description** Add LogsHighLighting component for semantic highlighting Highlight query terms across logs and JSON Visual status indicators via colored borders/lines FTS-aware coloring for selected columns ___ ### Diagram Walkthrough ```mermaid flowchart LR Highlighter["LogsHighLighting.vue (new)"] -- "used by" --> Detail["DetailTable.vue"] Highlighter -- "used by" --> JsonPrev["JsonPreview.vue"] Highlighter -- "used by" --> Table["TenstackTable.vue"] Status["statusParser.ts (new)"] -- "row/log status color" --> Detail Status -- "row status stripe" --> Table Colors["keyValueParser.ts (new)"] -- "theme colors" --> Highlighter Composable["useTextHighlighter.ts (new)"] -- "highlight + semantic color" --> Highlighter Search["SearchResult.vue"] -- "pass highlight + FTS keys" --> Table ``` <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>LogsHighLighting.vue</strong><dd><code>New component for semantic JSON/log highlighting</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8059/files#diff-4ef4ac0444004add270de4da30fa39bafd95bd7f1c408d28cf6737655fc152eb">+324/-0</a> </td> </tr> <tr> <td><strong>DetailTable.vue</strong><dd><code>Add status top border and inline highlighting</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8059/files#diff-80552b5d25fa6cef9fbbe430b1865d761c4b132284c2d2175afceea8cbabc8c7">+21/-6</a> </td> </tr> <tr> <td><strong>JsonPreview.vue</strong><dd><code>Use highlighter for key/value rendering</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8059/files#diff-3985073134d35ff074742944b114d0905524038b42e6d2ac887fef2c8436fb16">+8/-14</a> </td> </tr> <tr> <td><strong>SearchResult.vue</strong><dd><code>Provide highlight query and FTS keys downstream</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8059/files#diff-5e65533aa4754bb6d0074fda18ffc1ecacded3b9ca6bc28a161c3f6b12f20195">+16/-0</a> </td> </tr> <tr> <td><strong>TenstackTable.vue</strong><dd><code>Integrate highlighter and add status stripe</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8059/files#diff-bc3c669f5ab65a42ae378df1f7d6b35014c9c220790bdcc72b47f55d1385dc22">+34/-6</a> </td> </tr> <tr> <td><strong>useTextHighlighter.ts</strong><dd><code>New composable for text highlighting logic</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8059/files#diff-b18d6e5b667ce7b485a0592cddcaf47cf68b10b6a1b75bd006f21917c4343147">+486/-0</a> </td> </tr> <tr> <td><strong>keyValueParser.ts</strong><dd><code>Theme-aware color palette utilities</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8059/files#diff-efcf08bdfe13eeac90f7dadbdb5892ae614d49b16f4f75bfc6225700d0ba7b73">+53/-0</a> </td> </tr> <tr> <td><strong>statusParser.ts</strong><dd><code>Derive log severity and colors</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8059/files#diff-c189f5de10234dccf5f5e5b332dbb41f54c21a366ed4817c963bbf2e954d620a">+246/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Bug fix</strong></td><td><details><summary>2 files</summary><table> <tr> <td><strong>Index.vue</strong><dd><code>Fix column update timeout scoping</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8059/files#diff-0323c3da69b369843c5d72bf4df5b00ca6b5147192a213baf331659ecf92af62">+3/-3</a> </td> </tr> <tr> <td><strong>useLogs.ts</strong><dd><code>Correct FTS key detection logic</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8059/files#diff-1040f61354f92711e0e77ed4e9bfa15586d45a94c7e2ab06cc37372068030e7b">+1/-1</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ |
||
|
|
12fc60af15 |
fix: unit test latest v2.0 (#8151)
### **User description** added unit test cases for missing files ___ ### **PR Type** Tests, Enhancement ___ ### **Description** - Add extensive unit tests coverage - Expose internals for testability - Improve VRL language modularity - Export utility for reuse in tests ___ ### Diagram Walkthrough ```mermaid flowchart LR specs["Add comprehensive spec files"] -- drive coverage --> composables["Composable internals exposed for tests"] composables -- supports --> store["Store mocks and helpers updated"] language["VRL language keywords exported"] -- reuse in tests --> specs billing["Export formatDate utility"] -- reuse in tests --> specs ``` <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>SearchBar.spec.ts</strong><dd><code>Add 145+ tests for SearchBar methods</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-63ac75d3fe278dad233e7dd7c51b3b33076d54a776b89ae05190d8522130c78b">+2196/-0</a></td> </tr> <tr> <td><strong>useStreams.spec.ts</strong><dd><code>Rewrite and expand useStreams unit tests</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-513e2d53c46c553904a054e9c2cd12d33e800afc54fe5b4192c9782382ecd79b">+727/-175</a></td> </tr> <tr> <td><strong>useStreams.ts</strong><dd><code>Expose internal helpers for testing</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-a083369344f022cdf8d4f536719179b1d920369e33e2e26234e70dd36d151a7c">+11/-1</a> </td> </tr> <tr> <td><strong>store.ts</strong><dd><code>Add meta_org to default store state</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-0f8dff694a1fcfaa42d432168e435b7a2aa122d075fedfd6e75e532aca3b2a73">+1/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>2 files</summary><table> <tr> <td><strong>vrlLanguage.ts</strong><dd><code>Export VRL keywords and refactor usage</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-d8baadeb1ccdabd0e424d3f335476417990ae5f680645db52ba03a94b75afd7a">+7/-4</a> </td> </tr> <tr> <td><strong>convertBillingData.ts</strong><dd><code>Export formatDate for external use</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-56fa0a54f04a4fd9d5a715f5dbfe80ebcb852a39720160399e427021f75185ec">+1/-1</a> </td> </tr> </table></details></td></tr><tr><td><strong>Additional files</strong></td><td><details><summary>41 files</summary><table> <tr> <td><strong>AddOpenobserveType.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-d4c9e84859e41b57861e8ec93d08f28111c13c5ca1143c0613f9e3f55051a2f2">+365/-11</a></td> </tr> <tr> <td><strong>FolderList.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-0c62fad007c4194fb43b3986b2cbdfb7f6317e8e1e4e402d78ec44c951e7973b">+941/-0</a> </td> </tr> <tr> <td><strong>AppOrganizations.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-0be0b81d3cd8b7003dc2aaf283fbe3f2434963086540a4d6bf1dd513fe9ed19f">+1021/-0</a></td> </tr> <tr> <td><strong>User.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-52945c253c25b4961ba3c66891234a74aa62c69e70f70ee67388bb406f0847cd">+779/-0</a> </td> </tr> <tr> <td><strong>User.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-e973c2a665f9b27b94673ba64cc5b23650300836a727a2e07673c8e26305aee5">+10/-3</a> </td> </tr> <tr> <td><strong>LogstashDatasource.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-2cd019295a25886a037e6ede5cad795b52851a377f48beb46f3897bc6d64a20b">+425/-2</a> </td> </tr> <tr> <td><strong>Login.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-746b43968d685362866c3f97bf2b5e0846bac7463fe1ecb080c1c7d962cb855b">+229/-1</a> </td> </tr> <tr> <td><strong>AssociatedRegexPatterns.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-4ca41bf14fd6a3c79a3877324a7c7520a25d1d33f97fe947b2f6dd4bbf6ca5b4">+310/-0</a> </td> </tr> <tr> <td><strong>AssociatedRegexPatterns.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-c6fce5e1c83798991b6ff19effb23c67af59f38fac0b9e56dcab7a09d139f550">+1/-0</a> </td> </tr> <tr> <td><strong>Nodes.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-65fde080f2ef775dab71d503b730bf029d13640ac241ded1dc22a72185a12082">+1/-0</a> </td> </tr> <tr> <td><strong>OrganizationManagement.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-bff2884ebe60873c476c6a826739f210aca57e39cd503ca0026e48388be48697">+1090/-0</a></td> </tr> <tr> <td><strong>OrganizationManagement.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-21e2431538cb6b76e5ef5b367c6df8fc02ad8f6c1294f438be9937c7481ea9ff">+3/-0</a> </td> </tr> <tr> <td><strong>OrganizationSettings.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-03458cff72df35e454f83d964d2505e87b9c37e4488333e0d18a7757f2b1ebe4">+777/-0</a> </td> </tr> <tr> <td><strong>useEnterpriseRoutes.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-ce0d8e19a397a63cfe5a423399b9c8f8f08eb0e30913ba9b885a00f5703d2ede">+784/-0</a> </td> </tr> <tr> <td><strong>useIngestionRoutes.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-3b7ebacf9481f4643a2b56ffe53ab161fc89d416e280d45b48568866a4dee40c">+1013/-0</a></td> </tr> <tr> <td><strong>useManagementRoutes.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-28a4eb5ed72bef3db05dca1f8e45eef0836819fe0c747783b22cce966d7d6ad4">+608/-0</a> </td> </tr> <tr> <td><strong>useAiChat.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-666a3e460b35ed780ab299fb01537fe3afdb12dabe2b363d5d91a08a728903f9">+614/-0</a> </td> </tr> <tr> <td><strong>useAiChat.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-830ee4f21bdbbd0fa5c5c0f43b0a1d0200831e07ccddc91982cf0371c801b046">+3/-0</a> </td> </tr> <tr> <td><strong>MainLayout.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-59def4c2a6d83249918d30d825ccfb0aa4ce9616586fe13f16a7e29b3827cdbc">+495/-22</a></td> </tr> <tr> <td><strong>MainLayout.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-91e4134141264c4624d4eb4cfa987b33ed31eb6f551e089c0b26f2610dd54362">+6/-1</a> </td> </tr> <tr> <td><strong>MetricLegends.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-87f5d1b4980d975625d85d549607833927202ebffe226643723bc733c344622f">+575/-0</a> </td> </tr> <tr> <td><strong>MetricList.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-cfe67d5bd5005164060b2b219a86074a5b6330e1759260803e54e89255aeb86a">+976/-0</a> </td> </tr> <tr> <td><strong>MetricList.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-bba38d43b27f28395343746a2de5411a2b18ab093d1843ad6bd413ba50a2b236">+5/-0</a> </td> </tr> <tr> <td><strong>SyntaxGuideMetrics.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-e83d30b644b4e25b1867e748793726b149a5f8e5e94aac273d32b9fa9f9d73a6">+505/-0</a> </td> </tr> <tr> <td><strong>HomeView.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-73e32dfbcdec6f87abe68984231fb1227502397e28fd1d91cd9579024010fb82">+771/-0</a> </td> </tr> <tr> <td><strong>Nodes.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-bc3ed81e6399bf6502b432ec0935da08fd0a824adb265a4f579002b4bca13474">+688/-0</a> </td> </tr> <tr> <td><strong>convertBillingData.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-07358b9d1c1df7af083b9843924628f0525bb2c2552ee5e1392b461a99cec321">+492/-0</a> </td> </tr> <tr> <td><strong>convertLogData.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-39de9d9ab51415a842d8aa8cee7fa1beb7234eaed7dfcb996a579a2ef4930b4c">+516/-0</a> </td> </tr> <tr> <td><strong>convertLogData.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-92a6bf770bda75f5e07d57d6cc472f8defa9db6abf02e58de542988b311fed55">+1/-1</a> </td> </tr> <tr> <td><strong>promQLUtils.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-801511331f719d887e0c2df01bfe47bee812895fb67fde768f3b33ba48ace614">+577/-0</a> </td> </tr> <tr> <td><strong>sqlUtils.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-f22df136a6cdfbacf2b637d4902002337620c8e981dbacfdd705455ff899f12d">+2074/-15</a></td> </tr> <tr> <td><strong>sqlUtils.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-dde40e8fcb5c37b06c011ede08922c44a3c025682fbc341aee97ba046b73a0e3">+4/-1</a> </td> </tr> <tr> <td><strong>vrlLanguage.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-8b8d40ee6bba3647f6e5964e1011778519325e45dbde2cf9abc64e3f9308d3e8">+866/-0</a> </td> </tr> <tr> <td><strong>vrlLanguageDefinition.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-7885cf603efcffce2a031eaab866f260d0f699f1a52b961ecd77f0bf8aa72039">+651/-0</a> </td> </tr> <tr> <td><strong>AppAlerts.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-7ac6d93d3aa4a91d52bd751822e423a21158e09bfe70cf96fba46f42376d2acf">+798/-27</a></td> </tr> <tr> <td><strong>Ingestion.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-81be229daf4204aaa0133a1c4cab618bbac68ab704b74ecf3e121636f16c6e61">+1026/-0</a></td> </tr> <tr> <td><strong>Ingestion.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-97b8e8ed2a1260a39442563c7447d4f6d4830a37d47258920d6f94a292cd2d77">+68/-64</a> </td> </tr> <tr> <td><strong>Login.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-92c3c0344a73a30eadb1c98f849f7297c460f50804cdbb2d34dd374fbcf83d74">+1183/-0</a></td> </tr> <tr> <td><strong>ShortUrl.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-3838b4efef178fdab0ba9652f21468b36918b3ca9b84783c564cde2a6556ed39">+326/-29</a></td> </tr> <tr> <td><strong>ShortUrl.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-b7ffcc5de24f9e1db5a3a8e78a686727360f9061ca6f9f8ae60456c3d603f9b7">+7/-0</a> </td> </tr> <tr> <td><strong>User.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8151/files#diff-1c14af61b2a316a418e1c7b79ff459ea61e1d1ac1f57b7c768421aa8cdd58cd1">+528/-113</a></td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ |
||
|
|
e92ed4bcc2 |
fix: Traces Component Testing (#7877)
### **PR Type** Tests, Enhancement, Bug fix ___ ### **Description** - Extensive unit tests for TraceDetailsSidebar and TraceTree - Add data-test attributes across trace components - Handle zero duration in formatTimeWithSuffix - Fix highlightSearch quoting and JSON formatting ___ <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody></tr></tbody></table> </details> ___ |
||
|
|
4963bd648d |
fix: parse cte query to extract stream name (#8102) (#8116)
### **User description** - #8080 - #8098 ___ ### **PR Type** Bug fix, Enhancement ___ ### **Description** - Fix stream selection for CTE queries - Add robust stream extraction utility - Make query updates async-aware - Adjust watchers to trigger reliably ___ ### Diagram Walkthrough ```mermaid flowchart LR SQL["SQL query (incl. CTE)"] -- parse --> Extract["getStreamNameFromQuery()"] Extract -- returns stream --> Panel["useDashboardPanel: updateQueryValue()"] Panel -- set --> StreamField["currentQuery.fields.stream"] Watcher["Vue watch hooks"] -- trigger on changes --> Panel ``` <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>Stabilize watcher for stream type changes</code> </dd></summary> <hr> web/src/components/dashboards/addPanel/FieldList.vue <ul><li>Change watcher source to array form.<br> <li> Ensure stream list reloads on type changes.</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8116/files#diff-a071c06e3e26629cb4ae4751450acc39c61fa49b07a1cc4be3711697829668d4">+5/-3</a> </td> </tr> <tr> <td> <details> <summary><strong>sqlUtils.ts</strong><dd><code>Add robust stream extractor for SQL/CTE queries</code> </dd></summary> <hr> web/src/utils/query/sqlUtils.ts <ul><li>Add <code>getStreamNameFromQuery</code> to parse SQL/CTE.<br> <li> Safeguard recursion and circular refs with WeakSet.<br> <li> Handle FROM, WHERE, SELECT subqueries.<br> <li> Gracefully handle parser errors.</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8116/files#diff-dde40e8fcb5c37b06c011ede08922c44a3c025682fbc341aee97ba046b73a0e3">+76/-0</a> </td> </tr> </table></td></tr><tr><td><strong>Bug fix</strong></td><td><table> <tr> <td> <details> <summary><strong>useDashboardPanel.ts</strong><dd><code>Async query parsing and CTE-aware stream resolution</code> </dd></summary> <hr> web/src/composables/useDashboardPanel.ts <ul><li>Import <code>getStreamNameFromQuery</code>.<br> <li> Make <code>updateQueryValue</code> async and await in watcher.<br> <li> Use stream name from parser for selection, including CTE.<br> <li> Remove redundant parsing branch; minor bug introduced in logs flag.</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8116/files#diff-fbba1700750053b9eaf38ddd30dab84531bc44131c795ebb713811e4930cd7cb">+15/-23</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ |
||
|
|
f78f5d79c8 |
fix: added unit test cases (#8121)
### **User description** with this PR the coverage is -----------------------------------------------|---------|----------|---------|---------|------------------------------------------------------------------------------------- File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s -----------------------------------------------|---------|----------|---------|---------|------------------------------------------------------------------------------------- All files | 48.05 | 82.25 | 50.81 | 48.05 | ___ ### **PR Type** Enhancement, Tests, Bug fix ___ ### **Description** - Add comprehensive unit tests across modules - Expose component internals for testability - Safely access org identifier with optional chaining - Minor exports to composables for testing ___ ### Diagram Walkthrough ```mermaid flowchart LR components["Vue components"] expose["Expose methods/refs via defineExpose"] specs["New/expanded unit tests"] fixOrg["Optional chaining for org identifier"] composables["Composables export additions"] components -- "defineExpose, returns additions" --> expose expose -- "enables" --> specs components -- "query params use ?.identifier" --> fixOrg composables -- "export more helpers" --> specs ``` <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>1 files</summary><table> <tr> <td><strong>index.vue</strong><dd><code>Use optional chaining for org identifier in routes</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-699c63979f851c48ad440a078e93282fd797a18fc065e5331b2e41122ddb8b69">+15/-13</a> </td> </tr> </table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>39 files</summary><table> <tr> <td><strong>Stream.vue</strong><dd><code>Expose stream form methods and state for tests</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-1a17ced9dc89022502cab0a6f9b97b413c2a2c4f8219733d063fc0180d361739">+33/-0</a> </td> </tr> <tr> <td><strong>RealTimeAlert.vue</strong><dd><code>Expose alert editor methods/data for tests</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-c3ae6b47832eb33f9ca877cc7165d079de14850e5c5d43a227102ba40326b9d8">+19/-0</a> </td> </tr> <tr> <td><strong>ExternalDestination.vue</strong><dd><code>Expose destination form functions and state</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-7ed6a9ef676d7d6db5440d4157512f731bad58716c351ca39015125a8a9d2df5">+22/-0</a> </td> </tr> <tr> <td><strong>PerformanceSummary.vue</strong><dd><code>Export additional helpers and imports for tests</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-fdf59594c111c1af03772c9deef4ba07cf2c2d00c9609737a0ea3e3c76fb1c1b">+3/-1</a> </td> </tr> <tr> <td><strong>StreamFieldInputs.vue</strong><dd><code>Expose field input handlers and state</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-c8173413939f320f197b0f8790e619da18666f79009345f72b3325e89bbb7566">+17/-0</a> </td> </tr> <tr> <td><strong>FilterGroup.vue</strong><dd><code>Expose group manipulation helpers for testing</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-8d5a73bea3aa0b5c86d48cda4a61ee3e30f27797ac2a5add1ee8bd66c75bef23">+17/-0</a> </td> </tr> <tr> <td><strong>ImportDestination.vue</strong><dd><code>Expose validation and helper functions</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-814b8ef1dbb4eebca9dfab72452d9a90d5f3fa5886dea8e82ac0bde44f66b445">+7/-0</a> </td> </tr> <tr> <td><strong>PipelinesDestinationList.vue</strong><dd><code>Expose list helper functions and selectedPerPage</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-088c66f5a34e73a5350a794a772e5d905262277337c937dd36f4295072203ebf">+6/-0</a> </td> </tr> <tr> <td><strong>SearchBar.vue</strong><dd><code>Expose additional editor and action handlers</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-81893de4edf186b0556f610acb280c87baa2ffe67d3b48a60a866094c7635baf">+11/-0</a> </td> </tr> <tr> <td><strong>ImportTemplate.vue</strong><dd><code>Expose template validation and helpers</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-d22684c5142a49b8925a9dba1ef67631128caa95de66e71ba2a5b8120a0b91c6">+6/-0</a> </td> </tr> <tr> <td><strong>IndexList.vue</strong><dd><code>Expose websocket/search helper functions</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-08f058f883b659e713e606991a7ea37ae1ff016b7cccef970489ab5840dc3d09">+11/-0</a> </td> </tr> <tr> <td><strong>ImportAlert.vue</strong><dd><code>Expose alert validation helpers</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-0f40dbf2757672e39ad16b86dddc59b568ca2e6ca36850420cd7be617da12d38">+4/-0</a> </td> </tr> <tr> <td><strong>AlertsDestinationList.vue</strong><dd><code>Expose destination list helpers for tests</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-e9d05ba6c071c0e2f5d9ef7acdef757f79910abd6897b29e27b069a10d4ba8de">+7/-0</a> </td> </tr> <tr> <td><strong>SysLog.vue</strong><dd><code>Expose syslog route helpers and state</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-2f538c29fd1d51aa470edad915666faca1deade7413645f033f2a67354b3726c">+9/-0</a> </td> </tr> <tr> <td><strong>TelegrafConfig.vue</strong><dd><code>Expose ingestionURL in setup for tests</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-f934fcfd5f71fff85e099f5ddf133a1cdd2a02aa3ade339dee73d54474480acf">+2/-0</a> </td> </tr> <tr> <td><strong>schema.vue</strong><dd><code>Expose schema helpers and formatters</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-9196be2ccae4054a00b0b1aa9d1e87b366c10920d6eaf9ef8c6e6293d50bcf46">+7/-0</a> </td> </tr> <tr> <td><strong>AssociatedRegexPatterns.vue</strong><dd><code>Expose pattern state/check helpers</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-c6fce5e1c83798991b6ff19effb23c67af59f38fac0b9e56dcab7a09d139f550">+6/-1</a> </td> </tr> <tr> <td><strong>AddFolder.vue</strong><dd><code>Return defaultValue for tests</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-41d2f8fac44084c004d8386ea4cc32e9c5d3e33266c4009cc855e57fb00a41af">+1/-0</a> </td> </tr> <tr> <td><strong>ImportRegexPattern.vue</strong><dd><code>Expose regex pattern validation and helpers</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-e8e1bcb5a02311504d7d571090eab27a270aaa71cae185ad2703023e2e70a31e">+4/-0</a> </td> </tr> <tr> <td><strong>SearchSchedulersList.vue</strong><dd><code>Expose date helpers and router</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-0c0a4097c53f07712d35562b1336602bf24faddedab77a9f5717f5582dcac2f1">+5/-0</a> </td> </tr> <tr> <td><strong>MoveAcrossFolders.vue</strong><dd><code>Expose getModuleName from setup</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-3826ffbf7e4cbae5b621527c9df856e1bd3b349b78d4a6c514b6967636d04237">+1/-0</a> </td> </tr> <tr> <td><strong>SearchResult.vue</strong><dd><code>Expose row/partition helpers and column sizes</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-5e65533aa4754bb6d0074fda18ffc1ecacded3b9ca6bc28a161c3f6b12f20195">+5/-0</a> </td> </tr> <tr> <td><strong>AddUpdateTicket.vue</strong><dd><code>Expose validation/upload methods via expose</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-bd6f97ffe635a2127610e0bbc94b1c9fe40a6ca1dff98e72efc4a449116c59db">+2/-0</a> </td> </tr> <tr> <td><strong>usage.vue</strong><dd><code>Expose getUsage and router</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-87c1e1d75e488a25773db68ada1e49913ad50be7971fbb588939941a3ea6302b">+2/-0</a> </td> </tr> <tr> <td><strong>Databricks.vue</strong><dd><code>Expose database config state</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-2ff8f0c23b75de8b87f86d00af9de4f6c8ceb335ade6cbef227cb37f26d42ae6">+4/-0</a> </td> </tr> <tr> <td><strong>SqlServer.vue</strong><dd><code>Expose database config state</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-23653eb1e4b5fa9fc519ac44cdf06b01e645d61c86340e59fcf58eb11702008f">+5/-0</a> </td> </tr> <tr> <td><strong>JsonPreview.vue</strong><dd><code>Expose getTracesStreams function</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-3985073134d35ff074742944b114d0905524038b42e6d2ac887fef2c8436fb16">+1/-0</a> </td> </tr> <tr> <td><strong>VisualizeLogsQuery.vue</strong><dd><code>Expose hovered series and metadata</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-979b01d943d58c5d70faeeac5948b7f02f0b2392a12b84ef07ba7f7393ab0261">+2/-0</a> </td> </tr> <tr> <td><strong>FrontendRumConfig.vue</strong><dd><code>Expose defaultConfig for tests</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-a90414833508a6d5f76b245c65f2a2ff067ada5e1c5c09b1b53598a4881e2676">+1/-0</a> </td> </tr> <tr> <td><strong>OpenTelemetry.vue</strong><dd><code>Expose ingestionURL in setup</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-45be3e74a543860331e1cbb11c299a81d5f2e49030bcc3eab03dd6db09f93c5b">+1/-0</a> </td> </tr> <tr> <td><strong>Index.vue</strong><dd><code>Expose ingestRoutes for tests</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-a8ce6281b41747a4c58b111d6c31a57f8597b2c33f79d9b236af548d5683b200">+1/-0</a> </td> </tr> <tr> <td><strong>PipelineFlow.vue</strong><dd><code>Expose store and setViewport</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-9c7475a54f0c895dd49eb0c5b53fe0a76ceff0520f667a9cb065b364557ced50">+2/-0</a> </td> </tr> <tr> <td><strong>MessageQueues.vue</strong><dd><code>Expose messageQueueTabs</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-ab520bb9b203fc532d2544ba60b140600cbc0efb9773e000c1867076275780bc">+1/-0</a> </td> </tr> <tr> <td><strong>Database.vue</strong><dd><code>Expose databaseTabs</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-9f043be1b81e96e163d333d8fac934fbd8cf9009076eeaaf2bd8ee360a3e913c">+1/-0</a> </td> </tr> <tr> <td><strong>Languages.vue</strong><dd><code>Expose languagesTabs</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-5ac446e8fed967883b402dfe4ff686717138a76f0333c2416a6b6f955a0086fc">+1/-0</a> </td> </tr> <tr> <td><strong>Networking.vue</strong><dd><code>Expose networkingTabs</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-ca61b8331afde2b46c0a193e0cc31e2b6b8a915aad1841fbbda229450af02726">+1/-0</a> </td> </tr> <tr> <td><strong>Recommended.vue</strong><dd><code>Expose recommendedTabs</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-d52f7f52bf8f6d3d639e5d0a550bed82223cd4fbd3eee3c257b7f80e0b8ee6d2">+1/-0</a> </td> </tr> <tr> <td><strong>SearchBar.spec.ts</strong><dd><code>Rewrite and expand SearchBar unit tests</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-63ac75d3fe278dad233e7dd7c51b3b33076d54a776b89ae05190d8522130c78b">+1058/-1118</a></td> </tr> <tr> <td><strong>GCPConfig.spec.ts</strong><dd><code>Add unit tests for GCP config logic</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-76e896e96fdae254b7b569e0d3afdea55b05c7777d6eda2da0374fe782d74457">+533/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>usePromqlSuggestions.ts</strong><dd><code>Export additional suggestion helpers/state</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-250bf4b2d8cb3845005f72188d73ab954359f841e15c4f217708beac1493e83a">+4/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Additional files</strong></td><td><details><summary>101 files</summary><table> <tr> <td><strong>App.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-e5d10660c09127e3b4234cd8fe18303e53db38e43a1c5a6edb13032afbebe28f">+291/-0</a> </td> </tr> <tr> <td><strong>AutoRefreshInterval.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-4fae96431d981a4338e96dd393820e3497ed56382adc77fab6024f6efd15bd4c">+320/-0</a> </td> </tr> <tr> <td><strong>ConfirmDialog.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-16ffba01e15b66513827b99a68c002b567e65bd1124f9bcf7c4db8db5795df8a">+61/-0</a> </td> </tr> <tr> <td><strong>CopyContent.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-a09160ad7355806c5f4f5b0194a6026ed7c24a77f3de0bce58ffa67c4e97de4d">+348/-0</a> </td> </tr> <tr> <td><strong>CustomDateTimePicker.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-f3c4dc21e87d485ae2d167b1f4e993ffc00b941b207a664ea504468842f4d428">+338/-0</a> </td> </tr> <tr> <td><strong>DateTime.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-ee6ae1a77af32afb0b0410cbe812d546c8639815748908e716d48a189695d8ec">+543/-0</a> </td> </tr> <tr> <td><strong>MenuLink.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-bd04ff500fc31583a430993830eed36cdf6254c2ce1a52b8a58a07b89bb9f825">+56/-4</a> </td> </tr> <tr> <td><strong>PendingSubscriptionWarning.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-a38d050077b70a4e16ed3fa89df6978e0d15284b824fc1840ed3d0f10403f9f8">+301/-0</a> </td> </tr> <tr> <td><strong>ResumePipelineDialog.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-ca982d78b8c120585dcf75837fbc09426c3fa2dd7e0f3a8d6cdbf9954aee6027">+136/-0</a> </td> </tr> <tr> <td><strong>RouteTabs.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-f4940a707bb9a1790b34d87c2588bb957876214edbfaf0072b2519afe230d077">+400/-0</a> </td> </tr> <tr> <td><strong>SanitizedHtmlRenderer.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-b45de775a1fc42af052b7af7b5c0b40512fab530db228a548e5bbe0510e774de">+350/-0</a> </td> </tr> <tr> <td><strong>FileItem.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-189b4998b9446d2b44aa820117eb54f555e15fb5d12dbd5bf61b4722fbc85b4e">+395/-0</a> </td> </tr> <tr> <td><strong>ScriptEditor.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-7989b3c2125f44e258f2e1e12dbb6e0608c2cfd6165619815501c8a4548b641c">+408/-0</a> </td> </tr> <tr> <td><strong>ScriptToolbar.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-5057edcc2e7f7f2bd115d1ad3b00bb668607662edee60131ba04fd078e41eaef">+412/-0</a> </td> </tr> <tr> <td><strong>AddAlert.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-84362398fea8abd9acf30f4f40ba8d4cf27348677454017bd4e6f568d5176ac6">+5/-3</a> </td> </tr> <tr> <td><strong>AlertsDestinationList.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-796a77635e67bca70cc19a671e1862438f78a9391ede0e936763e2204bd7a876">+709/-0</a> </td> </tr> <tr> <td><strong>FilterCondition.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-d09ca687da324598f7c1f17610406dda5c47faba21b1eba5dd606ce8f5a2671e">+463/-0</a> </td> </tr> <tr> <td><strong>FilterGroup.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-1628547d4b6650b1e87817989b84ffb25895c64ad789457b094860fcd7f13447">+1405/-0</a></td> </tr> <tr> <td><strong>ImportAlert.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-553f61b4cb949550d09d7016031a29361e4aaa22ad86f20781787bc4ccf43272">+951/-0</a> </td> </tr> <tr> <td><strong>ImportDestination.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-cf334a840c66788867f54f726f5d9431f8e1197637c641469a34e63facfcb180">+815/-0</a> </td> </tr> <tr> <td><strong>ImportTemplate.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-1a14d1b5cdc535c0fd982bcb6c02af07b647d5013922084df5d208c673eefaff">+875/-0</a> </td> </tr> <tr> <td><strong>PipelinesDestinationList.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-f749b2cdb5476b289a38418201bf27c69a7e9ab01237f6ffefc7b23392c3ff71">+529/-0</a> </td> </tr> <tr> <td><strong>RealTimeAlert.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-3b33541be3d07c04f1afd3b0a716e683b804b4f8adcba09b4fc5f3ddd0c14ef6">+693/-0</a> </td> </tr> <tr> <td><strong>ScheduledAlert.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-c85c209fe2d6eb3e8a223ddc1124e713f21ce3bbddf657be931cf8726f2e2934">+1197/-0</a></td> </tr> <tr> <td><strong>VariablesInput.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-1c6c211f8e8e49e12619c73ac450cfdc6f92f5ffc533bf09716477fa37154786">+353/-0</a> </td> </tr> <tr> <td><strong>AddCipherKey.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-1ae71f00dfb6f9424d2443856ca3a419aaf2ee0c08900f7ef2ca44e41c1982e9">+507/-467</a></td> </tr> <tr> <td><strong>AppDialog.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-28cde24b3e035186bbdf389f3c7560ba087588fd52d377c5615d50a6b5ad3dc7">+443/-0</a> </td> </tr> <tr> <td><strong>AppTabs.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-1a762da82b05a89aaea5cfac75315972be2fcc622d8dcabd9bb6e10a091a2e9d">+132/-0</a> </td> </tr> <tr> <td><strong>JsonEditor.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-be62ee12fe0b191ed850f0d8c6be49abc52596a06bfd10ac037ecc8f758d2660">+107/-0</a> </td> </tr> <tr> <td><strong>LoadingProgress.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-6096c465ac03fdbe599251405ff150d38ffc2f42be501d93723a6cc9f8eeae52">+153/-0</a> </td> </tr> <tr> <td><strong>RelativeTime.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-1ab920651a73975c32a1e00c0c6c0596866bf65b6aeec005e0d17f5084fddfef">+75/-0</a> </td> </tr> <tr> <td><strong>AddFolder.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-c47fb42fd03cf2b19f7c1da98ec484699730d00d2a5ae348002df727c6f009b4">+545/-0</a> </td> </tr> <tr> <td><strong>FieldList.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-b32e6b73a1268169f32fcd0a092350e543c3d4ffb00eef685aed4ba8c36ac6a1">+907/-0</a> </td> </tr> <tr> <td><strong>MoveAcrossFolders.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-4bce3286733956ade6e6f93cc65f471314a07e610b7e3f57a95050f683fc688a">+1385/-0</a></td> </tr> <tr> <td><strong>AddFunction.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-5bf8cf7b136d01ade73a969358f28642eca484ee1f93008f2787405bc928c0df">+883/-0</a> </td> </tr> <tr> <td><strong>EnrichmentSchema.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-020714ac53ba9e0397b5f0d7fa40bbb54638a30858d2e85693e117e3616c03d1">+394/-0</a> </td> </tr> <tr> <td><strong>FullViewContainer.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-498a7631461da0b1acbb272f4e1be20f999a28cdbf66f3e2f86b2f59b82841fd">+503/-0</a> </td> </tr> <tr> <td><strong>FunctionList.spec.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-555eb5d72b94d73c66cc303b1e3cece61564b622f7b1010219a23761c21f4c55">+0/-618</a> </td> </tr> <tr> <td><strong>TestFunction.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-c1b26d908f381d548650300e436d7b2e22410ef4e3d6508287c951add6633f3c">+598/-0</a> </td> </tr> <tr> <td><strong>ServiceAccountsList.spec.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-7b77b3425b30af8671b95b2c74702c89cf374669c2dc67a0b49ec182d30bedcd">+415/-99</a></td> </tr> <tr> <td><strong>AscSort.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-afc2d5fea4960d77d9f0487a89139f5409c9f55e34c3a58aedc8664cb9465c36">+200/-0</a> </td> </tr> <tr> <td><strong>DescSort.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-f6c074687e3f02ec34f0c398f64a100f5511baf1789e5dd280d48f999dfd8505">+231/-0</a> </td> </tr> <tr> <td><strong>FunctionIcon.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-5ce858f61f52bf2fdad1dc34d3ecdd852f38c66e329b6f71a4eb25f745530ada">+313/-0</a> </td> </tr> <tr> <td><strong>PipelineIcon.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-28fb2dcadc48a4bf7407fe99d2dddcd4993b430fe8398db23c786abd9cdad427">+340/-0</a> </td> </tr> <tr> <td><strong>Custom.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-75fb68bb0e3ab0416c7a6840bd615a0432026c0675b7b8db80cedd8a29f07d0f">+941/-0</a> </td> </tr> <tr> <td><strong>Database.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-890a9b5f5bde73f36522a300d5ada6f14fae2a94bdb3f061ac3e7d1d0cb9cd8e">+775/-0</a> </td> </tr> <tr> <td><strong>DevOps.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-8dbbccb5f29f0766ead95f3aea538f5f5b85ec3b2ff8fbedbaff50f0c5771ab4">+331/-0</a> </td> </tr> <tr> <td><strong>Languages.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-34642bc2e6238f98a78fe2185eadd4995749ae336204bfb6095620369268e7d1">+753/-0</a> </td> </tr> <tr> <td><strong>MessageQueues.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-eee646fcdd254e0be152dfb3f2c6749b1710b6ec6be272b8c5f865b83d2853df">+526/-0</a> </td> </tr> <tr> <td><strong>Networking.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-aff8de29d05af2b04cc0b83ab292896c79a6d68cfb3649c10ec517679b73e97e">+659/-0</a> </td> </tr> <tr> <td><strong>Others.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-56f4544b83413f5b8d87c5fec280204b75388a0686c388445b3eceaef523f10e">+493/-0</a> </td> </tr> <tr> <td><strong>Recommended.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-86de7fab5e678188cf1b96d463809fa645abd8d1a19d86cd3f2214b12fac3c43">+557/-0</a> </td> </tr> <tr> <td><strong>Security.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-952301dec9efb69bbdc3b82753e8a7c86d64a67e3cd544fcc50f118fcd1d017e">+623/-0</a> </td> </tr> <tr> <td><strong>Server.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-80a46b98c8aef2059b9d25de464c3450aa3310c02d1a4bbfcd32a706b5d0334c">+667/-0</a> </td> </tr> <tr> <td><strong>Databricks.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-0cc6f4230b08c6d1f888bae4c5d9f11169714506be5f3be77b371ced9d084936">+350/-0</a> </td> </tr> <tr> <td><strong>Postgres.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-046ae7ca570ff9960c83ec5fca8a95110a5158ceafda48549bdf47ccc5c71b71">+498/-0</a> </td> </tr> <tr> <td><strong>SqlServer.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-33abd49e96a5a6ecb0e07f76f3b55cb53a12674ddd450890ec185eb85e33fae3">+313/-0</a> </td> </tr> <tr> <td><strong>Curl.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-755d02153c11d74b259e12605ae3ad203b01507c4f778347616ed4c1ba542024">+374/-24</a></td> </tr> <tr> <td><strong>FileBeat.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-d4f433b57979c49407559afd1b9a35131cf823a29596882f46aca6aa8789a777">+389/-0</a> </td> </tr> <tr> <td><strong>FluentBit.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-9bb84df5402b65026cdf6fe4ead0937f825f129538f4e7e6291492a9b9ade289">+362/-27</a></td> </tr> <tr> <td><strong>Fluentd.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-b0d737e6ac8536493791c38acde3b0b339bae519b8ce58fb780f794bc31f62d1">+382/-23</a></td> </tr> <tr> <td><strong>LogstashDatasource.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-2cd019295a25886a037e6ede5cad795b52851a377f48beb46f3897bc6d64a20b">+522/-0</a> </td> </tr> <tr> <td><strong>SysLog.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-98526471b0f8a5a7547c205c9da6f8b4e62f20c6ee728b687225d4ee1c564758">+966/-0</a> </td> </tr> <tr> <td><strong>SyslogNg.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-c1afe13c4d7ccf6c9e360c4beff423e785f52c05b58340acf5d0e11fbc77bfc3">+787/-0</a> </td> </tr> <tr> <td><strong>Vector.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-35a48d805d8ded5b793d07c4dbb85cfafb759d073e597758cb999ed28eaf3f31">+571/-26</a></td> </tr> <tr> <td><strong>ingestionIndex.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-aa6c7d67f4885ef49f587f3dde7760ba3eabea6478e776aede5f86ab4ca76e75">+570/-0</a> </td> </tr> <tr> <td><strong>CloudWatchMetrics.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-d2e18e89f6400e04f77e4dff297030ffdf6306038d7cfe08315e0736cd0520f4">+615/-0</a> </td> </tr> <tr> <td><strong>PrometheusConfig.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-9026aa740243dc87d7be703fad5ad83e8ebdbb907b20b0f75a653ea3514dd6b4">+416/-0</a> </td> </tr> <tr> <td><strong>TelegrafConfig.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-9de7588766a4cc480d9b053d4c6dd34bad93c4e85c6580c2d8f04073f8f0fa25">+350/-0</a> </td> </tr> <tr> <td><strong>AWSConfig.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-a40ad271f4e88e42c4e746b5ce54ef0dceca122bedf3f9fa1f0571765001c680">+500/-0</a> </td> </tr> <tr> <td><strong>FrontendRumConfig.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-28bda2968dbbe401bacf2ce4a95e566d4672d59dafdf309d9a66dd567734af9a">+945/-0</a> </td> </tr> <tr> <td><strong>OpenTelemetry.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-489085e78e204c6e2b6dfdf21f1e48fef86d4bc4dd6f36869f9a2164027b3b7b">+554/-0</a> </td> </tr> <tr> <td><strong>Login.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-746b43968d685362866c3f97bf2b5e0846bac7463fe1ecb080c1c7d962cb855b">+994/-0</a> </td> </tr> <tr> <td><strong>AssociatedRegexPatterns.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-4ca41bf14fd6a3c79a3877324a7c7520a25d1d33f97fe947b2f6dd4bbf6ca5b4">+1384/-0</a></td> </tr> <tr> <td><strong>Schema.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-27aac0c27d14c76ae7d02277822392d29777f07fb588bc4a19d93cc0379a25e6">+593/-677</a></td> </tr> <tr> <td><strong>StreamFieldInputs.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-a421936485eb26fe8b6c1a89cd0b40de202936fd57b49957e8ac1521a4641f57">+469/-0</a> </td> </tr> <tr> <td><strong>ExternalDestination.spec.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-716d02dd388d827ba64d21320834f07a281242627dbce78a9d29fa84e2727a42">+0/-584</a> </td> </tr> <tr> <td><strong>ExternalDestination.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-a404d8244c3beb0122fbd403d2b8b410a934aacd3e498c73499204db85bc790e">+1029/-0</a></td> </tr> <tr> <td><strong>Query.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-28606cc9e509c3f1c132551ed29c46ef168444b4425cf5e81e0eff65302a9d16">+950/-0</a> </td> </tr> <tr> <td><strong>Stream.spec.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-f0e36c3bdbe8da79becc97e236de086bec117c4272ef4a7691a3330835993e40">+232/-5</a> </td> </tr> <tr> <td><strong>PipelineView.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-f78a1273b1fb7f5696f364f509b6bd13a1536a160b4fd98260cc8e61750e96f9">+600/-0</a> </td> </tr> <tr> <td><strong>PipelinesList.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-afcaf75b1dd20ccf66bd61334ba262512135a3f85593310890a774421d50265e">+712/-0</a> </td> </tr> <tr> <td><strong>pipelineCommonValidation.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-820d4f4f076840724bd6f0e7b5a9da1cbacea4d074249f07c957120b6601ac38">+311/-0</a> </td> </tr> <tr> <td><strong>pipelineCommonValidation.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-b2c4c50027aace8991d17030333e880b7d4808ab04d96e9c372d82d424235ef5">+1/-1</a> </td> </tr> <tr> <td><strong>CreateReport.spec.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-8a0f39751d08a258c4997c5e68edaf167ea01477528beee2295dd9f992310cc6">+0/-1854</a></td> </tr> <tr> <td><strong>PerformanceOverview.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-c37f87d6d7205b9688af8c24fa6d7847c77bf35c51d4d7d1e08e6f10f3af2942">[link]</a> </td> </tr> <tr> <td><strong>PerformanceSummary.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-a2a97a13f8d5caa69d38d883576678dacecd8728386886f76d105e376879d60e">+1582/-0</a></td> </tr> <tr> <td><strong>ImportRegexPattern.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-1111ec8ccc0c9b62d4791101f69855ac22baa856dedd54827970f993147c3aed">+811/-0</a> </td> </tr> <tr> <td><strong>RegexPatternList.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-df942239cac609f116dcb4aa61405a60fc718219c77af46258c34e8e86e44080">+1005/-0</a></td> </tr> <tr> <td><strong>settingsIndex.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-fc96fd3ae93a42ba09577ee2c27416e9e729f2729146f88e146e4a9473626da2">+774/-0</a> </td> </tr> <tr> <td><strong>FilterCreatorPopup.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-4167cd3f9eec0c9df78517b7514c39dcc2c0234810010d93e311879971bd552e">+439/-0</a> </td> </tr> <tr> <td><strong>NoData.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-e7f5be4faf7164f86bdfea69049db3aae0509a8d33b037bfcf799347b3a0ab0d">+335/-0</a> </td> </tr> <tr> <td><strong>NoOrganizationSelected.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-1338e495c82b9d07995c13a6b245c919588012974c0f08096c7b93b5e143606c">+88/-0</a> </td> </tr> <tr> <td><strong>Pagination.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-8846923daf3fe7a897ab5956098564aeb6d1748db90f637fc39f4ac8a30e1234">+110/-0</a> </td> </tr> <tr> <td><strong>AddUpdateTicket.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-8f7eb6b61a8dfdab68d5e2f73e1d2bc9580e03290d287bcfb35802331165d118">+531/-0</a> </td> </tr> <tr> <td><strong>usePermissions.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-83e050b2b1753f98e357db0e2f8a6a353b24857640c3a522a73d0d2609a0bced">+513/-0</a> </td> </tr> <tr> <td><strong>useActions.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-1bd297e5011b31dca1cb4edb6ff63a705e582dfe392e34b2e781c8051be5ee5e">+158/-0</a> </td> </tr> <tr> <td><strong>useIngestion.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-495d1e7e830eecd3e430e987a7056298d67df84282b31869bb27973aec8e4f06">+606/-0</a> </td> </tr> <tr> <td><strong>useIsMetaOrg.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-635f3965352f56c275b1309753a9f1421ffb0e8bd985b1286a012217df33eab5">+123/-0</a> </td> </tr> <tr> <td><strong>useLogs.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-1e4dd9056495ae6a0c1cf2b8c9e803d7372c2c1426918d848bb903b424103875">+2/-2</a> </td> </tr> <tr> <td><strong>Additional files not shown</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8121/files#diff-2f328e4cd8dbe3ad193e49d92bcf045f47a6b72b1e9487d366f6b8288589b4ca"></a></td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ |
||
|
|
9a422cb34d |
feat: dashboard unique colors to the table column automatically. (#8051)
### **PR Type**
Enhancement
___
### **Description**
- Add unique value auto-color for tables
- Introduce typed override config schema
- Update popup UI for new config types
- Pass color mode through table pipeline
___
### Diagram Walkthrough
```mermaid
flowchart LR
Schema["Dashboard v5 Config enum"]
Popup["OverrideConfigPopup UI logic"]
Convert["convertTableData column metadata"]
Renderer["TableRenderer cell style"]
Palette["colorPalette getColorForTable"]
Schema -- "new type 'unique_value_color'" --> Popup
Popup -- "persist {type, autoColor|value}" --> Convert
Convert -- "set col.colorMode='auto'" --> Renderer
Renderer -- "map unique values to colors" --> Palette
```
<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>mod.rs</strong><dd><code>Typed dashboard Config with
color variant</code>
</dd></summary>
<hr>
src/config/src/meta/dashboards/v5/mod.rs
<ul><li>Replace <code>Config</code> struct with tagged enum.<br> <li>
Add variants: <code>Unit{value?}</code> and
<code>UniqueValueColor{auto_color}</code>.<br> <li> Adjust serde to use
<code>type</code> tag and camelCase.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8051/files#diff-da49585bbcb02bf0f737bb68739ebc248edd15c7ad9427c0e68f7728bb4a8c17">+13/-8</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>OverrideConfigPopup.vue</strong><dd><code>Popup
supports unit and auto color overrides</code>
</dd></summary>
<hr>
web/src/components/dashboards/OverrideConfigPopup.vue
<ul><li>Redesign popup to choose config type.<br> <li> Support unit
config and unique value color (auto).<br> <li> Normalize, transform, and
save typed configs.<br> <li> UI tweaks: width, layout, and
handlers.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8051/files#diff-f1512a15069c23bcc71ac88db5b0ab882031bf6ec9d53a84de2fcd8adb6dec2c">+155/-62</a></td>
</tr>
<tr>
<td>
<details>
<summary><strong>OverrideConfig.vue</strong><dd><code>Adapt prop shape
for typed overrides</code>
</dd></summary>
<hr>
web/src/components/dashboards/addPanel/OverrideConfig.vue
<ul><li>Pass override configs via <code>{ overrideConfigs }</code>
shape.<br> <li> Simplify dialog prop wiring.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8051/files#diff-54a6038f5c684ade27b88e3c6a134874b51501904441fa7849a532d10aa7d533">+3/-5</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>TableRenderer.vue</strong><dd><code>Table cells
auto-colored by unique values</code>
</dd></summary>
<hr>
web/src/components/dashboards/panels/TableRenderer.vue
<ul><li>Add auto-color rendering path for columns.<br> <li> Use
<code>getColorForTable</code> palette and per-column cache.<br> <li>
Fallback to value-mapping color.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8051/files#diff-794706ea9da3a70012a0327c0464f9fd16802f78ece26055fe951716c2d73d59">+24/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>colorPalette.ts</strong><dd><code>Add table color
palette export</code>
</dd></summary>
<hr>
web/src/utils/dashboard/colorPalette.ts
<ul><li>Export <code>getColorForTable</code> palette for tables.<br>
<li> Provide light pastel color list.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8051/files#diff-30ac812743f2388c4061647fac5e9f413bfe561f1fc5d4f6f7be82fce73f2840">+27/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>convertTableData.ts</strong><dd><code>Pipe override
color/unit configs to table</code>
</dd></summary>
<hr>
web/src/utils/dashboard/convertTableData.ts
<ul><li>Parse typed override configs to maps.<br> <li> Set
<code>colorMode: 'auto'</code> on columns when enabled.<br> <li> Use
unit config map for formatting.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8051/files#diff-a672094c46e697ee7b7a3949a901cc1f7f88ec06cddaf67370474b508d5b0960">+32/-8</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: Loakesh Indiran <66478092+Loaki07@users.noreply.github.com>
|
||
|
|
86362dc372 |
fix: useLogs test cases added (#8071)
### **PR Type**
Tests
___
### **Description**
Add unit tests for initialization functions
Add stream management tests with API mocks
Add SQL parsing and search build tests
Improve error handling coverage in tests
___
### Diagram Walkthrough
```mermaid
flowchart LR
Init["Initialization tests"] -- clear/reset --> SearchObj["searchObj defaults"]
Streams["Stream management tests"] -- getStreamList/getStream --> API["Mocked services"]
SQL["SQL parse/build tests"] -- fnParsedSQL/fnUnparsedSQL --> Parser["Mocked parser"]
SQL -- buildSearch --> QueryReq["Query request assertions"]
Init -- initialLogsState --> Store["Mocked store"]
```
<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>useLogs.spec.ts</strong><dd><code>Comprehensive tests
for useLogs initialization, streams, SQL</code></dd></summary>
<hr>
web/src/plugins/logs/useLogs.spec.ts
<ul><li>Add tests for clearSearchObj and resetSearchObj<br> <li> Add
initialLogsState behavior and error tests<br> <li> Add
getStreamList/loadStreamFields tests with mocks<br> <li> Add
fnParsedSQL/fnUnparsedSQL and buildSearch tests</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8071/files#diff-842307ae8db03aa51891ddde98cfdbbabc712db1e1614c9eee99a59add395f70">+582/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
ca99331c98 |
feat: dashboard stop unnecessary api call for config change (#7713)
### **PR Type** Enhancement, Bug fix ___ ### **Description** Add config-change detection to avoid API calls Debounce and auto-apply non-API config updates Fix metric panel field resets and builder UI Refactor panel data conversion into reusable helper ___ ### Diagram Walkthrough ```mermaid flowchart LR A["Dashboard/Logs/Metrics configs"] -- "watch changes" --> B["checkConfigChangeApiCallOrNot"] B -- "needs API" --> C["loadData() / keep state"] B -- "no API" --> D["apply local config + resize"] E["PanelSchemaRenderer"] -- "convertPanelDataCommon" --> F["panelData refresh"] ``` <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>7 files</summary><table> <tr> <td><strong>PanelSchemaRenderer.vue</strong><dd><code>Refactor data conversion and watch schema changes</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7713/files#diff-e5376e7e77bf3aaf6590c2522d8c2dbffcc95a8006ae0d6dc0040a37825367d6">+70/-52</a> </td> </tr> <tr> <td><strong>DashboardQueryBuilder.vue</strong><dd><code>Hide X-axis controls for metric panels</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7713/files#diff-a4f9abbeaad1156ab6ba5740d59ccb869d6a9172ca1c64b89cff78f3d7783409">+3/-0</a> </td> </tr> <tr> <td><strong>Index.vue</strong><dd><code>Debounce config updates; skip API when unnecessary</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7713/files#diff-0323c3da69b369843c5d72bf4df5b00ca6b5147192a213baf331659ecf92af62">+23/-0</a> </td> </tr> <tr> <td><strong>Index.vue</strong><dd><code>Debounced config watcher with API necessity check</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7713/files#diff-a6734928ea4dcb5244e90de5a16fe6f5cafa95ccf58430ac7b548a065daf3d61">+21/-1</a> </td> </tr> <tr> <td><strong>AddPanel.vue</strong><dd><code>Outdated detection uses API-need; debounce updates</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7713/files#diff-c9632db1ad95af95aba10161bcbc7c5608318919f228637bdafae3f3a31267e8">+32/-5</a> </td> </tr> <tr> <td><strong>usePanelDataLoader.ts</strong><dd><code>Separate schema/time watchers; API-need gating</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7713/files#diff-5a42e9493a7bcd722b88e61fd38883c4f61001bc9cafa399f65f8eafda3aace9">+22/-1</a> </td> </tr> <tr> <td><strong>checkConfigChangeApiCall.ts</strong><dd><code>Add utility to detect API-required config changes</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7713/files#diff-5c85b8000a7da159a0fe523af41fa5db2cc5318b164e81a0755178f6df9e0b9d">+65/-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>useDashboardPanel.ts</strong><dd><code>Reset fields for metric type on type switch</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7713/files#diff-fbba1700750053b9eaf38ddd30dab84531bc44131c795ebb713811e4930cd7cb">+43/-0</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: ktx-abhay <abhay.padamani@kiara.tech> |
||
|
|
cd00d5b06c |
feat: dashboard color based on series name (#7941)
### **PR Type** Enhancement, Bug fix ___ ### **Description** - Add "Color by series" UI and schema - Apply custom series colors in charts - Emit and wire series data for config - Improve autocomplete filtering robustness ___ ### Diagram Walkthrough ```mermaid flowchart LR UI["ConfigPanel adds ColorBySeries UI"] -- "saves mappings" --> Schema["color.colorBySeries in panel schema"] Charts["PanelSchemaRenderer emits series data"] -- "series-data-update" --> Pages["Visualize/Metrics/AddPanel pages"] Pages -- "pass seriesData" --> UI Colors["applySeriesColorMappings + getSeriesColor"] -- "resolve colors" --> ECharts["ECharts series 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>13 files</summary><table> <tr> <td><strong>mod.rs</strong><dd><code>Add colorBySeries schema and struct</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7941/files#diff-da49585bbcb02bf0f737bb68739ebc248edd15c7ad9427c0e68f7728bb4a8c17">+14/-0</a> </td> </tr> <tr> <td><strong>PanelSchemaRenderer.vue</strong><dd><code>Emit series data updates to parents</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7941/files#diff-e5376e7e77bf3aaf6590c2522d8c2dbffcc95a8006ae0d6dc0040a37825367d6">+6/-0</a> </td> </tr> <tr> <td><strong>ColorBySeries.vue</strong><dd><code>New Color by series config entrypoint</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7941/files#diff-2783259507b45f0b3664d9be68ca236690bbbf151472da3fa8b552d230af5b3f">+126/-0</a> </td> </tr> <tr> <td><strong>ColorBySeriesPopUp.vue</strong><dd><code>New popup to map series to colors</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7941/files#diff-8b4dce28a203ce7e70550d6437f16e7661d5a4ecaf336de3450a8dc7fbe5e27a">+385/-0</a> </td> </tr> <tr> <td><strong>ConfigPanel.vue</strong><dd><code>Integrate ColorBySeries and accept panelData</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7941/files#diff-c3a6e64dff02b58bb7cdc3f0668990b41ff41544b4c5e991bbcd989ad4bba3f8">+5/-3</a> </td> </tr> <tr> <td><strong>VisualizeLogsQuery.vue</strong><dd><code>Wire series-data-update and pass to ConfigPanel</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7941/files#diff-979b01d943d58c5d70faeeac5948b7f02f0b2392a12b84ef07ba7f7393ab0261">+34/-7</a> </td> </tr> <tr> <td><strong>Index.vue</strong><dd><code>Capture series data and pass to ConfigPanel</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7941/files#diff-a6734928ea4dcb5244e90de5a16fe6f5cafa95ccf58430ac7b548a065daf3d61">+11/-0</a> </td> </tr> <tr> <td><strong>AddPanel.vue</strong><dd><code>Capture panel series data for config</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7941/files#diff-c9632db1ad95af95aba10161bcbc7c5608318919f228637bdafae3f3a31267e8">+11/-1</a> </td> </tr> <tr> <td><strong>useDashboardPanel.ts</strong><dd><code>Add defaults for mappings and colorBySeries</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7941/files#diff-fbba1700750053b9eaf38ddd30dab84531bc44131c795ebb713811e4930cd7cb">+2/-0</a> </td> </tr> <tr> <td><strong>colorPalette.ts</strong><dd><code>Prefer custom colorBySeries mapping</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7941/files#diff-30ac812743f2388c4061647fac5e9f413bfe561f1fc5d4f6f7be82fce73f2840">+11/-0</a> </td> </tr> <tr> <td><strong>convertDataIntoUnitValue.ts</strong><dd><code>Add applySeriesColorMappings helper</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7941/files#diff-14c6fe442ef231566ec411f9e0262cdd24ec912fc67b9154eec743282ab7211a">+82/-0</a> </td> </tr> <tr> <td><strong>convertPromQLData.ts</strong><dd><code>Apply mapped colors to PromQL charts</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7941/files#diff-68d70ba6c622911d48cdb567940dc404a4a6468b86c6d24fb54e5f1d8aa5ca2a">+9/-0</a> </td> </tr> <tr> <td><strong>convertSQLData.ts</strong><dd><code>Apply mapped colors to SQL charts</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7941/files#diff-88c0e865040a20b2c8bb7d77e7f6bd187a5b07c1645c120223bc9d59603752c3">+13/-1</a> </td> </tr> </table></details></td></tr><tr><td><strong>Formatting</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>CommonAutoComplete.vue</strong><dd><code>Fix watch comma and cleanup</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7941/files#diff-35f59b61336a5ba3f5933f6803e8e2cc84ced59c3f0bea25f370bb2e3d21849b">+1/-2</a> </td> </tr> </table></details></td></tr><tr><td><strong>Bug fix</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>useSearchInputUsingRegex.ts</strong><dd><code>Guard nulls in option filtering</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7941/files#diff-f901991c2e465430e9b2434405852ac225ff94f5adfcfeb0ad0e80fdaadd0f4b">+6/-2</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ |
||
|
|
5dab735d3e |
fix: removed unused code and warnings while in dev mode / build (#8026)
### **User description** 1. removed defineProps , defineEmits as they are not required to import while using <script setup> because they are built in compiler macros 2. removed unused imports 3. added tbody around tr td inside table which was throwing an error ___ ### **PR Type** Bug fix, Enhancement ___ ### **Description** - Wrap table rows with tbody in DateTime - Remove unused Vue imports and emits - Clean up dead code and variables - Minor formatting and consistency fixes ___ ### Diagram Walkthrough ```mermaid flowchart LR A["Vue components"] -- "remove unused imports/defines" --> B["Cleaner scripts"] A -- "table rows wrapped with tbody" --> C["Valid HTML structure"] C -- "prevents runtime/warning errors" --> D["Stabler UI"] ``` <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>1 files</summary><table> <tr> <td><strong>DateTime.vue</strong><dd><code>Add tbody wrapper to table rows</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8026/files#diff-c06c96ba750be6fc82f517a53ba809efff8aa619aba203b871d4d2aeb7f64f60">+78/-76</a> </td> </tr> </table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>21 files</summary><table> <tr> <td><strong>FileItem.vue</strong><dd><code>Drop unused defineProps/defineEmits imports</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8026/files#diff-ba91340f65190fae07746a2877b42357f3c4b10eb9969e7fc6fe393655bc8752">+1/-1</a> </td> </tr> <tr> <td><strong>AddDestination.vue</strong><dd><code>Remove unused Vue APIs and service import</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8026/files#diff-61b295458e13049a538f5014124855d58dce664dfbd644b57a964a37a07b7a3f">+0/-4</a> </td> </tr> <tr> <td><strong>AddTemplate.vue</strong><dd><code>Trim unused Vue composition imports</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8026/files#diff-2508a43827e6b35c07f3222deebd9945101ca6bc32b9dc592e6253ab99908bba">+0/-4</a> </td> </tr> <tr> <td><strong>AlertsContainer.vue</strong><dd><code>Simplify imports to only computed</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8026/files#diff-39b487d54970cff4a1ccdfbb49a4ccb38f7131bb9d30944ce1c6e86d3f818148">+1/-1</a> </td> </tr> <tr> <td><strong>FieldsInput.vue</strong><dd><code>Remove unused defineProps from imports</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8026/files#diff-a2dcba327fb56cd4cb52efb06fccc256a71fd8a551b826c6c94e71dad75524f5">+1/-1</a> </td> </tr> <tr> <td><strong>FilterCondition.vue</strong><dd><code>Drop unused defineProps import</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8026/files#diff-53916e2402d0ee094fcd63f0ec0c99ceffde4fa042f9001203d2e2e1b7709e10">+1/-1</a> </td> </tr> <tr> <td><strong>VariablesInput.vue</strong><dd><code>Remove unused defineProps import line</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8026/files#diff-23a647aa1acfc95bc726629f0daa54005e3da1ed5b16482ceccef0649f680a74">+0/-1</a> </td> </tr> <tr> <td><strong>AddCipherKey.vue</strong><dd><code>Remove unused defineEmits from imports</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8026/files#diff-ff5ae3a9b070fe2b3650f177ced0d87e9449ae7375a0b117ee299238293df110">+1/-1</a> </td> </tr> <tr> <td><strong>AppTabs.vue</strong><dd><code>Remove unused defineProps from import</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8026/files#diff-f69ae88c0f2018ea808724a0eaee5bd008fd1608c52f7ca20215fc6033f00573">+1/-1</a> </td> </tr> <tr> <td><strong>FunctionsToolbar.vue</strong><dd><code>Prune unused composition API imports</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8026/files#diff-8283d2ff9c4a66b4b59eac306672aca2d54655a462e2ddb88e14e039d79dcdaf">+0/-4</a> </td> </tr> <tr> <td><strong>EntityPermissionTable.vue</strong><dd><code>Remove unused defineEmits/defineProps imports</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8026/files#diff-07b373cc19e7893c8a8a29f5e6d10b8c74d15d6ad3a4d04f5c06b55d0d8de395">+1/-2</a> </td> </tr> <tr> <td><strong>PermissionsTable.vue</strong><dd><code>Remove unused defineEmits import</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8026/files#diff-609d4d7245b7309cf30cc45c22c996c6b068ebc042a9673e75ee3bbd2aa00a2a">+0/-1</a> </td> </tr> <tr> <td><strong>AssociateFunction.vue</strong><dd><code>Remove unused emits and lifecycle imports</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8026/files#diff-24a5b2df69327a6477227ea674939dea19dd6d393b4bfcf807089d71e6391152">+0/-2</a> </td> </tr> <tr> <td><strong>ExternalDestination.vue</strong><dd><code>Remove unused Vue/imports and reactive</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8026/files#diff-7ed6a9ef676d7d6db5440d4157512f731bad58716c351ca39015125a8a9d2df5">+0/-3</a> </td> </tr> <tr> <td><strong>Stream.vue</strong><dd><code>Drop unused imports and services</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8026/files#diff-1a17ced9dc89022502cab0a6f9b97b413c2a2c4f8219733d063fc0180d361739">+1/-2</a> </td> </tr> <tr> <td><strong>PipelineEditor.vue</strong><dd><code>Remove unused defineEmits import</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8026/files#diff-68c21f647336067eb79737ce9aca2d49632f2fa1c0878bcfdae55607e3473a15">+0/-1</a> </td> </tr> <tr> <td><strong>StreamSelection.vue</strong><dd><code>Remove unused defineEmits import</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8026/files#diff-461440be35cc15b6b78700c8a61747ea9fb601a750af5292fa2d04b6fc96d595">+1/-1</a> </td> </tr> <tr> <td><strong>TenstackTable.vue</strong><dd><code>Remove unused defineEmits import</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8026/files#diff-bc3c669f5ab65a42ae378df1f7d6b35014c9c220790bdcc72b47f55d1385dc22">+0/-1</a> </td> </tr> <tr> <td><strong>CellActions.vue</strong><dd><code>Remove unused imports and helpers</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8026/files#diff-de54e5b8cd9503c53f3f802ac7bc7e3d25846f1657c77cd99534d9f60673992e">+1/-2</a> </td> </tr> <tr> <td><strong>CustomNode.vue</strong><dd><code>Remove unused refs and image vars</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8026/files#diff-b9d83cd503b6d3470b238accaaea0b4decf567add8ad4727c63c9e583725f408">+1/-5</a> </td> </tr> <tr> <td><strong>AdvancedValuesFilter.vue</strong><dd><code>Remove unused defineEmits import</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8026/files#diff-19f84276e3e0eebf0af0707cc9480e2dd7434c8e77be13456a1c0607860af3b2">+1/-1</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ |
||
|
|
0709ca9e9d |
fix: added more unit test cases (#8025)
### **PR Type** Tests, Enhancement ___ ### **Description** - Add extensive LogStream component tests - Introduce service unit tests coverage - Improve test mocks and handlers - Fix brittle UI tests and stubs ___ ### Diagram Walkthrough ```mermaid flowchart LR LogStreamSpec["LogStream.spec.ts"] -- adds comprehensive component tests --> VueApp["Vue components"] ServiceSpecs["tickets/billings/organizations.spec.ts"] -- mock http and assert endpoints --> HTTP["HTTP layer"] UtilsSpec["convertDataIntoUnitValue.spec.ts"] -- validate formatting and conversions --> DashboardUtils["Dashboard utils"] TestInfra["handlers.ts + stubs"] -- stabilize mocks --> TestRunner["Vitest env"] UIFixes["User/AddUser/Reports specs"] -- adjust stubs and expectations --> UIComponents["UI components"] ``` <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>14 files</summary><table> <tr> <td><strong>LogStream.spec.ts</strong><dd><code>Rewrite and greatly expand LogStream tests</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8025/files#diff-5d1ec597d0896fc4768515852054db8c919e048d2e8f6013bfbc4c42fa7503da">+1197/-82</a></td> </tr> <tr> <td><strong>tickets.spec.ts</strong><dd><code>Add full CRUD tests for tickets service</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8025/files#diff-6326b5fdbd0493710b156bfb06237d5906fc493de034e872a879b9d59245d483">+565/-0</a> </td> </tr> <tr> <td><strong>billings.spec.ts</strong><dd><code>Add billing workflows and error tests</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8025/files#diff-8152eb5ae97615b253cd61eedea9147bf255cf444eefea25e1a4e954ffc7ee65">+547/-0</a> </td> </tr> <tr> <td><strong>convertDataIntoUnitValue.spec.ts</strong><dd><code>Test data unit conversion and formatting utils</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8025/files#diff-e9d8a984ed78af13e4d4424c605a3a55fe6ad2a3f7e403fad156ce17ffdc3bdd">+452/-0</a> </td> </tr> <tr> <td><strong>organizations.spec.ts</strong><dd><code>Cover organizations service endpoints and flows</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8025/files#diff-d891fff7a737f937ff3cad0710f07a99479d7160e31928259d1aec4ebfaf367d">+519/-0</a> </td> </tr> <tr> <td><strong>AddAlert.spec.ts</strong><dd><code>Add missing composable/service mocks for alerts</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8025/files#diff-84362398fea8abd9acf30f4f40ba8d4cf27348677454017bd4e6f568d5176ac6">+47/-0</a> </td> </tr> <tr> <td><strong>User.spec.js</strong><dd><code>Stabilize user tests and adjust stubs</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8025/files#diff-f792c36cfff4d60265030596a1316a3fe207a1bcafc53cd0223a4873f9daf25b">+8/-20</a> </td> </tr> <tr> <td><strong>users.spec.ts</strong><dd><code>Add users service tests (CRUD, roles)</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8025/files#diff-1e0367915c28073772fd91455c185fa522f17453fc868207b030f606fb7c0dee">+425/-0</a> </td> </tr> <tr> <td><strong>common.spec.ts</strong><dd><code>Add common utilities unit tests</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8025/files#diff-37bf940c4e06c75c7443e4342a8e2896adbb8cff23fad8f7227e4cd58537e6fb">+395/-0</a> </td> </tr> <tr> <td><strong>useStreams.spec.ts</strong><dd><code>Add tests for useStreams composable pagination</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8025/files#diff-513e2d53c46c553904a054e9c2cd12d33e800afc54fe5b4192c9782382ecd79b">+285/-0</a> </td> </tr> <tr> <td><strong>auth.spec.ts</strong><dd><code>Add authentication service tests</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8025/files#diff-ff84b903292a1f76994704e04dc9a7aaf6788497f8b561b7f693f6146a93b140">+199/-0</a> </td> </tr> <tr> <td><strong>AddUser.spec.js</strong><dd><code>Update and fix AddUser tests</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8025/files#diff-9f6b815996dc8497b76604e29e7495042466714655abc8b5010430959007f3d0">+62/-1</a> </td> </tr> <tr> <td><strong>ReportList.spec.js</strong><dd><code>Fix failing report list tests</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8025/files#diff-c3de3f1590ac7b4401cf5570a52f0dcf6471898e4ffc7ccbc19166ba600a181f">+46/-1</a> </td> </tr> <tr> <td><strong>CreateReport.spec.js</strong><dd><code>Fix create report test failures</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8025/files#diff-8a0f39751d08a258c4997c5e68edaf167ea01477528beee2295dd9f992310cc6">+61/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>handlers.ts</strong><dd><code>Update MSW handlers for functions and alerts</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8025/files#diff-fa72375a2848d474b311c07cf6aef7d6117b1f4d88f56a74c9207f39df72333c">+13/-3</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ |
||
|
|
748cca3ecb |
feat: visualization enhancement (#7456)
### **User description**
### Which query will be used?
- If query is empty will use histogram query
- Else query will be available:
- If query has group by clause :- will use same query
- Else will use histogram query
___
### **PR Type**
Enhancement, Tests, Bug fix
___
### **Description**
- Add server API to extract result schema
- Implement DataFusion plan visitor for projections
- Integrate visualization flow with schema and histogram
- Numerous UI fixes and UX improvements
___
### Diagram Walkthrough
```mermaid
flowchart LR
DF["DataFusion Plan Visitor (Rust)"]
API["HTTP API /result_schema (Rust)"]
FE["Logs Visualize UI (Vue)"]
Loader["Panel Data Loader (TS)"]
Cache["Histogram Handler & Cache (Rust)"]
DF -- "extract projections/group_by/timeseries" --> API
API -- "JSON ResultSchemaResponse" --> FE
FE -- "build config, set fields, decide histogram" --> Loader
Loader -- "inject searchResponse / is_ui_histogram" --> FE
Cache -- "normalize histogram()" --> DF
```
<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>projections.rs</strong><dd><code>Add DataFusion logical plan
visitor to extract schema</code> </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-7a0420d3649da44b80be36d7f1043d6ff81d88395c961266882c3c700f7edff7">+651/-0</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Add /result_schema endpoint and
wire parsing/security</code> </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-96630a0dbb6dd7b2b0248fa325c7c7041ce31340c32826675a4a70772e9d29f6">+224/-2</a>
</td>
</tr>
<tr>
<td><strong>cacher.rs</strong><dd><code>Improve histogram() handling and
make public</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-8c387b22b2c0a282600ee41ca702b3db60f5a284d507c0feb7418608ff062c6c">+22/-11</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Export projections
module</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-70bb941c2eef1365e5ead1a59b65c5397457b9197a4e22596e18d17db7eaf922">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>Index.vue</strong><dd><code>Integrate visualization with
schema API and histogram</code> </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-0323c3da69b369843c5d72bf4df5b00ca6b5147192a213baf331659ecf92af62">+564/-154</a></td>
</tr>
<tr>
<td><strong>VisualizeLogsQuery.vue</strong><dd><code>Field list UX,
props for searchResponse/histogram</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-979b01d943d58c5d70faeeac5948b7f02f0b2392a12b84ef07ba7f7393ab0261">+236/-174</a></td>
</tr>
<tr>
<td><strong>SearchBar.vue</strong><dd><code>Visualize toggle gating,
SQL/VRL disabled states</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-81893de4edf186b0556f610acb280c87baa2ffe67d3b48a60a866094c7635baf">+102/-52</a></td>
</tr>
<tr>
<td><strong>FieldList.vue</strong><dd><code>Readonly/visibility options
for logs visualize</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-a071c06e3e26629cb4ae4751450acc39c61fa49b07a1cc4be3711697829668d4">+13/-1</a>
</td>
</tr>
<tr>
<td><strong>TransformSelector.vue</strong><dd><code>Disable transform
controls in visualize mode</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-0037d8dd9cfbacc26309b26e98ae953e7ccbd0891ac2fd01c6314ebd7eed9d2c">+11/-4</a>
</td>
</tr>
<tr>
<td><strong>ChartSelection.vue</strong><dd><code>Allow restricting
selectable chart types</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-384ce178717731e2c85f1312f12a54b42ceabd0b86f7e2befb0e421ef568a6a3">+14/-11</a>
</td>
</tr>
<tr>
<td><strong>PanelSchemaRenderer.vue</strong><dd><code>Accept
searchResponse and is_ui_histogram props</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-e5376e7e77bf3aaf6590c2522d8c2dbffcc95a8006ae0d6dc0040a37825367d6">+13/-0</a>
</td>
</tr>
<tr>
<td><strong>usePanelDataLoader.ts</strong><dd><code>Support injected
searchResponse and ui histogram</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-5a42e9493a7bcd722b88e61fd38883c4f61001bc9cafa399f65f8eafda3aace9">+30/-5</a>
</td>
</tr>
<tr>
<td><strong>visualizationUtils.ts</strong><dd><code>Add SQL alias
validator for visualization</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-c2c391afcaa0b44c33d3f4fa531a4f31f044ae036f0baa182c8c88e83de066c5">+80/-0</a>
</td>
</tr>
<tr>
<td><strong>query.ts</strong><dd><code>Extend response metadata for
visualization</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-12dd5b3bb9741bbeaa348c0efbbd745d0a582899678738159c6927d34a35191d">+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>mod.rs</strong><dd><code>Add test for compact delete value
check</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-b7e3bf7f0ac23dd084c0c817a310a4d5e7a64ff532746d182986ef940fa03fd0">+17/-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>auth.rs</strong><dd><code>Allow auth bypass for
result_schema route</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-9bc2b1841504a435f66ad094f72ddbe7b7fa75e5e1557b8adbfe36f7f0592e1b">+3/-0</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Register result_schema HTTP
route</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/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>search.rs</strong><dd><code>Add ResultSchemaResponse
contract</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-373e83a31e5bbc82fba05d7ae274b0dbd624ed748272232cf7eb8b8c3b2f3afc">+7/-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>TableRenderer.vue</strong><dd><code>Render null/undefined as
empty string</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-794706ea9da3a70012a0327c0464f9fd16802f78ece26055fe951716c2d73d59">+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>sqlUtils.ts</strong><dd><code>Minor formatting
fix</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-dde40e8fcb5c37b06c011ede08922c44a3c025682fbc341aee97ba046b73a0e3">+1/-1</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Additional
files</strong></td><td><details><summary>11 files</summary><table>
<tr>
<td><strong>playwright.yml</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-7afcd2d8f7b49bda74843f209eefb7b2da45f7e7803bf2e4bd636699b76aa2d3">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>visualise.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-c14ac1db3e4aa86190d7525e8e38c410bcbbae7f46b01890e74937cc11be67e6">+1/-5</a>
</td>
</tr>
<tr>
<td><strong>logsPage.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-8045b343491d8943869c1af74cdafab204dc49c02a70294417e73f47d35e0b59">+2/-2</a>
</td>
</tr>
<tr>
<td><strong>visualize.spec.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-d144f23552ec150db375c89e52c3a53ede9ff3fa5dcd6092694fbe0a308d22ec">+225/-183</a></td>
</tr>
<tr>
<td><strong>useDashboardPanel.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-fbba1700750053b9eaf38ddd30dab84531bc44131c795ebb713811e4930cd7cb">+420/-6</a>
</td>
</tr>
<tr>
<td><strong>useLogs.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-1040f61354f92711e0e77ed4e9bfa15586d45a94c7e2ab06cc37372068030e7b">+151/-19</a></td>
</tr>
<tr>
<td><strong>useNotifications.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-32ff5072df9badfebc0a72c401fe337de3324f76b186a52d202eb6cc2fa71e3a">+25/-0</a>
</td>
</tr>
<tr>
<td><strong>en.json</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+2/-0</a>
</td>
</tr>
<tr>
<td><strong>search.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-885ab872dbc6e7b20264df815e3ef4727f0abc86ce90d2fb47e4aff572814c75">+43/-0</a>
</td>
</tr>
<tr>
<td><strong>logs.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-637857fa918f47ffb02ebfc8a35b124001ef4f65fd180c467f0f153382d2dc76">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>convertDataIntoUnitValue.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-14c6fe442ef231566ec411f9e0262cdd24ec912fc67b9154eec743282ab7211a">+120/-29</a></td>
</tr>
</table></details></td></tr></tr></tbody></table>
</details>
___
---------
Signed-off-by: Yashodhan Joshi <yjdoc2@gmail.com>
Co-authored-by: ktx-akshay <akshay.patil@kiara.tech>
Co-authored-by: Yashodhan Joshi <yjdoc2@gmail.com>
Co-authored-by: omkark06 <omkar@zinclabs.io>
Co-authored-by: loaki07 <rustyloaki@gmail.com>
Co-authored-by: Loakesh Indiran <66478092+Loaki07@users.noreply.github.com>
Co-authored-by: Bhargav <BJP232004@GMAIL.COM>
Co-authored-by: ktx-vaidehi <vaidehi.akhani@kiara.tech>
Co-authored-by: ktx-vaidehi <134508096+ktx-vaidehi@users.noreply.github.com>
Co-authored-by: Yashodhan Joshi <yashodhan@openobserve.ai>
|
||
|
|
059e2296ca | fix: minor bugs and duplicates | ||
|
|
ac71a76a2f |
fix: fix for equal and other operator used it adds unwanted space. (#… (#7911)
### **User description** …7639) https://github.com/openobserve/openobserve/issues/7640 ___ ### **PR Type** Other ___ ### **Description** - Remove unnecessary blank lines in addSpacesToOperators - Improve whitespace consistency in while loop - No functional changes made ___ <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>zincutils.ts</strong><dd><code>Whitespace cleanup in zincutils.ts</code> </dd></summary> <hr> web/src/utils/zincutils.ts <ul><li>Removed extraneous blank lines before and after comment blocks<br> <li> Collapsed spacing within the while loop for readability<br> <li> Preserved existing operator-spacing logic</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/7911/files#diff-d3d59688cccdcc6c84ebe88b698c6910030abecc3125f4c0ef81b0df023699ba">+0/-7</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ |
||
|
|
4da7bf82dc |
fix: added more unit test cases (#7903)
### **User description** added unit test cases 1. enrichment module 2. functions module 3. added additional test cases for indexlist 4. search history 5. search scheduler list ___ ### **PR Type** Enhancement, Tests ___ ### **Description** - Expose `handleSearchResponse` and `handleSearchReset` in `IndexList.vue` - Expose `getTimeRange` in `EnrichmentTableList.vue` - Add extensive unit tests for `IndexList` search and field flows - Extend specs for enrichment, function, scheduler, and utility tests ___ ### Diagram Walkthrough ```mermaid flowchart LR A["IndexList.vue"] -- "expose handlers" --> B["UnitTests"] C["EnrichmentTableList.vue"] -- "expose getTimeRange" --> B D["AddEnrichmentTable.vue"] -- "enhance error tests" --> B E["OtherComponents"] -- "add comprehensive specs" --> B ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody></tr></tbody></table> </details> ___ |
||
|
|
0782ca45d8 |
fix: dashboard time conversion (#7869) (#7872)
### **User description** - #7864 ___ ### **PR Type** Bug fix ___ ### **Description** - Removed outdated timestamp converter function - Introduced inline microsecond timestamp parsing - Unified ISO string and Date handling - Formatted dates using timezone consistently ___ ### Diagram Walkthrough ```mermaid flowchart LR A["val (any)"] --> B{"16-digit micro?"} B -- yes --> C["timestamp = parseInt(val)/1000"] B -- no --> D{"string ISO?"} D -- yes --> E["timestamp = `${val}Z`"] D -- no --> F["timestamp = new Date(val).getTime()/1000"] C --> G["formatDate(toZonedTime(timestamp, timezone))"] E --> G F --> G ``` <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>convertDataIntoUnitValue.ts</strong><dd><code>Remove convert16DigitTimestamp utility</code> </dd></summary> <hr> web/src/utils/dashboard/convertDataIntoUnitValue.ts <ul><li>Removed <code>convert16DigitTimestamp</code> function<br> <li> Deleted associated JSDoc comments</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/7872/files#diff-14c6fe442ef231566ec411f9e0262cdd24ec912fc67b9154eec743282ab7211a">+0/-28</a> </td> </tr> <tr> <td> <details> <summary><strong>convertTableData.ts</strong><dd><code>Inline unified timestamp conversion</code> </dd></summary> <hr> web/src/utils/dashboard/convertTableData.ts <ul><li>Dropped <code>convert16DigitTimestamp</code> import<br> <li> Added inline timestamp handling in data conversion<br> <li> Branches for microseconds, ISO strings, Date objects</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/7872/files#diff-a672094c46e697ee7b7a3949a901cc1f7f88ec06cddaf67370474b508d5b0960">+42/-29</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ |
||
|
|
e18c4234b0 |
fix: update string matching logic to include 'Contains' operator (#7765)
### **PR Type**
Bug fix
___
### **Description**
- Support "Contains" operator in str_match logic
- Deprecate legacy LIKE-based Contains handling
- Update DashboardPanel and SQL utils
___
<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>useDashboardPanel.ts</strong><dd><code>Add Contains
operator to str_match logic</code>
</dd></summary>
<hr>
web/src/composables/useDashboardPanel.ts
<ul><li>Map "Contains" to str_match filter<br> <li> Commented out old
LIKE-based Contains logic</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7765/files#diff-fbba1700750053b9eaf38ddd30dab84531bc44131c795ebb713811e4930cd7cb">+10/-7</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>sqlUtils.ts</strong><dd><code>Map Contains to str_match
in SQL utils</code>
</dd></summary>
<hr>
web/src/utils/query/sqlUtils.ts
<ul><li>Treat "Contains" as str_match in addLabelToSQlQuery<br> <li>
Commented out legacy Contains LIKE branch</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7765/files#diff-dde40e8fcb5c37b06c011ede08922c44a3c025682fbc341aee97ba046b73a0e3">+5/-5</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
ccd7b56207 |
fix: implemented unit test cases for zincutils file (#7679)
### **PR Type**
Tests
___
### **Description**
- Add comprehensive unit tests for zincutils utilities
- Mock localStorage, sessionStorage, btoa/atob, console
- Cover encoding, validation, formatting utility groups
- Test auth, config, websocket, local storage, timezone
___
<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>zincutils.spec.ts</strong><dd><code>Add zincutils unit
tests</code>
</dd></summary>
<hr>
web/src/utils/zincutils.spec.ts
<ul><li>Created test suite for all <code>zincutils</code> functions<br>
<li> Added mocks for storage, <code>btoa</code>/<code>atob</code>, and
console<br> <li> Wrote tests for encoding, validation, formatting
groups<br> <li> Covered utilities: auth, websocket, config, timezone,
etc.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7679/files#diff-225d7ad1afe0a7e6f522c267bfd9ac4928cb5c23047fc6c02a287519a34aacb7">+843/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
04149abb41 | fix: o2 ai add context button as component (#7686) | ||
|
|
99a9af4a33 | fix: dashboard 16 digit numeric value conversion (#7666) | ||
|
|
f05cf3f1e5 |
fix: add alert UI issues (#7675)
### **User description** 1. the header for every section should have different color than the rest of the section to identify it as a header 2. the preview header should also different color than the rest of the section 3. multi window should be by default collapsed as it is not used that much 4. when loosing focus on sql editor / vrl editor it is emitting 2 times instead of 1 , which causes 2 search calls instead of 1 5. cron expression should be displayed in readable format in multi window section 6. removed go deeper with advanced options subtitle for advanced setup section ___ ### **PR Type** Bug fix, Enhancement ___ ### **Description** - Adjust alert UI containers and colors - Collapse Multi Window section by default - Debounce editor blur events to avoid duplicates - Display readable cron intervals using new util ___ <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody></tr></tbody></table> </details> ___ |
||
|
|
e8a514fd24 |
fix: issue 7640 match_all operator getting replaced (#7653)
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Replace regex-based operator spacing with util
- Add state-based `addSpacesToOperators` function
- Update composables and component imports
- Prevent catastrophic regex backtracking
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Raw whereClause"] -- "addSpacesToOperators" --> B["Spaced whereClause"]
B -- "used in" --> C["IndexList.vue / useLogs / useQuery"]
```
<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>IndexList.vue</strong><dd><code>Replace regex spacing
with util call</code>
</dd></summary>
<hr>
web/src/plugins/logs/IndexList.vue
<ul><li>Imported <code>addSpacesToOperators</code> util<br> <li> Removed
inline regex-based spacing<br> <li> Replaced with
<code>addSpacesToOperators(whereClause)</code></ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7653/files#diff-08f058f883b659e713e606991a7ea37ae1ff016b7cccef970489ab5840dc3d09">+2/-10</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>useLogs.ts</strong><dd><code>Use util for query
operator spacing</code>
</dd></summary>
<hr>
web/src/composables/useLogs.ts
<ul><li>Added <code>addSpacesToOperators</code> import<br> <li> Removed
chained <code>.replace</code> regex calls<br> <li> Applied
<code>addSpacesToOperators</code> for whereClause</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7653/files#diff-1040f61354f92711e0e77ed4e9bfa15586d45a94c7e2ab06cc37372068030e7b">+4/-11</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>useQuery.ts</strong><dd><code>Replace regex in useQuery
with util</code>
</dd></summary>
<hr>
web/src/composables/useQuery.ts
<ul><li>Imported <code>addSpacesToOperators</code><br> <li> Removed
manual regex replacements<br> <li> Called
<code>addSpacesToOperators(whereClause)</code></ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7653/files#diff-fe0bf52b216893c6a31f2923aab979e0d817c742b0cfd75e524e60db75b1d3e8">+4/-11</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>zincutils.ts</strong><dd><code>Implement
addSpacesToOperators utility</code>
</dd></summary>
<hr>
web/src/utils/zincutils.ts
<ul><li>Added <code>addSpacesToOperators</code> function<br> <li>
Implements state-based spacing logic<br> <li> Handles quotes,
parentheses, two-char operators<br> <li> Avoids exponential regex
backtracking</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7653/files#diff-d3d59688cccdcc6c84ebe88b698c6910030abecc3125f4c0ef81b0df023699ba">+98/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
776e427657 |
fix: dashboard if no label, remove unnecessary space (#7577)
### **PR Type** Enhancement ___ ### **Description** - Remove redundant label validations in dashboard builders - Introduce axis name flags in convertSQLData - Dynamically adjust grid.left based on Y axis existence - Refine grid.bottom spacing logic for X axis and legends ___ ### **Changes diagram** ```mermaid flowchart LR A["Dashboard Query Builders"] -- "Remove validation rules" --> B["Cleaned validation logic"] C["convertSQLData"] -- "Detect axis labels" --> D["hasXAxisName/hasYAxisName flags"] D -- "Apply spacing rules" --> E["Dynamic grid margins"] ``` ___ ### **Changes walkthrough** 📝 <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>DashboardGeoMapsQueryBuilder.vue</strong><dd><code>Remove field label validations in GeoMaps builder</code> </dd></summary> <hr> web/src/components/dashboards/addPanel/DashboardGeoMapsQueryBuilder.vue <li>Removed <code>:rules</code> for latitude label<br> <li> Removed <code>:rules</code> for longitude label<br> <li> Removed <code>:rules</code> for weight label </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/7577/files#diff-3b97eb04cae0673539b1d0112d23bbbf4048b453c623c1640a9ceeecf50ec99b">+0/-3</a> </td> </tr> <tr> <td> <details> <summary><strong>DashboardMapsQueryBuilder.vue</strong><dd><code>Drop label validations in Maps query builder</code> </dd></summary> <hr> web/src/components/dashboards/addPanel/DashboardMapsQueryBuilder.vue <li>Removed <code>:rules</code> for name label<br> <li> Removed <code>:rules</code> for value_for_maps label </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/7577/files#diff-f07786c7f9c6d797af04eeb9a16d9a6b954b000c793265849aeba406bd750b9e">+0/-2</a> </td> </tr> <tr> <td> <details> <summary><strong>DashboardQueryBuilder.vue</strong><dd><code>Clear label validations in core query builder</code> </dd></summary> <hr> web/src/components/dashboards/addPanel/DashboardQueryBuilder.vue <li>Removed <code>:rules</code> for X field labels<br> <li> Removed <code>:rules</code> for breakdown field labels<br> <li> Removed <code>:rules</code> for Y and Z field labels </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/7577/files#diff-a4f9abbeaad1156ab6ba5740d59ccb869d6a9172ca1c64b89cff78f3d7783409">+0/-4</a> </td> </tr> <tr> <td> <details> <summary><strong>DashboardSankeyChartBuilder.vue</strong><dd><code>Remove label validation in Sankey builder</code> </dd></summary> <hr> web/src/components/dashboards/addPanel/DashboardSankeyChartBuilder.vue <li>Removed <code>:rules</code> for source label<br> <li> Removed <code>:rules</code> for target label<br> <li> Removed <code>:rules</code> for value label </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/7577/files#diff-b8cd4e5c2b67e186c7bb233b699fe7c9c7ebc8ed6f411945e9670908e1329427">+0/-3</a> </td> </tr> <tr> <td> <details> <summary><strong>convertSQLData.ts</strong><dd><code>Update grid spacing logic for axis labels</code> </dd></summary> <hr> web/src/utils/dashboard/convertSQLData.ts <li>Added <code>hasXAxisName</code> and <code>hasYAxisName</code> flags<br> <li> Adjusted <code>grid.left</code> based on Y axis label existence<br> <li> Refined <code>grid.bottom</code> calculation for X axis and legends </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/7577/files#diff-88c0e865040a20b2c8bb7d77e7f6bd187a5b07c1645c120223bc9d59603752c3">+23/-11</a> </td> </tr> </table></td></tr></tr></tbody></table> ___ > <details> <summary> Need help?</summary><li>Type <code>/help how to ...</code> in the comments thread for any questions about PR-Agent usage.</li><li>Check out the <a href="https://qodo-merge-docs.qodo.ai/usage-guide/">documentation</a> for more information.</li></details> |
||
|
|
22000788cf |
fix: made get ingestion url function as util (#7570)
### **User description** 1. made get ingestion URL util and reused same in all other files ___ ### **PR Type** Enhancement ___ ### **Description** - Added `getIngestionURL` util in `zincutils.ts` - Removed repeated ingestion URL logic in components - Updated `useIngestion` composable to use new util - Cleaned imports across ~30 Vue component files ___ ### **Changes diagram** ```mermaid flowchart LR U["zincutils.ts: add getIngestionURL"] --> C["Vue components & composables"] C -- "import & use getIngestionURL" --> U ``` ___ ### **Changes walkthrough** 📝 <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>zincutils.ts</strong><dd><code>add `getIngestionURL` utility function</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7570/files#diff-d3d59688cccdcc6c84ebe88b698c6910030abecc3125f4c0ef81b0df023699ba">+14/-0</a> </td> </tr> <tr> <td><strong>useIngestion.ts</strong><dd><code>refactor to use `getIngestionURL`</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7570/files#diff-3691717c742137402219c92e4bb4a5943d2676e058e2320bd009faa40ee2ce6a">+2/-7</a> </td> </tr> <tr> <td><strong>Curl.vue</strong><dd><code>use `getIngestionURL` for URL retrieval</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7570/files#diff-771bd9c671018794c9dd1a69c05f89d6811b7ab58fb78023351ef65d5da93fc1">+4/-9</a> </td> </tr> <tr> <td><strong>FileBeat.vue</strong><dd><code>replace manual URL logic with util</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7570/files#diff-780d0244d64ea375ae50e9b2e9f055270cce58ccffe38f972d4705999bea0bd0">+2/-8</a> </td> </tr> <tr> <td><strong>FluentBit.vue</strong><dd><code>import and use ingestion URL util</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7570/files#diff-b9410632277e27bf7a0068f02092e3295574f17ead7dd1e78d6f6902df2d4250">+2/-8</a> </td> </tr> <tr> <td><strong>Fluentd.vue</strong><dd><code>streamline ingestion URL retrieval</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7570/files#diff-7cd77dea994f4a2c403340958156b663264f374d044c51fa8eff59c8dccf7ea3">+2/-8</a> </td> </tr> <tr> <td><strong>LogstashDatasource.vue</strong><dd><code>apply `getIngestionURL` util</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7570/files#diff-2117c4820003cd6b7e3b1e4bb05f344d904ac446ff8d2f1a8a3fc19621cc0c99">+2/-8</a> </td> </tr> <tr> <td><strong>OtelConfig.vue</strong><dd><code>replace store logic with util call</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7570/files#diff-f5f5b0e070bcd827d74339487f2dd8353be1e9095fc4edf6c8c59b6b4dd56ea2">+2/-8</a> </td> </tr> <tr> <td><strong>SyslogNg.vue</strong><dd><code>leverage `getIngestionURL` util</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7570/files#diff-28946dd7590b6245049b50c5c147e3f70ad3dca195f29833d2da9a3df3e34535">+2/-8</a> </td> </tr> <tr> <td><strong>Vector.vue</strong><dd><code>remove duplicate URL code</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7570/files#diff-500765a05f37cf9fe124c8d205e6b042f111a95536a5d29775f96a73bf137276">+2/-9</a> </td> </tr> <tr> <td><strong>CloudWatchMetrics.vue</strong><dd><code>use ingestion URL utility</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7570/files#diff-75fa38f59a4980388d6360af8ec4eff7ab96bbcca2d9e5e2e7801fe6525fb7a8">+2/-8</a> </td> </tr> <tr> <td><strong>OtelCollector.vue</strong><dd><code>import `getIngestionURL` for URL logic</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7570/files#diff-5e4789fd0c918a80078aaa7a9127896f8733cb7656ec3412dc36c49ecb1c7c95">+2/-8</a> </td> </tr> <tr> <td><strong>PrometheusConfig.vue</strong><dd><code>consolidate URL logic into util</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7570/files#diff-0e0f232e6a8bba81707aead9a35c861d152b13fa9fee78924b1d85c9b6ddf576">+2/-8</a> </td> </tr> <tr> <td><strong>TelegrafConfig.vue</strong><dd><code>replace manual URL retrieval</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7570/files#diff-f934fcfd5f71fff85e099f5ddf133a1cdd2a02aa3ade339dee73d54474480acf">+2/-9</a> </td> </tr> <tr> <td><strong>AWSConfig.vue</strong><dd><code>refactored ingestion URL handling</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7570/files#diff-e9d4a14ebc9a1b239523d8f94996e6002369969f6df78cb1051e0d1f807e108f">+2/-8</a> </td> </tr> <tr> <td><strong>FrontendRumConfig.vue</strong><dd><code>use `getIngestionURL` in config replacement</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7570/files#diff-a90414833508a6d5f76b245c65f2a2ff067ada5e1c5c09b1b53598a4881e2676">+2/-8</a> </td> </tr> <tr> <td><strong>GCPConfig.vue</strong><dd><code>apply util for ingestion URL</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7570/files#diff-bb2ac1db713669abad6935df76a19123ac012a202068dae9b187283d149e21b6">+3/-9</a> </td> </tr> <tr> <td><strong>KubernetesConfig.vue</strong><dd><code>import and use URL util</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7570/files#diff-7afbbe1e38d62a976fcbe23f28c3e33a6d3e90188d5edcb743e936f920ec7dd5">+2/-8</a> </td> </tr> <tr> <td><strong>LinuxConfig.vue</strong><dd><code>streamline ingestion URL code</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7570/files#diff-a2a49850a18b9e393eaf3e16f0f428d8e48fd4b7849eb3727a58e392597eb862">+2/-8</a> </td> </tr> <tr> <td><strong>OtelConfig.vue</strong><dd><code>consolidate URL logic with util</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7570/files#diff-ac89d88c98d4a16e00a287c22d9964f45178acb820c6d64d55479d506c800427">+2/-8</a> </td> </tr> </table></details></td></tr><tr><td><strong>Additional files</strong></td><td><details><summary>2 files</summary><table> <tr> <td><strong>WindowsConfig.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7570/files#diff-391a9d8dd12c37c116e2295f5e4ab595644b7766c8cd54b0de463ed16a6a25da">+2/-8</a> </td> </tr> <tr> <td><strong>OpenTelemetry.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7570/files#diff-45be3e74a543860331e1cbb11c299a81d5f2e49030bcc3eab03dd6db09f93c5b">+2/-8</a> </td> </tr> </table></details></td></tr></tr></tbody></table> ___ > <details> <summary> Need help?</summary><li>Type <code>/help how to ...</code> in the comments thread for any questions about PR-Agent usage.</li><li>Check out the <a href="https://qodo-merge-docs.qodo.ai/usage-guide/">documentation</a> for more information.</li></details> |
||
|
|
935dfbad61 |
fix: dashboard conflict issue (#7558)
### **PR Type** Bug fix, Enhancement ___ ### **Description** - Validate dashboard JSON before import - Handle duplicate panel IDs in retrieval - Refine GridStack layout update logic - Improve error and import messages ___ ### **Changes diagram** ```mermaid flowchart LR node1["getDashboard called"] node2["fixDuplicatePanelIds"] node3["duplicates?"] node4["updateDashboard & re-fetch"] node5["return dashboard"] node1 --> node2 node2 --> node3 node3 -- "true" --> node4 node3 -- "false" --> node5 node4 --> node5 ``` ___ ### **Changes walkthrough** 📝 <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Error handling</strong></td><td><table> <tr> <td> <details> <summary><strong>ImportDashboard.vue</strong><dd><code>Add dashboard JSON validation before import</code> </dd></summary> <hr> web/src/views/Dashboards/ImportDashboard.vue <li>Imported <code>validateDashboardJson</code> utility<br> <li> Added schema validation before each import step<br> <li> Extended error <code><span></code> for <code>dashboard_validation</code><br> <li> Reformatted promise and notification code </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/7558/files#diff-660ac197e10735b4f08fc4b5a39744187d16c14156ced00eefde09dbaec323f0">+85/-25</a> </td> </tr> </table></td></tr><tr><td><strong>Enhancement</strong></td><td><table> <tr> <td> <details> <summary><strong>RenderDashboardCharts.vue</strong><dd><code>Improve GridStack layout update logic</code> </dd></summary> <hr> web/src/views/Dashboards/RenderDashboardCharts.vue <li>Included <code>selectedTabId</code> in panel <code>:key</code><br> <li> Added <code>gridStackUpdateInProgress</code> guard<br> <li> Optimized <code>refreshGridStack</code> clearing logic<br> <li> Added console error logs on save and widget add </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/7558/files#diff-313f7c69102161242c893c863c50f1f1cd1fc19b68b5c99bf840b4b5c72f0f2e">+51/-42</a> </td> </tr> </table></td></tr><tr><td><strong>Bug fix</strong></td><td><table> <tr> <td> <details> <summary><strong>commons.ts</strong><dd><code>Handle duplicate panel IDs on retrieval</code> </dd></summary> <hr> web/src/utils/commons.ts <li>Added <code>fixDuplicatePanelIds</code> to dedupe panel IDs<br> <li> Called dedupe in <code>getDashboard</code> flow<br> <li> Saved and re-fetched dashboard when duplicates found<br> <li> Implemented <code>generateUniquePanelId</code> helper </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/7558/files#diff-17cb74f8142984fc46bbfecdeaacccc118fd5d4ab7f040a55695caaa309d104f">+81/-14</a> </td> </tr> </table></td></tr></tr></tbody></table> ___ > <details> <summary> Need help?</summary><li>Type <code>/help how to ...</code> in the comments thread for any questions about PR-Agent usage.</li><li>Check out the <a href="https://qodo-merge-docs.qodo.ai/usage-guide/">documentation</a> for more information.</li></details> --------- Co-authored-by: Kirtan Thakkar <kirtan@kiara.tech> |
||
|
|
e98edbcb74 |
feat: json editor for pipeline and alert (#7304)
### **User description** this PR fixes the issue #6927 ___ ### **PR Type** Enhancement ___ ### **Description** - Add JSON editor modal for alerts - Add JSON editor modal for pipelines - Implement JSON validation and save handlers - Enable multi-select and bulk pipeline export ___ ### **Changes walkthrough** 📝 <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Miscellaneous</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>O2AIChat.vue</strong><dd><code>Refactor chat types import</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7304/files#diff-a6a125719a7b32b31b53fcfe05c12081d82c139a401699affdda0db8e73887e3">+2/-16</a> </td> </tr> </table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>10 files</summary><table> <tr> <td><strong>AddAlert.vue</strong><dd><code>Add JSON editor dialog in alerts</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7304/files#diff-7b426bb23e9ed0250c3877d6d97b099c42b2d20e22ddf4459915381b2233a0a8">+194/-4</a> </td> </tr> <tr> <td><strong>JsonEditor.vue</strong><dd><code>Add common JsonEditor component</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7304/files#diff-aa32894c1a38a569648ba4a666f12925bbd6dc3b8d98edfba0d29d9f05f17788">+331/-0</a> </td> </tr> <tr> <td><strong>ImportPipeline.vue</strong><dd><code>Use pipelines composable for destinations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7304/files#diff-d57fa41169daa44551a181f21ca33882004b29ab74e3040e4c56a8c849078670">+3/-14</a> </td> </tr> <tr> <td><strong>Stream.vue</strong><dd><code>Use pipelines composable for streams</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7304/files#diff-1a17ced9dc89022502cab0a6f9b97b413c2a2c4f8219733d063fc0180d361739">+4/-21</a> </td> </tr> <tr> <td><strong>PipelineEditor.vue</strong><dd><code>Add JSON editor in pipeline editor</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7304/files#diff-68c21f647336067eb79737ce9aca2d49632f2fa1c0878bcfdae55607e3473a15">+169/-16</a></td> </tr> <tr> <td><strong>PipelinesList.vue</strong><dd><code>Enable selection and bulk export</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7304/files#diff-85e3ef322f3eea0fc6d74d89431ba338a1153cb82ee06bef0f7c5f439c04267d">+154/-85</a></td> </tr> <tr> <td><strong>usePipelines.ts</strong><dd><code>Add usePipelines composable</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7304/files#diff-2b9119f5a6e1ebe377af79c8a9c67f611ab3b705b072ed4361360f6e8ec71c0b">+47/-0</a> </td> </tr> <tr> <td><strong>chat.ts</strong><dd><code>Add shared chat types</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7304/files#diff-1d0b31a11a03e7e24551527edda8e0e652eec57c8435bd3c366d7318bc3d65a3">+13/-0</a> </td> </tr> <tr> <td><strong>validateAlerts.ts</strong><dd><code>Add alert JSON validation utility</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7304/files#diff-31dfccb7ecf243d062992787997f3e29b26579144def6a562e7f138cf3a73ed6">+313/-0</a> </td> </tr> <tr> <td><strong>validatePipeline.ts</strong><dd><code>Add pipeline JSON validation utility</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7304/files#diff-ed179bda61f00c79d4498e6eedb0a9d1f97cc21d490f96398d9304ea112b240b">+320/-0</a> </td> </tr> </table></details></td></tr></tr></tbody></table> ___ > <details> <summary> Need help?</summary><li>Type <code>/help how to ...</code> in the comments thread for any questions about PR-Agent usage.</li><li>Check out the <a href="https://qodo-merge-docs.qodo.ai/usage-guide/">documentation</a> for more information.</li></details> |
||
|
|
9444447498 |
fix: Free trial rebase (#6922)
Cherry pick of https://github.com/openobserve/openobserve/pull/6807 after cloud branch was merged into main --------- Signed-off-by: Yashodhan Joshi <yjdoc2@gmail.com> Co-authored-by: Yashodhan Joshi <yjdoc2@gmail.com> Co-authored-by: Bhargav <BJP232004@GMAIL.COM> Co-authored-by: Taiming Liu <liutaiming3@gmail.com> Co-authored-by: Abhay Padamani <141122205+ktx-abhay@users.noreply.github.com> Co-authored-by: Subhra264 <chakrabortysubhradeep556@gmail.com> Co-authored-by: sai nikhil kethe <nikhil@openobserve.ai> |
||
|
|
57b68512a9 |
fix: dashboard variables custom value if present in option set that (#7449)
### **User description** - #7428 ___ ### **PR Type** Bug fix, Enhancement ___ ### **Description** - Prevent grouping existing variable values separately - Select existing option instead of custom - Update mark line color to gray in conversions - Replace annotation symbol arrow with triangle ___ ### **Changes walkthrough** 📝 <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>VariableQueryValueSelector.vue</strong><dd><code>Improve custom variable value handling</code> </dd></summary> <hr> web/src/components/dashboards/settings/VariableQueryValueSelector.vue <li>Check if input matches existing option label<br> <li> Use existing option value when found<br> <li> Fallback to adding trimmed input as custom<br> <li> Handle both single and multi-select cases </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/7449/files#diff-2cca760c14e835bd1845485fb5517a60f71a6dc23626a6381c8559b82476f5f4">+23/-6</a> </td> </tr> </table></td></tr><tr><td><strong>Enhancement</strong></td><td><table> <tr> <td> <details> <summary><strong>convertPromQLData.ts</strong><dd><code>Update PromQL mark line color</code> </dd></summary> <hr> web/src/utils/dashboard/convertPromQLData.ts <li>Change markLine.itemStyle.color value<br> <li> Update default line color to gray tone </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/7449/files#diff-68d70ba6c622911d48cdb567940dc404a4a6468b86c6d24fb54e5f1d8aa5ca2a">+1/-1</a> </td> </tr> <tr> <td> <details> <summary><strong>convertSQLData.ts</strong><dd><code>Update SQL mark line color</code> </dd></summary> <hr> web/src/utils/dashboard/convertSQLData.ts <li>Change markLine.itemStyle.color value<br> <li> Update default line color to gray tone </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/7449/files#diff-88c0e865040a20b2c8bb7d77e7f6bd187a5b07c1645c120223bc9d59603752c3">+1/-1</a> </td> </tr> <tr> <td> <details> <summary><strong>getAnnotationsData.ts</strong><dd><code>Change annotation symbol shape</code> </dd></summary> <hr> web/src/utils/dashboard/getAnnotationsData.ts <li>Replace annotation markLines symbol from arrow<br> <li> Use triangle icon alongside circle symbol </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/7449/files#diff-7a70fc4f85de3f59a05c2ab46c641c6f475982dd2e9870294a11494cb73f283a">+1/-1</a> </td> </tr> </table></td></tr></tr></tbody></table> ___ > <details> <summary> Need help?</summary><li>Type <code>/help how to ...</code> in the comments thread for any questions about PR-Agent usage.</li><li>Check out the <a href="https://qodo-merge-docs.qodo.ai/usage-guide/">documentation</a> for more information.</li></details> |
||
|
+1 |
79498b2c3e |
fix: UI performance optimisation (#7254) (#7415)
### **User description** - Replaced Monaco Editor with CodeMirror v6 in web/src/components/CodeQueryEditor.vue for a lighter-weight implementation - Migrated stream state management from local reactive objects to centralized Vuex store modules in web/src/stores/streams.ts - Enhanced memory management in QueryEditor with proper cleanup of editor resources - Simplified page container in web/src/layouts/MainLayout.vue by removing conditional rendering and keep-alive functionality - Added error handling to deepCopy function in web/src/utils/zincutils.ts to prevent crashes from circular references --------- ___ ### **PR Type** Enhancement, Bug fix ___ ### **Description** - Refactor Quota.vue: async components, confirm dialogs - Replace SqlQueryEditor with CodeQueryEditor - Add SQL auto-complete suggestions in query editor - Reset parser and logs init in PanelSchemaRenderer ___ ### **Changes walkthrough** 📝 <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>3 files</summary><table> <tr> <td><strong>Quota.vue</strong><dd><code>Refactor and enhance Quota component</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-30293eb5cb924f95356d5abd4588ce0f03765ac9d4446cf5b8cbacba23c6f979">+1526/-1363</a></td> </tr> <tr> <td><strong>DashboardQueryEditor.vue</strong><dd><code>Replace SqlQueryEditor with CodeQueryEditor</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-68bf1b319223d103f1b99e0b681764e4eb76942399397779c81c2cd18f6485ff">+98/-84</a> </td> </tr> <tr> <td><strong>TestFunction.vue</strong><dd><code>Async load CodeQueryEditor, format JSON events</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-b9af9a2d1bf04d23422c26a13e6a763c6953c8713357a2f64ed8073ce6c926a3">+22/-12</a> </td> </tr> </table></details></td></tr><tr><td><strong>Bug fix</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>PanelSchemaRenderer.vue</strong><dd><code>Reset parser and log initialization on unmount</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-e5376e7e77bf3aaf6590c2522d8c2dbffcc95a8006ae0d6dc0040a37825367d6">+3/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Additional files</strong></td><td><details><summary>89 files</summary><table> <tr> <td><strong>commands.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-7ed08e69ca91e6bd5233bc45e862113207bfcac657b88d4d1e42e32605166433">+2/-2</a> </td> </tr> <tr> <td><strong>alertsPage.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-c5fc79c6d2dcc83e20d69c46fdcf69449dade50c3e7cd5bf65d88369f5083cce">+207/-0</a> </td> </tr> <tr> <td><strong>dashboardPage.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-05afd11e29f85654b337086bafd33ff6185ee44ad369f61bb8fa478821e6c472">+8/-4</a> </td> </tr> <tr> <td><strong>logsPage.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-6af0f73f0523e6fccd38532cb454dc58c4ef1fe4ef5bc5a135ef3f0ee5371ef6">+10/-15</a> </td> </tr> <tr> <td><strong>pipelinePage.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-324393930b7e946cbbd5a9babc217b50a379217ff3348eb8b76ab70817a492f0">+1/-1</a> </td> </tr> <tr> <td><strong>alerts.spec.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-a51e6bab2ebb7ff9069a707fd7da5bb3e0948db8013765b4a934ba594c1bcf57">+224/-0</a> </td> </tr> <tr> <td><strong>alertsfolders.spec.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-8fe0cba8c6c487d2a0cf8309769adaebddcfc1932080d4cbb4a448902d14123a">+312/-0</a> </td> </tr> <tr> <td><strong>custom-charts.spec.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-bb0672bd78ba9a59df96a08374f5fd77f52a47792ad409921fd25457bcf0a9e2">+3/-2</a> </td> </tr> <tr> <td><strong>dashboard-import.spec.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-4d23d07530d81a854e1e5f91ffbdcbbf5ff33eecf73a1e13819e3194b324a930">+6/-5</a> </td> </tr> <tr> <td><strong>dashboard-transpose.spec.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-da631007cea76a4bc59e4acd1195b59ae4131cd5208d21a9c1f94d3913911dc4">+10/-7</a> </td> </tr> <tr> <td><strong>dashboard.spec.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-d0fa0042783dc109334b05266edce228bad97adcb568dd1e447920596238e9b4">+12/-8</a> </td> </tr> <tr> <td><strong>visualization-vrl.spec.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-4bfe28b08994ca0333edbe51bc99d3ddf05525387e90932d88681028e1947db4">+38/-11</a> </td> </tr> <tr> <td><strong>visualize.spec.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-d144f23552ec150db375c89e52c3a53ede9ff3fa5dcd6092694fbe0a308d22ec">+6/-6</a> </td> </tr> <tr> <td><strong>enrichment.spec.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-1c26b9ac51f49e25aa8fe1ad6ae5376da50d27be032579c4194b62e5e798a76b">+3/-3</a> </td> </tr> <tr> <td><strong>indexquery.spec.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-0fdb3410e34d127b97b20feda5f1c5f244f23af2d2d88c331ab753a1f434d3b1">+3/-1</a> </td> </tr> <tr> <td><strong>logspage.spec.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-950a38f6d66dbcf4f7cb39dc366ab25f533044718edee8199d7f819c5b06efe3">+17/-17</a> </td> </tr> <tr> <td><strong>logsqueries.spec.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-aee28776157572aac692a692c53f8d5aebfe8d01d1a7addf14f3a3f92c35b3a5">+5/-7</a> </td> </tr> <tr> <td><strong>logsquickmode.spec.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-e9af1bd193f255ad6740e261d2d9ec1d9f3290a8eabe7e99818c702ef8d67277">+1/-1</a> </td> </tr> <tr> <td><strong>multiselect-stream.spec.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-e2eb0d6de0ad04a42b73cce92a1c86e68213fed79bd7507ea00abfe18a2633c7">+2/-2</a> </td> </tr> <tr> <td><strong>pipelines.spec.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-9b48f5edc53f2413789549b189d4a80f134a320dd5beebf96d738069eb43033a">+17/-12</a> </td> </tr> <tr> <td><strong>remotepipeline.spec.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-3b5a97115bd312e7490580fa00af21077ea5050915995bd133a7f5fd913e5394">+4/-8</a> </td> </tr> <tr> <td><strong>sanity.spec.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-53b3ede269fef5199fbaea935f79134b50ba4db51edc517e4b1701f2cbcc5130">+17/-16</a> </td> </tr> <tr> <td><strong>sanity2.spec.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-f1ab4c6d536ebc3b8ea7ff17d2954d86ef56b660dcfaa1bb39f8213a5bf92e22">+1/-3</a> </td> </tr> <tr> <td><strong>schema.spec.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-1212ad9c33ea14a5a660923b20c162380c9d8c27ffa64993ddfc827e4d82a208">+3/-2</a> </td> </tr> <tr> <td><strong>schemaload.spec.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-768d758450ec41815b1330503394239673698045f5c29e46fc05d7b475c037ea">+1/-1</a> </td> </tr> <tr> <td><strong>package.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-b861012a5dd72b8a9f3281b7cf09f5a779c98569d040b1bbc1db50f1b15e7cce">+21/-4</a> </td> </tr> <tr> <td><strong>CodeQueryEditor.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-52a36bf2d64e590036ed1c1f89b07a4a6b971a84e4fae9b4272cbc69d63f9bef">+1188/-0</a></td> </tr> <tr> <td><strong>CodeQueryEditorDarkTheme.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-4ee0166b549a9a7d6a91e72d546dffd2d031b0ad6015ef5f735b67742e13c66d">+230/-0</a> </td> </tr> <tr> <td><strong>CodeQueryEditorLightTheme.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-4e80117fff859d80b9dde6898e8026f2c2514c43244e48e2b639527409d38682">+246/-0</a> </td> </tr> <tr> <td><strong>QueryEditor.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-b949ab08f913cc89fb6db9d9929dab88b1ea6d671537ed95401b721b95d1a43c">+0/-584</a> </td> </tr> <tr> <td><strong>ScriptEditor.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-c870b03c943dcadde6f101c9bcf0032917a4a9be11fec1172ef4ba1dde3edf06">+1/-1</a> </td> </tr> <tr> <td><strong>AddAlert.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-7b426bb23e9ed0250c3877d6d97b099c42b2d20e22ddf4459915381b2233a0a8">+0/-4</a> </td> </tr> <tr> <td><strong>AddTemplate.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-2508a43827e6b35c07f3222deebd9945101ca6bc32b9dc592e6253ab99908bba">+10/-2</a> </td> </tr> <tr> <td><strong>ImportAlert.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-0f40dbf2757672e39ad16b86dddc59b568ca2e6ca36850420cd7be617da12d38">+212/-154</a></td> </tr> <tr> <td><strong>ImportDestination.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-814b8ef1dbb4eebca9dfab72452d9a90d5f3fa5886dea8e82ac0bde44f66b445">+4/-3</a> </td> </tr> <tr> <td><strong>ImportTemplate.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-d22684c5142a49b8925a9dba1ef67631128caa95de66e71ba2a5b8120a0b91c6">+35/-12</a> </td> </tr> <tr> <td><strong>ScheduledAlert.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-5e143a17ab0fa5d7817f6d9301667fb5597236f27184248c7a71728e85b8d999">+3/-3</a> </td> </tr> <tr> <td><strong>QueryEditor.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-571498e285d4dfa487f980ce085fbac19b5045b0e201ed02f6eb45a4da5fba6e">+0/-571</a> </td> </tr> <tr> <td><strong>CustomChartEditor.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-489b6f52a8d12f28eefa2c1c1f396b61a5b17f00a5e1a51d0590e801c7cbc6ca">+7/-22</a> </td> </tr> <tr> <td><strong>CustomHTMLEditor.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-66cb3b43f79787a9b8d99b8c1d0f2f89aacd82055ff9ddbd4a4e5c96ec6b61ca">+7/-5</a> </td> </tr> <tr> <td><strong>CustomMarkdownEditor.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-6f1e425e1dc7a287070fbad1713679c729dc7ee61fa3b31781ed6b285ae3d279">+6/-5</a> </td> </tr> <tr> <td><strong>DrilldownPopUp.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-9fdb8c9d3953179dbd311c7e4d2250683af9b51e7706122a505c5c6a708c2a55">+1/-1</a> </td> </tr> <tr> <td><strong>MonacoHTMLEditor.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-ceffb7bda954a9e66f97c1bf28b92ba4ce00bc650f1b24b50997f9745b3ddc5c">+0/-186</a> </td> </tr> <tr> <td><strong>MonacoMarkdownEditor.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-387421c070b513acdb939e69b2ba73a47b990a0a10b00a937fa4dc06f984a3dc">+0/-186</a> </td> </tr> <tr> <td><strong>ViewPanel.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-e7b26fbbfe7ae57f50377c0f002155df17109ea54708b0f134dd2005356b2930">+1/-0</a> </td> </tr> <tr> <td><strong>AddFunction.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-ebfd6c538f3cd3ecb9ab17550fd76e2e89e7a1abccc83a7505077e4af3eee110">+4/-2</a> </td> </tr> <tr> <td><strong>EnrichmentTableList.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-6a29e253f59405d3c0f756dba36afd7483f10ad86927cbbc3348ede6372c3077">+21/-11</a> </td> </tr> <tr> <td><strong>EditRole.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-263b6bc7d29fdf8358c8437cd637f1350aa3733cc2706eae8ff00028686cc0f5">+15/-4</a> </td> </tr> <tr> <td><strong>SearchBar.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-2024fb4414454d05e6335ebbd54b067cf0af41bbc184d6652452d492a64cba31">+4/-4</a> </td> </tr> <tr> <td><strong>schema.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-9196be2ccae4054a00b0b1aa9d1e87b366c10920d6eaf9ef8c6e6293d50bcf46">+7/-3</a> </td> </tr> <tr> <td><strong>ImportPipeline.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-d57fa41169daa44551a181f21ca33882004b29ab74e3040e4c56a8c849078670">+1429/-1168</a></td> </tr> <tr> <td><strong>ScheduledPipeline.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-63d8f838bb880356e7804b4a57fd9223d4f2c189de7aadc7cf33cba723b29aaf">+1/-1</a> </td> </tr> <tr> <td><strong>ReportList.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-f7d700f7e67fbaba3c58ab5d2c614925db743101828214445ce9dae35dc29067">+44/-34</a> </td> </tr> <tr> <td><strong>SearchBar.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-d20c6ba53e6a9adfe67b2f83fe76357fb541b2764dd40cb16627599e0c80e63f">+13/-3</a> </td> </tr> <tr> <td><strong>VideoPlayer.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-5cb7c9f5d73672eaaabf9214cfeb949f533772e87780829664fac444e3c6fa35">+8/-7</a> </td> </tr> <tr> <td><strong>router.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-a1827956e5a817edc7efb5f4516e7cc4d453e15ea9e9d970aafb8360b09fc78e">+3/-3</a> </td> </tr> <tr> <td><strong>useDashboardPanel.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-fbba1700750053b9eaf38ddd30dab84531bc44131c795ebb713811e4930cd7cb">+5/-1</a> </td> </tr> <tr> <td><strong>useLogs.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-1040f61354f92711e0e77ed4e9bfa15586d45a94c7e2ab06cc37372068030e7b">+150/-66</a></td> </tr> <tr> <td><strong>usePromqlSuggestions.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-250bf4b2d8cb3845005f72188d73ab954359f841e15c4f217708beac1493e83a">+9/-13</a> </td> </tr> <tr> <td><strong>useQuery.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-fe0bf52b216893c6a31f2923aab979e0d817c742b0cfd75e524e60db75b1d3e8">+5/-1</a> </td> </tr> <tr> <td><strong>useStreamingSearch.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-8fce3e25a161cd458e734bd9b1f98aadefe3482da7b6529a5b1f4fa20ec115e2">+34/-4</a> </td> </tr> <tr> <td><strong>useStreams.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-a083369344f022cdf8d4f536719179b1d920369e33e2e26234e70dd36d151a7c">+194/-97</a></td> </tr> <tr> <td><strong>useSuggestions.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-6d2ecd5b90970ea8c8f5d35c5928a2cf8bf0ed14af700db0202759158bfbbf9d">+142/-133</a></td> </tr> <tr> <td><strong>MainLayout.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-91e4134141264c4624d4eb4cfa987b33ed31eb6f551e089c0b26f2610dd54362">+6/-33</a> </td> </tr> <tr> <td><strong>main.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-37b29c5a3b76595194070205d9a0cdedcd717bf7c4367022d1e2667395962f2e">+1/-2</a> </td> </tr> <tr> <td><strong>Index.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-0323c3da69b369843c5d72bf4df5b00ca6b5147192a213baf331659ecf92af62">+122/-75</a></td> </tr> <tr> <td><strong>IndexList.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-08f058f883b659e713e606991a7ea37ae1ff016b7cccef970489ab5840dc3d09">+25/-29</a> </td> </tr> <tr> <td><strong>JsonPreview.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-3985073134d35ff074742944b114d0905524038b42e6d2ac887fef2c8436fb16">+74/-71</a> </td> </tr> <tr> <td><strong>QueryEditor.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-cb1820565e2f5b8dd976cc486cf62ab3b756b5ceb6f73d6b203407aa6e6e1721">+1/-1</a> </td> </tr> <tr> <td><strong>SearchBar.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-81893de4edf186b0556f610acb280c87baa2ffe67d3b48a60a866094c7635baf">+85/-57</a> </td> </tr> <tr> <td><strong>SearchHistory.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-9dd167bd5e272b2057f53c16b905047eec00655a3552daad240a964d67a6f56d">+609/-581</a></td> </tr> <tr> <td><strong>SearchSchedulersList.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-0c0a4097c53f07712d35562b1336602bf24faddedab77a9f5717f5582dcac2f1">+125/-114</a></td> </tr> <tr> <td><strong>TenstackTable.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-bc3c669f5ab65a42ae378df1f7d6b35014c9c220790bdcc72b47f55d1385dc22">+29/-16</a> </td> </tr> <tr> <td><strong>SearchBar.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-43405981dab6359bdfba1ef176d74d3c557fc349f98cf6b1662fd4a021448eb1">+3/-3</a> </td> </tr> <tr> <td><strong>TraceBlock.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-3ee60afe01a0ce46d117de0e158e14d24134d8a8b5c4496b3eb79ab0015e67a7">+5/-1</a> </td> </tr> <tr> <td><strong>index.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-955a15c7ee060f1545e82be22911dd0c14307dee5a70071a394e9fd583bd2c55">+6/-1</a> </td> </tr> <tr> <td><strong>logs.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-ad599dbc6a05f72f09340ca9417380cdb279110e7feae6ced910a5dad6408918">+38/-0</a> </td> </tr> <tr> <td><strong>streams.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-440c093277fd2be53228c096ef3a408c393754f10ae8ab275e6b0fe5eb063ad7">+105/-0</a> </td> </tr> <tr> <td><strong>commons.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-17cb74f8142984fc46bbfecdeaacccc118fd5d4ab7f040a55695caaa309d104f">+2/-0</a> </td> </tr> <tr> <td><strong>convertPromQLData.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-68d70ba6c622911d48cdb567940dc404a4a6468b86c6d24fb54e5f1d8aa5ca2a">+2/-0</a> </td> </tr> <tr> <td><strong>vrlLanguage.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-d8baadeb1ccdabd0e424d3f335476417990ae5f680645db52ba03a94b75afd7a">+147/-0</a> </td> </tr> <tr> <td><strong>zincutils.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-d3d59688cccdcc6c84ebe88b698c6910030abecc3125f4c0ef81b0df023699ba">+11/-3</a> </td> </tr> <tr> <td><strong>DashboardJsonEditor.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-e3852754d3a888bea3d2ceb9433111d178119e3d86c82e103695ee1ffd3efbfa">+1/-1</a> </td> </tr> <tr> <td><strong>ImportDashboard.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-660ac197e10735b4f08fc4b5a39744187d16c14156ced00eefde09dbaec323f0">+1/-1</a> </td> </tr> <tr> <td><strong>LogStream.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-56f4223b74568c10bc305741cc9fc3a8830184a251b4eaa6a2649033bc6200e3">+71/-32</a> </td> </tr> <tr> <td><strong>AppErrors.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-edad7593714ebb348007aa179f10555b5185d45c9f5f80efee772d407a20b3d0">+4/-4</a> </td> </tr> <tr> <td><strong>AppSessions.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-08359708ae507d81dcdc60e3c05ba4f56a40f4a61718074cd6019bf2ceb87575">+7/-7</a> </td> </tr> <tr> <td><strong>StreamExplorer.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-2c90a38c4ff744a3824c1b112ac4522a7d55912b03aef6f280a5f338fe51e20a">+2/-2</a> </td> </tr> <tr> <td><strong>vite.config.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7415/files#diff-9430906049744cbbfe5d0b382b2466843a42cfebf755ff86fec850b0712258ef">+24/-25</a> </td> </tr> </table></details></td></tr></tr></tbody></table> ___ > <details> <summary> Need help?</summary><li>Type <code>/help how to ...</code> in the comments thread for any questions about PR-Agent usage.</li><li>Check out the <a href="https://qodo-merge-docs.qodo.ai/usage-guide/">documentation</a> for more information.</li></details> --------- Co-authored-by: Omkar Kesarkhane <127078473+omkarK06@users.noreply.github.com> Co-authored-by: ktx-abhay <abhay.padamani@kiara.tech> Co-authored-by: sai nikhil kethe <nikhil@openobserve.ai> Co-authored-by: Kirtan Thakkar <kirtan@kiara.tech> Co-authored-by: ktx-vaidehi <vaidehi.akhani@kiara.tech> Co-authored-by: ShyamOOAI <shyam@openobserve.ai> Co-authored-by: ktx-akshay <akshay.patil@kiara.tech> Co-authored-by: omkark06 <omkar@zinclabs.io> Co-authored-by: Hengfei Yang <hengfei.yang@gmail.com> Co-authored-by: Shrinath Rao <shnath@openobserve.ai> |
||
|
|
d7a040e0fd |
fix: dashboard tooltip error (#7387)
### **User description** - Try to lower the frequency of the following error. - Mainly, it's due to echarts.  ___ ### **PR Type** Bug fix, Enhancement ___ ### **Description** - Enable lazyUpdate and notMerge in setOption - Wrap formatter functions with try-catch - Provide safe default returns on errors - Improve chart lazy loading and error resilience ___ ### **Changes walkthrough** 📝 <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>ChartRenderer.vue</strong><dd><code>Enable lazy chart updates in ChartRenderer</code> </dd></summary> <hr> web/src/components/dashboards/panels/ChartRenderer.vue <li>Added <code>lazyUpdate: true</code> and <code>notMerge: true</code> options to <code>chart.setOption</code><br> <li> Enabled legend updates with lazy loading<br> <li> Updated initial chart set up calls for performance </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/7387/files#diff-353fab39cd76197438814db862c4a506636ea7e15633ee92d9269adbd97fe67c">+6/-6</a> </td> </tr> </table></td></tr><tr><td><strong>Error handling</strong></td><td><table> <tr> <td> <details> <summary><strong>convertSQLData.ts</strong><dd><code>Add exception handling in formatters</code> </dd></summary> <hr> web/src/utils/dashboard/convertSQLData.ts <li>Wrapped tooltip and formatter functions in try-catch<br> <li> Added safe default return values on errors<br> <li> Used optional chaining for null-safe access </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/7387/files#diff-88c0e865040a20b2c8bb7d77e7f6bd187a5b07c1645c120223bc9d59603752c3">+451/-368</a></td> </tr> </table></td></tr></tr></tbody></table> ___ > <details> <summary> Need help?</summary><li>Type <code>/help how to ...</code> in the comments thread for any questions about PR-Agent usage.</li><li>Check out the <a href="https://qodo-merge-docs.qodo.ai/usage-guide/">documentation</a> for more information.</li></details> |
||
|
|
1f58057129 |
feat: dashboard custom value from input for variables (#7341)
### **PR Type** Enhancement, Bug fix ___ ### **Description** - Add custom value support in variable selectors - Preserve custom entries when filtering multi-select - Remove deprecated URL initial value logic - Standardize popup behavior and label casing ___ ### **Changes walkthrough** 📝 <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>VariablesValueSelector.vue</strong><dd><code>Custom value filtering in VariablesValueSelector</code> </dd></summary> <hr> web/src/components/dashboards/VariablesValueSelector.vue <li>Comment out URL-based initial value handling<br> <li> Merge custom typed values into filtered selections<br> <li> Adjust multi-select filter to include custom entries<br> <li> Minor formatting refactor for SQL query call </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/7341/files#diff-5c6e3bcb87cb64f25bf8157a541604b7a4904c1282acf662cab5d76a5be6bd56">+36/-26</a> </td> </tr> <tr> <td> <details> <summary><strong>VariableQueryValueSelector.vue</strong><dd><code>Custom value support in VariableQueryValueSelector</code> </dd></summary> <hr> web/src/components/dashboards/settings/VariableQueryValueSelector.vue <li>Always show custom value option when typing<br> <li> Append <code>::CUSTOM_VALUE</code> to custom selections<br> <li> Update <code>filteredOptions</code> and <code>displayValue</code> to label customs<br> <li> Remove <code>SELECT_ALL_VALUE</code> and customs on regular select<br> <li> Close popup after custom or regular value selection </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/7341/files#diff-2cca760c14e835bd1845485fb5517a60f71a6dc23626a6381c8559b82476f5f4">+62/-20</a> </td> </tr> </table></td></tr><tr><td><strong>Configuration changes</strong></td><td><table> <tr> <td> <details> <summary><strong>constants.ts</strong><dd><code>Add CUSTOM_VALUE constant</code> </dd></summary> <hr> web/src/utils/dashboard/constants.ts <li>Add <code>CUSTOM_VALUE</code> constant for custom entries<br> <li> Keep <code>SELECT_ALL_VALUE</code> export unchanged </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/7341/files#diff-a5e1b14a291a4b42368faa0160f555b19bdc1a542624d4f89ea6e3ed7c4a664d">+2/-1</a> </td> </tr> </table></td></tr></tr></tbody></table> ___ > <details> <summary> Need help?</summary><li>Type <code>/help how to ...</code> in the comments thread for any questions about PR-Agent usage.</li><li>Check out the <a href="https://qodo-merge-docs.qodo.ai/usage-guide/">documentation</a> for more information.</li></details> |
||
|
|
531ff43688 |
fix: check 2nd arg for approx percentile fn on visualization page (#7189)
### **PR Type** Bug fix ___ ### **Description** - Check `approx_percentile_cont` second argument - Map 0.5/0.50 to `p50` percentile - Support `p90`, `p95`, and `p99` mappings - Default fallback to `p50` percentile ___ ### **Changes walkthrough** 📝 <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>sqlUtils.ts</strong><dd><code>Implement percentile mapping for approx_percentile_cont</code> </dd></summary> <hr> web/src/utils/query/sqlUtils.ts <li>Added check for <code>approx_percentile_cont</code> argument<br> <li> Mapped second argument to p50, p90, p95, and p99<br> <li> Defaulted unrecognized percentiles to <code>p50</code> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/7189/files#diff-dde40e8fcb5c37b06c011ede08922c44a3c025682fbc341aee97ba046b73a0e3">+22/-0</a> </td> </tr> </table></td></tr></tr></tbody></table> ___ > <details> <summary> Need help?</summary><li>Type <code>/help how to ...</code> in the comments thread for any questions about PR-Agent usage.</li><li>Check out the <a href="https://qodo-merge-docs.qodo.ai/usage-guide/">documentation</a> for more information.</li></details> |
||
|
|
89500c0b97 |
feat: dashboard values api using ws (#6752)
### **PR Type** Enhancement, Bug fix ___ ### **Description** - Add WebSocket and HTTP2 streaming for variable fetching - Introduce trace ID management and cancellation - Refactor variable initialization and dependency loading - Improve multiselect UI with select-all logic ___ ### **Changes walkthrough** 📝 <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>6 files</summary><table> <tr> <td><strong>VariablesValueSelector.vue</strong><dd><code>Integrate WebSocket/HTTP streaming variable fetching</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/6752/files#diff-5c6e3bcb87cb64f25bf8157a541604b7a4904c1282acf662cab5d76a5be6bd56">+1098/-196</a></td> </tr> <tr> <td><strong>AddSettingVariable.vue</strong><dd><code>Always show multiselect default toggle section</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/6752/files#diff-e622f54c1f7629ee67d29ed2fc87008d07eb9246767a05435cc42c3c17ce459a">+1/-2</a> </td> </tr> <tr> <td><strong>VariableQueryValueSelector.vue</strong><dd><code>Improve filter, select-all and value display logic</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/6752/files#diff-2cca760c14e835bd1845485fb5517a60f71a6dc23626a6381c8559b82476f5f4">+111/-72</a></td> </tr> <tr> <td><strong>useValuesWebSocket.ts</strong><dd><code>Extract composable for values WebSocket logic</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/6752/files#diff-e7269167023b1376efe6111c46a96e10fe3e10ff90840203b09f09311f24f90a">+321/-0</a> </td> </tr> <tr> <td><strong>useDashboardPanel.ts</strong><dd><code>Integrate values WebSocket composable in panel</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/6752/files#diff-fbba1700750053b9eaf38ddd30dab84531bc44131c795ebb713811e4930cd7cb">+46/-54</a> </td> </tr> <tr> <td><strong>useSearchWebSocket.ts</strong><dd><code>Extend WebSocket payload types for values API</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/6752/files#diff-1b4f21615bf92118a6c0b6907e1d765a76425163b69d00a2c328a8e1b2ff81c5">+2/-2</a> </td> </tr> </table></details></td></tr><tr><td><strong>Bug fix</strong></td><td><details><summary>4 files</summary><table> <tr> <td><strong>RenderDashboardCharts.vue</strong><dd><code>Render variables selector only with valid global time</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/6752/files#diff-313f7c69102161242c893c863c50f1f1cd1fc19b68b5c99bf840b4b5c72f0f2e">+1/-0</a> </td> </tr> <tr> <td><strong>ViewDashboard.vue</strong><dd><code>Normalize variables before change detection</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/6752/files#diff-052badb6758aff09ceaf1645869b9ba96125e6a0ea21abb01a8ee0a40d6467f3">+23/-2</a> </td> </tr> <tr> <td><strong>AddPanel.vue</strong><dd><code>Normalize panel variables for stale check</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/6752/files#diff-c9632db1ad95af95aba10161bcbc7c5608318919f228637bdafae3f3a31267e8">+23/-1</a> </td> </tr> <tr> <td><strong>usePanelDataLoader.ts</strong><dd><code>Skip search calls when variables are empty</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/6752/files#diff-5a42e9493a7bcd722b88e61fd38883c4f61001bc9cafa399f65f8eafda3aace9">+47/-5</a> </td> </tr> </table></details></td></tr><tr><td><strong>Configuration changes</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>constants.ts</strong><dd><code>Add constant for select-all multiselect option</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/6752/files#diff-a5e1b14a291a4b42368faa0160f555b19bdc1a542624d4f89ea6e3ed7c4a664d">+2/-0</a> </td> </tr> </table></details></td></tr></tr></tbody></table> ___ > <details> <summary> Need help?</summary><li>Type <code>/help how to ...</code> in the comments thread for any questions about PR-Agent usage.</li><li>Check out the <a href="https://qodo-merge-docs.qodo.ai/usage-guide/">documentation</a> for more information.</li></details> --------- Co-authored-by: Kirtan Thakkar <kirtan@kiara.tech> Co-authored-by: ktx-abhay <abhay.padamani@kiara.tech> |
||
|
|
813ed37efd |
fix: add alert page redesign (#6730)
1. This PR implements the add alert page latest UI revamp 2. This changes the add alert page introducing new UI with expandable / collapsable sections 3. This introduces the new condition and condition group so we now support or condition as well as condition group so user can create condition groups upto 3 level of depth 4. the functionality of add alert page is same just the UI and the conditions has been changed with this PR |
||
|
|
27e3fbf457 |
fix: allow to select and copy series name from tooltip (#7025)
 |
||
|
|
c836bf74b7 |
fix: return original query if not able to parse via parser (#6976)
- Parser fails to parse Data fusion functions which throws error. - Pass original user written query if not able to parse. Co-authored-by: Hengfei Yang <hengfei.yang@gmail.com> |
||
|
|
666dfcdb62 |
fix: Updated UI unit test setup (#6520)
Co-authored-by: Sai Nikhil <nikhil@openobserve.ai> |
||
|
|
046d97e175 |
fix: NOT IN filter parsing issue for visualization (#6966)
- `NOT IN`, `Starts With` and `Ends With` filters support for visualization. |
||
|
|
04085ffe8a |
feat: group trellis chart for multiple y axis (#6951)
- Group trellis series for multi Y-axis is `false`  - Group trellis series for multi Y-axis is `true`  |
||
|
|
44f435028e |
fix: if gRPC can't start we should stop the app (#6925)
- [x] fix: if gRPC can't start we should stop the app #6874 - [x] feat: remove match_all_raw #6935 - [x] feat: node list API will return by router |