Skip to content

Commit

Permalink
[dagit] add dagster libraries menu to code location row (#12315)
Browse files Browse the repository at this point in the history
Add a simple menu for now that allows you to view the libraries that
were used when loading the definitions for a code location.

### How I Tested These Changes
![Screen Shot 2023-02-13 at 3 47 55
PM](https://user-images.githubusercontent.com/202219/218582974-56967ed1-822c-40cb-a782-e6a2cd287e81.png)
![Screen Shot 2023-02-13 at 3 47 43
PM](https://user-images.githubusercontent.com/202219/218582975-d8decd2f-4b67-496a-bfa7-7d8adc3c06cb.png)
  • Loading branch information
alangenfeld committed Feb 16, 2023
1 parent 18cc0c1 commit b31c14f
Show file tree
Hide file tree
Showing 3 changed files with 84 additions and 4 deletions.
69 changes: 65 additions & 4 deletions js_modules/dagit/packages/core/src/workspace/CodeLocationMenu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import {
MenuItem,
Popover,
StyledReadOnlyCodeMirror,
Table,
} from '@dagster-io/ui';
import * as React from 'react';
import * as yaml from 'yaml';
Expand All @@ -16,24 +17,46 @@ import {WorkspaceRepositoryLocationNode} from './WorkspaceContext';
export const CodeLocationMenu: React.FC<{locationNode: WorkspaceRepositoryLocationNode}> = ({
locationNode,
}) => {
const [isOpen, setIsOpen] = React.useState(false);
const [configIsOpen, setConfigIsOpen] = React.useState(false);
const [libsIsOpen, setLibsIsOpen] = React.useState(false);

let libsMenuItem = null;
let libsDialog = null;
if (
locationNode.locationOrLoadError?.__typename === 'RepositoryLocation' &&
locationNode.locationOrLoadError.dagsterLibraryVersions !== null
) {
libsMenuItem = (
<MenuItem icon="info" text="View Dagster libraries" onClick={() => setLibsIsOpen(true)} />
);
libsDialog = (
<DagsterLibrariesDialog
libraries={locationNode.locationOrLoadError.dagsterLibraryVersions}
isOpen={libsIsOpen}
setIsOpen={setLibsIsOpen}
/>
);
}

return (
<>
<Popover
position="bottom-left"
content={
<Menu>
<MenuItem icon="info" text="View configuration" onClick={() => setIsOpen(true)} />
<MenuItem icon="info" text="View configuration" onClick={() => setConfigIsOpen(true)} />
{libsMenuItem}
</Menu>
}
>
<Button icon={<Icon name="expand_more" />}></Button>
</Popover>
<CodeLocationConfigDialog
metadata={locationNode.displayMetadata}
isOpen={isOpen}
setIsOpen={setIsOpen}
isOpen={configIsOpen}
setIsOpen={setConfigIsOpen}
/>
{libsDialog}
</>
);
};
Expand Down Expand Up @@ -61,6 +84,44 @@ export const CodeLocationConfigDialog: React.FC<{
);
};

export const DagsterLibrariesDialog: React.FC<{
isOpen: boolean;
setIsOpen: (next: boolean) => void;
libraries: {name: string; version: string}[];
}> = ({isOpen, setIsOpen, libraries}) => {
return (
<Dialog
title="Dagster library versions"
icon="info"
isOpen={isOpen}
onClose={() => setIsOpen(false)}
style={{width: '600px'}}
>
<Table>
<thead>
<tr>
<th>Libray</th>
<th>Version</th>
</tr>
</thead>
<tbody>
{libraries.map((library) => (
<tr key={library.name}>
<td>{library.name}</td>
<td>{library.version}</td>
</tr>
))}
</tbody>
</Table>
<DialogFooter topBorder>
<Button onClick={() => setIsOpen(false)} intent="primary">
Done
</Button>
</DialogFooter>
</Dialog>
);
};

const CodeLocationConfig: React.FC<{
displayMetadata: WorkspaceRepositoryLocationNode['displayMetadata'];
}> = ({displayMetadata}) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,10 @@ const ROOT_WORKSPACE_QUERY = gql`
isReloadSupported
serverId
name
dagsterLibraryVersions {
name
version
}
repositories {
id
...WorkspaceRepository
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit b31c14f

Please sign in to comment.