{% macro render_select(field, disabled=False) -%}
{# Renders selects. If there's only one choice, it hides the input. #}
{% if field.iter_choices()|list|length == 1 %}
{{ field(style="display: none;") }}
{% else %}
{{ field.label }}
{% if disabled %}
{{ field(class="form-control", disabled="") }}
{% else %}
{{ field(class="form-control") }}
{% endif %}
{% endif %}
{%- endmacro %}

{% macro render_errors(field) -%}
{% if field.errors %}
<i class="fa fa-times form-control-feedback"></i>
  {% for error in field.errors %}
    {% if error is string %}
<span class="help-block">{{ error }}</span>
    {% elif error is iterable %}
<ul class="help-block">
      {% for sub_error in error %}
  <li>{{ sub_error }}</li>
      {% endfor %}
</ul>
    {% endif %}
  {% endfor %}
{% endif %}
{%- endmacro %}

{% macro render_input(field, inline=False, disabled=False) -%}
<div class="form-group{{ " has-error has-feedback" if field.errors }}">
  {% if inline %}
  {{ field.label(class="sr-only") }}
  {{ field(class="form-control", placeholder=field.label.text, disabled=disabled) }}
  {% else %}
    {% if field.widget.input_type == 'submit' %}
      {{ field(class="btn btn-default") }}
    {% else %}
      {% if field.iter_choices is defined %}
      {{ render_select(field, disabled=disabled) }}
      {% else %}
        {% if field.widget.input_type != 'hidden' %}
          {{ field.label }}
        {% endif %}
        {% if disabled %}
        {{ field(class="form-control", disabled="") }}
        {% else %}
        {{ field(class="form-control") }}
        {% endif %}
        {% if field.description %}
          <span class="help-block">{{ field.description }}</span>
        {% endif %}
        {{ render_errors(field) }}
      {%- endif %}
    {% endif %}
  {% endif %}
</div>
{%- endmacro %}

{% macro render_form(form, inline=False) %}
<form class="form" method="post">
  {% for field in form %}
  {{ render_input(field, inline) }}
  {% endfor %}
</form>
{% endmacro %}

{% macro navbar_button(text, view=None, count=None) %}
{% if view %}
{% with url = url_for(view) %}
<li{{ ' class="active"'|safe if url == request.path }}>
  <a href="{{ url }}">{{ text }}{{ (' <span class="badge hidden-sm">' ~ count ~ '</span>')|safe if count is not none and count != 0 }}</a>
</li>
{% endwith %}
{% else %}
<li><a href="#">{{ text }}</a></li>
{% endif %}
{% endmacro %}

{% macro status_color(action_type) %}
{% if action_type == ActionType.evaluating -%}
warning
{%- elif action_type == ActionType.approved -%}
info
{%- elif action_type == ActionType.paid -%}
success
{%- elif action_type == ActionType.incomplete or action_type == ActionType.rejected -%}
danger
{%- endif %}
{% endmacro %}

{% macro clipboard_button(value, position="top", title=None) %}
<button class="btn btn-default btn-sm copy-btn" data-clipboard-text="{{ value }}" data-toggle="tooltip" data-placement="{{ position }}" title="Copy {{ title if title != None else "'" ~ value ~ "'" }} to clipboard">{{ value }}</button>
{% endmacro %}
