this.initGrilleAppels(cfg.dataGrilleHoraire);
this.addEvents(
+ eliot.absences.saisie.saisie.Constantes.eventId.
+ actionValidationAppelSansRechargement,
eliot.absences.saisie.saisie.Constantes.eventId.
actionAppelValide,
eliot.absences.saisie.saisie.Constantes.eventId.
return storeAppel;
},
+ observeGridAbsencesView:function(gridAbsencesView){
+ gridAbsencesView.addListener(
+ eliot.absences.saisie.saisie.Constantes.eventId.
+ actionValidationAppelSansRechargement,
+ this.validationAppelSansRechargement,
+ this
+ );
+ },
+
observeGridAppelView:function (gridAppelView) {
gridAppelView.addListener(
eliot.absences.saisie.saisie.Constantes.eventId.
});
},
+ validationAppelSansRechargement:function (idPlage, indexAppel, rowIndex, selectionModel) {
+ //TODO vérifier que la plage sur laquelle on clique n'est pas fermée
+ if (this.storeEnteteGrilleHoraire.getAt(indexAppel).data.ouvert) {
+ var date = Date.parseDate(
+ eliot.absences.saisie.saisie.Modele.data.date,
+ 'd/m/Y'
+ );
+ var data = {};
+ data[eliot.absences.saisie.saisie.Constantes.params.idPlageDebut] = idPlage;
+ data[eliot.absences.saisie.saisie.Constantes.params.idPlageFin] = idPlage;
+ data[eliot.absences.saisie.saisie.Constantes.params.date] = date;
+ data[eliot.absences.saisie.saisie.Constantes.params.idStructureEnseignement] =
+ eliot.absences.saisie.saisie.Modele.
+ data.structureEnseignementId;
+ data[eliot.absences.saisie.saisie.Constantes.params.idEnseignant] =
+ eliot.absences.saisie.saisie.Modele.
+ data.enseignantId;
+ Ext.Ajax.request({
+ url:eliot.absences.saisie.saisie.Modele.url.urlCreationAppel,
+ params:data,
+ failure:function (response, request) {
+ eliot.absences.Message.showErreur(
+ eliot.absences.saisie.saisie.Modele.
+ libelle.erreurInconnue);
+ },
+ success:function (response, request) {
+ var resultats = Ext.decode(response.responseText);
+ if (resultats.success) {
+ /* stocker l'appel temporaire dans le store des appels */
+ this.ajoutManuelAppelTempStoreAppel(indexAppel);
+ /**/
+ /* mettre à jour le store des plages */
+ this.ajoutManuelAppelTempStorePlage(idPlage);
+ /**/
+ var idAppel = 'appelAPPEL_TEMP';
+ /* mettre à jour la grille des absences : on ajoute, pour chaque cellule
+ * de la colonne de l'appel temporaire, un attribut nommé 'appelAPPEL_TEMP'
+ * ayant une valeur vide*/
+ this.majManuelleGridAbsences(selectionModel.grid, indexAppel, idAppel, rowIndex);
+ /**/
+ /* créer l'absence */
+ var dataLigneAppel = selectionModel.grid.getStore().getAt(rowIndex);
+ this.fireEvent(
+ this.Constantes.eventId.actionEditeAbsence,
+ dataLigneAppel,
+ idAppel,
+ indexAppel + 1
+ );
+ /**/
+ }
+ else {
+ // Affiche un message d'erreur,
+ // garde les modifications de l'utilisateur
+ eliot.absences.Message.showErreur(resultats.message);
+ }
+ },
+ scope:this
+ });
+ } else {
+ eliot.absences.Message.showErreur(
+ NameSpace.Modele.libelle.plageHoraireFermee
+ );
+ }
+ },
+
+ ajoutManuelAppelTempStoreAppel: function(indexAppel){
+ var record = this.storeAppel.getAt(indexAppel);
+ var idAppel = 'APPEL_TEMP';
+
+ record.beginEdit();
+ record.set('idAppel',idAppel);
+ record.json.idAppel = idAppel;
+ record.id = idAppel;
+ record.endEdit();
+
+ this.storeAppel.insert(indexAppel, record);
+ },
+
+ ajoutManuelAppelTempStorePlage: function(idPlage){
+ // Si l'emploi du temps est activé, les appels se trouvent sur la deuxième ligne
+ var index = this.isSaisieAvecEDT() ? 1 : 0;
+ var record = this.storeContenuGrilleHoraire.getAt(index);
+ var value = record.get(idPlage);
+
+ record.beginEdit();
+ record.set(idPlage, {
+ idAppel:'APPEL_TEMP',
+ appelModifiable:true,
+ appelSupprimable:true,
+ ouvert:true,
+ temporaire:true
+ });
+ record.endEdit();
+
+ },
+
+ majManuelleGridAbsences : function(gridAbsences, indexAppel, idAppel, rowIndex){
+ gridAbsences.getColumnModel().setDataIndex(indexAppel + 1, idAppel);
+ gridAbsences.getStore().each(
+ function(data){
+ data.set(idAppel, '');
+ }
+ );
+ },
+
// affectation de la fonction de callback pour savoir si l'enregistrement
//peut être fait
setValide:function (isDirty) {
this.isDirty = isDirty;
},
- // Si la saisie par emploi du temps est active
+// Si la saisie par emploi du temps est active
isSaisieAvecEDT:function () {
return eliot.absences.saisie.saisie.Modele.data.affichageEdt == true;
}
eliot.absences.saisie.saisie.Application = function () {
- var Clazz = Ext.extend(Ext.util.Observable, {
- constructor:function () {
-
- // supprime le loadMask après un temps maximal
- eliot.absences.commons.Utils.supprimeLoadMask(
- eliot.absences.commons.Constantes.maskTimeOut
- );
-
- var NameSpace = eliot.absences.saisie.saisie;
-
- // Arbre des motifs
- var motifView = new eliot.absences.parametrage.motif.ArbreMotifs({
- listerTousMotifs:true,
- id:'idArbreMotifs',
- selection:true,
- motifs:NameSpace.Modele.data.motifs
+ var Clazz = Ext.extend(Ext.util.Observable, {
+ constructor:function () {
+
+ // supprime le loadMask après un temps maximal
+ eliot.absences.commons.Utils.supprimeLoadMask(
+ eliot.absences.commons.Constantes.maskTimeOut
+ );
+
+ var NameSpace = eliot.absences.saisie.saisie;
+
+ // Arbre des motifs
+ var motifView = new eliot.absences.parametrage.motif.ArbreMotifs({
+ listerTousMotifs:true,
+ id:'idArbreMotifs',
+ selection:true,
+ motifs:NameSpace.Modele.data.motifs
+ });
+
+ // date controller
+ var anneeScolaire = Ext.decode(NameSpace.Modele.data.anneeScolaire);
+
+ var date = Date.parseDate(NameSpace.Modele.data.date, 'd/m/Y');
+
+ var dateController = new NameSpace.DateController({
+ date:date
+ });
+
+ // date view
+ var dateView = new NameSpace.DateView({
+ date:date,
+ anneeScolaire:anneeScolaire
+ });
+
+ dateController.observeDateView(dateView);
+
+ // EnseignantController
+ this.enseignantController = new NameSpace.EnseignantController({
+ enseignantId:NameSpace.Modele.data.enseignantId
+ });
+
+ // ComboEnseignantView
+ var comboEnseignantView = new NameSpace.ComboEnseignantView({
+ storeEnseignant:this.enseignantController.storeEnseignant,
+ enseignantId:NameSpace.Modele.data.enseignantId
+ });
+
+ this.enseignantController.observeComboEnseignantView(
+ comboEnseignantView
+ );
+
+ // StructureEnseignementController
+ this.structureEnseignementController =
+ new NameSpace.StructureEnseignementController({
+ structureEnseignementId:NameSpace.Modele.data.structureEnseignementId,
+ enseignantId:NameSpace.Modele.data.enseignantId
+ });
+
+ this.structureEnseignementController.observeEnseignantController(
+ this.enseignantController
+ );
+
+ // ComboStructureEnseignementView
+ var comboStructureEnseignementView =
+ new NameSpace.ComboStructureEnseignementView({
+ storeStructureEnseignement:this.structureEnseignementController.storeStructureEnseignement,
+ enseignantId:NameSpace.Modele.data.enseignantId
+ });
+
+
+ comboStructureEnseignementView.observeStructureEnseignementController(
+ this.structureEnseignementController
+ );
+
+ this.structureEnseignementController.observeComboStructureEnseignementView(
+ comboStructureEnseignementView
+ );
+
+
+ // Toolbar
+ var toolBarView = new NameSpace.ToolBarView({
+ comboEnseignant:comboEnseignantView.comboEnseignant,
+ comboStructureEnseignement:comboStructureEnseignementView.comboStructureEnseignement,
+ tfDateAppel:dateView.dateField
+ });
+
+ // PageController
+ var pageController = new NameSpace.PageController({
+ date:date,
+ enseignantId:NameSpace.Modele.data.enseignantId,
+ structureEnseignementId:NameSpace.Modele.data.structureEnseignementId
+ });
+ pageController.observeDateController(dateController);
+ pageController.observeEnseignantController(this.enseignantController);
+ pageController.observeStructureEnseignementController(
+ this.structureEnseignementController
+ );
+
+ // OptionSaisie
+ var optionSaisie = new NameSpace.OptionSaisieView();
+
+ // FeuilleAppelView
+ var feuilleAppelView = new NameSpace.FeuilleAppelView({});
+ feuilleAppelView.observeEnseignantController(this.enseignantController);
+
+ // Si les données sont fournies dans le modèle: construction de la
+ // feuille de saisie
+ if (this.isSaisieAppelReady()) {
+
+ // AppelController
+ var appelController =
+ new eliot.absences.saisie.saisie.AppelController({
+ dataGrilleHoraire:NameSpace.Modele.data.grilleHoraire
});
- // date controller
- var anneeScolaire = Ext.decode(NameSpace.Modele.data.anneeScolaire);
-
- var date = Date.parseDate(NameSpace.Modele.data.date, 'd/m/Y');
-
- var dateController = new NameSpace.DateController({
- date:date
- });
-
- // date view
- var dateView = new NameSpace.DateView({
- date:date,
- anneeScolaire:anneeScolaire
- });
-
- dateController.observeDateView(dateView);
-
- // EnseignantController
- this.enseignantController = new NameSpace.EnseignantController({
- enseignantId:NameSpace.Modele.data.enseignantId
- });
-
- // ComboEnseignantView
- var comboEnseignantView = new NameSpace.ComboEnseignantView({
- storeEnseignant:this.enseignantController.storeEnseignant,
- enseignantId:NameSpace.Modele.data.enseignantId
- });
-
- this.enseignantController.observeComboEnseignantView(
- comboEnseignantView
- );
-
- // StructureEnseignementController
- this.structureEnseignementController =
- new NameSpace.StructureEnseignementController({
- structureEnseignementId:NameSpace.Modele.data.structureEnseignementId,
- enseignantId:NameSpace.Modele.data.enseignantId
- });
-
- this.structureEnseignementController.observeEnseignantController(
- this.enseignantController
- );
-
- // ComboStructureEnseignementView
- var comboStructureEnseignementView =
- new NameSpace.ComboStructureEnseignementView({
- storeStructureEnseignement:this.structureEnseignementController.storeStructureEnseignement,
- enseignantId:NameSpace.Modele.data.enseignantId
- });
-
-
- comboStructureEnseignementView.observeStructureEnseignementController(
- this.structureEnseignementController
- );
-
- this.structureEnseignementController.observeComboStructureEnseignementView(
- comboStructureEnseignementView
- );
-
-
- // Toolbar
- var toolBarView = new NameSpace.ToolBarView({
- comboEnseignant:comboEnseignantView.comboEnseignant,
- comboStructureEnseignement:comboStructureEnseignementView.comboStructureEnseignement,
- tfDateAppel:dateView.dateField
- });
-
- // PageController
- var pageController = new NameSpace.PageController({
- date:date,
- enseignantId:NameSpace.Modele.data.enseignantId,
- structureEnseignementId:NameSpace.Modele.data.structureEnseignementId
- });
- pageController.observeDateController(dateController);
- pageController.observeEnseignantController(this.enseignantController);
- pageController.observeStructureEnseignementController(
- this.structureEnseignementController
- );
-
- // OptionSaisie
- var optionSaisie = new NameSpace.OptionSaisieView();
-
- // FeuilleAppelView
- var feuilleAppelView = new NameSpace.FeuilleAppelView({});
- feuilleAppelView.observeEnseignantController(this.enseignantController);
-
- // Si les données sont fournies dans le modèle: construction de la
- // feuille de saisie
- if (this.isSaisieAppelReady()) {
-
- // AppelController
- var appelController =
- new eliot.absences.saisie.saisie.AppelController({
- dataGrilleHoraire:NameSpace.Modele.data.grilleHoraire
- });
-
- // GridAppelView
- var gridAppelView = new NameSpace.GridAppelView({
- storeContenuGrilleHoraire:appelController.storeContenuGrilleHoraire,
- storeEnteteGrilleHoraire:appelController.storeEnteteGrilleHoraire
- });
-
- // AbsencesController
- var absencesController = new NameSpace.AbsencesController({
- storeAppel:appelController.storeAppel,
- storeGrilleHoraire:appelController.storeEnteteGrilleHoraire,
- structureEnseignementId:NameSpace.Modele.data.structureEnseignementId,
- listeAppelsEleves:NameSpace.Modele.data.listeAppelsEleves,
- date:NameSpace.Modele.data.date
- });
-
- // GridAbsencesView
- var gridAbsencesView = new NameSpace.GridAbsencesView({
- storeAbsences:absencesController.storeAbsences,
- storeAppel:appelController.storeAppel,
- storePlagesHoraires:appelController.storeEnteteGrilleHoraire
- });
-
- // Ajoute les composants dans la feuille d'appel
- feuilleAppelView.addComposants({
- gridAppel:gridAppelView.grid,
- gridAbsences:gridAbsencesView.grid
- });
- appelController.observeGridAppelView(gridAppelView);
-
- //Dialogue de gestion des appels
- this.dialogAppelView = new NameSpace.DialogAppelView();
- this.dialogAppelView.observeAppelController(appelController);
- appelController.observeDialogAppelView(this.dialogAppelView);
- appelController.observeToolbarView(toolBarView);
-
- pageController.observeAppelController(appelController);
- pageController.observeAbsencesController(absencesController);
-
- gridAbsencesView.observeGridAppelView(gridAppelView);
- gridAbsencesView.observeAbsencesController(absencesController);
- gridAppelView.observeGridAbsencesView(gridAbsencesView);
-
- // Branchement arbre des motifs
- absencesController.observeMotifs(motifView);
-
-
- // Branchement optionSaisie
- absencesController.observeOptionSaisieView(optionSaisie);
- absencesController.observeAbsencesView(gridAbsencesView);
- absencesController.observeToolbarView(toolBarView);
-
- // Permet de passer aux vues une fonction retournant le caractère
- // dirty ou non
- gridAppelView.setValide(
- absencesController.isDirty.createDelegate(
- absencesController, []
- )
- );
- appelController.setValide(
- absencesController.isDirty.createDelegate(
- absencesController, []
- )
- );
- comboStructureEnseignementView.setValide(
- absencesController.isDirty.createDelegate(
- absencesController, []
- )
- );
- dateView.setValide(
- absencesController.isDirty.createDelegate(
- absencesController, []
- )
- );
- comboEnseignantView.setValide(
- absencesController.isDirty.createDelegate(
- absencesController, []
- )
- );
- }
-
- // Mise en forme de la page
- var centerRegionItems = [
+ // GridAppelView
+ var gridAppelView = new NameSpace.GridAppelView({
+ storeContenuGrilleHoraire:appelController.storeContenuGrilleHoraire,
+ storeEnteteGrilleHoraire:appelController.storeEnteteGrilleHoraire
+ });
+
+ // AbsencesController
+ var absencesController = new NameSpace.AbsencesController({
+ storeAppel:appelController.storeAppel,
+ storeGrilleHoraire:appelController.storeEnteteGrilleHoraire,
+ structureEnseignementId:NameSpace.Modele.data.structureEnseignementId,
+ listeAppelsEleves:NameSpace.Modele.data.listeAppelsEleves,
+ date:NameSpace.Modele.data.date
+ });
+
+ // GridAbsencesView
+ var gridAbsencesView = new NameSpace.GridAbsencesView({
+ storeAbsences:absencesController.storeAbsences,
+ storeAppel:appelController.storeAppel,
+ storePlagesHoraires:appelController.storeEnteteGrilleHoraire,
+ gridAppelView:gridAppelView
+ });
+ appelController.observeGridAbsencesView(gridAbsencesView);
+
+ // Ajoute les composants dans la feuille d'appel
+ feuilleAppelView.addComposants({
+ gridAppel:gridAppelView.grid,
+ gridAbsences:gridAbsencesView.grid
+ });
+ appelController.observeGridAppelView(gridAppelView);
+
+ //Dialogue de gestion des appels
+ this.dialogAppelView = new NameSpace.DialogAppelView();
+ this.dialogAppelView.observeAppelController(appelController);
+ appelController.observeDialogAppelView(this.dialogAppelView);
+ appelController.observeToolbarView(toolBarView);
+
+ pageController.observeAppelController(appelController);
+ pageController.observeAbsencesController(absencesController);
+
+ gridAbsencesView.observeGridAppelView(gridAppelView);
+ gridAbsencesView.observeAbsencesController(absencesController);
+ gridAppelView.observeGridAbsencesView(gridAbsencesView);
+
+ // Branchement arbre des motifs
+ absencesController.observeMotifs(motifView);
+
+
+ // Branchement optionSaisie
+ absencesController.observeAppelController(appelController);
+ absencesController.observeOptionSaisieView(optionSaisie);
+ absencesController.observeAbsencesView(gridAbsencesView);
+ absencesController.observeToolbarView(toolBarView);
+
+ // Permet de passer aux vues une fonction retournant le caractère
+ // dirty ou non
+ gridAppelView.setValide(
+ absencesController.isDirty.createDelegate(
+ absencesController, []
+ )
+ );
+ appelController.setValide(
+ absencesController.isDirty.createDelegate(
+ absencesController, []
+ )
+ );
+ comboStructureEnseignementView.setValide(
+ absencesController.isDirty.createDelegate(
+ absencesController, []
+ )
+ );
+ dateView.setValide(
+ absencesController.isDirty.createDelegate(
+ absencesController, []
+ )
+ );
+ comboEnseignantView.setValide(
+ absencesController.isDirty.createDelegate(
+ absencesController, []
+ )
+ );
+ }
+
+ // Mise en forme de la page
+ var centerRegionItems = [
+ {
+ id:NameSpace.Constantes.regionId.center,
+ xtype:'panel',
+ layout:'border',
+ border:false,
+ autoScroll:true,
+ autoShow:true,
+ items:[
+ {
+ region:'north',
+ height:45,
+ border:false,
+ frame:false,
+ items:[
+ toolBarView.toolbar
+ ]
+ },
+ {
+ region:'center',
+ xtype:'panel',
+ border:false,
+ frame:false,
+ layout:'border',
+ items:[
{
- id:NameSpace.Constantes.regionId.center,
- xtype:'panel',
- layout:'border',
- border:false,
- autoScroll:true,
- autoShow:true,
- items:[
- {
- region:'north',
- height:45,
- border:false,
- frame:false,
- items:[
- toolBarView.toolbar
- ]
- },
- {
- region:'center',
- xtype:'panel',
- border:false,
- frame:false,
- layout:'border',
- items:[
- {
- xtype:'panel',
- region:'center',
- layout:'fit',
- border:false,
- frame:false,
- items:feuilleAppelView.panelFeuille
- },
- {
- xtype:'panel',
- region:'east',
- split:true,
- collapseMode:'mini',
- width:230,
- border:false,
- frame:false,
- layout:'border',
- html:'motif',
- items:[
- {
- title:'Types',
- region:'north',
- height:105,
- items:[
- optionSaisie.options
- ]
- },
- {
- region:'center',
- xtype:'panel',
- title:'Motifs',
- autoScroll:true,
- layout:'fit',
- items:[
- motifView.treePanel
- ]
- }
- ]
- }
-
- ]
- }
- ]
+ xtype:'panel',
+ region:'center',
+ layout:'fit',
+ border:false,
+ frame:false,
+ items:feuilleAppelView.panelFeuille
+ },
+ {
+ xtype:'panel',
+ region:'east',
+ split:true,
+ collapseMode:'mini',
+ width:230,
+ border:false,
+ frame:false,
+ layout:'border',
+ html:'motif',
+ items:[
+ {
+ title:'Types',
+ region:'north',
+ height:105,
+ items:[
+ optionSaisie.options
+ ]
+ },
+ {
+ region:'center',
+ xtype:'panel',
+ title:'Motifs',
+ autoScroll:true,
+ layout:'fit',
+ items:[
+ motifView.treePanel
+ ]
+ }
+ ]
}
- ];
-
- var messageConfirmation;
- var messageErreur;
- var messageProprietes = NameSpace.Modele.data.messageProprietes;
- if (messageProprietes) {
- if (messageProprietes.success) {
- messageConfirmation = messageProprietes.message;
- } else {
- messageErreur = messageProprietes.message;
- }
+ ]
}
-
- // Rendu du viewport
- Ext.onReady(function () {
- eliot.layout.doLayout(
- NameSpace.Constantes.regionId.viewPort,
- NameSpace.Constantes.regionId.northPanel,
- NameSpace.Constantes.regionId.centerPanel,
- centerRegionItems,
- messageConfirmation,
- messageErreur
- );
-
- // Supprime la progresse bar
- eliot.absences.commons.Utils.supprimeLoadMask(250);
- }, this);
- },
-
- /**
- * Teste si les données nécessaires à la saisie d'un appel sont disponibles
- */
- isSaisieAppelReady:function () {
- var Modele = eliot.absences.saisie.saisie.Modele;
- return Modele.data.grilleHoraire && Modele.data.structureEnseignementId
+ ]
}
+ ];
- });
+ var messageConfirmation;
+ var messageErreur;
- // Construit l'instance singleton
- return new Clazz({
- });
+ var messageProprietes = NameSpace.Modele.data.messageProprietes;
+ if (messageProprietes) {
+ if (messageProprietes.success) {
+ messageConfirmation = messageProprietes.message;
+ } else {
+ messageErreur = messageProprietes.message;
+ }
+ }
+
+ // Rendu du viewport
+ Ext.onReady(function () {
+ eliot.layout.doLayout(
+ NameSpace.Constantes.regionId.viewPort,
+ NameSpace.Constantes.regionId.northPanel,
+ NameSpace.Constantes.regionId.centerPanel,
+ centerRegionItems,
+ messageConfirmation,
+ messageErreur
+ );
+
+ // Supprime la progresse bar
+ eliot.absences.commons.Utils.supprimeLoadMask(250);
+ }, this);
+ },
+
+ /**
+ * Teste si les données nécessaires à la saisie d'un appel sont disponibles
+ */
+ isSaisieAppelReady:function () {
+ var Modele = eliot.absences.saisie.saisie.Modele;
+ return Modele.data.grilleHoraire && Modele.data.structureEnseignementId
+ }
+
+ });
+
+ // Construit l'instance singleton
+ return new Clazz({
+ });
}
();
storeAppel:undefined,
storeAbsences:undefined,
storePlagesHoraires:undefined,
+ gridAppelView:undefined,
eleveSelectionneId:undefined
};
if (!cfg.storeAppel) {
throw 'La config storeAppel est obligatoire';
}
-
if (!cfg.storePlagesHoraires) {
throw 'La config storePlagesHoraires est obligatoire';
}
+ if (!cfg.gridAppelView) {
+ throw 'La config gridAppelView est obligatoire';
+ }
this.storeAppel = cfg.storeAppel;
this.storePlagesHoraires = cfg.storePlagesHoraires;
this.eleveSelectionneId = cfg.eleveSelectionneId;
+ this.gridAppelView = cfg.gridAppelView;
+ this.gridAppelPanel = cfg.gridAppelView.grid;
+
this.addEvents(
this.Constantes.eventId.actionEditeAbsence,
this.Constantes.eventId.actionSupprimeAbsence,
- this.Constantes.eventId.actionScrollBar
+ this.Constantes.eventId.actionScrollBar,
+ this.Constantes.eventId.actionValidationAppelSansRechargement
);
// Construit la configuration des colonnes de la table des appels à
// une saisie d'absence
if (columnIndex > 0) {
var idAppel = this.getAppelIdFromColumnIndex(columnIndex);
+ var dataLigneAppel = selectionModel.grid.getStore().getAt(rowIndex);
+ var columnIndexPlageHoraire;
+ var idPlage;
+ // si l'appel existe déjà dans la colonne
if (idAppel !== this.Constantes.id.storeAppelDataIndexVide) {
- var dataLigneAppel = selectionModel.grid.getStore().getAt(rowIndex);
- var columnIndexPlageHoraire = this.getColumnIndexPlageHoraire(idAppel);
- var idPlage = this.storePlagesHoraires.getAt(columnIndexPlageHoraire - 1).id;
+ columnIndexPlageHoraire = this.getColumnIndexPlageHoraire(idAppel);
+ idPlage = this.storePlagesHoraires.getAt(columnIndexPlageHoraire - 1).id;
+ var absenceSurAppelEnCours = dataLigneAppel.get(idAppel);
+ var absenceSurPlageEnCours = dataLigneAppel.get("plage"+idPlage);
// pour pouvoir modifier cette cellule,il faut soit :
// - qu'elle ait une absence liée à l'appel affiché
// - qu'elle ait une absence prévisionnelle
// - qu'elle soit vide
- var absenceSurAppelEnCours = dataLigneAppel.get(idAppel);
- var absenceSurPlageEnCours = dataLigneAppel.get("plage"+idPlage);
+ var isVide = this.isVide(dataLigneAppel, idAppel, idPlage);
var isPrevisionnelle = absenceSurAppelEnCours == "" && absenceSurPlageEnCours != "" && absenceSurPlageEnCours.previsionnel == true;
var isSurAppelTemporaire = absenceSurAppelEnCours == "" && absenceSurPlageEnCours != "" && !absenceSurPlageEnCours.appelId && idAppel == "appelAPPEL_TEMP";
- var isVide = absenceSurAppelEnCours == "" && absenceSurPlageEnCours == "";
if (isPrevisionnelle || isSurAppelTemporaire || absenceSurAppelEnCours != "" || isVide) {
this.fireEvent(
this.Constantes.eventId.actionEditeAbsence,
- dataLigneAppel,
- idAppel,
- columnIndexPlageHoraire
+ dataLigneAppel,idAppel,columnIndexPlageHoraire
)
+ } else {
+ return false;
}
}
- // On retourne false pour ne pas sélectionner la cellule en saisie d'absence
- return false;
+ // si l'appel n'existe pas encore dans la colonne (cas où l'on clique sur la grille d'absences avant d'avoir saisi un appel)
+ else {
+ // si la grille contient déjà un appel temporaire, on ne fait rien
+ if ((this.gridAppelView.isDirty) && (this.gridAppelView.isDirty())) {
+ eliot.absences.Message.showErreur(
+ eliot.absences.saisie.saisie.Modele.libelle.absencesNonEnregistrees
+ );
+ return false;
+ }
+ // sinon, on crée l'appel + l'absence
+ else {
+ var indexAppel = columnIndex - 1;
+ var columnIndexAppel = this.getColumnIndexPlageHoraireSansAppel(indexAppel);
+ idPlage = this.storePlagesHoraires.getAt(columnIndexAppel).id;
+ var absenceSurPlageEnCours2 = dataLigneAppel.get("plage"+idPlage);
+ // pour pouvoir modifier cette cellule,il faut soit :
+ // - qu'elle ait une absence prévisionnelle
+ // - qu'elle soit vide
+ var isVide2 = this.isVide(dataLigneAppel, idAppel, idPlage);
+ var isPrevisionnelle2 = absenceSurPlageEnCours2 != "" && absenceSurPlageEnCours2.previsionnel == true;
+ if (isPrevisionnelle2 || isVide2) {
+ // on crée/modifie l'absence et on crée l'appel
+ this.fireEvent(
+ this.Constantes.eventId.actionValidationAppelSansRechargement,
+ idPlage, indexAppel, rowIndex, selectionModel
+ )
+ } else {
+ return false;
+ }
+ }
+ }
+
}
},
scope:this
);
},
- // Récupère l'index de la plage horraire (traite le cas des appels sur plusieurs plages)
+ // Récupère l'index de la plage horaire (traite le cas des appels sur plusieurs plages)
getColumnIndexPlageHoraire:function (idAppel) {
var columnIndexPlageHoraire = 0;
return columnIndexPlageHoraire;
},
+ // Récupère l'index de la plage horaire (traite le cas des appels sur plusieurs plages)
+ getColumnIndexPlageHoraireSansAppel:function (index) {
+ var columnIndexPlageHoraire = 0;
+
+ var records = this.storeAppel.getRange(0, index - 1);
+
+ if (records.length > 0) {
+ Ext.each(records, function (item) {
+ columnIndexPlageHoraire += item.get('largeur');
+ });
+ }
+
+ return columnIndexPlageHoraire;
+ },
+
/**
* @private
* Construit la configuration des colonnes du ColumnModel de la Grid des
});
var index = 0;
- // Ajout des colonnes de plages horaire
+ // Ajout des colonnes de plages horaires
storeAppel.each(
function (dataAppel) {
var idAppel = dataAppel.get('idAppel');
setScrollBarPosition:function (scrollLeft) {
this.grid.getView().scroller.dom.scrollLeft = scrollLeft;
+ },
+
+ isVide:function(dataLigneAppel, idAppel, idPlage){
+ var absenceSurAppelEnCours = dataLigneAppel.get(idAppel);
+ var absenceSurPlageEnCours = dataLigneAppel.get("plage"+idPlage);
+ return (absenceSurAppelEnCours == "" && absenceSurPlageEnCours == "");
}
});