@@ -21,11 +21,9 @@ type Tix = number;
21
21
// An Rix is a row index, which is an integer identifier for a row in a tile.
22
22
type Rix = number ;
23
23
24
- // A Rixen is a list of row indices. It must be non-empty.
25
- type Rixen = [ Rix , ...Rix [ ] ] ;
26
24
27
25
// A Qid is a pair of a Tix and a Rixen. It identifies a set of rows in a tile.
28
- export type Qid = [ Tix , Rixen ] ;
26
+ export type Qid = [ Tix , Rix ] ;
29
27
export type QidArray = Qid [ ] ;
30
28
31
29
export function zxyToTix ( z : number , x : number , y : number ) {
@@ -99,7 +97,7 @@ export async function tixToTile(tix: Tix, dataset: Deeptable): Promise<Tile> {
99
97
export async function qidToRowProxy ( qid : Qid , dataset : Deeptable ) {
100
98
const tile = await tixToTile ( qid [ 0 ] , dataset ) ;
101
99
await tile . get_column ( 'x' ) ;
102
- return tile . record_batch . get ( qid [ 1 ] [ 0 ] ) ;
100
+ return tile . record_batch . get ( qid [ 1 ] ) ;
103
101
}
104
102
105
103
export function tileKey_to_tix ( key : string ) {
@@ -132,10 +130,10 @@ export function tixToZxy(tix: Tix): [number, number, number] {
132
130
export function getQidFromRow (
133
131
row : StructRowProxy ,
134
132
dataset : Deeptable ,
135
- ) : [ number , number ] {
133
+ ) : Qid {
136
134
const tile = getTileFromRow ( row , dataset ) ;
137
135
const rix = row [ Symbol . for ( 'rowIndex' ) ] as number ;
138
- return [ tileKey_to_tix ( tile . key ) , rix ] as [ number , number ] ;
136
+ return [ tile . tix , rix ] satisfies [ number , number ] ;
139
137
}
140
138
141
139
export function getTileFromRow ( row : StructRowProxy , dataset : Deeptable ) : Tile {
@@ -178,37 +176,6 @@ export function getTileFromRow(row: StructRowProxy, dataset: Deeptable): Tile {
178
176
return best_match [ 0 ] ;
179
177
}
180
178
181
- export function getQidArrayFromRows (
182
- rows : StructRowProxy [ ] ,
183
- dataset : Deeptable ,
184
- ) : QidArray {
185
- // TODO: this is really inefficient. We should be able to do this in one pass.
186
- const qids = rows . map ( ( row ) => getQidFromRow ( row , dataset ) ) ;
187
- const mapped = new Map < number , [ number , ...number [ ] ] > ( ) ;
188
- for ( const qid of qids ) {
189
- if ( mapped . has ( qid [ 0 ] ) ) {
190
- mapped . get ( qid [ 0 ] ) . push ( qid [ 1 ] ) ;
191
- } else {
192
- mapped . set ( qid [ 0 ] , [ qid [ 1 ] ] ) ;
193
- }
194
- }
195
- return Array . from ( mapped . entries ( ) ) ;
196
- }
197
-
198
- export function selectQixOnTile ( tile : Tile , qidList : QidArray ) {
199
- const mask = new Bitmask ( tile . record_batch . numRows ) ;
200
- const [ z , x , y ] = tile . key . split ( '/' ) . map ( ( d ) => parseInt ( d ) ) ;
201
- const tix = zxyToTix ( z , x , y ) ;
202
- const rixes = qidList
203
- . filter ( ( d ) => d [ 0 ] === tix )
204
- . map ( ( d ) => d [ 1 ] )
205
- . flat ( ) ;
206
- for ( const rix of rixes ) {
207
- mask . set ( rix ) ;
208
- }
209
- return mask . to_arrow ( ) ;
210
- }
211
-
212
179
/**
213
180
*
214
181
* @param hoverDatum A struct row.
0 commit comments