Как установить верхнюю и нижнюю границы виджета panZoom в 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,
            ) );
    } );

Это регулирует пределы масштабирования, но также просто ограничивает количество движений ползунка, он не пересчитывает минимальное и максимальное положение ползунка.

Имеет ли это смысл? есть идеи?

Ex:

Начальный диапазон перемещения ползунка -

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

Вид изменен, границы ограничены -

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


person Jacob    schedule 14.09.2018    source источник


Ответы (1)


Проблема здесь с Object.assign.

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

Если вы где-нибудь сохраните значения по умолчанию для panZoom (в моем случае relateConfig.panzoomDefaults), они не будут перезаписаны Object.assign. Удаление значений, которые я хотел изменить немедленно, позволило мне изменить их по мере необходимости с помощью Object.assign.

person Jacob    schedule 21.09.2018