diff --git a/webui/src/App.js b/webui/src/App.js index 9cb3cdc799779de5c7790e14e3fb085d76756f68..1d6382e5e9221feaebabc05a6caf3b57fb00cffc 100644 --- a/webui/src/App.js +++ b/webui/src/App.js @@ -1,5 +1,7 @@ import React from "react"; import { withRouter, Switch, Route } from "react-router"; +import { Link } from "react-router-dom"; +import { withStyles } from "@material-ui/core/styles"; import AppBar from "@material-ui/core/AppBar"; import CssBaseline from "@material-ui/core/CssBaseline"; @@ -7,24 +9,32 @@ import Toolbar from "@material-ui/core/Toolbar"; import Typography from "@material-ui/core/Typography"; import BugPage from "./BugPage"; +import ListPage from "./ListPage"; -const Home = () =>

Home

; +const styles = theme => ({ + appTitle: { + color: "white", + textDecoration: "none" + } +}); -const App = ({ location }) => ( +const App = ({ location, classes }) => ( - - git-bug-webui(1) - + + + git-bug-webui(1) + + - + ); -export default withRouter(App); +export default withStyles(styles)(withRouter(App)); diff --git a/webui/src/BugSummary.js b/webui/src/BugSummary.js index 461fe2d00de577eaf97dcada55a2409da5b3d976..469ab9a866615742f489fddaee1fbb8b24e1806b 100644 --- a/webui/src/BugSummary.js +++ b/webui/src/BugSummary.js @@ -1,4 +1,5 @@ import React from "react"; +import { Link } from "react-router-dom"; import gql from "graphql-tag"; import { withStyles } from "@material-ui/core/styles"; @@ -28,7 +29,8 @@ const BugSummary = ({ bug, classes }) => ( {bug.title} - #{bug.id.slice(0, 8)} • {bug.status.toUpperCase()} + #{bug.id.slice(0, 8)} •{" "} + {bug.status.toUpperCase()}
{bug.labels.map(label => ( diff --git a/webui/src/ListPage.js b/webui/src/ListPage.js new file mode 100644 index 0000000000000000000000000000000000000000..c873eefa273de0e818c5c73837046cf038536e12 --- /dev/null +++ b/webui/src/ListPage.js @@ -0,0 +1,46 @@ +import React from "react"; +import { Query } from "react-apollo"; +import gql from "graphql-tag"; +import { withStyles } from "@material-ui/core/styles"; + +import CircularProgress from "@material-ui/core/CircularProgress"; + +import BugSummary from "./BugSummary"; + +const QUERY = gql` + { + bugs: allBugs { + ...BugSummary + } + } + + ${BugSummary.fragment} +`; + +const styles = theme => ({ + main: { + maxWidth: 600, + margin: "auto", + marginTop: theme.spacing.unit * 4 + } +}); + +const List = withStyles(styles)(({ bugs, classes }) => ( +
+ {bugs.map(bug => ( + + ))} +
+)); + +const ListPage = () => ( + + {({ loading, error, data }) => { + if (loading) return ; + if (error) return

Error.

; + return ; + }} +
+); + +export default ListPage;