Skip to content

Commit 84d3b32

Browse files
Migrate KSQL to RQ. Get rid of redux reducer (#3478)
* Migrate KSQL to RQ. Get rid of redux reducer * refactor react-ace using * get rid of deadcode * ace * Fix add/remove stream props * ace * Fix Clear result handler * Fix error handler * rollback removal of yup async validation helper * reduce re-renders * move ace to separate chunk * upd KsqlQueryForm * feedback --------- Co-authored-by: VladSenyuta <[email protected]>
1 parent d8289d2 commit 84d3b32

File tree

39 files changed

+543
-1374
lines changed

39 files changed

+543
-1374
lines changed

kafka-ui-e2e-checks/src/main/java/com/provectus/kafka/ui/pages/ksqlDb/KsqlQueryForm.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
import static com.codeborne.selenide.Selenide.$x;
1717

1818
public class KsqlQueryForm extends BasePage {
19-
protected SelenideElement pageTitle = $x("//h1[text()='Query']");
2019
protected SelenideElement clearBtn = $x("//div/button[text()='Clear']");
2120
protected SelenideElement executeBtn = $x("//div/button[text()='Execute']");
2221
protected SelenideElement stopQueryBtn = $x("//div/button[text()='Stop query']");
@@ -31,7 +30,7 @@ public class KsqlQueryForm extends BasePage {
3130
@Step
3231
public KsqlQueryForm waitUntilScreenReady() {
3332
waitUntilSpinnerDisappear();
34-
pageTitle.shouldBe(Condition.visible);
33+
executeBtn.shouldBe(Condition.visible);
3534
return this;
3635
}
3736

kafka-ui-react-app/src/components/App.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ const queryClient = new QueryClient({
3030
defaultOptions: {
3131
queries: {
3232
suspense: true,
33+
onError(error) {
34+
showServerError(error as Response);
35+
},
3336
},
3437
mutations: {
3538
onError(error) {

kafka-ui-react-app/src/components/KsqlDb/KsqlDb.tsx

Lines changed: 101 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,109 @@
11
import React from 'react';
2-
import { Route, Routes } from 'react-router-dom';
3-
import { clusterKsqlDbQueryRelativePath } from 'lib/paths';
4-
import List from 'components/KsqlDb/List/List';
52
import Query from 'components/KsqlDb/Query/Query';
3+
import useAppParams from 'lib/hooks/useAppParams';
4+
import * as Metrics from 'components/common/Metrics';
5+
import {
6+
clusterKsqlDbQueryRelativePath,
7+
clusterKsqlDbStreamsPath,
8+
clusterKsqlDbStreamsRelativePath,
9+
clusterKsqlDbTablesPath,
10+
clusterKsqlDbTablesRelativePath,
11+
ClusterNameRoute,
12+
} from 'lib/paths';
13+
import PageHeading from 'components/common/PageHeading/PageHeading';
14+
import { ActionButton } from 'components/common/ActionComponent';
15+
import Navbar from 'components/common/Navigation/Navbar.styled';
16+
import { Navigate, NavLink, Route, Routes } from 'react-router-dom';
17+
import { Action, ResourceType } from 'generated-sources';
18+
import { useKsqlkDb } from 'lib/hooks/api/ksqlDb';
19+
import 'ace-builds/src-noconflict/ace';
20+
21+
import TableView from './TableView';
622

723
const KsqlDb: React.FC = () => {
24+
const { clusterName } = useAppParams<ClusterNameRoute>();
25+
26+
const [tables, streams] = useKsqlkDb(clusterName);
27+
28+
const isFetching = tables.isFetching || streams.isFetching;
29+
830
return (
9-
<Routes>
10-
<Route path="/*" element={<List />} />
11-
<Route path={clusterKsqlDbQueryRelativePath} element={<Query />} />
12-
</Routes>
31+
<>
32+
<PageHeading text="KSQL DB">
33+
<ActionButton
34+
to={clusterKsqlDbQueryRelativePath}
35+
buttonType="primary"
36+
buttonSize="M"
37+
permission={{
38+
resource: ResourceType.KSQL,
39+
action: Action.EXECUTE,
40+
}}
41+
>
42+
Execute KSQL Request
43+
</ActionButton>
44+
</PageHeading>
45+
<Metrics.Wrapper>
46+
<Metrics.Section>
47+
<Metrics.Indicator
48+
label="Tables"
49+
title="Tables"
50+
fetching={isFetching}
51+
>
52+
{tables.isSuccess ? tables.data.length : '-'}
53+
</Metrics.Indicator>
54+
<Metrics.Indicator
55+
label="Streams"
56+
title="Streams"
57+
fetching={isFetching}
58+
>
59+
{streams.isSuccess ? streams.data.length : '-'}
60+
</Metrics.Indicator>
61+
</Metrics.Section>
62+
</Metrics.Wrapper>
63+
<div>
64+
<Navbar role="navigation">
65+
<NavLink
66+
to={clusterKsqlDbTablesPath(clusterName)}
67+
className={({ isActive }) => (isActive ? 'is-active' : '')}
68+
end
69+
>
70+
Tables
71+
</NavLink>
72+
<NavLink
73+
to={clusterKsqlDbStreamsPath(clusterName)}
74+
className={({ isActive }) => (isActive ? 'is-active' : '')}
75+
end
76+
>
77+
Streams
78+
</NavLink>
79+
</Navbar>
80+
<Routes>
81+
<Route
82+
index
83+
element={<Navigate to={clusterKsqlDbTablesRelativePath} />}
84+
/>
85+
<Route
86+
path={clusterKsqlDbTablesRelativePath}
87+
element={
88+
<TableView
89+
fetching={tables.isFetching}
90+
rows={tables.data || []}
91+
/>
92+
}
93+
/>
94+
<Route
95+
path={clusterKsqlDbStreamsRelativePath}
96+
element={
97+
<TableView
98+
fetching={streams.isFetching}
99+
rows={streams.data || []}
100+
/>
101+
}
102+
/>
103+
<Route path={clusterKsqlDbQueryRelativePath} element={<Query />} />
104+
</Routes>
105+
</div>
106+
</>
13107
);
14108
};
15109

kafka-ui-react-app/src/components/KsqlDb/List/KsqlDbItem/KsqlDbItem.tsx

Lines changed: 0 additions & 58 deletions
This file was deleted.

kafka-ui-react-app/src/components/KsqlDb/List/KsqlDbItem/__test__/KsqlDbItem.spec.tsx

Lines changed: 0 additions & 59 deletions
This file was deleted.

kafka-ui-react-app/src/components/KsqlDb/List/KsqlDbItem/utils/ksqlRowData.ts

Lines changed: 0 additions & 12 deletions
This file was deleted.

kafka-ui-react-app/src/components/KsqlDb/List/List.tsx

Lines changed: 0 additions & 111 deletions
This file was deleted.

0 commit comments

Comments
 (0)