eliot.absences.saisie.saisie.AbsencesController = Ext.extend(Ext.util.Observable, {
- constructor:function (config) {
- this.Constantes = eliot.absences.saisie.saisie.Constantes;
- this.Modele = eliot.absences.saisie.saisie.Modele;
-
- // Config par défaut
- var cfg = {
- storeAppel:undefined,
- structureEnseignementId:undefined,
- storeGrilleHoraire:undefined,
- date:undefined
- };
-
- this.addEvents(
- this.Constantes.eventId.actionAppelValide,
- this.Constantes.eventId.actionEditeRetardDepart
- );
-
- // Charge la config fournie
- Ext.apply(cfg, config);
-
- if (!cfg.storeAppel) {
- throw 'La config storeAppel est obligatoire'
- }
+ constructor:function (config) {
+ this.Constantes = eliot.absences.saisie.saisie.Constantes;
+ this.Modele = eliot.absences.saisie.saisie.Modele;
+
+ // Config par défaut
+ var cfg = {
+ storeAppel:undefined,
+ structureEnseignementId:undefined,
+ listeAppelsEleves:undefined,
+ storeGrilleHoraire:undefined,
+ date:undefined
+ };
+
+ this.addEvents(
+ this.Constantes.eventId.actionAppelValide,
+ this.Constantes.eventId.actionEditeRetardDepart
+ );
- if (!cfg.structureEnseignementId) {
- throw 'La structure d\'enseignement est obligatoire'
- }
+ // Charge la config fournie
+ Ext.apply(cfg, config);
- if (!cfg.date) {
- throw 'La date est obligatoire'
- }
+ if (!cfg.storeAppel) {
+ throw 'La config storeAppel est obligatoire'
+ }
- if (!cfg.storeGrilleHoraire) {
- throw 'Le store de la grille horaire est obligatoire'
- }
+ if (!cfg.structureEnseignementId) {
+ throw 'La structure d\'enseignement est obligatoire'
+ }
- this.structureEnseignementId = cfg.structureEnseignementId;
- this.date = cfg.date;
-
- this.storeAppel = cfg.storeAppel;
- this.storeAbsences = this.creeStoreAbsences(cfg.storeAppel, cfg.storeGrilleHoraire);
- this.storeGrilleHoraire = cfg.storeGrilleHoraire;
-
- this.motifSelectionneInfo = {
- id:undefined,
- couleur:undefined,
- libelle:undefined
- };
-
- this.typeAbsence = eliot.absences.saisie.saisie.Modele.data.optionSaisie;
-
- },
-
- observeAbsencesView:function (absencesView) {
- absencesView.addListener(
- this.Constantes.eventId.actionEditeAbsence,
- function (dataAppelLigne, appelEtId, columnIndex) {
- if (this.getEtatTypeAbsence(this.Modele.libelle.retardDepart)) {
- this.actionEditionRetardDepart(dataAppelLigne, appelEtId, columnIndex);
- }
- else {
- this.actionEditionAbsence(dataAppelLigne, appelEtId, columnIndex);
- }
- },
- this
- );
-
- absencesView.addListener(
- this.Constantes.eventId.actionModifieDetailsRetardDepart,
- function (dataAppelLigne, appelEtId, retradDepartInfo, columnIndex) {
- var modifInfo = {
- retardDepart:retradDepartInfo
- };
-
- this.actionModifieAbsence(
- dataAppelLigne,
- appelEtId,
- modifInfo,
- columnIndex
- );
- },
- this
- );
-
- absencesView.addListener(
- this.Constantes.eventId.actionSupprimeAbsence,
- this.supprimeAbsence,
- this
- );
-
- absencesView.addListener(
- this.Constantes.eventId.actionEleveSelectionChange,
- this.actionEleveSelectionChange,
- this
- );
- },
-
- observeToolbarView:function (toolbarView) {
- toolbarView.addListener(
- this.Constantes.eventId.actionAnnuleModifAbsences,
- this.annuleModif,
- this
- );
-
- toolbarView.addListener(
- this.Constantes.eventId.actionEnregistreAbsences,
- this.executeEnregistre,
- this
- );
- },
- observeOptionSaisieView:function (optionSaisieView) {
- optionSaisieView.addListener(
- eliot.absences.saisie.saisie.Constantes.
- eventId.actionChangeTypeAbcence,
- this.actionTypeAbsenceChange,
- this
- );
- },
-
- observeMotifs:function (arbreMotifs) {
- arbreMotifs.addListener(
- eliot.absences.parametrage.motif.Constantes.
- eventId.motifSelectionne,
- this.actionMotifChange,
- this
- );
- },
-
- actionEditionRetardDepart:function (dataAppelLigne, appelEtId, columnIndex) {
- this.fireEvent(
- this.Constantes.eventId.actionEditeRetardDepart,
- dataAppelLigne,
- appelEtId.substring(5, appelEtId.length),
- columnIndex
- )
- },
-
- actionEditionAbsence:function (dataAppelLigne, appelEtId, columnIndex) {
- var modifInfo = {
- principales:{
- motifId:this.motifSelectionneInfo.id,
- couleurMotif:this.motifSelectionneInfo.couleur,
- libelle:this.motifSelectionneInfo.libelle,
- valable:this.getEtatTypeAbsence(
- this.Modele.libelle.saisieValable
- ),
- nonValable:this.getEtatTypeAbsence(
- this.Modele.libelle.saisieNonValable
- ),
- previsionnel:this.getEtatTypeAbsence(
- this.Modele.libelle.saisiePrevisionnelle
- )
- }
- };
-
- this.actionModifieAbsence(dataAppelLigne, appelEtId, modifInfo, columnIndex);
- },
-
- /**
- * Annule les modifications non enregistrées sur les absences
- */
- annuleModif:function () {
- this.storeAbsences.rejectChanges();
- },
-
- /**
- * Enregistre les modifications sur les absences (lignes d'appel)
- */
- executeEnregistre:function () {
- var NameSpace = eliot.absences.saisie.saisie;
- // Construit les données à envoyer
- var data = [];
- var modifiedRecords = this.storeAbsences.getModifiedRecords();
- var appelTemporaire = false;
- for (var i = 0; i < modifiedRecords.length; i++) {
- var currentRecord = modifiedRecords[i];
- var currentData = currentRecord.getChanges();
- currentData['eleveId'] = currentRecord.id; // TOREFACT: *** Constante
- data.push(currentData);
-
- if (currentData['appelAPPEL_TEMP'] !== undefined) {
- appelTemporaire = true;
- }
- }
+ if (!cfg.date) {
+ throw 'La date est obligatoire'
+ }
- if (data.length === 0) {
- //return // Aucune donnée à enregistrer
- appelTemporaire = true;
- }
+ if (!cfg.storeGrilleHoraire) {
+ throw 'Le store de la grille horaire est obligatoire'
+ }
- data.push({optionSaisie:NameSpace.Modele.data.optionSaisie})
-
- // Requête de sauvegarde
- Ext.Ajax.request({
- scope:this,
- url:NameSpace.Modele.url.urlStoreAbsencesUpdate,
- params:{
- data:Ext.encode(data)
- },
- failure:function (response, request) {
- eliot.absences.Message.showErreur(
- NameSpace.Modele.libelle.erreurInconnue
+ this.structureEnseignementId = cfg.structureEnseignementId;
+ this.listeAppelsEleves = cfg.listeAppelsEleves;
+ this.date = cfg.date;
+
+ this.storeAppel = cfg.storeAppel;
+ this.storeAbsences = this.creeStoreAbsences(cfg.storeAppel, cfg.storeGrilleHoraire);
+ this.storeGrilleHoraire = cfg.storeGrilleHoraire;
+
+ this.motifSelectionneInfo = {
+ id:undefined,
+ couleur:undefined,
+ libelle:undefined
+ };
+
+ this.typeAbsence = eliot.absences.saisie.saisie.Modele.data.optionSaisie;
+
+ },
+
+ observeAbsencesView:function (absencesView) {
+ absencesView.addListener(
+ this.Constantes.eventId.actionEditeAbsence,
+ function (dataAppelLigne, appelEtId, columnIndex) {
+ if (this.getEtatTypeAbsence(this.Modele.libelle.retardDepart)) {
+ this.actionEditionRetardDepart(dataAppelLigne, appelEtId, columnIndex);
+ }
+ else {
+ this.actionEditionAbsence(dataAppelLigne, appelEtId, columnIndex);
+ }
+ },
+ this
);
- },
- success:function (response, request) {
+ absencesView.addListener(
+ this.Constantes.eventId.actionModifieDetailsRetardDepart,
+ function (dataAppelLigne, appelEtId, retradDepartInfo, columnIndex) {
+ var modifInfo = {
+ retardDepart:retradDepartInfo
+ };
+
+ this.actionModifieAbsence(
+ dataAppelLigne,
+ appelEtId,
+ modifInfo,
+ columnIndex
+ );
+ },
+ this
+ );
+
+ absencesView.addListener(
+ this.Constantes.eventId.actionSupprimeAbsence,
+ this.supprimeAbsence,
+ this
+ );
- var i; // Compteur de boucle
+ absencesView.addListener(
+ this.Constantes.eventId.actionEleveSelectionChange,
+ this.actionEleveSelectionChange,
+ this
+ );
+ },
- var resultats = Ext.decode(response.responseText);
- if (resultats.success) {
+ observeToolbarView:function (toolbarView) {
+ toolbarView.addListener(
+ this.Constantes.eventId.actionAnnuleModifAbsences,
+ this.annuleModif,
+ this
+ );
- if (appelTemporaire == true) {
- this.fireEvent(
- eliot.absences.saisie.saisie.Constantes.eventId.actionAppelValide);
- }
+ toolbarView.addListener(
+ this.Constantes.eventId.actionEnregistreAbsences,
+ this.executeEnregistre,
+ this
+ );
+ },
+ observeOptionSaisieView:function (optionSaisieView) {
+ optionSaisieView.addListener(
+ eliot.absences.saisie.saisie.Constantes.
+ eventId.actionChangeTypeAbcence,
+ this.actionTypeAbsenceChange,
+ this
+ );
+ },
+
+ observeMotifs:function (arbreMotifs) {
+ arbreMotifs.addListener(
+ eliot.absences.parametrage.motif.Constantes.
+ eventId.motifSelectionne,
+ this.actionMotifChange,
+ this
+ );
+ },
+
+ actionEditionRetardDepart:function (dataAppelLigne, appelEtId, columnIndex) {
+ this.fireEvent(
+ this.Constantes.eventId.actionEditeRetardDepart,
+ dataAppelLigne,
+ appelEtId.substring(5, appelEtId.length),
+ columnIndex
+ )
+ },
+
+ actionEditionAbsence:function (dataAppelLigne, appelEtId, columnIndex) {
+ var modifInfo = {
+ principales:{
+ motifId:this.motifSelectionneInfo.id,
+ couleurMotif:this.motifSelectionneInfo.couleur,
+ libelle:this.motifSelectionneInfo.libelle,
+ valable:this.getEtatTypeAbsence(
+ this.Modele.libelle.saisieValable
+ ),
+ nonValable:this.getEtatTypeAbsence(
+ this.Modele.libelle.saisieNonValable
+ ),
+ previsionnel:this.getEtatTypeAbsence(
+ this.Modele.libelle.saisiePrevisionnelle
+ )
+ }
+ };
+
+ this.actionModifieAbsence(dataAppelLigne, appelEtId, modifInfo, columnIndex);
+ },
+
+ /**
+ * Annule les modifications non enregistrées sur les absences
+ */
+ annuleModif:function () {
+ this.storeAbsences.rejectChanges();
+ },
+
+ /**
+ * Enregistre les modifications sur les absences (lignes d'appel)
+ */
+ executeEnregistre:function () {
+ var NameSpace = eliot.absences.saisie.saisie;
+ // Construit les données à envoyer
+ var data = [];
+ var modifiedRecords = this.storeAbsences.getModifiedRecords();
+ var appelTemporaire = false;
+ for (var i = 0; i < modifiedRecords.length; i++) {
+ var currentRecord = modifiedRecords[i];
+ var currentData = currentRecord.getChanges();
+ currentData['eleveId'] = currentRecord.id; // TOREFACT: *** Constante
+ data.push(currentData);
+
+ if (currentData['appelAPPEL_TEMP'] !== undefined) {
+ appelTemporaire = true;
+ }
+ }
- else {
+ if (data.length === 0) {
+ //return // Aucune donnée à enregistrer
+ appelTemporaire = true;
+ }
- eliot.absences.Message.showConfirmation(
- resultats.message
- );
+ data.push({optionSaisie:NameSpace.Modele.data.optionSaisie})
- if (!resultats.data) {
- resultats.data = [];
- }
+ // Requête de sauvegarde
+ Ext.Ajax.request({
+ scope:this,
+ url:NameSpace.Modele.url.urlStoreAbsencesUpdate,
+ params:{
+ data:Ext.encode(data)
+ },
+ failure:function (response, request) {
+ eliot.absences.Message.showErreur(
+ NameSpace.Modele.libelle.erreurInconnue
+ );
+ },
- // Ajoute les IDs des absences créées
- for (i = 0; i < resultats.data.length; i++) {
- var current = resultats.data[i];
+ success:function (response, request) {
- // Récupère la ligne d'absence de l'élève
- var dataAbsencesEleve = this.storeAbsences.getById(current['eleveId']); // TOREFACT: *** Constante
+ var i; // Compteur de boucle
- // Récupère l'absence correspondant à l'appel
- var absenceEleve = dataAbsencesEleve.get('appel' + current['appelId']); // TOREFACT: *** Constante ou fonction
+ var resultats = Ext.decode(response.responseText);
+ if (resultats.success) {
- // Ajoute l'id de l'absence (appel ligne)
- absenceEleve.id = current['appelLigneId'];
- }
+ if (appelTemporaire == true) {
+ this.fireEvent(
+ eliot.absences.saisie.saisie.Constantes.eventId.actionAppelValide);
+ }
- // Elimine les absences supprimées
- // TOREFACT: *** Code à reprendre
- for (i = 0; i < modifiedRecords.length; i++) {
- this.storeAppel.each(
- function (dataAppel) {
- var appel = dataAppel.json;
- if ((appel.idAppel !== '') && (appel.idAppel.charAt(0) !== '-')) {
- var absence = modifiedRecords[i].get('appel' + appel.idAppel);
- if (absence && absence.aSupprimer) {
- modifiedRecords[i].set('appel' + appel.idAppel, "");
- }
+ else {
+
+ eliot.absences.Message.showConfirmation(
+ resultats.message
+ );
+
+ if (!resultats.data) {
+ resultats.data = [];
+ }
+
+ // Ajoute les IDs des absences créées
+ for (i = 0; i < resultats.data.length; i++) {
+ var current = resultats.data[i];
+
+ // Récupère la ligne d'absence de l'élève
+ var dataAbsencesEleve = this.storeAbsences.getById(current['eleveId']); // TOREFACT: *** Constante
+
+ // Récupère l'absence correspondant à l'appel
+ var absenceEleve = dataAbsencesEleve.get('appel' + current['appelId']); // TOREFACT: *** Constante ou fonction
+
+ // Ajoute l'id de l'absence (appel ligne)
+ absenceEleve.id = current['appelLigneId'];
+ }
+
+ // Elimine les absences supprimées
+ // TOREFACT: *** Code à reprendre
+ for (i = 0; i < modifiedRecords.length; i++) {
+ this.storeAppel.each(
+ function (dataAppel) {
+ var appel = dataAppel.json;
+ if ((appel.idAppel !== '') && (appel.idAppel.charAt(0) !== '-')) {
+ var absence = modifiedRecords[i].get('appel' + appel.idAppel);
+ if (absence && absence.aSupprimer) {
+ modifiedRecords[i].set('appel' + appel.idAppel, "");
+ }
+ }
+ }
+ );
+ }
+
+ // Validation des données du store
+ this.storeAbsences.commitChanges();
}
- }
- );
+ }
+ else {
+ // Affiche le message d'erreur retourné
+ eliot.absences.Message.showErreur(resultats.message);
+ }
}
+ });
+ },
+ actionMotifChange:function (nodeMotif) {
+ if (nodeMotif.id.charAt(0) == 'm') {
+ var idMotif = nodeMotif.attributes['id'];
+ this.motifSelectionneInfo = {
+ couleur:nodeMotif.attributes['codeCouleur'],
+ id:idMotif.substr(1, idMotif.length),
+ libelle:nodeMotif.attributes['nom']
+ }
+ }
+ },
+
+ actionTypeAbsenceChange:function (option) {
+ eliot.absences.saisie.saisie.Modele.data.optionSaisie = option;
+ this.typeAbsence = option;
+ },
- // Validation des données du store
- this.storeAbsences.commitChanges();
- }
+ actionModifieAbsence:function (dataAppelLigne, appelEtId, modifInfo, columnIndex) {
+ // Pas d'appel
+ if (appelEtId === 'appel0') {
+ return
}
- else {
- // Affiche le message d'erreur retourné
- eliot.absences.Message.showErreur(resultats.message);
+
+ this.modifieProprietesAbsence(dataAppelLigne, appelEtId, modifInfo, columnIndex);
+ },
+
+ modifieProprietesAbsence:function (dataAppelLigne, appelEtId, modifInfo, columnIndex) {
+ var appelId = appelEtId.substring(5, appelEtId.length); // Note on supprime le préfixe 'appel'
+ var plageId = this.storeGrilleHoraire.getAt(columnIndex - 1).data.id;
+ var absPrev = dataAppelLigne.get('plage' + plageId);
+ var absenceActuelle = dataAppelLigne.get(appelEtId);
+
+ // Si aucune absence dans la cellule, et qu'on valide un retard/depart
+ // dans la pop-up de saisie de retard/départ avec absence
+ // (pas de retard ni de départ) , on ne fait rien.
+ if ((!absenceActuelle || (absenceActuelle && absenceActuelle.aSupprimer)) &&
+ (modifInfo.retardDepart && modifInfo.retardDepart.absence)
+ ) {
+ return;
}
- }
- });
- },
- actionMotifChange:function (nodeMotif) {
- if (nodeMotif.id.charAt(0) == 'm') {
- var idMotif = nodeMotif.attributes['id'];
- this.motifSelectionneInfo = {
- couleur:nodeMotif.attributes['codeCouleur'],
- id:idMotif.substr(1, idMotif.length),
- libelle:nodeMotif.attributes['nom']
- }
- }
- },
- actionTypeAbsenceChange:function (option) {
- eliot.absences.saisie.saisie.Modele.data.optionSaisie = option;
- this.typeAbsence = option;
- },
+ if (!absenceActuelle) {
+ absenceActuelle = {}; // Création d'une nouvelle absence
+ }
- actionModifieAbsence:function (dataAppelLigne, appelEtId, modifInfo, columnIndex) {
- // Pas d'appel
- if (appelEtId === 'appel0') {
- return
- }
+ if (absenceActuelle.aSupprimer) {
+ delete absenceActuelle.aSupprimer;
+ }
- this.modifieProprietesAbsence(dataAppelLigne, appelEtId, modifInfo, columnIndex);
- },
-
- modifieProprietesAbsence:function (dataAppelLigne, appelEtId, modifInfo, columnIndex) {
- var appelId = appelEtId.substring(5, appelEtId.length); // Note on supprime le préfixe 'appel'
- var plageId = this.storeGrilleHoraire.getAt(columnIndex - 1).data.id;
- var absPrev = dataAppelLigne.get('plage' + plageId);
- var absenceActuelle = dataAppelLigne.get(appelEtId);
-
- // Si aucune absence dans la cellule, et qu'on valide un retard/depart
- // dans la pop-up de saisie de retard/départ avec absence
- // (pas de retard ni de départ) , on ne fait rien.
- if ((!absenceActuelle || (absenceActuelle && absenceActuelle.aSupprimer)) &&
- (modifInfo.retardDepart && modifInfo.retardDepart.absence)
- ) {
- return;
- }
+ Ext.applyIf(absenceActuelle, { // Valeurs par défaut si nécessaire
+ depart:false,
+ retard:false,
+ absence:true,
+ appelId:appelId,
+ motifId:this.motifSelectionneInfo.id,
+ couleur:this.motifSelectionneInfo.couleur,
+ libelle:this.motifSelectionneInfo.libelle,
+ aSupprimer:undefined
+ });
+
+ var absenceModifiee = {};
+
+ this.copieProprietes(absenceActuelle, absenceModifiee);
+
+ 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 (!absenceActuelle) {
- absenceActuelle = {}; // Création d'une nouvelle absence
- }
+ 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;
+ }
- if (absenceActuelle.aSupprimer) {
- delete absenceActuelle.aSupprimer;
- }
+ // 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 ||
+ (
+ absenceActuelle &&
+ (
+ absenceActuelle.retard ||
+ absenceActuelle.depart
+ )
+ )
+ ) {
+ absenceModifiee.valable = true;
+ absenceModifiee.nonValable = false;
+ absenceModifiee.previsionnel = false;
+ }
- Ext.applyIf(absenceActuelle, { // Valeurs par défaut si nécessaire
- depart:false,
- retard:false,
- absence:true,
- appelId:appelId,
- motifId:this.motifSelectionneInfo.id,
- couleur:this.motifSelectionneInfo.couleur,
- libelle : this.motifSelectionneInfo.libelle,
- aSupprimer:undefined
- });
-
- var absenceModifiee = {};
-
- this.copieProprietes(absenceActuelle, absenceModifiee);
-
- 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 (absPrev) {
+ absenceModifiee.id = absPrev.id;
+ }
+ dataAppelLigne.set(appelEtId, absenceModifiee);
+ },
- 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;
- }
+ copieProprietes:function (absenceActuelle, absenceModifiee) {
+ for (var i in absenceActuelle) {
+ if (absenceActuelle.hasOwnProperty(i)) {
+ absenceModifiee[i] = (absenceActuelle[i]);
+ }
+ }
+ delete absenceModifiee['class'];
+ },
+
+ /**
+ * Supprime une absence (appel ligne) dans le store
+ * Note: l'objet qui décrit l'absence est remplacé par un objet qui ne
+ * contient que l'id de l'absence pour faciliter sa suppression coté
+ * backoffice
+ * @param dataAppelLigne
+ * @param appelId
+ */
+ supprimeAbsence:function (dataAppelLigne, appelId) {
+ var absenceId = dataAppelLigne.get('appel' + appelId).id;
+ var absenceASupprimer;
+ if (absenceId) {
+ absenceASupprimer = {
+ id:absenceId,
+ aSupprimer:true
+ };
+ dataAppelLigne.set(
+ 'appel' + appelId,
+ absenceASupprimer
+ );
+ } else {
+ dataAppelLigne.set(
+ 'appel' + appelId,
+ ''
+ );
+ }
+ },
- // 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 ||
- (
- absenceActuelle &&
- (
- absenceActuelle.retard ||
- absenceActuelle.depart
- )
- )
- ) {
- absenceModifiee.valable = true;
- absenceModifiee.nonValable = false;
- absenceModifiee.previsionnel = false;
- }
- if (absPrev) {
- absenceModifiee.id = absPrev.id;
- }
- dataAppelLigne.set(appelEtId, absenceModifiee);
- },
-
- copieProprietes:function (absenceActuelle, absenceModifiee) {
- for (var i in absenceActuelle) {
- if (absenceActuelle.hasOwnProperty(i)) {
- absenceModifiee[i] = (absenceActuelle[i]);
- }
- }
- delete absenceModifiee['class'];
- },
-
- /**
- * Supprime une absence (appel ligne) dans le store
- * Note: l'objet qui décrit l'absence est remplacé par un objet qui ne
- * contient que l'id de l'absence pour faciliter sa suppression coté
- * backoffice
- * @param dataAppelLigne
- * @param appelId
- */
- supprimeAbsence:function (dataAppelLigne, appelId) {
- var absenceId = dataAppelLigne.get('appel' + appelId).id;
- var absenceASupprimer;
- if (absenceId) {
- absenceASupprimer = {
- id:absenceId,
- aSupprimer:true
- };
- dataAppelLigne.set(
- 'appel' + appelId,
- absenceASupprimer
- );
- } else {
- dataAppelLigne.set(
- 'appel' + appelId,
- ''
- );
- }
- },
-
-
- getEtatTypeAbsence:function (type) {
- return (this.typeAbsence === type)
- },
-
- creeStoreAbsences:function (storeAppel, storeGrilleHoraire) {
- var Constantes = eliot.absences.saisie.saisie.Constantes;
-
- // Construit les champs du store
- var fieldsStoreAbsences = [
-
- {name:'eleveId', mapping:'eleve.idEleve'},
- {name:'eleveNom', mapping:'eleve.nom'},
- {name:'edtInfo', mapping:'eleve.edtInfo'},
- {name:Constantes.id.storeAppelDataIndexVide}
- ];
-
- storeAppel.each(
- function (dataAppel) {
- var idAppel = dataAppel.data.idAppel;
- var fieldName;
-
- if ((idAppel !== '') && (idAppel.charAt(0) !== '-')) {
- fieldName = 'appel' + dataAppel.data.idAppel;
- fieldsStoreAbsences.push({
- name:fieldName
- });
- }
-
- },
- this
- );
-
- storeGrilleHoraire.each(
- function (dataGrilleHoraire) {
- var idPlage = dataGrilleHoraire.data.id;
- var fieldName;
-
- if (idPlage > 0) {
- fieldName = 'plage' + dataGrilleHoraire.data.id;
- fieldsStoreAbsences.push({
- name:fieldName
- });
- }
-
- },
- this
- );
-
-
- // Proxy
- var proxy = new Ext.data.HttpProxy({
- api:{
- read:eliot.absences.saisie.saisie.Modele.url.urlStoreAbsencesRead,
- update:eliot.absences.saisie.saisie.Modele.url.urlStoreAbsencesUpdate
- }
- });
-
- var listeAppelsId = [];
- storeAppel.each(
- function (dataAppel) {
- if ((dataAppel.id !== '') && (dataAppel.id.charAt(0) !== '-')) {
- listeAppelsId.push(dataAppel.id);
- }
+ getEtatTypeAbsence:function (type) {
+ return (this.typeAbsence === type)
+ },
+
+ creeStoreAbsences:function (storeAppel, storeGrilleHoraire) {
+ var Constantes = eliot.absences.saisie.saisie.Constantes;
+
+ // Construit les champs du store
+ var fieldsStoreAbsences = [
+
+ {name:'eleveId', mapping:'eleve.idEleve'},
+ {name:'eleveNom', mapping:'eleve.nom'},
+ {name:'edtInfo', mapping:'eleve.edtInfo'},
+ {name:Constantes.id.storeAppelDataIndexVide}
+ ];
+
+ storeAppel.each(
+ function (dataAppel) {
+ var idAppel = dataAppel.data.idAppel;
+ var fieldName;
+
+ if ((idAppel !== '') && (idAppel.charAt(0) !== '-')) {
+ fieldName = 'appel' + dataAppel.data.idAppel;
+ fieldsStoreAbsences.push({
+ name:fieldName
+ });
+ }
+
+ },
+ this
+ );
+
+ storeGrilleHoraire.each(
+ function (dataGrilleHoraire) {
+ var idPlage = dataGrilleHoraire.data.id;
+ var fieldName;
+
+ if (idPlage > 0) {
+ fieldName = 'plage' + dataGrilleHoraire.data.id;
+ fieldsStoreAbsences.push({
+ name:fieldName
+ });
+ }
+
+ },
+ this
+ );
+
+ var listeAppelsId = [];
+ storeAppel.each(
+ function (dataAppel) {
+ if ((dataAppel.id !== '') && (dataAppel.id.charAt(0) !== '-')) {
+ listeAppelsId.push(dataAppel.id);
+ }
+ }
+ );
+
+ // Store
+ var store = new Ext.data.JsonStore({
+ autoLoad:false,
+ idProperty:'eleve.idEleve',
+ data:this.listeAppelsEleves,
+ autoSave:false,
+ fields:fieldsStoreAbsences,
+ root:'data', // TOREFACT: *** Constante
+ writer:new Ext.data.JsonWriter({
+ encode:true
+ })
+ });
+
+ return store
+ },
+
+ observeProxy:function (proxy) {
+ proxy.addListener('exception', function (proxy, type, action, options, res) {
+ var message = res.message;
+ if (!message) {
+ message = eliot.absences.saisie.saisie.Modele.libelle.erreurInconnue;
+ }
+
+ eliot.absences.Message.showErreur(message);
+ });
+
+ proxy.addListener('write', function (proxy, action, result, res, rs) {
+ eliot.absences.Message.showConfirmation(res.message);
+ });
+ },
+
+ isDirty:function () {
+ if (this.storeAbsences == undefined) {
+ return false;
+ }
+ else {
+ return (this.storeAbsences.getModifiedRecords().length > 0);
}
- );
-
- // Store
- var store = new Ext.data.JsonStore({
- autoLoad:true,
- idProperty:'eleve.idEleve',
- baseParams:{
- appelsId:Ext.encode(listeAppelsId),
- structureEnseignementId:this.structureEnseignementId,
- date:this.date
- },
- proxy:proxy,
- autoSave:false,
- fields:fieldsStoreAbsences,
- root:'data', // TOREFACT: *** Constante
- writer:new Ext.data.JsonWriter({
- encode:true
- })
- });
-
- this.observeProxy(proxy);
-
- return store
- },
-
- observeProxy:function (proxy) {
- proxy.addListener('exception', function (proxy, type, action, options, res) {
- var message = res.message;
- if (!message) {
- message = eliot.absences.saisie.saisie.Modele.libelle.erreurInconnue;
- }
-
- eliot.absences.Message.showErreur(message);
- });
-
- proxy.addListener('write', function (proxy, action, result, res, rs) {
- eliot.absences.Message.showConfirmation(res.message);
- });
- },
-
- isDirty:function () {
- if (this.storeAbsences == undefined) {
- return false;
- }
- else {
- return (this.storeAbsences.getModifiedRecords().length > 0);
}
- }
});