// src/js/tools/baiduHotTool.js
import BaseTool from '../baseTool.js';
class BaiduHotTool extends BaseTool {
constructor() {
super('baidu-hot', '百度热搜');
this.abortController = null;
// 定义分榜信息
this.boards = [
{ id: 'hot-search', name: '热搜榜' },
{ id: 'hot-meme', name: '热梗榜' },
{ id: 'finance', name: '财经榜' },
{ id: 'livelihood', name: '民生榜' },
];
}
render() {
return `
${this.boards.map(board => `
`).join('')}
正在加载热搜...
`;
}
init() {
this._log('工具已初始化');
document.getElementById('back-to-toolbox-btn')?.addEventListener('click', () => {
window.mainPage.navigateTo('toolbox');
window.mainPage.updateActiveNavButton(document.getElementById('toolbox-btn'));
});
const tabs = document.querySelectorAll('#baidu-hot-tabs .sys-info-tab');
tabs.forEach(tab => {
tab.addEventListener('click', (e) => {
tabs.forEach(t => t.classList.remove('active'));
e.currentTarget.classList.add('active');
const boardName = e.currentTarget.dataset.boardName;
this._fetchAndRenderData(boardName);
});
});
// 默认加载第一个榜单
if (tabs.length > 0) {
tabs[0].click();
}
}
async _fetchAndRenderData(boardName) {
if (this.abortController) this.abortController.abort();
this.abortController = new AbortController();
const resultsContainer = document.getElementById('baidu-hot-results-container');
if (!resultsContainer) return;
resultsContainer.innerHTML = `