import pandas as pd
from Cython.Plex.Regexps import Empty
from __builtin__ import True

class ChartDataBean:
    
    # format: 
    #    number: rated by value
    #    date: list term
    def __init__(self, chartTitles=[], chartValues = None, format = 'number'):
        self.xAxisName = ''
        self.xAxis = {}
        self.series = []
        
        if chartValues is None:
            return
        if len(chartTitles) == 0:
            return
        
        self.xAxisName = chartTitles[0]
        if format == 'number':
            xAxis = [round(x,4) for x in chartValues[self.xAxisName]]
        elif format == 'date':
            self.xAxis = [x.strftime('%Y-%m-%d') for x in chartValues[self.xAxisName]]
        else:
            self.xAxis = [x for x in chartValues[self.xAxisName]]
            
        invisibleSeries = [
                           'Call Value', 'Call Gamma', 'Call Vega', 'Call Theta', 'Call Rho',
                           'Put Value', 'Put Gamma', 'Put Vega', 'Put Theta', 'Put Rho',
                           'Time Value']
                 
        for name in chartTitles[1:]:
            data = [round(x,6) for x in chartValues[name]]
            
            if format == 'number':
                seriesData = []
                for i in range(len(xAxis)):
                    seriesData.append([xAxis[i], data[i]])
            else:
                seriesData = data
            
            if name in invisibleSeries: 
                isVisible = False
            else: 
                isVisible = True
            self.series.append({'name':name, 'data':seriesData, 'visible':isVisible})
 
 
    def serialize(self):
        return {
                "xAxisName": self.xAxisName,
                "xAxis": self.xAxis,
                "series": self.series,
                }    