diff --git a/src/chart/components/pane/pane-manager.component.ts b/src/chart/components/pane/pane-manager.component.ts index f86d657..25596b9 100644 --- a/src/chart/components/pane/pane-manager.component.ts +++ b/src/chart/components/pane/pane-manager.component.ts @@ -316,7 +316,7 @@ export class PaneManager extends ChartBaseElement { const onNewScale = extentIdx && extentIdx > 0; if (!pane) { - const order = direction && direction === 'above' ? index : this.panesOrder.length + index; + const order = direction && direction === 'above' ? index : index + 1; const newPane = this.createPane(paneUUID, { order, initialYAxisState }); newPane.moveDataSeriesToExistingExtentComponent( dataSeries, @@ -330,7 +330,13 @@ export class PaneManager extends ChartBaseElement { } if (extent && !onNewScale) { - pane.moveDataSeriesToExistingExtentComponent(dataSeries, initialPane, initialExtent, extent); + pane.moveDataSeriesToExistingExtentComponent( + dataSeries, + initialPane, + initialExtent, + extent, + isForceKeepPane, + ); } else { pane.moveDataSeriesToNewExtentComponent( dataSeries, diff --git a/src/chart/components/pane/pane.component.ts b/src/chart/components/pane/pane.component.ts index 436c635..6c0df7d 100644 --- a/src/chart/components/pane/pane.component.ts +++ b/src/chart/components/pane/pane.component.ts @@ -263,9 +263,11 @@ export class PaneComponent extends ChartBaseElement { return yExtentComponent; } - public removeExtentComponent(extentComponent: YExtentComponent) { - extentComponent.disable(); - this.yExtentComponents.splice(extentComponent.idx, 1); + public removeExtentComponents(extentComponents: YExtentComponent[]) { + extentComponents.forEach(extentComponent => extentComponent.disable()); + this.yExtentComponents = this.yExtentComponents.filter( + current => !extentComponents.map(excluded => excluded.idx).includes(current.idx), + ); // re-index extents this.yExtentComponents.forEach((c, idx) => (c.idx = idx)); this.canvasBoundsContainer.updateYAxisWidths(); @@ -284,7 +286,7 @@ export class PaneComponent extends ChartBaseElement { const extent = this.createExtentComponent(); extent.yAxis.setYAxisAlign(align); dataSeries.forEach(series => series.moveToExtent(extent)); - initialExtent.dataSeries.size === 0 && initialPane.removeExtentComponent(initialExtent); + initialExtent.dataSeries.size === 0 && initialPane.removeExtentComponents([initialExtent]); } /** @@ -300,7 +302,9 @@ export class PaneComponent extends ChartBaseElement { isForceKeepExtent?: boolean, ) { dataSeries.forEach(series => series.moveToExtent(extentComponent)); - !isForceKeepExtent && initialExtent.dataSeries.size === 0 && initialPane.removeExtentComponent(initialExtent); + !isForceKeepExtent && + initialExtent.dataSeries.size === 0 && + initialPane.removeExtentComponents([initialExtent]); this.yExtentComponentsChangedSubject.next(); }