|
1 | 1 | import React from 'react'; |
2 | 2 | import { Observable as obs } from 'rxjs'; |
3 | | -import { List, ListItem, Typography } from '@material-ui/core'; |
| 3 | +import inflector from 'inflector-js'; |
4 | 4 | import { createState, connect } from '../../reactive'; |
5 | | -import rels from '../rels'; |
6 | 5 | import store from '../store'; |
7 | | -import { Hyperlink } from '../../components'; |
| 6 | +import { |
| 7 | + Table, |
| 8 | + TableBody, |
| 9 | + TableRow, |
| 10 | + TableHead, |
| 11 | + TableCell, |
| 12 | +} from '../../components/StripeyTable'; |
8 | 13 |
|
9 | | -const links$ = store.links$.map(links => () => links); |
| 14 | +const provider$ = store.body$.map(({ provider }) => () => provider); |
| 15 | + |
| 16 | +const versions$ = store.body$.map(({ versions }) => () => versions); |
10 | 17 |
|
11 | 18 | const recent$ = store.body$ |
12 | 19 | .filter(({ _embedded }) => _embedded) |
13 | 20 | .map(({ _embedded }) => () => _embedded.recent); |
14 | 21 |
|
15 | 22 | const state$ = createState( |
16 | 23 | obs.merge( |
17 | | - links$.map(links => ['links', links]), |
| 24 | + provider$.map(provider => ['provider', provider]), |
| 25 | + versions$.map(versions => ['versions', versions]), |
18 | 26 | recent$.map(recent => ['recent', recent]), |
19 | 27 | ), |
20 | | - obs.of({ recent: { matches: [] }, links: {} }), |
| 28 | + obs.of({ recent: { matches: [] }, provider: '', versions: {} }), |
21 | 29 | ); |
22 | 30 |
|
23 | | -const relsToTitle = { |
24 | | - [rels.feed]: 'All Stream', |
25 | | -}; |
26 | | - |
27 | | -const Links = ({ links, onNavigate }) => ( |
28 | | - <List> |
29 | | - {Object.keys(links).map((rel, key) => ( |
30 | | - <ListItem key={key}> |
31 | | - <Hyperlink link={links[rel]} onNavigate={onNavigate}> |
32 | | - <Typography variant={'h6'}>{relsToTitle[rel]}</Typography> |
33 | | - </Hyperlink> |
34 | | - </ListItem> |
35 | | - ))} |
36 | | - </List> |
| 31 | +const Links = ({ provider, versions }) => ( |
| 32 | + <Table> |
| 33 | + <TableHead> |
| 34 | + <TableRow> |
| 35 | + <TableCell colspan={2}>{'Server Information'}</TableCell> |
| 36 | + </TableRow> |
| 37 | + </TableHead> |
| 38 | + <TableBody> |
| 39 | + <TableRow> |
| 40 | + <TableCell> |
| 41 | + <strong>{'Provider'}</strong> |
| 42 | + </TableCell> |
| 43 | + <TableCell> |
| 44 | + {inflector.camel2words(inflector.underscore(provider))} |
| 45 | + </TableCell> |
| 46 | + </TableRow> |
| 47 | + {Object.keys(versions).map(key => ( |
| 48 | + <TableRow> |
| 49 | + <TableCell> |
| 50 | + <strong> |
| 51 | + {inflector.camel2words(inflector.underscore(key))}{' '} |
| 52 | + {'Version'} |
| 53 | + </strong> |
| 54 | + </TableCell> |
| 55 | + <TableCell>{versions[key]}</TableCell> |
| 56 | + </TableRow> |
| 57 | + ))} |
| 58 | + </TableBody> |
| 59 | + </Table> |
37 | 60 | ); |
38 | 61 |
|
39 | 62 | Links.defaultProps = { |
40 | 63 | links: [], |
41 | 64 | }; |
42 | 65 |
|
43 | | -const Index = ({ links, onNavigate }) => ( |
| 66 | +const Index = ({ provider, versions }) => ( |
44 | 67 | <section> |
45 | | - <Links links={links} onNavigate={onNavigate} /> |
| 68 | + <Links provider={provider} versions={versions} /> |
46 | 69 | </section> |
47 | 70 | ); |
48 | 71 |
|
|
0 commit comments