You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
3.5 KiB
JavaScript
93 lines
3.5 KiB
JavaScript
import React from 'react';
|
|
import Env from './env';
|
|
import Mem from './mem';
|
|
import Probe from './probe';
|
|
import Dns from './dns';
|
|
import KeyGen from './keygen';
|
|
import Request from './request';
|
|
import HighlightLink from './highlightlink'
|
|
import Disconnected from './disconnected'
|
|
import MemQ from './memq'
|
|
import { Location, Locations } from 'react-router-component';
|
|
|
|
function createElement(Component, props) {
|
|
console.log(props)
|
|
return <Component {...props}/>
|
|
}
|
|
|
|
export default class App extends React.Component {
|
|
getChildContext() {
|
|
return {
|
|
reportConnError: () => {
|
|
if (this.disconnected) {
|
|
this.disconnected.reportConnError()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
handleNavigation() {
|
|
this.forceUpdate()
|
|
}
|
|
|
|
reportConnError() {
|
|
this.disconnected.
|
|
this.timer = setInterval(this.loadState.bind(this), 1000);
|
|
}
|
|
|
|
render () {
|
|
let addrs = [];
|
|
for (let a of this.props.page.addrs) {
|
|
addrs.push(<span key={a}>{a}</span>, " ")
|
|
}
|
|
|
|
let base = this.props.page.urlBase;
|
|
|
|
return (
|
|
<div className="top">
|
|
<div className="title">
|
|
<div className="alert alert-danger" role="alert">
|
|
<svg className="icon icon-notification"><use xlinkHref="#icon-notification"></use></svg> { " " }
|
|
<b>WARNING:</b> This server may expose sensitive and secret information. Be careful.
|
|
</div>
|
|
<Disconnected ref={el => this.disconnected = el}/>
|
|
<h2><samp>{this.props.page.hostname}</samp></h2>
|
|
<div>Demo application version <i>{this.props.page.version}</i></div>
|
|
<div>Serving on {addrs}</div>
|
|
</div>
|
|
|
|
<div className="nav-container">
|
|
<div className="nav">
|
|
<HighlightLink href={base+"/"} className="nav-item">Request Details</HighlightLink>
|
|
<HighlightLink href={base+"/-/env"} className="nav-item">Server Env</HighlightLink>
|
|
<HighlightLink href={base+"/-/mem"} className="nav-item">Memory</HighlightLink>
|
|
<HighlightLink href={base+"/-/liveness"} className="nav-item">Liveness Probe</HighlightLink>
|
|
<HighlightLink href={base+"/-/readiness"} className="nav-item">Readiness Probe</HighlightLink>
|
|
<HighlightLink href={base+"/-/dns"} className="nav-item">DNS Query</HighlightLink>
|
|
<HighlightLink href={base+"/-/keygen"} className="nav-item">KeyGen Workload</HighlightLink>
|
|
<HighlightLink href={base+"/-/memq"} className="nav-item">MemQ Server</HighlightLink>
|
|
<a className="nav-item" href={base+"/fs/"}>File system browser</a>
|
|
</div>
|
|
<div className="content">
|
|
<Locations onNavigation={this.handleNavigation.bind(this)}>
|
|
<Location path={base+"/"} handler={Request} page={this.props.page}/>
|
|
<Location path={base+"/-/env"} apiPath={base+"/env/api"} handler={Env}/>
|
|
<Location path={base+"/-/mem"} apiPath={base+"/mem/api"} handler={Mem}/>
|
|
<Location path={base+"/-/liveness"} serverPath={base+"/healthy"} handler={Probe}/>
|
|
<Location path={base+"/-/readiness"} serverPath={base+"/ready"} handler={Probe}/>
|
|
<Location path={base+"/-/dns"} serverPath={base+"/dns"} handler={Dns}/>
|
|
<Location path={base+"/-/keygen"} serverPath={base+"/keygen"} handler={KeyGen}/>
|
|
<Location path={base+"/-/memq"} serverPath={base+"/memq"} handler={MemQ}/>
|
|
</Locations>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
)
|
|
}
|
|
}
|
|
|
|
App.childContextTypes = {
|
|
reportConnError: React.PropTypes.func
|
|
}
|
|
|