mirror of
https://github.com/tenrok/vue-cron-editor-bootstrap.git
synced 2026-05-15 11:59:45 +03:00
demo
This commit is contained in:
@@ -1,2 +1,3 @@
|
||||
node_modules
|
||||
/demo
|
||||
/dist
|
||||
|
||||
@@ -22,4 +22,5 @@ yarn-error.log*
|
||||
node_modules
|
||||
|
||||
# Output directories
|
||||
/demo
|
||||
/dist
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
[](https://github.com/karoletrych/vue-cron-editor/actions)
|
||||
|
||||
# vue-cron-editor-bootstrap
|
||||
|
||||
VueCronEditor is a component library built with Vue and Bootstrap-Vue allowing for easier editing of cron expressions.
|
||||
@@ -9,36 +7,38 @@ Inspired by https://github.com/karoletrych/vue-cron-editor
|
||||
|
||||
# Requirements
|
||||
|
||||
- Vue ^2.0
|
||||
- Bootstrap-Vue ^2.14.0
|
||||
- Vue ^2.0
|
||||
- Bootstrap-Vue ^2.14.0
|
||||
|
||||
# Installation
|
||||
|
||||
- vue-cron-editor-bootstrap
|
||||
- vue-cron-editor-bootstrap
|
||||
|
||||
```
|
||||
npm install vue-cron-editor-bootstrap --save
|
||||
npm install @tenrok/vue-cron-editor-bootstrap --save
|
||||
```
|
||||
|
||||
# Usage
|
||||
|
||||
```
|
||||
<template>
|
||||
<VueCronEditorBootstrap v-model="cronExpression"/>
|
||||
<VueCronEditorBootstrap v-model="cronExpression" />
|
||||
{{cronExpression}}
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import VueCronEditorBootstrap from 'vue-cron-editor-bootstrap';
|
||||
import VueCronEditorBootstrap from '@tenrok/vue-cron-editor-bootstrap';
|
||||
|
||||
export default {
|
||||
name: 'App',
|
||||
components: {
|
||||
VueCronEditorBootstrap
|
||||
},
|
||||
data: () => ({
|
||||
data() {
|
||||
return {
|
||||
cronExpression: "*/1 * * * *"
|
||||
}),
|
||||
}
|
||||
},
|
||||
};
|
||||
</script>
|
||||
```
|
||||
@@ -57,13 +57,13 @@ The language of the component can be selected with the `locale` prop.
|
||||
<VueCronEditorBootstrap
|
||||
v-model="expression"
|
||||
locale="pl"
|
||||
></VueCronEditorBootstrap>
|
||||
/>
|
||||
```
|
||||
|
||||
Currently supported languages:
|
||||
|
||||
- en
|
||||
- pl
|
||||
- en
|
||||
- pl
|
||||
|
||||
Custom locales can be provided via a `customLocales` prop:
|
||||
|
||||
@@ -81,7 +81,6 @@ Custom locales can be provided via a `customLocales` prop:
|
||||
onThe: "On the",
|
||||
dayOfEvery: "day, of every",
|
||||
monthsAt: "month(s), at",
|
||||
everyDay: "Every",
|
||||
mon: "Mon",
|
||||
tue: "Tue",
|
||||
wed: "Wed",
|
||||
@@ -89,18 +88,17 @@ Custom locales can be provided via a `customLocales` prop:
|
||||
fri: "Fri",
|
||||
sat: "Sat",
|
||||
sun: "Sun",
|
||||
hasToBeBetween: "Has to be between",
|
||||
and: "and",
|
||||
minutes: "MINUTES",
|
||||
hourly: "HOURLY",
|
||||
daily: "DAILY",
|
||||
weekly: "WEEKLY",
|
||||
monthly: "MONTHLY",
|
||||
advanced: "ADVANCED",
|
||||
cronExpression: "cron expression:"
|
||||
cronExpression: "cron expression:",
|
||||
onlyOn: "Only on"
|
||||
}
|
||||
}"
|
||||
></VueCronEditorBootstrap>
|
||||
/>
|
||||
```
|
||||
|
||||
# Contributing
|
||||
|
||||
Generated
+6
-6
@@ -11252,9 +11252,9 @@
|
||||
"integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
|
||||
},
|
||||
"node_modules/webpack": {
|
||||
"version": "5.74.0",
|
||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz",
|
||||
"integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==",
|
||||
"version": "5.75.0",
|
||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.75.0.tgz",
|
||||
"integrity": "sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@types/eslint-scope": "^3.7.3",
|
||||
@@ -20290,9 +20290,9 @@
|
||||
"integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
|
||||
},
|
||||
"webpack": {
|
||||
"version": "5.74.0",
|
||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz",
|
||||
"integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==",
|
||||
"version": "5.75.0",
|
||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.75.0.tgz",
|
||||
"integrity": "sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/eslint-scope": "^3.7.3",
|
||||
|
||||
+15
-11
@@ -2,16 +2,26 @@
|
||||
"name": "@tenrok/vue-cron-editor-bootstrap",
|
||||
"version": "0.2.1",
|
||||
"private": false,
|
||||
"main": "dist/vueCronEditorBootstrap.umd.js",
|
||||
"module": "dist/vueCronEditorBootstrap.esm.js",
|
||||
"unpkg": "dist/vueCronEditorBootstrap.min.js",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/alexmfreitas/vue-cron-editor-bootstrap.git"
|
||||
},
|
||||
"license": "MIT",
|
||||
"author": "alexmfreitas",
|
||||
"main": "dist/vue-cron-editor-bootstrap.umd.js",
|
||||
"unpkg": "dist/vue-cron-editor-bootstrap.min.js",
|
||||
"module": "dist/vue-cron-editor-bootstrap.esm.js",
|
||||
"browser": {
|
||||
"./sfc": "src/VueCronEditorBootstrap.vue"
|
||||
},
|
||||
"files": [
|
||||
"dist/vue-cron-editor-bootstrap.*"
|
||||
],
|
||||
"scripts": {
|
||||
"build:npm": "vue-cli-service build --target lib --name vueCronEditorBootstrap src/VueCronEditorBootstrap.vue",
|
||||
"build": "vue-cli-service build --target lib src/VueCronEditorBootstrap.vue",
|
||||
"build:demo": "vue-cli-service build",
|
||||
"lint": "vue-cli-service lint --fix",
|
||||
"serve": "vue-cli-service serve"
|
||||
"serve": "vue-cli-service serve --open"
|
||||
},
|
||||
"dependencies": {
|
||||
"core-js": "^3.26.0",
|
||||
@@ -36,11 +46,5 @@
|
||||
},
|
||||
"peerDependencies": {
|
||||
"bootstrap-vue": "^2.23.1"
|
||||
},
|
||||
"author": "alexmfreitas",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/alexmfreitas/vue-cron-editor-bootstrap.git"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
<b-tab :value="0" :title="translate('minutes')" class="minutes-tab">
|
||||
<b-row>
|
||||
<b-col class="d-flex align-items-center">
|
||||
<span class="mr-2">{{ translate('every') }}</span>
|
||||
<span class="mr-1">{{ translate('every') }}</span>
|
||||
<b-form-input
|
||||
v-model="editorData.minuteInterval"
|
||||
type="number"
|
||||
min="1"
|
||||
max="59"
|
||||
class="mr-2"
|
||||
class="mr-1"
|
||||
style="width: 80px"
|
||||
/>
|
||||
<span>{{ translate('mminutes') }}</span>
|
||||
@@ -19,16 +19,16 @@
|
||||
<b-tab :value="1" :title="translate('hourly')" class="hourly-tab">
|
||||
<b-row>
|
||||
<b-col class="d-flex align-items-center">
|
||||
<span class="mr-2">{{ translate('every') }}</span>
|
||||
<span class="mr-1">{{ translate('every') }}</span>
|
||||
<b-form-input
|
||||
v-model="editorData.hourInterval"
|
||||
type="number"
|
||||
min="1"
|
||||
max="24"
|
||||
class="mr-2"
|
||||
class="mr-1"
|
||||
style="width: 80px"
|
||||
/>
|
||||
<span class="mr-2">{{ translate('hoursOnMinute') }}</span>
|
||||
<span class="mr-1">{{ translate('hoursOnMinute') }}</span>
|
||||
<b-form-input v-model="editorData.minutes" type="number" min="0" max="59" style="width: 80px" />
|
||||
</b-col>
|
||||
</b-row>
|
||||
@@ -36,38 +36,38 @@
|
||||
<b-tab :value="2" :title="translate('daily')" class="daily-tab">
|
||||
<b-row>
|
||||
<b-col class="d-flex align-items-center">
|
||||
<span class="mr-2">{{ translate('every') }}</span>
|
||||
<b-form-input v-model="editorData.dayInterval" type="number" class="mr-2" style="width: 80px" />
|
||||
<span class="mr-2">{{ translate('daysAt') }}</span>
|
||||
<b-form-timepicker :value="dateTime" :hour12="false" style="width: auto" @input="setDateTime" />
|
||||
<span class="mr-1">{{ translate('every') }}</span>
|
||||
<b-form-input v-model="editorData.dayInterval" type="number" class="mr-1" style="width: 80px" />
|
||||
<span class="mr-1">{{ translate('daysAt') }}</span>
|
||||
<b-form-timepicker :value="dateTime" :hour12="false" now-button style="width: auto" @input="setDateTime" />
|
||||
</b-col>
|
||||
</b-row>
|
||||
</b-tab>
|
||||
<b-tab :value="3" :title="translate('weekly')" class="weekly-tab">
|
||||
<b-row>
|
||||
<b-col class="d-flex align-items-center">
|
||||
<span class="mr-2">{{ translate('every') }}</span>
|
||||
<b-form-checkbox v-model="editorData.days" value="0" class="mr-2">{{ translate('sun') }}</b-form-checkbox>
|
||||
<b-form-checkbox v-model="editorData.days" value="1" class="mr-2">{{ translate('mon') }}</b-form-checkbox>
|
||||
<b-form-checkbox v-model="editorData.days" value="2" class="mr-2">{{ translate('tue') }}</b-form-checkbox>
|
||||
<b-form-checkbox v-model="editorData.days" value="3" class="mr-2">{{ translate('wed') }}</b-form-checkbox>
|
||||
<b-form-checkbox v-model="editorData.days" value="4" class="mr-2">{{ translate('thu') }}</b-form-checkbox>
|
||||
<b-form-checkbox v-model="editorData.days" value="5" class="mr-2">{{ translate('fri') }}</b-form-checkbox>
|
||||
<b-form-checkbox v-model="editorData.days" value="6" class="mr-2">{{ translate('sat') }}</b-form-checkbox>
|
||||
<span class="mr-2">{{ translate('at') }}</span>
|
||||
<b-form-timepicker :value="dateTime" :hour12="false" style="width: auto" @input="setDateTime" />
|
||||
<span class="mr-3">{{ translate('onlyOn') }}</span>
|
||||
<b-form-checkbox v-model="editorData.days" value="1" class="mr-3">{{ translate('mon') }}</b-form-checkbox>
|
||||
<b-form-checkbox v-model="editorData.days" value="2" class="mr-3">{{ translate('tue') }}</b-form-checkbox>
|
||||
<b-form-checkbox v-model="editorData.days" value="3" class="mr-3">{{ translate('wed') }}</b-form-checkbox>
|
||||
<b-form-checkbox v-model="editorData.days" value="4" class="mr-3">{{ translate('thu') }}</b-form-checkbox>
|
||||
<b-form-checkbox v-model="editorData.days" value="5" class="mr-3">{{ translate('fri') }}</b-form-checkbox>
|
||||
<b-form-checkbox v-model="editorData.days" value="6" class="mr-3">{{ translate('sat') }}</b-form-checkbox>
|
||||
<b-form-checkbox v-model="editorData.days" value="0" class="mr-3">{{ translate('sun') }}</b-form-checkbox>
|
||||
<span class="mr-1">{{ translate('at') }}</span>
|
||||
<b-form-timepicker :value="dateTime" :hour12="false" now-button style="width: auto" @input="setDateTime" />
|
||||
</b-col>
|
||||
</b-row>
|
||||
</b-tab>
|
||||
<b-tab :value="4" :title="translate('monthly')" class="monthly-tab">
|
||||
<b-row>
|
||||
<b-col class="d-flex align-items-center">
|
||||
<span class="mr-2">{{ translate('onThe') }}</span>
|
||||
<b-form-input v-model="editorData.day" type="number" class="mr-2" style="width: 80px" />
|
||||
<span class="mr-2">{{ translate('dayOfEvery') }}</span>
|
||||
<b-form-input v-model="editorData.monthInterval" type="number" class="mr-2" style="width: 80px" />
|
||||
<span class="mr-2">{{ translate('monthsAt') }}</span>
|
||||
<b-form-timepicker :value="dateTime" :hour12="false" style="width: auto" @input="setDateTime" />
|
||||
<span class="mr-1">{{ translate('onThe') }}</span>
|
||||
<b-form-input v-model="editorData.day" type="number" min="1" max="31" class="mr-1" style="width: 80px" />
|
||||
<span class="mr-1">{{ translate('dayOfEvery') }}</span>
|
||||
<b-form-input v-model="editorData.monthInterval" type="number" min="1" class="mr-1" style="width: 80px" />
|
||||
<span class="mr-1">{{ translate('monthsAt') }}</span>
|
||||
<b-form-timepicker :value="dateTime" :hour12="false" now-button style="width: auto" @input="setDateTime" />
|
||||
</b-col>
|
||||
</b-row>
|
||||
</b-tab>
|
||||
|
||||
+18
-14
@@ -60,13 +60,17 @@ export const buildExpression = (event: TabUpdatedEvent): string => {
|
||||
}
|
||||
|
||||
if (event.type === 'weekly') {
|
||||
return (
|
||||
`${event.minutes} ${event.hours} * * ` +
|
||||
`${event.days
|
||||
.filter(d => d)
|
||||
.sort()
|
||||
.join()}`
|
||||
)
|
||||
if ([0, 7].includes(event.days.length)) {
|
||||
return `${event.minutes} ${event.hours} * * *`
|
||||
} else {
|
||||
return (
|
||||
`${event.minutes} ${event.hours} * * ` +
|
||||
`${event.days
|
||||
.filter(d => d)
|
||||
.sort()
|
||||
.join()}`
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
if (event.type === 'monthly') {
|
||||
@@ -86,14 +90,14 @@ export const parseExpression = (expression: string): TabUpdatedEvent => {
|
||||
if (expression!.split(' ').length != 5) {
|
||||
return {
|
||||
type: 'advanced',
|
||||
cronExpression: expression
|
||||
cronExpression: expression,
|
||||
}
|
||||
}
|
||||
|
||||
if ((groups = expression.match(/^\*\/(\d+) \* \* \* \*$/))) {
|
||||
return {
|
||||
type: 'minutes',
|
||||
minuteInterval: Number(groups[1])
|
||||
minuteInterval: Number(groups[1]),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -101,7 +105,7 @@ export const parseExpression = (expression: string): TabUpdatedEvent => {
|
||||
return {
|
||||
type: 'hourly',
|
||||
minutes: Number(groups[1]),
|
||||
hourInterval: Number(groups[2])
|
||||
hourInterval: Number(groups[2]),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -110,7 +114,7 @@ export const parseExpression = (expression: string): TabUpdatedEvent => {
|
||||
type: 'daily',
|
||||
minutes: Number(groups[1]),
|
||||
hours: Number(groups[2]),
|
||||
dayInterval: Number(groups[3])
|
||||
dayInterval: Number(groups[3]),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,7 +130,7 @@ export const parseExpression = (expression: string): TabUpdatedEvent => {
|
||||
.slice(optionalDaysBeginIndex, matchesEndIndex)
|
||||
.map(d => d && d.replace(/,/, ''))
|
||||
.filter(d => d)
|
||||
)
|
||||
),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -136,12 +140,12 @@ export const parseExpression = (expression: string): TabUpdatedEvent => {
|
||||
minutes: Number(groups[1]),
|
||||
hours: Number(groups[2]),
|
||||
day: Number(groups[3]),
|
||||
monthInterval: Number(groups[4])
|
||||
monthInterval: Number(groups[4]),
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
type: 'advanced',
|
||||
cronExpression: expression
|
||||
cronExpression: expression,
|
||||
}
|
||||
}
|
||||
|
||||
+11
-9
@@ -8,7 +8,7 @@ export const defaultLocales: Record<string, Record<string, string>> = {
|
||||
onThe: 'On the',
|
||||
dayOfEvery: 'day, of every',
|
||||
monthsAt: 'month(s), at',
|
||||
everyDay: 'Every',
|
||||
// everyDay: 'Every',
|
||||
mon: 'Mon',
|
||||
tue: 'Tue',
|
||||
wed: 'Wed',
|
||||
@@ -16,15 +16,16 @@ export const defaultLocales: Record<string, Record<string, string>> = {
|
||||
fri: 'Fri',
|
||||
sat: 'Sat',
|
||||
sun: 'Sun',
|
||||
hasToBeBetween: 'Has to be between',
|
||||
and: 'and',
|
||||
// hasToBeBetween: 'Has to be between',
|
||||
// and: 'and',
|
||||
minutes: 'MINUTES',
|
||||
hourly: 'HOURLY',
|
||||
daily: 'DAILY',
|
||||
weekly: 'WEEKLY',
|
||||
monthly: 'MONTHLY',
|
||||
advanced: 'ADVANCED',
|
||||
cronExpression: 'cron expression:'
|
||||
cronExpression: 'cron expression:',
|
||||
onlyOn: 'Only on',
|
||||
},
|
||||
pl: {
|
||||
every: 'Co',
|
||||
@@ -35,7 +36,7 @@ export const defaultLocales: Record<string, Record<string, string>> = {
|
||||
onThe: '',
|
||||
dayOfEvery: 'dzień miesiąca, co',
|
||||
monthsAt: 'miesięcy, o godzinie',
|
||||
everyDay: 'W każdy',
|
||||
// everyDay: 'W każdy',
|
||||
mon: 'Pon',
|
||||
tue: 'Wt',
|
||||
wed: 'Śr',
|
||||
@@ -43,16 +44,17 @@ export const defaultLocales: Record<string, Record<string, string>> = {
|
||||
fri: 'Pt',
|
||||
sat: 'So',
|
||||
sun: 'Nie',
|
||||
hasToBeBetween: 'Wymagana wartość pomiędzy',
|
||||
and: 'i',
|
||||
// hasToBeBetween: 'Wymagana wartość pomiędzy',
|
||||
// and: 'i',
|
||||
minutes: 'Minuty',
|
||||
hourly: 'Godziny',
|
||||
daily: 'Dni',
|
||||
weekly: 'Tygodnie',
|
||||
monthly: 'Miesiące',
|
||||
advanced: 'Zaawansowane',
|
||||
cronExpression: 'Wyrażenie cron:'
|
||||
}
|
||||
cronExpression: 'Wyrażenie cron:',
|
||||
onlyOn: 'Co',
|
||||
},
|
||||
}
|
||||
|
||||
export function createI18n(
|
||||
|
||||
+5
-2
@@ -1,4 +1,7 @@
|
||||
const isBuildLib = (process.env.npm_lifecycle_script || '').indexOf('--target lib') > 0
|
||||
|
||||
module.exports = {
|
||||
publicPath: '/vue-cron-editor-bootstrap',
|
||||
publicPath: '',
|
||||
outputDir: isBuildLib ? 'dist' : 'demo',
|
||||
css: { extract: false },
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user