diff --git a/src/model/base-layer.ts b/src/model/base-layer.ts index c533bdc0..a656f8b6 100644 --- a/src/model/base-layer.ts +++ b/src/model/base-layer.ts @@ -7,6 +7,7 @@ import type { PickingInfo, } from "@deck.gl/core"; import type { WidgetModel } from "@jupyter-widgets/base"; +import { Vector } from "apache-arrow"; import { BaseModel } from "./base.js"; import { initializeExtension } from "./extension.js"; @@ -53,11 +54,16 @@ export abstract class BaseLayerModel extends BaseModel { .filter((extensionInstance) => extensionInstance !== null); } - extensionProps() { + extensionProps(batchIndex?: number): Record { const props: Record = {}; for (const layerPropertyName of this.extensionLayerPropertyNames) { - if (isDefined(this[layerPropertyName as keyof this])) { - props[layerPropertyName] = this[layerPropertyName as keyof this]; + const value = this[layerPropertyName as keyof this]; + if (isDefined(value)) { + if (value instanceof Vector) { + props[layerPropertyName] = value.data[batchIndex ?? 0]; + } else { + props[layerPropertyName] = value; + } } } // console.log("extension props", props); @@ -71,10 +77,10 @@ export abstract class BaseLayerModel extends BaseModel { this.model.save_changes(); } - baseLayerProps(): Omit { + baseLayerProps(batchIndex?: number): Omit { return { extensions: this.extensionInstances(), - ...this.extensionProps(), + ...this.extensionProps(batchIndex), pickable: this.pickable, visible: this.visible, opacity: this.opacity, diff --git a/src/model/layer.ts b/src/model/layer.ts index abe6c360..3d3f9805 100644 --- a/src/model/layer.ts +++ b/src/model/layer.ts @@ -156,7 +156,7 @@ export class ArcModel extends BaseArrowLayerModel { for (let batchIdx = 0; batchIdx < this.table.batches.length; batchIdx++) { layers.push( new GeoArrowArcLayer({ - ...this.baseLayerProps(), + ...this.baseLayerProps(batchIdx), ...this.layerProps(batchIdx), }), ); @@ -417,7 +417,7 @@ export class ColumnModel extends BaseArrowLayerModel { for (let batchIdx = 0; batchIdx < this.table.batches.length; batchIdx++) { layers.push( new GeoArrowColumnLayer({ - ...this.baseLayerProps(), + ...this.baseLayerProps(batchIdx), ...this.layerProps(batchIdx), }), ); @@ -491,7 +491,7 @@ export class HeatmapModel extends BaseArrowLayerModel { for (let batchIdx = 0; batchIdx < this.table.batches.length; batchIdx++) { layers.push( new GeoArrowHeatmapLayer({ - ...this.baseLayerProps(), + ...this.baseLayerProps(batchIdx), ...this.layerProps(batchIdx), }), ); @@ -561,7 +561,7 @@ export class PathModel extends BaseArrowLayerModel { for (let batchIdx = 0; batchIdx < this.table.batches.length; batchIdx++) { layers.push( new GeoArrowPathLayer({ - ...this.baseLayerProps(), + ...this.baseLayerProps(batchIdx), ...this.layerProps(batchIdx), }), ); @@ -610,7 +610,7 @@ export class PointCloudModel extends BaseArrowLayerModel { for (let batchIdx = 0; batchIdx < this.table.batches.length; batchIdx++) { layers.push( new GeoArrowPointCloudLayer({ - ...this.baseLayerProps(), + ...this.baseLayerProps(batchIdx), ...this.layerProps(batchIdx), }), ); @@ -715,7 +715,7 @@ export class PolygonModel extends BaseArrowLayerModel { for (let batchIdx = 0; batchIdx < this.table.batches.length; batchIdx++) { layers.push( new GeoArrowPolygonLayer({ - ...this.baseLayerProps(), + ...this.baseLayerProps(batchIdx), ...this.layerProps(batchIdx), }), ); @@ -827,7 +827,7 @@ export class ScatterplotModel extends BaseArrowLayerModel { for (let batchIdx = 0; batchIdx < this.table.batches.length; batchIdx++) { layers.push( new GeoArrowScatterplotLayer({ - ...this.baseLayerProps(), + ...this.baseLayerProps(batchIdx), ...this.layerProps(batchIdx), }), ); @@ -890,7 +890,7 @@ export class SolidPolygonModel extends BaseArrowLayerModel { for (let batchIdx = 0; batchIdx < this.table.batches.length; batchIdx++) { layers.push( new GeoArrowSolidPolygonLayer({ - ...this.baseLayerProps(), + ...this.baseLayerProps(batchIdx), ...this.layerProps(batchIdx), }), ); @@ -1159,7 +1159,7 @@ export class TextModel extends BaseArrowLayerModel { for (let batchIdx = 0; batchIdx < this.table.batches.length; batchIdx++) { layers.push( new GeoArrowTextLayer({ - ...this.baseLayerProps(), + ...this.baseLayerProps(batchIdx), ...this.layerProps(batchIdx), }), ); @@ -1242,7 +1242,7 @@ export class TripsModel extends BaseArrowLayerModel { for (let batchIdx = 0; batchIdx < this.table.batches.length; batchIdx++) { layers.push( new GeoArrowTripsLayer({ - ...this.baseLayerProps(), + ...this.baseLayerProps(batchIdx), ...this.layerProps(batchIdx), }), );