observeAppelController:function (appelController) {
appelController.addListener(
this.Constantes.eventId.actionEditeAbsence,
- function (dataAppelLigne, appelEtId, columnIndexPlageHoraire) {
+ function (dataAppelLigne, appelEtId, columnIndexPlageHoraire, isEleveDansStructureAppel) {
if (this.getEtatTypeAbsence(this.Modele.libelle.retardDepart)) {
- this.actionEditionRetardDepart(dataAppelLigne, appelEtId, columnIndexPlageHoraire);
+ this.actionEditionRetardDepart(dataAppelLigne, appelEtId, columnIndexPlageHoraire, isEleveDansStructureAppel);
}
else {
- this.actionEditionAbsence(dataAppelLigne, appelEtId, columnIndexPlageHoraire);
+ this.actionEditionAbsence(dataAppelLigne, appelEtId, columnIndexPlageHoraire, isEleveDansStructureAppel);
}
},
this
observeAbsencesView:function (absencesView) {
absencesView.addListener(
this.Constantes.eventId.actionEditeAbsence,
- function (dataAppelLigne, appelEtId, columnIndexPlageHoraire) {
+ function (dataAppelLigne, appelEtId, columnIndexPlageHoraire, isEleveDansStructureAppel) {
if (this.getEtatTypeAbsence(this.Modele.libelle.retardDepart)) {
- this.actionEditionRetardDepart(dataAppelLigne, appelEtId, columnIndexPlageHoraire);
+ this.actionEditionRetardDepart(dataAppelLigne, appelEtId, columnIndexPlageHoraire, isEleveDansStructureAppel);
}
else {
- this.actionEditionAbsence(dataAppelLigne, appelEtId, columnIndexPlageHoraire);
+ this.actionEditionAbsence(dataAppelLigne, appelEtId, columnIndexPlageHoraire, isEleveDansStructureAppel);
}
},
this
absencesView.addListener(
this.Constantes.eventId.actionModifieDetailsRetardDepart,
- function (dataAppelLigne, appelEtId, retradDepartInfo, columnIndex) {
- var modifInfo = {
+ function (dataAppelLigne, appelEtId, retradDepartInfo, columnIndex, isEleveDansStructureAppel) {
+ var creationOuModifInfo = {
retardDepart:retradDepartInfo
};
this.actionModifieAbsence(
dataAppelLigne,
appelEtId,
- modifInfo,
- columnIndex
+ creationOuModifInfo,
+ columnIndex,
+ isEleveDansStructureAppel
);
},
this
)
},
- actionEditionAbsence:function (dataAppelLigne, appelEtId, columnIndexPlageHoraire) {
- var modifInfo = {
+ actionEditionAbsence:function (dataAppelLigne, appelEtId, columnIndexPlageHoraire, isEleveDansStructureAppel) {
+ var creationOuModifInfo = {
principales:{
motifId:this.motifSelectionneInfo.id,
couleurMotif:this.motifSelectionneInfo.couleur,
}
};
- this.actionModifieAbsence(dataAppelLigne, appelEtId, modifInfo, columnIndexPlageHoraire);
+ this.actionModifieAbsence(dataAppelLigne, appelEtId, creationOuModifInfo, columnIndexPlageHoraire, isEleveDansStructureAppel);
},
/**
this.typeAbsence = option;
},
- actionModifieAbsence:function (dataAppelLigne, appelEtId, modifInfo, columnIndexPlageHoraire) {
+ actionModifieAbsence:function (dataAppelLigne, appelEtId, creationOuModifInfo, columnIndexPlageHoraire, isEleveDansStructureAppel) {
// Pas d'appel
if (appelEtId === 'appel0') {
return
}
- this.modifieProprietesAbsence(dataAppelLigne, appelEtId, modifInfo, columnIndexPlageHoraire);
+ this.modifieProprietesAbsence(dataAppelLigne, appelEtId, creationOuModifInfo, columnIndexPlageHoraire, isEleveDansStructureAppel);
},
- modifieProprietesAbsence:function (dataAppelLigne, appelEtId, modifInfo, columnIndexPlageHoraire) {
+ modifieProprietesAbsence:function (dataAppelLigne, appelEtId, creationOuModifInfo, columnIndexPlageHoraire, isEleveDansStructureAppel) {
var appelId = appelEtId.substring(5, appelEtId.length); // Note on supprime le préfixe 'appel'
var plageId = this.storeGrilleHoraire.getAt(columnIndexPlageHoraire - 1).data.id;
+ // récupération de l'absence qui se trouve dans la cellule, si elle existe
var absenceJournee = dataAppelLigne.get('plage' + plageId);
var absenceSurAppel = dataAppelLigne.get(appelEtId);
// dans la pop-up de saisie de retard/départ avec absence
// (pas de retard ni de départ) , on ne fait rien.
if ((!absenceSurAppel || (absenceSurAppel && absenceSurAppel.aSupprimer)) &&
- (modifInfo.retardDepart && modifInfo.retardDepart.absence)
+ (creationOuModifInfo.retardDepart && creationOuModifInfo.retardDepart.absence)
) {
return;
}
+ // Si une absence existe dans la cellule, qu'elle n'est pas en cours de création
+ // et que l'élève pour lequel on fait la modification
+ // n'appartient pas à la classe de l'appel affiché, on ne fait rien
+ if (absenceSurAppel && !dataAppelLigne.dirty && !isEleveDansStructureAppel){
+ return;
+ }
+
if (!absenceSurAppel) {
absenceSurAppel = {}; // Création d'une nouvelle absence
}
delete absenceSurAppel.aSupprimer;
}
- Ext.applyIf(absenceSurAppel, { // Valeurs par défaut si nécessaire
+ Ext.applyIf(absenceSurAppel, { // Valeurs par défaut
depart:false,
retard:false,
absence:true,
aSupprimer:undefined
});
- var absenceModifiee = {};
-
- this.copieProprietes(absenceSurAppel, absenceModifiee);
+ var absenceEnCreationOuModification = {};
- if (modifInfo.principales) {
- absenceModifiee.motifId = modifInfo.principales.motifId;
- absenceModifiee.couleur = modifInfo.principales.couleurMotif;
- absenceModifiee.libelle = modifInfo.principales.libelle;
- absenceModifiee.valable = modifInfo.principales.valable;
- absenceModifiee.nonValable = modifInfo.principales.nonValable;
- absenceModifiee.previsionnel = modifInfo.principales.previsionnel;
- }
-
- if (modifInfo.retardDepart) {
- absenceModifiee.depart = modifInfo.retardDepart.depart;
- absenceModifiee.retard = modifInfo.retardDepart.retard;
- absenceModifiee.absence = modifInfo.retardDepart.absence;
- absenceModifiee.commentaireDepart = modifInfo.retardDepart.commentaireDepart;
- absenceModifiee.commentaireArrivee = modifInfo.retardDepart.commentaireArrivee;
- absenceModifiee.heureArrivee = modifInfo.retardDepart.heureArrivee;
- absenceModifiee.heureDepart = modifInfo.retardDepart.heureDepart;
- }
-
- // Si c'est un retard/départ, il n'est que valable.
- // l'intérface ne controlle pas le type choisie mais
- // le retard/départ sera automatiquement transformé en 'valable'
- if (
- modifInfo.retardDepart ||
- (
- absenceSurAppel &&
- (
- absenceSurAppel.retard ||
- absenceSurAppel.depart
- )
- )
- ) {
- absenceModifiee.valable = true;
- absenceModifiee.nonValable = false;
- absenceModifiee.previsionnel = false;
- }
+ // copie le contenu d''absenceSurAppel' dans 'absenceEnCreationOuModification'
+ this.copieProprietes(absenceSurAppel, absenceEnCreationOuModification);
+ this.remplitAbsenceEnCreationOuModification(absenceEnCreationOuModification, creationOuModifInfo);
+ this.passeRetardDepartEnValable(creationOuModifInfo, absenceSurAppel, absenceEnCreationOuModification);
if (absenceJournee) {
- absenceModifiee.id = absenceJournee.id;
+ absenceEnCreationOuModification.id = absenceJournee.id;
//si l'absence qu'on modifie était prévisionnelle, cela veut dire qu'on est en train
//de la constater. En la constatant, elle va être liée à l'appel affiché.
if (absenceJournee.previsionnel){
dataAppelLigne.set('plage' + plageId, '');
}
}
- dataAppelLigne.set(appelEtId, absenceModifiee);
+
+ dataAppelLigne.set(appelEtId, absenceEnCreationOuModification);
},
copieProprietes:function (absenceActuelle, absenceModifiee) {
delete absenceModifiee['class'];
},
+ remplitAbsenceEnCreationOuModification: function(absenceEnCreationOuModification, creationOuModifInfo){
+ if (creationOuModifInfo.principales) {
+ absenceEnCreationOuModification.motifId = creationOuModifInfo.principales.motifId;
+ absenceEnCreationOuModification.couleur = creationOuModifInfo.principales.couleurMotif;
+ absenceEnCreationOuModification.libelle = creationOuModifInfo.principales.libelle;
+ absenceEnCreationOuModification.valable = creationOuModifInfo.principales.valable;
+ absenceEnCreationOuModification.nonValable = creationOuModifInfo.principales.nonValable;
+ absenceEnCreationOuModification.previsionnel = creationOuModifInfo.principales.previsionnel;
+ }
+
+ if (creationOuModifInfo.retardDepart) {
+ absenceEnCreationOuModification.depart = creationOuModifInfo.retardDepart.depart;
+ absenceEnCreationOuModification.retard = creationOuModifInfo.retardDepart.retard;
+ absenceEnCreationOuModification.absence = creationOuModifInfo.retardDepart.absence;
+ absenceEnCreationOuModification.commentaireDepart = creationOuModifInfo.retardDepart.commentaireDepart;
+ absenceEnCreationOuModification.commentaireArrivee = creationOuModifInfo.retardDepart.commentaireArrivee;
+ absenceEnCreationOuModification.heureArrivee = creationOuModifInfo.retardDepart.heureArrivee;
+ absenceEnCreationOuModification.heureDepart = creationOuModifInfo.retardDepart.heureDepart;
+ }
+
+ return absenceEnCreationOuModification;
+ },
+
+ passeRetardDepartEnValable: function(creationOuModifInfo, absenceSurAppel, absenceEnCreationOuModification){
+ // Si c'est un retard/départ, il n'est que valable.
+ // l'interface ne controlle pas le type choisi mais
+ // le retard/départ sera automatiquement transformé en 'valable'
+ if (creationOuModifInfo.retardDepart ||
+ (absenceSurAppel && (absenceSurAppel.retard || absenceSurAppel.depart))
+ ) {
+ absenceEnCreationOuModification.valable = true;
+ absenceEnCreationOuModification.nonValable = false;
+ absenceEnCreationOuModification.previsionnel = false;
+ }
+ },
+
/**
* Supprime une absence (appel ligne) dans le store
* Note: l'objet qui décrit l'absence est remplacé par un objet qui ne
{name:'eleveId', mapping:'eleve.idEleve'},
{name:'eleveNom', mapping:'eleve.nom'},
+ {name:'eleveStructureIds', mapping:'eleve.structureIds'},
{name:'edtInfo', mapping:'eleve.edtInfo'},
{name:Constantes.id.storeAppelDataIndexVide}
];