o
    &zh3                     @  s   d dl mZ d dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
mZmZ d dlmZmZ eeZddd
dZddddZG dd dZG dd deZG dd deZG dd deZG dd deZdS )    )annotationsN)
TableStyle)pisaTag)getAligngetBorderStylegetSize	set_value)PmlKeepInFramePmlTablevaluestr | float | Nonereturnc                 C  *   | d u rd S t | } | dr| S t| S N%strendswithr   r    r   K/var/www/html/kangema/venv/lib/python3.10/site-packages/xhtml2pdf/tables.py_width      r   c                 C  r   r   r   r   r   r   r   _height#   r   r   c                   @  sB   e Zd ZdddZdddZdd	 Zd
d Zdd ZdddZdS )	TableDatar   Nonec                 C  sL   d| _ d| _g | _g | _d| _d| _d| _d| _g | _g | _	g | _
d| _d S )N r   F)aligncolcolwdatamodepaddingrepeatrowrowhspanstyleswidth)selfr   r   r   __init__+   s   
zTableData.__init__Nc                 C  s,   |  j d7  _ | jt| jd  | d S N   )r   r    lenappendr)   r    r   r   r   add_cell;   s   zTableData.add_cellc                 C  s   | j t| d S N)r'   r.   copyr/   r   r   r   	add_style?   s   zTableData.add_stylec                 C  s   | j ||f d S r1   )r&   r.   )r)   xyr   r   r   	add_emptyB   s   zTableData.add_emptyc                 C  s6   | j }| jD ]\}}|t|k r|| |d q|S )Nr   )r    r&   r-   insert)r)   r    r4   r5   r   r   r   get_dataE   s   zTableData.get_datatdc                 C  s  |  | _|jjr|dkr| d|||jjf 	 t|jjr>|jjr>|jj	d ur>| d||d |d f|jj|jj	df t|jjrc|jjrc|jjd urc| d||d |d f|jj|jjdf t|jjr|jjr|jjd ur| d	|d |d f||jj|jjdf t|jjr|jj
r|jjd ur| d
|d |d f||jj
|jjdf | d|||jjp| jf | d|||jjp| jf | d|||jjp| jf | d|||jjp| jf d S )Ntr
BACKGROUNDr   z%r	LINEABOVEr,   squared
LINEBEFORE	LINEAFTER	LINEBELOWLEFTPADDINGRIGHTPADDING
TOPPADDINGBOTTOMPADDING)upperr!   frag	backColorr3   logdebugborderTopWidthborderTopStyleborderTopColorborderBottomWidthborderBottomStyleborderBottomColorborderLeftWidthborderLeftStyleborderLeftColorborderRightWidthborderRightStyleborderRightColorr   paddingLeftr"   paddingRight
paddingToppaddingBottom)r)   cbeginendr!   r   r   r   add_cell_stylesO   s   





zTableData.add_cell_styles)r   r   r1   )r9   )	__name__
__module____qualname__r*   r0   r3   r6   r8   r]   r   r   r   r   r   *   s    


r   c                   @  s(   e Zd Zedd Zdd Zdd ZdS )pisaTagTABLEc                 C  s,   t | d|j t | d|j t | dd d S )N)rR   rU   rL   rO   rP   rS   rJ   rM   )rN   rQ   rK   rT   solid)r   bordercolorborder)rF   attrsr   r   r   set_borders   s   
zpisaTagTABLE.set_bordersc                 C  s   |   | j}t |j|_| _|j}|jr |jr | |j| |j|_	|
|ddd |j |_d|_d|_g |_g |_|j|_t|j|_d S )N)r   r   )rh   tabler   )addParaattrr   	tableDatare   rd   rg   rF   cellpaddingr"   r]   r   rE   r   r$   r   r%   r#   r   r(   )r)   rZ   rf   tdatar   r   r   start   s   zpisaTagTABLE.startc              
   C  s   |j }| }ztdd |D pdg}W n ty)   t|d dg}Y nw t|D ]\}}||  dg|t|  7  < q.td|j	 |j
rzt||j	|jd|j|jdt|jd	}t|j|_|jj|_|jj|_|jj|_|| nt|d
 |  | j d |_ | _ d S )Nc                 S  s   g | ]}t |qS r   )r-   ).0r$   r   r   r   
<listcomp>   s    z$pisaTagTABLE.end.<locals>.<listcomp>r   z$<table> rows seem to be inconsistentr   zCol widths: %rr,   TOP)	colWidths
rowHeights
splitByRow
repeatRowshAlignvAlignstylez<table> is empty)rl   r8   max
ValueErrorrH   warning	enumerater-   rI   r   r    r
   r%   r#   r   r   r'   r   r(   
totalWidthrF   spaceBefore
spaceAfterkeepWithNextaddStory	clearFrag)r)   rZ   rn   r    maxcolsir$   tr   r   r   r\      s<   
 


zpisaTagTABLE.endN)r^   r_   r`   staticmethodrg   ro   r\   r   r   r   r   ra      s
    
!ra   c                   @  s    e Zd Zdd Zedd ZdS )	pisaTagTRc                 C  st   |j }|j}d|f}d|f}||||d | jjp|jj|j_|jjr/|d|||jjf d|_	|j
g  d S )Nr   rh   r:   r;   )rl   r$   r]   rk   valignrF   rx   rG   r3   r   r    r.   )r)   rZ   rn   r$   r[   r\   r   r   r   ro     s   zpisaTagTR.startc                 C  s   | j  jd7  _d S r+   )rl   r$   )rZ   r   r   r   r\   %  s   zpisaTagTR.endN)r^   r_   r`   ro   r   r\   r   r   r   r   r     s    r   c                   @  s   e Zd Zdd Zdd ZdS )	pisaTagTDc                 C  s  | j jd urt| j j|j_|  | | _| j }|j}|j	}|j
}|j}|j}	 |jD ]\}}	||krD|	|krD|d7 }| jd7  _q-	 ||f}
||f}|r\|d | d |d f}|rj|d |d | d f}|
|kr|d|
|f t|
d |d d D ]"}t|
d |d d D ]}	||
d ks|	|
d kr|||	 qq|||
|d |d t|jkr| j|d t|j t g 7  _|s|jjp| j j}|d urt||j|< td|| n)t| t| jjdkr|jj|jj }td|| |rt||j|< n	 |d t|jkr*| j|d t|j t g 7  _|sW|jjp8| j dd }|d urWt||j|< |d|
|df |d	|
|df | j j p_|jj!}|d urp|d
|
||" f |j}t#|dd t#|dd  d S )Nr,   r   SPANr9   zCol %d has width %sheightFONTSIZEg      ?LEADINGVALIGNrb   )rR   rQ   rU   rT   rL   rK   rO   rN   )$rk   r   r   rF   	alignmentr   	swapStorystoryrl   colspanrowspanr$   r   r&   r3   ranger6   r]   r-   r   r   r(   rH   rI   node
childNodesrV   rW   r%   r   getr   r   rx   rE   r   )r)   rZ   rf   rn   cspanrspanr$   r   r4   r5   r[   r\   r(   r   r   rF   r   r   r   ro   +  s   
$
$


zpisaTagTD.startc                 C  sT   |j }|  |j}|jjs|jdd}tdd||d}|| j |	| d S )Nz-pdf-keep-in-frame-modeshrinkr   )maxWidth	maxHeightr!   content)
rl   rj   r   rF   insideStaticFramecssAttrr   r	   r   r0   )r)   rZ   rn   cellr!   r   r   r   r\     s   zpisaTagTD.endN)r^   r_   r`   ro   r\   r   r   r   r   r   *  s    nr   c                   @  s   e Zd ZdS )	pisaTagTHN)r^   r_   r`   r   r   r   r   r     s    r   r1   )r   r   r   r   )
__future__r   r2   loggingreportlab.platypus.tablesr   xhtml2pdf.tagsr   xhtml2pdf.utilr   r   r   r   xhtml2pdf.xhtml2pdf_reportlabr	   r
   	getLoggerr^   rH   r   r   r   ra   r   r   r   r   r   r   r   <module>   s"   
 g 