diff --git a/ui/src/flux/components/ExpressionNode.tsx b/ui/src/flux/components/ExpressionNode.tsx index 2173947d5..7d994de25 100644 --- a/ui/src/flux/components/ExpressionNode.tsx +++ b/ui/src/flux/components/ExpressionNode.tsx @@ -39,9 +39,20 @@ class ExpressionNode extends PureComponent { data, scriptUpToYield, }) => { + let isAfterRange = false + let isAfterFilter = false + return ( <> {funcs.map((func, i) => { + if (func.name === 'range') { + isAfterRange = true + } + + if (func.name === 'filter') { + isAfterFilter = true + } + if (func.name === 'yield') { const script = scriptUpToYield(bodyID, declarationID, i) @@ -68,6 +79,7 @@ class ExpressionNode extends PureComponent { onChangeArg={onChangeArg} onDelete={onDeleteFuncNode} onToggleYield={onToggleYield} + isYieldable={isAfterFilter && isAfterRange} isYielding={this.isNextFuncYield(i)} declarationID={declarationID} onGenerateScript={onGenerateScript} diff --git a/ui/src/flux/components/FuncNode.tsx b/ui/src/flux/components/FuncNode.tsx index 09c865d6f..9f912c8a7 100644 --- a/ui/src/flux/components/FuncNode.tsx +++ b/ui/src/flux/components/FuncNode.tsx @@ -24,6 +24,7 @@ interface Props { onGenerateScript: () => void declarationsFromBody: string[] isYielding: boolean + isYieldable: boolean } interface State { @@ -111,9 +112,17 @@ export default class FuncNode extends PureComponent { private handleClick = (e: MouseEvent): void => { e.stopPropagation() - const {onToggleYield, index, bodyID, declarationID} = this.props + const { + onToggleYield, + index, + bodyID, + declarationID, + isYieldable, + } = this.props - onToggleYield(bodyID, declarationID, index) + if (isYieldable) { + onToggleYield(bodyID, declarationID, index) + } } private handleClickArgs = (e: MouseEvent): void => { e.stopPropagation()