Как установить верхнюю и нижнюю границы виджета panZoom в Cytoscape? - PullRequest
0 голосов
/ 14 сентября 2018

Я могу отлично инициализировать объект:

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, весь слайдер должен скользить между min (1) и max (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:

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

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

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

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

1 Ответ

0 голосов
/ 21 сентября 2018

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

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

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

...