@@ -6,36 +6,40 @@ import {
66 isNotNil ,
77 isObjectEmpty ,
88} from '@/utils/index'
9- import { type LineageColumn } from '@/api/client'
109import { Position , type Edge , type Node , type XYPosition } from 'reactflow'
1110import { type ActiveEdges , type Connections } from './context'
1211import { EnumSide , toID , toKeys } from './types'
1312import {
1413 EnumLineageNodeModelType ,
1514 type LineageNodeModelType ,
1615} from './ModelNode'
17- import type { Lineage } from '@/domain/lineage'
16+ import type { Lineage , LineageColumn } from '@/domain/lineage'
1817import type { ConnectedNode } from '@/workers/lineage'
19- import { encode , type ModelEncodedFQN , type ModelURI } from '@/domain/models'
18+ import {
19+ encode ,
20+ type ModelEncodedFQN ,
21+ type ModelName ,
22+ type ModelURI ,
23+ } from '@/domain/models'
2024import type { Column , ColumnName } from '@/domain/column'
2125import type { ModelSQLMeshModel } from '@/domain/sqlmesh-model'
2226
2327/**
2428 * Space between nodes.
2529 */
26- const NODE_BALANCE_SPACE = 64
30+ export const NODE_BALANCE_SPACE = 64
2731/**
2832 * Height of a column line.
2933 */
30- const COLUMN_LINE_HEIGHT = 24
34+ export const COLUMN_LINE_HEIGHT = 24
3135/**
3236 * Assumed width of a character.
3337 */
34- const CHAR_WIDTH = 8
38+ export const CHAR_WIDTH = 8
3539/**
3640 * Maximum number of columns that can be visible in a node.
3741 */
38- const MAX_VISIBLE_COLUMNS = 5
42+ export const MAX_VISIBLE_COLUMNS = 5
3943
4044export interface GraphNodeData {
4145 label : string
@@ -327,10 +331,10 @@ function createGraphEdge<Data>(
327331
328332export function mergeLineageWithColumns (
329333 currentLineage : Record < string , Lineage > = { } ,
330- newLineage : Record < string , Record < string , LineageColumn > > = { } ,
334+ newLineage : Record < ModelName , Record < ColumnName , LineageColumn > > = { } ,
331335) : Record < string , Lineage > {
332- for ( const targetModelName in newLineage ) {
333- const targetModelNameEncoded = encodeURI ( targetModelName )
336+ for ( const targetModelName of toKeys ( newLineage ) ) {
337+ const targetModelNameEncoded = encode ( targetModelName )
334338
335339 if ( isNil ( currentLineage [ targetModelNameEncoded ] ) ) {
336340 currentLineage [ targetModelNameEncoded ] = { columns : { } , models : [ ] }
@@ -339,16 +343,16 @@ export function mergeLineageWithColumns(
339343 const currentLineageModel = currentLineage [ targetModelNameEncoded ] !
340344 const newLineageModel = newLineage [ targetModelName ] !
341345
342- for ( const targetColumnName in newLineageModel ) {
343- const targetColumnNameEncoded = encodeURI ( targetColumnName )
346+ for ( const targetColumnName of toKeys ( newLineageModel ) ) {
347+ const targetColumnNameEncoded = encode ( targetColumnName )
344348 const newLineageModelColumn = newLineageModel [ targetColumnName ] !
345349
346350 if ( isNil ( currentLineageModel . columns ) ) {
347351 currentLineageModel . columns = { }
348352 }
349353
350354 // New Column Lineage delivers fresh data, so we can just assign it
351- currentLineageModel . columns [ targetColumnNameEncoded as ColumnName ] = {
355+ currentLineageModel . columns [ targetColumnNameEncoded ] = {
352356 expression : newLineageModelColumn . expression ?? undefined ,
353357 source : newLineageModelColumn . source ?? undefined ,
354358 models : { } ,
@@ -362,7 +366,7 @@ export function mergeLineageWithColumns(
362366 const currentLineageModelColumnModels = currentLineageModelColumn . models
363367
364368 for ( const sourceColumnName in newLineageModelColumn . models ) {
365- const sourceColumnNameEncoded = encodeURI ( sourceColumnName )
369+ const sourceColumnNameEncoded = encode ( sourceColumnName )
366370 const currentLineageModelColumnModel =
367371 currentLineageModelColumnModels [
368372 sourceColumnNameEncoded as ModelEncodedFQN
@@ -400,11 +404,11 @@ export function mergeConnections(
400404
401405 // We are getting lineage in format of target -> source
402406 for ( const targetModelName in lineage ) {
403- const targetModelNameEncoded = encodeURI ( targetModelName )
407+ const targetModelNameEncoded = encode ( targetModelName )
404408 const model = lineage [ targetModelName ] !
405409
406410 for ( const targetColumnName in model ) {
407- const targetColumnNameEncoded = encodeURI ( targetColumnName )
411+ const targetColumnNameEncoded = encode ( targetColumnName )
408412 const column = model [ targetColumnName ]
409413
410414 // We don't have any connectins so we skip
@@ -426,9 +430,9 @@ export function mergeConnections(
426430 }
427431
428432 Object . entries ( column . models ) . forEach ( ( [ sourceModelName , columns ] ) => {
429- const sourceModelNameEncoded = encodeURI ( sourceModelName )
433+ const sourceModelNameEncoded = encode ( sourceModelName )
430434 columns . forEach ( sourceColumnName => {
431- const sourceColumnNameEncoded = encodeURI ( sourceColumnName )
435+ const sourceColumnNameEncoded = encode ( sourceColumnName )
432436 // It is a source (right handler)
433437 // but it can also be a target (left handler) for other connections
434438 const modelColumnIdSource = toID (
0 commit comments