
    IyjZ                     	   d dl Z d dlZd dlZd dlZd dlZd dlZd dl	Z
d dlZd dlmZ d dlmZ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 d d	lmZ  e
j:                  d
        e
j:                  dd        e       Zej?                         Z d Z!dZ" e!e"      Z#e#d    r e!e"      d   Z$ ejJ                  e$d   d      e$d<    ejJ                  e$d   d      e$d<   e$d   e$d   z
   ed      z
  e$d<    e       Z&e&jO                         d    jQ                         Z)e&jO                         d   jQ                         Z* e e+e)d d        e+e)dd        e+e)dd        e+e)dd             Z, e e+e*d d        e+e*dd        e+e*dd        e+e*dd             Z-e,e-fZ.e
j^                  ja                  de.dd      Z1g d Z2 e3e$d!   ji                               Z5d"d#gZ6g d$Z7e
j^                  jq                  d%e2d&   e2d'      Z9e
j^                  ju                  d(e5e5dd)*      Z;e
j^                  ju                  d+e6d    ge6dd)*      Z<e
j^                  j{                  d,e7d-   e7dd.      Z>e1j~                  Z@i ZAd/ ZBd0 ZCd1 ZDd2 ZE e
j                  e;e<e>e1j                  j~                  e9      d3        ZH e
j                  e;e<e>e1j                  j~                  e9      d4        ZI e
j                  e;e<e>e1j                  j~                  e9      d5        ZJ e
j                  e;e<e>e1j                  j~                  e9      d6        ZK e
j                   e
j                  e1e
j^                  j                  d7d89             e
j                  e>e
j^                  j                  d:d89             e
j                  e9e
j^                  j                  d;d89             e
j                   e
j                  e<d<=      e
j^                  j                  d>d89             e
j                   e
j                  e;d?=      e
j^                  j                  d@d89            dAdB      ZP e
j                  dCeJfdDeIfdE      ZRdF ZSdG ZTydH ZSdI ZTy)J    N)pi)Category20c
Category20)figure)cumsum)DateFormatter)datetime	timedelta)MonitoringAppTexts)MonitoringAppDates
floatpanelstretch_widthT)sizing_modenotificationsc                    	 t        j                  | dd      }|j                  dk  r-t        d|         t	        j
                  | dgddg	      }d|fS t        d
|  d|j                   d       y# t         j                  $ r Y yw xY w)NT   )allow_redirectstimeouti  u&   ✅ [OBS STORAGE] Arquivo acessível: r   Data do Download   Data da Observação)headerparse_datesu+   ❌ [OBS STORAGE] Arquivo não encontrado: z	 (status ))FN)requestsheadstatus_codeprintpdread_csvRequestException)urlresponsedfs_objs      7/home/carlos/GitHub/SMNAMonitoringApp/monitor_armobs.py
url_existsr%   2   s    ==dAF#%:3%@Akk#qcASWm?opG= ?uIhNbNbMccdef$$ s   AA3 A3 3B	B	zqhttps://dataserver.cptec.inpe.br/dataserver_dimnt/das/carlos.bastarz/SMNAMonitoringApp/obsm/mon_rec_obs_final.csv   r   coerce)errorsr      )hours   Diferença de Tempo         
   z
Date RangeF   )namevalueenable_timewidth)KBMBGBTBPB   Tipo de Observaçãogdasgfs)00Z06Z12Z18Z	00Z e 12Z	06Z e 18Z00Z, 06Z, 12Z e 18ZUnit   )r1   r2   optionsr4   zObservation typei  )r1   r2   rF   solidr4   z	File typezSynopit time)r1   r2   rF   inliner4   c                 |    | d   j                   | d   |d   k(     j                  d      }|t        |d   <   t        S )NTamanho do Download (KB)r:   rH   r   axis)locsumdic_size)dfspotype_wdfsp_tot_down_otypes      r$   
getSizeDicrT   r   sM    "#=>BB4H^C_cjkmcnCnossyzs{ 3    c                 B    | d   |k\  | d   |k  z  }| j                   |   S )Nr   )rN   )df
start_dateend_datemasks       r$   subDataframer[   w   s1    )*j8R@V=W[c=cdvvd|rU   c                     | dk(  rd}d}| dk(  rd}d}| dk(  rd}d}| dk(  rd}d}| d	k(  rd}d}| d
k(  rd}d}| dk(  rd}d}| dk(  rd}d}| dk(  rd}d}fS )Nr=   z00:00:00r>   06:00:00r?   12:00:00r@   z18:00:00rA   rB   z	00Z e 06Zz	12Z e 18ZrC    )synoptic_time	time_fmt0	time_fmt1s      r$   subTimeDataFramerc   {   s    E!z9z9E!z9z9E!z9z9E!z9z9K'ZZK'ZZK'ZZK'ZZ11z9Wa9)##rU   c                     | dk(  rt        d      }d}d}d}n[| dk(  rt        d      }d}d	}d
}nD| dk(  rt        d      }d}d}d}n-| dk(  rt        d      }d}d}d}n| dk(  rt        d      }d}d}d}fS )Nr5   r&   rK   zTamanho (KB)zTotal Armazenado (KB):r6   g      >zTamanho do Download (MB)zTamanho (MB)zTotal Armazenado (MB):r7   g      >zTamanho do Download (GB)zTamanho (GB)zTotal Armazenado (GB):r8   g      p=zTamanho do Download (TB)zTamanho (TB)zTotal Armazenado (TB):r9   g      <zTamanho do Download (PB)zTamanho (PB)zTotal Armazenado (PB):)float)units_wfactorn1factorn2factorn3factors        r$   unitConvertrk      s    d?1XF1H%H/H_?+F1H%H/H_?+F1H%H/H_?+F1H%H/H_?+F1H%H/Hx833rU   c                 ^   |\  }}t         j                         }t        |||      }t        |      \  }	}
}}|d   j	                  |	      ||
<   t        |      \  }}||k(  rw|j                  |d   j                  |          j                  |d   j                  |         j                  d      j                  t        |            j                         }n|j                  |d   j                  |          j                  |d   j                  |         j                  d      j                  t        |      t        |      d      }|dk(  r9|j                  |j                  d      j                        j                         }nS|d	k(  r9|j                  |j                  d
      j                        j                         }n|dk(  r|j                         }|d   j                  d      }t         j"                  j%                  |||	z  ddd      }t!        j&                  |d      S )NrK   r:   Tipo de Arquivor   both	inclusiverA   r]   rB   r^   rC   r   rL   z{value:.2f}16pt12pt)r1   r2   format	font_size
title_sizestretch_bothr   )dfscopyr[   rk   multiplyrc   rN   isin	set_indexat_timestrreset_indexbetween_timedropindexrO   pn
indicatorsNumberColumn)rR   ftype_wr`   
date_rangerf   rX   rY   dfs_tmpdfs2rg   rh   ri   rj   ra   rb   rQ   dfsp_tot_downtot_downs                     r$   
getTotDownr      sT   )
H((*GZ:/:7/C,(H89BB6JX/>	9	!88D!78==gFGKKDQbLcLhLhipLqr||  ~T  U  ]  ]  ^a  bk  ^l  m  y  y  {D88D!78==gFGKKDQbLcLhLhipLqr||  ~T  U  b  b  cf  gp  cq  sv  w@  sA  MS  b  TD+yyj!9!?!?@LLN+-yyj!9!?!?@LLN"77'')78<<!<D==''X]V=S\iu{  IO'  Pyy~>>rU   c                    |\  }}t         j                         }t        |||      }t        |      \  }	}
}}t	        |      \  }}||k(  rw|j
                  |d   j                  |          j
                  |d   j                  |         j                  d      j                  t        |            j                         n|j
                  |d   j                  |          j
                  |d   j                  |         j                  d      j                  t        |      t        |      d      |dk(  r9j                  j                  d      j                        j                         nS|dk(  r9j                  j                  d	      j                        j                         n|d
k(  rj                         dt        d      i}d}t        j                   j#                  dddddd|g|	      }fd}t        j                   j%                  d|ddd      }t        j&                  t        j&                  ||      dd      S )Nr:   rm   r   rn   ro   rA   r]   rB   r^   rC   r+   z%H:%M:%S)rs   zN
            .tabulator-cell {
            font-size: 12px;
        }
        	DataFrameTtoggle
bootstrap4centerfit_data)r1   disabled
selectabletheme
text_alignlayoutstylesheets
formattersc                  x    t        j                         } j                  | d       | j                  d       | S )NF)r   r   )ioBytesIOto_csvseek)	io_bufferrQ   s    r$   get_csvzgetTable.<locals>.get_csv  s0    

IKK	K/NN1rU   downloadzobs_storage.csvsuccessi6  )iconcallbackfilenamebutton_typer4   i   r   )heightr   )rx   ry   r[   rk   rc   rN   r{   r|   r}   r~   r   r   r   r   r   r   widgets	TabulatorFileDownloadr   )rR   r   r`   r   rf   rX   rY   r   r   rg   rh   ri   rj   ra   rb   bokeh_formatters
stylesheetdf_tbr   file_downloadrQ   s                       @r$   getTabler      s   )
H((*GZ:/:7/C,(H  0>	9	!88D!78==gFGKKDQbLcLhLhipLqr||  ~T  U  ]  ]  ^a  bk  ^l  m  y  y  {D88D!78==gFGKKDQbLcLhLhipLqr||  ~T  U  b  b  cf  gp  cq  sv  w@  sA  MS  b  TD+yyj!9!?!?@LLN+-yyj!9!?!?@LLN"77'') "=
#C
D
 

$$T)4 .2/7*6/7+51;/? % &	 

//&! 0 
 yy5-8RabbrU   c                 	   t        |       D ]  \  }}t        |      D ]  \  }}|dk(  rF|\  }	}
t        j                         }t        ||	|
      }t	        |      \  }}| |   }||k(  rp|j
                  |d   t        |      k(     j
                  |d   t        |      k(     j                  d      j                  t        |            j                         }n|j
                  |d   t        |      k(     j
                  |d   t        |      k(     j                  d      j                  t        |      t        |      d      }|dk(  r9|j                  |j                  d      j                        j                         }nS|d	k(  r9|j                  |j                  d
      j                        j                         }n|dk(  r|j                         }t        |      \  }}}}|d   j                  |      ||<   |j                  j!                  dd|t        |      t        |      ddddd
      }|j                  j#                  d|t        |      dd      j%                  dd      }S|\  }	}
t        j                         }t        ||	|
      }t	        |      \  }}| |   }||k(  rp|j
                  |d   t        |      k(     j
                  |d   t        |      k(     j                  d      j                  t        |            j                         }n|j
                  |d   t        |      k(     j
                  |d   t        |      k(     j                  d      j                  t        |      t        |      d      }|dk(  r9|j                  |j                  d      j                        j                         }nS|d	k(  r9|j                  |j                  d
      j                        j                         }n|dk(  r|j                         }t        |      \  }}}}|d   j                  |      ||<   |j                  j!                  dd||t        |      ddddd
      z  }|j                  j#                  d|t        |      dd      j%                  dd      z  }  t'        j(                  z  d      S )Nr   r:   rm   r   rn   ro   rA   r]   rB   r^   rC   rK   DateZ   Tr)   &  )
xxlabelyylabellabelrotgrid
line_widthr   
responsive)r   r   r   persistr   r   o)sizemarkerr   rw   )	enumeraterx   ry   r[   rc   rN   r~   r|   r}   r   r   r   r   rk   rz   hvplotlinescatteroptsr   r   )rR   r   r`   r   rf   counticount2jrX   rY   r   r   ra   rb   notyperQ   rg   rh   ri   rj   df_pldf_pl_ss                          r$   plotLiner   )  s   !'* ?	dHE1&w/ >d	A:+5(J!hhjG'XFD+;M+J(Iy$U^F I-#xx-C(DA(NOSSTXYjTkorstouTuv   A   A  BX   Y   a   a  be  fo  bp   q   }   }   #xx-C(DA(NOSSTXYjTkorstouTuv   A   A  BX   Y   f   f  gj  kt  gu  wz  {D  wE  QW   f   X(K7#'99T\\*-E-K-K#L#X#X#ZD*k9#'99T\\*-E-K-K#L#X#X#ZD*.CC#'#3#3#5D;Fw;O8FHh%)*D%E%N%Nv%VDN KK,,/EfX`/28}CKUW^b34ST - SE #kk114Jh^abh^isw  EI1  J  O  O  UV  _b  O  cG ,6(J!hhjG'XFD+;M+J(Iy$U^F I-#xx-C(DA(NOSSTXYjTkorstouTuv   A   A  BX   Y   a   a  be  fo  bp   q   }   }   #xx-C(DA(NOSSTXYjTkorstouTuv   A   A  BX   Y   f   f  gj  kt  gu  wz  {D  wE  QW   f   X(K7#'99T\\*-E-K-K#L#X#X#ZD*k9#'99T\\*-E-K-K#L#X#X#ZD*.CC#'#3#3#5D;Fw;O8FHh%)*D%E%N%Nv%VDNT[[--0FvYa/7s6{PRY]34ST . S SE t{{225Kx_bci_jtx  FJ2   K   P   P  VW  `c   P   d  dG}>d?	dB yyoFFrU   c                    |\  }}t         j                         }t        |||      }t        |      \  }	}
|	|
k(  rw|j                  |d   j                  |          j                  |d   j                  |         j                  d      j                  t        |	            j                         }n|j                  |d   j                  |          j                  |d   j                  |         j                  d      j                  t        |	      t        |
      d      }|dk(  r9|j                  |j                  d      j                        j                         }nS|dk(  r9|j                  |j                  d	      j                        j                         }n|d
k(  r|j                         }t        |      \  }}}}|d   j                  d      }t        ||       }t!        j"                  |      j                  d      j%                  ddi      }|d   |z  dz  |d<   |d   |d   j                         z  dt&        z  z  |d<   t)        |      dk(  rd|d<   n_t)        |      dk(  rt*        d   d   |d<   nAt)        |      dk(  rt*        d   d   |d<   n#t)        |      dkD  rt*        t)        |         |d<   t-        dddd      }|j/                  dddt1        dd       t1        d      d!dd|"	      }d |j2                  _        d#|j2                  _        d |j8                  _        t=        j>                  t<        j@                  jC                  |            S )$Nr:   rm   r   rn   ro   rA   r]   rB   r^   rC   rK   r   rL   )r1   r   )columnsd   zTamanho Relativo (%)rE   angle colorr&   r)   r   zRelative size (%)u0   @{Tipo de Observação}: @{Tamanho Relativo (%)})g333333gffffff?)r   titletooltipsx_rangeg?T)include_zerowhite)	r   r   radiusstart_angle	end_angle
line_color
fill_colorlegend_fieldsourceF)"rx   ry   r[   rc   rN   r{   r|   r}   r~   r   r   r   r   rk   rO   rT   r   Seriesrenamer   lenr   r   wedger   rM   
axis_labelvisibler   grid_line_colorr   r   paneBokeh)rR   r   r`   r   rf   rX   rY   r   r   ra   rb   rQ   rg   rh   ri   rj   r   dfsp_dic_downdataprs                        r$   plotSelSizer   n  s   )
H((*GZ:/>	9	!88D!78==gFGKKDQbLcLhLhipLqr||  ~T  U  ]  ]  ^a  bk  ^l  m  y  y  {D88D!78==gFGKKDQbLcLhLhipLqr||  ~T  U  b  b  cf  gp  cq  sv  w@  sA  MS  b  TD+yyj!9!?!?@LLN+-yyj!9!?!?@LLN"77'')/:7/C,(H 78<<!<D"41yy'339S3T[[el  nD  eE[  F )--G(H=(X\_'_#$89DA[<\<`<`<bbghkmgmnW }"DM1$'N1-DM1$'N1-DM!#'M(:;DM #%8KUac GGa1T &wT BfU\o&7I_  !
 #yyq)**rU   zChoose a date rangestart)r2   alignzChoose a synoptic timezChoose a unitx   )r   zChoose a file typei  z$Choose one or more observation types
Parameters)r   	collapsedPLOTSTABLE)dynamicc                      t         S )N)card_parametersr_   rU   r$   monitor_armobs_sidebarr     s    rU   c                  D    t        j                  dt        t        d      S Nz
                        # Observation Storage

                        Set the parameters on the sidebar to update the plots. Click on the `TABLE` tab to get an overview of the observation stored.
                        r   rw   r   r   tabs_contentsmonitor_warning_bottom_mainr_   rU   r$   monitor_armobs_mainr     %    yy  +-HVe	g 	grU   c                  D    t        j                  dt        t        d      S r   r   r_   rU   r$   r   r     r   rU   c                  D    t        j                  dt        t        d      S r   r   r_   rU   r$   r   r     r   rU   )Ur   osglobpandasr   hvplot.pandasr   	holoviewshvpanelr   r   mathr   bokeh.palettesr   r   bokeh.plottingr   bokeh.transformr   bokeh.models.widgets.tablesr   r	   r
   monitor_textsr   monitor_datesr   	extensionmonitor_app_textswarningsr   r%   dfs_file
dfs_existsrx   to_datetimemonitoring_app_datesgetDatesstripsdateedateintrX   rY   valuesr   DatetimeRangePickerdate_range_sliderunitslistuniqueotypeftypesynoptic_time_listSelectrf   MultiChoicerR   r   RadioBoxGroupr`   r2   r   rP   rT   r[   rc   rk   dependsparamr   r   r   r   CardRowTooltipIconr   r   Tabsr   r   r   r_   rU   r$   <module>r/     s  2 
 	        2 ! " 5 ( , , \   =&( /88:  !
a=
X
q
!C,bnnS1C-DXVC"0"..5K1LU]"^C"%&8"9C@V<W"W[dkl[m!mC-/ ))+A.446E ))+A.446E#eAaj/3uQqz?Ca
OSQVWXY[Q\M]^JE!AJU1QZ#eAaj/3uUVWY{K[\H  (#F

66LPVdiqt6u*E+,3356EUOEfjjV58URUVGjj$$*<ESX`emp$qGjj$$+eAhZQV^ckn$oGJJ,,.HZ[]H^hz  DI  QT,  UM"((JH
$ 4: RZZ-1B1H1H1N1NPWX? Y?: RZZ-1B1H1H1N1NPWX`c Y`cD RZZ-1B1H1H1N1NPWXBG YBGH RZZ-1B1H1H1N1NPWX=+ Y=+~ bggfbff%6

8N8NUjry8N8z{"BFF="**2H2HOgov2H2wx"BFF7BJJ,B,B`g,B,hi"BFF9299WS#A2::CYCY`t  }DCY  DE  F"BFF9299WS#A2::CYCY  aG  OVCY  DW  X".%AO BGGWh/'81DdSMgggrU   