{#-
       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 g.theme.master %}

{% block title %}Neighborhood Statistics{% endblock %}

{% block header %}Neighborhood Statistics{% endblock %}

{% block content %}
  <div class="grid-9">
    <b>Number of projects that are...</b>
    <ul>
      <li>Public: {{ public_count }}</li>
      <li>Private: {{ private_count }}</li>
      {% if h.asbool(config.get('allow_project_delete', True)) %}
      <li>Deleted: {{ delete_count }}</li>
      {% endif %}
    </ul>
  </div>
  <div class="grid-10">
    <b>Number of projects updated in the last...</b>
    <ul>
    <li>30 days: {{ last_updated_30 }}</li>
    <li>60 days: {{ last_updated_60 }}</li>
    <li>90 days: {{ last_updated_90 }}</li>
    </ul>
  </div>
  <div class="grid-19">
    <a href="adminlist">View a list of project admins</a>
  </div>
{% endblock %}
