U
    =g3                     @  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d	d
Zdd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PmlTablezstr | float | None)valuereturnc                 C  s*   | d krd S t | } | dr"| S t| S N%strendswithr   r    r   4/tmp/pip-unpacked-wheel-d1lgvatt/xhtml2pdf/tables.py_width   s    r   c                 C  s*   | d krd S t | } | dr"| S t| S r   r   r   r   r   r   _height#   s    r   c                   @  sF   e Zd ZddddZdddZdd	 Zd
d Zdd ZdddZdS )	TableDataNone)r   c                 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 r.   )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   r1   r2   r   r   r   get_dataE   s
    zTableData.get_datatdc                 C  s  |  | _|jjr0|dkr0| d|||jjf t|jjrz|jjrz|jj	d k	rz| d||d |d f|jj|jj	df t|jj
r|jjr|jjd k	r| d||d |d f|jj|jjdf t|jjr|jjr|jjd k	r| d|d |d f||jj|jjdf t|jjrd|jjrd|jjd k	rd| 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
BACKGROUNDZ	LINEABOVEr   r)   ZsquaredZ
LINEBEFOREZ	LINEAFTERZ	LINEBELOWZLEFTPADDINGZRIGHTPADDINGZ
TOPPADDINGZBOTTOMPADDING)upperr   frag	backColorr0   logr   borderTopStyleborderTopWidthborderTopColorborderLeftStyleborderLeftWidthborderLeftColorborderRightStyleborderRightWidthborderRightColorborderBottomStyleborderBottomWidthborderBottomColorpaddingLeftr   paddingRightZ
paddingTopZpaddingBottom)r&   cbeginendr   r   r   r   add_cell_stylesO   s    









zTableData.add_cell_styles)N)r6   )	__name__
__module____qualname__r'   r-   r0   r3   r5   rN   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)rB   rE   r?   rH   rA   rD   r>   rG   )rF   r@   r=   rC   Zsolid)r   bordercolorborder)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   )rX   tabler   )addParaattrr   	tableDatarU   rT   rW   r:   Zcellpaddingr   rN   r   r9   r   r!   r   r"   r    r   r%   )r&   rK   rV   tdatar   r   r   start   s    zpisaTagTABLE.startc              
   C  s"  |j }| }ztdd |D p$dg}W n* tk
rT   t|d dg}Y nX t|D ]&\}}||  dg|t|  7  < q^td|j	 |j
rt||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)   ZTOP)Z	colWidthsZ
rowHeightsZ
splitByRowZ
repeatRowsZhAlignvAlignstylez<table> is empty)r\   r5   max
ValueErrorr<   warning	enumerater*   debugr   r   r
   r"   r    r   r   r$   r   r%   Z
totalWidthr:   ZspaceBeforeZ
spaceAfterZkeepWithNextZaddStory	clearFrag)r&   rK   r]   r   Zmaxcolsir!   tr   r   r   rM      s:     


zpisaTagTABLE.endN)rO   rP   rQ   staticmethodrW   r^   rM   r   r   r   r   rR      s   
!rR   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   rX   r7   r8   )r\   r!   rN   r[   valignr:   ra   r;   r0   r   r   r+   )r&   rK   r]   r!   rL   rM   r   r   r   r^     s    zpisaTagTR.startc                 C  s   | j  jd7  _d S r(   )r\   r!   )rK   r   r   r   rM   %  s    zpisaTagTR.endN)rO   rP   rQ   r^   rk   rM   r   r   r   r   rl     s   rl   c                   @  s   e Zd Zdd Zdd ZdS )	pisaTagTDc                 C  s  | j jd k	rt| j j|j_|  | | _| j }|j}|j	}|j
}|j}|j}|jD ].\}}	||krX|	|krX|d7 }| jd7  _qXqqR||f}
||f}|r|d | d |d f}|r|d |d | d f}|
|krR|d|
|f t|
d |d d D ]L}t|
d |d d D ].}	||
d ks>|	|
d kr|||	 qq|||
|d |d t|jkr| j|d t|j t g 7  _|s*|jjp| j j}|d k	rt||j|< td|| nPt| t| jjdkr*|jj|jj }td|| |r*t||j|< n |d t|jkrb| j|d t|j t g 7  _|s|jjp~| j dd }|d k	rt||j|< |d|
|df |d	|
|df | j j p|jj!}|d k	r|d
|
||" f |j}t#|dd t#|dd  d S )Nr)   r   ZSPANr6   zCol %d has width %sheightZFONTSIZEg      ?ZLEADINGZVALIGNrS   )rB   r@   rE   rC   r?   r=   rH   rF   )$r[   r   r   r:   	alignmentrh   	swapStorystoryr\   ZcolspanZrowspanr!   r   r#   r0   ranger3   rN   r*   r   r   r%   r<   rg   node
childNodesrI   rJ   r"   ro   getr   rm   ra   r9   r   )r&   rK   rV   r]   ZcspanZrspanr!   r   r1   r2   rL   rM   r%   ro   rm   r:   r   r   r   r^   +  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   )ZmaxWidthZ	maxHeightr   content)
r\   rZ   rr   r:   ZinsideStaticFrameZcssAttrrv   r	   rq   r-   )r&   rK   r]   cellr   r   r   r   rM     s    zpisaTagTD.endN)rO   rP   rQ   r^   rM   r   r   r   r   rn   *  s   nrn   c                   @  s   e Zd ZdS )	pisaTagTHN)rO   rP   rQ   r   r   r   r   rz     s   rz   )N)N)
__future__r   r/   loggingZreportlab.platypus.tablesr   Zxhtml2pdf.tagsr   Zxhtml2pdf.utilr   r   r   r   Zxhtml2pdf.xhtml2pdf_reportlabr	   r
   	getLoggerrO   r<   r   r   r   rR   rl   rn   rz   r   r   r   r   <module>   s    
 g 