93 lines
4.1 KiB
HTML
93 lines
4.1 KiB
HTML
<!-- app/templates/statistics/index.html -->
|
|
{% extends "base.html" %}
|
|
|
|
{% block title %}统计分析 - 图书管理系统{% endblock %}
|
|
|
|
{% block head %}
|
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/statistics.css') }}">
|
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css">
|
|
<!-- Updated Google Fonts Link -->
|
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;700&family=Lora:wght@400;600&family=Open+Sans:wght@300;400&family=Sacramento&family=EB+Garamond:ital@0;1&display=swap" rel="stylesheet">
|
|
{% endblock %}
|
|
|
|
{% block content %}
|
|
<div class="statistics-container animate__animated animate__fadeIn">
|
|
<h1 class="page-title">统计分析</h1>
|
|
|
|
<div class="quote-banner">
|
|
<p>"统计数字是文学世界的星辰,照亮知识的海洋"</p>
|
|
</div>
|
|
|
|
<div class="stats-grid">
|
|
<a href="{{ url_for('statistics.book_ranking') }}" class="stats-card animate__animated animate__fadeInUp">
|
|
<div class="card-inner">
|
|
<div class="card-icon"><i class="fas fa-chart-line"></i></div>
|
|
<div class="card-title">热门图书排行</div>
|
|
<div class="card-description">查看最受欢迎的图书,按借阅次数排名</div>
|
|
<div class="card-decoration book-decoration"></div>
|
|
</div>
|
|
</a>
|
|
|
|
<a href="{{ url_for('statistics.borrow_statistics') }}" class="stats-card animate__animated animate__fadeInUp" style="animation-delay: 0.1s;">
|
|
<div class="card-inner">
|
|
<div class="card-icon"><i class="fas fa-exchange-alt"></i></div>
|
|
<div class="card-title">借阅趋势分析</div>
|
|
<div class="card-description">查看借阅和归还的历史趋势和分布</div>
|
|
<div class="card-decoration trend-decoration"></div>
|
|
</div>
|
|
</a>
|
|
|
|
<a href="{{ url_for('statistics.user_activity') }}" class="stats-card animate__animated animate__fadeInUp" style="animation-delay: 0.2s;">
|
|
<div class="card-inner">
|
|
<div class="card-icon"><i class="fas fa-users"></i></div>
|
|
<div class="card-title">用户活跃度分析</div>
|
|
<div class="card-description">查看最活跃的用户和用户行为分析</div>
|
|
<div class="card-decoration user-decoration"></div>
|
|
</div>
|
|
</a>
|
|
|
|
<a href="{{ url_for('statistics.overdue_analysis') }}" class="stats-card animate__animated animate__fadeInUp" style="animation-delay: 0.3s;">
|
|
<div class="card-inner">
|
|
<div class="card-icon"><i class="fas fa-exclamation-circle"></i></div>
|
|
<div class="card-title">逾期分析</div>
|
|
<div class="card-description">分析图书逾期情况和趋势</div>
|
|
<div class="card-decoration overdue-decoration"></div>
|
|
</div>
|
|
</a>
|
|
</div>
|
|
|
|
<div class="page-decoration left"></div>
|
|
<div class="page-decoration right"></div>
|
|
</div>
|
|
{% endblock %}
|
|
|
|
{% block scripts %}
|
|
<script src="{{ url_for('static', filename='js/statistics.js') }}"></script>
|
|
<script>
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
// 添加卡片悬停动画效果
|
|
const cards = document.querySelectorAll('.stats-card');
|
|
|
|
cards.forEach(card => {
|
|
card.addEventListener('mouseenter', function() {
|
|
const decoration = this.querySelector('.card-decoration');
|
|
if (decoration) { // Check if decoration exists
|
|
decoration.classList.add('active');
|
|
}
|
|
this.classList.add('hovered'); // Add class for general hover style
|
|
});
|
|
|
|
card.addEventListener('mouseleave', function() {
|
|
const decoration = this.querySelector('.card-decoration');
|
|
if (decoration) { // Check if decoration exists
|
|
decoration.classList.remove('active');
|
|
}
|
|
this.classList.remove('hovered'); // Remove class
|
|
});
|
|
});
|
|
});
|
|
</script>
|
|
{% endblock %}
|