# -*- coding: utf-8 -*-
"""
Created on Wed Apr 13 21:03:19 2016

@author: aniruddha
"""


from datetime import datetime, date, time
import glob
import numpy as np
import os
import datetime
import matplotlib.pyplot as plt
import matplotlib.dates as md
from pylab import *
import pickle
import pdb

import sqlite3 as lite
import sys
import re

f1 = open('street_names.pckl', 'rb')
Street_Names = pickle.load(f1)
f1.close()


strName=Street_Names[100]
strName= "'" + strName + "'"


#Dbconnection_Clean = lite.connect('ParkData_Clean.db')
#cur1 = Dbconnection_Clean.cursor()
#cur1.execute("CREATE TABLE ParkDataTable(StreetId TEXT, Date TEXT, Time TEXT, Used_Slot INT, Allowed_Slot INT)")

Dbconnection = lite.connect('ParkData_new.db')     
streetData1=[]



#query="select * from ParkDataTable where StreetId='B422021' and Date='08-04'  order by Time asc"
#query="select * from ParkDataTable where StreetId='B442061' and Date='09-24'"
#query="select * from ParkDataTable where StreetId='B442061' and Date between '09-24' and  '09-29'"



#query="select * from ParkDataTable where StreetId='B442061' order by Date, Time"
#query="select * from ParkDataTable where StreetId= " + strName
query="select * from ParkDataTable where StreetId='B563051'"

 
with Dbconnection :
     cur = Dbconnection.cursor()     
     for row in cur.execute(query):
         streetData1.append(row)


date1=np.array([a[2] for a in streetData1])       
time1=np.array([a[2] for a in streetData1])       
occ1=np.array([a[3] for a in streetData1])
tavail1=np.array([a[4] for a in streetData1])
tavail=np.array([a[4] for a in streetData1])





uniqueLevel=set(tavail1)

for lev in uniqueLevel :
    #pdb.set_trace()
    if lev !=0:
        # Find Indices
        indices=[index for index,value in enumerate(tavail) if value==lev]
        # small length
        if len(indices) < 10000 : 
            occ_m=[occ1[x] for x in indices]
            maxOcc = max(occ_m)
            for indx in indices :
                tavail1[indx]=maxOcc
        else  :
            mark1=0
            mark2=5000
            mult=0;
            while mark2 < len(indices):
                
                maxOcc=max([occ1[x] for x in indices[mark1:]])
                for indx in indices[mark1:mark2] :
                    tavail1[indx]=maxOcc
                mark1=mark1+5000
                mark2=mark2+5000
                
            
            
            maxOcc=max([occ1[x] for x in indices[mark1:]])
            for indx in indices[mark1:] :
                tavail1[indx]=maxOcc

bar=[]
barheight=max(tavail)+1

for a in streetData1 :
    tm=a[2]
    if tm == '00:01' or tm== '00:00' :
        bar.append(barheight)
        
    else :
        bar.append(0)

for i in range(8):

        fig=plt.figure(figsize=(19,2))
        plt.plot(occ1[i*10000:(i+1)*10000-1], 'r', label='occ')
        plt.plot(tavail1[i*10000:(i+1)*10000-1], 'b', label='total avail')
        plt.plot(tavail[i*10000:(i+1)*10000-1], 'g', label='total avail')
        plt.plot(bar[i*10000:(i+1)*10000-1], 'k' )
        #plt.legend()
        #plt.savefig('../Parking_v2/figs/B606011_{0}.eps'.format(i+1), format='eps')
        plt.show()         

#for indx in range(len(streetData1)) :         
    #cur1.execute("INSERT INTO ParkDataTable VALUES(?,?,?,?,?)", (strName ,date1[indx],time1[indx],occ1[indx],tavail1[indx]))            
#Dbconnection_Clean.commit()       
            
        
        
        
    
    








