MediaWiki:售票亭.js
MediaWiki界面页面
更多操作
注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的更改的影响。
- Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5或Ctrl-R(Mac为⌘-R)
- Google Chrome:按Ctrl-Shift-R(Mac为⌘-Shift-R)
- Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5。
/* 售票亭 - 车票统计 */
$(function() {
var $stats = $('#ticket-stats');
if (!$stats.length) return;
var totalPassed = 0, totalFailed = 0;
var latestDate = '';
$('.mw-parser-output').find('h3, h4').each(function() {
var text = $(this).text().trim();
var dateMatch = text.match(/(\d+月\d+日)\s*发车/);
if (!dateMatch) return;
if (!latestDate) latestDate = dateMatch[1];
var $table = $(this).nextAll('table').first();
if (!$table.length) return;
var $passedCell = $table.find('td:contains("已售出车票")').closest('tr').nextAll('tr').first().find('td');
var $failedCell = $table.find('td:contains("未能登车")').closest('tr').nextAll('tr').first().find('td');
// Count passed
var passedText = $passedCell.text().trim();
if (passedText) {
var lines = passedText.split(/\n/).filter(function(l) { return l.trim(); });
// Each non-empty line starting without "已售出" is an entry
// Actually count by splitting on newlines and filtering real entries
totalPassed += lines.length;
}
// Count failed
var failedText = $failedCell.text().trim();
if (failedText) {
var failLines = failedText.split(/\n/).filter(function(l) { return l.trim(); });
totalFailed += failLines.length;
}
});
$stats.html(
'🎫 已发放车票 <strong>' + totalPassed + '</strong> 张 | ' +
'✗ 未能登车 <strong>' + totalFailed + '</strong> 人 | ' +
'📅 最近更新 <strong>' + latestDate + '</strong>'
);
});