Update
This commit is contained in:
1 parent
3d9674bd5a
commit
d1da86beab
20 files changed
+6109
-923
No files matched your search
@@ -0,0 +1,62 @@
|
||||
import type { TicketTodo } from "./types";
|
||||
|
||||
function parseDateOnly(value: string) {
|
||||
const [year, month, day] = value.split("-").map(Number);
|
||||
return new Date(year, month - 1, day);
|
||||
}
|
||||
|
||||
export function formatDateOnly(date: Date) {
|
||||
const year = date.getFullYear();
|
||||
const month = String(date.getMonth() + 1).padStart(2, "0");
|
||||
const day = String(date.getDate()).padStart(2, "0");
|
||||
|
||||
return `${year}-${month}-${day}`;
|
||||
}
|
||||
|
||||
export function formatTodoDate(value: string) {
|
||||
return new Intl.DateTimeFormat("de-DE", {
|
||||
day: "2-digit",
|
||||
month: "2-digit",
|
||||
year: "numeric"
|
||||
}).format(parseDateOnly(value));
|
||||
}
|
||||
|
||||
export function formatTodoPeriod(todo: Pick<TicketTodo, "starts_on" | "ends_on">) {
|
||||
if (!todo.starts_on && !todo.ends_on) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (todo.starts_on && todo.ends_on && todo.starts_on === todo.ends_on) {
|
||||
return `am ${formatTodoDate(todo.starts_on)}`;
|
||||
}
|
||||
|
||||
if (todo.starts_on && todo.ends_on) {
|
||||
return `${formatTodoDate(todo.starts_on)} - ${formatTodoDate(todo.ends_on)}`;
|
||||
}
|
||||
|
||||
if (todo.starts_on) {
|
||||
return `ab ${formatTodoDate(todo.starts_on)}`;
|
||||
}
|
||||
|
||||
return `bis ${formatTodoDate(todo.ends_on!)}`;
|
||||
}
|
||||
|
||||
export function isTodoActiveOnDay(todo: Pick<TicketTodo, "starts_on" | "ends_on" | "status">, day: string) {
|
||||
if (todo.status !== "open") {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!todo.starts_on && !todo.ends_on) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return (!todo.starts_on || todo.starts_on <= day) && (!todo.ends_on || todo.ends_on >= day);
|
||||
}
|
||||
|
||||
export function isTodoFixedOnDay(todo: Pick<TicketTodo, "starts_on" | "ends_on" | "status">, day: string) {
|
||||
return todo.status === "open" && todo.starts_on === day && todo.ends_on === day;
|
||||
}
|
||||
|
||||
export function isTodoOverdue(todo: Pick<TicketTodo, "ends_on" | "status">, today: string) {
|
||||
return todo.status === "open" && Boolean(todo.ends_on) && todo.ends_on! < today;
|
||||
}
|
||||
Reference in new issue
Block a user