{# This file was part of Flask-Bootstrap and was modified under the terms of its BSD License. Copyright (c) 2013, Marc Brinkmann. All rights reserved. #} {# This file was part of Bootstrap-Flask and was modified under the terms of its MIT License. Copyright (c) 2018 Grey Li. All rights reserved.#} {% from 'fomantic/utils.html' import render_ui_icon, arg_url_for %} {% macro build_url(endpoint, model, pk, url_tuples) %} {% if model == None %} {{ raise("The model argument can't be None when setting action URLs.") }} {% endif %} {% with url_params = {} -%} {%- do url_params.update(request.view_args if not endpoint else {}), url_params.update(request.args if not endpoint else {}) -%} {% with record = model.query.get(pk) %} {% for url_parameter, db_field in url_tuples %} {% if db_field.startswith(':') and '.' in db_field %} {%- set db_field = db_field[1:].split('.') -%} {%- do url_params.update({url_parameter: record[db_field[0]][db_field[1]]}) -%} {% elif db_field.startswith(':') %} {%- set db_field = db_field[1:] -%} {%- do url_params.update({url_parameter: record[db_field]}) -%} {% else %} {%- do url_params.update({url_parameter: db_field}) -%} {% endif %} {% endfor %} {% endwith -%} {{ arg_url_for(endpoint, url_params) }} {%- endwith %} {%- endmacro %} {% macro render_ui_table(data, titles=None, primary_key='id', primary_key_title='#', caption=None, caption_class=None, caption_icon=None, table_classes=None, header_classes=None, responsive=False, responsive_class=None, stackable_class=None, model=None, show_actions=False, actions_title='Actions', custom_actions=None, view_url=None, edit_url=None, delete_url=None, new_url=None, action_pk_placeholder=':id') %} {% if not titles %} {% set titles = get_table_titles(data, primary_key, primary_key_title) %} {% endif %} {% if responsive %}
{% endif %} {% if caption %} {% if caption_icon %}{% endif %}{{ caption }} {% endif %} {% for title in titles %}{% endfor %} {% if show_actions %} {% endif %} {% for row in data %} {% for title in titles %} {% if title[0] == primary_key %} {% else %} {% endif %} {% endfor %} {% if show_actions %} {% endif %} {% endfor %}
{{ title[1] }}{{ actions_title }} {% if new_url %} {{ render_ui_icon('plus') }} {% endif %}
{{ row[title[0]] }}{{ row[title[0]] }} {% if custom_actions %} {% for (action_name, action_icon, action_url) in custom_actions %} {{ render_ui_icon(action_icon) }} {% endfor %} {% endif %} {% if view_url %} {{ render_ui_icon('eye') }} {% endif %} {% if edit_url -%} {{ render_ui_icon('pencil', 'green') }} {%- endif %} {% if delete_url %}
{% if csrf_token is undefined %} {{ raise('You have to enable the CSRFProtect extension from Flask-WTF to use delete_url, see the docs for more details (https://bootstrap-flask.readthedocs.io/en/stable/macros.html#render-table).') }} {% endif %} {{ render_ui_icon('trash', 'red') }}
{% endif %}
{% if responsive %}
{% endif %} {% endmacro %}