def get_dataframe_table(dataframe_name, dataframe_dict):
    """
    given a dict of columns and feats, construct the html table for it
    """
    index = dataframe_dict["index"]
    targets = dataframe_dict["targets"]
    columns = dataframe_dict["columns"].difference(targets)
    feats = dataframe_dict["feats"].difference(targets)

    # If the index is used, make sure it's the first element in the table
    clean_index = html.escape(index)
    if index in columns:
        rows = [COL_TEMPLATE.format(clean_index, clean_index + " (index)")]
        columns.discard(index)
    elif index in targets:
        rows = [TARGET_TEMPLATE.format(clean_index, clean_index + " (index)")]
        targets.discard(index)
    else:
        rows = []

    for col in list(columns) + list(feats) + list(targets):
        template = COL_TEMPLATE
        if col in targets:
            template = TARGET_TEMPLATE

        col = html.escape(col)
        rows.append(template.format(col, col))

    table = TABLE_TEMPLATE.format(
        dataframe_name=dataframe_name,
        table_cols="\n".join(rows),
    )
    return table

    given a dict of columns and feats, construct the html table for it
    
featuretools/feature_base/feature_visualizer.py