{% macro render_field(field, after="") %}
<div class="row">
  {{ field.label }}{{ field(**kwargs)|safe }}
  {% if after %} {{ after }}{% endif %}
  {% if field.errors %}
  <ul class="errors">
    {% for error in field.errors %}
    <li>{{ error }}</li>
    {% endfor %}
  </ul>
  {% endif %}
</div>
{% endmacro %}

{% macro render_bootstrap_field(field, field_description="", formclass="", rightlink=None) %}
  <fieldset class="form-group {% if field.errors %}has-error{% endif %} {% if formclass %}{{formclass}}{% endif %}">
    {% set formclasses = "form-control"%}
    {% if field.errors %} {% set formclasses = formclasses + " form-control-error" %} {% endif %}
    {% if field.type == "SelectField" %} {% set formclasses = formclasses + " c-select" %} {% endif %}

    {% if field.type == 'BooleanField' %}
      {% set formclasses = formclasses + " checkbox-inline" %}
        <label class="c-input c-checkbox">
          {{ field(type='checkbox', **kwargs) }}
          <span class="c-indicator"></span>
          <strong>{{ field.label }}</strong>
        </label>
        <br />
        {% if field_description %}
          <small class="text-muted">{{ field_description }}</small>
        {% endif %}
    {% else %}
      <div>
        <strong>{{ field.label }}</strong>
      {% if rightlink %}
      <div class="float-right"><a href="{{rightlink['url']}}">{{rightlink['text']}}</a>
      {% endif %}
      </div>
      {{ field(class_=formclasses)|safe }}
      <div>
        {% if field_description %}
          <small class="text-muted">{{field_description}}</small>
        {% endif %}
        {% if field.errors %}
        <span class="pull-xs-right text-danger">
          <small>
          {% for error in field.errors %}
            {{ error }}&nbsp;
          {% endfor %}
          </small>
        </span>
        {% endif %}
      </div>
    {% endif %}
  </fieldset>
{% endmacro %}

(class_="c-select")

{% macro render_field_invert(field, after="") %}
<div class="row">
  {{ field(**kwargs)|safe }}{{ field.label }}
  {% if after %} {{ after }}{% endif %}
  {% if field.errors %}
  <ul class="errors">
    {% for error in field.errors %}
    <li>{{ error }}</li>
    {% endfor %}
  </ul>
  {% endif %}
</div>
{% endmacro %}

{% macro render_field_in_row(field, readonly=False) %}
  <div class="form-group row">
    <label class="col-sm-2 col-form-label">{{ field.label }}</label>
    <div class="col-sm-10">
        {% if field.type == 'BooleanField' %}
          {% set cssclass = 'form-check-input mt-2' %}
        {% else %}
          {% set cssclass = 'form-control pl-0' %}
        {% endif %}
        {{ field(class=cssclass, readonly=readonly)|safe }}
    </div>
  </div>
  {% if field.errors %}
    {% for error in field.errors %}
      <div class="alert alert-danger">{{ error }}</div>
    {% endfor %}
  {% endif %}
{% endmacro %}

{% macro render_field_in_cell(field, after="") %}
    <td>{{ field.label }}</td>
    <td>{{ field(**kwargs)|safe }}</td>
{% if after %} <td>{{ after }}</td>{% endif %}
{% if field.errors %}
{% for error in field.errors %}
<td class="errors">{{ error }}</td>
{% endfor %}
{% endif %}
{% endmacro %}


{% macro render_field_in_list(field) %}
    <li>{{ field.label }}</li>
    <li>{{ field(**kwargs)|safe }}</li>
{% if field.errors %}
{% for error in field.errors %}
<li class="errors">{{ error }}</li>
{% endfor %}
{% endif %}
{% endmacro %}


{% macro show_comment(comment, id, repo, username, issueid, form, PRinline=False) %}
<div class="card mb-4 clearfix">
  <div id="comment-{{ id }}" class="card-header bg-light d-flex align-items-center px-3 py-2">
    <div>
        {{ comment.user.default_email | avatar(16) | safe }}
        <a href="{{ url_for('ui_ns.view_user', username=comment.user.user)}}"
            title="{{ comment.user.html_title }}"
            class="notblue font-weight-bold">
            {{ comment.user.user }}
        </a>
        <a class="notblue" title="Permalink to this headline"
          href="#comment-{{ id }}">
          <span title="{{
            comment.date_created | format_datetime
            }}">commented
            {% if PRinline %}
            on line <a href="#c-{{ comment.commit_id }}-{{ comment.line }}"
                        onclick="showTab()">{{
                        comment.line }} of {{ comment.filename }}</a>
            {% endif %}
            {{ comment.date_created | humanize}}</span>
        </a>
    </div>
    <div class="issue_actions ml-auto">
        <div class="issue_action icon">
          <div class="btn-group" role="group" aria-label="Basic example">

            {% if id != 0 and g.fas_user %}
              {% if config.get('REACTIONS') %}
              <div class="btn-group dropdown">
                <button class="btn btn-outline-primary border-0" type="button" data-toggle="dropdown" title="Add reaction">
                    <span class="fa fa-heart"></span>
                </button>
                <div class="dropdown-menu reaction-picker" data-comment-id="{{ comment.id }}">
                  {% for label, emoji in config.get('REACTIONS') %}
                  <button class="btn btn-outline-secondary border-0 btn-sm" type="button" title="{{ label }}">
                      <span class="{{ emoji }}"></span>
                  </button>
                  {% endfor %}
                </div>
              </div>
              {% endif %}
            {% endif%}


            {% if g.fas_user %}
              <a class="reply btn btn-outline-primary border-0" data-toggle="tooltip"
                  title="Reply to this comment - lose formatting" href="javascript:void(0)">
                <span class="fa fa-share-square-o" title="Reply to this comment"></span>
              </a>
            {% endif %}
            {% if id != 0 and g.fas_user and (g.repo_committer or (
              comment.parent.status in [True, 'Open']
              and g.fas_user.username == comment.user.username)) %}
            <a class="btn btn-outline-primary border-0 edit_btn" href="{{
                '%s/comment/%s/edit' % (request.base_url, comment.id) }}"
                data-comment="{{ comment.id }}" data-objid="{{ issueid }}">
              <i class="fa fa-pencil"  title="Edit comment"></i>
            </a>
            {% endif %}
            {% if id != 0 and g.fas_user and (g.repo_committer or (
                comment.parent.status in [True, 'Open']
                and g.fas_user.username == comment.user.username)) %}
            <button class="btn btn-outline-primary border-0" type="submit"
                name="drop_comment" value="{{ comment.id }}"
                onclick="return confirm('Do you really want to remove this comment?');"
                title="Remove comment">
              <i class="fa fa-trash"></i>
            </button>
            {% endif %}
          </div>
        </div>
      </div>
  </div>
  <div class="card-body pb-1">
    <section class="issue_comment">
      <div>
        <span class="edit_date" title="{{
            comment.edited_on | format_datetime if comment.edited_on
        }}">
        </span>
        <span class="comment_text comment_body">
        {%- if id == 0 -%}
{{ comment.content | markdown | noJS | safe }}
        {%- else -%}
{{ comment.comment | markdown | noJS | safe }}
        {%- endif -%}
        </span>
      </div>
    </section>
  </div>
  <div class="card-footer bg-transparent d-flex align-items-center border-0 p-0">
    {% if comment.edited_on %}
    <div class="issue_actions ml-3">
      <small>Edited {{ comment.edited_on | humanize }} by {{ comment.editor.username }} </small>
      </div>
    {% endif %}

    <div class="issue_reactions ml-auto" data-comment-id="{{ comment.id}}">
      <div class="btn-group">
        {% for r in comment.reactions | sort %}
        <button class="btn btn-outline-secondary btn-sm border-0"
                type="button"
                data-toggle="tooltip"
                title="{{ r }} sent by {{ comment.reactions[r] | join_prefix(10) }}">
            <span class="{{ config.get('_REACTIONS_DICT', {})[r] }}"></span>
            <span class="count">{{ comment.reactions[r] | length }}</span>
        </button>
        {% endfor %}
      </div>
    </div>
  </div>

</div>
{% endmacro %}

{% macro show_pr_initial_comment(pull_request, repo, form, username) %}
<div class="card mb-3 clearfix">
  {%if pull_request.initial_comment %}
  <div id="comment-0" class="card-header bg-light d-flex align-items-center px-3 py-2">
    <div>
      {{ pull_request.user.default_email | avatar(24) | safe }}
      <a href="{{ url_for('ui_ns.view_user', username=pull_request.user.user)}}"
          title="{{ pull_request.user.html_title }}"
          class="notblue font-weight-bold">
        {{ pull_request.user.user }}
      </a>
      <a class="notblue" title="Permalink to this headline"
        href="#comment-0">
        <span title="{{
          pull_request.date_created | format_datetime
          }}"> commented {{ pull_request.date_created | humanize}}</span>
      </a>
    </div>
    <div class="issue_actions ml-auto">
        <div class="issue_action icon">
          <div class="btn-group" role="group" aria-label="Basic example">
            {% if g.fas_user %}
              <a class="reply btn btn-outline-primary border-0" data-toggle="tooltip"
                  title="Reply to this comment - lose formatting" href="javascript:void(0)">
                <span class="fa fa-share-square-o" title="Reply to this comment"></span>
              </a>
            {% endif %}
            {% if g.fas_user and (g.repo_committer or g.fas_user.username == pull_request.user.username) %}
            <a class="btn btn-outline-primary border-0"
               href="{{ url_for(
                'ui_ns.request_pull_edit',
                repo=repo.name,
                username=username,
                namespace=repo.namespace,
                requestid=pull_request.id) }}">
              <i class="fa fa-pencil"  title="Edit comment"></i>
            </a>
            {% endif %}
          </div>
        </div>
      </div>
  </div>
  <div class="card-body">
    <section class="issue_comment">
      <div>
        <span class="comment_text comment_body">
          {{ pull_request.initial_comment | markdown | noJS | safe }}
        </span>
      </div>
    </section>
  </div>
  {% else %}
  <div class="card-header bg-light text-center p-3 border-0">
    <span class="text-muted font-weight-bold">no initial comment</span>
    {% if g.fas_user and (g.repo_committer or g.fas_user.username == pull_request.user.username) %}
      <div>
      {% if pull_request.status == 'Open' %}
      <a class="btn btn-outline-primary mt-2 btn-sm"
        href="{{ url_for(
          'ui_ns.request_pull_edit',
          repo=repo.name,
          username=username,
          namespace=repo.namespace,
          requestid=pull_request.id) }}">
        add initial comment
      </a>
      {% endif %}
      </div>
      {% endif %}
  </div>
  {% endif %}

</div>
{% endmacro %}


{% macro show_initial_comment(comment, username, repo, issueid, form) %}
<div class="clearfix p-b-3" id="original_comment_box">
  <section class="issue_comment" id="comment-0">
    <div class="comment_body">
{{- comment.content | markdown | noJS | safe -}}
    </div>
  </section>
  <div class="issue_action icon float-right">
    <div class="btn-group" role="group">
      {% if g.fas_user %}
        <a href="javascript:void(0)" class="btn btn-outline-secondary border-0 btn-sm reply"
          title="Reply to the initial comment - lose formatting">
          <i class="fa fa-share-square-o"></i> Reply
        </a>
      {% endif %}
    </div>
  </div>
</div>
{% endmacro %}

{% macro show_attachments(attachments) %}
  <div class="list-group list-group-flush">
    {% for attachment in attachments %}
      {#
          attachment[0] = link
          attachment[1] = file name
          attachment[2] = display name
          attachment[3] = date
          attachment[4] = comment id
        #}
      <div class="list-group-item list-group-item-action border-0 pl-2">
        <div class="ellipsis font-size-09 font-weight-bold">
          <a href="{{ attachment[0] }}?raw=1" title="{{attachment[2]}}" data-toggle="tooltip">{{ attachment[2] }}</a>
        </div>
        <div><small>
          Attached {{ attachment[3] | humanize}}
          {% if attachment[4] is not none %}
          <a href="#comment-{{ attachment[4] }}" class="pull-right">View Comment</a>
          {% else %}
          <a href="#comment-0" class="pull-right">View Comment</a>
          {% endif %}
        </small></div>
      </div>
    {% endfor %}
  </div>
{% endmacro %}
