virtual-data-analyst / functions /chart_functions.py
nolanzandi's picture
Table generation and download
e7b4bfb verified
raw
history blame
1.46 kB
from typing import List
from quickchart import QuickChart
import pandas as pd
from utils import TEMP_DIR
def chart_generation_func(queries: List[str], session_hash):
print("CHART GENERATION")
query_dict = queries[0]
print(query_dict)
qc = QuickChart()
qc.width = 1000
qc.height = 500
# Config can be set as a string or as a nested dict
qc.config = query_dict
url_id = qc.get_short_url().rsplit('/', 1)[-1]
url_base = qc.get_url_base()
# You can get the chart URL...
interactive_url = url_base + '/chart-maker/view/' + url_id
edit_url = url_base + '/chart-maker/edit/' + url_id
iframe = '<div style=overflow:auto;><iframe\n scrolling="yes"\n width="1000px"\n height="500px"\n src="' + interactive_url + '"\n frameborder="0"\n allowfullscreen\n></iframe>\n <p>Edit, share, and download this graph <a target="_blank" href="' + edit_url + '">here</a></p></div>'
return {"reply": iframe}
def table_generation_func(data: List[str], session_hash):
dir_path = TEMP_DIR / str(session_hash)
print("TABLE GENERATION")
print(data)
df = pd.DataFrame(data)
csv_path = f'{dir_path}/data.csv'
df.to_csv(csv_path)
download_path = f'gradio_api/file/temp/{session_hash}/data.csv'
html_table = df.to_html() + f'<p>Download as a <a href="{download_path}">CSV</a></p>'
print(html_table)
return {"reply": html_table}