`;
+
+ // The track line background
+ stationsHtml += `
`;
+
let hasStations = false;
stops.forEach(code => {
if (code === '-') return; // Skip breakpoints in this view
@@ -156,7 +161,7 @@
const isSelectedFrom = selection[0] === code;
const isSelectedTo = selection[1] === code;
- const isSelected = isSelectedFrom || isSelectedTo;
+ const inRoute = Array.isArray(currentRoute) && currentRoute.includes(code);
// Check transfers
const canonical = stationCanonicalByCode[code] || code;
@@ -170,66 +175,80 @@
});
const transferLines = Array.from(linesForThisStation).filter(l => String(l.id) !== String(activeLineId));
+ const isTransfer = transferLines.length > 0;
+
+ let nodeColor = activeLine.color || '#94a3b8';
+ let nodeSize = isTransfer ? '20px' : '14px';
+ let nodeBorder = isTransfer ? '4px' : '3px';
+ let badgeHtml = '';
- let transferIcons = '';
- if (transferLines.length > 0) {
- transferIcons = `
`;
- transferLines.slice(0, 3).forEach(l => {
- transferIcons += `
`;
- });
- transferIcons += `
`;
+ if (isSelectedFrom) {
+ nodeColor = 'var(--success, #16a34a)';
+ nodeSize = '24px';
+ badgeHtml = `
起点
`;
+ } else if (isSelectedTo) {
+ nodeColor = 'var(--danger, #dc2626)';
+ nodeSize = '24px';
+ badgeHtml = `
终点
`;
+ } else if (inRoute) {
+ nodeColor = 'var(--primary, #facc15)';
+ if (!isTransfer) nodeSize = '18px';
+ else nodeSize = '24px';
}
- let badgeHtml = '';
- let borderColor = 'var(--border-color, #e2e8f0)';
- let bgColor = 'var(--surface-color, #f8fafc)';
- let shadow = 'none';
-
- if (isSelectedFrom) {
- badgeHtml = `
起点
`;
- borderColor = 'var(--success, #16a34a)';
- bgColor = '#f0fdf4';
- shadow = '0 4px 6px rgba(0,0,0,0.1)';
- } else if (isSelectedTo) {
- badgeHtml = `
终点
`;
- borderColor = 'var(--danger, #dc2626)';
- bgColor = '#fef2f2';
- shadow = '0 4px 6px rgba(0,0,0,0.1)';
- } else if (Array.isArray(currentRoute) && currentRoute.includes(code)) {
- borderColor = 'var(--primary, #facc15)';
- bgColor = '#fefce8';
- if (Array.isArray(currentRouteTransfers) && currentRouteTransfers.includes(code)) {
- badgeHtml = `
换乘
`;
- }
+ let transferDotsHtml = '';
+ if (isTransfer) {
+ transferDotsHtml = `
`;
+ transferLines.slice(0, 3).forEach(l => {
+ transferDotsHtml += `
`;
+ });
+ transferDotsHtml += `
`;
}
stationsHtml += `
-
- ${badgeHtml}
-
${code}
-
${name}
- ${enName ? `
${enName}
` : ''}
- ${transferIcons}
+ align-items: center;
+ width: 70px;
+ flex-shrink: 0;
+ cursor: pointer;
+ transition: transform 0.2s ease;
+ " onmouseover="this.style.transform='translateY(-4px)'" onmouseout="this.style.transform='translateY(0)'">
+
+
+
+ ${badgeHtml}
+ ${transferDotsHtml}
+
+
+
+
+
+
${code}
+
${name}
+ ${enName ? `
${enName}
` : ''}
+
`;
});
if (!hasStations) {
- stationsHtml += `
该线路暂无站点
`;
+ stationsHtml += `
该线路暂无站点
`;
}
- stationsHtml += `