- 1 :
/**
- 2 :
* @module EventView/Parts/Reccursivity
- 3 :
*
- 4 :
*/
- 5 :
import { EventView } from '../event_view.js';
- 6 :
import { FakePart, Parts } from './parts.js';
- 7 :
- 8 :
/**
- 9 :
* @class
- 10 :
* @classdesc Gère la partie récursivité d'un événement.
- 11 :
* @extends FakePart
- 12 :
* @frommodule EventView/Parts
- 13 :
*/
- 14 :
export class RecPart extends FakePart {
- 15 :
/**
- 16 :
*
- 17 :
* @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.
- 18 :
* @param {external:jQuery} fake Champ qui contiendra les données visuels de la récursivité.
- 19 :
*/
- 20 :
constructor(original, fake) {
- 21 :
super(original, fake, Parts.MODE.change);
- 22 :
- 23 :
this._$fakeField.tooltip({
- 24 :
content: () =>
- 25 :
this._$fakeField.attr('title') ||
- 26 :
this._$fakeField.attr('data-original-title'),
- 27 :
});
- 28 :
- 29 :
this._$fakeField.removeAttr('disabled').removeClass('disabled');
- 30 :
}
- 31 :
- 32 :
/**
- 33 :
* Intialise la partie.
- 34 :
* @override
- 35 :
* @param {*} event Evènement du plugin `Calendar`
- 36 :
*/
- 37 :
init(event) {}
- 38 :
- 39 :
/**
- 40 :
* Met à jours le champ
- 41 :
* @override
- 42 :
* @param {string} val Nouvelle valeur du champ
- 43 :
*/
- 44 :
onUpdate(val) {
- 45 :
this._$field.val(val).change();
- 46 :
}
- 47 :
- 48 :
/**
- 49 :
* Action qui sera appelé lorsque le champ changera de valeur.
- 50 :
* @override
- 51 :
* @param {Event} e Données de l'évènement
- 52 :
*/
- 53 :
onChange(e) {
- 54 :
this.onUpdate(e.currentTarget.value);
- 55 :
//récupère la première date
- 56 :
let firstdate = EventView.INSTANCE.parts.date.date_start;
- 57 :
//récupère la fréquence dayli, weekly, monthly, yearly
- 58 :
let freq = e.currentTarget.value;
- 59 :
let endprop;
- 60 :
let end = true;
- 61 :
//calcule
- 62 :
switch (freq) {
- 63 :
case RecPart.frequency.daily:
- 64 :
endprop = firstdate.add(3, 'M');
- 65 :
//destrucs
- 66 :
break;
- 67 :
case RecPart.frequency.weekly:
- 68 :
//destrucs
- 69 :
endprop = firstdate.add(6, 'M');
- 70 :
break;
- 71 :
case RecPart.frequency.monthly:
- 72 :
//destrucs
- 73 :
endprop = firstdate.add(1, 'y');
- 74 :
break;
- 75 :
case RecPart.frequency.yearly:
- 76 :
end = false;
- 77 :
//destrucs
- 78 :
break;
- 79 :
default:
- 80 :
end = false;
- 81 :
break;
- 82 :
}
- 83 :
if (end) {
- 84 :
//propose le champ
- 85 :
$('#edit-recurrence-enddate').val(endprop.format('DD/MM/YYYY'));
- 86 :
// met date cochée par défault
- 87 :
$('#edit-recurrence-repeat-until').prop('checked', true);
- 88 :
} else {
- 89 :
$('#edit-recurrence-enddate').val(null);
- 90 :
$('#edit-recurrence-repeat-forever').prop('checked', true);
- 91 :
}
- 92 :
}
- 93 :
- 94 :
/**
- 95 :
* Libère les données qui doivent être libérés.
- 96 :
*/
- 97 :
destroy() {
- 98 :
this._$fakeField.tooltip('destroy');
- 99 :
}
- 100 :
}
- 101 :
/**
- 102 :
* @enum {string}
- 103 :
*/
- 104 :
RecPart.frequency = {
- 105 :
daily: 'DAILY',
- 106 :
weekly: 'WEEKLY',
- 107 :
monthly: 'MONTHLY',
- 108 :
yearly: 'YEARLY',
- 109 :
};