diff --git a/platypush/backend/http/webapp/package-lock.json b/platypush/backend/http/webapp/package-lock.json
index b186d473e..c50f28463 100644
--- a/platypush/backend/http/webapp/package-lock.json
+++ b/platypush/backend/http/webapp/package-lock.json
@@ -9,8 +9,9 @@
"version": "0.1.0",
"dependencies": {
"@fortawesome/fontawesome-free": "^6.1.1",
- "core-js": "^3.31.1",
"axios": "^1.6.0",
+ "core-js": "^3.31.1",
+ "cronstrue": "^2.47.0",
"highlight.js": "^11.9.0",
"lato-font": "^3.0.0",
"mitt": "^2.1.0",
@@ -4699,6 +4700,14 @@
"node": ">=10"
}
},
+ "node_modules/cronstrue": {
+ "version": "2.47.0",
+ "resolved": "https://registry.npmjs.org/cronstrue/-/cronstrue-2.47.0.tgz",
+ "integrity": "sha512-fnFwJy7zslTEz6h7O7BkwgHNBvuuPmkhAYKqPDxK5mBQLz2nG08T9afbnjm+yrvcc/wxrd+otaVSnoXT9ulUOw==",
+ "bin": {
+ "cronstrue": "bin/cli.js"
+ }
+ },
"node_modules/cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
diff --git a/platypush/backend/http/webapp/package.json b/platypush/backend/http/webapp/package.json
index 851845dbc..567899615 100644
--- a/platypush/backend/http/webapp/package.json
+++ b/platypush/backend/http/webapp/package.json
@@ -9,8 +9,9 @@
},
"dependencies": {
"@fortawesome/fontawesome-free": "^6.1.1",
- "core-js": "^3.31.1",
"axios": "^1.6.0",
+ "core-js": "^3.31.1",
+ "cronstrue": "^2.47.0",
"highlight.js": "^11.9.0",
"lato-font": "^3.0.0",
"mitt": "^2.1.0",
diff --git a/platypush/backend/http/webapp/src/components/elements/CronEditor.vue b/platypush/backend/http/webapp/src/components/elements/CronEditor.vue
new file mode 100644
index 000000000..a67ce244f
--- /dev/null
+++ b/platypush/backend/http/webapp/src/components/elements/CronEditor.vue
@@ -0,0 +1,179 @@
+
+
+
+
+
+
+