// app/static/js/book_ranking.js document.addEventListener('DOMContentLoaded', function() { const timeRangeSelect = document.getElementById('time-range'); const limitSelect = document.getElementById('limit-count'); let rankingChart = null; // 初始加载 loadRankingData(); // 添加事件监听器 timeRangeSelect.addEventListener('change', loadRankingData); limitSelect.addEventListener('change', loadRankingData); function loadRankingData() { const timeRange = timeRangeSelect.value; const limit = limitSelect.value; // 显示加载状态 document.getElementById('ranking-table-body').innerHTML = `
正在打开书页...
`; // 调用API获取数据 fetch(`/statistics/api/book-ranking?time_range=${timeRange}&limit=${limit}`) .then(response => response.json()) .then(data => { // 更新表格 updateRankingTable(data); // 更新图表 updateRankingChart(data); }) .catch(error => { console.error('加载排行数据失败:', error); document.getElementById('ranking-table-body').innerHTML = ` 加载数据失败,请稍后重试 `; }); } function updateRankingTable(data) { const tableBody = document.getElementById('ranking-table-body'); if (data.length === 0) { tableBody.innerHTML = ` 暂无数据 `; return; } let tableHtml = ''; data.forEach((book, index) => { // 给每个单元格添加适当的类名以匹配CSS tableHtml += ` ${index + 1} ${book.title} ${book.title} ${book.author} ${book.borrow_count} `; }); tableBody.innerHTML = tableHtml; } function updateRankingChart(data) { // 销毁旧图表 if (rankingChart) { rankingChart.destroy(); } if (data.length === 0) { return; } // 准备图表数据 const labels = data.map(book => book.title); const borrowCounts = data.map(book => book.borrow_count); // 创建图表 const ctx = document.getElementById('ranking-chart').getContext('2d'); rankingChart = new Chart(ctx, { type: 'bar', data: { labels: labels, datasets: [{ label: '借阅次数', data: borrowCounts, backgroundColor: 'rgba(183, 110, 121, 0.6)', // 玫瑰金色调 borderColor: 'rgba(140, 45, 90, 1)', // 浆果红 borderWidth: 1 }] }, options: { responsive: true, maintainAspectRatio: false, scales: { y: { beginAtZero: true, title: { display: true, text: '借阅次数', font: { family: "'Open Sans', sans-serif", size: 13 }, color: '#5D5053' }, ticks: { color: '#8A797C', font: { family: "'Open Sans', sans-serif" } }, grid: { color: 'rgba(211, 211, 211, 0.3)' } }, x: { title: { display: true, text: '图书', font: { family: "'Open Sans', sans-serif", size: 13 }, color: '#5D5053' }, ticks: { color: '#8A797C', font: { family: "'Open Sans', sans-serif" } }, grid: { display: false } } }, plugins: { legend: { display: false }, title: { display: true, text: '热门图书借阅排行', font: { family: "'Playfair Display', serif", size: 16, weight: 'bold' }, color: '#B76E79' } } } }); } });