U
    Éø¦ii  ã                   @   sÂ  d dl Zd dlZd dlZd dlZd dlmZ d dl	Z	d dl
Zd dlZd dlZd dlmZmZ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mZmZm Z m!Z!m"Z"m#Z# d dl$m$Z$ e %d	¡Z&d
d„ e'e(e&d ƒƒD ƒZ)e'e(e&d ƒƒd Z*e&d d e&d  Z+e'e(e+ƒƒZ+dd„ e+D ƒZ,e -e,e+dœ¡Z.e.d Z/e'e(e/ƒƒZ/e0e/ƒZ/dd„ e/D ƒZ1e& 2d¡d d e& 2d¡d  Z.e'e(e.ƒƒZ.e0e.ƒZ3dd„ e3D ƒZ4d 5e&e&d e*k d ¡Z6ee6ƒZ7ee7ƒZ8e 9ej:dddddddœe e6dƒdd id!�g¡Z;e<d"d#ƒZ=e= >d$¡ e= ?¡  d%d&„ Z@eAeBe& C¡ d' jDd( ƒƒZEeEd) d k�rZeEeEd)  ZFneEZFeAeBe& C¡ d' jDd* ƒƒZGeGd) d k�r˜eGd)eGd)   ZHneGZHe'eIeFeHƒƒZJe KeJ¡ZLd+ZMe Ae Nd eOeLƒd eM¡¡ PeB¡ZQe'eLeQ ƒZReFeRd < eHeReOeRƒd < eIdeOeRƒd ƒD ]`ZSeReS d, d k�reReS d, d-k�rReReS eReS d,  eReS< neReS d,eReS d,   eReS< �qi ZTi ZUd.d/d0d1œZVd2d3d4œZWeRD ]lZSeBeSƒZSi ZXeSeRd  k�sÈeSeReOeRƒd  k�ràd5 YeS¡eXd6< eVeXd7< nd5 YeS¡eXd6< eWeXd7< eXeTeS< �q”ej9eej9d8d9id:�eeej9d;d<d=œej9d>d>d?d@dAdBœej9dCej9dDej9ej9dEdFd0d1œdGgdH�ej9dIejZdJdKdLdMœe)dNe*dO�gdP�gdQ�e [¡ e [¡ e [¡ ej9ej9dEdFd0d1œdRgdH�ej9dSej\dTeFeHd)eFeHgeTdU�gdP�gdQ�gdV�gdV�ej9dWej9dDej9dEdFd0d1œdXgdH�ej9dYdZiejZd[dKdLdMœe1dNe3dO�gdH�gdV�gdV�gdH�ej9d>d>d\d]œej9d^ej9dDej9d_d`ddddœej:dad`idbe!e&e*e4ƒdd idc�gdH�gdV�gdV�ej9d^ej9dDej9dEddd4œej9ded`ddddœej:dad`idfe"e&e*e4ƒdd idc�gdH�gdH�gdV�gdV�ej9dgej9dDej]dhdiej9dje8gdP�gdk�gdV�gdV�ej9dlej9dDej9dd`ddddœej:dad`idme#ƒ dd idc�gdH�gdV�gdV�ej9dgej9dDej]dndiej9dodpd`ddddœe;gdq�gdk�gdV�gdV�gdH�gdH�gdQ�Z^e$ _edjdrds�edodrds�ed[dtds�edbduds�edfduds�edJdvds�ed[dvds�gedJdtds�edTdtds�ged[dtds�g¡dwdx„ ƒZ`e$ _edIdrds�ed[dtds�g¡dydz„ ƒZae$ _ed{d7ƒed|d7ƒged}d~ƒedd~ƒed€d~ƒed�d~ƒg¡d‚dƒ„ ƒZbdS )„é    N)ÚInputÚOutputÚState)Ú	no_update)ÚPreventUpdate)ÚnavbarÚnavbar2)Úsidebar)Ú	textfieldÚ	wordCloudÚimg_wordCloudÚwordCountBarChartÚavgReviewsBarChartÚavgPricesBarChartÚavgVsPriceBubbleChart)Úappz./data/amazon_data.jsonc                 C   s   g | ]}||d œ‘qS ©)ÚlabelÚvalue© ©Ú.0Úbr   r   ú1/var/www/sinfronteras/sentiment-dash/app1_home.pyÚ
<listcomp>&   s     r   Úbrandé   ú - Úseriesc                 C   s   g | ]}|  ¡ d  ‘qS ©r   ©Úsplit©r   Úir   r   r   r   -   s     )r   Úbrand_seriesr$   c                 C   s   g | ]}||d œ‘qS r   r   ©r   Úsr   r   r   r   3   s     zbrand in @first_brandc                 C   s"   g | ]}d   | ¡ dd… ¡‘qS ©ú é   N©Újoinr!   r"   r   r   r   r   :   s     r(   Úreview_one_stringÚhisto2úcalc(100% - 50px)Ú350pxÚblockÚauto©ÚwidthÚheightÚdisplayúmargin-leftúmargin-righté   ÚdisplayModeBarF©ÚidÚstyleÚfigureÚconfigútestfile.txtÚwÚ0c                 C   s.   t ddƒ}| | ¡ | ¡  t ddƒ}| ¡ S )Nr?   r@   Úr)ÚopenÚwriteÚcloseÚread)ÚvalÚfileÚfr   r   r   Ú	resetfileK   s
    


rJ   ÚpriceÚminé
   Úmaxé   é   g      )@ÚredZ14ptÚnormal)Úcolorú	font-sizezfont-weightz#696b6eZ13pt)rS   rT   z{}r   r<   z
min-heightZ34pt©r<   Z2500pxz0 auto 25px)ZmaxWidthÚmarginZ50ptz-5ptz-100Z50px)r6   r7   ú
margin-topzz-indexzborder-radiusZdivDos1ZinterDivSquareÚblackZ17ptZBrand)r<   ÚchildrenZbrand_div_id2Ú	brand_id2ú100%Ú10px©z	max-widthr4   T©r;   r<   ÚoptionsÚmultir   )r;   rY   ©rY   z	Price ($)Zprice_div_id2Z	price_id2)r;   rL   rN   Ústepr   Úmarks)Ú	classNamerY   ZdivDos2ZSerieszbackground-colorzrgba(30,33,63,0.4)Zbrand_series_id2Z7pt)r6   r7   rW   Z
divSquare1zcalc(100% - 0px)Ú360pxr4   Zave_reviews2)r<   r;   r=   r>   Z15ptzcalc(100% - 00px)Zave_prices2Z
divSquare2z	loading-1ZcircleZcloud2)r;   ÚtyperY   Z
divSquare3Z	ave_pricez	loading-2Z
histo_div2zcalc(100% - 5px))r;   r<   rY   rY   )Úcomponent_idÚcomponent_propertyr   r=   r_   c              	      sj  t ddƒ}| ¡ }ttd |d ktd |d k@  }tt|d ƒƒ}dd„ |D ƒ}|d d	 |d
  }tt|ƒƒ}t|ƒ}dd„ |D ƒ}	t| ƒdkròt|ƒdkròtjddddddœd�}
d gt| ƒ }t	|| |ƒ}t
|| |ƒ}|
|
t||||	fS t| ƒdk�rlt ddƒ}| d¡ | ¡  tjddddddœd�}
d gt| ƒ }t	|| |ƒ}t
|| |ƒ}|
|
g ||||	fS |dk�r`t ddƒ}| d¡ | ¡  dd„ |D ƒ}tt|ƒƒ}tt | |¡ƒ}tt || ¡ƒ‰ g }t|ƒdk�r| d¡d d	 | d¡d
  }tt|ƒƒ}|| }tˆ ƒdk�r2‡ fdd„|D ƒ}t|ƒdk�rPdd„ |D ƒ}ndd„ |D ƒ}d | d¡d ¡}|dk�r²tjg d�}tjdd i|d!d"id#�}|}|}d }d }n^t|ƒ}t|ƒ}t|d$ƒ}tjtjd%dd&ddddœ|d!d"id'�gd(�}t	|| |ƒ}t
|| |ƒ}||t|ƒdk�r&|n||dk�r>tjg d�n||dk�rVtjg d�n|||	fS td)ƒ d*d„ |D ƒ}d | d¡d ¡}|dk�rÊtjg d�}tjdd i|d!d"id#�}|}|}d }d }n^t|ƒ}t|ƒ}t|d$ƒ}tjtjd%dd&ddddœ|d!d"id'�gd(�}t	|| |ƒ}t
|| |ƒ}||t|dk�rDtjg d�n||dk�r\tjg d�n|||	fS d S )+Nr?   rB   rK   r   r   r   c                 S   s   g | ]}||d œ‘qS r   r   r   r   r   r   r   Ÿ  s     z"changing_brand.<locals>.<listcomp>r   r   c                 S   s   g | ]}||d œ‘qS r   r   r%   r   r   r   r   ¤  s     r.   r/   r0   r1   r2   rU   r@   Ú2Ú3c                 S   s   g | ]}|  ¡ d  ‘qS r   r    r"   r   r   r   r   Å  s     zbrand in @brands_to_addc                    s    g | ]}|  ¡ d  ˆ kr|‘qS r   r    )r   r   ©Zbrands_to_suprimer   r   r   Ô  s      c                 S   s"   g | ]}d   | ¡ dd… ¡‘qS r'   r*   r"   r   r   r   r   ×  s     c                 S   s"   g | ]}d   | ¡ dd… ¡‘qS r'   r*   r"   r   r   r   r   Ù  s     r(   z&brand in @input_value & series in @serr,   Ú )Údatar4   re   r9   F)r<   r=   r>   r8   r-   Z370pxr:   ra   Ú5000c                 S   s"   g | ]}d   | ¡ dd… ¡‘qS r'   r*   r"   r   r   r   r     s     )rC   rF   rm   ÚlistÚsetÚsortedÚlenÚhtmlÚDivr   r   r   rD   rE   ÚnpZ	setdiff1dÚqueryr+   ÚgoÚFigureÚdccÚGraphr   r   r   rJ   )Úinput_valuerK   Zinput_value_seriesrI   ÚvaZdataRangePriceZbrandsRangePriceZbrandsRangePriceDropdownZbrand_series_listRangePriceZbrand_seriesRangePriceDropdownZempZserZave_reviewsZ
ave_pricesrH   Úbrand_distintZbrands_to_addÚbrand_series_valueZbrand_series_value_to_updateÚtextZfignadaZnadaÚimgCloudZdiÚcloudZimgHistoWordsr   rk   r   Úchanging_brand†  sÜ    
$ÿ

ÿ


 
ý
 ýù
ý
 ýùr‚   c                 C   sº   t ddƒ}| ¡ }t| ƒdkrJ|dkrJg }tjddddœtd	|d
�f}|S |dkr`tdƒ t‚nVt ddƒ}| d¡ | 	¡  dd„ | D ƒ}t
t|ƒƒ}tjddddœtd	|d
�f}|S d S )Nr?   rB   r   ri   rZ   r[   r\   r]   Tr^   rn   r@   rj   c                 S   s   g | ]}|  ¡ d  ‘qS r   r    r"   r   r   r   r   R  s     z)changing_brand_series.<locals>.<listcomp>)rC   rF   rr   ry   ÚDropdownÚbrandsrJ   r   rD   rE   ro   rp   )r{   rI   r|   r}   ÚdivrH   r   r   r   Úchanging_brand_series1  s8    
û

ûr†   r	   ZsidebarMenu3ÚsidebarButtonÚn_clicksÚmenu3OpenButtonÚmenu3CloseButtonÚmenuHomec                 C   sú   t j}|jsd}n|jd d  d¡d }tj|j|j|jdœdd�}| }| d krbdd	idd	ifS |d
kr†| d dkr†ddidd	ifS |dkr¦|dkr¦ddiddifS |dkrÆ|dkrÆddidd	ifS |dkræ|dkrædd	idd	ifS dd	idd	ifS d S )NzNo clicks yetr   Úprop_idÚ.)ÚstatesÚ	triggeredÚinputsr)   )Úindentr5   Únoner‡   r0   r‰   rŠ   r‹   )ÚdashÚcallback_contextr�   r!   ÚjsonÚdumpsrŽ   r�   )Zn_sidebarButtonZn_menu3OpenButtonZn_menu3CloseButtonZ
n_menuHomeÚctxZ	button_idZctx_msgZclr   r   r   r5   b  s.    ýür5   )cÚnumpyru   ÚpandasÚpdÚcollectionsr•   Zplotly.graph_objsZ
graph_objsrw   r“   Údash_html_componentsrs   Údash_core_componentsry   Údash_bootstrap_componentsÚdbcÚdash.dependenciesr   r   r   r   Zdash.exceptionsr   Zcomponents.navbarr   r   Zcomponents.sidebarr	   Zcomponents.plotsr
   r   r   r   r   r   r   r   Z	read_jsonrm   ro   rp   r„   Zfirst_brandZbrand_series_listZ
brand_listZ	DataFramer$   Zbrand_series_allrq   Zbrand_series_dropdownrv   r~   Zseries_first_brandr+   r   r�   r€   rt   rz   ÚhistrC   rH   rD   rE   rJ   ÚroundÚintZdescribeÚlocZminPriceZminPrice_base10ZmaxPriceZmaxPrice_base10ÚrangeZ
marks_listÚarrayZarrZnumElemsZlinspacerr   ZastypeÚidxZmarks_list5r#   ZmarksPricesZ	styleDictZ
styleDict1Z
styleDict2ZmarksValuesÚformatrƒ   ÚBrÚRangeSliderÚLoadingÚlayoutÚcallbackr‚   r†   r5   r   r   r   r   Ú<module>   sZ  
$
  ý



" 
$

þ
ÿþûÿþùÿ  
ÿþúÿþùÿèýÿþ:
ÿþûÿþùýÿþÅþ\

üÿþÿþÿþ
üÿþÿþÿþÿþÿþÿýÿþÿþüÿþÿþÿþÿýÿýÿþÿþ þ£ûûÿ }






ù


þ
ÿò
 

ÿþ
+þüû