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")