Skip to content

Commit 15be27c

Browse files
Add new buttons to title bar
1 parent a3921b7 commit 15be27c

2 files changed

Lines changed: 62 additions & 16 deletions

File tree

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

Lines changed: 61 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { calculateModeledPercentage } from "../../data-extensions-editor/shared/
99
import { decimalFormatter, percentFormatter } from "./formatters";
1010
import { Codicon } from "../common";
1111
import { Mode } from "../../data-extensions-editor/shared/mode";
12+
import { VSCodeButton } from "@vscode/webview-ui-toolkit/react";
1213

1314
const LibraryContainer = styled.div`
1415
margin-bottom: 1rem;
@@ -19,15 +20,46 @@ const TitleContainer = styled.button`
1920
gap: 0.5em;
2021
align-items: center;
2122
width: 100%;
22-
font-size: 1.2em;
23-
font-weight: bold;
2423
2524
color: var(--vscode-editor-foreground);
2625
background-color: transparent;
2726
border: none;
2827
cursor: pointer;
2928
`;
3029

30+
const NameContainer = styled.div`
31+
display: flex;
32+
gap: 0.5em;
33+
align-items: baseline;
34+
flex-grow: 1;
35+
text-align: left;
36+
`;
37+
38+
const DependencyName = styled.span`
39+
font-size: 1.2em;
40+
font-weight: bold;
41+
`;
42+
43+
const ModeledPercentage = styled.span`
44+
color: var(--vscode-descriptionForeground);
45+
`;
46+
47+
const UnsavedLabel = styled.span`
48+
text-transform: uppercase;
49+
background-color: var(--vscode-input-background);
50+
padding: 0.2em 0.4em;
51+
border-radius: 0.2em;
52+
`;
53+
54+
const TitleButton = styled(VSCodeButton)`
55+
background-color: transparent;
56+
57+
&:hover {
58+
pointer: cursor;
59+
background-color: var(--vscode-button-secondaryBackground);
60+
}
61+
`;
62+
3163
const StatusContainer = styled.div`
3264
display: flex;
3365
gap: 1em;
@@ -43,6 +75,7 @@ type Props = {
4375
externalApiUsages: ExternalApiUsage[];
4476
modeledMethods: Record<string, ModeledMethod>;
4577
mode: Mode;
78+
hasUnsavedChanges: boolean;
4679
onChange: (
4780
externalApiUsage: ExternalApiUsage,
4881
modeledMethod: ModeledMethod,
@@ -54,6 +87,7 @@ export const LibraryRow = ({
5487
externalApiUsages,
5588
modeledMethods,
5689
mode,
90+
hasUnsavedChanges,
5791
onChange,
5892
}: Props) => {
5993
const modeledPercentage = useMemo(() => {
@@ -70,6 +104,16 @@ export const LibraryRow = ({
70104
return externalApiUsages.reduce((acc, curr) => acc + curr.usages.length, 0);
71105
}, [externalApiUsages]);
72106

107+
const handleModelWithAI = useCallback(async (e: React.MouseEvent) => {
108+
e.stopPropagation();
109+
e.preventDefault();
110+
}, []);
111+
112+
const handleModelFromSource = useCallback(async (e: React.MouseEvent) => {
113+
e.stopPropagation();
114+
e.preventDefault();
115+
}, []);
116+
73117
return (
74118
<LibraryContainer>
75119
<TitleContainer onClick={toggleExpanded} aria-expanded={isExpanded}>
@@ -78,20 +122,21 @@ export const LibraryRow = ({
78122
) : (
79123
<Codicon name="chevron-right" label="Expand" />
80124
)}
81-
{title}
82-
{isExpanded ? null : (
83-
<>
84-
{" "}
85-
(
86-
{pluralize(
87-
externalApiUsages.length,
88-
"method",
89-
"methods",
90-
decimalFormatter.format.bind(decimalFormatter),
91-
)}
92-
, {percentFormatter.format(modeledPercentage / 100)} modeled)
93-
</>
94-
)}
125+
<NameContainer>
126+
<DependencyName>{title}</DependencyName>
127+
<ModeledPercentage>
128+
{percentFormatter.format(modeledPercentage / 100)} modeled
129+
</ModeledPercentage>
130+
{hasUnsavedChanges ? <UnsavedLabel>UNSAVED</UnsavedLabel> : null}
131+
</NameContainer>
132+
<TitleButton onClick={handleModelWithAI}>
133+
<Codicon name="lightbulb-autofix" label="Model with AI" />
134+
&nbsp;Model with AI
135+
</TitleButton>
136+
<TitleButton onClick={handleModelFromSource}>
137+
<Codicon name="code" label="Model from source" />
138+
&nbsp;Model from source
139+
</TitleButton>
95140
</TitleContainer>
96141
{isExpanded && (
97142
<>

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ export const ModeledMethodsList = ({
4141
externalApiUsages={grouped[libraryName]}
4242
modeledMethods={modeledMethods}
4343
mode={mode}
44+
hasUnsavedChanges={false}
4445
onChange={onChange}
4546
/>
4647
))}

0 commit comments

Comments
 (0)