import React, { Component } from "react";
import { Row, Col, ListView, Icon } from "patternfly-react";
import { Link } from "react-router-dom";
import PlaybookArgs from "./PlaybookArgs";
import PlaybookHosts from "./PlaybookHosts";
import PlaybookFiles from "./PlaybookFiles";
export default class Playbook extends Component {
constructor(props) {
super(props);
this.state = {
expanded: false,
selection: null
};
}
_toggleExpanded = selection => {
this.setState(prevState => {
if (selection === prevState.selection) {
return { expanded: !prevState.expanded };
} else {
return { expanded: true, selection };
}
});
};
_getStatusMetadata(status) {
switch(status) {
case "running":
return {
"name": "running",
"title": "Playbook is in progress.",
"className": "pficon pficon-info list-view-pf-icon-md list-view-pf-icon-info"
}
case "completed":
return {
"name": "completed",
"title": "Playbook has completed successfully.",
"className": "pficon pficon-ok list-view-pf-icon-md list-view-pf-icon-success"
}
case "failed":
return {
"name": "failed",
"title": "Playbook has failed with one or more errors.",
"className": "pficon pficon-error-circle-o list-view-pf-icon-md list-view-pf-icon-danger"
}
case "unknown":
return {
"name": "unknown",
"title": "Playbook's status is unknown.",
"className": "pficon pficon-warning-triangle-o list-view-pf-icon-md list-view-pf-icon-warning"
}
default:
return {
"name": "unknown",
"title": "Playbook's status is unknown.",
"className": "pficon pficon-warning-triangle-o list-view-pf-icon-md list-view-pf-icon-warning"
}
}
}
render() {
const { playbook } = this.props;
const { expanded, selection } = this.state;
const status_metadata = this._getStatusMetadata(playbook.status);
const LeftIcon =
return (
}
leftContent={LeftIcon}
additionalInfo={[
this._toggleExpanded("args")}
>
Arguments
,
this._toggleExpanded("hosts")}
>
{playbook.hosts.length} Hosts
,
this._toggleExpanded("files")}
>
{playbook.files.length} Files
]}
actions={
{Math.round(playbook.duration)} sec
}
heading={
playbook.name
? playbook.name
: playbook.file.path.split("/").slice(-1)[0]
}
stacked={false}
compoundExpand
compoundExpanded={expanded}
onCloseCompoundExpand={() => this.setState({ expanded: false })}
>
{selection === "args" && }
{selection === "hosts" && }
{selection === "files" && }
);
}
}