import RoleLayout from "./RoleLayout"; import Role from "../../data/Role"; import TokenLayout from "./TokenLayout"; import PredLabel from "./PredLabel"; import RoleLabel from "./RoleLabel"; class PredLayout extends RoleLayout { constructor(role: Role, w: number, h: number, elevation:number, tokens:TokenLayout[], leftRoles: RoleLayout[], rightRoles: RoleLayout[]) { super(role, w, h, elevation, tokens); this.labels = this.labels.map(label=>new PredLabel( label.name, label.w, label.h, label.cx, label.lineIndex, label.elevation, findLabelsInLine(label.lineIndex, leftRoles), findLabelsInLine(label.lineIndex, rightRoles) )) } } function findLabelsInLine(lineIndex:number, roles:RoleLayout[]):RoleLabel[] { const ret:RoleLabel[] = []; for(const role of roles) { for(const label of role.labels) { if(label.lineIndex === lineIndex) ret.push(label); } } return ret; } export default PredLayout;