dify 在迭代节点内执行复制操作,但复制的节点不能被拖动,

xoshrz7s  于 2个月前  发布在  其他
关注(0)|答案(1)|浏览(21)

自检

  • 这仅用于提交错误报告,如果您想提问,请前往 Discussions
  • 我已在 search for existing issues 中搜索了现有问题,包括已关闭的问题。
  • 我确认我使用英文提交此报告(我已阅读并同意 Language Policy )。
  • 请务必使用英文提交问题,否则会被关闭。谢谢!:)
  • 请不要修改此模板 :) 并填写所有必需的字段。

Dify版本

0.6.15

云或自托管

云,自托管(Docker),自托管(源代码)

重现步骤

在迭代节点内的节点上执行复制操作,但复制的节点无法拖动。

✔️ 预期行为

  • 无响应*

❌ 实际行为

  • 无响应*
gpnt7bae

gpnt7bae1#

你在使用迭代节点中的复制节点时遇到的问题,可能是因为代码库中的几个条件或约束。以下是一些可能的原因:

  1. 只读模式:如果节点处于只读状态,它们不能被拖动。
if (getNodesReadOnly())
  return
  1. 迭代开始节点:标记为迭代开始节点( node.data.isIterationStart )或类型为 CUSTOM_NOTE_NODE 的节点不能被拖动。
if (node.data.isIterationStart || node.type === CUSTOM_NOTE_NODE)
  return
  1. 位置限制:在拖动操作期间,如果对节点的位置有限制( restrictPosition ),节点的位置可能会受到限制,阻止自由拖动。
const { restrictPosition } = handleNodeIterationChildDrag(node)
  1. 辅助线约束:如果显示了辅助线( showHorizontalHelpLineNodesshowVerticalHelpLineNodes ),节点的位置可能会对准这些线,限制其移动。
const {
  showHorizontalHelpLineNodes,
  showVerticalHelpLineNodes,
} = handleSetHelpline(node)
  1. 迭代填充:如果节点是迭代的一部分,并且其位置超过了定义的填充( ITERATION_PADDING ),它的移动将受到限制。
if (node.data.isInIteration) {
  const parentNode = nodes.find(n => n.id === node.parentId)
  if (parentNode) {
    if (node.position.y < ITERATION_PADDING.top)
      restrictPosition.y = ITERATION_PADDING.top
    if (node.position.x < ITERATION_PADDING.left)
      restrictPosition.x = ITERATION_PADDING.left
    if (node.position.x + node.width! > parentNode!.width! - ITERATION_PADDING.right)
      restrictPosition.x = parentNode!.width! - ITERATION_PADDING.right - node.width!
    if (node.position.y + node.height! > parentNode!.height! - ITERATION_PADDING.bottom)
      restrictPosition.y = parentNode!.height! - ITERATION_PADDING.bottom - node.height!
  }
}

这些条件共同确保节点只有在适当的情况下且在一定的约束下才能被拖动。要继续与 Dosu 交谈,请提及 @dosu。

相关问题