Merge 6248546e4b into b47d132839
				
					
				
			This commit is contained in:
		
						commit
						7c7e933da4
					
				| @ -56,6 +56,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", | ||||
|  | ||||
							
								
								
									
										15
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										15
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							| @ -65,6 +65,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 | ||||
| @ -4682,6 +4685,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 | ||||
| @ -6834,6 +6844,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: | ||||
|  | ||||
| @ -1,6 +1,7 @@ | ||||
| <script setup lang="ts"> | ||||
| import cronstrue from 'cronstrue'; | ||||
| import { isValidCron } from 'cron-validator'; | ||||
| import { parseExpression } from 'cron-parser'; | ||||
| import { useStyleStore } from '@/stores/style.store'; | ||||
| 
 | ||||
| function isCronValid(v: string) { | ||||
| @ -92,6 +93,15 @@ const helpers = [ | ||||
|   }, | ||||
| ]; | ||||
| 
 | ||||
| function getLastExecutionTimes(cronExpression: string) { | ||||
|   const interval = parseExpression(cronExpression); | ||||
|   const 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 +109,15 @@ const cronString = computed(() => { | ||||
|   return ' '; | ||||
| }); | ||||
| 
 | ||||
| const executionTimesString = computed(() => { | ||||
|   if (isCronValid(cron.value)) { | ||||
|     const lastExecutionTimes = getLastExecutionTimes(cron.value); | ||||
|     const executionTimesString = lastExecutionTimes.join('\n'); | ||||
|     return `Next 5 execution times:\n${executionTimesString}`; | ||||
|   } | ||||
|   return ' '; | ||||
| }); | ||||
| 
 | ||||
| const cronValidationRules = [ | ||||
|   { | ||||
|     validator: (value: string) => isCronValid(value), | ||||
| @ -123,6 +142,10 @@ const cronValidationRules = [ | ||||
|       {{ cronString }} | ||||
|     </div> | ||||
| 
 | ||||
|     <div class="cron-execution-string"> | ||||
|       {{ executionTimesString }} | ||||
|     </div> | ||||
| 
 | ||||
|     <n-divider /> | ||||
| 
 | ||||
|     <div flex justify-center> | ||||
| @ -187,6 +210,14 @@ const cronValidationRules = [ | ||||
|   margin: 5px 0 15px; | ||||
| } | ||||
| 
 | ||||
| .cron-execution-string{ | ||||
|   text-align: center; | ||||
|   font-size: 14px; | ||||
|   opacity: 0.8; | ||||
|   margin: 5px 0 15px; | ||||
|   white-space: pre-wrap; | ||||
| } | ||||
| 
 | ||||
| pre { | ||||
|   overflow: auto; | ||||
|   padding: 10px 0; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user