o
    ôSk[±0  ã                   @   sÈ   d dl Z d dlZd dlmZ d dl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 d¡Zddd„Z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 )é    N)Ú
TableStyle)ÚpisaTag)ÚgetSizeÚgetBorderStyleÚgetAlignÚ	set_value)ÚPmlTableÚPmlKeepInFrameÚ	xhtml2pdfc                 C   ó*   | d u rd S t | ƒ} |  d¡r| S t| ƒS ©Nú%©ÚstrÚendswithr   ©Úvalue© r   úB/var/www/html/env/lib/python3.10/site-packages/xhtml2pdf/tables.pyÚ_width   ó   
r   c                 C   r   r   r   r   r   r   r   Ú_height&   r   r   c                   @   s@   e Zd Zdd„ Zddd„Zdd„ Zdd	„ Zd
d„ Zddd„ZdS )Ú	TableDatac                 C   s(   g | _ g | _g | _d| _d| _d| _d S )NÚ r   )ÚdataÚstylesÚspanÚmodeÚpaddingÚcol)Úselfr   r   r   Ú__init__1   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_cell9   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 r(   )r   r%   )r    ÚxÚyr   r   r   Ú	add_empty@   ó   zTableData.add_emptyc                 C   s6   | j }| jD ]\}}|t|ƒk r||  |d¡ q|S )Nr   )r   r   r$   Úinsert)r    r   r+   r,   r   r   r   Úget_dataC   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Ú	backColorr*   Ú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_stylesM   sZ   
 ý ý ýÿÿýÿÿÿÿzTableData.add_cell_stylesr(   )r1   )	Ú__name__Ú
__module__Ú__qualname__r!   r'   r*   r-   r0   rU   r   r   r   r   r   /   s    

r   c                   @   s$   e Zd Z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)rJ   rM   rD   rG   ©rH   rK   rB   rE   )rF   rI   rC   rL   Úsolid)r   ÚbordercolorÚborder)r    r>   Ú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   )éÿÿÿÿr`   Útabler   )ÚaddParaÚattrr   Ú	tableDatar]   r\   r_   r>   Úcellpaddingr   rU   Úalignr=   r   ÚrowÚcolwÚrowhÚrepeatr   Úwidth)r    rR   r^   Ú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.dd„ t|j	ƒD ƒ}|r�t 
tt|j	ƒƒ¡ tdtt|ƒƒ ƒd }t 
d	 |¡¡ |D ]\}}	t 
d
 ||¡¡ ||j	|< qnt 
d t|j	ƒ¡¡ |jr½t||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$   )Ú.0rg   r   r   r   Ú
<listcomp>²   s    z$pisaTagTABLE.end.<locals>.<listcomp>r   z$<table> rows seem to be inconsistentr   c                 S   s(   g | ]}|d  du s|d  dkr|‘qS )r#   Ng        r   )rn   Útupr   r   r   ro   º   s    "éd   r   zFair division: {}zSetting {} to {}zCol widths: {}r#   ÚTOP)Ú	colWidthsÚ
rowHeightsÚ
splitByRowÚ
repeatRowsÚhAlignÚvAlignÚstylez<table> is empty)rd   r0   ÚmaxÚ
ValueErrorr@   ÚwarnÚwarningÚ	enumerater$   rh   rA   Úlistr   ÚfloatÚformatr   r   ri   rj   rf   r   r   r   rk   Ú
totalWidthr>   ÚspaceBeforeÚ
spaceAfterÚkeepWithNextÚaddStoryÚ	clearFrag)r    rR   rl   r   ÚmaxcolsÚirg   Úcols_with_no_widthÚfair_divisionÚ_Útr   r   r   rT   ª   sP   
þ ÿö


zpisaTagTABLE.endN)rV   rW   rX   r_   rm   rT   r   r   r   r   rY   ƒ   s    rY   c                   @   ó   e Zd Zdd„ Zdd„ ZdS )Ú	pisaTagTRc                 C   sV   |j }|j}d|f}d|f}| |||d¡ | jjp|jj|j_d|_|j 	g ¡ d S )Nr   r`   r2   )
rd   rg   rU   rc   Úvalignr>   rx   r   r   r%   )r    rR   rl   rg   rS   rT   r   r   r   rm   å   s   zpisaTagTR.startc                 C   s   |j  jd7  _d S r"   )rd   rg   )r    rR   r   r   r   rT   ñ   r.   zpisaTagTR.endN©rV   rW   rX   rm   rT   r   r   r   r   r�   ã   s    r�   c                   @   rŽ   )Ú	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j |
d |d d ¡D ]$}tj |
d |d d ¡D ]}	||
d ks |	|
d kr¦| ||	¡ q’qƒ| ||
|d¡ |d t|jƒkrÊ|j|d t|jƒ tƒ g  |_|�s|jjpÔ| j j}|d urêt|ƒ|j|< t d ||¡¡ n(t |¡ t| jjƒdk�r|jj|jj }t d ||¡¡ t|ƒ|j|< n	 |d t|jƒk�r-|j|d t|jƒ tƒ g  |_|�sZ|jj �p;| j  !dd ¡}|d u�rZt"|ƒ|j|< | d|
|df¡ | d	|
|df¡ | j j#�pb|jj$}|d u�rs| d
|
|| %¡ f¡ |j}t&|ddƒ t&|dd ƒ d S )Nr#   r   ÚSPANr1   zCol {} has width {}ÚheightÚFONTSIZEg      ð?ÚLEADINGÚVALIGNrZ   )rJ   rI   rM   rL   rD   rC   rG   rF   )'rc   rf   r   r>   Ú	alignmentr‡   Ú	swapStoryÚstoryrd   ÚcolspanÚrowspanrg   r   r   r*   ÚsixÚmovesÚranger-   rU   r$   rh   r   rk   r@   rA   r�   ÚnodeÚ
childNodesrN   rO   ri   r”   Úgetr   r�   rx   r=   r   )r    rR   r^   rl   ÚcspanÚrspanrg   r   r+   r,   rS   rT   rk   r”   r�   r>   r   r   r   rm   ÷   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)
rd   rb   rš   r>   ÚinsideStaticFrameÚcssAttrr¢   r	   r™   r'   )r    rR   rl   Úcellr   r   r   r   rT   Y  s   üzpisaTagTD.endNr‘   r   r   r   r   r’   õ   s    br’   c                   @   s   e Zd ZdS )Ú	pisaTagTHN)rV   rW   rX   r   r   r   r   r¬   o  s    r¬   r(   )r)   ÚloggingÚreportlab.platypus.tablesr   r�   Úxhtml2pdf.tagsr   Úxhtml2pdf.utilr   r   r   r   Úxhtml2pdf.xhtml2pdf_reportlabr   r	   Ú	getLoggerr@   r   r   r   rY   r�   r’   r¬   r   r   r   r   Ú<module>   s   


		T`z