in src-python/trp/trp2.py [0:0]
def merge_tables(self, table_array_ids: List[List[str]]):
for table_ids in table_array_ids:
if len(table_ids) < 2:
raise ValueError("no parent and child tables given")
parent_table = self.get_block_by_id(table_ids[0])
if type(parent_table) is not TBlock:
raise ValueError("parent table is invalid")
table_ids.pop(0)
parent_relationships: TRelationship = TRelationship()
if parent_table.relationships:
for r in parent_table.relationships:
if r.type == "CHILD":
parent_relationships = r
for table_id in table_ids:
if parent_relationships and parent_relationships.ids:
parent_last_row = None
parent_last_row_block = self.get_block_by_id(parent_relationships.ids[-1])
if parent_last_row_block:
parent_last_row = parent_last_row_block.row_index
child_table = self.get_block_by_id(table_id)
if child_table and child_table.relationships:
for r in child_table.relationships:
if r.type == "CHILD" and r.ids:
for cell_id in r.ids:
cell_block = self.get_block_by_id(cell_id)
if cell_block and cell_block.row_index and parent_last_row:
cell_block.row_index = parent_last_row + cell_block.row_index
if parent_relationships.ids and cell_id not in parent_relationships.ids:
parent_relationships.ids.append(cell_id)
self.delete_blocks([table_id])