Autorite operateurSaisie,
Date dateSaisie
) {
- if (dataAbsence.ASupprimer) {
+ if (dataAbsence.aSupprimer) {
return new AbsenceJourneeLigneParams(
aSupprimer: true,
appelLigne: (dataAbsence.appelLigneId ?
absences.saisie.suppression.echec=La saisie n'a pas été supprimée
absences.saisie.enregistrement.echec=La saisie n'a pas été enregistrée
-absences.formulaire.option.valable=Recevable
-absences.formulaire.option.previsionnelle=Prévisionnelle
-absences.formulaire.option.nonValable=Non recevable
+absences.formulaire.option.valable=Abs. Recevable
+absences.formulaire.option.previsionnelle=Abs. Prévisionnelle
+absences.formulaire.option.nonValable=Abs. Non recevable
+absences.formulaire.option.retardDepart=Retard / Départ
absences.formulaire.liste.Types=Types
absences.formulaire.liste.Tous=Tous
absences.formulaire.liste.Retards=Retards
absences.libelle.chercher=Chercher
absences.libelle.eleve=Elève
absences.libelle.nombreElevesAuTotal=Nombre d'élève(s) au total
+absences.libelle.creation=Création
+absences.libelle.modification=Modification
eliot.absences.motifs=Motifs
<eliotjs:varI18n name="saisiePrevisionnelle" code="absences.formulaire.option.previsionnelle"/>
<eliotjs:varI18n name="saisieValable" code="absences.formulaire.option.valable"/>
<eliotjs:varI18n name="saisieNonValable" code="absences.formulaire.option.nonValable"/>
+ <eliotjs:varI18n name="retardDepart" code="absences.formulaire.option.retardDepart"/>
<eliotjs:varI18n name="libelleComboEnseignant" code="absences.libelle.comboEnseignant"/>
<eliotjs:varI18n name="erreurInconnue" code="absences.message.erreurInconnue"/>
<eliotjs:varI18n name="arrivee" code="absences.gUIFenetreRetardAbsence.labelArrivee"/>
<eliotjs:varI18n name="plageHoraireFermee" code="absences.saisie.dialogue.libelle.plageHoraireFermee"/>
<eliotjs:varI18n name="absencesNonEnregistrees" code="absence.saisie.absencesNonEnregistrees"/>
<eliotjs:varI18n name="colonneEleves" code="absences.saisie.eleves.appel"/>
+ <eliotjs:varI18n name="creation" code="absences.libelle.creation"/>
+ <eliotjs:varI18n name="modification" code="absences.libelle.modification"/>
</eliotjs:ns>
<eliotjs:ns name="dialogue">
</g:if>
<eliotjs:varJson name="grilleHoraire" value="${grilleHoraire}"/>
- <eliotjs:varString name="anneeScolaire" value="${anneeScolaire}" encode='false'/>
+ <eliotjs:varString name="anneeScolaire" value="${anneeScolaire}"
+ encode='false'/>
<eliotjs:varNumeric name="idMotifSansMotif" value="${idMotifSansMotif}"/>
<g:if test="${disabledDates}">
<eliotjs:varNumeric name="disabledDates" value="${disabledDates}"/>
<eliotjs:varNumeric name="disabledDays" value="${disabledDays}"/>
<g:if test="${structureEnseignementId}">
- <eliotjs:varNumeric name="structureEnseignementId" value="${structureEnseignementId}"/>
- <eliotjs:varString name="structureEnseignementCode" value="${structureEnseignementCode}"/>
+ <eliotjs:varNumeric name="structureEnseignementId"
+ value="${structureEnseignementId}"/>
+ <eliotjs:varString name="structureEnseignementCode"
+ value="${structureEnseignementCode}"/>
</g:if>
</eliotjs:ns>
<eliotjs:ns name="libelle">
- <eliotjs:varI18n name="colonneEleves" code="absences.saisie.eleves.appel"/>
+ <eliotjs:varI18n name="colonneEleves"
+ code="absences.saisie.eleves.appel"/>
</eliotjs:ns>
<eliotjs:ns name="message">
- <g:if test="${flash.messageProprietes}">
- <eliotjs:varJson name="messageProprietes" value="${flash.messageProprietes}"/>
+ <g:if test="${flash.messageProprietes}">
+ <eliotjs:varJson name="messageProprietes"
+ value="${flash.messageProprietes}"/>
</g:if>
</eliotjs:ns>
<eliotjs:ns name="eliot.absences.commons.ComboStructureEnsViewModele">
- <eliotjs:varI18n name="libelleComboClasse" code="absences.libelle.comboClasse"/>
+ <eliotjs:varI18n name="libelleComboClasse"
+ code="absences.libelle.comboClasse"/>
<eliotjs:ns name="message">
- <eliotjs:varI18n name="absencesNonEnregistrees" code="absence.saisie.absencesNonEnregistrees"/>
+ <eliotjs:varI18n name="absencesNonEnregistrees"
+ code="absence.saisie.absencesNonEnregistrees"/>
</eliotjs:ns>
</eliotjs:ns>
</eliotjs:ns>
<eliotjs:ns name="url">
- <eliotjs:varResource name="urlImageSupprimer" dir="images" file="delete.gif"/>
+ <eliotjs:varResource name="urlImageSupprimer" dir="images"
+ file="delete.gif"/>
</eliotjs:ns>
</eliotjs:ns>
<eliotjs:ns name="eliot.absences.commons.DialogAppelViewModele">
<eliotjs:ns name="libelle">
- <eliotjs:varI18n name="date" code="absences.saisie.dialogue.libelle.date"/>
- <eliotjs:varI18n name="classe" code="absences.saisie.dialogue.libelle.classe"/>
- <eliotjs:varI18n name="enseignant" code="absences.saisie.dialogue.libelle.enseignant"/>
- <eliotjs:varI18n name="heureDebut" code="absences.saisie.dialogue.libelle.heureDebut"/>
- <eliotjs:varI18n name="heureFin" code="absences.saisie.dialogue.libelle.heureFin"/>
- <eliotjs:varI18n name="supprimer" code="absences.saisie.dialogue.libelle.supprimer"/>
- <eliotjs:varI18n name="valider" code="absences.saisie.dialogue.libelle.valider"/>
- <eliotjs:varI18n name="annuler" code="absences.saisie.dialogue.libelle.annuler"/>
- <eliotjs:varI18n name="titreCreation" code="absences.saisie.dialogue.libelle.creation"/>
- <eliotjs:varI18n name="titreConsultation" code="absences.saisie.dialogue.libelle.consultation"/>
- <eliotjs:varI18n name="titreErreur" code="absences.saisie.dialogue.libelle.titreErreur"/>
- <eliotjs:varI18n name="messageErreur" code="absences.saisie.dialogue.libelle.messageErreur"/>
+ <eliotjs:varI18n name="date"
+ code="absences.saisie.dialogue.libelle.date"/>
+ <eliotjs:varI18n name="classe"
+ code="absences.saisie.dialogue.libelle.classe"/>
+ <eliotjs:varI18n name="enseignant"
+ code="absences.saisie.dialogue.libelle.enseignant"/>
+ <eliotjs:varI18n name="heureDebut"
+ code="absences.saisie.dialogue.libelle.heureDebut"/>
+ <eliotjs:varI18n name="heureFin"
+ code="absences.saisie.dialogue.libelle.heureFin"/>
+ <eliotjs:varI18n name="supprimer"
+ code="absences.saisie.dialogue.libelle.supprimer"/>
+ <eliotjs:varI18n name="valider"
+ code="absences.saisie.dialogue.libelle.valider"/>
+ <eliotjs:varI18n name="annuler"
+ code="absences.saisie.dialogue.libelle.annuler"/>
+ <eliotjs:varI18n name="titreCreation"
+ code="absences.saisie.dialogue.libelle.creation"/>
+ <eliotjs:varI18n name="titreConsultation"
+ code="absences.saisie.dialogue.libelle.consultation"/>
+ <eliotjs:varI18n name="titreErreur"
+ code="absences.saisie.dialogue.libelle.titreErreur"/>
+ <eliotjs:varI18n name="messageErreur"
+ code="absences.saisie.dialogue.libelle.messageErreur"/>
</eliotjs:ns>
<eliotjs:ns name="dialogue">
- <eliotjs:varI18n name="messageErreur" code="absences.saisie.dialogue.libelle.messageErreur"/>
- <eliotjs:varI18n name="titreErreur" code="absences.saisie.dialogue.libelle.titreErreur"/>
+ <eliotjs:varI18n name="messageErreur"
+ code="absences.saisie.dialogue.libelle.messageErreur"/>
+ <eliotjs:varI18n name="titreErreur"
+ code="absences.saisie.dialogue.libelle.titreErreur"/>
</eliotjs:ns>
</eliotjs:ns>
<eliotjs:ns name="eliot.absences.commons.AbsencesControllerModele">
<eliotjs:ns name="message">
- <eliotjs:varI18n name="erreurInconnue" code="absences.message.erreurInconnue"/>
- <eliotjs:varI18n name="enregistrementMaskText" code="absence.enregistrement.maskText"/>
+ <eliotjs:varI18n name="erreurInconnue"
+ code="absences.message.erreurInconnue"/>
+ <eliotjs:varI18n name="enregistrementMaskText"
+ code="absence.enregistrement.maskText"/>
</eliotjs:ns>
<eliotjs:ns name="url">
- <eliotjs:varLink name="urlStoreAbsencesRead" action="listeAppelsEleves" controller="saisie"/>
- <eliotjs:varLink name="urlStoreAbsencesUpdate" action="modifieAppel" controller="saisie"/>
+ <eliotjs:varLink name="urlStoreAbsencesRead" action="listeAppelsEleves"
+ controller="saisie"/>
+ <eliotjs:varLink name="urlStoreAbsencesUpdate" action="modifieAppel"
+ controller="saisie"/>
</eliotjs:ns>
</eliotjs:ns>
<eliotjs:ns name="eliot.absences.commons.MenuContextuelAbsencesViewModele">
<eliotjs:ns name="libelle">
- <eliotjs:varI18n name="libelleModifier" code="absences.saisie.retardDepart"/>
+ <eliotjs:varI18n name="libelleModifier"
+ code="absences.saisie.retardDepart"/>
<eliotjs:varI18n name="libelleSupprimer" code="eliot.libelle.supprimer"/>
</eliotjs:ns>
<eliotjs:ns name="url">
- <eliotjs:varResource name="urlImageModifier" dir="images" file="edit.png"/>
- <eliotjs:varResource name="urlImageSupprimer" dir="images" file="delete.gif"/>
+ <eliotjs:varResource name="urlImageModifier" dir="images"
+ file="edit.png"/>
+ <eliotjs:varResource name="urlImageSupprimer" dir="images"
+ file="delete.gif"/>
</eliotjs:ns>
</eliotjs:ns>
<eliotjs:ns name="libelle">
<eliotjs:varI18n name="modification" code="eliot.libelle.modification"/>
- <eliotjs:varI18n name="arrivee" code="absences.gUIFenetreRetardAbsence.labelArrivee"/>
- <eliotjs:varI18n name="depart" code="absences.gUIFenetreRetardAbsence.labelDepart"/>
- <eliotjs:varI18n name="descriptionArrivee" code="absences.gUIFenetreRetardAbsence.labelDescriptionArrivee"/>
- <eliotjs:varI18n name="descriptionDepart" code="absences.gUIFenetreRetardAbsence.labelDescriptionDepart"/>
- <eliotjs:varI18n name="saisieInvalide" code="absences.gUIFenetreRetardAbsence.saise.invalide"/>
- <eliotjs:varI18n name="saisieValable" code="absences.formulaire.option.valable"/>
- <eliotjs:varI18n name="saisieNonValable" code="absences.formulaire.option.nonValable"/>
- <eliotjs:varI18n name="saisiePrevisionnelle" code="absences.formulaire.option.previsionnelle"/>
+ <eliotjs:varI18n name="arrivee"
+ code="absences.gUIFenetreRetardAbsence.labelArrivee"/>
+ <eliotjs:varI18n name="depart"
+ code="absences.gUIFenetreRetardAbsence.labelDepart"/>
+ <eliotjs:varI18n name="descriptionArrivee"
+ code="absences.gUIFenetreRetardAbsence.labelDescriptionArrivee"/>
+ <eliotjs:varI18n name="descriptionDepart"
+ code="absences.gUIFenetreRetardAbsence.labelDescriptionDepart"/>
+ <eliotjs:varI18n name="saisieInvalide"
+ code="absences.gUIFenetreRetardAbsence.saise.invalide"/>
+ <eliotjs:varI18n name="saisieValable"
+ code="absences.formulaire.option.valable"/>
+ <eliotjs:varI18n name="saisieNonValable"
+ code="absences.formulaire.option.nonValable"/>
+ <eliotjs:varI18n name="saisiePrevisionnelle"
+ code="absences.formulaire.option.previsionnelle"/>
+ <eliotjs:varI18n name="modification" code="eliot.libelle.modification"/>
+ <eliotjs:varI18n name="creation" code="absences.libelle.creation"/>
</eliotjs:ns>
</eliotjs:ns>
<eliotjs:ns name="eliot.absences.commons.AppelControllerModele">
<eliotjs:ns name="message">
- <eliotjs:varI18n name="erreurInconnue" code="absences.message.erreurInconnue"/>
- <eliotjs:varI18n name="dialogSuppressionAppelTitre" code="absence.saisie.appel.suppressionTitre"/>
- <eliotjs:varI18n name="dialogSuppressionAppelMessage" code="absence.saisie.appel.suppressionMessage"/>
- <eliotjs:varI18n name="plageHoraireFermee" code="absences.saisie.dialogue.libelle.plageHoraireFermee"/>
+ <eliotjs:varI18n name="erreurInconnue"
+ code="absences.message.erreurInconnue"/>
+ <eliotjs:varI18n name="dialogSuppressionAppelTitre"
+ code="absence.saisie.appel.suppressionTitre"/>
+ <eliotjs:varI18n name="dialogSuppressionAppelMessage"
+ code="absence.saisie.appel.suppressionMessage"/>
+ <eliotjs:varI18n name="plageHoraireFermee"
+ code="absences.saisie.dialogue.libelle.plageHoraireFermee"/>
</eliotjs:ns>
<eliotjs:ns name="url">
- <eliotjs:varLink name="urlCreationAppel" action="creeAppel" controller="saisie"/>
- <eliotjs:varLink name="urlSuppressionAppel" action="supprimeAppel" controller="saisie"/>
+ <eliotjs:varLink name="urlCreationAppel" action="creeAppel"
+ controller="saisie"/>
+ <eliotjs:varLink name="urlSuppressionAppel" action="supprimeAppel"
+ controller="saisie"/>
</eliotjs:ns>
</eliotjs:ns>
<eliotjs:ns name="eliot.absences.commons.DateViewModele">
<eliotjs:ns name="message">
- <eliotjs:varI18n name="absencesNonEnregistrees" code="absence.saisie.absencesNonEnregistrees"/>
+ <eliotjs:varI18n name="absencesNonEnregistrees"
+ code="absence.saisie.absencesNonEnregistrees"/>
</eliotjs:ns>
</eliotjs:ns>
<eliotjs:ns name="eliot.absences.commons.GridAppelViewModele">
<eliotjs:ns name="message">
- <eliotjs:varI18n name="absencesNonEnregistrees" code="absence.saisie.absencesNonEnregistrees"/>
+ <eliotjs:varI18n name="absencesNonEnregistrees"
+ code="absence.saisie.absencesNonEnregistrees"/>
</eliotjs:ns>
</eliotjs:ns>
<eliotjs:ns name="eliot.absences.commons.ComboStructureEnsControllerModele">
<eliotjs:ns name="url">
- <eliotjs:varLink name="urlStoreComboStructureEnseignement" action="getAllStructureEnseignementEnCodeByEnseignantOrEtabCourant" controller="jsonScolarite"/>
+ <eliotjs:varLink name="urlStoreComboStructureEnseignement"
+ action="getAllStructureEnseignementEnCodeByEnseignantOrEtabCourant"
+ controller="jsonScolarite"/>
</eliotjs:ns>
</eliotjs:ns>
<eliotjs:ns name="eliot.absences.commons.PageControllerModele">
<eliotjs:ns name="url">
- <eliotjs:varLink name="urlIndex" action="${actionNom}" controller="saisie"/>
+ <eliotjs:varLink name="urlIndex" action="${actionNom}"
+ controller="saisie"/>
</eliotjs:ns>
</eliotjs:ns>
<eliotjs:ns name="eliot.absences.saisie.absence.prof.Modele">
<eliotjs:ns name="url">
- <eliotjs:varLink name="listeCours" action="listeCours" controller="saisie"/>
+ <eliotjs:varLink name="listeCours" action="listeCours"
+ controller="saisie"/>
</eliotjs:ns>
<eliotjs:ns name="data">
<eliotjs:varJson name="isSaisieHorsEDT" value="${isSaisieHorsEDT}"/>
- <eliotjs:varJson name="listeStructure" value="${listeStructure ?: 'undefined'}"/>
+ <eliotjs:varJson name="listeStructure"
+ value="${listeStructure ?: 'undefined'}"/>
<eliotjs:varJson name="listeCours" value="${listeCours}"/>
<eliotjs:varString name="enseignantNom" value="${enseignantNom}"/>
<g:if test="${evenementId}">
<eliotjs:varNumeric name="evenementId" value="${evenementId}"/>
- <eliotjs:varString name="evtStructureEnseignementCode" value="${structureEnseignementCode}"/>
+ <eliotjs:varString name="evtStructureEnseignementCode"
+ value="${structureEnseignementCode}"/>
</g:if>
<g:if test="${modeSaisie}">
<eliotjs:ns name="libelle">
- <eliotjs:varI18n name="datePicker" code="absences.saisie.saisieAbsencesProf.libelle.datePicker"/>
+ <eliotjs:varI18n name="datePicker"
+ code="absences.saisie.saisieAbsencesProf.libelle.datePicker"/>
+ <eliotjs:varI18n name="retardDepart"
+ code="absences.formulaire.option.retardDepart"/>
+ <eliotjs:varI18n name="absence"
+ code="absences.formulaire.liste.Absences"/>
+ <eliotjs:varI18n name="annuler" code="absences.libelle.annuler"/>
+ <eliotjs:varI18n name="enregistrer" code="absences.libelle.enregistrer"/>
</eliotjs:ns>
<eliotjs:ns name="titre">
- <eliotjs:varI18n name="saisieParEDT" code="absences.saisie.saisieAbsencesProf.titre.saisieParEDT"/>
- <eliotjs:varI18n name="saisieParHorsEDT" code="absences.saisie.saisieAbsencesProf.titre.saisieParHorsEDT"/>
+ <eliotjs:varI18n name="saisieParEDT"
+ code="absences.saisie.saisieAbsencesProf.titre.saisieParEDT"/>
+ <eliotjs:varI18n name="saisieParHorsEDT"
+ code="absences.saisie.saisieAbsencesProf.titre.saisieParHorsEDT"/>
</eliotjs:ns>
</eliotjs:ns>
<eliotjs:ns name="message">
<eliotjs:varI18n name="attention" code="absences.titre.attention"/>
- <eliotjs:varI18n name="msgModifImpossible" code="absences.saisie.saisieAbsencesProf.msgModifAbsenceImpossible"/>
- </eliotjs:ns>
-
- </eliotjs:ns>
-
-
- <eliotjs:ns name="eliot.absences.commons.ToolBarViewModele">
-
- <eliotjs:ns name="icon">
- <eliotjs:varResource name="annulation" dir="images" file="undo.gif"/>
- <eliotjs:varResource name="enregistrement" dir="images" file="enregistrer.gif"/>
- </eliotjs:ns>
-
- <eliotjs:ns name="libelle">
- <eliotjs:varI18n name="annuler" code="absences.libelle.annuler"/>
- <eliotjs:varI18n name="enregistrer" code="absences.libelle.enregistrer"/>
+ <eliotjs:varI18n name="msgModifImpossible"
+ code="absences.saisie.saisieAbsencesProf.msgModifAbsenceImpossible"/>
</eliotjs:ns>
</eliotjs:ns>
<g:javascript library="src/views/commons/DialogAppelView"/>
<g:javascript library="src/views/commons/WindowEditeAbsencesView"/>
<g:javascript library="src/views/commons/PageController"/>
- <g:javascript library="src/views/commons/SaveCancelToolbarView"/>
<g:javascript library="src/views/commons/DateView"/>
<g:javascript library="src/views/commons/DateController"/>
<g:javascript library="src/views/commons/ComboStructureEnseignementView"/>
<g:javascript library="lib/extjs-3.2.0/Spinner"/>
<g:javascript library="lib/extjs-3.2.0/SpinnerField"/>
<g:javascript library="lib/extensionsextjs/lockinggridview/LockingGridView"/>
+ <g:javascript library="src/views/saisie/absence/prof/ToolbarView"/>
<g:javascript library="src/views/saisie/absence/prof/ArbreEDTView"/>
<g:javascript library="src/views/saisie/absence/prof/SaisieEDTView"/>
<g:javascript library="src/views/saisie/absence/prof/SaisieHorsEDTView"/>
<eliotjs:varI18n name="saisieValable" code="absences.formulaire.option.valable"/>
<eliotjs:varI18n name="saisieNonValable" code="absences.formulaire.option.nonValable"/>
<eliotjs:varI18n name="saisiePrevisionnelle" code="absences.formulaire.option.previsionnelle"/>
+ <eliotjs:varI18n name="retardDepart" code="absences.formulaire.option.retardDepart"/>
</eliotjs:ns>
<eliotjs:varI18n name="depart" code="absences.gUIFenetreRetardAbsence.labelDepart"/>
<eliotjs:varI18n name="descriptionArrivee" code="absences.gUIFenetreRetardAbsence.labelDescriptionArrivee"/>
<eliotjs:varI18n name="modification" code="eliot.libelle.modification"/>
+ <eliotjs:varI18n name="creation" code="absences.libelle.creation"/>
<eliotjs:varI18n name="descriptionDepart" code="absences.gUIFenetreRetardAbsence.labelDescriptionDepart"/>
<eliotjs:varI18n name="saisieInvalide" code="absences.gUIFenetreRetardAbsence.saise.invalide"/>
<eliotjs:varI18n name="saisieValable" code="absences.formulaire.option.valable"/>
id: idCenterPanel,
region:'center',
contentEl:'center',
- border:true,
+ border:false,
bodyCssClass: 'centerRegion',
layout: 'fit',
autosize: true,
*/
eliot.absences.commons.AbsencesControllerModele = {
- url : {
- urlStoreAbsencesRead : undefined,
- urlStoreAbsencesUpdate: undefined
+ url:{
+ urlStoreAbsencesRead:undefined,
+ urlStoreAbsencesUpdate:undefined
},
- libelle : {
- saisieValable : undefined,
- saisieNonValable : undefined,
- saisiePrevisionnelle : undefined
+ libelle:{
+ saisieValable:undefined,
+ saisieNonValable:undefined,
+ saisiePrevisionnelle:undefined
},
- message : {
- erreurInconnue : undefined,
- enregistrementMaskText : undefined,
- attention : undefined,
- msgModifImpossible : undefined
+ message:{
+ erreurInconnue:undefined,
+ enregistrementMaskText:undefined,
+ attention:undefined,
+ msgModifImpossible:undefined
}
};
eliot.absences.commons.AbsenceControllerConstantes = {
- indexProf : 'indexProf',
- couleurSansMotif : '#A00A0A',
- eleveId : 'eleveId',
- appelId : 'appelId',
- data : 'data'
+ indexProf:'indexProf',
+ couleurSansMotif:'#A00A0A',
+ eleveId:'eleveId',
+ appelId:'appelId',
+ data:'data',
+ eventId:{
+ actionEditeRetardDepart:'actionEditeRetardDepart'
+ }
};
eliot.absences.commons.AbsencesController = Ext.extend(Ext.util.Observable, {
- constructor: function(config) {
+ constructor:function (config) {
// Config par défaut
var cfg = {
- storeAppel: undefined,
- structureEnseignementId : undefined,
- storeGrilleHoraire : undefined,
- storeContenuGrilleHoraire: undefined,
- date : undefined
+ storeAppel:undefined,
+ structureEnseignementId:undefined,
+ storeGrilleHoraire:undefined,
+ storeContenuGrilleHoraire:undefined,
+ date:undefined
};
// Charge la config fournie
this.Modele = eliot.absences.commons.AbsencesControllerModele;
this.Constantes = eliot.absences.commons.AbsenceControllerConstantes;
- this.addEvents(eliot.absences.commons.AppelControllerConstante.eventId.actionAppelValide);
+ this.addEvents(
+ eliot.absences.commons.AppelControllerConstante.eventId.actionAppelValide,
+ this.Constantes.eventId.actionEditeRetardDepart
+ );
if (!cfg.structureEnseignementId) {
throw 'La structure d\'enseignement est obligatoire'
if (config.optionsAbsencesExistantes) {
this.motifSelectionneInfo = {
- id : undefined,
- couleur : undefined
+ id:undefined,
+ couleur:undefined
};
- this.typeAbsence = eliot.absences.saisie.saisie.Modele.
- libelle.saisieValable;
}
+ // Ce controller est utilisé que par la saisie des absences par prof,
+ // on met directement la valeur par défaut
+ this.typeAbsence = eliot.absences.saisie.absence.prof.Modele.libelle.absence;
},
- observeAbsencesView : function (absencesView) {
+ observeAbsencesView:function (absencesView) {
var Constantes = eliot.absences.commons.GridAbsencesViewConstantes;
- var temp = eliot.absences.commons.PageControllerModele.url.urlIndex.split('/');
- var actionIndex = temp[temp.length - 1];
- var indexProf = this.Constantes.indexProf;
-
absencesView.addListener(
- Constantes.eventId.actionModifieDetailsPrincipalsAbsence,
- function(dataAppelLigne, appelEtId, columnIndex) {
- var modifInfo = undefined;
- var plageId = this.storeGrilleHoraire.getAt(columnIndex - 1).data.id;
- var absPrev = dataAppelLigne.get('plage' + plageId);
-
-
- var couleurMotif = this.Constantes.couleurSansMotif;
- var motiId = eliot.absences.saisie.absence.Modele.data.idMotifSansMotif;
- var appelLigneId = undefined;
-
- // Page de saisie par PROF
- if (actionIndex === indexProf) {
- // Si c'est une absence visé, avec un motif
- // différent de sans motif Le prof n'a pas le droit
- // de la modifiée
- var absenceActuelle = dataAppelLigne.get(appelEtId);
- if (absenceActuelle.id &&
- absenceActuelle.motifId !== motiId &&
- absenceActuelle.previsionnel !== true &&
- absenceActuelle.aSupprimer !== true
- ) {
- eliot.absences.Message.afficherDialogAlert(
- this.Modele.message.attention,
- this.Modele.message.msgModifImpossible
- );
- return;
- }
-
- if(absenceActuelle.id && absenceActuelle.previsionnel == true){
- couleurMotif = absenceActuelle.couleur;
- motiId = absenceActuelle.motifId;
- appelLigneId = absenceActuelle.id
- } else if (absenceActuelle.id && absenceActuelle.motifId == motiId) {
- // si une absence enregistrée avec un motif sans motif
- // Aucun changement possible sur un click
- return;
- }
-
- // Si c'est une absence prévisionnelle, elle garde son motif
- // et elle passe en prévisionnelle false
- if (absPrev) {
- var previsionnel = dataAppelLigne.get(appelEtId).previsionnel;
- if (previsionnel != undefined && !previsionnel) {
- return;
- }
- couleurMotif = absPrev.couleur;
- motiId = absPrev.motifId;
- appelLigneId = absPrev.id
- }
-
- modifInfo = {
- principales : {
- motifId : motiId,
- couleurMotif : couleurMotif,
- valable : true,
- nonValable : false,
- previsionnel : false,
- id: appelLigneId
- }
- };
- }
- // Page de saisie par CPE
- else {
- appelLigneId = absPrev.id;
- modifInfo = {
- principales : {
- motifId : this.motifSelectionneInfo.id,
- couleurMotif :this.motifSelectionneInfo.couleur,
- valable : this.getEtatTypeAbsence(
- this.Modele.libelle.saisieValable
- ),
- nonValable : this.getEtatTypeAbsence(
- this.Modele.libelle.saisieNonValable
- ),
- previsionnel : this.getEtatTypeAbsence(
- this.Modele.libelle.saisiePrevisionnelle
- ),
- id: appelLigneId
- }
- };
- }
- this.actionModifieAbsence(dataAppelLigne, appelEtId, modifInfo);
- },
- this
- );
+ Constantes.eventId.actionEditeAbsence,
+ function (dataAppelLigne, appelEtId, columnIndex) {
+ if (this.getEtatTypeAbsence(eliot.absences.saisie.absence.prof.Modele.libelle.retardDepart)) {
+ this.actionEditionRetardDepart(dataAppelLigne, appelEtId, columnIndex);
+ }
+ else {
+ this.actionEditionAbsence(dataAppelLigne, appelEtId, columnIndex);
+ }
+ },
+ this
+ );
absencesView.addListener(
- Constantes.eventId.actionModifieDetailsRetardDepart,
- function(dataAppelLigne, appelEtId, retradDepartInfo) {
- var modifInfo = {
- retardDepart : retradDepartInfo
- };
- this.actionModifieAbsence(dataAppelLigne, appelEtId, modifInfo);
- },
- this
- );
+ Constantes.eventId.actionModifieDetailsRetardDepart,
+ function (dataAppelLigne, appelEtId, retradDepartInfo) {
+ var modifInfo = {
+ retardDepart:retradDepartInfo
+ };
+ this.actionModifieAbsence(dataAppelLigne, appelEtId, modifInfo);
+ },
+ this
+ );
absencesView.addListener(
- Constantes.eventId.actionSupprimeAbsence,
- this.supprimeAbsence,
- this
- );
+ Constantes.eventId.actionSupprimeAbsence,
+ this.supprimeAbsence,
+ this
+ );
},
- observeToolbarView: function(toolbarView) {
- var eventIds = eliot.absences.commons.ToolBarViewConstantes.eventId;
+ observeToolbarView:function (toolbarView) {
+ var eventIds = eliot.absences.saisie.absence.prof.Constantes.eventId;
toolbarView.addListener(
- eventIds.actionReinitialiser,
- this.annuleModif,
- this
- );
+ eventIds.actionReinitialiser,
+ this.annuleModif,
+ this
+ );
toolbarView.addListener(
- eventIds.actionEnregistrer,
- this.executeEnregistre,
- this
- );
+ eventIds.actionEnregistrer,
+ this.executeEnregistre,
+ this
+ );
+
+ toolbarView.addListener(
+ eventIds.actionChangeTypeAbcence,
+ this.actionTypeAbsenceChange,
+ this
+ );
},
- observeOptionSaisieView : function (optionSaisieView) {
+ observeOptionSaisieView:function (optionSaisieView) {
optionSaisieView.addListener(
- eliot.absences.saisie.saisie.Constantes.
- eventId.actionChangeTypeAbcence,
- this.actionTypeAbsenceChange,
- this
- );
+ eliot.absences.saisie.Constantes.eventId.actionChangeTypeAbcence,
+ this.actionTypeAbsenceChange,
+ this
+ );
},
- observeMotifs : function (arbreMotifs) {
+ observeMotifs:function (arbreMotifs) {
arbreMotifs.addListener(
- eliot.absences.parametrage.motifs.Constantes.
- eventId.motifSelectionne,
- this.actionMotifChange,
- this
- );
+ eliot.absences.parametrage.motifs.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 temp = eliot.absences.commons.PageControllerModele.url.urlIndex.split('/');
+ var actionIndex = temp[temp.length - 1];
+ var indexProf = this.Constantes.indexProf;
+
+ var modifInfo = undefined;
+ var plageId = this.storeGrilleHoraire.getAt(columnIndex - 1).data.id;
+ var absPrev = dataAppelLigne.get('plage' + plageId);
+
+
+ var couleurMotif = this.Constantes.couleurSansMotif;
+ var motiId = eliot.absences.saisie.absence.Modele.data.idMotifSansMotif;
+ var appelLigneId = undefined;
+
+ // Page de saisie par PROF
+ if (actionIndex === indexProf) {
+ // Si c'est une absence visé, avec un motif
+ // différent de sans motif Le prof n'a pas le droit
+ // de la modifiée
+ var absenceActuelle = dataAppelLigne.get(appelEtId);
+ if (absenceActuelle.id &&
+ absenceActuelle.motifId !== motiId &&
+ absenceActuelle.previsionnel !== true &&
+ absenceActuelle.aSupprimer !== true
+ ) {
+ eliot.absences.Message.afficherDialogAlert(
+ this.Modele.message.attention,
+ this.Modele.message.msgModifImpossible
+ );
+ return;
+ }
+
+ if (absenceActuelle.id && absenceActuelle.previsionnel == true) {
+ couleurMotif = absenceActuelle.couleur;
+ motiId = absenceActuelle.motifId;
+ appelLigneId = absenceActuelle.id
+ } else if (absenceActuelle.id && absenceActuelle.motifId == motiId) {
+ // si une absence enregistrée avec un motif sans motif
+ // Aucun changement possible sur un click
+ return;
+ }
+
+ // Si c'est une absence prévisionnelle, elle garde son motif
+ // et elle passe en prévisionnelle false
+ if (absPrev) {
+ var previsionnel = dataAppelLigne.get(appelEtId).previsionnel;
+ if (previsionnel != undefined && !previsionnel) {
+ return;
+ }
+ couleurMotif = absPrev.couleur;
+ motiId = absPrev.motifId;
+ appelLigneId = absPrev.id
+ }
+
+ modifInfo = {
+ principales:{
+ motifId:motiId,
+ couleurMotif:couleurMotif,
+ valable:true,
+ nonValable:false,
+ previsionnel:false,
+ id:appelLigneId
+ }
+ };
+ }
+ // Page de saisie par CPE
+ else {
+ appelLigneId = absPrev.id;
+ modifInfo = {
+ principales:{
+ motifId:this.motifSelectionneInfo.id,
+ couleurMotif:this.motifSelectionneInfo.couleur,
+ valable:this.getEtatTypeAbsence(
+ this.Modele.libelle.saisieValable
+ ),
+ nonValable:this.getEtatTypeAbsence(
+ this.Modele.libelle.saisieNonValable
+ ),
+ previsionnel:this.getEtatTypeAbsence(
+ this.Modele.libelle.saisiePrevisionnelle
+ ),
+ id:appelLigneId
+ }
+ };
+ }
+ this.actionModifieAbsence(dataAppelLigne, appelEtId, modifInfo);
},
/**
* Annule les modifications non enregistrées sur les absences
*/
- annuleModif: function() {
+ annuleModif:function () {
this.storeAbsences.rejectChanges();
},
/**
* Enregistre les modifications sur les absences (lignes d'appel)
*/
- executeEnregistre: function() {
+ executeEnregistre:function () {
// Construit les données à envoyer
var data = [];
var modifiedRecords = this.storeAbsences.getModifiedRecords();
// Affichage de la progress bar
var myMask = new Ext.LoadMask(
- Ext.getBody(),
- {
- msg : eliot.absences.commons.AbsencesControllerModele.message.
+ Ext.getBody(),
+ {
+ msg:eliot.absences.commons.AbsencesControllerModele.message.
enregistrementMaskText
- });
+ });
myMask.show();
// Requête de sauvegarde
Ext.Ajax.request({
- scope : this,
- url: eliot.absences.commons.AbsencesControllerModele.url.
- urlStoreAbsencesUpdate,
- params : {
- data : Ext.encode(data)
+ scope:this,
+ url:eliot.absences.commons.AbsencesControllerModele.url.
+ urlStoreAbsencesUpdate,
+ params:{
+ data:Ext.encode(data)
},
- failure : function(response, request) {
+ failure:function (response, request) {
myMask.hide();
eliot.absences.Message.showErreur(
- eliot.absences.commons.AbsencesControllerModele.message.
- erreurInconnue
- );
+ eliot.absences.commons.AbsencesControllerModele.message.
+ erreurInconnue
+ );
},
- success : function(response, request) {
+ success:function (response, request) {
var i; // Compteur de boucle
}
else {
- eliot.absences.Message.showConfirmation(
- resultats.message
- );
-
- if (!resultats.data) {
- resultats.data = [];
- }
+ eliot.absences.Message.showConfirmation(
+ resultats.message
+ );
- // Ajoute les IDs des absences créées et rend les appels non modifiable
- for (i = 0; i < resultats.data.length; i++) {
- var current = resultats.data[i];
- var dataAbsencesEleve = this.storeAbsences.getById(current[this.Constantes.eleveId]);
- // Récupère l'absence correspondant à l'appel
- var absenceEleve = dataAbsencesEleve.get('appel' + current[this.Constantes.appelId]);
-
- if (!current['appelModifiable']) {
- var recordAppels = this.storeContenuGrilleHoraire.getAt(0);
- var controller = this;
- recordAppels.fields.each(function(champ) {
- var appel = recordAppels.get(champ.name);
- if (appel['idAppel'] == current['appelId']) {
- var appelModifie = {};
- controller.copieProprietes(appel, appelModifie);
- appelModifie['appelModifiable'] = false;
- recordAppels.set(champ.name, appelModifie);
- controller.storeContenuGrilleHoraire.commitChanges();
- }
- });
- absenceEleve.modifiable = false;
- }
+ if (!resultats.data) {
+ resultats.data = [];
+ }
- // Ajoute l'id de l'absence (appel ligne)
- absenceEleve.id = current['appelLigneId'];
+ // Ajoute les IDs des absences créées et rend les appels non modifiable
+ for (i = 0; i < resultats.data.length; i++) {
+ var current = resultats.data[i];
+ var dataAbsencesEleve = this.storeAbsences.getById(current[this.Constantes.eleveId]);
+ // Récupère l'absence correspondant à l'appel
+ var absenceEleve = dataAbsencesEleve.get('appel' + current[this.Constantes.appelId]);
+
+ if (!current['appelModifiable']) {
+ var recordAppels = this.storeContenuGrilleHoraire.getAt(0);
+ var controller = this;
+ recordAppels.fields.each(function (champ) {
+ var appel = recordAppels.get(champ.name);
+ if (appel['idAppel'] == current['appelId']) {
+ var appelModifie = {};
+ controller.copieProprietes(appel, appelModifie);
+ appelModifie['appelModifiable'] = false;
+ recordAppels.set(champ.name, appelModifie);
+ controller.storeContenuGrilleHoraire.commitChanges();
+ }
+ });
+ absenceEleve.modifiable = false;
}
- // 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, '');
- }
- }
- }
- );
- }
+ // Ajoute l'id de l'absence (appel ligne)
+ absenceEleve.id = current['appelLigneId'];
+ }
- // Validation des données du store
- this.storeAbsences.commitChanges();
+ // 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 {
});
},
- actionMotifChange : function (nodeMotif) {
+ actionMotifChange:function (nodeMotif) {
if (nodeMotif.id.charAt(0) == 'm') {
var idMotif = nodeMotif.attributes['id'];
this.motifSelectionneInfo.couleur =
- nodeMotif.attributes['codeCouleur'];
+ nodeMotif.attributes['codeCouleur'];
this.motifSelectionneInfo.id =
- parseInt(idMotif.substr(1, idMotif.length), 10);
+ parseInt(idMotif.substr(1, idMotif.length), 10);
}
},
- actionTypeAbsenceChange : function(option) {
+ actionTypeAbsenceChange:function (option) {
this.typeAbsence = option;
},
- actionModifieAbsence : function(dataAppelLigne, appelEtId, modifInfo) {
+ actionModifieAbsence:function (dataAppelLigne, appelEtId, modifInfo) {
// Pas d'appel
if (appelEtId === 'appel0') {
return
this.modifieProprietesAbsence(dataAppelLigne, appelEtId, modifInfo);
},
- modifieProprietesAbsence : function (dataAppelLigne, appelEtId, modifInfo) {
+ modifieProprietesAbsence:function (dataAppelLigne, appelEtId, modifInfo) {
var appelId = appelEtId.substring(5, appelEtId.length); // Note on supprime le préfixe 'appel'
-
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;
+ }
+
if (!absenceActuelle) {
absenceActuelle = {}; // Création d'une nouvelle absence
}
}
Ext.applyIf(absenceActuelle, { // Valeurs par défaut si nécessaire
- depart : false,
- retard : false,
- absence: true,
- appelId : appelId,
- aSupprimer: undefined
+ depart:false,
+ retard:false,
+ absence:true,
+ appelId:appelId,
+ motifId:eliot.absences.saisie.absence.Modele.data.idMotifSansMotif,
+ couleur:this.Constantes.couleurSansMotif,
+ aSupprimer:undefined
});
var absenceModifiee = {};
dataAppelLigne.set(appelEtId, absenceModifiee);
},
- copieProprietes : function(absenceActuelle, absenceModifiee) {
+ copieProprietes:function (absenceActuelle, absenceModifiee) {
for (var i in absenceActuelle) {
if (absenceActuelle.hasOwnProperty(i)) {
absenceModifiee[i] = (absenceActuelle[i]);
* @param dataAppelLigne
* @param appelId
*/
- supprimeAbsence: function(dataAppelLigne, appelId) {
+ supprimeAbsence:function (dataAppelLigne, appelId) {
var absenceId = dataAppelLigne.get('appel' + appelId).id;
var absenceASupprimer;
if (absenceId) {
absenceASupprimer = {
- id: absenceId,
- aSupprimer: true
+ id:absenceId,
+ aSupprimer:true
};
dataAppelLigne.set(
'appel' + appelId,
},
- getEtatTypeAbsence : function(type) {
+ getEtatTypeAbsence:function (type) {
return (this.typeAbsence === type)
},
- creeStoreAbsences : function(storeAppel, storeGrilleHoraire) {
+ creeStoreAbsences:function (storeAppel, storeGrilleHoraire) {
// Construit les champs du store
var fieldsStoreAbsences = [
- {name: 'eleveId', mapping: 'eleve.idEleve'},
- {name: 'eleveNom', mapping: 'eleve.nom'},
- {name: eliot.absences.saisie.absence.Constantes.id.storeAppelDataIndexVide}
+ {name:'eleveId', mapping:'eleve.idEleve'},
+ {name:'eleveNom', mapping:'eleve.nom'},
+ {name:eliot.absences.saisie.absence.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
- });
+ function (dataAppel) {
+ var idAppel = dataAppel.data.idAppel;
- }
- },
- this
- );
+ 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
- });
- }
+ function (dataGrilleHoraire) {
+ var idPlage = dataGrilleHoraire.data.id;
+ var fieldName;
+
+ if (idPlage > 0) {
+ fieldName = 'plage' + dataGrilleHoraire.data.id;
+ fieldsStoreAbsences.push({
+ name:fieldName
+ });
+ }
- },
- this
- );
+ },
+ this
+ );
// Proxy
var proxy = new Ext.data.HttpProxy({
- api: {
- read : eliot.absences.commons.AbsencesControllerModele.url.
- urlStoreAbsencesRead,
- update : eliot.absences.commons.AbsencesControllerModele.url.
- urlStoreAbsencesUpdate
+ api:{
+ read:eliot.absences.commons.AbsencesControllerModele.url.
+ urlStoreAbsencesRead,
+ update:eliot.absences.commons.AbsencesControllerModele.url.
+ urlStoreAbsencesUpdate
}
});
var listeAppelsId = [];
storeAppel.each(
- function(dataAppel) {
- if (dataAppel.id > 0) {
- listeAppelsId.push(dataAppel.id);
- }
- }
- );
+ function (dataAppel) {
+ if (dataAppel.id > 0) {
+ listeAppelsId.push(dataAppel.id);
+ }
+ }
+ );
// Store
var store = new Ext.data.JsonStore({
- autoLoad: true,
- idProperty: 'eleve.idEleve',
- baseParams: {
- appelsId: Ext.encode(listeAppelsId),
- structureEnseignementId : this.structureEnseignementId,
- date : this.date
+ autoLoad:true,
+ idProperty:'eleve.idEleve',
+ baseParams:{
+ appelsId:Ext.encode(listeAppelsId),
+ structureEnseignementId:this.structureEnseignementId,
+ date:this.date
},
- proxy: proxy,
- autoSave: false,
- fields: fieldsStoreAbsences,
- root: this.Constantes.data,
- writer: new Ext.data.JsonWriter({
- encode: true
+ proxy:proxy,
+ autoSave:false,
+ fields:fieldsStoreAbsences,
+ root:this.Constantes.data,
+ writer:new Ext.data.JsonWriter({
+ encode:true
})
});
return store
},
- observeProxy: function(proxy) {
- proxy.addListener('exception', function(proxy, type, action, options, res) {
+ observeProxy:function (proxy) {
+ proxy.addListener('exception', function (proxy, type, action, options, res) {
var message = res.message;
if (!message) {
message = eliot.absences.commons.AbsencesControllerModele.
- libelle.erreurInconnue;
+ libelle.erreurInconnue;
}
eliot.absences.Message.showErreur(message);
});
- proxy.addListener('write', function(proxy, action, result, res, rs) {
+ proxy.addListener('write', function (proxy, action, result, res, rs) {
eliot.absences.Message.showConfirmation(res.message);
});
},
- isDirty:function() {
+ isDirty:function () {
if (this.storeAbsences == undefined) {
return false;
}
Ext.ns('eliot.absences.commons');
eliot.absences.commons.AppelControllerConstante = {
- eventId : {
- actionAppelValide : 'actionAppelValide',
- actionAppelSupprime : 'actionAppelSupprime',
- actionAfficheAppel : 'actionAfficheAppel'
+ eventId:{
+ actionAppelValide:'actionAppelValide',
+ actionAppelSupprime:'actionAppelSupprime',
+ actionAfficheAppel:'actionAfficheAppel'
},
- params: {
- idPlageDebut: 'idPlageDebut',
- idPlageFin: 'idPlageFin',
- date: 'date',
- idStructureEnseignement: 'idStructureEnseignement',
- idEnseignant: 'idEnseignant',
- idEvenementCours: 'idEvenementCours'
+ params:{
+ idPlageDebut:'idPlageDebut',
+ idPlageFin:'idPlageFin',
+ date:'date',
+ idStructureEnseignement:'idStructureEnseignement',
+ idEnseignant:'idEnseignant',
+ idEvenementCours:'idEvenementCours'
}
};
eliot.absences.commons.AppelControllerModele = {
- url : {
- urlCreationAppel : undefined,
- urlSuppressionAppel : undefined
+ url:{
+ urlCreationAppel:undefined,
+ urlSuppressionAppel:undefined
},
- message : {
- erreurInconnue : undefined,
- dialogSuppressionAppelTitre : undefined,
- dialogSuppressionAppelMessage : undefined,
- plageHoraireFermee : undefined
+ message:{
+ erreurInconnue:undefined,
+ dialogSuppressionAppelTitre:undefined,
+ dialogSuppressionAppelMessage:undefined,
+ plageHoraireFermee:undefined
}
};
eliot.absences.commons.AppelController = Ext.extend(Ext.util.Observable, {
- constructor: function(config) {
+ constructor:function (config) {
this.Constantes = eliot.absences.commons.AppelControllerConstante;
this.Modele = eliot.absences.commons.AppelControllerModele;
// Config par défaut
var cfg = {
- dataGrilleHoraire: undefined,
- date : undefined
+ dataGrilleHoraire:undefined,
+ date:undefined
};
// Charge la config fournie
this.date = cfg.date;
this.addEvents(
- this.Constantes.eventId.actionAppelValide,
- this.Constantes.eventId.actionAppelSupprime,
- this.Constantes.eventId.actionAfficheAppel
- );
+ this.Constantes.eventId.actionAppelValide,
+ this.Constantes.eventId.actionAppelSupprime,
+ this.Constantes.eventId.actionAfficheAppel
+ );
this.initGrilleAppels(cfg.dataGrilleHoraire);
},
- initGrilleAppels:function(dataGrilleHoraire) {
+ initGrilleAppels:function (dataGrilleHoraire) {
this.storeEnteteGrilleHoraire = new Ext.data.JsonStore({
- idProperty: 'id',
- autoDestroy: false,
- fields: [
- {name: 'id', type: 'int'},
- {name: 'debut', type: 'string'},
- {name: 'fin', type: 'string'},
- {name: 'libelle', type: 'string'},
- {name: 'appelModifiable', type: 'boolean'},
- {name: 'appelSupprimable', type: 'boolean'},
- {name: 'ouvert', type: 'boolean'},
- {name: 'idAppel', type: 'string'},
- {name: 'enseignant', type: 'string'}
+ idProperty:'id',
+ autoDestroy:false,
+ fields:[
+ {name:'id', type:'int'},
+ {name:'debut', type:'string'},
+ {name:'fin', type:'string'},
+ {name:'libelle', type:'string'},
+ {name:'appelModifiable', type:'boolean'},
+ {name:'appelSupprimable', type:'boolean'},
+ {name:'ouvert', type:'boolean'},
+ {name:'idAppel', type:'string'},
+ {name:'enseignant', type:'string'}
],
- data: dataGrilleHoraire
+ data:dataGrilleHoraire
});
// store pour alimenter le contenu de la table des appels (appels dans
// les plages horaires)
this.storeContenuGrilleHoraire = this.creeStoreContenuGrilleHoraire(
- this.storeEnteteGrilleHoraire
- );
+ this.storeEnteteGrilleHoraire
+ );
// store pour construire l'entête de la table des absences (lignes appels)
this.storeAppel = this.creeStoreAppel(
- this.storeEnteteGrilleHoraire
- );
+ this.storeEnteteGrilleHoraire
+ );
},
/**
* contenu dans le store storeEnteteGrilleHoraire
* @param storeEnteteGrilleHoraire
*/
- creeStoreContenuGrilleHoraire: function(storeEnteteGrilleHoraire) {
+ creeStoreContenuGrilleHoraire:function (storeEnteteGrilleHoraire) {
// Construit les champs du store
// - 1 champs pour la colonne 'élève' (non affichée)
// - 1 champs par plage horaire (identifié par l'id de la plage)
var fieldsStoreEnteteGrilleHoraire = [
- {name: 'eleve'}
+ {name:'eleve'}
];
storeEnteteGrilleHoraire.each(
- function(dataPlageHoraire) {
- fieldsStoreEnteteGrilleHoraire.push({
- name: dataPlageHoraire.id
- });
- }
- );
+ function (dataPlageHoraire) {
+ fieldsStoreEnteteGrilleHoraire.push({
+ name:dataPlageHoraire.id
+ });
+ }
+ );
var storeContenuGrilleHoraire = new Ext.data.JsonStore({
- fields: fieldsStoreEnteteGrilleHoraire
+ fields:fieldsStoreEnteteGrilleHoraire
});
// Génération des données de storeContenuGrilleHoraire (contenu de la grille d'appel) à
// partir des données de storeEnteteGrilleHoraire
var dataStoreContenuGrilleHoraire = {};
storeEnteteGrilleHoraire.each(
- function(dataPlageHoraire) {
- dataStoreContenuGrilleHoraire[dataPlageHoraire.id] = {
- idAppel: dataPlageHoraire.get('idAppel'),
- appelModifiable: dataPlageHoraire.get('appelModifiable'),
- appelSupprimable: dataPlageHoraire.get('appelSupprimable'),
- ouvert: dataPlageHoraire.get('ouvert'),
- temporaire: false
- }
- }
- );
+ function (dataPlageHoraire) {
+ dataStoreContenuGrilleHoraire[dataPlageHoraire.id] = {
+ idAppel:dataPlageHoraire.get('idAppel'),
+ appelModifiable:dataPlageHoraire.get('appelModifiable'),
+ appelSupprimable:dataPlageHoraire.get('appelSupprimable'),
+ ouvert:dataPlageHoraire.get('ouvert'),
+ temporaire:false
+ }
+ }
+ );
storeContenuGrilleHoraire.loadData([dataStoreContenuGrilleHoraire]);
return storeContenuGrilleHoraire;
},
- creeStoreAppel: function(storeEnteteGrilleHoraire) {
+ creeStoreAppel:function (storeEnteteGrilleHoraire) {
var storeAppel = new Ext.data.JsonStore({
- idProperty: 'idAppel',
- autoDestroy: false,
- fields: [
- {name: 'idAppel', type: 'string'},
- {name: 'largeur', type: 'int'},
- {name: 'debutAppel', type: 'string'},
- {name: 'finAppel', type: 'string'}
+ idProperty:'idAppel',
+ autoDestroy:false,
+ fields:[
+ {name:'idAppel', type:'string'},
+ {name:'largeur', type:'int'},
+ {name:'debutAppel', type:'string'},
+ {name:'finAppel', type:'string'}
]
});
var generateurIdPourPlagesSansAppel = -1;
storeEnteteGrilleHoraire.each(
- function(dataPlageHoraire) {
- var idAppel = dataPlageHoraire.get('idAppel');
- if (!idAppel) {
- idAppel = '' + generateurIdPourPlagesSansAppel--;
- }
-
- if (idAppel === 'APPEL_TEMP') {
- var key = dataPlageHoraire.get('id');
- var record = this.storeContenuGrilleHoraire.getAt(0);
- var value = record.get(key);
- record.set(key, {
- idAppel: value.idAppel,
- appelModifiable: value.appelModifiable,
- appelSupprimable: value.appelSupprimable,
- ouvert: value.ouvert,
- temporaire: true
- });
- }
-
- if (appelCourant === undefined) {
- appelCourant = {
- numColonne: dataStoreAppel.length + 1,
- enseignant : dataPlageHoraire.get('enseignant'),
- idAppel: idAppel,
- largeur: 1,
- debutAppel : dataPlageHoraire.get('debut'),
- finAppel :dataPlageHoraire.get('fin')
- };
- }
- else {
- if (appelCourant.idAppel === idAppel) {
- appelCourant.largeur++;
- appelCourant.finAppel = dataPlageHoraire.get('fin');
- }
- else {
- dataStoreAppel.push(appelCourant);
- appelCourant = {
- numColonne: dataStoreAppel.length + 1,
- enseignant : dataPlageHoraire.get('enseignant'),
- idAppel: idAppel,
- largeur: 1,
- debutAppel : dataPlageHoraire.get('debut'),
- finAppel :dataPlageHoraire.get('fin')
- };
- }
- }
- },
- this
- );
+ function (dataPlageHoraire) {
+ var idAppel = dataPlageHoraire.get('idAppel');
+ if (!idAppel) {
+ idAppel = '' + generateurIdPourPlagesSansAppel--;
+ }
+
+ if (idAppel === 'APPEL_TEMP') {
+ var key = dataPlageHoraire.get('id');
+ var record = this.storeContenuGrilleHoraire.getAt(0);
+ var value = record.get(key);
+ record.set(key, {
+ idAppel:value.idAppel,
+ appelModifiable:value.appelModifiable,
+ appelSupprimable:value.appelSupprimable,
+ ouvert:value.ouvert,
+ temporaire:true
+ });
+ }
+
+ if (appelCourant === undefined) {
+ appelCourant = {
+ numColonne:dataStoreAppel.length + 1,
+ enseignant:dataPlageHoraire.get('enseignant'),
+ idAppel:idAppel,
+ largeur:1,
+ debutAppel:dataPlageHoraire.get('debut'),
+ finAppel:dataPlageHoraire.get('fin')
+ };
+ }
+ else {
+ if (appelCourant.idAppel === idAppel) {
+ appelCourant.largeur++;
+ appelCourant.finAppel = dataPlageHoraire.get('fin');
+ }
+ else {
+ dataStoreAppel.push(appelCourant);
+ appelCourant = {
+ numColonne:dataStoreAppel.length + 1,
+ enseignant:dataPlageHoraire.get('enseignant'),
+ idAppel:idAppel,
+ largeur:1,
+ debutAppel:dataPlageHoraire.get('debut'),
+ finAppel:dataPlageHoraire.get('fin')
+ };
+ }
+ }
+ },
+ this
+ );
if (appelCourant !== undefined) {
dataStoreAppel.push(appelCourant);
return storeAppel;
},
- observeArbreEDT : function(arbreEDT) {
+ observeArbreEDT:function (arbreEDT) {
arbreEDT.addListener(
- eliot.absences.saisie.absence.prof.Constantes.eventId.
- evenementSelectionne,
- this.actionSelectionCours,
- this
- );
+ eliot.absences.saisie.absence.prof.Constantes.eventId.
+ evenementSelectionne,
+ this.actionSelectionCours,
+ this
+ );
},
- observePanelSaisieTemps : function(panelSaisieTemps) {
+ observePanelSaisieTemps:function (panelSaisieTemps) {
panelSaisieTemps.addListener(
- eliot.absences.saisie.absence.prof.Constantes.
- eventId.actionPanelTempsFerme,
- function(idPanelFerme) {
-
- if (idPanelFerme === eliot.absences.saisie.absence.prof.
- Constantes.saisieEDTAccordionId
- ) {
- this.plageHorairesSaisieProf = undefined;
- }
- }
- );
+ eliot.absences.saisie.absence.prof.Constantes.
+ eventId.actionPanelTempsFerme,
+ function (idPanelFerme) {
+
+ if (idPanelFerme === eliot.absences.saisie.absence.prof.
+ Constantes.saisieEDTAccordionId
+ ) {
+ this.plageHorairesSaisieProf = undefined;
+ }
+ }
+ );
},
- observeGridAppelView : function(gridAppelView) {
+ observeGridAppelView:function (gridAppelView) {
var eventGridAppelIds = eliot.absences.commons.GridAppelViewConstante.
- eventId;
+ eventId;
gridAppelView.addListener(
- eventGridAppelIds.actionClicGrilleHoraire,
- this.creationAppel,
- this
- );
+ eventGridAppelIds.actionClicGrilleHoraire,
+ this.creationAppel,
+ this
+ );
gridAppelView.addListener(
- eventGridAppelIds.actionSupprimeAppel,
- this.actionSupprimeAppel,
- this);
+ eventGridAppelIds.actionSupprimeAppel,
+ this.actionSupprimeAppel,
+ this);
},
- observeDialogAppelView : function(dialogAppelView) {
+ observeDialogAppelView:function (dialogAppelView) {
var eventIdDialogAppelView = eliot.absences.commons.
- DialogAppelViewCosntantes.eventId;
+ DialogAppelViewCosntantes.eventId;
dialogAppelView.addListener(
- eventIdDialogAppelView.actionValideAppel,
- this.validationAppel,
- this
- );
+ eventIdDialogAppelView.actionValideAppel,
+ this.validationAppel,
+ this
+ );
dialogAppelView.addListener(
- eventIdDialogAppelView.actionSupprimeAppel,
- this.actionSupprimeAppel,
- this
- );
+ eventIdDialogAppelView.actionSupprimeAppel,
+ this.actionSupprimeAppel,
+ this
+ );
},
- observeToolbarView: function(toolbarView) {
- var eventIds = eliot.absences.commons.ToolBarViewConstantes.eventId;
+ observeToolbarView:function (toolbarView) {
+ var eventIds =eliot.absences.saisie.absence.prof.Constantes.eventId;
toolbarView.addListener(
- eventIds.actionReinitialiser,
- this.annuleModif,
- this
- );
+ eventIds.actionReinitialiser,
+ this.annuleModif,
+ this
+ );
},
/**
* Annule les modifications non enregistrées sur les appels
*/
- annuleModif: function() {
+ annuleModif:function () {
if (this.storeContenuGrilleHoraire.getModifiedRecords().length > 0) {
this.executeSupprimeAppel('APPEL_TEMP');
}
},
- creationAppel : function(colIndex, grid) {
+ creationAppel:function (colIndex, grid) {
if ((this.isDirty) && (this.isDirty())) {
eliot.absences.Message.showErreur(
- eliot.absences.commons.DateViewModele.message.absencesNonEnregistrees);
+ eliot.absences.commons.DateViewModele.message.absencesNonEnregistrees);
return;
}
}
this.fireEvent(
- this.Constantes.eventId.actionAfficheAppel,
- isModeCreation,
- this.date.format('d/m/Y'),
- classe,
- enseignant,
- this.storeEnteteGrilleHoraire.getAt(colIndex - 1).data.id,
- this.storeEnteteGrilleHoraire.getAt(colIndex - 1).data.idAppel,
- this.storeEnteteGrilleHoraire
- );
+ this.Constantes.eventId.actionAfficheAppel,
+ isModeCreation,
+ this.date.format('d/m/Y'),
+ classe,
+ enseignant,
+ this.storeEnteteGrilleHoraire.getAt(colIndex - 1).data.id,
+ this.storeEnteteGrilleHoraire.getAt(colIndex - 1).data.idAppel,
+ this.storeEnteteGrilleHoraire
+ );
}
}
else {
eliot.absences.Message.showErreur(
- this.Modele.message.plageHoraireFermee
- );
+ this.Modele.message.plageHoraireFermee
+ );
}
}
},
- prepareActionSelectionCours : function(colIndex) {
+ prepareActionSelectionCours:function (colIndex) {
var plageHoraireDebutId = this.plageHorairesSaisieProf[0];
var plageHoraireFinId = this.plageHorairesSaisieProf[
- this.plageHorairesSaisieProf.length - 1
- ];
+ this.plageHorairesSaisieProf.length - 1
+ ];
var recordPlageDebut = this.storeEnteteGrilleHoraire.getById(plageHoraireDebutId);
var recordPlageFin = this.storeEnteteGrilleHoraire.getById(plageHoraireFinId);
var indexPlageDebut = this.storeEnteteGrilleHoraire.indexOf(
- recordPlageDebut
- ) + 1;
+ recordPlageDebut
+ ) + 1;
var indexPlageFin = this.storeEnteteGrilleHoraire.indexOf(
- recordPlageFin
- ) + 1;
+ recordPlageFin
+ ) + 1;
if (colIndex < indexPlageDebut || colIndex > indexPlageFin) {
}
},
- actionSelectionCours : function(plageHorairesIds) {
+ actionSelectionCours:function (plageHorairesIds) {
this.plageHorairesSaisieProf = plageHorairesIds;
var Modele = eliot.absences.saisie.absence.prof.Modele;
var recordPlageFin = this.storeEnteteGrilleHoraire.getById(plageHoraireFinId);
var indexPlageDebut = this.storeEnteteGrilleHoraire.indexOf(
- recordPlageDebut
- );
+ recordPlageDebut
+ );
var indexPlageFin = this.storeEnteteGrilleHoraire.indexOf(
- recordPlageFin
- );
+ recordPlageFin
+ );
if (recordPlageDebut.data.ouvert) {
if (recordPlageDebut.data.idAppel === '') {
var isParEmploiDuTemps = true;
this.fireEvent(
- this.Constantes.eventId.actionAfficheAppel,
- bCreation,
- this.date.format('d/m/Y'),
- classe,
- enseignant,
- plageHoraireDebutId,
- undefined,
- this.storeEnteteGrilleHoraire,
- plageHoraireFinId,
- isParEmploiDuTemps
- );
+ this.Constantes.eventId.actionAfficheAppel,
+ bCreation,
+ this.date.format('d/m/Y'),
+ classe,
+ enseignant,
+ plageHoraireDebutId,
+ undefined,
+ this.storeEnteteGrilleHoraire,
+ plageHoraireFinId,
+ isParEmploiDuTemps
+ );
}
}
else {
eliot.absences.Message.showErreur(
- this.Modele.message.plageHoraireFermee
- );
+ this.Modele.message.plageHoraireFermee
+ );
}
},
-
- actionSupprimeAppel : function (idAppel) {
+ actionSupprimeAppel:function (idAppel) {
eliot.absences.Message.afficherDialogConfirmation(
- this.Modele.message.dialogSuppressionAppelTitre,
- this.Modele.message.dialogSuppressionAppelMessage,
- this.executeSupprimeAppel.createDelegate(this),
- this.annulerSuppressionAppel.createDelegate(this),
- idAppel
- );
+ this.Modele.message.dialogSuppressionAppelTitre,
+ this.Modele.message.dialogSuppressionAppelMessage,
+ this.executeSupprimeAppel.createDelegate(this),
+ this.annulerSuppressionAppel.createDelegate(this),
+ idAppel
+ );
},
- annulerSuppressionAppel : function () {
+ annulerSuppressionAppel:function () {
eliot.absences.Message.resetMessages();
},
- executeSupprimeAppel:function(idAppel) {
+ executeSupprimeAppel:function (idAppel) {
var data = {};
data.appelId = idAppel;
Ext.Ajax.request({
- url: this.Modele.url.urlSuppressionAppel,
- params : data,
- failure : function(response, request) {
+ url:this.Modele.url.urlSuppressionAppel,
+ params:data,
+ failure:function (response, request) {
eliot.absences.Message.showErreur(
- this.Modele.message.erreurInconnue);
+ this.Modele.message.erreurInconnue);
},
- success : function(response, request) {
+ success:function (response, request) {
var resultats = Ext.decode(response.responseText);
if (resultats.success) {
this.fireEvent(
- this.Constantes.eventId.actionAppelSupprime
- );
+ this.Constantes.eventId.actionAppelSupprime
+ );
}
// Affiche un message d'erreur,
eliot.absences.Message.showErreur(resultats.message);
}
},
- scope: this
+ scope:this
});
},
- observeDateController : function(dateController) {
+ observeDateController:function (dateController) {
dateController.addListener(
- eliot.absences.commons.DateControllerConstantes.eventId.dateChangee,
- function(dateSelectionnee) {
- this.date = dateSelectionnee;
- },
- this
- );
+ eliot.absences.commons.DateControllerConstantes.eventId.dateChangee,
+ function (dateSelectionnee) {
+ this.date = dateSelectionnee;
+ },
+ this
+ );
},
- validationAppel : function(debut, fin) {
+ validationAppel:function (debut, fin) {
var data = {};
data[this.Constantes.params.idPlageDebut] = debut;
data[this.Constantes.params.idPlageFin] = fin;
data[this.Constantes.params.date] = this.date;
data[this.Constantes.params.idStructureEnseignement] =
- this.ModeleAbsences.data.structureEnseignementId;
+ this.ModeleAbsences.data.structureEnseignementId;
data[this.Constantes.params.idEnseignant] =
- this.ModeleAbsences.data.enseignantId;
+ this.ModeleAbsences.data.enseignantId;
if (eliot.absences.saisie.absence.prof.Modele.data.evenementId) {
data[this.Constantes.params.idEvenementCours] =
- eliot.absences.saisie.absence.prof.Modele.data.evenementId;
+ eliot.absences.saisie.absence.prof.Modele.data.evenementId;
}
Ext.Ajax.request({
- url: this.Modele.url.urlCreationAppel,
- params : data,
- failure : function(response, request) {
+ url:this.Modele.url.urlCreationAppel,
+ params:data,
+ failure:function (response, request) {
eliot.absences.Message.showErreur(this.Modele.message.erreurInconnue);
},
- success : function(response, request) {
+ success:function (response, request) {
var resultats = Ext.decode(response.responseText);
if (resultats.success) {
this.fireEvent(
- this.Constantes.eventId.actionAppelValide
- );
+ this.Constantes.eventId.actionAppelValide
+ );
}
// Affiche un message d'erreur,
// garde les modifications de l'utilisateur
eliot.absences.Message.showErreur(resultats.message);
}
},
- scope: this
+ scope:this
});
},
// affectation de la fonction de callback pour savoir si l'enregistrement
//peut être fait
- setValide:function(isDirty) {
+ setValide:function (isDirty) {
this.isDirty = isDirty;
}
});
Ext.ns('eliot.absences.commons');
eliot.absences.commons.GridAbsencesViewConstantes = {
- eventId : {
- actionModifieDetailsPrincipalsAbsence : 'actionModifieDetailsPrincipalsAbsence',
- actionSupprimeAbsence : 'actionSupprimeAbsence',
- actionScrollBar : 'actionScrollBar',
- actionModifieDetailsRetardDepart : 'actionModifieDetailsRetardDepart'
+ eventId:{
+ actionEditeAbsence:'actionEditeAbsence',
+ actionSupprimeAbsence:'actionSupprimeAbsence',
+ actionScrollBar:'actionScrollBar',
+ actionModifieDetailsRetardDepart:'actionModifieDetailsRetardDepart'
},
- id : {
- storeAppelDataIndexVide: 'storeAppelDataIndexVide'
+ id:{
+ storeAppelDataIndexVide:'storeAppelDataIndexVide'
}
};
eliot.absences.commons.GridAbsencesView = Ext.extend(Ext.util.Observable, {
- constructor: function(config) {
+ constructor:function (config) {
// Config par défaut
var cfg = {
- storeAppel: undefined,
- storeAbsences: undefined,
+ storeAppel:undefined,
+ storeAbsences:undefined,
storePlagesHoraires:undefined
};
this.Constantes = eliot.absences.commons.GridAbsencesViewConstantes;
this.addEvents(
- this.Constantes.eventId.actionModifieDetailsPrincipalsAbsence,
+ this.Constantes.eventId.actionEditeAbsence,
this.Constantes.eventId.actionSupprimeAbsence,
this.Constantes.eventId.actionScrollBar,
this.Constantes.eventId.actionModifieDetailsRetardDepart
- );
+ );
// Construit la configuration des colonnes de la table des appels à
// partir des données de plages horaires
var columnsConfig = this.construitGridAppelColumnsConfig(
cfg.storeAppel,
cfg.storePlagesHoraires
- );
+ );
// ColumnModel
this.cm = new Ext.ux.grid.LockingColumnModel({
- defaults: {
- sortable: false,
- menuDisabled : true
+ defaults:{
+ sortable:false,
+ menuDisabled:true
},
- columns: columnsConfig
+ columns:columnsConfig
});
// GridPanel
this.grid = new Ext.grid.GridPanel({
- store: cfg.storeAbsences,
- enableColumnMove: false,
- enableColumnResize: false,
- border: false,
- cm: this.cm,
- view: new Ext.ux.grid.LockingGridView()
+ store:cfg.storeAbsences,
+ enableColumnMove:false,
+ enableColumnResize:false,
+ border:false,
+ cm:this.cm,
+ view:new Ext.ux.grid.LockingGridView()
});
this.observeGrilleAbsences();
/**
* Observe le composant graphique grid des absences
*/
- observeGrilleAbsences : function () {
+ observeGrilleAbsences:function () {
this.grid.addListener({
cellclick:{
- fn: function(grid, rowIndex, columnIndex, event) {
+ fn:function (grid, rowIndex, columnIndex, event) {
eliot.absences.Message.resetMessages();
if (columnIndex > 0) { // Pas pour la colonne des élèves
var id = appelId.substring(5, appelId.length);
var indexPlageHoraire = this.storePlagesHoraires.findExact('idAppel', id);
var plageHoraire = this.storePlagesHoraires.getAt(indexPlageHoraire);
-
+
if (plageHoraire && plageHoraire.get('appelModifiable')) {
// seulement si y'a un appel
if (appelId !== this.Constantes.id.storeAppelDataIndexVide) {
this.fireEvent(
- this.Constantes.eventId.actionModifieDetailsPrincipalsAbsence,
+ this.Constantes.eventId.actionEditeAbsence,
grid.getStore().getAt(rowIndex),
appelId,
columnIndex
- )
+ )
}
}
}
},
- scope: this
+ scope:this
},
- bodyscroll: {
- fn: function(scrollLeft, scrollTop) {
+ bodyscroll:{
+ fn:function (scrollLeft, scrollTop) {
this.fireEvent(
this.Constantes.eventId.actionScrollBar,
scrollLeft
- );
+ );
},
- scope: this
+ scope:this
},
- cellcontextmenu: {
- fn: function(grid, rowIndex, columnIndex, e) {
+ cellcontextmenu:{
+ fn:function (grid, rowIndex, columnIndex, e) {
var dataLigneAppel = grid.getStore().getAt(rowIndex);
var idAppel = this.getAppelIdFromColumnIndex(columnIndex);
var absenceInfo = dataLigneAppel.get(idAppel);
absenceInfo,
disableModifier,
disableSupprimer
- );
+ );
},
- scope: this
+ scope:this
}
});
},
+
+ observeAbsencesController:function (absencesController) {
+ absencesController.addListener(
+ eliot.absences.commons.AbsenceControllerConstantes.eventId.actionEditeRetardDepart,
+ this.actionEditionRetardDepart,
+ this
+ );
+ },
+
/**
* @private
*/
- observeMenuContextuel: function(menuContextuel) {
+ observeMenuContextuel:function (menuContextuel) {
var Constantes = eliot.absences.commons.MenuContextuelAbsencesViewConstantes;
menuContextuel.addListener(
Constantes.eventId.actionEditeDetailsAbsence,
- this.actionEditeDetailsAbsence,
+ this.actionEditionRetardDepart,
this
- );
+ );
menuContextuel.addListener(
Constantes.eventId.actionSupprimeAbsence,
- function(dataLigneAppel, appelId) {
+ function (dataLigneAppel, appelId) {
this.fireEvent(
this.Constantes.eventId.actionSupprimeAbsence,
dataLigneAppel,
appelId
- );
+ );
},
this
- );
+ );
},
- observeWindowEditeAbsenceView : function(windowEditeAbsenceView) {
+ observeWindowEditeAbsenceView:function (windowEditeAbsenceView) {
var Constantes = eliot.absences.commons.WindowEditeAbsenceViewConstantes;
windowEditeAbsenceView.addListener(
Constantes.eventId.actionSupprimeAbsence,
- function(dataLigneAppel, appelId) {
+ function (dataLigneAppel, appelId) {
this.fireEvent(
this.Constantes.eventId.actionSupprimeAbsence,
dataLigneAppel,
appelId
- );
+ );
},
this
- );
+ );
windowEditeAbsenceView.addListener(
Constantes.eventId.actionModifieDetailsRetardDepart,
- function(dataAppelLigne, id, retradDepartInfo) {
+ function (dataAppelLigne, id, retradDepartInfo) {
this.fireEvent(
this.Constantes.eventId.actionModifieDetailsRetardDepart,
dataAppelLigne,
id,
retradDepartInfo
- );
+ );
},
this
- );
+ );
},
- observeGridAppelView : function(gridAppelView) {
+ observeGridAppelView:function (gridAppelView) {
var Constantes = eliot.absences.commons.GridAppelViewConstante;
gridAppelView.addListener(
Constantes.eventId.actionScrollBar,
this.setScrollBarPosition,
this
- );
+ );
},
/**
* @param storeAppel le store contenant les données sur les appels
* @param storePlagesHoraires contient les données des plages horaires
*/
- construitGridAppelColumnsConfig: function(storeAppel, storePlagesHoraires) {
+ construitGridAppelColumnsConfig:function (storeAppel, storePlagesHoraires) {
var resultat = [];
// Ajout de la colonne 'élève'
resultat.push({
- header: ' ',
- width: eliot.absences.saisie.absence.Constantes.dimension.largeurColonneEleve,
- dataIndex : 'eleveNom',
- locked: true,
- renderer: this.rendererEleve
+ header:' ',
+ width:eliot.absences.saisie.absence.Constantes.dimension.largeurColonneEleve,
+ dataIndex:'eleveNom',
+ locked:true,
+ renderer:this.rendererEleve
});
var index = 0;
// Ajout des colonnes de plages horaire
storeAppel.each(
- function(dataAppel) {
+ function (dataAppel) {
var idAppel = dataAppel.get('idAppel');
var dataIndex;
if ((idAppel !== '') && (idAppel.charAt(0) !== '-')) {
var plageId = storePlagesHoraires.getAt(index - 1).data.id;
resultat.push({
- header: ' ',
- width: dataAppel.get('largeur') * eliot.absences.saisie.absence.
+ header:' ',
+ width:dataAppel.get('largeur') * eliot.absences.saisie.absence.
Constantes.dimension.largeurColonnePlageHoraire,
- dataIndex : dataIndex,
- renderer : this.rendererAppelLigne.createDelegate(
+ dataIndex:dataIndex,
+ renderer:this.rendererAppelLigne.createDelegate(
this,
[plageOuverte, plageId],
3
- )
+ )
})
},
this
- );
+ );
return resultat;
},
- rendererEleve: function(eleveNom, obj, record) {
+ rendererEleve:function (eleveNom, obj, record) {
var eleveId = record.get('eleveId');
return '<a href="#" onclick="eliot.ficheeleve.Application.' +
'afficheFicheEleve(' + eleveId + ',' + false + ');">' + eleveNom + '</a>';
},
- getAppelIdFromColumnIndex : function (columnIndex) {
+ getAppelIdFromColumnIndex:function (columnIndex) {
return this.grid.getColumnModel().getDataIndex(columnIndex);
},
- getAppelJournee : function () {
+ getAppelJournee:function () {
},
- actionEditeDetailsAbsence : function (dataAppelLigne, appelId) {
+ actionEditionRetardDepart:function (dataAppelLigne, appelId) {
var dataAppel = this.storeAppel.getById(appelId);
this.windowEditeAbsenceView.afficherWindowEditeAbsenceView(
dataAppelLigne,
dataAppel
- );
+ );
},
- setScrollBarPosition : function (scrollLeft) {
+ setScrollBarPosition:function (scrollLeft) {
this.grid.getView().scroller.dom.scrollLeft = scrollLeft;
},
- rendererAppelLigne : function(dataAppelLigne, obj, record, open, plageId) {
+ rendererAppelLigne:function (dataAppelLigne, obj, record, open, plageId) {
var NameSpaceAbsences = eliot.absences.saisie.absence;
var divCellule = '';
if (open) {
var dataCellule = undefined;
if (dataAppelLigne) {
dataCellule = {
- nonValable : dataAppelLigne.nonValable,
- previsionnel : dataAppelLigne.previsionnel,
- motifId : dataAppelLigne.motifId,
- retard : dataAppelLigne.retard,
- depart : dataAppelLigne.depart,
- couleur : dataAppelLigne.couleur
+ nonValable:dataAppelLigne.nonValable,
+ previsionnel:dataAppelLigne.previsionnel,
+ motifId:dataAppelLigne.motifId,
+ retard:dataAppelLigne.retard,
+ depart:dataAppelLigne.depart,
+ couleur:dataAppelLigne.couleur
}
} else {
var absJournee = record.get('plage' + plageId);
if (absJournee) {
dataCellule = {
- nonValable : absJournee.nonValable,
- previsionnel : absJournee.previsionnel,
- motifId : absJournee.motifId,
- retard : absJournee.retard,
- depart : absJournee.depart,
- couleur : absJournee.couleur
+ nonValable:absJournee.nonValable,
+ previsionnel:absJournee.previsionnel,
+ motifId:absJournee.motifId,
+ retard:absJournee.retard,
+ depart:absJournee.depart,
+ couleur:absJournee.couleur
}
}
}
Ext.ns('eliot.absences.commons');
eliot.absences.commons.OptionSaisieViewConstantes = {
- eventId : {
- actionChangeTypeAbcence : 'actionChangeTypeAbcence'
+ eventId:{
+ actionChangeTypeAbcence:'actionChangeTypeAbcence'
}
};
eliot.absences.commons.OptionSaisieViewModele = {
- libelle : {
- saisieValable : undefined,
- saisieNonValable : undefined,
- saisiePrevisionnelle : undefined
+ libelle:{
+ saisieValable:undefined,
+ saisieNonValable:undefined,
+ saisiePrevisionnelle:undefined
}
};
* - Absence non valable
* - Absence prévisionnelle
*/
- constructor: function() {
+ constructor:function () {
this.Constantes = eliot.absences.commons.OptionSaisieViewConstantes;
this.Modele = eliot.absences.commons.OptionSaisieViewModele;
this.addEvents(
- /**
- * @event actionChangeTypeAbcence déclenche quand type d'absence est
- * changé
- * @param type à changer
- */
+ /**
+ * @event actionChangeTypeAbcence déclenche quand type d'absence est
+ * changé
+ * @param type à changer
+ */
this.Constantes.eventId.actionChangeTypeAbcence
- );
+ );
this.options = new Ext.FormPanel({
padding:0,
- frame : false,
- autoHeight : true,
- border: false,
- items: [
+ frame:false,
+ autoHeight:true,
+ border:false,
+ items:[
{
- xtype: 'fieldset',
- defaultType: 'radio',
- border : false,
+ xtype:'fieldset',
+ defaultType:'radio',
+ border:false,
padding:0,
- items: [
+ items:[
{
- hideLabel: true,
- checked: true,
- boxLabel: this.Modele.libelle.saisieValable,
- name: 'option',
- inputValue: this.Modele.libelle.saisieValable,
- listeners : {
- check : function(combo, checked) {
+ hideLabel:true,
+ checked:true,
+ boxLabel:this.Modele.libelle.saisieValable,
+ name:'option',
+ inputValue:this.Modele.libelle.saisieValable,
+ listeners:{
+ check:function (combo, checked) {
this.actionTypeChange(
this.Modele.libelle.saisieValable,
checked
- );
+ );
},
- scope : this
+ scope:this
}
},
{
- hideLabel: true,
- boxLabel: this.Modele.libelle.saisieNonValable,
- name: 'option',
- inputValue: this.Modele.libelle.saisieNonValable,
- listeners : {
- check : function(combo, checked) {
+ hideLabel:true,
+ boxLabel:this.Modele.libelle.saisieNonValable,
+ name:'option',
+ inputValue:this.Modele.libelle.saisieNonValable,
+ listeners:{
+ check:function (combo, checked) {
this.actionTypeChange(
this.Modele.libelle.saisieNonValable,
checked
- );
+ );
},
- scope : this
+ scope:this
}
},
{
- hideLabel: true,
- boxLabel: this.Modele.libelle.saisiePrevisionnelle,
- name: 'option',
- inputValue: this.Modele.libelle.saisiePrevisionnelle,
- listeners : {
- check : function(combo, checked) {
+ hideLabel:true,
+ boxLabel:this.Modele.libelle.saisiePrevisionnelle,
+ name:'option',
+ inputValue:this.Modele.libelle.saisiePrevisionnelle,
+ listeners:{
+ check:function (combo, checked) {
this.actionTypeChange(
this.Modele.libelle.saisiePrevisionnelle,
checked
- );
+ );
},
- scope : this
+ scope:this
+ }
+ },
+ {
+ hideLabel:true,
+ boxLabel:this.Modele.libelle.retardDepart,
+ name:'option',
+ inputValue:this.Modele.libelle.retardDepart,
+ listeners:{
+ check:function (combo, checked) {
+ this.actionTypeChange(
+ this.Modele.libelle.retardDepart,
+ checked
+ );
+ },
+ scope:this
}
}
]
})
},
- actionTypeChange : function (option, checked) {
+ actionTypeChange:function (option, checked) {
if (checked) {
this.fireEvent(
this.Constantes.eventId.actionChangeTypeAbcence,
option
- );
+ );
}
}
});
\ No newline at end of file
id: this.Constantes.composantId.btnEnregistrer,
text : this.Modeles.libelle.enregistrer,
cls: 'add16',
- //icon: this.Modeles.icon.enregistrement,
handler : function () {
eliot.absences.Message.resetMessages();
this.fireEvent(
{
xtype: 'tbbutton',
cls: 'add16',
- //icon: this.Modeles.icon.annulation,
id : this.Constantes.composantId.btnAnnulation,
text :this.Modeles.libelle.annuler,
handler : function () {
Ext.ns('eliot.absences.commons');
eliot.absences.commons.WindowEditeAbsenceViewConstantes = {
- eventId : {
- actionSupprimeAbsence : 'actionSupprimeAbsence',
- actionModifieDetailsRetardDepart : 'actionModifieDetailsRetardDepart'
+ eventId:{
+ actionSupprimeAbsence:'actionSupprimeAbsence',
+ actionModifieDetailsRetardDepart:'actionModifieDetailsRetardDepart'
},
- divId : {
- divMessageEditionAbsence : 'divMessageEditionAbsence'
+ divId:{
+ divMessageEditionAbsence:'divMessageEditionAbsence'
+ },
+ composantId:{
+ boutonSupprimer:'boutonSupprimer'
}
};
eliot.absences.commons.WindowEditeAbsenceViewModele = {
- libelle : {
- modification : undefined,
- arrivee : undefined,
- descriptionArrivee : undefined,
- depart : undefined,
- descriptionDepart : undefined,
- saisieInvalide : undefined
+ libelle:{
+ modification:undefined,
+ creation:undefined,
+ arrivee:undefined,
+ descriptionArrivee:undefined,
+ depart:undefined,
+ descriptionDepart:undefined,
+ saisieInvalide:undefined
}
};
eliot.absences.commons.WindowEditeAbsencesView = Ext.extend(Ext.util.Observable, {
- constructor: function() {
+ constructor:function () {
this.Constantes = eliot.absences.commons.WindowEditeAbsenceViewConstantes;
this.Modele = eliot.absences.commons.WindowEditeAbsenceViewModele;
this.addEvents(
- /**
- * @event déclenché lors de la demande
- * utilisateur de supprimer une absence
- * @param dataAppelLigne
- * @param identifiant identifiant de l'appel
- *
- */
- this.Constantes.eventId.actionSupprimeAbsence,
- /**
- * @event déclenché sur l'action de validation des données
- * de départ/retard
- * @param dataAppelLigne
- * @param identifiant identifiant de l'appel
- * @param retardDepartInfo objet qui contient
- * les informations saisies de départ/retard
- */
- this.Constantes.eventId.actionModifieDetailsRetardDepart
- );
+ /**
+ * @event déclenché lors de la demande
+ * utilisateur de supprimer une absence
+ * @param dataAppelLigne
+ * @param identifiant identifiant de l'appel
+ *
+ */
+ this.Constantes.eventId.actionSupprimeAbsence,
+ /**
+ * @event déclenché sur l'action de validation des données
+ * de départ/retard
+ * @param dataAppelLigne
+ * @param identifiant identifiant de l'appel
+ * @param retardDepartInfo objet qui contient
+ * les informations saisies de départ/retard
+ */
+ this.Constantes.eventId.actionModifieDetailsRetardDepart
+ );
this.dataAppelLigne = undefined;
this.dataAppel = undefined;
this.jourId = undefined;
this.spinHeureRetard = new Ext.ux.form.SpinnerField({
- minValue: 0,
- maxValue: 23,
- allowDecimals: false,
- width : 40
+ minValue:0,
+ maxValue:23,
+ allowDecimals:false,
+ width:40
});
this.spinMinuteRetard = new Ext.ux.form.SpinnerField({
- minValue: 0,
- maxValue: 59,
- allowDecimals: false,
- width : 40
+ minValue:0,
+ maxValue:59,
+ allowDecimals:false,
+ width:40
});
this.spinHeureDepart = new Ext.ux.form.SpinnerField({
- minValue: 0,
- maxValue: 23,
- allowDecimals: false,
- width : 40
+ minValue:0,
+ maxValue:23,
+ allowDecimals:false,
+ width:40
});
this.spinMinuteDepart = new Ext.ux.form.SpinnerField({
- minValue: 0,
- maxValue: 59,
- allowDecimals: false,
- width : 40
+ minValue:0,
+ maxValue:59,
+ allowDecimals:false,
+ width:40
});
this.descriptionRetard = new Ext.form.TextArea({
- width : 150,
- height : 50
+ width:150,
+ height:50
});
this.descriptionDepart = new Ext.form.TextArea({
- width : 150,
- height : 50
+ width:150,
+ height:50
});
this.fenetre = new Ext.Window({
- cls : 'formretardAbsence',
- modal : true,
- width: 510,
- height : 250,
- resizable : false,
- title : this.Modele.libelle.modification,
- closeAction: 'fermer',
- fermer : this.fermerFenetreRetardAbsence.createDelegate(this),
- border : false,
- layout : 'border',
- items : [
+ cls:'formretardAbsence',
+ modal:true,
+ width:510,
+ height:250,
+ resizable:false,
+ title:this.Modele.libelle.creation,
+ closeAction:'fermer',
+ fermer:this.fermerFenetreRetardAbsence.createDelegate(this),
+ border:false,
+ layout:'border',
+ items:[
{
- region : 'north',
- xtype :'displayfield',
- html : '<div id="divMessageEditionAbsence" class="portal-messages"/>',
+ region:'north',
+ xtype:'displayfield',
+ html:'<div id="divMessageEditionAbsence" class="portal-messages"/>',
height:35,
- border : false
+ border:false
},
{
- region : 'center',
- layout : 'form',
- xtype : 'panel',
- bodyStyle: 'padding: 5px; background-color:transparent;',
- defaults: {
- anchor: '0'
+ region:'center',
+ layout:'form',
+ xtype:'panel',
+ bodyStyle:'padding: 5px; background-color:transparent;',
+ defaults:{
+ anchor:'0'
},
- items : [
+ items:[
{
- xtype : 'fieldset',
- border : false,
- items : [
+ xtype:'fieldset',
+ border:false,
+ items:[
{
- xtype: 'compositefield',
- fieldLabel : this.Modele.libelle.arrivee,
- items : [
+ xtype:'compositefield',
+ fieldLabel:this.Modele.libelle.arrivee,
+ items:[
this.spinHeureRetard,
{
xtype:'displayfield',
- value: "h"
+ value:"h"
},
this.spinMinuteRetard,
{
xtype:'displayfield',
- value: this.Modele.libelle.descriptionArrivee,
- width : 100
+ value:this.Modele.libelle.descriptionArrivee,
+ width:100
},
this.descriptionRetard
]
},
{
- xtype: 'compositefield',
- fieldLabel : this.Modele.libelle.depart,
- items : [
+ xtype:'compositefield',
+ fieldLabel:this.Modele.libelle.depart,
+ items:[
this.spinHeureDepart,
{
xtype:'displayfield',
- value: "h"
+ value:"h"
},
this.spinMinuteDepart,
{
xtype:'displayfield',
- value: this.Modele.libelle.descriptionDepart,
- width : 100
+ value:this.Modele.libelle.descriptionDepart,
+ width:100
},
this.descriptionDepart
]
]
}
],
- buttons: [
+ buttons:[
{
- text: 'Supprimer',
- handler: this.actionSupprimerAbsence,
- scope : this
+ id:this.Constantes.composantId.boutonSupprimer,
+ text:'Supprimer',
+ handler:this.actionSupprimerAbsence,
+ scope:this
},
{
- text: 'Annuler',
- handler: this.fermerFenetreRetardAbsence,
- scope : this
+ text:'Annuler',
+ handler:this.fermerFenetreRetardAbsence,
+ scope:this
},
{
- text: 'Valider',
- handler: this.actionValider,
- scope : this
+ text:'Valider',
+ handler:this.actionValider,
+ scope:this
}
],
- defaultButton:2
+ defaultButton:2
});
},
* @param dataLigneAppel
* @param dataAppel
*/
- afficherWindowEditeAbsenceView : function (dataLigneAppel, dataAppel, lastDataLigneAbsence) {
+ afficherWindowEditeAbsenceView:function (dataLigneAppel, dataAppel, lastDataLigneAbsence) {
+ var absenceInfo = this.getAbsenceInfo(dataLigneAppel, dataAppel);
+ var lastAbsenceInfo = undefined;
+ if (lastDataLigneAbsence) {
+ lastAbsenceInfo = (lastDataLigneAbsence.get('jour' + dataAppel)).absence;
+ }
+
this.initialiseExecution(dataLigneAppel, dataAppel, lastDataLigneAbsence);
+ this.gereTitrePopUp(absenceInfo, lastAbsenceInfo);
+ this.gereEtatBoutonSupprimer(absenceInfo, lastAbsenceInfo);
this.fenetre.show();
},
+ gereTitrePopUp:function (absenceInfo, lastAbsenceInfo) {
+
+ if ((absenceInfo && absenceInfo.retard) || (lastAbsenceInfo && lastAbsenceInfo.depart)) {
+ this.fenetre.setTitle(this.Modele.libelle.modification);
+ } else {
+ this.fenetre.setTitle(this.Modele.libelle.creation);
+ }
+ },
+
+ gereEtatBoutonSupprimer:function (absenceInfo, lastAbsenceInfo) {
+ var boutonSupprimer = Ext.getCmp(this.Constantes.composantId.boutonSupprimer);
+ if ((absenceInfo && !absenceInfo.aSupprimer) ||
+ (lastAbsenceInfo && !lastAbsenceInfo.aSupprimer)
+ ) {
+ boutonSupprimer.enable();
+ } else {
+ boutonSupprimer.disable();
+ }
+ },
+
/**
* Prépare une nouvelle exécution de la fenêtre de modification d'un
* retard et/ou d'une absence
* @param lastDataLigneAbsence envoyé seulement dans la saisie hébdomadaire
* pour une saisie qui dure plusieurs plages horaires
*/
- initialiseExecution: function(dataLigneAppel, dataAppel, lastDataLigneAbsence) {
+ initialiseExecution:function (dataLigneAppel, dataAppel, lastDataLigneAbsence) {
// Initilise la di des messages d'erreur
this.resetMessages();
this.dataAppelLigne = dataLigneAppel;
this.lastDataAppelLigne = undefined;
- var plagesHoraires = undefined;
- var absenceInfo = undefined;
-
- if (dataAppel.data) {
- this.dataAppel = dataAppel;
- // Initilisation des plages horaires
- plagesHoraires = this.getPlageHoraire(dataAppel);
- // Initialisation des différents champs
- absenceInfo = dataLigneAppel.get('appel' + dataAppel.id);
- }
- // Saisie hebdomadaire
- else {
- this.jourId = dataAppel;
- plagesHoraires = this.getPlageHoraireHebdo(dataLigneAppel);
- absenceInfo = (dataLigneAppel.get('jour' + dataAppel)).absence;
+ var plagesHoraires = this.getPlagesHorairesInfo(dataLigneAppel, dataAppel);
+ var absenceInfo = this.getAbsenceInfo(dataLigneAppel, dataAppel);
+ if (!absenceInfo) {
+ absenceInfo = '';
}
// Initialisation de retard
// Si c'est un retard, on initilise les champs de retard
if (absenceInfo.retard) {
this.spinHeureRetard.setValue(
- this.getHeure(absenceInfo.heureArrivee)
- );
+ this.getHeure(absenceInfo.heureArrivee)
+ );
this.spinMinuteRetard.setValue(
- this.getMinute(absenceInfo.heureArrivee)
- );
+ this.getMinute(absenceInfo.heureArrivee)
+ );
this.descriptionRetard.setValue(
- absenceInfo.commentaireArrivee
- );
+ absenceInfo.commentaireArrivee
+ );
}
// Initialisation de départ
// Si c'est un départ, on initilise les champs de départ
if (absenceInfo.depart) {
this.spinHeureDepart.setValue(
- this.getHeure(absenceInfo.heureDepart)
- );
+ this.getHeure(absenceInfo.heureDepart)
+ );
this.spinMinuteDepart.setValue(
- this.getMinute(absenceInfo.heureDepart)
- );
+ this.getMinute(absenceInfo.heureDepart)
+ );
this.descriptionDepart.setValue(
- absenceInfo.commentaireDepart
- );
+ absenceInfo.commentaireDepart
+ );
}
}
// Si l'absence est hebdomadaire sur plusieurs plages
// Initilisation des max/min des heures
plagesHoraires = this.getPlageHoraireHebdo(lastDataLigneAbsence);
absenceInfo = (lastDataLigneAbsence.get('jour' + dataAppel)).absence;
+ if (!absenceInfo) {
+ absenceInfo = '';
+ }
this.spinHeureDepart.minValue = plagesHoraires.heureDebut;
this.spinHeureDepart.maxValue = plagesHoraires.heureFin;
// Si c'est un départ, on initilise les champs de départ
if (absenceInfo.depart) {
this.spinHeureDepart.setValue(
- this.getHeure(absenceInfo.heureDepart)
- );
+ this.getHeure(absenceInfo.heureDepart)
+ );
this.spinMinuteDepart.setValue(
- this.getMinute(absenceInfo.heureDepart)
- );
+ this.getMinute(absenceInfo.heureDepart)
+ );
this.descriptionDepart.setValue(
- absenceInfo.commentaireDepart
- );
+ absenceInfo.commentaireDepart
+ );
}
}
},
+ getAbsenceInfo:function (dataLigneAppel, dataAppel) {
+ if (dataAppel.data) {
+ this.dataAppel = dataAppel;
+ return dataLigneAppel.get('appel' + dataAppel.id);
+ }
+ // Saisie hebdomadaire
+ else {
+ this.jourId = dataAppel;
+ return (dataLigneAppel.get('jour' + dataAppel)).absence;
+ }
+
+ },
+
+ getPlagesHorairesInfo:function (dataLigneAppel, dataAppel) {
+ if (dataAppel.data) {
+ this.dataAppel = dataAppel;
+ return this.getPlageHoraire(dataAppel);
+ }
+ // Saisie hebdomadaire
+ else {
+ this.jourId = dataAppel;
+ return this.getPlageHoraireHebdo(dataLigneAppel);
+ }
+ },
+
/**
* Permet de supprimer une absence
*/
- actionSupprimerAbsence : function() {
+ actionSupprimerAbsence:function () {
var id = undefined;
if (this.jourId) {
id = this.jourId;
id = this.dataAppel.id;
}
this.fireEvent(
- this.Constantes.eventId.actionSupprimeAbsence,
- this.dataAppelLigne,
- id
- );
+ this.Constantes.eventId.actionSupprimeAbsence,
+ this.dataAppelLigne,
+ id
+ );
this.fermerFenetreRetardAbsence();
},
- actionValider: function() {
+ actionValider:function () {
var retardDepartInfo = this.getRetardDepartInfo();
var id = undefined;
if (this.jourId) {
// on affiche un message d'erreur
if (this.isRetardDepartHeuresValidees()) {
this.fireEvent(
- this.Constantes.eventId.actionModifieDetailsRetardDepart,
- this.dataAppelLigne,
- id,
- retardDepartInfo
- );
+ this.Constantes.eventId.actionModifieDetailsRetardDepart,
+ this.dataAppelLigne,
+ id,
+ retardDepartInfo
+ );
this.fermerFenetreRetardAbsence();
} else {
// Absence
else {
this.fireEvent(
- this.Constantes.eventId.actionModifieDetailsRetardDepart,
- this.dataAppelLigne,
- id,
- retardDepartInfo
- );
+ this.Constantes.eventId.actionModifieDetailsRetardDepart,
+ this.dataAppelLigne,
+ id,
+ retardDepartInfo
+ );
this.fermerFenetreRetardAbsence();
}
},
- fermerFenetreRetardAbsence : function () {
+ fermerFenetreRetardAbsence:function () {
this.fenetre.hide();
},
- getHeure:function(heure) {
+ getHeure:function (heure) {
if (!heure) return 0;
heure = heure.toString();
var indexH = 0;
return heure.substring(indexDeb, indexH);
},
- getMinute : function(heure) {
+ getMinute:function (heure) {
if (!heure) return 0;
heure = heure.toString();
var index = heure.indexOf(':');
return heure.substr(index + 1, heure.length);
},
- getRetardDepartInfo : function() {
+ getRetardDepartInfo:function () {
var retardDepartInfo = {
- absence : false
+ absence:false
};
var heureArrivee = this.spinHeureRetard.getValue();
if (retard) {
retardDepartInfo.retard = true;
retardDepartInfo.heureArrivee = heureArrivee.toString() +
- ':' +
- minuteArrivee.toString();
+ ':' +
+ minuteArrivee.toString();
retardDepartInfo.commentaireArrivee = this.descriptionRetard.getValue();
}
if (depart) {
retardDepartInfo.depart = true;
retardDepartInfo.heureDepart = heureDepart.toString() +
- ':' +
- minuteDepart.toString();
+ ':' +
+ minuteDepart.toString();
retardDepartInfo.commentaireDepart = this.descriptionDepart.getValue();
}
return retardDepartInfo
},
- isRetard : function (heure, minute) {
+ isRetard:function (heure, minute) {
var debutAppel = undefined;
if (this.dataAppel) {
debutAppel = this.dataAppel.get('debutAppel');
debutAppel = this.dataAppelLigne.get('dateDebut');
}
return (heure != this.getHeure(debutAppel) ||
- minute != this.getMinute(debutAppel)
- )
+ minute != this.getMinute(debutAppel)
+ )
},
- isDepart : function (heure, minute) {
+ isDepart:function (heure, minute) {
var finAppel = undefined;
if (!this.lastDataAppelLigne) {
if (this.dataAppel) {
}
return (heure != this.getHeure(finAppel) ||
- minute != this.getMinute(finAppel)
- )
+ minute != this.getMinute(finAppel)
+ )
},
- isRetardDepartHeuresValidees : function () {
+ isRetardDepartHeuresValidees:function () {
var plagesHoraires = undefined;
if (this.dataAppel) {
// Initilisation des plages horaires
plagesHoraires = this.getPlageHoraire(this.dataAppel);
} else {
plagesHoraires = this.getPlageHoraireHebdo(
- this.dataAppelLigne,
- this.lastDataAppelLigne
- );
+ this.dataAppelLigne,
+ this.lastDataAppelLigne
+ );
}
var dateDebutModifs = new Date(2000,
- 1,
- 1,
- this.spinHeureRetard.getValue(),
- this.spinMinuteRetard.getValue(),
- 00
- );
+ 1,
+ 1,
+ this.spinHeureRetard.getValue(),
+ this.spinMinuteRetard.getValue(),
+ 00
+ );
var dateFinModifs = new Date(2000,
- 1,
- 1,
- this.spinHeureDepart.getValue(),
- this.spinMinuteDepart.getValue(),
- 00
- );
+ 1,
+ 1,
+ this.spinHeureDepart.getValue(),
+ this.spinMinuteDepart.getValue(),
+ 00
+ );
var dateDebutPlageHoraire = new Date(2000,
- 1,
- 1,
- parseInt(plagesHoraires.heureDebut),
- parseInt(plagesHoraires.minuteDebut),
- 00
- );
+ 1,
+ 1,
+ parseInt(plagesHoraires.heureDebut),
+ parseInt(plagesHoraires.minuteDebut),
+ 00
+ );
var dateFinPlageHoraire = new Date(2000,
- 1,
- 1,
- parseInt(plagesHoraires.heureFin),
- parseInt(plagesHoraires.minuteFin),
- 00
- );
+ 1,
+ 1,
+ parseInt(plagesHoraires.heureFin),
+ parseInt(plagesHoraires.minuteFin),
+ 00
+ );
return (
- dateDebutModifs <= dateFinModifs &&
- dateDebutPlageHoraire <= dateDebutModifs &&
- dateDebutModifs <= dateFinPlageHoraire &&
- dateDebutPlageHoraire <= dateFinModifs &&
- dateFinModifs <= dateFinPlageHoraire
- )
+ dateDebutModifs <= dateFinModifs &&
+ dateDebutPlageHoraire <= dateDebutModifs &&
+ dateDebutModifs <= dateFinPlageHoraire &&
+ dateDebutPlageHoraire <= dateFinModifs &&
+ dateFinModifs <= dateFinPlageHoraire
+ )
},
- getPlageHoraire : function(dataAppel) {
+ getPlageHoraire:function (dataAppel) {
var plagesHoraires = {
- heureDebut: this.getHeure(
- dataAppel.get('debutAppel')
- ),
- minuteDebut : this.getMinute(
- dataAppel.get('debutAppel')
- ),
- heureFin : this.getHeure(
- dataAppel.get('finAppel')
- ),
- minuteFin : this.getMinute(
- dataAppel.get('finAppel')
- )
+ heureDebut:this.getHeure(
+ dataAppel.get('debutAppel')
+ ),
+ minuteDebut:this.getMinute(
+ dataAppel.get('debutAppel')
+ ),
+ heureFin:this.getHeure(
+ dataAppel.get('finAppel')
+ ),
+ minuteFin:this.getMinute(
+ dataAppel.get('finAppel')
+ )
};
return plagesHoraires;
},
- getPlageHoraireHebdo : function(dataLigneAppel, lastDataAppelLigne) {
+ getPlageHoraireHebdo:function (dataLigneAppel, lastDataAppelLigne) {
var plagesHoraires = {
- heureDebut: this.getHeure(
- dataLigneAppel.get('dateDebut')
- ),
- minuteDebut : this.getMinute(
- dataLigneAppel.get('dateDebut')
- )
+ heureDebut:this.getHeure(
+ dataLigneAppel.get('dateDebut')
+ ),
+ minuteDebut:this.getMinute(
+ dataLigneAppel.get('dateDebut')
+ )
};
if (!lastDataAppelLigne) {
plagesHoraires.heureFin = this.getHeure(
- dataLigneAppel.get('dateFin')
- );
+ dataLigneAppel.get('dateFin')
+ );
plagesHoraires.minuteFin = this.getMinute(
- dataLigneAppel.get('dateFin')
- );
+ dataLigneAppel.get('dateFin')
+ );
} else {
plagesHoraires.heureFin = this.getHeure(
- lastDataAppelLigne.get('dateFin')
- );
+ lastDataAppelLigne.get('dateFin')
+ );
plagesHoraires.minuteFin = this.getMinute(
- lastDataAppelLigne.get('dateFin')
- );
+ lastDataAppelLigne.get('dateFin')
+ );
}
return plagesHoraires;
},
- showErreur : function(message) {
+ showErreur:function (message) {
var messageErreur = message ? '<ul><li class="error">' +
- message + '</li></ul>' : '';
+ message + '</li></ul>' : '';
var divmessageErreur = this.Constantes.divId.divMessageEditionAbsence;
Ext.get(divmessageErreur).update(messageErreur);
},
- resetMessages: function() {
+ resetMessages:function () {
var divmessageErreur = this.Constantes.divId.divMessageEditionAbsence;
if (Ext.get(divmessageErreur)) {
Ext.get(divmessageErreur).update('');
Ext.ns('eliot.absences.saisie.absence.prof');
-eliot.absences.saisie.absence.prof.Application = function() {
+eliot.absences.saisie.absence.prof.Application = function () {
var Clazz = Ext.extend(Ext.util.Observable, {
- constructor: function() {
+ constructor:function () {
var Modele = eliot.absences.saisie.absence.prof.Modele;
var ModeleAbsence = eliot.absences.saisie.absence.Modele;
var Constantes = eliot.absences.saisie.absence.prof.Constantes;
var NameSpaceCommuns = eliot.absences.commons;
/*************************** Toolbar ***************************/
- // Toolbar View
- var toolbarView = new eliot.absences.commons.SaveCancelToolBarView();
+ var toolbarView = new NameSpace.ToolbarView();
/***************** Partie liée à emploi du temps ******************/
// Date
var dateController = new eliot.absences.commons.DateController({
- date : ModeleAbsence.data.date
+ date:ModeleAbsence.data.date
});
var dateView = new eliot.absences.commons.DateView({
- date : ModeleAbsence.data.date,
- anneeScolaire : Ext.decode(eliot.absences.saisie.absence.Modele.data.
+ date:ModeleAbsence.data.date,
+ anneeScolaire:Ext.decode(eliot.absences.saisie.absence.Modele.data.
anneeScolaire),
- fieldLabel : Modele.libelle.datePicker,
- champObligatoir : false,
- disabledDates : ModeleAbsence.data.disabledDates,
- disabledDays : ModeleAbsence.data.disabledDays
+ fieldLabel:Modele.libelle.datePicker,
+ champObligatoir:false,
+ disabledDates:ModeleAbsence.data.disabledDates,
+ disabledDays:ModeleAbsence.data.disabledDays
});
dateController.observeDateView(dateView);
// Panel lie à emploi du temps
var panelSaisieTemps = new NameSpace.PanelSaisieTempsView({
- modeSaisie : NameSpace.Modele.data.modeSaisie
+ modeSaisie:NameSpace.Modele.data.modeSaisie
});
/************************ Changement de page ****************************/
}
// PageController
var pageController = new NameSpaceCommuns.PageController({
- date: date,
- enseignantId: NameSpace.Modele.data.enseignantId,
- structureEnseignementId: eliot.absences.saisie.absence.Modele.data.
+ date:date,
+ enseignantId:NameSpace.Modele.data.enseignantId,
+ structureEnseignementId:eliot.absences.saisie.absence.Modele.data.
structureEnseignementId,
- evenementId : NameSpace.Modele.data.evenementId,
- modeSaisie : modeSaisie
+ evenementId:NameSpace.Modele.data.evenementId,
+ modeSaisie:modeSaisie
});
pageController.observeDateController(dateController);
if (Modele.data.isSaisieHorsEDT) {
pageController.observeStructureEnseignementController(
panelSaisieTemps.saisieHorsEDTView.structureEnseignementController
- );
+ );
}
/***************** Construction de la feuille d'appel ******************/
/***** Grid des appels + des plages horaires + Appel Controller *****/
var appelController = new NameSpaceCommuns.AppelController({
- dataGrilleHoraire: eliot.absences.saisie.absence.Modele.data.
+ dataGrilleHoraire:eliot.absences.saisie.absence.Modele.data.
grilleHoraire,
- date : date
+ date:date
});
appelController.observeDateController(dateController);
appelController.observePanelSaisieTemps(panelSaisieTemps);
var gridAppelView = new NameSpaceCommuns.GridAppelView({
- storeContenuGrilleHoraire: appelController.storeContenuGrilleHoraire,
- storeEnteteGrilleHoraire: appelController.storeEnteteGrilleHoraire
+ storeContenuGrilleHoraire:appelController.storeContenuGrilleHoraire,
+ storeEnteteGrilleHoraire:appelController.storeEnteteGrilleHoraire
});
appelController.observeGridAppelView(gridAppelView);
/***** Grid des absences + Absences Controller *****/
var absencesController = new NameSpaceCommuns.AbsencesController({
- storeAppel: appelController.storeAppel,
- storeGrilleHoraire: appelController.storeEnteteGrilleHoraire,
- storeContenuGrilleHoraire: appelController.storeContenuGrilleHoraire,
- structureEnseignementId: eliot.absences.saisie.absence.Modele.data.
+ storeAppel:appelController.storeAppel,
+ storeGrilleHoraire:appelController.storeEnteteGrilleHoraire,
+ storeContenuGrilleHoraire:appelController.storeContenuGrilleHoraire,
+ structureEnseignementId:eliot.absences.saisie.absence.Modele.data.
structureEnseignementId,
- date : ModeleAbsence.data.date
+ date:ModeleAbsence.data.date
});
pageController.observeAbsencesController(absencesController);
var gridAbsencesView = new NameSpaceCommuns.GridAbsencesView({
- storeAbsences: absencesController.storeAbsences,
- storeAppel: appelController.storeAppel,
+ storeAbsences:absencesController.storeAbsences,
+ storeAppel:appelController.storeAppel,
storePlagesHoraires:appelController.storeEnteteGrilleHoraire
});
absencesController.observeAbsencesView(gridAbsencesView);
// Ajoute les composants dans la feuille d'appel
feuilleAppelView.addComposants({
- gridAppel: gridAppelView.grid,
- gridAbsences: gridAbsencesView.grid
+ gridAppel:gridAppelView.grid,
+ gridAbsences:gridAbsencesView.grid
});
/**** Branchements différents ****/
- // Les scrolls
+ // Les scrolls
gridAbsencesView.observeGridAppelView(gridAppelView);
gridAppelView.observeGridAbsencesView(gridAbsencesView);
+ gridAbsencesView.observeAbsencesController(absencesController);
// Brachement de la toolbar
absencesController.observeToolbarView(toolbarView);
panelSaisieTemps.saisieEDTView.arbreEDT.setValide(
absencesController.isDirty.createDelegate(
absencesController, []
- )
- );
+ )
+ );
gridAppelView.setValide(
absencesController.isDirty.createDelegate(
absencesController, []
- )
- );
+ )
+ );
appelController.setValide(
absencesController.isDirty.createDelegate(
absencesController, []
- )
- );
+ )
+ );
dateView.setValide(
absencesController.isDirty.createDelegate(
absencesController, []
- )
- );
+ )
+ );
if (Modele.data.isSaisieHorsEDT) {
panelSaisieTemps.saisieHorsEDTView.structureEnseignementView.setValide(
absencesController.isDirty.createDelegate(
absencesController, []
- )
- );
+ )
+ );
}
}
var centerRegionItems = [
{
- id: Constantes.regionId.center,
+ id:Constantes.regionId.center,
xtype:'panel',
layout:'border',
- border: false,
- autoScroll: true,
- autoShow : true,
- items: [
+ border:false,
+ autoScroll:true,
+ autoShow:true,
+ defaults:{
+ border:false,
+ frame:false
+ },
+ items:[
{
- region : 'north',
- height : 45,
- border: false,
- items : toolbarView.toolbar
+ xtype:'panel',
+ region:'west',
+ split:true,
+ collapseMode:'mini',
+ width:270,
+ defaults:{
+ border:false,
+ frame:false
+ },
+ items:[
+ {
+ id:Constantes.regionId.datePickerPanel,
+ region:'north',
+ layout:'form',
+ frame:true,
+ height:45,
+ bodyStyle:'padding:5px 5px 5px',
+ labelAlign:'left',
+ labelWidth:80,
+ items:dateView.dateField
+ },
+ {
+ id:Constantes.regionId.accordionPanel,
+ region:'center',
+ xtype:'panel',
+ items:panelSaisieTemps.panelSaisieTemps
+ }
+ ]
},
{
- region : 'center',
- xtype : 'panel',
- layout : 'border',
- border: false,
- frame : false,
- items : [
+ region:'center',
+ layout:'border',
+ border:false,
+ frame:false,
+ defaults:{
+ border:false,
+ frame:false
+ },
+ items:[
{
- xtype : 'panel',
- region: 'west',
- split : true,
- collapseMode: 'mini',
- width:270,
- border: false,
- items:[
- {
- id: Constantes.regionId.datePickerPanel,
- region: 'north',
- layout: 'form',
- frame : true,
- border: false,
- height : 36,
- bodyStyle:'padding:0px 5px 5px',
- labelAlign : 'left',
- labelWidth : 80,
- items : dateView.dateField
- },
- {
- id: Constantes.regionId.accordionPanel,
- region : 'center',
- xtype : 'panel',
- border: false,
- frame : false,
- items : panelSaisieTemps.panelSaisieTemps
- }
- ]
+ region:'north',
+ height:45,
+ items:toolbarView.toolbar
},
{
- xtype : 'panel',
- region: 'center',
- layout: 'fit',
- border: false,
- frame : false,
- items: feuilleAppelView.panelFeuille
+ region:'center',
+ xtype:'panel',
+ layout:'fit',
+ items:feuilleAppelView.panelFeuille
}
]
}
}
// Rendu du viewport
- Ext.onReady(function() {
+ Ext.onReady(function () {
eliot.layout.doLayout(
Constantes.regionId.viewPort,
Constantes.regionId.northPanel,
centerRegionItems,
messageConfirmation,
messageErreur
- );
+ );
});
// Supprime la progresse barre
- setTimeout(function() {
+ setTimeout(function () {
Ext.get('loading').remove();
Ext.get('loading-mask').fadeOut({remove:true});
}, 100);
/**
* Teste si les données nécessaires à la saisie d'un appel sont disponibles
*/
- isSaisieAppelReady : function() {
+ isSaisieAppelReady:function () {
var ModeleSaisieCommun = eliot.absences.saisie.absence.Modele;
var ModeleAbsenceProf = eliot.absences.saisie.absence.prof.Modele;
return (
actionSelectionEVT : 'actionSelectionEVT',
actionPanelTempsFerme : 'actionPanelTempsFerme',
actionPanelTempsOuvert : 'actionPanelTempsOuvert',
- evenementSelectionne : 'evenementSelectionne'
+ evenementSelectionne : 'evenementSelectionne',
+ actionReinitialiser : 'actionReinitialiser',
+ actionEnregistrer : 'actionEnregistrer',
+ actionChangeTypeAbcence : 'actionChangeTypeAbcence'
}
};
\ No newline at end of file
},
libelle : {
- datePicker : undefined
+ datePicker : undefined,
+ absence : undefined,
+ retardDepart : undefined
},
dataIndex : {
--- /dev/null
+/*
+ * Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009
+ * This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).
+ *
+ * Lilie is free software. You can redistribute it and/or modify since
+ * you respect the terms of either (at least one of the both license) :
+ * - under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ * - the CeCILL-C as published by CeCILL-C; either version 1 of the
+ * License, or any later version
+ *
+ * There are special exceptions to the terms and conditions of the
+ * licenses as they are applied to this software. View the full text of
+ * the exception in file LICENSE.txt in the directory of this software
+ * distribution.
+ *
+ * Lilie is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * Licenses for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * and the CeCILL-C along with Lilie. If not, see :
+ * <http://www.gnu.org/licenses/> and
+ * <http://www.cecill.info/licences.fr.html>.
+ */
+
+/**
+ * Représente la toolbar de la page de saisie des absences par prof
+ * @author bahj
+ */
+
+Ext.ns('eliot.absences.saisie.absence.prof');
+
+
+eliot.absences.saisie.absence.prof.ToolbarView = Ext.extend(Ext.util.Observable, {
+
+ /**
+ * Constructeur permet de construire un toolbar qui contient les élèments suivants:
+ * les types de la saisie d'absences:
+ * - Absence
+ * - retard /départ
+ *
+ * boutons : "Annuler" et "Enregistrer"
+ *
+ */
+ constructor:function () {
+
+ // Variables
+ this.Constantes = eliot.absences.saisie.absence.prof.Constantes;
+ this.Modele = eliot.absences.saisie.absence.prof.Modele;
+
+ // Evénements
+ this.addEvents(
+ /**
+ * @event actionReinitialiser est déclenché quand on clique sur
+ * bouton 'annuler'
+ */
+ this.Constantes.eventId.actionReinitialiser,
+ /**
+ * @event actionEnregistrer est déclenché quand on clique sur
+ * bouton 'Enregistrer'
+ */
+ this.Constantes.eventId.actionEnregistrer
+ );
+
+ this.toolbar = new Ext.FormPanel(this.getConfigToolBar());
+ },
+
+ getConfigToolBar:function () {
+ return {
+ frame:true,
+ labelAlign:'right',
+ buttonAlign:'right',
+ bodyStyle:'padding:5px 5px 5px',
+ items:{
+ layout:'column',
+ items:[
+ {
+ width:400,
+ items:this.getTypeRadioGroupe()
+ },
+ {
+ width:90,
+ items:this.getEnregistrerBouton()
+ },
+ {
+ width:90,
+ items:this.getSupprimerBouton()
+ }
+ ]
+ }
+ }
+ },
+
+ getTypeRadioGroupe:function () {
+ return {
+ width:220,
+ xtype:'radiogroup',
+ items:[
+ {
+ hideLabel:true,
+ checked:true,
+ boxLabel:this.Modele.libelle.absence,
+ name:'option',
+ inputValue:this.Modele.libelle.absence,
+ listeners:{
+ check:function (combo, checked) {
+ this.actionTypeChange(
+ this.Modele.libelle.absence,
+ checked
+ );
+ },
+ scope:this
+ }
+
+ },
+ {
+ hideLabel:true,
+ boxLabel:this.Modele.libelle.retardDepart,
+ name:'option',
+ inputValue:this.Modele.libelle.retardDepart,
+ listeners:{
+ check:function (combo, checked) {
+ this.actionTypeChange(
+ this.Modele.libelle.retardDepart,
+ checked
+ );
+ },
+ scope:this
+ }
+ }
+ ]
+ };
+ },
+
+ getEnregistrerBouton:function () {
+ return {
+ xtype:'tbbutton',
+ text:this.Modele.libelle.enregistrer,
+ cls:'add16',
+ handler:function () {
+ eliot.absences.Message.resetMessages();
+ this.fireEvent(
+ this.Constantes.eventId.actionEnregistrer
+ );
+ },
+ scope:this
+ };
+ },
+
+ getSupprimerBouton:function () {
+ return {
+ xtype:'tbbutton',
+ cls:'add16',
+ text:this.Modele.libelle.annuler,
+ handler:function () {
+ eliot.absences.Message.resetMessages();
+ this.fireEvent(
+ this.Constantes.eventId.actionReinitialiser
+ );
+ },
+ scope:this
+ };
+ },
+
+ actionTypeChange:function (option, checked) {
+ if (checked) {
+ this.fireEvent(
+ this.Constantes.eventId.actionChangeTypeAbcence,
+ option
+ );
+ }
+ }
+});
\ No newline at end of file
Ext.ns('eliot.absences.saisie.hebdomadaire.parClasse');
eliot.absences.saisie.hebdomadaire.CalendrierHebdoController = Ext.extend(Ext.util.Observable, {
- constructor: function(config) {
+ constructor:function (config) {
var defaultConfig = {
- date : new Date(),
- eleveId : undefined
+ date:new Date(),
+ eleveId:undefined
};
Ext.applyIf(config, defaultConfig);
this.structureSelectionnee = undefined;
this.date = config.date;
this.weekNumber = this.date.getWeekOfYear();
- this.typeAbsence = this.NsCommon.OptionSaisieViewModele.libelle.
- saisieValable;
+ this.typeAbsence = this.NsCommon.OptionSaisieViewModele.libelle.saisieValable;
this.motifSelectionneInfo = {
- id : this.Modele.data.sansMotifId,
- couleur : this.Constantes.couleur.sansMotif
+ id:this.Modele.data.sansMotifId,
+ couleur:this.Constantes.couleur.sansMotif
};
this.addEvents(
- /**
- * @event calendrierMasquer déclenché quand une classe est sélectionnée
- */
+ /**
+ * @event calendrierMasquer déclenché quand une classe est sélectionnée
+ */
this.Constantes.eventId.calendrierMasquer,
- /**
- * @event calendrierShow déclenché quand un élève est sélectionnée
- */
+ /**
+ * @event calendrierShow déclenché quand un élève est sélectionnée
+ */
this.Constantes.eventId.calendrierShow,
- /**
- * @event updateEnteteColonne déclenché quand le grille calendrier
- * rechargé
- */
+ /**
+ * @event updateEnteteColonne déclenché quand le grille calendrier
+ * rechargé
+ */
this.Constantes.eventId.updateEnteteColonne,
- /**
- *
- */
- this.Constantes.eventId.isDirty
- );
+ /**
+ *
+ */
+ this.Constantes.eventId.isDirty,
+
+ this.Constantes.eventId.actionEditeRetardDepart
+ );
//Description du store
this.store = new Ext.data.Store({
- autoLoad : false,
- url : this.Modele.url.getPlagesHoraires,
- autoSave: false,
- reader: new Ext.data.JsonReader(
- {
- messageProperty: 'message',
- root: 'data',
- idProperty: this.Constantes.id.plageHoraireId,
- fields: [
- {
- name: this.Constantes.dataIndex.dateDebut,
- type: 'string'
- },
+ autoLoad:false,
+ url:this.Modele.url.getPlagesHoraires,
+ autoSave:false,
+ reader:new Ext.data.JsonReader(
{
- name: this.Constantes.dataIndex.dateFin,
- type: 'string'
- },
- {
- name: this.Constantes.dataIndex.jour +
- this.Constantes.jourId.lundi
-
- },
- {
- name: this.Constantes.dataIndex.jour +
- this.Constantes.jourId.mardi
-
- },
- {
- name: this.Constantes.dataIndex.jour +
- this.Constantes.jourId.mercredi
-
- },
- {
- name: this.Constantes.dataIndex.jour +
- this.Constantes.jourId.jeudi
-
- },
- {
- name: this.Constantes.dataIndex.jour +
- this.Constantes.jourId.vendredi
-
- },
- {
- name: this.Constantes.dataIndex.jour +
- this.Constantes.jourId.samedi
-
- },
- {
- name: this.Constantes.dataIndex.jour +
- this.Constantes.jourId.dimanche
-
- },
- {
- name: this.Constantes.dataIndex.jourFermetureSemaine,
- type: 'int'
- },
- {
- name: this.Constantes.dataIndex.matin
- }
- ]
- }),
- writer: new Ext.data.JsonWriter({
- encode: true
+ messageProperty:'message',
+ root:'data',
+ idProperty:this.Constantes.id.plageHoraireId,
+ fields:[
+ {
+ name:this.Constantes.dataIndex.dateDebut,
+ type:'string'
+ },
+ {
+ name:this.Constantes.dataIndex.dateFin,
+ type:'string'
+ },
+ {
+ name:this.Constantes.dataIndex.jour +
+ this.Constantes.jourId.lundi
+
+ },
+ {
+ name:this.Constantes.dataIndex.jour +
+ this.Constantes.jourId.mardi
+
+ },
+ {
+ name:this.Constantes.dataIndex.jour +
+ this.Constantes.jourId.mercredi
+
+ },
+ {
+ name:this.Constantes.dataIndex.jour +
+ this.Constantes.jourId.jeudi
+
+ },
+ {
+ name:this.Constantes.dataIndex.jour +
+ this.Constantes.jourId.vendredi
+
+ },
+ {
+ name:this.Constantes.dataIndex.jour +
+ this.Constantes.jourId.samedi
+
+ },
+ {
+ name:this.Constantes.dataIndex.jour +
+ this.Constantes.jourId.dimanche
+
+ },
+ {
+ name:this.Constantes.dataIndex.jourFermetureSemaine,
+ type:'int'
+ },
+ {
+ name:this.Constantes.dataIndex.matin
+ }
+ ]
+ }),
+ writer:new Ext.data.JsonWriter({
+ encode:true
})
});
},
* Observe les événements déclenchés par toolbar(annuler et enregistrer)
* @param toolbarView
*/
- observeToolbarView : function (toolbarView) {
+ observeToolbarView:function (toolbarView) {
var Constantes = this.NsCommon.SaveCancelToolBarCompositViewConstantes;
toolbarView.addListener(
Constantes.eventId.actionAnnuleModifAbsences,
- function() {
+ function () {
this.annuleModifications();
},
this
- );
+ );
toolbarView.addListener(
Constantes.eventId.actionEnregistreAbsences,
- function() {
+ function () {
this.executeEnregistre();
},
this
- );
+ );
},
/**
* Observe les événements déclenchés par la vue du calendrier hebdo
* @param calendrierHebdoView
*/
- observeCalendrierHebdoView : function (calendrierHebdoView) {
+ observeCalendrierHebdoView:function (calendrierHebdoView) {
calendrierHebdoView.addListener(
this.Constantes.eventId.actionChangeEtatPlageHoraire,
- function(plageRowData, jourId) {
- this.prepareMotifInfo(plageRowData, jourId);
+ function (plageRowData, jourId) {
+ if (this.getEtatTypeAbsence(
+ this.NsCommon.OptionSaisieViewModele.libelle.retardDepart
+ )) {
+ this.actionEditionRetardDepart(plageRowData, jourId);
+ }
+ else {
+ this.prepareMotifInfo(plageRowData, jourId);
+ }
},
this
- );
+ );
calendrierHebdoView.addListener(
this.Constantes.eventId.actionSupprimeAbsence,
- function(dataLigneAbsence, jourId) {
+ function (dataLigneAbsence, jourId) {
var appelEffectuee = dataLigneAbsence.get('jour' + jourId).appelEffectue;
// Si c'est une absence hebdomadaire portée sur un appel
// on supprime cette absence sur toutes les plages
}
},
this
- );
+ );
calendrierHebdoView.addListener(
this.Constantes.eventId.actionModifieDetailsRetardDepart,
- function(dataAppelLigne, id, retardDepartInfo) {
+ function (dataAppelLigne, id, retardDepartInfo) {
var appelEffectuee = dataAppelLigne.get('jour' + id).appelEffectue;
var appelPlageHoraireIds = dataAppelLigne.get(
'jour' + id
- ).appelPlageHoraireIds;
+ ).appelPlageHoraireIds;
- // Permet de mettre l'esnemble des plage horaires
- // occupés en état modifié
+ // modifs de plusieurs cellules
if (appelEffectuee && appelPlageHoraireIds.length > 1) {
+
+
+ // Permet de mettre l'esnemble des plage horaires
+ // occupés en état modifié, crée une absence
for (var i = 0; i < appelPlageHoraireIds.length; i++) {
var dataLigneAbsences = this.store.getById(
appelPlageHoraireIds[i]
- );
- this.modifieAbsenceHebdo(dataLigneAbsences, id, {});
+ );
+ this.modifieAbsenceHebdo(dataLigneAbsences, id, {retardDepart:{absence:true}});
}
var lastId = appelPlageHoraireIds[appelPlageHoraireIds.length - 1];
var lastDataLigneAbsence = this.store.getById(
lastId
- );
+ );
var modifInfoDepart = {
- retardDepart : {
- depart : retardDepartInfo.depart,
- heureDepart : retardDepartInfo.heureDepart,
- commentaireDepart : retardDepartInfo.commentaireDepart
+ retardDepart:{
+ depart:retardDepartInfo.depart,
+ heureDepart:retardDepartInfo.heureDepart,
+ commentaireDepart:retardDepartInfo.commentaireDepart
}
};
retardDepartInfo.depart = false;
lastDataLigneAbsence,
id,
modifInfoDepart
- );
+ );
}
}
// Soit une absence hebdo sur plusieurs plage
// et donc le retard est porté par la première plage
var modifInfo = {
- retardDepart : retardDepartInfo
+ retardDepart:retardDepartInfo
};
this.modifieAbsenceHebdo(dataAppelLigne, id, modifInfo);
- // this.fireEvent(
- // this.Constantes.eventId.isDirty
- // );
},
this
- );
+ );
},
/**
* Observe les événements déclenchés par la date
* @param dateController
*/
- observeDateController : function (dateController) {
+ observeDateController:function (dateController) {
dateController.addListener(
this.NsCommon.DateControllerConstantes.eventId.dateChangee,
- function(dateSelectionnee) {
+ function (dateSelectionnee) {
this.date = dateSelectionnee;
if (this.eleveIdSelectionne &&
(this.weekNumber !== this.date.getWeekOfYear())) {
this.actionRechargeAbsenceHebdo(
this.eleveIdSelectionne,
this.structureSelectionnee
- );
+ );
}
// Mettre à jours le numéro de semaine
this.weekNumber = this.date.getWeekOfYear();
},
this
- );
+ );
},
/**
* Observe les événements déclenchés par le choix d'élève
*/
- observeEleveController : function(eleveGridController) {
+ observeEleveController:function (eleveGridController) {
eleveGridController.addListener(
this.Constantes.eventId.eleveSelectionneChange,
- function(eleveIdSelectionne, structureEnseignementId) {
+ function (eleveIdSelectionne, structureEnseignementId) {
this.eleveIdSelectionne = eleveIdSelectionne;
this.actionRechargeAbsenceHebdo(
eleveIdSelectionne,
structureEnseignementId
- );
+ );
this.fireEvent(this.Constantes.eventId.calendrierShow);
},
this
- );
+ );
eleveGridController.addListener(
this.Constantes.eventId.actionAucunePreselection,
- function() {
+ function () {
this.fireEvent(this.Constantes.eventId.calendrierMasquer);
},
this
- );
+ );
},
/**
* Observe événement déclenché par le comboBox de structure enseignement
* @param structureEnsController
*/
- observeStructureEnsController : function(structureEnsController) {
+ observeStructureEnsController:function (structureEnsController) {
structureEnsController.addListener(
this.NsCommon.ComboStructureEnsControllerConstantes.eventId.
structureEnseignementSelectionne,
- function(structureEnseignementId) {
+ function (structureEnseignementId) {
this.structureSelectionnee = structureEnseignementId;
this.fireEvent(
this.Constantes.eventId.calendrierMasquer
- );
+ );
},
this
- );
+ );
},
/**
* Observe événement déclenché par choix d'option(type d'absence)
* @param optionSaisieView
*/
- observeOptionSaisieView : function (optionSaisieView) {
+ observeOptionSaisieView:function (optionSaisieView) {
optionSaisieView.addListener(
this.NsCommon.OptionSaisieViewConstantes.eventId.
actionChangeTypeAbcence,
this.actionTypeAbsenceChange,
this
- );
+ );
},
/**
* Observe événement déclenché par choix de motif
* @param arbreMotifs
*/
- observeMotifs : function (arbreMotifs) {
+ observeMotifs:function (arbreMotifs) {
arbreMotifs.addListener(
this.NsCommon.ArbreMotifViewConstantes.eventId.
motifSelectionne,
this.actionMotifChange,
this
- );
+ );
+ },
+
+ actionEditionRetardDepart:function (plageRowData, jourId) {
+ this.fireEvent(
+ this.Constantes.eventId.actionEditeRetardDepart,
+ plageRowData,
+ jourId
+ )
},
+
/**
* Enlever tous les motifications sur grille d'absence hebdomataire
*/
- annuleModifications : function() {
+ annuleModifications:function () {
this.store.rejectChanges();
},
/**
* Enregistrer les modifications sur les absences hebdomataire
*/
- executeEnregistre : function() {
+ executeEnregistre:function () {
var data = this.prepareDataAEnregistrer();
// Affichage de la loadMask
var myMask = this.construireLoadMask(
this.Modele.message.enregistrementMaskText
- );
+ );
myMask.show();
// Requête de sauvegarde
Ext.Ajax.request({
- scope : this,
- url: this.Modele.url.urlStoreAbsencesUpdate,
- params : {
- data : Ext.encode(data)
+ scope:this,
+ url:this.Modele.url.urlStoreAbsencesUpdate,
+ params:{
+ data:Ext.encode(data)
},
- failure : function(response, request) {
+ failure:function (response, request) {
myMask.hide();
eliot.absences.Message.showErreur(
this.Modele.message.erreurInconnue
- );
+ );
},
- success : function(response, request) {
+ success:function (response, request) {
myMask.hide();
var resultats = Ext.decode(response.responseText);
if (resultats.success) {
eliot.absences.Message.showConfirmation(
resultats.message
- );
+ );
if (!resultats.data) {
resultats.data = [];
// Récupère la ligne de plage d'horaire
var dataAbsencesLigne = this.store.getById(
current[this.Constantes.id.plageHoraireId]
- );
+ );
// Récupère l'absence correspondant à jourId
var absenceEleve = dataAbsencesLigne.get(
this.Constantes.dataIndex.jour +
current[this.Constantes.id.jourId]
- );
+ );
// Ajoute l'id de l'absence
});
},
- construireLoadMask : function(message) {
+ construireLoadMask:function (message) {
var myMask = new Ext.LoadMask(
Ext.getBody(),
- {
- msg : message
- }
- );
+ {
+ msg:message
+ }
+ );
return myMask;
},
/**
* Préparer une structure des données à enregistrer
*/
- prepareDataAEnregistrer : function() {
+ prepareDataAEnregistrer:function () {
var data = {};
var absenceInfo = [];
data = {
- date : this.date,
- eleveId : this.eleveIdSelectionne,
- absenceInfo : absenceInfo
+ date:this.date,
+ eleveId:this.eleveIdSelectionne,
+ absenceInfo:absenceInfo
};
var modifiedRecords = this.store.getModifiedRecords();
* @param plageRowData record en ligne par plage d'horaire
* @param jourId id du jour
*/
- prepareMotifInfo : function(plageRowData, jourId) {
+ prepareMotifInfo:function (plageRowData, jourId) {
var libelle = this.NsCommon.OptionSaisieViewModele.libelle;
var modifInfo = {
- principales : {
- motifId : this.motifSelectionneInfo.id,
- couleurMotif :this.motifSelectionneInfo.couleur,
- valable : this.getEtatTypeAbsence(libelle.saisieValable),
- nonValable : this.getEtatTypeAbsence(libelle.saisieNonValable),
- previsionnel : this.getEtatTypeAbsence(
+ principales:{
+ motifId:this.motifSelectionneInfo.id,
+ couleurMotif:this.motifSelectionneInfo.couleur,
+ valable:this.getEtatTypeAbsence(libelle.saisieValable),
+ nonValable:this.getEtatTypeAbsence(libelle.saisieNonValable),
+ previsionnel:this.getEtatTypeAbsence(
libelle.saisiePrevisionnelle
- )
+ )
}
};
* @return true si ce type d'absence est choisi, sinon false
* @param type type d'absence
*/
- getEtatTypeAbsence : function(type) {
+ getEtatTypeAbsence:function (type) {
return (this.typeAbsence === type)
},
* @param modifInfo contient deux cas : info sur retard/départ
* info sur saisie des motif et type d'absence
*/
- modifieAbsenceHebdo : function(plageRowData, jourId, modifInfo) {
+ modifieAbsenceHebdo:function (plageRowData, jourId, modifInfo) {
var champsJour = this.Constantes.dataIndex.jour + jourId;
var celluleSelectionnee = plageRowData.get(champsJour);
var absenceCelluleSectionnee = celluleSelectionnee.absence;
return
}
+ // 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 ((
+ !absenceCelluleSectionnee ||
+ (absenceCelluleSectionnee && absenceCelluleSectionnee.aSupprimer)
+ ) &&
+ (modifInfo.retardDepart && modifInfo.retardDepart.absence)
+ ) {
+ return;
+ }
+
// Données par défault
var absenceModifiee = {};
if (absenceCelluleSectionnee) {
absenceModifiee.id = absenceCelluleSectionnee.id;
}
- absenceModifiee.jourId = jourId;
- absenceModifiee.depart = false;
- absenceModifiee.retard = false;
- absenceModifiee.absence = true;
+
+ Ext.applyIf(absenceModifiee, {
+ jourId:jourId,
+ depart:false,
+ retard:false,
+ absence:true,
+ motifId:this.motifSelectionneInfo.id,
+ couleur:this.motifSelectionneInfo.couleur
+ });
+
this.copieProprietes(absenceCelluleSectionnee, absenceModifiee);
if (modifInfo.principales) {
absenceModifiee.previsionnel = false;
}
- if (absenceModifiee.ASupprimer) {
- absenceModifiee.ASupprimer = undefined;
+ if (absenceModifiee.aSupprimer) {
+ absenceModifiee.aSupprimer = undefined;
}
var dataInit = plageRowData.get(champsJour);
* @param absenceActuelle
* @param absenceModifiee
*/
- copieProprietes : function(absenceActuelle, absenceModifiee) {
+ copieProprietes:function (absenceActuelle, absenceModifiee) {
for (var i in absenceActuelle) {
if (absenceActuelle.hasOwnProperty(i)) {
absenceModifiee[i] = (absenceActuelle[i]);
* le grille d'absence.
* @param eleveIdSelectionne
*/
- actionRechargeAbsenceHebdo : function(eleveIdSelectionne,
- structureEnseignementId
- ) {
+ actionRechargeAbsenceHebdo:function (eleveIdSelectionne, structureEnseignementId) {
var params = {};
params.date = this.date;
params.eleveId = eleveIdSelectionne;
* Exécution de rechargement d'absence
* @param params
*/
- executeRechargeAbsence : function(params) {
+ executeRechargeAbsence:function (params) {
var myMask = this.construireLoadMask(this.Modele.message.rechercheEnCours);
myMask.show();
Ext.Ajax.request({
- url: this.Modele.url.getPlagesHoraires,
- params:{absenceParams : Ext.encode(params)},
- success:function(response, request) {
+ url:this.Modele.url.getPlagesHoraires,
+ params:{absenceParams:Ext.encode(params)},
+ success:function (response, request) {
myMask.hide();
var reponse = Ext.decode(response.responseText);
if (reponse.success != true) {
this.fireEvent(
this.Constantes.eventId.updateEnteteColonne,
reponse.dateInfo
- );
+ );
}
}
},
- failure:function() {
+ failure:function () {
myMask.hide();
eliot.absences.Message.showErreur(
this.Modele.message.erreurInconnue
- );
+ );
},
- scope : this
+ scope:this
});
},
* Mettre à jours type d'absence
* @param option type d'absence choisi
*/
- actionTypeAbsenceChange : function(option) {
+ actionTypeAbsenceChange:function (option) {
this.typeAbsence = option;
},
* Mettre à jours le motif d'absence
* @param nodeMotif node de motif cliqué
*/
- actionMotifChange : function (nodeMotif) {
+ actionMotifChange:function (nodeMotif) {
if (nodeMotif.id.charAt(0) == 'm') {
var idMotif = nodeMotif.attributes['id'];
this.motifSelectionneInfo.couleur =
* à supprimer
* @param jourId id du jour
*/
- supprimeAbsence: function(dataAbsenceLigne, jourId) {
+ supprimeAbsence:function (dataAbsenceLigne, jourId) {
var absenceASupprimer = dataAbsenceLigne.get(
this.Constantes.dataIndex.jour + jourId
- );
+ );
var enregAModifier = {};
this.copieProprietes(absenceASupprimer, enregAModifier);
if (absenceASupprimer.absence.appelLigneId) {
enregAModifier.absence = {
- ASupprimer : true
+ aSupprimer:true
};
enregAModifier.absence.appelLigneId = absenceASupprimer.absence.appelLigneId;
dataAbsenceLigne.set(
this.Constantes.dataIndex.jour + jourId,
enregAModifier
- );
+ );
},
- isDirty:function() {
+ isDirty:function () {
if (this.store == undefined) {
return false;
}
eliot.absences.saisie.hebdomadaire.CalendrierHebdoView = Ext.extend(Ext.util.Observable, {
- constructor: function (config) {
+ constructor:function (config) {
// Config par défaut
var defaultConfig = {
- store : undefined
+ store:undefined
};
Ext.applyIf(config, defaultConfig);
// Menu contextuel, contient : modifier et supprimer
this.menuContextuel = new this.NsCommon.MenuContextuelAbsencesView({
- id : this.Constantes.id.jourId
+ id:this.Constantes.id.jourId
});
//Fenêtre de modification des absences
this.windowEditeAbsenceView = new this.NsCommon.WindowEditeAbsencesView();
this.addEvents(
- /**
- * @event déclenché sur un click d'une cellule
- * @param rowIndex
- * @param columnIndex
- */
+ /**
+ * @event déclenché sur un click d'une cellule
+ * @param rowIndex
+ * @param columnIndex
+ */
this.Constantes.eventId.actionChangeEtatPlageHoraire,
- /**
- * @event actionSupprimeAbsence déclenché quand une absence est choisi à
- * supprimer
- * @param dataLigneAbsence data en ligne par plage horaire
- * @param jourId id du jour d'absence
- */
+ /**
+ * @event actionSupprimeAbsence déclenché quand une absence est choisi à
+ * supprimer
+ * @param dataLigneAbsence data en ligne par plage horaire
+ * @param jourId id du jour d'absence
+ */
this.Constantes.eventId.actionSupprimeAbsence
- );
+ );
this.lastClick = null;
// Grille d'absence hebdomataire
this.grilleAbsenceHebdo = new Ext.grid.EditorGridPanel({
- store: config.store,
- selModel: new Ext.grid.CellSelectionModel(),
- enableColumnMove: false,
- enableColumnResize: false,
- cm: new Ext.ux.grid.LockingColumnModel({
- defaults: {
- sortable: false,
- menuDisabled : true,
- width : 75
+ store:config.store,
+ selModel:new Ext.grid.CellSelectionModel(),
+ enableColumnMove:false,
+ enableColumnResize:false,
+ cm:new Ext.ux.grid.LockingColumnModel({
+ defaults:{
+ sortable:false,
+ menuDisabled:true,
+ width:75
},
- columns: [
+ columns:[
{
- id: this.Constantes.id.dateDebut,
- header: this.Modele.libelle.debut,
- dataIndex: this.Constantes.dataIndex.dateDebut,
- locked: true,
- width: 50,
- renderer: this.rendererPlagesHoraires.createDelegate(this)
+ id:this.Constantes.id.dateDebut,
+ header:this.Modele.libelle.debut,
+ dataIndex:this.Constantes.dataIndex.dateDebut,
+ locked:true,
+ width:50,
+ renderer:this.rendererPlagesHoraires.createDelegate(this)
},
{
- id: this.Constantes.id.dateFin,
- header: this.Modele.libelle.fin,
- dataIndex: this.Constantes.dataIndex.dateFin,
- locked: true,
- width: 50,
- renderer: this.rendererPlagesHoraires.createDelegate(this)
+ id:this.Constantes.id.dateFin,
+ header:this.Modele.libelle.fin,
+ dataIndex:this.Constantes.dataIndex.dateFin,
+ locked:true,
+ width:50,
+ renderer:this.rendererPlagesHoraires.createDelegate(this)
},
{
- id: this.Constantes.jourId.lundi,
- header: this.Modele.libelle.lundi,
- dataIndex: this.Constantes.dataIndex.jour +
+ id:this.Constantes.jourId.lundi,
+ header:this.Modele.libelle.lundi,
+ dataIndex:this.Constantes.dataIndex.jour +
this.Constantes.jourId.lundi,
- renderer: this.rendererGrilleLundi.createDelegate(this)
+ renderer:this.rendererGrilleLundi.createDelegate(this)
},
{
- id: this.Constantes.jourId.mardi,
- header: this.Modele.libelle.mardi,
- dataIndex: this.Constantes.dataIndex.jour +
+ id:this.Constantes.jourId.mardi,
+ header:this.Modele.libelle.mardi,
+ dataIndex:this.Constantes.dataIndex.jour +
this.Constantes.jourId.mardi,
- renderer: this.rendererGrilleMardi.createDelegate(this)
+ renderer:this.rendererGrilleMardi.createDelegate(this)
},
{
- id: this.Constantes.jourId.mercredi,
- header: this.Modele.libelle.mercredi,
- dataIndex: this.Constantes.dataIndex.jour +
+ id:this.Constantes.jourId.mercredi,
+ header:this.Modele.libelle.mercredi,
+ dataIndex:this.Constantes.dataIndex.jour +
this.Constantes.jourId.mercredi,
- renderer: this.rendererGrilleMercredi.createDelegate(this)
+ renderer:this.rendererGrilleMercredi.createDelegate(this)
},
{
- id: this.Constantes.jourId.jeudi,
- header: this.Modele.libelle.jeudi,
- dataIndex: this.Constantes.dataIndex.jour +
+ id:this.Constantes.jourId.jeudi,
+ header:this.Modele.libelle.jeudi,
+ dataIndex:this.Constantes.dataIndex.jour +
this.Constantes.jourId.jeudi,
- renderer: this.rendererGrilleJeudi.createDelegate(this)
+ renderer:this.rendererGrilleJeudi.createDelegate(this)
},
{
- id: this.Constantes.jourId.vendredi,
- header: this.Modele.libelle.vendredi,
- dataIndex: this.Constantes.dataIndex.jour +
+ id:this.Constantes.jourId.vendredi,
+ header:this.Modele.libelle.vendredi,
+ dataIndex:this.Constantes.dataIndex.jour +
this.Constantes.jourId.vendredi,
- renderer: this.rendererGrilleVendredi.createDelegate(this)
+ renderer:this.rendererGrilleVendredi.createDelegate(this)
},
{
- id: this.Constantes.jourId.samedi,
- header: this.Modele.libelle.samedi,
- dataIndex: this.Constantes.dataIndex.jour +
+ id:this.Constantes.jourId.samedi,
+ header:this.Modele.libelle.samedi,
+ dataIndex:this.Constantes.dataIndex.jour +
this.Constantes.jourId.samedi,
- renderer: this.rendererGrilleSamedi.createDelegate(this)
+ renderer:this.rendererGrilleSamedi.createDelegate(this)
},
{
- id: this.Constantes.jourId.dimanche,
- header: this.Modele.libelle.dimanche,
- dataIndex: this.Constantes.dataIndex.jour +
+ id:this.Constantes.jourId.dimanche,
+ header:this.Modele.libelle.dimanche,
+ dataIndex:this.Constantes.dataIndex.jour +
this.Constantes.jourId.dimanche,
- renderer: this.rendererGrilleDimanche.createDelegate(this)
+ renderer:this.rendererGrilleDimanche.createDelegate(this)
}
]
}),
- view: new Ext.ux.grid.LockingGridView()
+ view:new Ext.ux.grid.LockingGridView()
});
this.grilleAbsenceHebdo.getColumnModel().setHidden(
jourFermetureSemaine + 1,
true
- );
+ );
this.observeGrilleAbsenceHebdo();
this.observeMenuContextuel();
/**
* Observe la vue de grille absence
*/
- observeGrilleAbsenceHebdo : function () {
+ observeGrilleAbsenceHebdo:function () {
this.grilleAbsenceHebdo.addListener({
cellclick:{
- fn: function(grid, rowIndex, columnIndex, event) {
+ fn:function (grid, rowIndex, columnIndex, event) {
eliot.absences.Message.resetMessages();
if (columnIndex > 1) {
}
}
},
- scope: this
+ scope:this
},
- cellcontextmenu: {
- fn: function(grid, rowIndex, columnIndex, e) {
+ cellcontextmenu:{
+ fn:function (grid, rowIndex, columnIndex, e) {
if (columnIndex > 1) {
var dataLigneAbsence = grid.getStore().getAt(rowIndex);
var idJour = this.getAppelIdFromColumnIndex(columnIndex);
var absenceInfo = dataLigneAbsence.get(idJour);
- if (absenceInfo.absence && absenceInfo.absence.ASupprimer === undefined) {
+ if (absenceInfo.absence && absenceInfo.absence.aSupprimer === undefined) {
this.menuContextuel.showAt(
rowIndex,
e,
dataLigneAbsence,
absenceInfo.absence
- );
+ );
}
}
},
- scope: this
+ scope:this
}
});
},
* @param columnIndex
* @return position
*/
- calculePosition: function(rowIndex, columnIndex) {
+ calculePosition:function (rowIndex, columnIndex) {
var nbRow = this.grilleAbsenceHebdo.getStore().getCount();
return (columnIndex - 1) * nbRow + rowIndex;
},
* @param position
* @return [rowIndex, columnIndex]
*/
- calculeIndex: function(position) {
+ calculeIndex:function (position) {
var nbRow = this.grilleAbsenceHebdo.getStore().getCount();
var columnIndex = Math.floor(position / nbRow) + 1;
/**
* Change une plage horaire
*/
- changeEtatPlageHoraire: function(rowIndex, columnIndex, grid) {
+ changeEtatPlageHoraire:function (rowIndex, columnIndex, grid) {
var dataIndex = this.getAppelIdFromColumnIndex(columnIndex);
if ((dataIndex !== this.Constantes.dataIndex.dateDebut) &&
(dataIndex !== this.Constantes.dataIndex.dateFin)) {
/**
* Observe les événements déclenchés par menu contextuel
*/
- observeMenuContextuel : function () {
+ observeMenuContextuel:function () {
var Constantes = eliot.absences.commons.MenuContextuelAbsencesViewConstantes;
this.menuContextuel.addListener(
Constantes.eventId.actionSupprimeAbsence,
- function(dataLigneAbsence, jourId) {
+ function (dataLigneAbsence, jourId) {
this.fireEvent(
this.Constantes.eventId.actionSupprimeAbsence,
dataLigneAbsence,
jourId
- );
+ );
},
this
- );
+ );
this.menuContextuel.addListener(
Constantes.eventId.actionEditeDetailsAbsence,
- function(dataLigneAbsence, jourId) {
- this.actionEditAbsence(dataLigneAbsence, jourId);
+ function (dataLigneAbsence, jourId) {
+ this.actionEditionRetardDepart(dataLigneAbsence, jourId);
},
this
- );
+ );
},
/**
* Observe les événements déclenchés par dialogue pour éditer d'absence
* @param windowEditeAbsenceView
*/
- observeWindowEditeAbsenceView : function(windowEditeAbsenceView) {
+ observeWindowEditeAbsenceView:function (windowEditeAbsenceView) {
var Constantes = eliot.absences.commons.WindowEditeAbsenceViewConstantes;
windowEditeAbsenceView.addListener(
Constantes.eventId.actionSupprimeAbsence,
- function(dataLigneAbsence, jourId) {
+ function (dataLigneAbsence, jourId) {
this.fireEvent(
this.Constantes.eventId.actionSupprimeAbsence,
dataLigneAbsence,
jourId
- );
+ );
},
this
- );
+ );
windowEditeAbsenceView.addListener(
Constantes.eventId.actionModifieDetailsRetardDepart,
- function(dataAppelLigne, id, retradDepartInfo) {
+ function (dataAppelLigne, id, retradDepartInfo) {
this.fireEvent(
this.Constantes.eventId.actionModifieDetailsRetardDepart,
dataAppelLigne,
id,
retradDepartInfo
- );
+ );
},
this
- );
+ );
},
/**
* Observe les événements déclenchés par grille d'absence hebdo controller
* @param calendrierHebdoController
*/
- observeCalendrierHebdoController : function (calendrierHebdoController) {
+ observeCalendrierHebdoController:function (calendrierHebdoController) {
calendrierHebdoController.addListener(
this.Constantes.eventId.calendrierMasquer,
- function() {
+ function () {
this.grilleAbsenceHebdo.hide();
},
this
- );
+ );
calendrierHebdoController.addListener(
this.Constantes.eventId.calendrierShow,
- function() {
+ function () {
this.grilleAbsenceHebdo.show();
},
this
- );
+ );
calendrierHebdoController.addListener(
this.Constantes.eventId.updateEnteteColonne,
- function(dateInfo) {
+ function (dateInfo) {
var columnsList = this.grilleAbsenceHebdo.getColumnModel();
- for (var index = 0; index < dateInfo.length; index ++) {
+ for (var index = 0; index < dateInfo.length; index++) {
columnsList.setColumnHeader(index + 2, dateInfo[index].date);
}
},
this
- );
+ );
+ calendrierHebdoController.addListener(
+ this.Constantes.eventId.actionEditeRetardDepart,
+ this.actionEditionRetardDepart,
+ this
+ );
},
/**
- * Action pour passer à l'édition d'une absence
+ * Action pour passer à l'édition de retard /départ une absence
* @param dataLigneAbsence
* @param jourId
*/
- actionEditAbsence : function(dataLigneAbsence, jourId) {
+ actionEditionRetardDepart:function (dataLigneAbsence, jourId) {
var appelEffectuee = dataLigneAbsence.get('jour' + jourId).appelEffectue;
var appelPlageHoraireIds = dataLigneAbsence.get('jour' + jourId).appelPlageHoraireIds;
var lastDataLigneAbsence;
if (appelEffectuee && appelPlageHoraireIds.length > 1) {
dataLigneAbsence = this.grilleAbsenceHebdo.store.getById(
appelPlageHoraireIds[0]
- );
+ );
var lastId = appelPlageHoraireIds[appelPlageHoraireIds.length - 1];
lastDataLigneAbsence = this.grilleAbsenceHebdo.store.getById(
lastId
- );
+ );
}
this.windowEditeAbsenceView.afficherWindowEditeAbsenceView(
dataLigneAbsence,
jourId,
lastDataLigneAbsence
- );
+ );
},
* Récupérer dataIndex de cette colonne
* @param columnIndex
*/
- getAppelIdFromColumnIndex : function (columnIndex) {
+ getAppelIdFromColumnIndex:function (columnIndex) {
return this.grilleAbsenceHebdo.getColumnModel().getDataIndex(columnIndex);
},
* @param lignePlageHoraire index de la plage horaire
* @param style le style à appliquer
*/
- setStyleLigne : function (lignePlageHoraire, style) {
+ setStyleLigne:function (lignePlageHoraire, style) {
var lignePlage = this.grilleAbsenceHebdo.getView().getRow(
lignePlageHoraire
- );
+ );
Ext.DomHelper.applyStyles(
lignePlage,
style
- );
+ );
},
/**
* Convertit l'index d'une colonne de la table en id du jour correspondant
* @param columnIndex
*/
- getJourIdFromColumnIndex: function(columnIndex) {
+ getJourIdFromColumnIndex:function (columnIndex) {
switch (columnIndex) {
- case 2: return this.Constantes.jourId.lundi;
- case 3: return this.Constantes.jourId.mardi;
- case 4: return this.Constantes.jourId.mercredi;
- case 5: return this.Constantes.jourId.jeudi;
- case 6: return this.Constantes.jourId.vendredi;
- case 7: return this.Constantes.jourId.samedi;
- case 8: return this.Constantes.jourId.dimanche;
+ case 2:
+ return this.Constantes.jourId.lundi;
+ case 3:
+ return this.Constantes.jourId.mardi;
+ case 4:
+ return this.Constantes.jourId.mercredi;
+ case 5:
+ return this.Constantes.jourId.jeudi;
+ case 6:
+ return this.Constantes.jourId.vendredi;
+ case 7:
+ return this.Constantes.jourId.samedi;
+ case 8:
+ return this.Constantes.jourId.dimanche;
}
},
* @param obj
* @param record
*/
- rendererPlagesHoraires : function (val, obj, record) {
+ rendererPlagesHoraires:function (val, obj, record) {
if (record.data['matin']) {
obj.css += this.Constantes.css.plageMatin;
return val
* @param obj
* @param record
*/
- rendererGrille : function (val, obj, record, modified) {
+ rendererGrille:function (val, obj, record, modified) {
if (val.absence || val.absencePersistante) {
var divAbsence = this.rendererAbsences(val, obj, modified);
return divAbsence;
* @param obj
* @param record
*/
- rendererGrilleLundi : function (val, obj, record) {
+ rendererGrilleLundi:function (val, obj, record) {
var modified = false;
if (record.modified) {
modified = (record.modified.jour1 != undefined);
* @param obj
* @param record
*/
- rendererGrilleMardi : function (val, obj, record) {
+ rendererGrilleMardi:function (val, obj, record) {
var modified = false;
if (record.modified) {
modified = (record.modified.jour2 != undefined);
* @param obj
* @param record
*/
- rendererGrilleMercredi : function (val, obj, record) {
+ rendererGrilleMercredi:function (val, obj, record) {
var modified = false;
if (record.modified) {
modified = (record.modified.jour3 != undefined);
* @param obj
* @param record
*/
- rendererGrilleJeudi : function (val, obj, record) {
+ rendererGrilleJeudi:function (val, obj, record) {
var modified = false;
if (record.modified) {
modified = (record.modified.jour4 != undefined);
* @param obj
* @param record
*/
- rendererGrilleVendredi : function (val, obj, record) {
+ rendererGrilleVendredi:function (val, obj, record) {
var modified = false;
if (record.modified) {
modified = (record.modified.jour5 != undefined);
* @param obj
* @param record
*/
- rendererGrilleSamedi : function (val, obj, record) {
+ rendererGrilleSamedi:function (val, obj, record) {
var modified = false;
if (record.modified) {
modified = (record.modified.jour6 != undefined);
* @param obj
* @param record
*/
- rendererGrilleDimanche : function (val, obj, record) {
+ rendererGrilleDimanche:function (val, obj, record) {
var modified = false;
if (record.modified) {
modified = (record.modified.jour7 != undefined);
* correspant différents de types d'absence et motifs.
* @param val valeur de la cellule
*/
- rendererAbsences : function(val, obj, modified) {
+ rendererAbsences:function (val, obj, modified) {
var dataCellule = undefined;
var dataAbsence = undefined;
if (val.absence) {
dataAbsence = val.absencePersistante
}
dataCellule = {
- nonValable : dataAbsence.nonValable,
- previsionnel : dataAbsence.previsionnel,
- motifId : dataAbsence.motifId,
- retard : dataAbsence.retard,
- depart : dataAbsence.depart,
- couleur : dataAbsence.couleur,
- appelEffectue : val.appelEffectue
+ nonValable:dataAbsence.nonValable,
+ previsionnel:dataAbsence.previsionnel,
+ motifId:dataAbsence.motifId,
+ retard:dataAbsence.retard,
+ depart:dataAbsence.depart,
+ couleur:dataAbsence.couleur,
+ appelEffectue:val.appelEffectue
};
if (dataCellule) {
var divRetard = '';
* @param obj
* @param record
*/
- rendererPlageFermeture : function(val, obj, record, modified) {
+ rendererPlageFermeture:function (val, obj, record, modified) {
// Récupère l'id du jour de la cellule à rendre
var jourId = obj.id;
if (val.appelEffectue) {
* Retourne le nom de la colommne
* @param columnIndex l'index de la colomne
*/
- getFieldName : function (columnIndex) {
+ getFieldName:function (columnIndex) {
return this.grilleAbsenceHebdo.getColumnModel().getDataIndex(columnIndex)
}
});
actionEditeDetailsAbsence : 'actionEditeDetailsAbsence',
actionModifieDetailsRetardDepart : 'actionModifieDetailsRetardDepart',
updateEnteteColonne : 'updateEnteteColonne',
+ actionEditeRetardDepart : 'actionEditeRetardDepart',
isDirty : 'isDirty',
stopSelection : 'stopSelection',
startSelection : 'startSelection',
{
title : 'Types',
region: 'north',
- height:105,
+ height:130,
items :[
optionTypeView.options
]
{
title : 'Types',
region: 'north',
- height:105,
+ height:130,
items : optionTypeView.options
},
{
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 = {
};
this.addEvents(
- eliot.absences.saisie.saisie.Constantes.eventId.
- actionAppelValide
+ this.Constantes.eventId.actionAppelValide,
+ this.Constantes.eventId.actionEditeRetardDepart
);
// Charge la config fournie
},
observeAbsencesView:function (absencesView) {
- var Constantes = eliot.absences.saisie.saisie.Constantes;
- var Modele = eliot.absences.saisie.saisie.Modele;
-
absencesView.addListener(
- Constantes.eventId.actionModifieDetailsPrincipalsAbsence,
+ this.Constantes.eventId.actionEditeAbsence,
function (dataAppelLigne, appelEtId, columnIndex) {
- var modifInfo = {
- principales:{
- motifId:this.motifSelectionneInfo.id,
- couleurMotif:this.motifSelectionneInfo.couleur,
- valable:this.getEtatTypeAbsence(
- Modele.libelle.saisieValable
- ),
- nonValable:this.getEtatTypeAbsence(
- Modele.libelle.saisieNonValable
- ),
- previsionnel:this.getEtatTypeAbsence(
- Modele.libelle.saisiePrevisionnelle
- )
- }
- };
-
- this.actionModifieAbsence(dataAppelLigne, appelEtId, modifInfo, columnIndex);
+ if (this.getEtatTypeAbsence(this.Modele.libelle.retardDepart)) {
+ this.actionEditionRetardDepart(dataAppelLigne, appelEtId, columnIndex);
+ }
+ else {
+ this.actionEditionAbsence(dataAppelLigne, appelEtId, columnIndex);
+ }
},
this
);
absencesView.addListener(
- Constantes.eventId.actionModifieDetailsRetardDepart,
+ this.Constantes.eventId.actionModifieDetailsRetardDepart,
function (dataAppelLigne, appelEtId, retradDepartInfo, columnIndex) {
var modifInfo = {
retardDepart:retradDepartInfo
this
);
absencesView.addListener(
- Constantes.eventId.actionSupprimeAbsence,
+ this.Constantes.eventId.actionSupprimeAbsence,
this.supprimeAbsence,
this
);
},
observeToolbarView:function (toolbarView) {
- var Constantes = eliot.absences.saisie.saisie.Constantes;
-
toolbarView.addListener(
- Constantes.eventId.actionAnnuleModifAbsences,
+ this.Constantes.eventId.actionAnnuleModifAbsences,
this.annuleModif,
this
);
toolbarView.addListener(
- Constantes.eventId.actionEnregistreAbsences,
+ this.Constantes.eventId.actionEnregistreAbsences,
this.executeEnregistre,
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,
+ 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
*/
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;
+ }
if (!absenceActuelle) {
absenceActuelle = {}; // Création d'une nouvelle absence
retard:false,
absence:true,
appelId:appelId,
+ motifId:this.motifSelectionneInfo.id,
+ couleur:this.motifSelectionneInfo.couleur,
aSupprimer:undefined
});
this.copieProprietes(absenceActuelle, absenceModifiee);
- Ext.data.Record.id(dataAppelLigne);
-
if (modifInfo.principales) {
absenceModifiee.motifId = modifInfo.principales.motifId;
absenceModifiee.couleur = modifInfo.principales.couleurMotif;
if (absPrev) {
absenceModifiee.id = absPrev.id;
}
-
dataAppelLigne.set(appelEtId, absenceModifiee);
},
pageController.observeAbsencesController(absencesController);
gridAbsencesView.observeGridAppelView(gridAppelView);
+ gridAbsencesView.observeAbsencesController(absencesController);
gridAppelView.observeGridAbsencesView(gridAbsencesView);
// Branchement arbre des motifs
eliot.absences.saisie.saisie.Constantes = {
- eventId: {
- actionChangeEnseignant: 'actionChangeEnseignant',
- structureEnseignementVide: 'structureEnseignementVide',
- actionSelecteStructureEnseignement: 'actionSelecteStructureEnseignement',
- enseignantChange: 'enseignantChange',
- structureEnseignementSelectionne: 'structureEnseignementSelectionne',
- donneesPlagesHorairesChange: 'donneesPlagesHorairesChange',
- dateChangee: 'dateChangee',
+ eventId:{
+ actionChangeEnseignant:'actionChangeEnseignant',
+ structureEnseignementVide:'structureEnseignementVide',
+ actionSelecteStructureEnseignement:'actionSelecteStructureEnseignement',
+ enseignantChange:'enseignantChange',
+ structureEnseignementSelectionne:'structureEnseignementSelectionne',
+ donneesPlagesHorairesChange:'donneesPlagesHorairesChange',
+ dateChangee:'dateChangee',
actionChangeDate:'actionChangeDate',
actionClicGrilleHoraire:'actionClicGrilleHoraire',
- actionAfficheAppel : 'actionAfficheAppel',
- actionValideAppel: 'actionValideAppel',
- actionSupprimeAppel: 'actionSupprimeAppel',
- // Modification du type d'absence et du motif
- actionModifieDetailsPrincipalsAbsence : 'actionModifieDetailsPrincipalsAbsence',
+ actionAfficheAppel:'actionAfficheAppel',
+ actionValideAppel:'actionValideAppel',
+ actionSupprimeAppel:'actionSupprimeAppel',
+ // Création/Modification du type d'absence et du motif
+ actionEditeAbsence:'actionEditeAbsence',
// Action de modifier les propriétés principales d'une absence (motif, ...)
- actionEditeDetailsAbsence: 'actionEditeDetailsAbsence',
+ actionEditeRetardDepart:'actionEditeRetardDepart',
// Action de modifier les détails d'une absences (départ, retard, ...)
- actionModifieDetailsRetardDepart: 'actionModifieDetailsRetardDepart',
-
- actionSupprimeAbsence: 'actionSupprimeAbsence',
- actionAnnuleModifAbsences: 'actionAnnuleModifAbsences',
- actionEnregistreAbsences: 'actionEnregistreAbsences',
- actionChangeTypeAbcence : 'actionChangeTypeAbcence',
- actionAppelValide : 'actionAppelValide',
- actionAppelSupprime : 'actionAppelSupprime',
- actionAbsenceModifiee : 'actionAbsenceModifiee',
- actionScrollBar : 'actionScrollBar'
+ actionModifieDetailsRetardDepart:'actionModifieDetailsRetardDepart',
+
+ actionSupprimeAbsence:'actionSupprimeAbsence',
+ actionAnnuleModifAbsences:'actionAnnuleModifAbsences',
+ actionEnregistreAbsences:'actionEnregistreAbsences',
+ actionChangeTypeAbcence:'actionChangeTypeAbcence',
+ actionAppelValide:'actionAppelValide',
+ actionAppelSupprime:'actionAppelSupprime',
+ actionAbsenceModifiee:'actionAbsenceModifiee',
+ actionScrollBar:'actionScrollBar'
},
composantId:{
- toolBar: 'mainToolBar',
- idSaisieComboEnseignant: 'idSaisieComboEnseignant',
- idDateAppel: 'idDateAppel',
- idStructure: 'idStructure',
- idEnseignant: 'idEnseignant',
+ toolBar:'mainToolBar',
+ idSaisieComboEnseignant:'idSaisieComboEnseignant',
+ idDateAppel:'idDateAppel',
+ idStructure:'idStructure',
+ idEnseignant:'idEnseignant',
idChkJustifiee:'chk_justifiee',
idChkPrevisionnelle:'chk_previsionnelle',
- idCbDebut: 'idCbDebut',
- idCbFin: 'idCbFin',
- idBtnSuppr: 'idBtnSuppr',
- idBtnValider: 'idBtnValider',
- idBtnAnnuler: 'idBtnAnnuler',
+ idCbDebut:'idCbDebut',
+ idCbFin:'idCbFin',
+ idBtnSuppr:'idBtnSuppr',
+ idBtnValider:'idBtnValider',
+ idBtnAnnuler:'idBtnAnnuler',
idFieldArriveeHeure:'fieldArriveeHeure',
idFieldDescritionDepart:'fieldDescritionDepart',
idFieldDepartMinute:'fieldDepartMinute',
idFieldDepartHeure:'fieldDepartHeure',
idFieldDescritionRetard:'fieldDescritionRetard',
- idFieldArriveeMinute:'fieldArriveeMinute'
+ idFieldArriveeMinute:'fieldArriveeMinute',
+ boutonSupprimer:'boutonSupprimer'
},
- regionId : {
- center : 'idSaisieCenter',
- viewPort : 'idViewPortSaisie',
- northPanel : 'idNorthPanelSaisie',
- centerPanel: 'idCenterPanelSaisie'
+ regionId:{
+ center:'idSaisieCenter',
+ viewPort:'idViewPortSaisie',
+ northPanel:'idNorthPanelSaisie',
+ centerPanel:'idCenterPanelSaisie'
},
- id : {
- enseignantsTousId : 'Enseignants_Tous',
+ id:{
+ enseignantsTousId:'Enseignants_Tous',
// Patch pour les colonnes sans appels
- storeAppelDataIndexVide: 'storeAppelDataIndexVide'
+ storeAppelDataIndexVide:'storeAppelDataIndexVide'
},
- dimension: {
- largeurColonnePlageHoraire: 55,
- largeurColonneEleve: 130
+ dimension:{
+ largeurColonnePlageHoraire:55,
+ largeurColonneEleve:130
},
couleurs:{
plageHoraireFermee:'#BBBBBB'
},
- params: {
- idPlageDebut: 'idPlageDebut',
- idPlageFin: 'idPlageFin',
- date: 'date',
- idStructureEnseignement: 'idStructureEnseignement',
- idEnseignant: 'idEnseignant'
+ params:{
+ idPlageDebut:'idPlageDebut',
+ idPlageFin:'idPlageFin',
+ date:'date',
+ idStructureEnseignement:'idStructureEnseignement',
+ idEnseignant:'idEnseignant'
},
- divId : {
- divMessageEditionAbsence : 'divMessageEditionAbsence'
+ divId:{
+ divMessageEditionAbsence:'divMessageEditionAbsence'
}
};
\ No newline at end of file
eliot.absences.saisie.saisie.GridAbsencesView = Ext.extend(Ext.util.Observable, {
constructor:function (config) {
+ this.Constantes = eliot.absences.saisie.saisie.Constantes;
+
// Config par défaut
var cfg = {
storeAppel:undefined,
var Constantes = eliot.absences.saisie.saisie.Constantes;
this.addEvents(
- Constantes.eventId.actionModifieDetailsPrincipalsAbsence,
+ Constantes.eventId.actionEditeAbsence,
Constantes.eventId.actionSupprimeAbsence,
Constantes.eventId.actionScrollBar
);
fn:function (grid, rowIndex, columnIndex, event) {
eliot.absences.Message.resetMessages();
if (columnIndex > 0) { // Pas pour la colonne des élèves
- var dataIndex =
- this.getAppelIdFromColumnIndex(columnIndex);
+ var dataIndex = this.getAppelIdFromColumnIndex(columnIndex);
if (dataIndex !== Constantes.id.storeAppelDataIndexVide) {
+ var dataLigneAppel = grid.getStore().getAt(rowIndex);
+ var idAppel = this.getAppelIdFromColumnIndex(columnIndex);
this.fireEvent(
- eliot.absences.saisie.saisie.Constantes.
- eventId.actionModifieDetailsPrincipalsAbsence,
- grid.getStore().getAt(rowIndex),
- this.getAppelIdFromColumnIndex(columnIndex),
+ eliot.absences.saisie.saisie.Constantes.eventId.actionEditeAbsence,
+ dataLigneAppel,
+ idAppel,
columnIndex
)
}
});
},
+ observeAbsencesController:function (absencesController) {
+ absencesController.addListener(
+ this.Constantes.eventId.actionEditeRetardDepart,
+ this.actionEditionRetardDepart,
+ this
+ );
+ },
+
/**
* @private
*/
observeMenuContextuel:function (menuContextuel) {
- var Constantes = eliot.absences.saisie.saisie.Constantes;
-
menuContextuel.addListener(
- Constantes.eventId.actionEditeDetailsAbsence,
- this.actionEditeDetailsAbsence,
+ this.Constantes.eventId.actionEditeRetardDepart,
+ this.actionEditionRetardDepart,
this
);
menuContextuel.addListener(
- Constantes.eventId.actionSupprimeAbsence,
+ this.Constantes.eventId.actionSupprimeAbsence,
function (dataLigneAppel, appelId) {
this.fireEvent(
- Constantes.eventId.actionSupprimeAbsence,
+ this.Constantes.eventId.actionSupprimeAbsence,
dataLigneAppel,
appelId
);
observeWindowEditeAbsenceView:function (windowEditeAbsenceView) {
- var Constantes = eliot.absences.saisie.saisie.Constantes;
windowEditeAbsenceView.addListener(
- Constantes.eventId.actionSupprimeAbsence,
+ this.Constantes.eventId.actionSupprimeAbsence,
function (dataLigneAppel, appelId) {
this.fireEvent(
- Constantes.eventId.actionSupprimeAbsence,
+ this.Constantes.eventId.actionSupprimeAbsence,
dataLigneAppel,
appelId
);
);
//TOIMP récupérer les paramètres
windowEditeAbsenceView.addListener(
- Constantes.eventId.actionModifieDetailsRetardDepart,
+ this.Constantes.eventId.actionModifieDetailsRetardDepart,
function (dataAppelLigne, appelEtId, retradDepartInfo, columnIndex) {
this.fireEvent(
- Constantes.eventId.actionModifieDetailsRetardDepart,
+ this.Constantes.eventId.actionModifieDetailsRetardDepart,
dataAppelLigne,
appelEtId,
retradDepartInfo,
if (dataCellule.depart) {
divDepart = '<div class="departClasse"> </div>';
}
-
divCellule = '<div class="' + classMotif +
'" style="background-color:' +
dataCellule.couleur + ';height:14px;">' +
return this.grid.getColumnModel().getDataIndex(columnIndex);
},
- actionEditeDetailsAbsence:function (dataAppelLigne, appelId, columnIndex) {
+ actionEditionRetardDepart:function (dataAppelLigne, appelId, columnIndex) {
var dataAppel = this.storeAppel.getById(appelId);
+
this.windowEditeAbsenceView.afficherWindowEditeAbsenceView(
dataAppelLigne,
dataAppel,
var Constantes = eliot.absences.saisie.saisie.Constantes;
this.addEvents(
- Constantes.eventId.actionEditeDetailsAbsence,
+ Constantes.eventId.actionEditeRetardDepart,
Constantes.eventId.actionSupprimeAbsence
);
icon:Modele.url.urlImageModifier,
handler:function () {
this.fireEvent(
- Constantes.eventId.actionEditeDetailsAbsence,
+ Constantes.eventId.actionEditeRetardDepart,
this.dataAppelLigne,
this.appelId,
this.columnIndex
eliot.absences.saisie.saisie.Modele = {
url:{
- urlStoreComboEnseignant: undefined,
- urlStoreComboStructureEnseignement: undefined,
- urlStoreListePlagesHorairesDuJour: undefined,
- urlIndex: undefined,
- urlCreationAppel: undefined,
- urlSuppressionAppel: undefined,
- urlStoreAbsencesRead: undefined,
- urlStoreAbsencesUpdate: undefined,
- urlImageOk : undefined,
- urlImageAnnuler : undefined,
- urlImageModifier : undefined,
- urlImageSupprimer : undefined
+ urlStoreComboEnseignant:undefined,
+ urlStoreComboStructureEnseignement:undefined,
+ urlStoreListePlagesHorairesDuJour:undefined,
+ urlIndex:undefined,
+ urlCreationAppel:undefined,
+ urlSuppressionAppel:undefined,
+ urlStoreAbsencesRead:undefined,
+ urlStoreAbsencesUpdate:undefined,
+ urlImageOk:undefined,
+ urlImageAnnuler:undefined,
+ urlImageModifier:undefined,
+ urlImageSupprimer:undefined
},
- libelle : {
- libelleComboEnseignant: undefined,
- tous : undefined,
- libelleComboClasse: undefined,
- libelleComboClasseGroup: undefined,
- libelleDatePicker: undefined,
- messageErreurDeDatePickerDebut : undefined,
- messageErreurDeDatePickerFin : undefined,
- libelleModifier: undefined,
- libelleSupprimer: undefined,
- enregistrer: undefined,
- annulerModif: undefined,
- annulerModifDescription: undefined,
- arrivee : undefined,
- depart : undefined,
- descriptionDepart : undefined,
- descriptionArrivee : undefined,
- saisieInvalide : undefined,
- erreurInconnue: undefined,
+ libelle:{
+ libelleComboEnseignant:undefined,
+ tous:undefined,
+ libelleComboClasse:undefined,
+ libelleComboClasseGroup:undefined,
+ libelleDatePicker:undefined,
+ messageErreurDeDatePickerDebut:undefined,
+ messageErreurDeDatePickerFin:undefined,
+ libelleModifier:undefined,
+ libelleSupprimer:undefined,
+ enregistrer:undefined,
+ annulerModif:undefined,
+ annulerModifDescription:undefined,
+ arrivee:undefined,
+ depart:undefined,
+ descriptionDepart:undefined,
+ descriptionArrivee:undefined,
+ saisieInvalide:undefined,
+ erreurInconnue:undefined,
suppressionAppelReussie:undefined,
creationAppelSucces:undefined,
supprimeAppelSucces:undefined,
absencesNonEnregistrees:undefined,
plageHoraireFermee:undefined,
- saisiePrevisionnelle : undefined,
- saisieValable : undefined,
- saisieNonValable : undefined,
- colonneEleves : undefined
+ saisiePrevisionnelle:undefined,
+ saisieValable:undefined,
+ saisieNonValable:undefined,
+ retardDepart:undefined,
+ colonneEleves:undefined,
+ creation:undefined,
+ modification:undefined
},
- dialogue : {
- date : undefined,
- classe: undefined,
- enseignant: undefined,
- heureDebut: undefined,
- heureFin: undefined,
- supprimer: undefined,
- personneValidee: undefined,
- annuler: undefined,
- titreCreation: undefined,
- titreConsultation : undefined,
- titreErreur: undefined,
- messageErreur: undefined
+ dialogue:{
+ date:undefined,
+ classe:undefined,
+ enseignant:undefined,
+ heureDebut:undefined,
+ heureFin:undefined,
+ supprimer:undefined,
+ personneValidee:undefined,
+ annuler:undefined,
+ titreCreation:undefined,
+ titreConsultation:undefined,
+ titreErreur:undefined,
+ messageErreur:undefined
},
- message : {
- chargementMaskText : undefined,
- enregistrementMaskText : undefined,
- dialogSuppressionAppelTitre : undefined,
- dialogSuppressionAppelMessage : undefined
+ message:{
+ chargementMaskText:undefined,
+ enregistrementMaskText:undefined,
+ dialogSuppressionAppelTitre:undefined,
+ dialogSuppressionAppelMessage:undefined
},
- data : {
- anneeScolaire: undefined,
- annee: undefined,
+ data:{
+ anneeScolaire:undefined,
+ annee:undefined,
mois:undefined,
jour:undefined,
- enseignantId : undefined,
- structureEnseignementId: undefined,
- idMotifSansMotif :undefined ,
- grilleHoraire: undefined,
- lignesAppel: undefined,
- msgInit: undefined,
- msgTyp: undefined,
- disabledDates: undefined,
- disabledDays: undefined,
- messageProprietes: undefined
+ enseignantId:undefined,
+ structureEnseignementId:undefined,
+ idMotifSansMotif:undefined,
+ grilleHoraire:undefined,
+ lignesAppel:undefined,
+ msgInit:undefined,
+ msgTyp:undefined,
+ disabledDates:undefined,
+ disabledDays:undefined,
+ messageProprietes:undefined
}
};
* - Absence non valable
* - Absence prévisionnelle
*/
- constructor: function() {
+ constructor:function () {
var NameSpace = eliot.absences.saisie.saisie;
this.addEvents();
this.options = new Ext.FormPanel({
padding:0,
- frame : false,
- autoHeight : true,
- border: false,
- items: [
+ frame:false,
+ autoHeight:true,
+ border:false,
+ items:[
{
- xtype: 'fieldset',
- defaultType: 'radio',
- border : false,
+ xtype:'fieldset',
+ defaultType:'radio',
+ border:false,
padding:0,
- items: [
+ items:[
{
- hideLabel: true,
- checked: true,
- boxLabel: NameSpace.Modele.libelle.saisieValable,
- name: 'option',
- inputValue: NameSpace.Modele.libelle.saisieValable,
- listeners : {
- check : function(combo, checked) {
+ hideLabel:true,
+ checked:true,
+ boxLabel:NameSpace.Modele.libelle.saisieValable,
+ name:'option',
+ inputValue:NameSpace.Modele.libelle.saisieValable,
+ listeners:{
+ check:function (combo, checked) {
this.actionTypeChange(
NameSpace.Modele.libelle.saisieValable,
checked
- );
+ );
},
- scope : this
+ scope:this
}
},
{
- hideLabel: true,
- boxLabel: NameSpace.Modele.libelle.saisieNonValable,
- name: 'option',
- inputValue: NameSpace.Modele.libelle.saisieNonValable,
- listeners : {
- check : function(combo, checked) {
+ hideLabel:true,
+ boxLabel:NameSpace.Modele.libelle.saisieNonValable,
+ name:'option',
+ inputValue:NameSpace.Modele.libelle.saisieNonValable,
+ listeners:{
+ check:function (combo, checked) {
this.actionTypeChange(
NameSpace.Modele.libelle.saisieNonValable,
checked
- );
+ );
},
- scope : this
+ scope:this
+ }
+ },
+ {
+ hideLabel:true,
+ boxLabel:NameSpace.Modele.libelle.retardDepart,
+ name:'option',
+ inputValue:NameSpace.Modele.libelle.retardDepart,
+ listeners:{
+ check:function (combo, checked) {
+ this.actionTypeChange(
+ NameSpace.Modele.libelle.retardDepart,
+ checked
+ );
+ },
+ scope:this
}
}
]
},
- actionTypeChange : function (option, checked) {
+ actionTypeChange:function (option, checked) {
if (checked) {
this.fireEvent(
eliot.absences.saisie.saisie.Constantes.eventId.
actionChangeTypeAbcence,
option
- );
+ );
}
}
});
\ No newline at end of file
constructor:function () {
- var NameSpace = eliot.absences.saisie.saisie;
+ this.NameSpace = eliot.absences.saisie.saisie;
this.addEvents(
/**
* @param identifiant identifiant de l'appel
*
*/
- NameSpace.Constantes.eventId.actionSupprimeAbsence,
+ this.NameSpace.Constantes.eventId.actionSupprimeAbsence,
/**
* @event déclenché sur l'action de validation des données
* de départ/retard
* @param retardDepartInfo objet qui contient
* les informations saisies de départ/retard
*/
- NameSpace.Constantes.eventId.actionModifieDetailsRetardDepart
+ this.NameSpace.Constantes.eventId.actionModifieDetailsRetardDepart
);
this.dataAppelLigne = undefined;
width:510,
height:250,
resizable:false,
- title:'Modification',
+ title:this.NameSpace.Modele.libelle.creation,
closeAction:'fermer',
fermer:this.fermerFenetreRetardAbsence.createDelegate(this),
border:false,
items:[
{
xtype:'compositefield',
- fieldLabel:NameSpace.Modele.libelle.
+ fieldLabel:this.NameSpace.Modele.libelle.
arrivee,
items:[
{
xtype:'displayfield',
- value:NameSpace.Modele.libelle.
- descriptionArrivee,
+ value:this.NameSpace.Modele.libelle.descriptionArrivee,
width:100
},
,
{
xtype:'compositefield',
- fieldLabel:NameSpace.Modele.libelle.depart,
+ fieldLabel:this.NameSpace.Modele.libelle.depart,
items:[
this.spinHeureDepart
,
{
xtype:'displayfield',
- value:NameSpace.Modele.libelle.
- descriptionDepart,
+ value:this.NameSpace.Modele.libelle.descriptionDepart,
width:100
},
],
buttons:[
{
+ id:this.NameSpace.Constantes.composantId.boutonSupprimer,
text:'Supprimer',
handler:this.actionSupprimerAbsence,
scope:this
*/
afficherWindowEditeAbsenceView:function (dataLigneAppel, dataAppel, columnIndex) {
this.initialiseExecution(dataLigneAppel, dataAppel, columnIndex);
+ var absenceInfo = dataLigneAppel.get('appel' + dataAppel.id);
+ this.gereEtatBoutonSupprimer(absenceInfo);
+ this.gereTitrePopUp(absenceInfo);
this.fenetre.show();
},
+ gereEtatBoutonSupprimer:function (absenceInfo) {
+ var boutonSupprimer = Ext.getCmp(this.NameSpace.Constantes.composantId.boutonSupprimer);
+ if (absenceInfo && !absenceInfo.aSupprimer) {
+ boutonSupprimer.enable();
+ } else {
+ boutonSupprimer.disable();
+ }
+ },
+
+ gereTitrePopUp:function (absenceInfo) {
+ if (absenceInfo && (absenceInfo.retard || absenceInfo.depart)) {
+ this.fenetre.setTitle(this.NameSpace.Modele.libelle.modification);
+ } else {
+ this.fenetre.setTitle(this.NameSpace.Modele.libelle.creation);
+ }
+ },
+
/**
* Prépare une nouvelle exécution de la fenêtre de modification d'un
* retard et/ou d'une absence