From 22dea2dde714e9e8e28cc60738c4ef673f4282a5 Mon Sep 17 00:00:00 2001 From: trinity-1686a Date: Thu, 20 Jun 2024 14:59:19 +0200 Subject: [PATCH] add support for aggregations on quickwit ui (#4974) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * make monaco editor respond to window resize fix #3223 * add selector for aggregation * support sending aggregations * show aggregation results * fix formating * fix crash on empty result * try to make typing experience better * codestyle and fix typo * use 'in' instead of hasOwn * fix most errors use FormControl properly don't use lists, or set a key for each element change casing of some css properties * remove listener * Move jest mocks to dedicated folder * Add x-charts LineChart mock * Remove the auto aggregation featur, put 1day by default instead * Remove console logs and add camelCase * Run search and update UI when changing search tab * Fix the render side-effect by using the useEffect feature * Do not re run search in each aggregation change. It can be too heavy for user. It's better to clic on Run --------- Co-authored-by: Damien de Lemeny Co-authored-by: JulesVautier-io Co-authored-by: François Massot --- .../quickwit-ui/{ => mocks}/monacoMock.js | 0 .../quickwit-ui/{ => mocks}/swaggerUIMock.js | 0 quickwit/quickwit-ui/mocks/x-charts.js | 1 + quickwit/quickwit-ui/package.json | 6 +- .../src/components/ApiUrlFooter.tsx | 1 + .../src/components/QueryActionBar.tsx | 21 +- .../QueryEditor/AggregationEditor.tsx | 315 ++++++++++++++++++ .../components/QueryEditor/QueryEditor.tsx | 10 + .../SearchResult/AggregationResult.tsx | 68 ++++ .../components/SearchResult/SearchResult.tsx | 21 +- .../src/components/TimeRangeSelect.tsx | 4 +- .../quickwit-ui/src/services/client.test.ts | 12 +- quickwit/quickwit-ui/src/services/client.ts | 108 ++++-- quickwit/quickwit-ui/src/utils/models.ts | 102 +++++- quickwit/quickwit-ui/src/utils/urls.ts | 32 +- quickwit/quickwit-ui/src/views/SearchView.tsx | 11 +- quickwit/quickwit-ui/yarn.lock | 263 +++++++++++++++ 17 files changed, 937 insertions(+), 38 deletions(-) rename quickwit/quickwit-ui/{ => mocks}/monacoMock.js (100%) rename quickwit/quickwit-ui/{ => mocks}/swaggerUIMock.js (100%) create mode 100644 quickwit/quickwit-ui/mocks/x-charts.js create mode 100644 quickwit/quickwit-ui/src/components/QueryEditor/AggregationEditor.tsx create mode 100644 quickwit/quickwit-ui/src/components/SearchResult/AggregationResult.tsx diff --git a/quickwit/quickwit-ui/monacoMock.js b/quickwit/quickwit-ui/mocks/monacoMock.js similarity index 100% rename from quickwit/quickwit-ui/monacoMock.js rename to quickwit/quickwit-ui/mocks/monacoMock.js diff --git a/quickwit/quickwit-ui/swaggerUIMock.js b/quickwit/quickwit-ui/mocks/swaggerUIMock.js similarity index 100% rename from quickwit/quickwit-ui/swaggerUIMock.js rename to quickwit/quickwit-ui/mocks/swaggerUIMock.js diff --git a/quickwit/quickwit-ui/mocks/x-charts.js b/quickwit/quickwit-ui/mocks/x-charts.js new file mode 100644 index 00000000000..4a777a1ce84 --- /dev/null +++ b/quickwit/quickwit-ui/mocks/x-charts.js @@ -0,0 +1 @@ +export const LineChart = ({ children }) => children; diff --git a/quickwit/quickwit-ui/package.json b/quickwit/quickwit-ui/package.json index 9550aa3118e..e09a771f21e 100644 --- a/quickwit/quickwit-ui/package.json +++ b/quickwit/quickwit-ui/package.json @@ -12,6 +12,7 @@ "@mui/lab": "^5.0.0-alpha.114", "@mui/material": "^5.11.2", "@mui/system": "^5.11.2", + "@mui/x-charts": "^7.3.2", "@mui/x-date-pickers": "^5.0.12", "@types/jest": "^29.5.6", "@types/node": "^20.8.7", @@ -78,8 +79,9 @@ }, "jest": { "moduleNameMapper": { - "monaco-editor": "/monacoMock.js", - "swagger-ui-react": "/swaggerUIMock.js" + "monaco-editor": "/mocks/monacoMock.js", + "swagger-ui-react": "/mocks/swaggerUIMock.js", + "@mui/x-charts": "/mocks/x-charts.js" } } } diff --git a/quickwit/quickwit-ui/src/components/ApiUrlFooter.tsx b/quickwit/quickwit-ui/src/components/ApiUrlFooter.tsx index 9f546d645c5..3850c7f4719 100644 --- a/quickwit/quickwit-ui/src/components/ApiUrlFooter.tsx +++ b/quickwit/quickwit-ui/src/components/ApiUrlFooter.tsx @@ -37,6 +37,7 @@ export default function ApiUrlFooter(url: string) { const origin = process.env.NODE_ENV === 'development' ? 'http://localhost:7280' : window.location.origin; const completeUrl = `${origin}/${url}`; const isTooLong = completeUrl.length > urlMaxLength; + // TODO show generated aggregation return