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 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 ((absenceJournee && !absenceJournee.previsionnel) || (absenceSurAppel && !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}
];
{name:'appelSupprimable', type:'boolean'},
{name:'ouvert', type:'boolean'},
{name:'idAppel', type:'string'},
- {name:'enseignant', type:'string'}
+ {name:'enseignant', type:'string'},
+ {name:'structureConcerneeId', type:'int'}
],
data:dataGrilleHoraire
});
appelModifiable:dataPlageHoraire.get('appelModifiable'),
appelSupprimable:dataPlageHoraire.get('appelSupprimable'),
ouvert:dataPlageHoraire.get('ouvert'),
+ structureConcerneeId:dataPlageHoraire.get('structureConcerneeId'),
temporaire:false
}
}
{name:'idAppel', type:'string'},
{name:'largeur', type:'int'},
{name:'debutAppel', type:'string'},
- {name:'finAppel', type:'string'}
+ {name:'finAppel', type:'string'},
+ {name:'structureConcerneeId', type:'int'}
]
});
appelModifiable:value.appelModifiable,
appelSupprimable:value.appelSupprimable,
ouvert:value.ouvert,
+ structureConcerneeId:value.structureConcerneeId,
temporaire:true
});
}
idAppel:idAppel,
largeur:1,
debutAppel:dataPlageHoraire.get('debut'),
- finAppel:dataPlageHoraire.get('fin')
+ finAppel:dataPlageHoraire.get('fin'),
+ structureConcerneeId:dataPlageHoraire.get('structureConcerneeId')
};
}
else {
idAppel:idAppel,
largeur:1,
debutAppel:dataPlageHoraire.get('debut'),
- finAppel:dataPlageHoraire.get('fin')
+ finAppel:dataPlageHoraire.get('fin'),
+ structureConcerneeId:dataPlageHoraire.get('structureConcerneeId')
};
}
}
this.Constantes.eventId.actionEditeAbsence,
dataLigneAppel,
idAppel,
- indexAppel + 1
+ indexAppel + 1,
+ true
);
/**/
}
var isPrevisionnelle = absenceSurAppelEnCours == "" && absenceSurPlageEnCours != "" && absenceSurPlageEnCours.previsionnel == true;
var isSurAppelTemporaire = absenceSurAppelEnCours == "" && absenceSurPlageEnCours != "" && !absenceSurPlageEnCours.appelId && idAppel == "appelAPPEL_TEMP";
if (isPrevisionnelle || isSurAppelTemporaire || absenceSurAppelEnCours != "" || isVide) {
+ // est-ce l'élève pour lequel on saisit l'absence fait partie de la structure de l'appel affiché?
+ var isEleveDansStructureAppel =
+ this.isEleveDansStructureAppel(
+ dataLigneAppel.get("eleveStructureIds"),
+ this.storeAppel.getById(idAppel.substring(5, idAppel.length)));
this.fireEvent(
this.Constantes.eventId.actionEditeAbsence,
- dataLigneAppel,idAppel,columnIndexPlageHoraire
+ dataLigneAppel,idAppel,columnIndexPlageHoraire,isEleveDansStructureAppel
)
} else {
return false;
var idPlage = this.storePlagesHoraires.getAt(columnIndexPlageHoraire - 1).id;
// Pour pouvoir faire un clic droit sur cette cellule,il faut qu'elle ait une absence liée à l'appel affiché
var absenceSurAppelEnCours = dataLigneAppel.get(idAppel);
- if (idAppel == this.Constantes.id.storeAppelDataIndexVide || absenceSurAppelEnCours == "") {
+ // si appel, est-ce l'élève pour lequel on saisit l'absence fait partie de la structure de l'appel affiché?
+ var isEleveDansStructureAppel =
+ this.isEleveDansStructureAppel(
+ dataLigneAppel.get("eleveStructureIds"),
+ this.storeAppel.getById(idAppel.substring(5, idAppel.length)));
+ if (idAppel == this.Constantes.id.storeAppelDataIndexVide || absenceSurAppelEnCours == "" || !isEleveDansStructureAppel) {
return;
}
this.Constantes.eventId.actionModifieDetailsRetardDepart,
function (dataAppelLigne, appelEtId, retradDepartInfo, columnIndexPlageHoraire) {
+ // si appel, est-ce l'élève pour lequel on saisit l'absence fait partie de la structure de l'appel affiché?
+ var appelId = appelEtId.substring(5, appelEtId.length); // Note on supprime le préfixe 'appel'
+ var dataAppel = this.storeAppel.getById(appelId);
+ var isEleveDansStructureAppel =
+ this.isEleveDansStructureAppel(
+ dataAppelLigne.get("eleveStructureIds"),
+ dataAppel);
+
this.fireEvent(
this.Constantes.eventId.actionModifieDetailsRetardDepart,
dataAppelLigne,
appelEtId,
retradDepartInfo,
- columnIndexPlageHoraire
+ columnIndexPlageHoraire,
+ isEleveDansStructureAppel
);
},
this
actionEditionRetardDepart:function (dataAppelLigne, appelId, columnIndexPlageHoraire) {
var dataAppel = this.storeAppel.getById(appelId);
+ var plageId = this.storePlagesHoraires.getAt(columnIndexPlageHoraire - 1).id;
+ // récupération de l'absence qui se trouve dans la cellule, si elle existe
+ var absenceSurAppel = dataAppelLigne.get('appel' + dataAppel.id);
+ var absenceJournee = dataAppelLigne.get('plage' + plageId);
+
+ // si appel, est-ce l'élève pour lequel on saisit l'absence fait partie de la structure de l'appel affiché?
+ var isEleveDansStructureAppel =
+ this.isEleveDansStructureAppel(
+ dataAppelLigne.get("eleveStructureIds"),
+ dataAppel);
+
+
+ // Si une absence existe dans la cellule 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 (absenceJournee || (absenceSurAppel && !isEleveDansStructureAppel)){
+ return;
+ }
this.windowEditeAbsenceView.afficherWindowEditeAbsenceView(
dataAppelLigne,
var absenceSurAppelEnCours = dataLigneAppel.get(idAppel);
var absenceSurPlageEnCours = dataLigneAppel.get("plage"+idPlage);
return (absenceSurAppelEnCours == "" && absenceSurPlageEnCours == "");
+ },
+
+ isEleveDansStructureAppel : function(eleveStructureIds, appelAffiche){
+ var isEleveDansStructureAppel = false;
+ var structureConcerneeAppel = appelAffiche.get("structureConcerneeId");
+ Ext.each(eleveStructureIds, function(eleveStructureId){
+ if (eleveStructureId == structureConcerneeAppel){
+ isEleveDansStructureAppel = true;
+ }
+ });
+ return isEleveDansStructureAppel;
}
});