/**
* @module EventView/Parts/Reccursivity
*
*/
import { EventView } from '../event_view.js';
import { FakePart, Parts } from './parts.js';
/**
* @class
* @classdesc Gère la partie récursivité d'un événement.
* @extends FakePart
* @frommodule EventView/Parts
*/
export class RecPart extends FakePart {
/**
*
* @param {external:jQuery} original Champ qui contiendra les données formattés du champs visuel. Sera utiliser pour la sauvegarde des données de l'évènement.
* @param {external:jQuery} fake Champ qui contiendra les données visuels de la récursivité.
*/
constructor(original, fake) {
super(original, fake, Parts.MODE.change);
this._$fakeField.tooltip({
content: () =>
this._$fakeField.attr('title') ||
this._$fakeField.attr('data-original-title'),
});
this._$fakeField.removeAttr('disabled').removeClass('disabled');
}
/**
* Intialise la partie.
* @override
* @param {*} event Evènement du plugin `Calendar`
*/
init(event) {}
/**
* Met à jours le champ
* @override
* @param {string} val Nouvelle valeur du champ
*/
onUpdate(val) {
this._$field.val(val).change();
}
/**
* Action qui sera appelé lorsque le champ changera de valeur.
* @override
* @param {Event} e Données de l'évènement
*/
onChange(e) {
this.onUpdate(e.currentTarget.value);
//récupère la première date
let firstdate = EventView.INSTANCE.parts.date.date_start;
//récupère la fréquence dayli, weekly, monthly, yearly
let freq = e.currentTarget.value;
let endprop;
let end = true;
//calcule
switch (freq) {
case RecPart.frequency.daily:
endprop = firstdate.add(3, 'M');
//destrucs
break;
case RecPart.frequency.weekly:
//destrucs
endprop = firstdate.add(6, 'M');
break;
case RecPart.frequency.monthly:
//destrucs
endprop = firstdate.add(1, 'y');
break;
case RecPart.frequency.yearly:
end = false;
//destrucs
break;
default:
end = false;
break;
}
if (end) {
//propose le champ
$('#edit-recurrence-enddate').val(endprop.format('DD/MM/YYYY'));
// met date cochée par défault
$('#edit-recurrence-repeat-until').prop('checked', true);
} else {
$('#edit-recurrence-enddate').val(null);
$('#edit-recurrence-repeat-forever').prop('checked', true);
}
}
/**
* Libère les données qui doivent être libérés.
*/
destroy() {
this._$fakeField.tooltip('destroy');
}
}
/**
* @enum {string}
*/
RecPart.frequency = {
daily: 'DAILY',
weekly: 'WEEKLY',
monthly: 'MONTHLY',
yearly: 'YEARLY',
};