Display
Scheduler
lets(
/* 基本變量 */
開始時間, prop("Start Time").toNumber(),
結束時間, prop("End Time").toNumber(),
總時間, 結束時間 - 開始時間,
/* 生成時間標籤 */
時間標籤, "x".repeat(總時間).split("").map(index + 開始時間).concat([結束時間]),
標籤最大長度, 時間標籤.max().length(),
零零標籤, 時間標籤.map("0".repeat(標籤最大長度 - format(current).length()) + current),
完整標籤, 零零標籤.map(current + ":00"), /* 時間標籤加上分鐘:00 */
/* 計算各時間段的時長 */
早晨結束, 12, /* 早晨結束時間 */
下午結束, 18, /* 下午結束時間 */
morn_hours, max(min(早晨結束, 結束時間) - 開始時間, 0),
aft_hours, max(min(下午結束, 結束時間) - max(開始時間, 早晨結束), 0),
eve_hours, max(結束時間 - max(開始時間, 下午結束), 0),
/* 樣式化時間標籤 */
標籤樣式, 完整標籤.map(
ifs(/* 早晨藍色、下午橙色、晚上紫色 */
morn_hours >= 0
and index + 1 <= morn_hours, current.style("blue_background"),
aft_hours >= 0
and index + 1 >= morn_hours
and index + 1 <= morn_hours + aft_hours, current.style("orange_background"),
current.style("purple_background")
)
),
/* 分配任務至指定的時間標籤 */
scheduled_labels, 標籤樣式.map(
lets(
n, current,
n + " " + prop("Scheduler").filter(
lets(
start, current.prop("Date & Time").dateStart().formatDate("HH").toNumber().toNumber(),
end, if(
/* 如果結束時間不在整點,則四捨五入 */
current.prop("Date & Time").dateEnd().formatDate("mm").toNumber() > 0,
current.prop("Date & Time").dateEnd().formatDate("HH").toNumber() + 1,
current.prop("Date & Time").dateEnd().formatDate("HH")
).toNumber(),
n.toNumber() >= start and n.toNumber() < end
)
)
)
),
/* 輸出結果 */
scheduled_labels.join("\n")
)