Source code for sequana.utils.df2html
# -*- coding: utf-8 -*-
#
# This file is part of Sequana software
#
# Copyright (c) 2016-2021 - Sequana Development Team
#
# File author(s):
# Thomas Cokelaer <thomas.cokelaer@pasteur.fr>
#
# Distributed under the terms of the 3-clause BSD license.
# The full license is in the LICENSE file, distributed with this software.
#
# website: https://github.com/sequana/sequana
# documentation: http://sequana.readthedocs.io
#
##############################################################################
import uuid
from sequana.utils.datatables_js import DataTable
[docs]
def df2html(df, name=None, dom="Brt", show_index=False, pageLength=15):
"""Simple wrapper to create HTML from dataframe
If a columns ends in _links and a name_links exists, then the columns name
will be shown with the clickable name_links.
"""
if name is None:
name = uuid.uuid1().time_low
# looks like datatable does not like ID made of numbers, even in string
# so we convert to ABCDEFGH values
name = "".join([chr(65 + int(x)) for x in str(name)])
datatable = DataTable(df, name, index=show_index)
datatable.datatable.datatable_options = {
"pageLength": pageLength,
"scrollCollapse": "false",
"dom": dom,
"buttons": ["copy", "csv"],
}
# identify links (columns ending in _links)
df.columns = [str(x) for x in df.columns]
for column in df.columns:
if column.endswith("_links"):
prefix = column.replace("_links", "")
if prefix in df.columns:
datatable.datatable.set_links_to_column(column, prefix)
js = datatable.create_javascript_function()
html = datatable.create_datatable(float_format="%.6g")
return js + html