From be744c8ea9cd8b289803e84f6edbe0504c0e35ab Mon Sep 17 00:00:00 2001 From: Shital Raut Date: Wed, 17 Feb 2021 10:57:53 +0400 Subject: [PATCH 1/5] task delay model --- .../st2flow-details/orquesta-properties.js | 21 +++++++++++++++++++ modules/st2flow-details/style.css | 14 ++++++++++++- modules/st2flow-model/interfaces.js | 1 + modules/st2flow-model/model-orquesta.js | 4 +++- modules/st2flow-model/schemas/orquesta.json | 12 +++++++++++ 5 files changed, 50 insertions(+), 2 deletions(-) diff --git a/modules/st2flow-details/orquesta-properties.js b/modules/st2flow-details/orquesta-properties.js index 4cca921b1..cfefefe79 100644 --- a/modules/st2flow-details/orquesta-properties.js +++ b/modules/st2flow-details/orquesta-properties.js @@ -100,6 +100,27 @@ export default class OrquestaTransition extends Component { ) } , + this.handleTaskProperty('delay', value ? '10' : false)}> + { + task.delay != null && ( +
+ +
+ ) + } +
, this.handleTaskProperty('with', value ? { items: 'x in <% ctx(y) %>' } : false)}> { task.with && ( diff --git a/modules/st2flow-details/style.css b/modules/st2flow-details/style.css index 52896e59e..a512ddae5 100644 --- a/modules/st2flow-details/style.css +++ b/modules/st2flow-details/style.css @@ -351,7 +351,19 @@ limitations under the License. background-color: white; box-shadow: 0 1px 0 #bbbbbc; } - +.delayField { + width: initial; + margin: 0 7px; + font-weight: normal; + box-sizing: border-box; + height: 36px; + padding: 0 7; + color: black; + border: none; + outline: 0; + background-color: white; + box-shadow: 0 1px 0 #bbbbbc; +} .string-properties { grid-column: 1 / -1; display: grid; diff --git a/modules/st2flow-model/interfaces.js b/modules/st2flow-model/interfaces.js index 64e1b9634..beb1f26ab 100644 --- a/modules/st2flow-model/interfaces.js +++ b/modules/st2flow-model/interfaces.js @@ -41,6 +41,7 @@ export interface TaskInterface { concurrency?: string, }; join?: ?string; + delay?:?string; ref?: any; } diff --git a/modules/st2flow-model/model-orquesta.js b/modules/st2flow-model/model-orquesta.js index 11a8730df..3f2e265db 100644 --- a/modules/st2flow-model/model-orquesta.js +++ b/modules/st2flow-model/model-orquesta.js @@ -85,6 +85,7 @@ type RawTask = { __meta: TokenMeta, action: string, input?: Object, + delay?: string, next?: Array, with?: string | Object, join?: string @@ -140,7 +141,7 @@ class OrquestaModel extends BaseModel implements ModelInterface { } } - const { action = '', input, 'with': _with, join } = task; + const { action = '', input, 'with': _with, join, delay } = task; const [ actionRef, ...inputPartials ] = `${action}`.split(' '); // if (inputPartials.length) { @@ -162,6 +163,7 @@ class OrquestaModel extends BaseModel implements ModelInterface { }, with: typeof _with === 'string' ? { items: _with } : _with, join, + delay, }; return retVal; diff --git a/modules/st2flow-model/schemas/orquesta.json b/modules/st2flow-model/schemas/orquesta.json index f7808a02f..648ab1a4e 100644 --- a/modules/st2flow-model/schemas/orquesta.json +++ b/modules/st2flow-model/schemas/orquesta.json @@ -16,6 +16,18 @@ "minLength": 1, "type": "string" }, + "delay": { + "oneOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "type": "integer", + "minimum": 0 + } + ] + }, "join": { "oneOf": [ { From df7d18edc412d354e98ff31b899ef875864c919a Mon Sep 17 00:00:00 2001 From: Shital Raut Date: Thu, 25 Feb 2021 13:20:18 +0400 Subject: [PATCH 2/5] help text added on delay input box --- modules/st2-auto-form/style.css | 13 ++ .../st2flow-details/orquesta-properties.js | 153 ++++++++++-------- modules/st2flow-details/style.css | 5 +- 3 files changed, 100 insertions(+), 71 deletions(-) diff --git a/modules/st2-auto-form/style.css b/modules/st2-auto-form/style.css index 6817ecdcd..0e04d6dac 100644 --- a/modules/st2-auto-form/style.css +++ b/modules/st2-auto-form/style.css @@ -481,6 +481,19 @@ } } +.tooltiptext { + visibility: hidden; +} +.showtooltiptext { + visibility: visible; + width: auto; + padding: 0; + color: #6c6c6c; + background: none; + display: inline-block; + margin-top: 4px; + margin-left: 35px; +} diff --git a/modules/st2flow-details/orquesta-properties.js b/modules/st2flow-details/orquesta-properties.js index cfefefe79..f8210bde7 100644 --- a/modules/st2flow-details/orquesta-properties.js +++ b/modules/st2flow-details/orquesta-properties.js @@ -46,91 +46,104 @@ type TransitionProps = { }) ) export default class OrquestaTransition extends Component { + static propTypes = { task: PropTypes.object.isRequired, issueModelCommand: PropTypes.func, } - handleTaskProperty(name: string | Array, value: any, noDelete: boolean = false) { - const { task, issueModelCommand } = this.props; +state = { + helpText :false, +}; - if (value || noDelete) { - issueModelCommand && issueModelCommand('setTaskProperty', task, name, value); - } - else { - issueModelCommand && issueModelCommand('deleteTaskProperty', task, name); - } +handleTaskProperty(name: string | Array, value: any, noDelete: boolean = false) { + const { task, issueModelCommand } = this.props; + if (value || noDelete) { + issueModelCommand && issueModelCommand('setTaskProperty', task, name, value); + } + else { + issueModelCommand && issueModelCommand('deleteTaskProperty', task, name); } +} style = style joinFieldRef = React.createRef(); - render() { - const { task } = this.props; +showtext = () => { + this.setState({ helpText: true }); +} + +hideText = () => { + this.setState({ helpText: false }); +} +render() { + const { task } = this.props; - return [ - this.handleTaskProperty('join', value ? 'all' : false)} - > - { - task.join != null && ( -
-
this.handleTaskProperty('join', 'all')}> + return [ + this.handleTaskProperty('join', value ? 'all' : false)} + > + { + task.join != null && ( +
+
this.handleTaskProperty('join', 'all')}> Join all tasks -
-
+ -
- ) - } - , - this.handleTaskProperty('delay', value ? '10' : false)}> - { - task.delay != null && ( -
- +
+ ) + } +
, + this.handleTaskProperty('delay', value ? '10' : false)}> + { + task.delay != null && ( +
+ -
- ) - } -
, - this.handleTaskProperty('with', value ? { items: 'x in <% ctx(y) %>' } : false)}> - { - task.with && ( -
- this.handleTaskProperty([ 'with', 'items' ], value)} /> - this.handleTaskProperty([ 'with', 'concurrency' ], value)} /> -
- ) - } -
, - ]; - } + + enter expression or integer +
+ ) + } +
, + this.handleTaskProperty('with', value ? { items: 'x in <% ctx(y) %>' } : false)}> + { + task.with && ( +
+ this.handleTaskProperty([ 'with', 'items' ], value)} /> + this.handleTaskProperty([ 'with', 'concurrency' ], value)} /> +
+ ) + } +
, + ]; +} } diff --git a/modules/st2flow-details/style.css b/modules/st2flow-details/style.css index a512ddae5..4642139e5 100644 --- a/modules/st2flow-details/style.css +++ b/modules/st2flow-details/style.css @@ -352,7 +352,7 @@ limitations under the License. box-shadow: 0 1px 0 #bbbbbc; } .delayField { - width: initial; + width: 120px; margin: 0 7px; font-weight: normal; box-sizing: border-box; @@ -391,3 +391,6 @@ limitations under the License. } } +.tooltip { + position: relative; +} \ No newline at end of file From d8fd5d9ab71f21df52f0a3a44c28ed7be959171a Mon Sep 17 00:00:00 2001 From: Shital Raut Date: Tue, 2 Mar 2021 13:02:47 +0400 Subject: [PATCH 3/5] delay input box UI modifications --- .../st2flow-details/orquesta-properties.js | 153 ++++++++---------- modules/st2flow-details/style.css | 5 +- 2 files changed, 74 insertions(+), 84 deletions(-) diff --git a/modules/st2flow-details/orquesta-properties.js b/modules/st2flow-details/orquesta-properties.js index f8210bde7..a9deaec4d 100644 --- a/modules/st2flow-details/orquesta-properties.js +++ b/modules/st2flow-details/orquesta-properties.js @@ -52,98 +52,85 @@ export default class OrquestaTransition extends Component { issueModelCommand: PropTypes.func, } -state = { - helpText :false, -}; - -handleTaskProperty(name: string | Array, value: any, noDelete: boolean = false) { - const { task, issueModelCommand } = this.props; - if (value || noDelete) { - issueModelCommand && issueModelCommand('setTaskProperty', task, name, value); + handleTaskProperty(name: string | Array, value: any, noDelete: boolean = false) { + const { task, issueModelCommand } = this.props; + if (value || noDelete) { + issueModelCommand && issueModelCommand('setTaskProperty', task, name, value); + } + else { + issueModelCommand && issueModelCommand('deleteTaskProperty', task, name); + } } - else { - issueModelCommand && issueModelCommand('deleteTaskProperty', task, name); - } -} style = style joinFieldRef = React.createRef(); -showtext = () => { - this.setState({ helpText: true }); -} - -hideText = () => { - this.setState({ helpText: false }); -} -render() { - const { task } = this.props; + render() { + const { task } = this.props; - return [ - this.handleTaskProperty('join', value ? 'all' : false)} - > - { - task.join != null && ( -
-
this.handleTaskProperty('join', 'all')}> + return [ + this.handleTaskProperty('join', value ? 'all' : false)} + > + { + task.join != null && ( +
+
this.handleTaskProperty('join', 'all')}> Join all tasks -
-
+ -
- ) - } - , - this.handleTaskProperty('delay', value ? '10' : false)}> - { - task.delay != null && ( -
+ +
+ ) + } +
, + this.handleTaskProperty('delay', value ? '10' : false)}> + { + task.delay != null && ( +
- enter expression or integer -
- ) - } -
, - this.handleTaskProperty('with', value ? { items: 'x in <% ctx(y) %>' } : false)}> - { - task.with && ( -
- this.handleTaskProperty([ 'with', 'items' ], value)} /> - this.handleTaskProperty([ 'with', 'concurrency' ], value)} /> -
- ) - } -
, - ]; -} +
+ ) + } +
, + this.handleTaskProperty('with', value ? { items: 'x in <% ctx(y) %>' } : false)}> + { + task.with && ( +
+ this.handleTaskProperty([ 'with', 'items' ], value)} /> + this.handleTaskProperty([ 'with', 'concurrency' ], value)} /> +
+ ) + } +
, + ]; + } } diff --git a/modules/st2flow-details/style.css b/modules/st2flow-details/style.css index 4642139e5..afbc3ba71 100644 --- a/modules/st2flow-details/style.css +++ b/modules/st2flow-details/style.css @@ -352,8 +352,9 @@ limitations under the License. box-shadow: 0 1px 0 #bbbbbc; } .delayField { - width: 120px; + width: 100%; margin: 0 7px; + display: block; font-weight: normal; box-sizing: border-box; height: 36px; @@ -363,6 +364,8 @@ limitations under the License. outline: 0; background-color: white; box-shadow: 0 1px 0 #bbbbbc; + margin-top: 7px; + margin-left: 0px; } .string-properties { grid-column: 1 / -1; From 517c67da69824be7a6e839860249c2d1890c9cd0 Mon Sep 17 00:00:00 2001 From: Shital Raut Date: Tue, 9 Mar 2021 15:41:14 +0400 Subject: [PATCH 4/5] changes for positive integer field --- modules/st2flow-details/orquesta-properties.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/modules/st2flow-details/orquesta-properties.js b/modules/st2flow-details/orquesta-properties.js index a9deaec4d..3ec87e839 100644 --- a/modules/st2flow-details/orquesta-properties.js +++ b/modules/st2flow-details/orquesta-properties.js @@ -62,8 +62,16 @@ export default class OrquestaTransition extends Component { } } + isValidInput(value, returnvalue = '') { + if (!isNaN(value) && value < 0) { + return returnvalue; + } + return value; + } + style = style joinFieldRef = React.createRef(); + render() { const { task } = this.props; @@ -111,10 +119,10 @@ export default class OrquestaTransition extends Component { id="delayField" size="3" className={this.style.delayField} - value={task.delay} + value={this.isValidInput(task.delay)} placeholder ="enter expression or integer" onChange={e => this.handleTaskProperty('delay',e.target.value, true)} - onBlur={ e => this.handleTaskProperty('delay',e.target.value, true)} + onBlur={ e => this.handleTaskProperty('delay', e.target.value, true)} /> From bdc6e6f770741fd4e16a259933b6601e2fceccfe Mon Sep 17 00:00:00 2001 From: Shital Raut Date: Mon, 15 Mar 2021 16:34:31 +0400 Subject: [PATCH 5/5] validation for positive ineteger in delay input box --- modules/st2flow-details/orquesta-properties.js | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/modules/st2flow-details/orquesta-properties.js b/modules/st2flow-details/orquesta-properties.js index 3ec87e839..2ac627c7f 100644 --- a/modules/st2flow-details/orquesta-properties.js +++ b/modules/st2flow-details/orquesta-properties.js @@ -54,6 +54,7 @@ export default class OrquestaTransition extends Component { handleTaskProperty(name: string | Array, value: any, noDelete: boolean = false) { const { task, issueModelCommand } = this.props; + if (value || noDelete) { issueModelCommand && issueModelCommand('setTaskProperty', task, name, value); } @@ -62,10 +63,8 @@ export default class OrquestaTransition extends Component { } } - isValidInput(value, returnvalue = '') { - if (!isNaN(value) && value < 0) { - return returnvalue; - } + getValue(value) { + if(!isNaN(value) && value!== '') value = parseInt(value,10); return value; } @@ -119,10 +118,10 @@ export default class OrquestaTransition extends Component { id="delayField" size="3" className={this.style.delayField} - value={this.isValidInput(task.delay)} + value={(task.delay)} placeholder ="enter expression or integer" - onChange={e => this.handleTaskProperty('delay',e.target.value, true)} - onBlur={ e => this.handleTaskProperty('delay', e.target.value, true)} + onChange={e => this.handleTaskProperty('delay',this.getValue(e.target.value), true)} + onBlur={ e => this.handleTaskProperty('delay',this.getValue(e.target.value), true)} />