Skip to content

Commit 28c6ab3

Browse files
Merge pull request #2597 from github/robertbrignull/data-view-state
Clear up how we pass around view state
2 parents 3e59859 + 79a567b commit 28c6ab3

File tree

3 files changed

+28
-28
lines changed

3 files changed

+28
-28
lines changed

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

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,13 @@ import { percentFormatter } from "./formatters";
1919
import { Mode } from "../../data-extensions-editor/shared/mode";
2020
import { groupMethods } from "../../data-extensions-editor/shared/sorting";
2121

22+
const LoadingContainer = styled.div`
23+
text-align: center;
24+
padding: 1em;
25+
font-size: x-large;
26+
font-weight: 600;
27+
`;
28+
2229
const DataExtensionsEditorContainer = styled.div`
2330
margin-top: 1rem;
2431
`;
@@ -239,6 +246,10 @@ export function DataExtensionsEditor({
239246
});
240247
}, [viewState?.mode]);
241248

249+
if (viewState === undefined) {
250+
return <LoadingContainer>Loading...</LoadingContainer>;
251+
}
252+
242253
return (
243254
<DataExtensionsEditorContainer>
244255
{progress.maxStep > 0 && (
@@ -252,25 +263,21 @@ export function DataExtensionsEditor({
252263
<>
253264
<ViewTitle>Data extensions editor</ViewTitle>
254265
<DetailsContainer>
255-
{viewState?.extensionPack && (
256-
<>
257-
<LinkIconButton onClick={onOpenExtensionPackClick}>
258-
<span slot="start" className="codicon codicon-package"></span>
259-
{viewState.extensionPack.name}
260-
</LinkIconButton>
261-
</>
262-
)}
266+
<LinkIconButton onClick={onOpenExtensionPackClick}>
267+
<span slot="start" className="codicon codicon-package"></span>
268+
{viewState.extensionPack.name}
269+
</LinkIconButton>
263270
<div>
264271
{percentFormatter.format(modeledPercentage / 100)} modeled
265272
</div>
266273
<div>
267274
{percentFormatter.format(unModeledPercentage / 100)} unmodeled
268275
</div>
269-
{viewState?.enableFrameworkMode && (
276+
{viewState.enableFrameworkMode && (
270277
<>
271278
<div>
272279
Mode:{" "}
273-
{viewState?.mode === Mode.Framework
280+
{viewState.mode === Mode.Framework
274281
? "Framework"
275282
: "Application"}
276283
</div>
@@ -290,17 +297,17 @@ export function DataExtensionsEditor({
290297
<EditorContainer>
291298
<ButtonsContainer>
292299
<VSCodeButton onClick={onSaveAllClick}>Apply</VSCodeButton>
293-
{viewState?.enableFrameworkMode && (
300+
{viewState.enableFrameworkMode && (
294301
<VSCodeButton appearance="secondary" onClick={onRefreshClick}>
295302
Refresh
296303
</VSCodeButton>
297304
)}
298305
<VSCodeButton onClick={onGenerateFromSourceClick}>
299-
{viewState?.mode === Mode.Framework
306+
{viewState.mode === Mode.Framework
300307
? "Generate"
301308
: "Download and generate"}
302309
</VSCodeButton>
303-
{viewState?.showLlmButton && (
310+
{viewState.showLlmButton && (
304311
<>
305312
<VSCodeButton onClick={onGenerateAllFromLlmClick}>
306313
Generate using LLM
@@ -313,7 +320,6 @@ export function DataExtensionsEditor({
313320
unsavedModels={unsavedModels}
314321
modeledMethods={modeledMethods}
315322
viewState={viewState}
316-
mode={viewState?.mode ?? Mode.Application}
317323
onChange={onChange}
318324
onSaveModelClick={onSaveModelClick}
319325
onGenerateFromLlmClick={onGenerateFromLlmClick}

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

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,7 @@ type Props = {
7070
title: string;
7171
externalApiUsages: ExternalApiUsage[];
7272
modeledMethods: Record<string, ModeledMethod>;
73-
viewState: DataExtensionEditorViewState | undefined;
74-
mode: Mode;
73+
viewState: DataExtensionEditorViewState;
7574
hasUnsavedChanges: boolean;
7675
onChange: (
7776
modelName: string,
@@ -95,7 +94,6 @@ export const LibraryRow = ({
9594
externalApiUsages,
9695
modeledMethods,
9796
viewState,
98-
mode,
9997
hasUnsavedChanges,
10098
onChange,
10199
onSaveModelClick,
@@ -166,7 +164,7 @@ export const LibraryRow = ({
166164
</ModeledPercentage>
167165
{hasUnsavedChanges ? <VSCodeTag>UNSAVED</VSCodeTag> : null}
168166
</NameContainer>
169-
{viewState?.showLlmButton && (
167+
{viewState.showLlmButton && (
170168
<VSCodeButton appearance="icon" onClick={handleModelWithAI}>
171169
<Codicon name="lightbulb-autofix" label="Model with AI" />
172170
&nbsp;Model with AI
@@ -176,8 +174,8 @@ export const LibraryRow = ({
176174
<Codicon name="code" label="Model from source" />
177175
&nbsp;Model from source
178176
</VSCodeButton>
179-
{viewState?.enableFrameworkMode &&
180-
viewState?.mode === Mode.Application && (
177+
{viewState.enableFrameworkMode &&
178+
viewState.mode === Mode.Application && (
181179
<VSCodeButton appearance="icon" onClick={handleModelDependency}>
182180
<Codicon name="references" label="Model dependency" />
183181
&nbsp;Model dependency
@@ -190,7 +188,7 @@ export const LibraryRow = ({
190188
<ModeledMethodDataGrid
191189
externalApiUsages={externalApiUsages}
192190
modeledMethods={modeledMethods}
193-
mode={mode}
191+
mode={viewState.mode}
194192
onChange={onChangeWithModelName}
195193
/>
196194
<SectionDivider />

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

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import { useMemo } from "react";
33
import { ExternalApiUsage } from "../../data-extensions-editor/external-api-usage";
44
import { ModeledMethod } from "../../data-extensions-editor/modeled-method";
55
import { LibraryRow } from "./LibraryRow";
6-
import { Mode } from "../../data-extensions-editor/shared/mode";
76
import {
87
groupMethods,
98
sortGroupNames,
@@ -14,8 +13,7 @@ type Props = {
1413
externalApiUsages: ExternalApiUsage[];
1514
unsavedModels: Set<string>;
1615
modeledMethods: Record<string, ModeledMethod>;
17-
viewState: DataExtensionEditorViewState | undefined;
18-
mode: Mode;
16+
viewState: DataExtensionEditorViewState;
1917
onChange: (
2018
modelName: string,
2119
externalApiUsage: ExternalApiUsage,
@@ -38,15 +36,14 @@ export const ModeledMethodsList = ({
3836
unsavedModels,
3937
modeledMethods,
4038
viewState,
41-
mode,
4239
onChange,
4340
onSaveModelClick,
4441
onGenerateFromLlmClick,
4542
onGenerateFromSourceClick,
4643
}: Props) => {
4744
const grouped = useMemo(
48-
() => groupMethods(externalApiUsages, mode),
49-
[externalApiUsages, mode],
45+
() => groupMethods(externalApiUsages, viewState.mode),
46+
[externalApiUsages, viewState.mode],
5047
);
5148

5249
const sortedGroupNames = useMemo(() => sortGroupNames(grouped), [grouped]);
@@ -61,7 +58,6 @@ export const ModeledMethodsList = ({
6158
hasUnsavedChanges={unsavedModels.has(libraryName)}
6259
modeledMethods={modeledMethods}
6360
viewState={viewState}
64-
mode={mode}
6561
onChange={onChange}
6662
onSaveModelClick={onSaveModelClick}
6763
onGenerateFromLlmClick={onGenerateFromLlmClick}

0 commit comments

Comments
 (0)