如何在Cytoscape中设置panZoom小部件的上限和下限?

时间:2018-09-14 18:27:04

标签: cytoscape.js cytoscape

我可以很好地初始化对象:

ngOnInit() {
    this.cy = cytoscapeService.cytoscape( Object.assign( {
        container : this.el.nativeElement,
    }, DATA_FLOW_CYTOSCAPE_CONFIG ) );
    this.cy.panzoom( Object.assign(
        { minZoom : 0, maxZoom : 10 }, // arbitrary numbers
        relateConfig.panzoomDefaults,
        ) );

但是,无论我使用什么数字,或者当图形更改视图时,我似乎都无法更新缩放滑块的最大/最小外观。我的意思是,如果只能缩放视图(例如1-2),则整个滑块应在最小值(1)和最大值(2)之间滑动。

private runLayout() {
    this.cy.minZoom( 1e-50 );
    const layout = this.cy.layout( DATA_FLOW_LAYOUT_CONFIG );
    layout.on( 'layoutstop', () => {
        this.cy.minZoom( this.cy.zoom() );
        this.cy.panzoom( 'destroy' );
        this.cy.panzoom( Object.assign(
            { minZoom : this.cy.zoom() },
            relateConfig.panzoomDefaults,
            ) );
    } );

这将调整缩放限制,但也仅限制滑块具有的移动量,它不会重新计算最小和最大 slider 位置。

这有意义吗?有什么想法吗?

例如:

滑块初始移动范围-

[| ---------- [] ---------- |]

视图已更改,范围受到限制-

[-|-[] --- || ------------]

1 个答案:

答案 0 :(得分:0)

这里的问题是Object.assign

this.cy.panzoom( Object.assign(
        { minZoom : this.cy.zoom() },
        relateConfig.panzoomDefaults,
        ) );

如果将panZoom的默认值保存在某个地方(在我的情况下为relateConfig.panzoomDefaults),则它们不会被Object.assign覆盖。删除我希望能够立即更改的值,使我可以根据需要使用Object.assign进行更改。