打开/关闭搜索
搜索
打开/关闭菜单
443
1201
40
4745
植物大战僵尸杂交版Wiki
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
上传文件
打开/关闭外观设置菜单
notifications
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。
user-interface-preferences
个人工具
创建账号
登录
查看“︁微件:DailyEditRank”︁的源代码
来自植物大战僵尸杂交版Wiki
查看
阅读
查看源代码
查看历史
associated-pages
微件
讨论
更多操作
←
微件:DailyEditRank
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您没有权限编辑
微件
命名空间内的页面。
您可以查看和复制此页面的源代码。
<includeonly> <style> .daily-rank-container { margin: 15px 0; padding: 15px; background: #f9f9f9; border-radius: 10px; border: 1px solid #e0e0e0; max-width: 500px; } .daily-rank-title { font-size: 18px; font-weight: bold; margin-bottom: 12px; text-align: center; color: #333; } .daily-rank-list { list-style: none; padding: 0; margin: 0; } .daily-rank-item { display: flex; align-items: center; padding: 8px 10px; border-bottom: 1px solid #eee; font-size: 14px; transition: background 0.2s; } .daily-rank-item:hover { background: #fff; } .daily-rank-item:last-child { border-bottom: none; } .daily-rank-num { width: 30px; height: 30px; line-height: 30px; text-align: center; border-radius: 50%; font-weight: bold; font-size: 14px; margin-right: 10px; flex-shrink: 0; } .daily-rank-num.top1 { background: #FFD700; color: #fff; } .daily-rank-num.top2 { background: #C0C0C0; color: #fff; } .daily-rank-num.top3 { background: #CD7F32; color: #fff; } .daily-rank-num.normal { background: #e0e0e0; color: #666; } .daily-rank-user { flex: 1; color: #333; text-decoration: none; } .daily-rank-user:hover { color: #4CAF50; text-decoration: underline; } .daily-rank-count { color: #888; font-size: 13px; flex-shrink: 0; } .daily-rank-loading { text-align: center; color: #999; padding: 20px; } .daily-rank-time { text-align: center; font-size: 12px; color: #999; margin-top: 10px; } .daily-rank-refresh { display: block; margin: 10px auto 0; padding: 5px 15px; background: #4CAF50; color: #fff; border: none; border-radius: 5px; cursor: pointer; font-size: 12px; } .daily-rank-refresh:hover { background: #45a049; } </style> <div class="daily-rank-container" id="daily-rank-container"> <div class="daily-rank-title">📊 今日编辑排行 TOP 20</div> <div class="daily-rank-loading" id="daily-rank-loading">加载中...</div> <ul class="daily-rank-list" id="daily-rank-list" style="display:none;"></ul> <div class="daily-rank-time" id="daily-rank-time"></div> <button class="daily-rank-refresh" id="daily-rank-refresh">刷新排行</button> </div> <script> (function() { var $loading = document.getElementById('daily-rank-loading'); var $list = document.getElementById('daily-rank-list'); var $time = document.getElementById('daily-rank-time'); var $refresh = document.getElementById('daily-rank-refresh'); var API_URL = mw.util.wikiScript('api'); var TOP_COUNT = 20; function getTodayStart() { var now = new Date(); now.setHours(0, 0, 0, 0); return now.toISOString(); } function fetchRank() { $loading.style.display = 'block'; $list.style.display = 'none'; $refresh.disabled = true; $refresh.textContent = '刷新中...'; var todayStart = getTodayStart(); var userEdits = {}; function fetchBatch(rcstart) { var params = { action: 'query', list: 'recentchanges', rcprop: 'user', rclimit: 500, rcstart: rcstart || todayStart, rcdir: 'newer', rcnamespace: '0|2|10|828', format: 'json', origin: '*' }; return fetch(API_URL + '?action=query&list=recentchanges&rcprop=user&rclimit=500&rcstart=' + encodeURIComponent(params.rcstart) + '&rcdir=newer&rcnamespace=0|2|10|828&format=json&origin=*') .then(function(res) { return res.json(); }) .then(function(data) { if (data.query && data.query.recentchanges) { var rcs = data.query.recentchanges; rcs.forEach(function(rc) { var user = rc.user; if (!userEdits[user]) userEdits[user] = 0; userEdits[user]++; }); // 如果还有更多结果,继续获取 if (rcs.length === 500 && data.continue) { return fetchBatch(data.continue.rcstart); } } }); } fetchBatch().then(function() { // 排序 var sorted = []; for (var user in userEdits) { sorted.push({ user: user, count: userEdits[user] }); } sorted.sort(function(a, b) { return b.count - a.count; }); var topUsers = sorted.slice(0, TOP_COUNT); // 渲染 $list.innerHTML = ''; if (topUsers.length === 0) { $list.innerHTML = '<li style="text-align:center;color:#999;padding:20px;">今天还没有编辑记录</li>'; } else { topUsers.forEach(function(item, index) { var rank = index + 1; var numClass = rank === 1 ? 'top1' : rank === 2 ? 'top2' : rank === 3 ? 'top3' : 'normal'; var li = document.createElement('li'); li.className = 'daily-rank-item'; li.innerHTML = '<span class="daily-rank-num ' + numClass + '">' + rank + '</span>' + '<a class="daily-rank-user" href="/w/User:' + encodeURIComponent(item.user) + '">' + item.user + '</a>' + '<span class="daily-rank-count">' + item.count + ' 次编辑</span>'; $list.appendChild(li); }); } var now = new Date(); $time.textContent = '更新时间:' + now.toLocaleTimeString('zh-CN'); $loading.style.display = 'none'; $list.style.display = 'block'; $refresh.disabled = false; $refresh.textContent = '刷新排行'; }).catch(function() { $loading.textContent = '加载失败,请重试'; $refresh.disabled = false; $refresh.textContent = '刷新排行'; }); } $refresh.addEventListener('click', function() { fetchRank(); }); // 初始加载 fetchRank(); // 每 5 分钟自动刷新 setInterval(function() { fetchRank(); }, 300000); })(); </script> </includeonly>
返回
微件:DailyEditRank
。
查看“︁微件:DailyEditRank”︁的源代码
来自植物大战僵尸杂交版Wiki