a
    ߙfbR                  
   @   s  d dl mZmZ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 d dlmZ d dlmZmZ d dlmZ eeeejd	d
ZdZdZdd Zdd Zdd Zejde	ddge	ddgddeddgddgddgd d! Zejd"d#d$ Zd%d& Zejd'd(d) Z dS )*    )abspathdirnamejoinN)SkyCoord)Time)Table)extern)
HAS_BLEACHHAS_IPYTHON)_NOT_OVERWRITING_MSG_MATCHZjquerydataa  
<html>
 <head>
  <meta charset="utf-8"/>
  <meta content="text/html;charset=UTF-8" http-equiv="Content-type"/>
  <style>
body {font-family: sans-serif;}
table.dataTable {width: auto !important; margin: 0 !important;}
.dataTables_filter, .dataTables_paginate {float: left !important; margin-left:1em}
  </style>
  <link href="%(datatables_css_url)s" rel="stylesheet" type="text/css"/>
  <script src="%(jquery_url)s">
  </script>
  <script src="%(datatables_js_url)s">
  </script>
 </head>
 <body>
  <script>
var astropy_sort_num = function(a, b) {
    var a_num = parseFloat(a);
    var b_num = parseFloat(b);

    if (isNaN(a_num) && isNaN(b_num))
        return ((a < b) ? -1 : ((a > b) ? 1 : 0));
    else if (!isNaN(a_num) && !isNaN(b_num))
        return ((a_num < b_num) ? -1 : ((a_num > b_num) ? 1 : 0));
    else
        return isNaN(a_num) ? -1 : 1;
}

jQuery.extend( jQuery.fn.dataTableExt.oSort, {
    "optionalnum-asc": astropy_sort_num,
    "optionalnum-desc": function (a,b) { return -astropy_sort_num(a, b); }
});

$(document).ready(function() {
    $('#%(table_id)s').dataTable({
        order: [],
        pageLength: %(length)s,
        lengthMenu: [[%(display_length)s, -1], [%(display_length)s, 'All']],
        pagingType: "full_numbers",
        columnDefs: [{targets: [0], type: "optionalnum"}]
    });
} );  </script>
  <table class="%(table_class)s" id="%(table_id)s">
   <thead>
    <tr>
     <th>a</th>
     <th>b</th>
    </tr>
   </thead>
%(lines)s
  </table>
 </body>
</html>
z2   <tr>
    <td>{0}</td>
    <td>{1}</td>
   </tr>c                    sD   t | jddd  t |jddd d fddt| |D S )NZdefault_formatc                 S   s   | S N xr   r   @lib/python3.9/site-packages/astropy/table/tests/test_jsviewer.py<lambda>Q       zformat_lines.<locals>.<lambda>c                 S   s   | S r   r   r   r   r   r   r   R   r   
c                 3   s&   | ]\}}t  ||V  qd S r   )TPLformat).0Zv1Zv2Zcol1_formatZcol2_formatr   r   	<genexpr>S   s   zformat_lines.<locals>.<genexpr>)getattrinfor   zip)Zcol1Zcol2r   r   r   format_linesP   s
    r   c                 C   s   t  }g d|d< g d|d< d|d _| dj}|j|dd ttt|d |d d	d
t| dddddd }t	|(}|
  | ksJ W d    n1 s0    Y  d S )N               ar$   bcder&   m	test.htmljsviewerr   display compacttable5010, 25, 50, 100, 500, 1000<https://cdn.datatables.net/1.10.12/css/jquery.dataTables.css>https://cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js+https://code.jquery.com/jquery-3.1.1.min.jslinestable_classtable_idZlengthdisplay_lengthZdatatables_css_urlZdatatables_js_urlZ
jquery_urlr   unitr   strpathwrite	REFERENCEdictr   idopenreadstriptmpdirttmpfilereffr   r   r   test_write_jsviewer_defaultW   s$    


rJ   c                 C   s   t  }g d|d< g d|d< d|d _| dj}|j|dd tjttd	 |j|dd W d    n1 st0    Y  |j|dd
d d S )Nr   r$   r%   r&   r*   r+   r,   r-   )matchT)r   Z	overwrite)	r   r;   r   r<   r=   pytestZraisesOSErrorr   )rE   rF   rG   r   r   r   test_write_jsviewer_overwriten   s    
,rN   mixinZJ2000ZJ2001g     j@g  j@Zmjdr-   g      Y@g     [@g      $g      $@Zdeg)ZraZdecr;   c                 C   s   t  }ddg|d< ||d< d|d _| dj}|j|dd ttt|d |d d	d
t| dddddd }t	|(}|
  | ksJ W d    n1 s0    Y  d S )Nr   r    r$   r&   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r:   )rE   rO   rF   rG   rH   rI   r   r   r   test_write_jsviewer_mixin~   s$    


rP   znot HAS_BLEACHc                 C   s   t  }g d|d< g d|d< d|d _| dj}|j|ddd	d
didtddd ttt|d d d	 |d d d	 dddddddd }t|(}|	 
 |
 ksJ W d    n1 s0    Y  d S )Nr   r$   )z<b>a</b>r&   r'   r(   r)   r&   r*   r+   r,   testr!   r9   r#   zdisplay hover)Zraw_html_cols)r   r8   Z	max_linesjskwargsr7   Zhtmldict5z5, 10, 25, 50, 100, 500, 1000r2   r3   r4   r5   )r   r;   r   r<   r=   r?   r>   r   rA   rB   rC   rD   r   r   r   test_write_jsviewer_options   s*    
 

rT   c                 C   s   t  }g d|d< g d|d< d|d _| dj}|j|ddd	d
id ttt|d |d dddddttdd dttdd dttdd d }t	|(}|
  | ksJ W d    n1 s0    Y  d S )Nr   r$   r%   r&   r*   r+   r,   rQ   Zuse_local_filesT)r   r8   rR   r.   r0   r1   zfile://Zcsszjquery.dataTables.cssZjszjquery.dataTables.min.jszjquery-3.1.1.min.jsr5   )r   r;   r   r<   r=   r>   r?   r   
EXTERN_DIRrA   rB   rC   rD   r   r   r   test_write_jsviewer_local   s(    



rV   znot HAS_IPYTHONc                  C   sv   t  } g d| d< g d| d< |  j}| jddj}| jddj}td |v sZJ d	|v sfJ d
|v srJ d S )Nr   r$   )r&   r'   r$   r(   r)   r&   Zrealidx)Zshow_row_indexFa  
    <thead><tr><th>idx</th><th>a</th><th>b</th></tr></thead>
    <tr><td>0</td><td>1</td><td>b</td></tr>
    <tr><td>1</td><td>2</td><td>c</td></tr>
    <tr><td>2</td><td>3</td><td>a</td></tr>
    <tr><td>3</td><td>4</td><td>d</td></tr>
    <tr><td>4</td><td>5</td><td>e</td></tr>
    z<<thead><tr><th>realidx</th><th>a</th><th>b</th></tr></thead>z,<thead><tr><th>a</th><th>b</th></tr></thead>)r   Zshow_in_notebookr   textwrapdedentrC   )rF   Zhtmlstr_windxZhtmlstr_windx_namedZhtmlstr_woindxr   r   r   test_show_in_notebook   s    
	rY   )!os.pathr   r   r   rW   rL   Zastropy.coordinatesr   Zastropy.timer   Zastropy.table.tabler   Zastropyr   Z"astropy.utils.compat.optional_depsr	   r
   Zastropy.utils.miscr   __file__rU   r>   r   r   rJ   rN   ZmarkZparametrizerP   ZskipifrT   rV   rY   r   r   r   r   <module>   s2   9




