\App\Module::exists((string)$k) )); $todayMarks = $todayMarks ?? ['tags' => [], 'line' => '']; ?>

= $endH) { $endH = min(24, $nowHNow + 2); } if ($endH <= $startH) { $endH = min(24, $startH + 2); } } $nowH = (int)date('G'); $nowPos = ($nowH - $startH) / max(1, ($endH - $startH)); // 红线位置(0~1) $showNow = $nowPos >= 0 && $nowPos <= 1; /* 🔴 v30 第 2/4 条:首页日程也用**和日程模块同一套冲突分列**。 ⇒ 复用 App\Calendar::conflictLanes(算法借鉴 SyncCalendar 的 TimelineUtil): 两条撞车就左右各半、三条就三分 —— 首页与日历页看到的是同一个布局。 ⚠️ 必须**先按时间排序**再分列(lanes 是按传入顺序返回的): `$todayEvents` 从路由出来已是"全天在前、其余按时刻"升序,这里再稳一次。 ⚠️ 入参只挑**有时间**的那些(全天日程不进时间网格)。 */ usort($timed, static function (array $a, array $b): int { return strcmp((string)($a['time'] ?? ''), (string)($b['time'] ?? '')); }); $laneInfo = \App\Calendar::conflictLanes($timed); foreach ($timed as $i => &$evRef) { [$l, $w] = $laneInfo[$i] ?? [0.0, 1.0]; $evRef['left'] = round($l * 100, 4); $evRef['width'] = round($w * 100, 4); } unset($evRef); ?>

今天的日程

更多日程

今天没有安排。

近期任务

全部任务

没有进行中的任务。

  • 0): ?> /

通知消息 0): ?> 条未读

往年的今天

往年的这一天还没有记录 日子还长,等有了第一次,明年这时候就会自己冒出来。