Get data from Tabulator without a live kernel

Because it took me a while to figure out:

import panel as pn
import pandas as pd
from pscript import py2js
pn.extension('tabulator')

def transpose_dict_of_arrays(d):
    out = {}
    for i in range(len(list(d.values())[0])):
            out[list(d.values())[0][i]] = list(d.values())[1][i]
    return out

test = {"index":["language","name"],"inputs":["Javascript","You"]}

df = pd.DataFrame(
    {'inputs':transpose_dict_of_arrays(test)}
)

big = pn.widgets.Tabulator(df)
markdown = pn.pane.Markdown("")
button = pn.widgets.Button(name = 'Get Data')
x = button.jscallback(clicks = py2js(transpose_dict_of_arrays) + """
var inputs = transpose_dict_of_arrays(big.source.data);
markdown.text = 'Hello, ' + inputs['name']
""", args={'big' : big, 'markdown': markdown})

x = pn.Column(big, button, markdown)
x.save('static.html')
1 Like