import numpy as np
import pandas as pd
from bokeh.models import ColumnDataSource
from bokeh.io import curdoc
from bokeh.models.widgets import TextInput,DataTable,TableColumn,NumberEditor
from bokeh.layouts import row,widgetbox

data = pd.DataFrame({'date': pd.date_range(start = '2016-6-6',end = '2020-6-30',freq = pd.DateOffset(years = 1)),
                    'price':[2,3.5,2,2.8,3.2],
                    'profit':[0]*5})

source = ColumnDataSource(data)

columns = [TableColumn(field = data.columns[0],title ='DATE'),
           TableColumn(field = data.columns[1],title = 'PRICE'),
           TableColumn(field = data.columns[2],title = 'PROFIT')]
Table = DataTable(source = source, columns = columns,editable = True)

textboxes = []
for i in range(len(data)):
	textboxes.append(TextInput(title = 'today_profit', value = 'default'))


def update_data(attrname,old,new):
	lenth = len(textboxes)
	curvalues = [0]*lenth
	for i in range(lenth):
		box = textboxes[i]
		curvalues[i] = float(box.value) 
	source.data = dict(date = source.data.get('date'),price =source.data.get('price') ,profit = curvalues) 
    
for box in textboxes:
	box.on_change('value',update_data)

inputs = widgetbox(*textboxes)
curdoc().add_root(row(inputs,Table))
curdoc().title = 'Fighting!'


# cur_profit = float(text.value)
# source.data = dict(date = source.data.get('date'),price =source.data.get('price') ,profit = [cur_profit] * 5)
# curdoc().add_root(row(text,Table))
# curdoc().title = "Fighting"

