Source code for tablate.library.calcs.calc_column_percent
import copy
import math
from typing import List, TypeVar
from tablate.type.type_store import FrameStoreUnion
T = TypeVar("T")
[docs]
def calc_column_percent(frame_list: List[FrameStoreUnion], container_width: int) -> (List[T], List[int]):
frame_list = copy.deepcopy(frame_list)
baseline_width_set = set()
container_width = container_width - 1
for frame_item in frame_list:
container_width_total = 0
for column_item in frame_item.column_list:
container_width_total += column_item["width"] + 1
acc_column_width = math.floor((100 / container_width) * container_width_total)
baseline_width_set.add(math.floor(acc_column_width))
column_item["baseline_width_percent"] = acc_column_width
sorted_baseline_array = sorted(baseline_width_set)
return frame_list, sorted_baseline_array