@@ -76,17 +76,26 @@ class WBNameAndUuid extends Component { | |||||
} | } | ||||
componentDidMount() { | componentDidMount() { | ||||
this.fetchData(); | |||||
if (this.props.lazy) | |||||
;//this.setState({ item: { uuid: this.props.uuid }}); | |||||
else | |||||
this.fetchData(); | |||||
} | } | ||||
componentWillReceiveProps(nextProps) { | componentWillReceiveProps(nextProps) { | ||||
if (this.props.uuid !== nextProps.uuid) { | |||||
if (this.props.uuid === nextProps.uuid) | |||||
return; | |||||
if (nextProps.lazy) { | |||||
this.setState({ item: { uuid: nextProps.uuid }}); | |||||
} else { | |||||
this.props = nextProps; | this.props = nextProps; | ||||
this.fetchData(); | this.fetchData(); | ||||
} | } | ||||
} | } | ||||
render({ uuid, onLinkClicked }, { error, item }) { | |||||
render({ uuid, onLinkClicked, lazy }, { error, item }) { | |||||
if (!uuid) | if (!uuid) | ||||
return ( | return ( | ||||
<div><i>{ String(uuid) }</i></div> | <div><i>{ String(uuid) }</i></div> | ||||
@@ -97,10 +106,14 @@ class WBNameAndUuid extends Component { | |||||
<div> | <div> | ||||
{ error ? error : (item ? ( | { error ? error : (item ? ( | ||||
<a href={ urlForObject(item) } onclick={ onLinkClicked }>{ arvadosObjectName(item) }</a> | <a href={ urlForObject(item) } onclick={ onLinkClicked }>{ arvadosObjectName(item) }</a> | ||||
) : 'Loading...') } | |||||
) : (lazy ? null : 'Loading...')) } | |||||
</div> | </div> | ||||
<div> | <div> | ||||
{ uuid } | |||||
{ uuid } { (lazy && !item) ? ( | |||||
<a href="#" title="Look up" onclick={ e => { e.preventDefault(); this.fetchData(); } }> | |||||
<i class="fas fa-search"></i> | |||||
</a> | |||||
) : null } | |||||
</div> | </div> | ||||
</div> | </div> | ||||
); | ); | ||||
@@ -58,10 +58,10 @@ class WBProcessListing extends Component { | |||||
{ item.description } { renderEditDescription(item, () => this.fetchItems()) } | { item.description } { renderEditDescription(item, () => this.fetchItems()) } | ||||
</div> | </div> | ||||
</div>), | </div>), | ||||
( <WBProcessState app={ app } process={ item } /> ), | |||||
( <WBNameAndUuid app={ app } uuid={ item['owner_uuid'] } /> ), | |||||
( <WBProcessState app={ app } process={ item } lazy={ true } /> ), | |||||
( <WBNameAndUuid app={ app } uuid={ item['owner_uuid'] } lazy={ true } /> ), | |||||
wbFormatDate(item['created_at']), | wbFormatDate(item['created_at']), | ||||
( <WBNameAndUuid app={ app } uuid={ item['output_uuid'] } /> ), | |||||
( <WBNameAndUuid app={ app } uuid={ item['output_uuid'] } lazy={ true } /> ), | |||||
(<div> | (<div> | ||||
<button class="btn btn-outline-warning m-1" onclick={ () => this.cancelProcess(item.uuid) }> | <button class="btn btn-outline-warning m-1" onclick={ () => this.cancelProcess(item.uuid) }> | ||||
<i class="fas fa-stop-circle"></i> | <i class="fas fa-stop-circle"></i> | ||||
@@ -3,12 +3,18 @@ import makeArvadosRequest from 'make-arvados-request'; | |||||
class WBProcessState extends Component { | class WBProcessState extends Component { | ||||
componentDidMount() { | componentDidMount() { | ||||
this.fetchData(); | |||||
if (!this.props.lazy) | |||||
this.fetchData(); | |||||
} | } | ||||
componentWillReceiveProps(nextProps) { | componentWillReceiveProps(nextProps) { | ||||
this.props = nextProps; | |||||
this.fetchData(); | |||||
if (this.props.lazy) { | |||||
this.setState({ container: null, apiError: null }); | |||||
} else { | |||||
this.props = nextProps; | |||||
this.fetchData(); | |||||
} | |||||
} | } | ||||
fetchData() { | fetchData() { | ||||
@@ -24,7 +30,7 @@ class WBProcessState extends Component { | |||||
prom = prom.catch(() => this.setState({ 'apiError': 'Failed to fetch container' })); | prom = prom.catch(() => this.setState({ 'apiError': 'Failed to fetch container' })); | ||||
} | } | ||||
render({ process }, { container, apiError }) { | |||||
render({ process, lazy }, { container, apiError }) { | |||||
const runtimeStatus = container ? container.runtime_status : null; | const runtimeStatus = container ? container.runtime_status : null; | ||||
const error = runtimeStatus ? runtimeStatus.error : null; | const error = runtimeStatus ? runtimeStatus.error : null; | ||||
const warning = runtimeStatus ? runtimeStatus.warning : null; | const warning = runtimeStatus ? runtimeStatus.warning : null; | ||||
@@ -38,7 +44,11 @@ class WBProcessState extends Component { | |||||
{ error ? [" / ", <a href={ '/container/' + container.uuid } | { error ? [" / ", <a href={ '/container/' + container.uuid } | ||||
title={ error }>E</a> ] : null } | title={ error }>E</a> ] : null } | ||||
{ warning ? [ " / ", <a href={ '/container/' + container.uuid } | { warning ? [ " / ", <a href={ '/container/' + container.uuid } | ||||
title={ warning }>W</a> ] : null } | |||||
title={ warning }>W</a> ] : null } { lazy && !container && !apiError ? ( | |||||
<a href="#" title="Look up" onclick={ e => { e.preventDefault(); this.fetchData(); } }> | |||||
<i class="fas fa-search"></i> | |||||
</a> | |||||
) : null } | |||||
</div> | </div> | ||||
); | ); | ||||
} | } | ||||