refactor: format
This commit is contained in:
@@ -44,9 +44,19 @@ export function cookieRef<T>(
|
||||
}
|
||||
|
||||
export function booleanCookieRef(name: string, defaultValue: boolean) {
|
||||
return cookieRef<boolean>(name, defaultValue, (v) => v === "1", (v) => v ? "1" : "0");
|
||||
return cookieRef<boolean>(
|
||||
name,
|
||||
defaultValue,
|
||||
(v) => v === "1",
|
||||
(v) => (v ? "1" : "0"),
|
||||
);
|
||||
}
|
||||
|
||||
export function enumCookieRef<T extends number>(name: string, defaultValue: T) {
|
||||
return cookieRef<T>(name, defaultValue, (v) => parseInt(v) as T, (v: T) => v.toFixed(0));
|
||||
return cookieRef<T>(
|
||||
name,
|
||||
defaultValue,
|
||||
(v) => parseInt(v) as T,
|
||||
(v: T) => v.toFixed(0),
|
||||
);
|
||||
}
|
||||
|
||||
+24
-18
@@ -1,48 +1,54 @@
|
||||
|
||||
import { CronType } from "@/enums";
|
||||
import {CronExpressionParser} from "cron-parser";
|
||||
import { CronExpressionParser } from "cron-parser";
|
||||
|
||||
export function parseCron(cron: string | null): { type: CronType, value: number } {
|
||||
export function parseCron(cron: string | null): {
|
||||
type: CronType;
|
||||
value: number;
|
||||
} {
|
||||
let value: RegExpMatchArray | null;
|
||||
if (cron === null) {
|
||||
return {
|
||||
type: CronType.ONE_TIME,
|
||||
value: 0
|
||||
}
|
||||
value: 0,
|
||||
};
|
||||
} else if ((value = /^0 (\d+) \* \* \*$/i.exec(cron)) !== null) {
|
||||
return {
|
||||
type: CronType.EVERY_DAY,
|
||||
value: parseInt(value[1] ?? '')
|
||||
}
|
||||
value: parseInt(value[1] ?? ""),
|
||||
};
|
||||
} else if ((value = /^0 0 \* \* (\d+)$/i.exec(cron)) !== null) {
|
||||
return {
|
||||
type: CronType.EVERY_WEEK,
|
||||
value: parseInt(value[1] ?? '')
|
||||
}
|
||||
value: parseInt(value[1] ?? ""),
|
||||
};
|
||||
} else if ((value = /^0 0 (\d+) \* \*$/i.exec(cron)) !== null) {
|
||||
return {
|
||||
type: CronType.EVERY_MONTH,
|
||||
value: parseInt(value[1] ?? '')
|
||||
}
|
||||
value: parseInt(value[1] ?? ""),
|
||||
};
|
||||
} else if ((value = /^0 0 1 (\d+) \*$/i.exec(cron)) !== null) {
|
||||
return {
|
||||
type: CronType.EVERY_YEAR,
|
||||
value: parseInt(value[1] ?? '')
|
||||
}
|
||||
value: parseInt(value[1] ?? ""),
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
type: CronType.SPECIFIC,
|
||||
value: 0
|
||||
}
|
||||
value: 0,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
export function getCron(type: CronType, value: number, fallback: string): string | null {
|
||||
switch(type) {
|
||||
export function getCron(
|
||||
type: CronType,
|
||||
value: number,
|
||||
fallback: string,
|
||||
): string | null {
|
||||
switch (type) {
|
||||
case CronType.EVERY_DAY:
|
||||
return `0 ${value.toFixed(0)} * * *`;
|
||||
case CronType.EVERY_WEEK:
|
||||
return `0 0 * * ${value.toFixed(0)}`
|
||||
return `0 0 * * ${value.toFixed(0)}`;
|
||||
case CronType.EVERY_MONTH:
|
||||
return `0 0 ${value.toFixed(0)} * *`;
|
||||
case CronType.EVERY_YEAR:
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
import { formatDistanceToNow } from "date-fns";
|
||||
import { enUS, fr } from 'date-fns/locale';
|
||||
import { enUS, fr } from "date-fns/locale";
|
||||
|
||||
export function relativeTime(date: Date, locale: string): string {
|
||||
return formatDistanceToNow(date, {addSuffix: true, includeSeconds: false, locale: locale === 'fr' ? fr : enUS});
|
||||
return formatDistanceToNow(date, {
|
||||
addSuffix: true,
|
||||
includeSeconds: false,
|
||||
locale: locale === "fr" ? fr : enUS,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { SortType } from "@/enums";
|
||||
import type { RawTask, Task } from "@/types";
|
||||
import {CronExpressionParser} from "cron-parser";
|
||||
import { CronExpressionParser } from "cron-parser";
|
||||
|
||||
export function parseTask(task: RawTask): Task {
|
||||
return {
|
||||
@@ -21,7 +21,9 @@ export function taskNextReset(task: Task): Date | null {
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
const interval = CronExpressionParser.parse(task.reset_cron, {currentDate: task.check_date});
|
||||
const interval = CronExpressionParser.parse(task.reset_cron, {
|
||||
currentDate: task.check_date,
|
||||
});
|
||||
return interval.next().toDate();
|
||||
} catch {
|
||||
return null;
|
||||
@@ -33,21 +35,56 @@ export function taskCompleted(task: Task): boolean {
|
||||
if (nextReset === null) {
|
||||
return task.check_date !== null;
|
||||
}
|
||||
return nextReset.getTime() > (new Date()).getTime();
|
||||
return nextReset.getTime() > new Date().getTime();
|
||||
}
|
||||
|
||||
export function sortTasks(tasks: Task[], sortType: SortType, reverse: boolean): Task[] {
|
||||
export function sortTasks(
|
||||
tasks: Task[],
|
||||
sortType: SortType,
|
||||
reverse: boolean,
|
||||
): Task[] {
|
||||
switch (sortType) {
|
||||
case SortType.CREATED_AT:
|
||||
return tasks.slice().sort((a: Task, b: Task) => (reverse ? -1 : 1) * (a.created_at.getTime() - b.created_at.getTime()));
|
||||
return tasks
|
||||
.slice()
|
||||
.sort(
|
||||
(a: Task, b: Task) =>
|
||||
(reverse ? -1 : 1) *
|
||||
(a.created_at.getTime() - b.created_at.getTime()),
|
||||
);
|
||||
case SortType.UPDATED_AT:
|
||||
return tasks.slice().sort((a: Task, b: Task) => (reverse ? -1 : 1) * (a.updated_at.getTime() - b.updated_at.getTime()));
|
||||
return tasks
|
||||
.slice()
|
||||
.sort(
|
||||
(a: Task, b: Task) =>
|
||||
(reverse ? -1 : 1) *
|
||||
(a.updated_at.getTime() - b.updated_at.getTime()),
|
||||
);
|
||||
case SortType.CHECK_DATE:
|
||||
return tasks.slice().sort((a: Task, b: Task) => (reverse ? -1 : 1) * ((a.check_date ?? a.created_at).getTime() - (b.check_date ?? b.created_at).getTime()));
|
||||
return tasks
|
||||
.slice()
|
||||
.sort(
|
||||
(a: Task, b: Task) =>
|
||||
(reverse ? -1 : 1) *
|
||||
((a.check_date ?? a.created_at).getTime() -
|
||||
(b.check_date ?? b.created_at).getTime()),
|
||||
);
|
||||
case SortType.RESET_DATE:
|
||||
return tasks.slice().sort((a: Task, b: Task) => (reverse ? -1 : 1) * (taskNextReset(a) ?? a.created_at).getTime() - (taskNextReset(b) ?? b.created_at).getTime());
|
||||
return tasks
|
||||
.slice()
|
||||
.sort(
|
||||
(a: Task, b: Task) =>
|
||||
(reverse ? -1 : 1) *
|
||||
(taskNextReset(a) ?? a.created_at).getTime() -
|
||||
(taskNextReset(b) ?? b.created_at).getTime(),
|
||||
);
|
||||
case SortType.NAME:
|
||||
return tasks.slice().sort((a: Task, b: Task) => (reverse ? -1 : 1) * a.name.localeCompare(b.name));
|
||||
return tasks
|
||||
.slice()
|
||||
.sort(
|
||||
(a: Task, b: Task) =>
|
||||
(reverse ? -1 : 1) * a.name.localeCompare(b.name),
|
||||
);
|
||||
default:
|
||||
return tasks.slice();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user