From ae5e69cd9257e1072f5db69b29dc15b44863f9d3 Mon Sep 17 00:00:00 2001 From: Guillaume Vincent Date: Mon, 17 Sep 2018 17:18:45 +0200 Subject: [PATCH] Add playbook parameters in playbook item Change-Id: Ia258a4b8ed5be4376975c775828289d5f0cbc716 --- src/playbooks/Playbook.js | 20 ++++-- src/playbooks/PlaybookParameters.js | 95 +++++++++++++++++++++++++++++ 2 files changed, 111 insertions(+), 4 deletions(-) create mode 100644 src/playbooks/PlaybookParameters.js diff --git a/src/playbooks/Playbook.js b/src/playbooks/Playbook.js index a6d3af2..5a7a25e 100644 --- a/src/playbooks/Playbook.js +++ b/src/playbooks/Playbook.js @@ -1,5 +1,7 @@ import React, { Component } from "react"; import { Row, Col, ListView, Icon } from "patternfly-react"; +import { Link } from "react-router-dom"; +import PlaybookParameters from "./PlaybookParameters"; export default class Playbook extends Component { constructor(props) { @@ -41,9 +43,9 @@ export default class Playbook extends Component { return ( + - + } leftContent={LeftIcon} additionalInfo={[ @@ -80,14 +82,24 @@ export default class Playbook extends Component { {Math.round(playbook.duration)} sec } - heading={playbook.name ? playbook.name : playbook.file.path.split("/").slice(-1)[0]} + heading={ + playbook.name + ? playbook.name + : playbook.file.path.split("/").slice(-1)[0] + } stacked={false} compoundExpand compoundExpanded={expanded} onCloseCompoundExpand={() => this.setState({ expanded: false })} > - {selection} + + {selection === "parameters" ? ( + + ) : ( + selection + )} + ); diff --git a/src/playbooks/PlaybookParameters.js b/src/playbooks/PlaybookParameters.js new file mode 100644 index 0000000..dcf4b54 --- /dev/null +++ b/src/playbooks/PlaybookParameters.js @@ -0,0 +1,95 @@ +import React, { Component } from "react"; +import { OverlayTrigger, Tooltip, Icon } from "patternfly-react"; + +export class ParamatersHelpIcon extends Component { + render() { + return ( + + +
+

Tips: Parameters

+
+

+ This panel contains all the parameters and options passed to + the ansible-playbook command. +

+

+ You can control which parameters ARA should ignore with the{" "} + ARA_IGNORE_PARAMETERS configuration. +

+
+ + } + placement="bottom" + > + +
+
+ ); + } +} + +export default class PlaybookParameters extends Component { + constructor(props) { + super(props); + this.state = { + search: "" + }; + } + + _renderParameter = parameter => { + if (parameter instanceof Array) { + return parameter.join(", "); + } else { + return parameter; + } + }; + + render() { + const { playbook } = this.props; + const { search } = this.state; + const parameters = Object.keys(playbook.parameters); + const filteredParameters = parameters.filter( + parameter => parameter.toLowerCase().indexOf(search.toLowerCase()) !== -1 + ); + console.log(search); + return ( +
+
+
+ this.setState({ search: e.target.value })} + /> +
+
+ Showing {filteredParameters.length} of{" "} + {parameters.length} parameters + +
+
+ + + + + + + + + {filteredParameters.map((parameter, i) => ( + + + + + ))} + +
ParameterValue
{parameter}{this._renderParameter(playbook.parameters[parameter])}
+
+ ); + } +}