From a9ecba3a17ec8bfdfaef288bb841148e245ce70d Mon Sep 17 00:00:00 2001 From: Net Date: Fri, 19 Jul 2024 14:33:29 +0700 Subject: [PATCH] =?UTF-8?q?=E0=B9=80=E0=B8=9E=E0=B8=B4=E0=B9=88=E0=B8=A1?= =?UTF-8?q?=20function=20Schedule?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/modules/04_system/stores/main.ts | 127 +++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) diff --git a/src/modules/04_system/stores/main.ts b/src/modules/04_system/stores/main.ts index 63de26a6..348a39bb 100644 --- a/src/modules/04_system/stores/main.ts +++ b/src/modules/04_system/stores/main.ts @@ -7,8 +7,10 @@ import { useCounterMixin } from "@/stores/mixin"; import type { DataBackup, BackUpRunning, + Schedule, } from "@/modules/04_system/interface/response/Main"; +import type { ScheduleCreate } from "@/modules/04_system/interface/request/Main"; import { ref } from "vue"; const mixin = useCounterMixin(); @@ -23,6 +25,7 @@ const { export const useDataStore = defineStore("systemStore", () => { const dataBackUp = ref([]); + const dataSchedule = ref([]); const prevBackupRunTotal = ref(-1); const backupRunTotal = ref(0); @@ -178,11 +181,130 @@ export const useDataStore = defineStore("systemStore", () => { return sizeNumber.toFixed(2) + " " + units[i]; } + function convertCronToForm(schedule: string, typeReturn: string): string { + let allValues = schedule.split(" "); + + if (typeReturn === "typeOfSchedule") { + if ( + allValues[3].includes("*") && + allValues[4].includes("*") && + allValues[5].includes("*") + ) { + return `daily`; + } + if ( + allValues[3].includes("*") && + allValues[4].includes("*") && + !allValues[5].includes("*") + ) { + return `weekly`; + } + if ( + !allValues[3].includes("*") && + allValues[4].includes("*") && + allValues[5].includes("*") + ) { + return `monthly`; + } + } + + console.log(allValues); + + if (typeReturn === "time") { + if (allValues[2].includes("/")) { + console.log(allValues[2]); + return ""; + } else { + return `${allValues[2]}:${allValues[1]}`; + } + } + + if (typeReturn === "timeStartEvery") { + return allValues[2].split("/")[1]; + } + + if (typeReturn === "date") { + return `${allValues[5].split(",")}`; + } + + return ""; + } + + async function getSchedule() { + showLoader(); + await http + .get(config.API.backup + "/schedule") + .then((res) => { + dataSchedule.value = res.data.map((item) => { + return { + id: item.id, + name: item.name, + schedule: item.schedule, + type: convertCronToForm(item.schedule, "typeOfSchedule") || "", + time: convertCronToForm(item.schedule, "time") || "", + date: convertCronToForm(item.schedule, "date") || "", + timeStartEvery: + convertCronToForm(item.schedule, "timeStartEvery") || "", + startAt: item.startAt, + }; + }); + + console.log(dataSchedule.value); + }) + .finally(() => { + hideLoader(); + }); + } + + async function createSchedule(data: ScheduleCreate) { + showLoader(); + await http + .post(config.API.backup + "/schedule", { + name: data.name, + schedule: data.schedule, + startAt: data.startAt !== undefined ? data.startAt : undefined, + }) + .then(async (res) => { + return res.data; + }) + .finally(() => { + hideLoader(); + }); + } + + async function editSchedule(data: ScheduleCreate) { + showLoader(); + await http + .put(config.API.backup + "/schedule", { + data, + }) + .then(async (res) => { + return res.data; + }) + .finally(() => { + hideLoader(); + }); + } + + async function deleteSchedule(id: string) { + showLoader(); + await http + .delete(config.API.backup + "/schedule/" + id) + .then(async (res) => { + await fetchListBackup(); + }) + .finally(() => { + hideLoader(); + }); + } + return { dataBackUp, backupRunTotal, restoreRunTotal, + dataSchedule, + fetchListBackup, createBackUp, restore, @@ -192,5 +314,10 @@ export const useDataStore = defineStore("systemStore", () => { restoreRunningList, getSize, + + getSchedule, + createSchedule, + editSchedule, + deleteSchedule, }; });