Skip to content

Commit

Permalink
Migration metrics (#523)
Browse files Browse the repository at this point in the history
* Add useLazyLoadQuery to RepositoryMetrics

* Add useFragment to RepositoryMetricsPage
  • Loading branch information
ikatemart authored Mar 9, 2023
1 parent cfe5c94 commit 5df2541
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 55 deletions.
30 changes: 15 additions & 15 deletions src/components/metrics/RepositoryMetricsPage.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { graphql } from 'babel-plugin-relay/macro';
import React, { useState } from 'react';
import { createFragmentContainer } from 'react-relay';
import { useFragment } from 'react-relay';
import { makeStyles } from '@mui/styles';
import RepositoryMetricsCharts from './RepositoryMetricsCharts';
import Card from '@mui/material/Card';
Expand All @@ -12,7 +12,7 @@ import Input from '@mui/material/Input';
import MenuItem from '@mui/material/MenuItem';
import Typography from '@mui/material/Typography';
import Grid from '@mui/material/Grid';
import { RepositoryMetricsPage_repository } from './__generated__/RepositoryMetricsPage_repository.graphql';
import { RepositoryMetricsPage_repository$key } from './__generated__/RepositoryMetricsPage_repository.graphql';
import { MetricsQueryParameters } from './__generated__/RepositoryMetricsChartsQuery.graphql';
import { Helmet as Head } from 'react-helmet';

Expand All @@ -30,12 +30,22 @@ const useStyles = makeStyles(theme => {
});

interface Props {
repository: RepositoryMetricsPage_repository;
repository: RepositoryMetricsPage_repository$key;
}

function RepositoryMetricsPage(props: Props) {
export default function RepositoryMetricsPage(props: Props) {
let repository = useFragment(
graphql`
fragment RepositoryMetricsPage_repository on Repository {
id
owner
name
}
`,
props.repository,
);

let [parameters, setParameters] = useState<MetricsQueryParameters>({});
let { repository } = props;
let classes = useStyles();

function handleChange(event) {
Expand Down Expand Up @@ -139,13 +149,3 @@ function cleanEmptyOrNullValues(obj) {
}
return result;
}

export default createFragmentContainer(RepositoryMetricsPage, {
repository: graphql`
fragment RepositoryMetricsPage_repository on Repository {
id
owner
name
}
`,
});
72 changes: 32 additions & 40 deletions src/scenes/RepositoryMetrics/RepositoryMetrics.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
import React from 'react';

import { QueryRenderer } from 'react-relay';
import { graphql } from 'babel-plugin-relay/macro';
import { useLazyLoadQuery } from 'react-relay';

import environment from '../../createRelayEnvironment';
import CirrusLinearProgress from '../../components/common/CirrusLinearProgress';
import NotFound from '../NotFound';
import RepositoryMetricsPage from '../../components/metrics/RepositoryMetricsPage';
import { RepositoryMetricsQuery } from './__generated__/RepositoryMetricsQuery.graphql';
Expand All @@ -14,44 +12,38 @@ import TimelineIcon from '@mui/icons-material/Timeline';

export default function RepositoryMetrics(parentProps): JSX.Element {
const { platform, owner, name } = useParams();
return (
<QueryRenderer<RepositoryMetricsQuery>
environment={environment}
variables={{ platform, owner, name }}
query={graphql`
query RepositoryMetricsQuery($platform: String!, $owner: String!, $name: String!) {
ownerRepository(platform: $platform, owner: $owner, name: $name) {
...AppBreadcrumbs_repository
...RepositoryMetricsPage_repository
}
viewer {
...AppBreadcrumbs_viewer
}
}
`}
render={({ error, props }) => {
if (!props) {
return <CirrusLinearProgress />;

const response = useLazyLoadQuery<RepositoryMetricsQuery>(
graphql`
query RepositoryMetricsQuery($platform: String!, $owner: String!, $name: String!) {
ownerRepository(platform: $platform, owner: $owner, name: $name) {
...AppBreadcrumbs_repository
...RepositoryMetricsPage_repository
}
if (!props.ownerRepository) {
return <NotFound message={error} />;
viewer {
...AppBreadcrumbs_viewer
}
return (
<>
<AppBreadcrumbs
repository={props.ownerRepository}
viewer={props.viewer}
extraCrumbs={[
{
name: 'Metrics',
Icon: TimelineIcon,
},
]}
/>
<RepositoryMetricsPage repository={props.ownerRepository} {...parentProps} />
</>
);
}}
/>
}
`,
{ platform, owner, name },
);

if (!response.ownerRepository) {
return <NotFound />;
}
return (
<>
<AppBreadcrumbs
repository={response.ownerRepository}
viewer={response.viewer}
extraCrumbs={[
{
name: 'Metrics',
Icon: TimelineIcon,
},
]}
/>
<RepositoryMetricsPage repository={response.ownerRepository} {...parentProps} />
</>
);
}

0 comments on commit 5df2541

Please sign in to comment.