{% extends "./browse.html" %}

{% comment %}
Copyright (C) 2017-2024  The Software Heritage developers
See the AUTHORS file at the top-level directory of this distribution
License: GNU Affero General Public License version 3, or any later version
See top-level LICENSE file for more information
{% endcomment %}

{% load static %}
{% load swh_templatetags %}
{% load render_bundle from webpack_loader %}

{% block header %}
  {{ block.super }}
  {% render_bundle 'revision' %}
{% endblock header %}

{% block swh-browse-content %}
  <div>
    <i class="{{ swh_object_icons|key_value:'revision' }} mdi-fw"
       aria-hidden="true"></i>Revision <b>{{ swh_object_metadata.revision }}</b>
    authored by {{ swh_object_metadata.author_url }} on <b>{{ swh_object_metadata.date }}</b>,
    committed by {{ swh_object_metadata.committer_url }} on <b>{{ swh_object_metadata.committer_date }}</b>
  </div>
  <div class="card">
    <div class="card-header swh-background-gray border-bottom-0"
         style="padding-left: 9.5px">
      <a data-bs-toggle="collapse"
         id="swh-collapse-revision-message"
         href="#swh-revision-message">
        <div class="float-start">
          <pre style="white-space: pre-wrap;
                      background-color: inherit;
                      padding: 0px;
                      margin: 0px;
                      border: none"><h5 style="padding-bottom: 0px; font-weight: normal;">{{ message_header }}</h5></pre>
        </div>
        <div class="clearfix"></div>
      </a>
    </div>
    {% if message_body %}
      <div id="swh-revision-message" class="collapse show">
        <pre style="white-space: pre-wrap;
                    margin: 0px;
                    border: none;
                    border-radius: 0px">{{ message_body }}</pre>
      </div>
    {% endif %}
  </div>
  <div style="margin: 4px; padding-bottom: 5px;">
    <b>{{ parents|length }} parent
      {% if parents|length > 1 %}s{% endif %}
    </b>
    <i class="{{ swh_object_icons.revision }} mdi-fw" aria-hidden="true"></i>
    {% for parent in parents %}
      <a href="{{ parent.url }}">{{ parent.id|slice:":7" }}</a>
      {% if not forloop.last %}+{% endif %}
    {% endfor %}
  </div>
  <ul class="nav nav-tabs" style="padding-left: 5px;">
    <li class="nav-item">
      <a class="nav-link active"
         data-bs-toggle="tab"
         href="#swh-revision-tree">Files</a>
    </li>
    <li class="nav-item">
      <a class="nav-link" data-bs-toggle="tab" href="#swh-revision-changes">Changes</a>
    </li>
  </ul>
  <div class="tab-content">
    <div id="swh-revision-tree" class="tab-pane active">
      {% include "./includes/top-navigation.html" %}
      {% if content_size %}
        {% include "./includes/content-display.html" %}
      {% else %}
        {% include "./includes/directory-display.html" %}
      {% endif %}
    </div>
    <div id="swh-revision-changes" class="tab-pane">
      <div id="swh-too-large-revision-diff"
           class="alert alert-warning"
           role="alert"
           style="display: none;
                  margin: 5px 5px 0px 5px">
        The diff you're trying to view is too large.
        Only the first <span id="swh-nb-loaded-diffs">1000</span> changed files have been loaded.
      </div>
      <div id="swh-revision-diffs" style="padding: 5px; padding-bottom: 0;">
        <div class="card">
          <div class="card-header swh-background-gray border-bottom-0">
            <a data-bs-toggle="collapse" href="#swh-revision-changes-list">
              <div class="float-start">
                Showing <strong id="swh-revision-changed-files"></strong>
                with <strong id="swh-revision-lines-added" style="color:green">0 additions</strong>
                and <strong id="swh-revision-lines-deleted" style="color:red">0 deletions</strong>
                (<span id="swh-nb-diffs-computed">0</span> / <span id="swh-total-nb-diffs">0</span>
                diffs computed)
              </div>
              <div class="float-end">
                <button class="btn btn-secondary btn-sm"
                        type="button"
                        onclick="swh.revision.computeAllDiffs(event)"
                        id="swh-compute-all-diffs"
                        title="By default, diffs will be computed as the view is scrolled. Pushing that button will request the immediate computation of all diffs."
                        style="visibility: hidden">Compute all diffs</button>
              </div>
              <div class="clearfix"></div>
            </a>
          </div>
          <div id="swh-revision-changes-list" class="collapse show">
            <div id="swh-revision-changes-loading" class="text-center">
              <img src="{% static 'img/swh-spinner.gif' %}" alt="swh spinner" />
              <p>Computing file changes ...</p>
            </div>
            <pre style="background: none; border: none; display: none;"></pre>
          </div>
        </div>
      </div>
    </div>
  </div>
  <script>
    var revMsgBody = {{ message_body|jsonify }};
    var diffRevUrl = {{ diff_revision_url|jsonify }};
    swh.revision.initRevisionDiff(revMsgBody, diffRevUrl);
  </script>
{% endblock swh-browse-content %}

{% block swh-browse-after-content %}
  {% include "./includes/readme-display.html" %}
{% endblock swh-browse-after-content %}
