|
@@ -2,7 +2,7 @@
|
|
|
// 覆盖 1-3 个 icon 的各种组合 + 边界情况,验证 PhaseDiagram / SignalTimingChart
|
|
// 覆盖 1-3 个 icon 的各种组合 + 边界情况,验证 PhaseDiagram / SignalTimingChart
|
|
|
// 在不同 icon 数量下的渲染。
|
|
// 在不同 icon 数量下的渲染。
|
|
|
//
|
|
//
|
|
|
-// === 12 个合法 token(按驶入方向分 4 组,每组 3 种动作)===
|
|
|
|
|
|
|
+// 12 个合法 token(按驶入方向分 4 组,每组 3 种动作):
|
|
|
//
|
|
//
|
|
|
// 直行 左转 左转带掉头
|
|
// 直行 左转 左转带掉头
|
|
|
// 上方驶入 (LT 锚) STRAIGHT_DOWN TURN_DOWN_LEFT TURN_DOWN_LEFT_UTURN
|
|
// 上方驶入 (LT 锚) STRAIGHT_DOWN TURN_DOWN_LEFT TURN_DOWN_LEFT_UTURN
|
|
@@ -13,10 +13,7 @@
|
|
|
// 每个 token 锚定到 30×30 单位路口方块的某个角落;同组 3 个 token 共用同一角落,
|
|
// 每个 token 锚定到 30×30 单位路口方块的某个角落;同组 3 个 token 共用同一角落,
|
|
|
// 放在同一阶段会重叠(视觉只见最后那一个)。所以一阶段独立角落上限 = 4。
|
|
// 放在同一阶段会重叠(视觉只见最后那一个)。所以一阶段独立角落上限 = 4。
|
|
|
|
|
|
|
|
-// ============================================================
|
|
|
|
|
// 一、stageList 示例 —— 喂给 PhaseDiagram(路口方块组件)
|
|
// 一、stageList 示例 —— 喂给 PhaseDiagram(路口方块组件)
|
|
|
-// ============================================================
|
|
|
|
|
-//
|
|
|
|
|
// 字段:
|
|
// 字段:
|
|
|
// value 阶段编号字符串("1"/"2"/...)
|
|
// value 阶段编号字符串("1"/"2"/...)
|
|
|
// phaseName 显示名("P1"/"P2"/...)
|
|
// phaseName 显示名("P1"/"P2"/...)
|
|
@@ -34,7 +31,7 @@
|
|
|
// 每阶段 25 秒,总周期 300 秒
|
|
// 每阶段 25 秒,总周期 300 秒
|
|
|
// 排序规则:corner 内 icon 渲染顺序固定为 右转 → 直行 → 左转(数据数组顺序不影响)
|
|
// 排序规则:corner 内 icon 渲染顺序固定为 右转 → 直行 → 左转(数据数组顺序不影响)
|
|
|
export const SAMPLE_STAGE_LIST = [
|
|
export const SAMPLE_STAGE_LIST = [
|
|
|
- // ============= 南北双向(6 阶段)=============
|
|
|
|
|
|
|
+ // 南北双向(6 阶段)
|
|
|
// P1-P3:每方向 1 icon,单动作双向
|
|
// P1-P3:每方向 1 icon,单动作双向
|
|
|
{
|
|
{
|
|
|
value: '1', phaseName: 'P1', time: 25, direction: 'ns',
|
|
value: '1', phaseName: 'P1', time: 25, direction: 'ns',
|
|
@@ -73,7 +70,7 @@ export const SAMPLE_STAGE_LIST = [
|
|
|
_note: '【非对称】北直左右 + 南直'
|
|
_note: '【非对称】北直左右 + 南直'
|
|
|
},
|
|
},
|
|
|
|
|
|
|
|
- // ============= 东西双向(6 阶段)=============
|
|
|
|
|
|
|
+ // 东西双向(6 阶段)
|
|
|
{
|
|
{
|
|
|
value: '7', phaseName: 'P7', time: 25, direction: 'ew',
|
|
value: '7', phaseName: 'P7', time: 25, direction: 'ew',
|
|
|
icons: ['STRAIGHT_LEFT', 'STRAIGHT_RIGHT'],
|
|
icons: ['STRAIGHT_LEFT', 'STRAIGHT_RIGHT'],
|
|
@@ -110,10 +107,7 @@ export const SAMPLE_STAGE_LIST = [
|
|
|
},
|
|
},
|
|
|
];
|
|
];
|
|
|
|
|
|
|
|
-// ============================================================
|
|
|
|
|
// 二、phaseData 示例 —— 喂给 SignalTimingChart(时间条带)
|
|
// 二、phaseData 示例 —— 喂给 SignalTimingChart(时间条带)
|
|
|
-// ============================================================
|
|
|
|
|
-//
|
|
|
|
|
// 9 元组结构(一行 = 一段连续色块):
|
|
// 9 元组结构(一行 = 一段连续色块):
|
|
|
// [trackIdx, startTime, endTime, phaseName, duration, colorType, iconStr, direction, stageTotal]
|
|
// [trackIdx, startTime, endTime, phaseName, duration, colorType, iconStr, direction, stageTotal]
|
|
|
// 0 1 2 3 4 5 6 7 8
|
|
// 0 1 2 3 4 5 6 7 8
|
|
@@ -153,10 +147,7 @@ export const SAMPLE_PHASE_DATA = [
|
|
|
[0, 98, 100, '', 2, 'red', null, 'ew'],
|
|
[0, 98, 100, '', 2, 'red', null, 'ew'],
|
|
|
];
|
|
];
|
|
|
|
|
|
|
|
-// ============================================================
|
|
|
|
|
// 三、SignalTimingChart 的 hasL/hasR 提示
|
|
// 三、SignalTimingChart 的 hasL/hasR 提示
|
|
|
-// ============================================================
|
|
|
|
|
-//
|
|
|
|
|
// 相位图深绿色背景的宽度按 icon 角落分布动态变化(见 SignalTimingChart:528-531):
|
|
// 相位图深绿色背景的宽度按 icon 角落分布动态变化(见 SignalTimingChart:528-531):
|
|
|
// - icons 同时含 L 锚 (LT/LB) 和 R 锚 (RT/RB) → darkWidth ≈ 46px
|
|
// - icons 同时含 L 锚 (LT/LB) 和 R 锚 (RT/RB) → darkWidth ≈ 46px
|
|
|
// - icons 只含 L 或只含 R 一侧 → darkWidth ≈ 28px
|
|
// - icons 只含 L 或只含 R 一侧 → darkWidth ≈ 28px
|
|
@@ -169,10 +160,7 @@ export const SAMPLE_PHASE_DATA = [
|
|
|
// P3 icon×3 (RT+LB+RB) → L+R → 46px
|
|
// P3 icon×3 (RT+LB+RB) → L+R → 46px
|
|
|
// P4 icon×2 (RT+LT) → L+R → 46px
|
|
// P4 icon×2 (RT+LT) → L+R → 46px
|
|
|
|
|
|
|
|
-// ============================================================
|
|
|
|
|
// 四、Random 组合生成器(后续接入 mock 时可直接 reuse)
|
|
// 四、Random 组合生成器(后续接入 mock 时可直接 reuse)
|
|
|
-// ============================================================
|
|
|
|
|
-//
|
|
|
|
|
// 按"4 个角落各最多 1 个 token"的规则随机抽 1-3 个 icon。
|
|
// 按"4 个角落各最多 1 个 token"的规则随机抽 1-3 个 icon。
|
|
|
// 同角落 3 个 token 等价,随机选一个动作。
|
|
// 同角落 3 个 token 等价,随机选一个动作。
|
|
|
|
|
|
|
@@ -198,10 +186,7 @@ export function randomIconCombo(n) {
|
|
|
// 示例:randomIconCombo(2) → ['STRAIGHT_DOWN', 'TURN_LEFT_DOWN'] (LT+RT)
|
|
// 示例:randomIconCombo(2) → ['STRAIGHT_DOWN', 'TURN_LEFT_DOWN'] (LT+RT)
|
|
|
// randomIconCombo() → ['STRAIGHT_UP'] (n 随机 = 1)
|
|
// randomIconCombo() → ['STRAIGHT_UP'] (n 随机 = 1)
|
|
|
|
|
|
|
|
-// ============================================================
|
|
|
|
|
// 五、Demo 路口完整数据构造(用于 apiGetCrossingDetailData 注入)
|
|
// 五、Demo 路口完整数据构造(用于 apiGetCrossingDetailData 注入)
|
|
|
-// ============================================================
|
|
|
|
|
-//
|
|
|
|
|
// 把 SAMPLE_STAGE_LIST 转成 CrossingDetailPanel 直接可用的 stageList +
|
|
// 把 SAMPLE_STAGE_LIST 转成 CrossingDetailPanel 直接可用的 stageList +
|
|
|
// 配套 phaseData + cycleLength。每个阶段:
|
|
// 配套 phaseData + cycleLength。每个阶段:
|
|
|
// 绿灯 = stageList[i].time - 8 秒
|
|
// 绿灯 = stageList[i].time - 8 秒
|