{#-
       Licensed to the Apache Software Foundation (ASF) under one
       or more contributor license agreements.  See the NOTICE file
       distributed with this work for additional information
       regarding copyright ownership.  The ASF licenses this file
       to you under the Apache License, Version 2.0 (the
       "License"); you may not use this file except in compliance
       with the License.  You may obtain a copy of the License at

         http://www.apache.org/licenses/LICENSE-2.0

       Unless required by applicable law or agreed to in writing,
       software distributed under the License is distributed on an
       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
       KIND, either express or implied.  See the License for the
       specific language governing permissions and limitations
       under the License.
-#}
{% extends 'allura:templates/repo/repo_master.html' %}
{% block title %}
{{c.project.name}} / {{c.app.config.options.mount_label}} / Commit {{commit.shorthand_id()}}
{% endblock %}

{% block header -%}
Commit <a href="{{commit.url()}}" rel="nofollow">{{commit.shorthand_id()}}</a> {{commit_labels(commit)}}
{%- endblock %}

{% block extra_js %}
{{ super() }}
<script type="text/javascript">$(function() {
    {% set path = request.params.get('path', '') %}
    {% if status == 'complete' %}
        {% if 'no-redirect' not in request.params %}
            $(document).ready(function() {
                window.location.href = '{{c.app.repo.tarball_url(revision, path)}}';
            });
        {% endif %}
    {% elif status in ('ready', 'busy') %}
        $('.spinner').show()
        var delay = 500;
        function check_status() {
            $.get('{{commit.url()}}tarball_status?path={{path}}', function(data) {
                if (data.status === 'complete') {
                    $('.spinner').hide()
                    $('#snapshot_status h2').hide();
                    $('#snapshot_status h2.complete').show();
                    {% if 'no-redirect' not in request.params %}
                        window.location.href = '{{c.app.repo.tarball_url(revision, path)}}';
                    {% endif %}
                } else {
                    if (data.status === 'ready' || data.status === 'busy') {
                        // keep waiting
                        $('#snapshot_status h2').hide();
                        $('#snapshot_status h2.busy').show();
                    } else {
                        // something went wrong
                        $('.spinner').hide()
                        $('#snapshot_status h2').hide();
                        $('#snapshot_status form').show();
                    }
                    if (delay < 60000){
                        delay = delay * 2;
                    }
                    window.setTimeout(check_status, delay);
                }
            });
        }
        window.setTimeout(check_status, delay);
    {% endif %}
});
</script>
{% endblock %}

{% block content %}
{% set path = request.params.get('path', '') %}
<div id='snapshot_status'>
    <img src="{{g.forge_static('images/spinner.gif')}}" class="spinner" style="display:none"/>
    <h2 class="busy ready">Generating snapshot...</h2>
    <h2 class="complete">Your download will begin shortly, or use this <a rel="nofollow" href="{{c.app.repo.tarball_url(revision, path)}}">direct link</a>.</h2>
    <form action="tarball" method="post" class="None">
      <p>We're having trouble finding that snapshot. Would you like to resubmit?</p>
      <input type="hidden" name="path" value="{{path}}" />
      <input type="submit" value="Resubmit Snapshot Request" />
      {{lib.csrf_token()}}
    </form>
</div>
{% endblock %}

{% block extra_css %}
{{ super() }}
<style type="text/css">
    #snapshot_status {
      margin: 0 10px;
    }
    #snapshot_status h2 {
        display: none;
    }
    #snapshot_status .{{ status }} {
        display: inline-block;
    }
    #snapshot_status form {
      display: none;
      margin-left: 20px;
    }
    #snapshot_status form p {
      padding-left: 0;
    }
</style>
{% endblock %}
