修改了bsp state,继续测试

This commit is contained in:
jackyu66git
2026-05-20 00:49:53 +08:00
parent 91148a648a
commit 9b876c45ed
7 changed files with 430 additions and 161 deletions
+110 -52
View File
@@ -2015,6 +2015,40 @@
}
}
/** 应用 /api/chart_metadata 返回的周期列表(切换 crypto / A股 时拉取) */
function applyChartMetadata(meta) {
if (!meta || meta.error || !Array.isArray(meta.timeframe_keys) || meta.timeframe_keys.length === 0) {
return;
}
window.AVAILABLE_TIMEFRAMES = meta.timeframe_keys;
window.DEFAULT_MAIN_TIMEFRAME = meta.default_main;
window.DEFAULT_ELEMENT_TIMEFRAME = meta.default_element;
window.DEFAULT_SUB_SUB_TIMEFRAME = meta.default_sub_sub;
const labels = meta.timeframes || {};
function refill(selId, preferredVal) {
const $el = $(selId);
const cur = $el.val();
$el.empty();
meta.timeframe_keys.forEach(function(k) {
$el.append($('<option>', { value: k, text: labels[k] || k }));
});
const pick = (cur && meta.timeframe_keys.indexOf(cur) >= 0) ? cur : preferredVal;
if (pick && meta.timeframe_keys.indexOf(pick) >= 0) {
$el.val(pick);
} else {
$el.val(meta.timeframe_keys[0]);
}
}
refill('#timeframe', meta.default_main);
refill('#elementTimeframe', meta.default_element);
refill('#subSubTimeframe', meta.default_sub_sub);
const mainTf = $('#timeframe').val();
if (compareTimeframes($('#elementTimeframe').val(), mainTf) > 0) {
setSmallestLargerTimeframe(mainTf);
}
ensureSubSubLteElement();
}
// 比较两个时间周期的大小
function compareTimeframes(tf1, tf2) {
const v1 = window.timeframeToMs(tf1);
@@ -8069,43 +8103,64 @@
console.log('从本地存储恢复时区设置:', savedTimezone);
}
// 初始化数据源切换
// 初始化数据源切换:先按数据源重新拉取周期元信息,再切换 UI
$('#dataSource').on('change', function() {
const dataSource = $(this).val();
if (dataSource === 'crypto') {
$('#cryptoSymbolContainer').show();
$('#astockSymbolContainer').hide();
// 停止A股状态更新器
if (window.astockStatusInterval) {
clearInterval(window.astockStatusInterval);
window.astockStatusInterval = null;
}
} else if (dataSource === 'a_stock') {
$('#cryptoSymbolContainer').hide();
$('#astockSymbolContainer').show();
// 加载A股数据时,如果还没有加载股票列表,可以在这里触发加载
loadAStockSymbols();
// 启动A股交易时间状态更新器
startAStockStatusUpdater();
}
const apiSrc = dataSource === 'a_stock' ? 'a_stock' : 'crypto';
$.getJSON('/api/chart_metadata', { source: apiSrc })
.done(function(meta) {
applyChartMetadata(meta);
})
.always(function() {
if (dataSource === 'crypto') {
$('#cryptoSymbolContainer').show();
$('#astockSymbolContainer').hide();
if (window.astockStatusInterval) {
clearInterval(window.astockStatusInterval);
window.astockStatusInterval = null;
}
loadSymbols();
} else if (dataSource === 'a_stock') {
$('#cryptoSymbolContainer').hide();
$('#astockSymbolContainer').show();
loadAStockSymbols();
startAStockStatusUpdater();
}
});
});
// 检查初始数据源设置
const initialDataSource = $('#dataSource').val();
if (initialDataSource === 'a_stock') {
startAStockStatusUpdater();
$.getJSON('/api/chart_metadata', { source: 'a_stock' })
.done(function(meta) {
applyChartMetadata(meta);
})
.always(function() {
loadAStockSymbols();
startAStockStatusUpdater();
setTimeout(function() {
updateChart();
}, 300);
});
} else {
setTimeout(function() {
updateChart();
}, 500);
}
// 初始化交易对下拉菜单
$('#symbol').val('BTC/USDT:USDT');
$('#astockSymbol').val('000001');
const mainDefault = window.DEFAULT_MAIN_TIMEFRAME || $('#timeframe option:first').val();
const elementDefault = window.DEFAULT_ELEMENT_TIMEFRAME || $('#elementTimeframe option:first').val();
if (mainDefault) {
$('#timeframe').val(mainDefault);
}
if (elementDefault) {
$('#elementTimeframe').val(elementDefault);
if (initialDataSource !== 'a_stock') {
const mainDefault = window.DEFAULT_MAIN_TIMEFRAME || $('#timeframe option:first').val();
const elementDefault = window.DEFAULT_ELEMENT_TIMEFRAME || $('#elementTimeframe option:first').val();
if (mainDefault) {
$('#timeframe').val(mainDefault);
}
if (elementDefault) {
$('#elementTimeframe').val(elementDefault);
}
}
// 测试打印时区偏移量
@@ -8127,10 +8182,12 @@
// 尝试加载更多交易对
loadSymbols();
// 初始化图表并加载默认数据
setTimeout(function() {
updateChart();
}, 500);
// 初始化图表:默认加密货币延迟拉取;若首屏为 A 股则在 chart_metadata 完成后再 updateChart
if (initialDataSource !== 'a_stock') {
setTimeout(function() {
updateChart();
}, 500);
}
// 初始化自动刷新功能
initAutoRefresh();
@@ -8634,31 +8691,32 @@
})
// 获取A股股票列表
// 获取A股股票列表(全市场,来自 /api/a_stocks
function loadAStockSymbols() {
$.get('/api/popular_a_stocks', function(data) {
if (Array.isArray(data)) {
const $select = $('#astockSymbol');
const currentSymbol = $select.val(); // 保存当前选中的值
$select.empty();
data.forEach(function(stock) {
$select.append($('<option>', {
value: stock.symbol,
text: stock.symbol + ' - ' + stock.name
}));
});
// 如果有保存的选中值,恢复它
if (currentSymbol && data.some(stock => stock.symbol === currentSymbol)) {
$select.val(currentSymbol);
} else {
// 设置默认值为平安银行
$select.val('000001');
}
const $select = $('#astockSymbol');
const currentSymbol = $select.val();
$select.prop('disabled', true);
$.get('/api/a_stocks', function(data) {
$select.prop('disabled', false);
if (!Array.isArray(data)) {
console.error('加载A股股票列表失败: 返回非数组', data);
return;
}
}).fail(function() {
console.error('加载A股股票列表失败');
$select.empty();
data.forEach(function(stock) {
$select.append($('<option>', {
value: stock.symbol,
text: stock.symbol + ' - ' + (stock.name || '')
}));
});
if (currentSymbol && data.some(stock => stock.symbol === currentSymbol)) {
$select.val(currentSymbol);
} else {
$select.val('000001');
}
}).fail(function(xhr) {
$select.prop('disabled', false);
console.error('加载A股股票列表失败', xhr && xhr.status);
});
}
// 检测交易对类型并返回相应的配置