var cfg = {
storeAppel:undefined,
storeAbsences:undefined,
- storePlagesHoraires:undefined
+ storePlagesHoraires:undefined,
+ eleveSelectionneId:undefined
};
this.storeAppel = cfg.storeAppel;
- var Constantes = eliot.absences.saisie.saisie.Constantes;
+ this.eleveSelectionneId = cfg.eleveSelectionneId;
this.addEvents(
- Constantes.eventId.actionEditeAbsence,
- Constantes.eventId.actionSupprimeAbsence,
- Constantes.eventId.actionScrollBar
+ this.Constantes.eventId.actionEditeAbsence,
+ this.Constantes.eventId.actionSupprimeAbsence,
+ this.Constantes.eventId.actionScrollBar,
+ this.Constantes.eventId.actionEleveSelectionChange
);
// Construit la configuration des colonnes de la table des appels à
enableColumnMove:false,
enableColumnResize:false,
border:false,
+ hideHeaders:true,
+ cls:'gridLineFoncee',
cm:cm,
- view:new Ext.ux.grid.LockingGridView()
+ selModel:new Ext.grid.CellSelectionModel(),
+ view:new Ext.ux.grid.LockingGridView(),
+ columnLines:true
});
this.observeGrilleAbsences();
* Observe le composant graphique grid des absences
*/
observeGrilleAbsences:function () {
- var Constantes = eliot.absences.saisie.saisie.Constantes;
-
- this.grid.addListener({
- cellclick:{
- fn:function (grid, rowIndex, columnIndex, event) {
+ this.grid.getSelectionModel().addListener({
+ beforecellselect:{
+ fn:function (selectionModel, rowIndex, columnIndex) {
eliot.absences.Message.resetMessages();
- if (columnIndex > 0) { // Pas pour la colonne des élèves
-
+ // une saisie d'absence
+ if (columnIndex > 0) {
var dataIndex = this.getAppelIdFromColumnIndex(columnIndex);
- if (dataIndex !== Constantes.id.storeAppelDataIndexVide) {
- var dataLigneAppel = grid.getStore().getAt(rowIndex);
+ if (dataIndex !== this.Constantes.id.storeAppelDataIndexVide) {
+ var dataLigneAppel = selectionModel.grid.getStore().getAt(rowIndex);
var idAppel = this.getAppelIdFromColumnIndex(columnIndex);
this.fireEvent(
- eliot.absences.saisie.saisie.Constantes.eventId.actionEditeAbsence,
+ this.Constantes.eventId.actionEditeAbsence,
dataLigneAppel,
idAppel,
columnIndex
)
}
+ // On retourne false pour ne pas sélectionner la cellule en saisie d'absence
+ return false;
}
},
scope:this
},
+ cellselect:{
+ fn:function (selectionModel, rowIndex, columnIndex, event) {
+ eliot.absences.Message.resetMessages();
+ // La selection d'élève, charge l'emploi du temps, si il est activé
+ if (columnIndex == 0) {
+ this.fireEvent(
+ this.Constantes.eventId.actionEleveSelectionChange,
+ selectionModel.grid.getStore().getAt(rowIndex).get(
+ this.Constantes.eleveId
+ )
+ );
+ return;
+ }
+ },
+ scope:this
+ }
+ });
+
+ this.grid.addListener({
bodyscroll:{
fn:function (scrollLeft, scrollTop) {
- this.fireEvent(eliot.absences.saisie.saisie.Constantes.eventId.
- actionScrollBar,
+ this.fireEvent(this.Constantes.eventId.actionScrollBar,
scrollLeft
);
},
absenceInfo,
columnIndex
);
+
+ }
+ },
+ scope:this
+ }
+ });
+
+ this.grid.getStore().addListener({
+ load:{
+ fn:function () {
+ // La sélection d'élève est faite qu'en saisie avec edt
+ if(!this.isSaisieAvecEDT()){
+ return;
}
+
+ // Si y'a un élève à selectionner,
+ // on sélectionne sinon, on sélectionne le premier
+ var row = this.grid.getStore().findExact(
+ this.Constantes.eleveId,
+ this.eleveSelectionneId
+ );
+ row = row !== -1 ? row : 0;
+ this.grid.getSelectionModel().select(row, 0);
},
scope:this
}
setScrollBarPosition:function (scrollLeft) {
this.grid.getView().scroller.dom.scrollLeft = scrollLeft;
+ },
+
+
+ // Si la saisie par emploi du temps est active
+ isSaisieAvecEDT:function () {
+ return eliot.absences.saisie.saisie.Modele.data.affichageEdt == true;
}
});