In [ ]:
from progressivis.nbwidgets import *
dt = DataTable()
In [ ]:
import numpy as np
from progressivis.table import Table
from progressivis.core import JSONEncoderNp
t = Table('table_at', dshape="{a: int, b: float32}", create=True)
sz = 100
t.resize(sz)
ivalues = np.random.randint(100,size=sz)
t['a'] = ivalues
fvalues = np.random.rand(sz)
t['b'] = fvalues
In [ ]:
dt.columns = JSONEncoderNp.dumps(['index']+t.columns)
data = t.iloc[0:10].to_json(orient='datatable')
js_data = {'data': data, 'recordsTotal': len(t),
'recordsFiltered': len(t), 'length': len(t), 'draw':1}
dt.data = JSONEncoderNp.dumps(js_data)
dt
In [ ]:
output2 = widgets.Output()
display(dt, output2)
def on_value_change(change):
info = change['new']
data = t.iloc[info['start']:info['end']].to_json(orient='datatable')
js_data = {'data': data, 'recordsTotal': len(t), 'recordsFiltered': len(t),
'length': len(t), 'draw':info['draw'], 'page':info['page']}
dt.data = JSONEncoderNp.dumps(js_data)
with output2:
print(change['new'])
dt.observe(on_value_change, "page")