Skip to content

Commit 3236dd2

Browse files
authored
Merge pull request #910 from StackStorm/int_yaql
Allow integer fields with YAQL expressions to be saved
2 parents 065f5c6 + d3f5b1d commit 3236dd2

File tree

5 files changed

+50
-7
lines changed

5 files changed

+50
-7
lines changed

apps/st2-actions/actions-details.component.js

+18-4
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,18 @@ export default class ActionsDetails extends React.Component {
200200
return false;
201201
}
202202

203+
isExpression (value) {
204+
if (value.startsWith('{{') && value.endsWith('}}')) {
205+
return true;
206+
}
207+
else if (value.startsWith('<%') && value.endsWith('%>')) {
208+
return true;
209+
}
210+
else {
211+
return false;
212+
}
213+
}
214+
203215
isValidInt (value) {
204216
for ( let n = 0; n < value.length; n += 1) {
205217
const digit = (value.charCodeAt(n) >= 48 && value.charCodeAt(n) <= 57) || value.charCodeAt(n) === 45 || value.charCodeAt(n) === 8;
@@ -280,10 +292,12 @@ export default class ActionsDetails extends React.Component {
280292
<DetailsToolbar key="toolbar">
281293
<Button
282294
disabled={
283-
(this.state.runValue && this.state.runValue.timeout && this.minMax(this.state.runValue.timeout)) ||
284-
(this.state.runValue && this.state.runValue.limit && this.minMax(this.state.runValue.limit)) ||
285-
(this.state.runValue && this.state.runValue.timeout && this.isValidInt(this.state.runValue.timeout)) ||
286-
(this.state.runValue && this.state.runValue.limit && this.isValidInt(this.state.runValue.limit))
295+
(this.state.runValue && this.state.runValue.timeout && !this.isExpression(this.state.runValue.timeout) &&
296+
(this.isValidInt(this.state.runValue.timeout) ||
297+
this.minMax(this.state.runValue.timeout))) ||
298+
(this.state.runValue && this.state.runValue.limit && !this.isExpression(this.state.runValue.limit) &&
299+
(this.isValidInt(this.state.runValue.limit) ||
300+
this.minMax(this.state.runValue.limit)))
287301
}
288302
value="Run" data-test="run_submit" onClick={(e) => this.handleRun(e, action.ref, this.state.runValue, this.state.runTrace || undefined)}
289303
/>

modules/st2-auto-form/fields/base.js

+5
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,12 @@ export class BaseTextField extends React.Component {
8484
return false;
8585
}
8686

87+
if (isYaql(v)) {
88+
return false;
89+
}
90+
8791
return undefined;
92+
8893
}
8994

9095
handleChange(e, value) {

modules/st2-auto-form/fields/integer.js

+9-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
import validator from 'validator';
1616

17-
import { BaseTextField, isJinja } from './base';
17+
import { BaseTextField, isJinja, isYaql } from './base';
1818

1919
export default class IntegerField extends BaseTextField {
2020
static icon = '12'
@@ -24,6 +24,10 @@ export default class IntegerField extends BaseTextField {
2424
return v;
2525
}
2626

27+
if (isYaql(v)) {
28+
return v;
29+
}
30+
2731
if (this.props.name === 'timeout' || this.props.name === 'limit') {
2832
return v ;
2933
}
@@ -37,6 +41,10 @@ export default class IntegerField extends BaseTextField {
3741
return v;
3842
}
3943

44+
if (isYaql(v)) {
45+
return v;
46+
}
47+
4048
return v ? v.toString(10) : '';
4149
}
4250

modules/st2-auto-form/fields/number.js

+9-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
import validator from 'validator';
1616

17-
import { BaseTextField, isJinja } from './base';
17+
import { BaseTextField, isJinja, isYaql } from './base';
1818

1919
export default class NumberField extends BaseTextField {
2020
static icon = '.5'
@@ -24,6 +24,10 @@ export default class NumberField extends BaseTextField {
2424
return v;
2525
}
2626

27+
if (isYaql(v)) {
28+
return v;
29+
}
30+
2731
return v !== '' ? validator.toFloat(v) : void 0;
2832
}
2933

@@ -32,6 +36,10 @@ export default class NumberField extends BaseTextField {
3236
return v;
3337
}
3438

39+
if (isYaql(v)) {
40+
return v;
41+
}
42+
3543
return v ? v.toString(10) : '';
3644
}
3745

modules/st2-auto-form/fields/object.js

+9-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
// limitations under the License.
1414

1515
import _ from 'lodash';
16-
import { BaseTextareaField, isJinja } from './base';
16+
import { BaseTextareaField, isJinja, isYaql } from './base';
1717

1818
export default class ObjectField extends BaseTextareaField {
1919
static icon = '{ }'
@@ -23,6 +23,10 @@ export default class ObjectField extends BaseTextareaField {
2323
return v;
2424
}
2525

26+
if (isYaql(v)) {
27+
return v;
28+
}
29+
2630
return v !== '' && v !== undefined ? JSON.parse(v) : void 0;
2731
}
2832

@@ -31,6 +35,10 @@ export default class ObjectField extends BaseTextareaField {
3135
return v;
3236
}
3337

38+
if (isYaql(v)) {
39+
return v;
40+
}
41+
3442
return JSON.stringify(v || {});
3543
}
3644

0 commit comments

Comments
 (0)