From 275d1a4e735c99b6fdb17a4dfa02c7af4af6d54a Mon Sep 17 00:00:00 2001
From: louyongjiu <921944921@qq.com>
Date: Mon, 2 Sep 2024 16:14:37 +0800
Subject: [PATCH 1/4] add show crontab next 5 execution times
(cherry picked from commit 9741794f71004822e7d2e9399c932fe66cdff34d)
---
package.json | 3 +-
.../crontab-generator/crontab-generator.vue | 34 ++++++++++++++++++-
2 files changed, 35 insertions(+), 2 deletions(-)
diff --git a/package.json b/package.json
index 63e5856a..a8d677c0 100644
--- a/package.json
+++ b/package.json
@@ -41,8 +41,8 @@
"@tiptap/pm": "2.1.6",
"@tiptap/starter-kit": "2.1.6",
"@tiptap/vue-3": "2.0.3",
- "@types/markdown-it": "^13.0.7",
"@types/figlet": "^1.5.8",
+ "@types/markdown-it": "^13.0.7",
"@vicons/material": "^0.12.0",
"@vicons/tabler": "^0.12.0",
"@vueuse/core": "^10.3.0",
@@ -53,6 +53,7 @@
"colord": "^2.9.3",
"composerize-ts": "^0.6.2",
"country-code-lookup": "^0.1.0",
+ "cron-parser": "^4.9.0",
"cron-validator": "^1.3.1",
"cronstrue": "^2.26.0",
"crypto-js": "^4.1.1",
diff --git a/src/tools/crontab-generator/crontab-generator.vue b/src/tools/crontab-generator/crontab-generator.vue
index 97503e7d..8e96c0d2 100644
--- a/src/tools/crontab-generator/crontab-generator.vue
+++ b/src/tools/crontab-generator/crontab-generator.vue
@@ -2,6 +2,7 @@
import cronstrue from 'cronstrue';
import { isValidCron } from 'cron-validator';
import { useStyleStore } from '@/stores/style.store';
+import { parseExpression } from 'cron-parser';
function isCronValid(v: string) {
return isValidCron(v, { allowBlankDay: true, alias: true, seconds: true });
@@ -21,7 +22,7 @@ const helpers = [
{
symbol: '*',
meaning: 'Any value',
- example: '* * * *',
+ example: '* * * *',
equivalent: 'Every minute',
},
{
@@ -92,6 +93,18 @@ const helpers = [
},
];
+function getLastExecutionTimes(cronExpression: string) {
+ const interval = parseExpression(cronExpression);
+ const times = [];
+
+ // Get the last five execution times
+ for (let i = 0; i < 5; i++) {
+ times.push(interval.next().toJSON());
+ }
+ return times;
+}
+
+
const cronString = computed(() => {
if (isCronValid(cron.value)) {
return cronstrue.toString(cron.value, cronstrueConfig);
@@ -99,6 +112,16 @@ const cronString = computed(() => {
return ' ';
});
+
+const executionTimesString = computed(() => {
+ if (isCronValid(cron.value)) {
+ const lastExecutionTimes = getLastExecutionTimes(cron.value);
+ const executionTimesString = lastExecutionTimes.join('
'); // 使用
标签
+ return `Next 5 execution times:
${executionTimesString}`; // 在这里也添加
标签
+ }
+ return ' ';
+});
+
const cronValidationRules = [
{
validator: (value: string) => isCronValid(value),
@@ -123,6 +146,8 @@ const cronValidationRules = [
{{ cronString }}
+
+
@@ -187,6 +212,13 @@ const cronValidationRules = [
margin: 5px 0 15px;
}
+.cron-execution-string{
+ text-align: center;
+ font-size: 14px;
+ opacity: 0.8;
+ margin: 5px 0 15px;
+}
+
pre {
overflow: auto;
padding: 10px 0;
From bc94bfacbb4e44d273ab846394206a0f5d921269 Mon Sep 17 00:00:00 2001
From: louyongjiu <921944921@qq.com>
Date: Mon, 2 Sep 2024 16:43:17 +0800
Subject: [PATCH 2/4] add show crontab next 5 execution times
(cherry picked from commit 0aba23ffef59b54b4c87aeab237c2c066c49c7f7)
---
pnpm-lock.yaml | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 2311f3af..01c5c192 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -59,6 +59,9 @@ dependencies:
country-code-lookup:
specifier: ^0.1.0
version: 0.1.0
+ cron-parser:
+ specifier: ^4.9.0
+ version: 4.9.0
cron-validator:
specifier: ^1.3.1
version: 1.3.1
@@ -4641,6 +4644,13 @@ packages:
resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==}
dev: false
+ /cron-parser@4.9.0:
+ resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==}
+ engines: {node: '>=12.0.0'}
+ dependencies:
+ luxon: 3.5.0
+ dev: false
+
/cron-validator@1.3.1:
resolution: {integrity: sha512-C1HsxuPCY/5opR55G5/WNzyEGDWFVG+6GLrA+fW/sCTcP6A6NTjUP2AK7B8n2PyFs90kDG2qzwm8LMheADku6A==}
dev: false
@@ -6788,6 +6798,11 @@ packages:
dependencies:
yallist: 4.0.0
+ /luxon@3.5.0:
+ resolution: {integrity: sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==}
+ engines: {node: '>=12'}
+ dev: false
+
/magic-string@0.25.9:
resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==}
dependencies:
From 4276a2c203412de8b76c24dfd2dee0ae4287d67e Mon Sep 17 00:00:00 2001
From: louyongjiu <921944921@qq.com>
Date: Fri, 6 Sep 2024 17:02:34 +0800
Subject: [PATCH 3/4] add show crontab next 5 execution times
---
src/tools/crontab-generator/crontab-generator.vue | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/tools/crontab-generator/crontab-generator.vue b/src/tools/crontab-generator/crontab-generator.vue
index 8e96c0d2..ec14f4a9 100644
--- a/src/tools/crontab-generator/crontab-generator.vue
+++ b/src/tools/crontab-generator/crontab-generator.vue
@@ -116,8 +116,8 @@ const cronString = computed(() => {
const executionTimesString = computed(() => {
if (isCronValid(cron.value)) {
const lastExecutionTimes = getLastExecutionTimes(cron.value);
- const executionTimesString = lastExecutionTimes.join('
'); // 使用
标签
- return `Next 5 execution times:
${executionTimesString}`; // 在这里也添加
标签
+ const executionTimesString = lastExecutionTimes.join('\n');
+ return `Next 5 execution times:\n${executionTimesString}`;
}
return ' ';
});
@@ -146,7 +146,7 @@ const cronValidationRules = [
{{ cronString }}
-
+ {{ executionTimesString }}
@@ -217,6 +217,7 @@ const cronValidationRules = [
font-size: 14px;
opacity: 0.8;
margin: 5px 0 15px;
+ white-space: pre-wrap;
}
pre {
From 6248546e4b25688f9a6d5f651dbc9bb5de59f277 Mon Sep 17 00:00:00 2001
From: louyongjiu <921944921@qq.com>
Date: Fri, 6 Sep 2024 17:14:31 +0800
Subject: [PATCH 4/4] add show crontab next 5 execution times
(cherry picked from commit 3a6b8bce14849516d4313427842a670b01903802)
---
.../crontab-generator/crontab-generator.vue | 16 +++++++---------
1 file changed, 7 insertions(+), 9 deletions(-)
diff --git a/src/tools/crontab-generator/crontab-generator.vue b/src/tools/crontab-generator/crontab-generator.vue
index ec14f4a9..7b206a15 100644
--- a/src/tools/crontab-generator/crontab-generator.vue
+++ b/src/tools/crontab-generator/crontab-generator.vue
@@ -1,8 +1,8 @@