From 3aa04800ef53ab074a74dfc6b89c6ffdfd02f1cc Mon Sep 17 00:00:00 2001 From: Guillaume Vincent Date: Mon, 17 Dec 2018 17:31:23 +0100 Subject: [PATCH] Add files and hosts components for a playbook Change-Id: I3c7d1ce1be1bcc3564ad9073d3c6c2095ec085a0 --- src/playbooks/Playbook.js | 10 ++--- src/playbooks/PlaybookArgs.js | 1 - src/playbooks/PlaybookFiles.js | 79 +++++++++++++++++++++++++++++++++ src/playbooks/PlaybookHosts.js | 80 ++++++++++++++++++++++++++++++++++ 4 files changed, 164 insertions(+), 6 deletions(-) create mode 100644 src/playbooks/PlaybookFiles.js create mode 100644 src/playbooks/PlaybookHosts.js diff --git a/src/playbooks/Playbook.js b/src/playbooks/Playbook.js index 2e98bdb..69d13a7 100644 --- a/src/playbooks/Playbook.js +++ b/src/playbooks/Playbook.js @@ -2,6 +2,8 @@ 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) { @@ -123,11 +125,9 @@ export default class Playbook extends Component { > - {selection === "args" ? ( - - ) : ( - selection - )} + {selection === "args" && } + {selection === "hosts" && } + {selection === "files" && } diff --git a/src/playbooks/PlaybookArgs.js b/src/playbooks/PlaybookArgs.js index 3931a01..c8b2314 100644 --- a/src/playbooks/PlaybookArgs.js +++ b/src/playbooks/PlaybookArgs.js @@ -54,7 +54,6 @@ export default class PlaybookArgs extends Component { const filteredArgs = args.filter( arg => arg.toLowerCase().indexOf(search.toLowerCase()) !== -1 ); - console.log(search); return (
diff --git a/src/playbooks/PlaybookFiles.js b/src/playbooks/PlaybookFiles.js new file mode 100644 index 0000000..5d3de6d --- /dev/null +++ b/src/playbooks/PlaybookFiles.js @@ -0,0 +1,79 @@ +import React, { Component } from "react"; +import { Button, Icon, Modal } from "patternfly-react"; + +export default class PlaybookFiles extends Component { + state = { + showModal: false, + filePath: null, + fileContent: null + }; + + close = () => { + this.setState({ showModal: false }); + }; + + render() { + const { playbook } = this.props; + const { showModal, filePath, fileContent } = this.state; + return ( +
+ + + + {filePath} + + +
+              {fileContent}
+            
+
+ + + +
+ + + + + + + + + {playbook.files.map(file => ( + + + + + ))} + +
NameActions
{file.path} + +
+
+ ); + } +} diff --git a/src/playbooks/PlaybookHosts.js b/src/playbooks/PlaybookHosts.js new file mode 100644 index 0000000..0ebdbc7 --- /dev/null +++ b/src/playbooks/PlaybookHosts.js @@ -0,0 +1,80 @@ +import React, { Component } from "react"; +import { OverlayTrigger, Tooltip, Icon } from "patternfly-react"; + +export class HostsHelpIcon extends Component { + render() { + return ( + + +
+

Tips: Hosts

+
+

+ This panel contains all the hosts involved in the playbook. +

+
+ + } + placement="bottom" + > + +
+
+ ); + } +} + +export default class PlaybookHosts extends Component { + constructor(props) { + super(props); + this.state = { + search: "" + }; + } + + render() { + const { playbook } = this.props; + const { search } = this.state; + const filteredHosts = playbook.hosts.filter( + host => host.name.toLowerCase().indexOf(search.toLowerCase()) !== -1 + ); + return ( +
+
+
+ this.setState({ search: e.target.value })} + /> +
+
+ Showing {filteredHosts.length} of{" "} + {playbook.hosts.length} hosts + +
+
+ + + + + + + + + {filteredHosts.map(host => ( + + + + + ))} + +
NameAlias
{host.name}{host.alias}
+
+ ); + } +}