86 lines
3.7 KiB
JavaScript
86 lines
3.7 KiB
JavaScript
import $ from 'jquery';
|
|
import '../../utils/cron-ui';
|
|
import { translations } from 'grav-config';
|
|
|
|
export default class CronField {
|
|
constructor() {
|
|
this.items = $();
|
|
|
|
$('[data-grav-field="cron"]').each((index, cron) => this.addCron(cron));
|
|
$('body').on('mutation._grav', this._onAddedNodes.bind(this));
|
|
}
|
|
|
|
addCron(cron) {
|
|
cron = $(cron);
|
|
this.items = this.items.add(cron);
|
|
|
|
cron.find('.cron-selector').each((index, container) => {
|
|
container = $(container);
|
|
const input = container.closest('[data-grav-field]').find('input');
|
|
|
|
container.jqCron({
|
|
numeric_zero_pad: true,
|
|
enabled_minute: true,
|
|
multiple_dom: true,
|
|
multiple_month: true,
|
|
multiple_mins: true,
|
|
multiple_dow: true,
|
|
multiple_time_hours: true,
|
|
multiple_time_minutes: true,
|
|
default_period: 'hour',
|
|
default_value: input.val() || '* * * * *',
|
|
no_reset_button: false,
|
|
bind_to: input,
|
|
bind_method: {
|
|
set: function($element, value) {
|
|
$element.val(value);
|
|
}
|
|
},
|
|
texts: {
|
|
en: {
|
|
empty: translations.GRAV_CORE['CRON.EVERY'],
|
|
empty_minutes: translations.GRAV_CORE['CRON.EVERY'],
|
|
empty_time_hours: translations.GRAV_CORE['CRON.EVERY_HOUR'],
|
|
empty_time_minutes: translations.GRAV_CORE['CRON.EVERY_MINUTE'],
|
|
empty_day_of_week: translations.GRAV_CORE['CRON.EVERY_DAY_OF_WEEK'],
|
|
empty_day_of_month: translations.GRAV_CORE['CRON.EVERY_DAY_OF_MONTH'],
|
|
empty_month: translations.GRAV_CORE['CRON.EVERY_MONTH'],
|
|
name_minute: translations.GRAV_CORE['NICETIME.MINUTE'],
|
|
name_hour: translations.GRAV_CORE['NICETIME.HOUR'],
|
|
name_day: translations.GRAV_CORE['NICETIME.DAY'],
|
|
name_week: translations.GRAV_CORE['NICETIME.WEEK'],
|
|
name_month: translations.GRAV_CORE['NICETIME.MONTH'],
|
|
name_year: translations.GRAV_CORE['NICETIME.YEAR'],
|
|
text_period: translations.GRAV_CORE['CRON.TEXT_PERIOD'],
|
|
text_mins: translations.GRAV_CORE['CRON.TEXT_MINS'],
|
|
text_time: translations.GRAV_CORE['CRON.TEXT_TIME'],
|
|
text_dow: translations.GRAV_CORE['CRON.TEXT_DOW'],
|
|
text_month: translations.GRAV_CORE['CRON.TEXT_MONTH'],
|
|
text_dom: translations.GRAV_CORE['CRON.TEXT_DOM'],
|
|
error1: translations.GRAV_CORE['CRON.ERROR1'],
|
|
error2: translations.GRAV_CORE['CRON.ERROR2'],
|
|
error3: translations.GRAV_CORE['CRON.ERROR3'],
|
|
error4: translations.GRAV_CORE['CRON.ERROR4'],
|
|
weekdays: translations.GRAV_CORE['DAYS_OF_THE_WEEK'],
|
|
months: translations.GRAV_CORE['MONTHS_OF_THE_YEAR']
|
|
}
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
_onAddedNodes(event, target/* , record, instance */) {
|
|
let crons = $(target).find('[data-grav-field="cron"]');
|
|
if (!crons.length) { return; }
|
|
|
|
crons.each((index, list) => {
|
|
list = $(list);
|
|
if (!~this.items.index(list)) {
|
|
this.addCron(list);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
export let Instance = new CronField();
|