Skip to content

Commit ccf9466

Browse files
authored
Merge pull request #2260 from github/koesie10/data-extension-editor-stories
Add stories for data extension editor
2 parents ad3a728 + bb05220 commit ccf9466

File tree

5 files changed

+307
-3
lines changed

5 files changed

+307
-3
lines changed

extensions/ql-vscode/.babelrc.json

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"sourceType": "unambiguous",
3+
"presets": [
4+
[
5+
"@babel/preset-env",
6+
{
7+
"targets": {
8+
"chrome": 100
9+
}
10+
}
11+
],
12+
"@babel/preset-typescript",
13+
"@babel/preset-react"
14+
],
15+
"plugins": []
16+
}

extensions/ql-vscode/.storybook/main.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ const config: StorybookConfig = {
1212
core: {
1313
builder: "@storybook/builder-webpack5",
1414
},
15+
features: {
16+
babelModeV7: true,
17+
},
1518
};
1619

1720
module.exports = config;
Lines changed: 223 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,223 @@
1+
import * as React from "react";
2+
3+
import { ComponentMeta, ComponentStory } from "@storybook/react";
4+
5+
import { DataExtensionsEditor as DataExtensionsEditorComponent } from "../../view/data-extensions-editor/DataExtensionsEditor";
6+
7+
export default {
8+
title: "Data Extensions Editor/Data Extensions Editor",
9+
component: DataExtensionsEditorComponent,
10+
} as ComponentMeta<typeof DataExtensionsEditorComponent>;
11+
12+
const Template: ComponentStory<typeof DataExtensionsEditorComponent> = (
13+
args,
14+
) => <DataExtensionsEditorComponent {...args} />;
15+
16+
export const DataExtensionsEditor = Template.bind({});
17+
DataExtensionsEditor.args = {
18+
initialExternalApiUsages: [
19+
{
20+
signature: "org.sql2o.Connection#createQuery(String)",
21+
packageName: "org.sql2o",
22+
typeName: "Connection",
23+
methodName: "createQuery",
24+
methodParameters: "(String)",
25+
supported: true,
26+
usages: [
27+
{
28+
label: "createQuery(...)",
29+
url: {
30+
uri: "file:/home/runner/work/sql2o-example/sql2o-example/src/main/java/org/example/HelloController.java",
31+
startLine: 15,
32+
startColumn: 13,
33+
endLine: 15,
34+
endColumn: 56,
35+
},
36+
},
37+
{
38+
label: "createQuery(...)",
39+
url: {
40+
uri: "file:/home/runner/work/sql2o-example/sql2o-example/src/main/java/org/example/HelloController.java",
41+
startLine: 26,
42+
startColumn: 13,
43+
endLine: 26,
44+
endColumn: 39,
45+
},
46+
},
47+
],
48+
},
49+
{
50+
signature: "org.sql2o.Query#executeScalar(Class)",
51+
packageName: "org.sql2o",
52+
typeName: "Query",
53+
methodName: "executeScalar",
54+
methodParameters: "(Class)",
55+
supported: true,
56+
usages: [
57+
{
58+
label: "executeScalar(...)",
59+
url: {
60+
uri: "file:/home/runner/work/sql2o-example/sql2o-example/src/main/java/org/example/HelloController.java",
61+
startLine: 15,
62+
startColumn: 13,
63+
endLine: 15,
64+
endColumn: 85,
65+
},
66+
},
67+
{
68+
label: "executeScalar(...)",
69+
url: {
70+
uri: "file:/home/runner/work/sql2o-example/sql2o-example/src/main/java/org/example/HelloController.java",
71+
startLine: 26,
72+
startColumn: 13,
73+
endLine: 26,
74+
endColumn: 68,
75+
},
76+
},
77+
],
78+
},
79+
{
80+
signature: "org.sql2o.Sql2o#open()",
81+
packageName: "org.sql2o",
82+
typeName: "Sql2o",
83+
methodName: "open",
84+
methodParameters: "()",
85+
supported: false,
86+
usages: [
87+
{
88+
label: "open(...)",
89+
url: {
90+
uri: "file:/home/runner/work/sql2o-example/sql2o-example/src/main/java/org/example/HelloController.java",
91+
startLine: 14,
92+
startColumn: 24,
93+
endLine: 14,
94+
endColumn: 35,
95+
},
96+
},
97+
{
98+
label: "open(...)",
99+
url: {
100+
uri: "file:/home/runner/work/sql2o-example/sql2o-example/src/main/java/org/example/HelloController.java",
101+
startLine: 25,
102+
startColumn: 24,
103+
endLine: 25,
104+
endColumn: 35,
105+
},
106+
},
107+
],
108+
},
109+
{
110+
signature: "java.io.PrintStream#println(String)",
111+
packageName: "java.io",
112+
typeName: "PrintStream",
113+
methodName: "println",
114+
methodParameters: "(String)",
115+
supported: true,
116+
usages: [
117+
{
118+
label: "println(...)",
119+
url: {
120+
uri: "file:/home/runner/work/sql2o-example/sql2o-example/src/main/java/org/example/HelloController.java",
121+
startLine: 29,
122+
startColumn: 9,
123+
endLine: 29,
124+
endColumn: 49,
125+
},
126+
},
127+
],
128+
},
129+
{
130+
signature:
131+
"org.springframework.boot.SpringApplication#run(Class,String[])",
132+
packageName: "org.springframework.boot",
133+
typeName: "SpringApplication",
134+
methodName: "run",
135+
methodParameters: "(Class,String[])",
136+
supported: false,
137+
usages: [
138+
{
139+
label: "run(...)",
140+
url: {
141+
uri: "file:/home/runner/work/sql2o-example/sql2o-example/src/main/java/org/example/Sql2oExampleApplication.java",
142+
startLine: 9,
143+
startColumn: 9,
144+
endLine: 9,
145+
endColumn: 66,
146+
},
147+
},
148+
],
149+
},
150+
{
151+
signature: "org.sql2o.Sql2o#Sql2o(String,String,String)",
152+
packageName: "org.sql2o",
153+
typeName: "Sql2o",
154+
methodName: "Sql2o",
155+
methodParameters: "(String,String,String)",
156+
supported: false,
157+
usages: [
158+
{
159+
label: "new Sql2o(...)",
160+
url: {
161+
uri: "file:/home/runner/work/sql2o-example/sql2o-example/src/main/java/org/example/HelloController.java",
162+
startLine: 10,
163+
startColumn: 33,
164+
endLine: 10,
165+
endColumn: 88,
166+
},
167+
},
168+
],
169+
},
170+
{
171+
signature: "org.sql2o.Sql2o#Sql2o(String)",
172+
packageName: "org.sql2o",
173+
typeName: "Sql2o",
174+
methodName: "Sql2o",
175+
methodParameters: "(String)",
176+
supported: false,
177+
usages: [
178+
{
179+
label: "new Sql2o(...)",
180+
url: {
181+
uri: "file:/home/runner/work/sql2o-example/sql2o-example/src/main/java/org/example/HelloController.java",
182+
startLine: 23,
183+
startColumn: 23,
184+
endLine: 23,
185+
endColumn: 36,
186+
},
187+
},
188+
],
189+
},
190+
],
191+
initialModeledMethods: {
192+
"org.sql2o.Sql2o#Sql2o(String)": {
193+
type: "sink",
194+
input: "Argument[0]",
195+
output: "",
196+
kind: "jndi-injection",
197+
},
198+
"org.sql2o.Connection#createQuery(String)": {
199+
type: "summary",
200+
input: "Argument[-1]",
201+
output: "ReturnValue",
202+
kind: "taint",
203+
},
204+
"org.sql2o.Sql2o#open()": {
205+
type: "summary",
206+
input: "Argument[-1]",
207+
output: "ReturnValue",
208+
kind: "taint",
209+
},
210+
"org.sql2o.Query#executeScalar(Class)": {
211+
type: "neutral",
212+
input: "",
213+
output: "",
214+
kind: "",
215+
},
216+
"org.sql2o.Sql2o#Sql2o(String,String,String)": {
217+
type: "neutral",
218+
input: "",
219+
output: "",
220+
kind: "",
221+
},
222+
},
223+
};
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import * as React from "react";
2+
3+
import { ComponentMeta, ComponentStory } from "@storybook/react";
4+
5+
import { MethodRow as MethodRowComponent } from "../../view/data-extensions-editor/MethodRow";
6+
7+
export default {
8+
title: "Data Extensions Editor/Method Row",
9+
component: MethodRowComponent,
10+
} as ComponentMeta<typeof MethodRowComponent>;
11+
12+
const Template: ComponentStory<typeof MethodRowComponent> = (args) => (
13+
<MethodRowComponent {...args} />
14+
);
15+
16+
export const MethodRow = Template.bind({});
17+
MethodRow.args = {
18+
externalApiUsage: {
19+
signature: "org.sql2o.Sql2o#open()",
20+
packageName: "org.sql2o",
21+
typeName: "Sql2o",
22+
methodName: "open",
23+
methodParameters: "()",
24+
supported: true,
25+
usages: [
26+
{
27+
label: "open(...)",
28+
url: {
29+
uri: "file:/home/runner/work/sql2o-example/sql2o-example/src/main/java/org/example/HelloController.java",
30+
startLine: 14,
31+
startColumn: 24,
32+
endLine: 14,
33+
endColumn: 35,
34+
},
35+
},
36+
{
37+
label: "open(...)",
38+
url: {
39+
uri: "file:/home/runner/work/sql2o-example/sql2o-example/src/main/java/org/example/HelloController.java",
40+
startLine: 25,
41+
startColumn: 24,
42+
endLine: 25,
43+
endColumn: 35,
44+
},
45+
},
46+
],
47+
},
48+
modeledMethod: {
49+
type: "summary",
50+
input: "Argument[-1]",
51+
output: "ReturnValue",
52+
kind: "taint",
53+
},
54+
};

extensions/ql-vscode/src/view/data-extensions-editor/DataExtensionsEditor.tsx

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,21 @@ const ProgressBar = styled.div<ProgressBarProps>`
3333
background-color: var(--vscode-progressBar-background);
3434
`;
3535

36-
export function DataExtensionsEditor(): JSX.Element {
36+
type Props = {
37+
initialExternalApiUsages?: ExternalApiUsage[];
38+
initialModeledMethods?: Record<string, ModeledMethod>;
39+
};
40+
41+
export function DataExtensionsEditor({
42+
initialExternalApiUsages = [],
43+
initialModeledMethods = {},
44+
}: Props): JSX.Element {
3745
const [externalApiUsages, setExternalApiUsages] = useState<
3846
ExternalApiUsage[]
39-
>([]);
47+
>(initialExternalApiUsages);
4048
const [modeledMethods, setModeledMethods] = useState<
4149
Record<string, ModeledMethod>
42-
>({});
50+
>(initialModeledMethods);
4351
const [progress, setProgress] = useState<Omit<ShowProgressMessage, "t">>({
4452
step: 0,
4553
maxStep: 0,

0 commit comments

Comments
 (0)