fix: 恢复全部刷新和全部分析功能

alphaFuthures
Lxy 1 week ago
parent d629ada5b6
commit 4582bc5d0e

@ -61,6 +61,10 @@
.toolbar { display: flex; justify-content: space-between; align-items: center; margin-bottom: 24px; flex-wrap: wrap; gap: 16px; } .toolbar { display: flex; justify-content: space-between; align-items: center; margin-bottom: 24px; flex-wrap: wrap; gap: 16px; }
.toolbar-left { display: flex; align-items: center; gap: 16px; flex: 1; }
.toolbar-actions { display: flex; gap: 10px; }
.search-box { .search-box {
background: #FFFFFF; background: #FFFFFF;
border: none; border: none;
@ -340,7 +344,19 @@
<div id="list-view" class="view active"> <div id="list-view" class="view active">
<!-- Toolbar --> <!-- Toolbar -->
<div class="toolbar"> <div class="toolbar">
<div class="toolbar-left">
<input type="text" class="search-box" id="search-input" placeholder="🔍 搜索品种名称或代码..."> <input type="text" class="search-box" id="search-input" placeholder="🔍 搜索品种名称或代码...">
<div class="toolbar-actions">
<button class="refresh-all-btn" id="refresh-all-btn">
<i class="fas fa-sync-alt"></i>
<span>刷新全部</span>
</button>
<button class="ai-analyze-all-btn" id="ai-analyze-all-btn">
<i class="fas fa-brain"></i>
<span>全部分析</span>
</button>
</div>
</div>
<div class="pills"> <div class="pills">
<button class="pill active" data-category="all">全部 <span id="count-all">32</span></button> <button class="pill active" data-category="all">全部 <span id="count-all">32</span></button>
<button class="pill" data-category="watched">自选 <span id="count-watched">0</span></button> <button class="pill" data-category="watched">自选 <span id="count-watched">0</span></button>

@ -249,6 +249,7 @@ async function toggleWatch(symbol, name, event) {
const data = await response.json(); const data = await response.json();
if (data.success) { if (data.success) {
watchedSymbols = watchedSymbols.filter(s => s !== symbol); watchedSymbols = watchedSymbols.filter(s => s !== symbol);
showToast('success', '已取消自选', `${symbol} 已从自选列表移除`);
} }
} else { } else {
const response = await fetch(`${API_BASE}/watched`, { const response = await fetch(`${API_BASE}/watched`, {
@ -259,24 +260,28 @@ async function toggleWatch(symbol, name, event) {
const data = await response.json(); const data = await response.json();
if (data.success) { if (data.success) {
watchedSymbols.push(symbol); watchedSymbols.push(symbol);
showToast('success', '已添加自选', `${name}(${symbol}) 已添加到自选列表`);
} }
} }
document.getElementById('count-watched').textContent = watchedSymbols.length; document.getElementById('count-watched').textContent = watchedSymbols.length;
const activeTab = document.querySelector('.filter-tab.active'); // 重新渲染当前视图
if (activeTab && activeTab.dataset.category === 'watched') { const activePill = document.querySelector('.pill.active');
const category = activePill ? activePill.dataset.category : 'all';
if (category === 'watched') {
filterByCategory('watched'); filterByCategory('watched');
} else { } else {
renderFuturesGrid(getCurrentFilteredData()); renderFuturesGrid(getCurrentFilteredData());
} }
} catch (error) { } catch (error) {
console.error('切换自选失败:', error); console.error('切换自选失败:', error);
showToast('error', '操作失败', '网络错误,请稍后重试');
} }
} }
function getCurrentFilteredData() { function getCurrentFilteredData() {
const activeTab = document.querySelector('.filter-tab.active'); const activePill = document.querySelector('.pill.active');
const category = activeTab ? activeTab.dataset.category : 'all'; const category = activePill ? activePill.dataset.category : 'all';
return filterDataByCategory(allFuturesData, category); return filterDataByCategory(allFuturesData, category);
} }
@ -500,6 +505,10 @@ function renderFuturesGrid(data) {
const resistance = item.resistance ? formatNumber(item.resistance) : '--'; const resistance = item.resistance ? formatNumber(item.resistance) : '--';
const support = item.support ? formatNumber(item.support) : '--'; const support = item.support ? formatNumber(item.support) : '--';
const isWatched = watchedSymbols.includes(item.symbol);
const watchIcon = isWatched ? 'fa-star' : 'fa-star-o';
const watchClass = isWatched ? 'active' : '';
return ` return `
<div class="card" onclick="showDetailView('${item.symbol}')"> <div class="card" onclick="showDetailView('${item.symbol}')">
<div class="card-header"> <div class="card-header">
@ -611,8 +620,8 @@ function filterByTrend(trend) {
function filterFuturesList(keyword) { function filterFuturesList(keyword) {
keyword = keyword.toLowerCase(); keyword = keyword.toLowerCase();
const activeTab = document.querySelector('.filter-tab.active'); const activePill = document.querySelector('.pill.active');
const category = activeTab ? activeTab.dataset.category : 'all'; const category = activePill ? activePill.dataset.category : 'all';
let filtered = filterDataByCategory(allFuturesData, category); let filtered = filterDataByCategory(allFuturesData, category);

Loading…
Cancel
Save