MxGraph:无法搜索和聚焦单元格
MxGraph: Can't Search and Focus on cells
我一直在尝试制作一个简单的输入元素来搜索 id 并关注特定的顶点,如下所示:
Screen before Searching
并且代码似乎使用了这个简单的方法:
function searchForNode() {
const id = document.getElementById("input-search-id").value;
const { vertex } = findById(id);
const point = new mxPoint(-(vertex.geometry.x), -(vertex.geometry.y));
graph.view.translate = point;
}
第一次搜索后问题开始出现,我的左上角屏幕聚焦在所需的顶点,但从那里我可以向上或向左滚动。
Screen after Searching
此外,如果我在搜索任何内容之前滚动,我的 graph.view.translate 似乎不会更新到我的当前位置,因此,当我搜索一个顶点时,它会关注不同的位置而不是预期的顶点。
MxGraph 库中是否有任何我遗漏的方法?我试过 graph.getView().setTranslate(translate) 和 graph.panGraph(translate) 但行为是一样的。
提前致谢
所以,我找到了解决这个问题的方法,但不是最方便的方法。
据我了解,本机滚动条和 mxGraph 平移是显示移动的不同方法,当您滚动时,您不一定会更新 mxGraph 位置,但是当您使用 mxGraph 库平移时,您将拖动所有沿着屏幕的单元格,而不是“滚动”到它们。
我禁用了 mxGraph 平移选项,只是使用了 javascript 本机方法 scrollTo,如下所示,希望对您有所帮助。
function searchForNode() {
const inputValue = document.getElementById("input-search-id").value;
const { vertex } = flowMap.findNodeByIdOrName(inputValue);
if( !vertex ) return null;
window.scrollTo({
top: vertex.geometry.y - MARGIN_TO_CENTER,
left: vertex.geometry.x - MARGIN_TO_CENTER,
behavior: 'smooth'
});
}
*最后一张图片上的 flowMap.findNodeByIdOrName 和问题 post 上的 findById(id) 是我自己搜索顶点数组的方法。
我一直在尝试制作一个简单的输入元素来搜索 id 并关注特定的顶点,如下所示:
Screen before Searching
并且代码似乎使用了这个简单的方法:
function searchForNode() {
const id = document.getElementById("input-search-id").value;
const { vertex } = findById(id);
const point = new mxPoint(-(vertex.geometry.x), -(vertex.geometry.y));
graph.view.translate = point;
}
第一次搜索后问题开始出现,我的左上角屏幕聚焦在所需的顶点,但从那里我可以向上或向左滚动。
Screen after Searching
此外,如果我在搜索任何内容之前滚动,我的 graph.view.translate 似乎不会更新到我的当前位置,因此,当我搜索一个顶点时,它会关注不同的位置而不是预期的顶点。
MxGraph 库中是否有任何我遗漏的方法?我试过 graph.getView().setTranslate(translate) 和 graph.panGraph(translate) 但行为是一样的。
提前致谢
所以,我找到了解决这个问题的方法,但不是最方便的方法。
据我了解,本机滚动条和 mxGraph 平移是显示移动的不同方法,当您滚动时,您不一定会更新 mxGraph 位置,但是当您使用 mxGraph 库平移时,您将拖动所有沿着屏幕的单元格,而不是“滚动”到它们。
我禁用了 mxGraph 平移选项,只是使用了 javascript 本机方法 scrollTo,如下所示,希望对您有所帮助。
function searchForNode() {
const inputValue = document.getElementById("input-search-id").value;
const { vertex } = flowMap.findNodeByIdOrName(inputValue);
if( !vertex ) return null;
window.scrollTo({
top: vertex.geometry.y - MARGIN_TO_CENTER,
left: vertex.geometry.x - MARGIN_TO_CENTER,
behavior: 'smooth'
});
}
*最后一张图片上的 flowMap.findNodeByIdOrName 和问题 post 上的 findById(id) 是我自己搜索顶点数组的方法。