refactor: establish standalone application boundary

This commit is contained in:
leefer
2026-08-03 21:42:25 +08:00
parent cc5fb8d73e
commit e1e76cd51e
324 changed files with 63090 additions and 44743 deletions
+41
View File
@@ -0,0 +1,41 @@
function renderMarketBreadth(overview) {
const up = number(overview.up_count);
const down = number(overview.down_count);
const flat = Math.max(0, number(overview.flat_count));
const total = Math.max(1, up + down + flat);
const upRate = up / total * 100;
const flatRate = flat / total * 100;
const downRate = down / total * 100;
const panel = document.querySelector(".market-breadth-panel");
panel.classList.remove("breadth-enter");
void panel.offsetWidth;
panel.classList.add("breadth-enter");
setText("breadthDataTime", dashboardDataTimestamp(state.dashboard?.meta || {}));
animateMetric("breadthRatio", upRate, (value) => `${formatNumber(value, 1)}%`);
animateMetric("breadthUpCount", up, (value) => formatNumber(Math.round(value)));
animateMetric("breadthDownCount", down, (value) => formatNumber(Math.round(value)));
setText("breadthUpLegend", `${formatNumber(up)}${formatNumber(upRate, 1)}%`);
setText("breadthFlatLegend", `${formatNumber(flat)}${formatNumber(flatRate, 1)}%`);
setText("breadthDownLegend", `${formatNumber(down)}${formatNumber(downRate, 1)}%`);
document.querySelector("#breadthFlatLegendItem").hidden = flat === 0;
const limitUp = number(overview.limit_up_count);
const limitDown = number(overview.limit_down_count);
const breadthLabel = upRate < 20 ? "宽度极差" : upRate < 40 ? "宽度偏弱" : upRate < 55 ? "宽度均衡" : "宽度偏强";
setText("breadthWarning", `${breadthLabel},涨跌停 ${limitUp}:${limitDown}`);
const bars = [
["breadthUpBar", upRate],
["breadthFlatBar", flatRate],
["breadthDownBar", downRate],
];
bars.forEach(([id, width]) => {
const bar = document.getElementById(id);
const targetWidth = `${Math.max(width, width > 0 ? 0.8 : 0)}%`;
bar.style.transition = "none";
bar.style.width = "0%";
requestAnimationFrame(() => requestAnimationFrame(() => {
bar.style.transition = "width 760ms var(--ease-out)";
bar.style.width = targetWidth;
}));
bar.title = `${formatNumber(width, 1)}%`;
});
}