Ext.onReady(function(){ //CONFIGURATION ==> GLOBALES Ext.BLANK_IMAGE_URL = 'ext-1.1/resources/images/default/s.gif'; //CONFIGURATION ==> VTYPES Ext.form.VTypes['alphaVal'] = /^[a-zA-Z_àâäéèêëìîïùûüòôöç\-\'\s]+$/i; Ext.form.VTypes['alphaMask'] = /[a-z_àâäéèêëìîïùûüòôöç\-\'\s]/i; Ext.form.VTypes['alphaText'] = 'Ce champ doit contenir des lettres ou _'; Ext.form.VTypes['alpha'] = function(v) { return Ext.form.VTypes['alphaVal'].test(v); } Ext.form.VTypes['usernameVal'] = /^[a-zA-Z][-_.a-zA-Z0-9]{0,30}$/; Ext.form.VTypes['usernameMask'] = /[-_.a-zA-Z0-9]/; Ext.form.VTypes['usernameText'] = 'Le nom d\'utilisateur doit débuter par une lettre et ne peut excéder 255 caratères.' Ext.form.VTypes['username']=function(v){ return Ext.form.VTypes['usernameVal'].test(v); } Ext.form.VTypes['passwordVal1'] = /^.{6,31}$/; Ext.form.VTypes['passwordVal2'] = /[^a-zA-Z].*[^a-zA-Z]/; Ext.form.VTypes['password'] = function(v){ if(!Ext.form.VTypes['passwordVal1'].test(v)){ Ext.form.VTypes['passwordText'] = 'Le mot de passe doit inclure au minimum 6 caratères et au maximum 31.'; return false; } Ext.form.VTypes['passwordText'] = 'Le mot de passe doit inclure au minimum 2 chiffres ou symboles.'; return Ext.form.VTypes['passwordVal2'].test(v); } Ext.form.VTypes['passwordText'] = 'Le mot de passe est invalide.' Ext.form.VTypes['passwordMask'] = /./; Ext.form.VTypes['assurancemaladieVal'] = /[a-zA-Z][a-zA-Z][a-zA-Z][a-zA-Z]\s[0-9][0-9][0-9][0-9][0-9][0-9]\s[0-9][0-9]/; Ext.form.VTypes['assurancemaladieMask'] = /[a-zA-Z0-9\s]/; Ext.form.VTypes['assurancemaladieText'] = 'Ce champ doit contenir un numéro d\'assurance maladie sous le format suivant: NNNP jjmmaa 00'; Ext.form.VTypes['assurancemaladie'] = function(v) { return Ext.form.VTypes['assurancemaladieVal'].test(v); } Ext.form.VTypes['codepermanentVal'] = /[a-zA-Z][a-zA-Z][a-zA-Z][a-zA-Z]\s[0-9][0-9][0-9][0-9][0-9][0-9]\s[0-9][0-9]/; Ext.form.VTypes['codepermanentMask'] = /[a-zA-Z0-9\s]/; Ext.form.VTypes['codepermanentText'] = 'Ce champ doit contenir un code permanent sous le format suivant: NNNP jjmmaa 00'; Ext.form.VTypes['codepermanent'] = function(v) { return Ext.form.VTypes['codepermanentVal'].test(v); } Ext.form.VTypes['zipcodeVal'] = /[a-zA-Z][0-9][a-zA-Z]\s[0-9][a-zA-Z][0-9]/; Ext.form.VTypes['zipcodeMask'] = /[a-zA-Z0-9\s]/; Ext.form.VTypes['zipcodeText'] = 'Ce champ doit contenir un code postal sous le format suivant: A1B 2C3'; Ext.form.VTypes['zipcode'] = function(v) { return Ext.form.VTypes['zipcodeVal'].test(v); } Ext.form.VTypes['phoneVal'] = /\(\d{3}\)\s\d{3}-\d{4}/; Ext.form.VTypes['phoneMask'] = /[-0-9\(\)\s]/; Ext.form.VTypes['phoneText'] = 'Ce champ doit contenir un numéro de téléphone sous le format suivant: (123) 456-7890'; Ext.form.VTypes['phone'] = function(v) { return Ext.form.VTypes['phoneVal'].test(v); } //CONFIGURATION ==> DISPOSITION DES MESSAGE D'ERREURS DE FORMULAIRES Ext.form.Field.prototype.msgTarget = 'side'; Ext.form.Field.prototype.height = 20; Ext.form.Field.prototype.fieldClass = 'text-field-default'; Ext.form.Field.prototype.focusClass = 'text-field-focus'; Ext.form.Field.prototype.invalidClass = 'text-field-invalid'; //FONCTION ==> GLOBALE function capWords(str){ str = str.toLowerCase(); var separator = [" ","-"]; for (var j=0 ; j <= separator.length -1 ; j++){ var words = str.split(separator[j]); for (var i=0 ; i < words.length ; i++){ var testwd = words[i]; var firLet = testwd.substr(0,1); var rest = testwd.substr(1, testwd.length -1); words[i] = firLet.toUpperCase() + rest; } str = words.join(separator[j]); } return str; } function accentsRemove(s){ s = s.replace(/[ÀÂÄ]/i,'A'); s = s.replace(/[ÉÈÊË]/i,'E'); s = s.replace(/[ÌÎÏ]/i,'I'); s = s.replace(/[ÒÔÖ]/i,'O'); s = s.replace(/[ÙÛÜ]/i,'U'); s = s.replace(/[Ç]/i,'C'); return s; } //DISPOSITION ==> PRINCIPALE principalLayoutFunction = function(){ var principalLayout; return { init:function(){ principalLayout = new Ext.BorderLayout(document.body, { north:{ split:false, initialSize: 26, titlebar:false }, south:{ split:false, initialSize: 26, titlebar:false }, center:{ alwaysShowTabs: true, tabPosition:"top", autoScroll:true, titlebar:false } }); principalLayout.beginUpdate(); principalLayout.add('north', new Ext.ContentPanel("header", "Header")); principalLayout.add('center', new Ext.ContentPanel("nouvelle", "Nouvelles")); //SESSION VA ICI! principalLayout.add('center', new Ext.ContentPanel("session", "Entraîneurs")); principalLayout.add('center', new Ext.ContentPanel("athlete", "Athlètes")); principalLayout.getRegion('center').showPanel('nouvelle'); principalLayout.endUpdate(); } }; }(); Ext.EventManager.onDocumentReady(principalLayoutFunction.init, principalLayoutFunction, true); Ext.QuickTips.init(); //MENU ==> PRINCIPAL var principaleToolbar = new Ext.Toolbar('principaleToolbar'); Ext.get(Ext.get(principaleToolbar.addSpacer().getEl()).dom.parentNode).setStyle('width', '100%'); principaleToolbar.add( { text: 'Connexion', icon: 'include/image/connect.png', cls: 'x-btn-text-icon', handler: connexionDialog } ); //BOÎTE DE DIALOGUE ==> CONNEXION function connexionDialog(){ var connexionDialog; if (!connexionDialog) { connexionDialog = new Ext.LayoutDialog("connexionDialog", { modal:true, shadow:true, proxyDrag:true, collapsible:false, resizable:false, width:480, height:170, center:{} }); connexionDialog.addKeyListener(27, connexionDialog.hide, connexionDialog); connexionDialog.addButton("Annuler", function() {connexionDialog.hide(); connexionResetField();}); connexionDialog.addButton("Connexion", function() { if (connexionForm.isValid()){ connexionForm.submit({ reset: false, failure: function(athlete_ajout_information_form, alert){ Ext.Msg.alert("Erreur", alert.result.data[0].responseMsg); }, success: function(athlete_ajout_information_form, alert){ connexionDialog.hide(); connexionResetField(); window.location.reload(); } }); } else{ Ext.MessageBox.alert("Erreur", "Veuillez corriger les champs suivis d\'un point d\'exclamation."); } }); var connexionLayout = connexionDialog.getLayout(); connexionLayout.beginUpdate(); connexionLayout.add("center", new Ext.ContentPanel("connexionLayout", {title: "Connexion"})); connexionLayout.endUpdate(); connexionDialog.show(); } }; var connexionNomUtilisateurField = new Ext.form.TextField({ fieldLabel:"Nom d'utilisateur", name:"connexionNomUtilisateurField", allowBlank:false }); var connexionMotPasseField = new Ext.form.TextField({ fieldLabel:"Mot de passe", name:"connexionMotPasseField", inputType:"password", allowBlank:false }); var connexionForm = new Ext.form.Form({ labelAlign:"", url:"include/connexion.php" }); connexionForm.column({width: 430, labelWidth:120, style:'margin-left:8px;margin-top:8px'}); connexionForm.fieldset( {id:""}, connexionNomUtilisateurField, connexionMotPasseField ); connexionForm.applyIfToFields({width:255}); connexionForm.render("connexionForm"); connexionForm.end(); function connexionResetField(){ connexionNomUtilisateurField.setValue(""); connexionMotPasseField.setValue(""); } //FUNCTION ==> DÉCONNEXION function deconnexionDialog(redirection){ Ext.Ajax.request({ url:"include/deconnexion.php", methode:"post", success:function(){ if (redirection = "reload"){ window.location.reload(); } else { window.location = redirection; } }, failure:function(response){ Ext.Msg.alert("Erreur", response.result.data[0].responseMsg); } }); } //FUNCTION ==> CHARGEMENT DU MENU ATHLÈTE athleteGrilleSelectionMenuFunction(); //INSERTION ==> MODULE //MESASAGES var Msg003 = 'Veuillez sélectionner au minimum une session.'; //MODEL DE LA GRILLE SESSION ==> PARAMÈTRES var sessionLigne = 50; //GRILLE ==> SESSION (fonctions qui gèrent de façon particulière le contenu d'une colonne) function sessionGrilleRenderStatut(value, p, record){ var statutString = []; if (value == 1){ statutString = ''; } else if (value == 2){ statutString = ''; } else if (value == 3){ statutString = ''; } else if (value == 4){ statutString = ''; } return String.format('{0}', statutString); } function sessionGrilleRenderAdresse(value, p, record){ if (record.data['session_adresse'] != '' && record.data['session_ville'] != '' && record.data['session_province'] != '' && record.data['session_code_postal'] != ''){ return String.format('{0}
{1}, {2}
{3}', record.data['session_adresse'], record.data['session_ville'], record.data['session_province'], record.data['session_code_postal']); } else { return String.format('{0} {1} {2}', record.data['session_ville'], record.data['session_province'], record.data['session_code_postal']); } } function sessionGrilleRenderPNCE(value, p, record){ var pnceString; var ccString; if (value == 0){ pnceString = 'Aucune'; } else if (value == 1){ pnceString = '1'; } else if (value == 2){ pnceString = '2'; } else if (value == 3){ pnceString = '3+'; } else { pnceString = ''; } if (record.data['session_niveau_cc'] == null){ ccString = ''; } else { ccString = record.data['session_numero_cc']; } return String.format('{0} {1}', pnceString, ccString); } function sessionGrilleRenderCourriel(value, p, record){ return String.format(' {0}', record.data['session_courriel']); } //GRILLE ==> SESSION (modèles qui gèrent le rendu des colonnes) var sessionGrilleColumnModel = new Ext.grid.ColumnModel([ { header: 'Statut', dataIndex: 'session_statut', width: 55, renderer: sessionGrilleRenderStatut },{ header: 'Nom', dataIndex: 'session_nom', width: 130 },{ header: 'Prénom', dataIndex: 'session_prenom', width: 130 },{ header: 'PNCE', dataIndex: 'session_niveau_cc', width: 130, renderer: sessionGrilleRenderPNCE, hidden: true },{ header: 'Téléphone travail', dataIndex: 'session_telephone_travail', width: 130 },{ header: 'Courriel', dataIndex: 'session_courriel', renderer: sessionGrilleRenderCourriel, width: 200 },{ header: 'Équipe', dataIndex: 'session_etablissement_equipe', width: 350 } ]); sessionGrilleColumnModel.defaultSortable = true; //GRILLE ==> SESSION (methode qui tranfère et gère les données) var sessionGrilleDataStore = new Ext.data.Store({ proxy:new Ext.data.HttpProxy({url: 'include/session/sessionGrilleSelection.php'}), reader:new Ext.data.JsonReader({ root:'results', totalProperty:'total', id:'session_id' }, [ {name: 'session_id'}, {name: 'session_nom_utilisateur'}, {name: 'session_mot_passe'}, {name: 'session_nom'}, {name: 'session_prenom'}, {name: 'session_assurance_maladie'}, {name: 'session_niveau_cc'}, {name: 'session_numero_cc'}, {name: 'session_adresse'}, {name: 'session_ville'}, {name: 'session_code_postal'}, {name: 'session_province'}, {name: 'session_telephone_travail'}, {name: 'session_telephone_residence'}, {name: 'session_telephone_cellulaire'}, {name: 'session_fax'}, {name: 'session_courriel'}, {name: 'session_etablissement_id'}, {name: 'session_statut'}, {name: 'session_etablissement_equipe'} ] ), remoteSort: true }); sessionGrilleDataStore.setDefaultSort('session_nom', 'ASC'); var sessionGrille = new Ext.grid.EditorGrid('sessionGrille', { ds:sessionGrilleDataStore, cm:sessionGrilleColumnModel, selModel:new Ext.grid.RowSelectionModel({singleSelect:false}), enableColLock:false }); var sessionGrilleLayout = Ext.BorderLayout.create({ center:{ panels:[new Ext.GridPanel(sessionGrille, {fitToFrame:true})] } }, 'session'); sessionGrille.render(); var sessionGrilleHeader = sessionGrille.getView().getHeaderPanel(true); var sessionToolbar = new Ext.Toolbar(sessionGrilleHeader); var sessionGrilleTitre = new Ext.Toolbar.Button({ text:'' }); var sessionfilterButton = new Ext.Toolbar.MenuButton({ text: 'Filtre', icon: 'include/image/magnifier.png', cls: 'x-btn-text-icon', tooltip: 'Sélectionnez un filtre.', menu: {items: [ new Ext.menu.CheckItem({ text:'Nom d\'utilisateur', checked:false, group:'sessionFilter', checkHandler:sessionFiltreSelection }), new Ext.menu.CheckItem({ text:'Nom', checked:true, group:'sessionFilter', checkHandler:sessionFiltreSelection }), new Ext.menu.CheckItem({ text:'Prénom', checked:false, group:'sessionFilter', checkHandler:sessionFiltreSelection }) ]}, minWidth: 105 }); // MENU SELECTION ----- //FUNCTION ==> SÉLECTION DES SESSIONS var sessionSelection; function sessionGrilleSelection(item, id){ sessionSelection = item.id; sessionGrilleDataStore.load({params:{start:0, limit:sessionLigne, sessionSelectionId:item.id}}); Ext.Ajax.request({ url:'include/session/sessionGrilleTitre.php', method:'post', params: {sessionGrilleTitre:item.id}, callback:function(options, success, response){ sessionGrilleTitre.setText(response.responseText); } }); } function sessionGrilleSelectionMenuFunction(){ Ext.Ajax.request({ url:'include/session/sessionGrilleSelectionMenu.php', method:'post', callback:function(options, success, response){ var data; data = response.responseText.replace(/[\n\r]/g,''); data = eval('('+data+')'); //SUPER MENU : SELECTION PAR ÉTABLISSEMENTS function sessionGrilleMenu(handler, id1, id2, id3){ var items = []; var key1 = 0; while(data.results[0][key1] != undefined){ items[key1] = new Object(); items[key1].text = data.results[0][key1][1]; items[key1].menu = new Object(); items[key1].menu.items = []; var key2 = 0; while(data.results[0][key1][2][key2] != undefined){ items[key1].menu.items[key2] = new Object(); items[key1].menu.items[key2].text = data.results[0][key1][2][key2][1]; items[key1].menu.items[key2].id = id2 + ':' + data.results[0][key1][2][key2][0]; items[key1].menu.items[key2].handler = handler; items[key1].menu.items[key2].menu = new Object(); items[key1].menu.items[key2].menu.items = []; var key3 = 0; while(data.results[0][key1][2][key2][2][key3] != undefined){ items[key1].menu.items[key2].menu.items[key3] = new Ext.menu.Item({ text: data.results[0][key1][2][key2][2][key3][2] + ' ' + data.results[0][key1][2][key2][2][key3][3] + ' ' + data.results[0][key1][2][key2][2][key3][4] + ' ' + data.results[0][key1][2][key2][2][key3][5] + ' ' + data.results[0][key1][2][key2][2][key3][1], id: id3 + ':' + data.results[0][key1][2][key2][2][key3][0], handler: handler }); ++key3; } ++key2; } ++key1; } return items; } function sessionGrilleMenuCategorie(handler, id1, id2, id3){ var items = []; var key1 = 0; while(data.results[1][key1] != undefined){ items[key1] = new Object(); items[key1].text = data.results[1][key1][1]; items[key1].id = id1 + ':' + data.results[1][key1][0]; items[key1].handler = handler; items[key1].menu = new Object(); items[key1].menu.items = []; var key2 = 0; while(data.results[1][key1][2][key2] != undefined){ items[key1].menu.items[key2] = new Object(); items[key1].menu.items[key2].text = data.results[1][key1][2][key2][0]; items[key1].menu.items[key2].id = id2 + ':' + data.results[1][key1][0] + ':' + data.results[1][key1][2][key2][0]; items[key1].menu.items[key2].handler = handler; items[key1].menu.items[key2].menu = new Object(); items[key1].menu.items[key2].menu.items = []; var key3 = 0; while(data.results[1][key1][2][key2][1][key3] != undefined){ items[key1].menu.items[key2].menu.items[key3] = new Ext.menu.Item({ text: data.results[1][key1][2][key2][1][key3], id: id3 + ':' + data.results[1][key1][0] + ':' + data.results[1][key1][2][key2][0] + ':' + data.results[1][key1][2][key2][1][key3], handler: handler }); ++key3; } ++key2; } ++key1; } return items; } var sessionGrilleSelectionMenu = new Ext.menu.Menu({ id: 'sessionGrilleSelectionMenu', items: [ { text: 'Par regroupement...', menu: { items: sessionGrilleMenu(sessionGrilleSelection, 1, 2, 3) } },{ text: 'Par categorie... (Beta)', menu: { items: sessionGrilleMenuCategorie(sessionGrilleSelection, 8, 9, 10) } } ] }); var sessionGrilleExporterMenu = new Ext.menu.Menu({ id: 'sessionGrilleExporterMenu', items: [ new Ext.menu.Item({ text: 'Imprimer', icon: 'include/image/printer.png', cls: 'x-btn-text-icon', handler: sessionImprimerDialog }) ] }); sessionToolbar.add({ icon: 'include/image/page_white_magnify.png', cls: 'x-btn-text-icon', text:'Sélection', menu: sessionGrilleSelectionMenu }); sessionToolbar.add({ icon: 'include/image/page_white_go.png', cls: 'x-btn-text-icon', text:'Impression', menu: sessionGrilleExporterMenu }); Ext.get(Ext.get(sessionToolbar.addSpacer().getEl()).dom.parentNode).setStyle('width', '50%'); sessionToolbar.add(sessionGrilleTitre); Ext.get(Ext.get(sessionToolbar.addSpacer().getEl()).dom.parentNode).setStyle('width', '100%'); sessionToolbar.add(sessionfilterButton); sessionFilter = Ext.get(sessionToolbar.addDom({ tag: 'input', type: 'text', size: '30', value: '', style: 'background: #f0f0f0;' }).el); sessionFilter.on('keypress', function(e) { if(e.getKey() == e.ENTER && this.getValue().length > 0) { sessionGrilleDataStore.load({params:{start:0, limit:sessionLigne}}); } }); sessionFilter.on('keyup', function(e) { if(e.getKey() == e.BACKSPACE && this.getValue().length === 0) { sessionGrilleDataStore.load({params:{start:0, limit:sessionLigne}}); } }); sessionGrilleDataStore.on('beforeload', function() { sessionGrilleDataStore.baseParams = { sessionStatistique: true, sessionFiltreText: sessionFilter.getValue(), sessionFiltreColonne: sessionfilterButton.getText() }; }); sessionGrilleDataStore.load({params:{start:0, limit:sessionLigne}}); var sessionGrilleFooter = sessionGrille.getView().getFooterPanel(true); paging = new Ext.PagingToolbar(sessionGrilleFooter, sessionGrilleDataStore, { pageSize:sessionLigne, displayInfo:true }); } }); } var sessionSelection = new Ext.Toolbar.MenuButton({ menu: sessionGrilleSelectionMenuFunction() }); // FIN MENU SELECTION ----- //FUNCTION ==> SÉLECTION DES SESSIONS var sessionSelection; function sessionGrilleSelection(item, id){ sessionSelection = item.id; sessionGrilleDataStore.load({params:{start:0, limit:sessionLigne, sessionSelectionId:item.id}}); Ext.Ajax.request({ url:'include/session/sessionGrilleTitre.php', method:'post', params: {sessionGrilleTitre:item.id}, callback:function(options, success, response){ sessionGrilleTitre.setText(response.responseText); } }); } // FIN FUNCTION => SELECTION DES SESSIONS // FONCTIONS EXPORTER ------ //FUNCTION ==> IMPRIMER function sessionImprimerDialog(){ Ext.Ajax.request({ url:'include/session/sessionGrilleSelection.php', params: {sessionImprimer:true}, methode:'post', callback:function(options, success, response){ if (success == true){ var sessionExporterEl = Ext.get('athleteExporter'); sessionExporterEl.update(''); } } }); } // FIN FONCTIONS EXPORTER - IMPRIMER ------ var sessionAjoutStatutId; sessionToolbar.add( ); function sessionFiltreSelection(item, checked){ if(checked) { sessionfilterButton.setText(item.text); } } //FUNCTION ==> TRANSFÈRE LES ID DE LA SÉLECTION SOUS LE FORMAT JSON function sessionSelectionJson(){ var m = sessionGrille.getSelections(); var jsonData = '['; for (var i = 0, len = m.length; i < len; i++){ var ss = '{\"id\":\"' + m[i].get('session_id') + '\"}'; if (i == 0){ jsonData = jsonData + ss ; } else { jsonData = jsonData + ',' + ss; sessionGrilleDataStore.remove(m[i]); } } jsonData = jsonData + ']'; return jsonData; } //FUNCTION ==> SUPPRESSION DE LA SÉLECTION DE SESSION //FUNCTION ==> LIBERATION DE LA SÉLECTION DE SESSION //BOÎTE DE DIALOGUE ==> CONFIGURATION function createNewDialog(dialogName) { var thisDialog = new Ext.LayoutDialog(dialogName, { modal:true, autoTabs:true, proxyDrag:true, resizable:false, collapsible:false, width:480, height:425, shadow:true, center: { autoScroll:true, tabPosition:'top', closeOnTab:true, alwaysShowTabs: true } }); thisDialog.addKeyListener(27, thisDialog.hide, thisDialog); thisDialog.addButton('Annuler', function() {thisDialog.hide();}); return thisDialog; }; // //BOÎTE DE DIALOGUE ==> MODIFICATION D'UNE SESSION var sessionSelectionId; sessionGrille.on('rowdblclick', function(sessionGrille, rowIndex, e){ }); // //BOITE DE DIALOGUE ==> AJOUT D'UNE SESSION function sessionAjoutDialog(){ var erreur = 'Veuillez corriger les champs suivis d\'un point d\'exclamation.'; var sessionAjoutDialog; if (!sessionAjoutDialog) { sessionAjoutDialog = createNewDialog('session_ajout_dialog'); sessionAjoutDialog.addButton('Ajouter', function() { var sessionAssuranceMaladieNomPrenom = sessionAjoutAssuranceMaladie.getValue().slice(0,4); var sessionNomCode = sessionAjoutNom.getValue().slice(0,3).toUpperCase(); var sessionPrenomCode = sessionAjoutPrenom.getValue().slice(0,1).toUpperCase(); sessionNomCode = accentsRemove(sessionNomCode); sessionPrenomCode = accentsRemove(sessionPrenomCode); var sessionNomPrenomCode = sessionNomCode + sessionPrenomCode; if (sessionNomPrenomCode != sessionAssuranceMaladieNomPrenom){ sessionAjoutAssuranceMaladie.markInvalid('Le numéro d\'assurance maladie ne correspond pas au nom et/ou prénom'); sessionAjoutNom.markInvalid('Le numéro d\'assurance maladie ne correspond pas au nom et/ou prénom'); sessionAjoutPrenom.markInvalid('Le numéro d\'assurance maladie ne correspond pas au nom et/ou prénom'); Ext.MessageBox.alert('Erreur', erreur); return; } if (session_ajout_information_form.isValid() && session_ajout_coordonnee_form.isValid()){ session_ajout_information_form.submit({ waitMsg:'Transfère des données au serveur...', reset: false, params: { sessionAjoutStatut:sessionAjoutStatutId, sessionAjoutAdresse:sessionAjoutAdresse.getValue(), sessionAjoutVille:sessionAjoutVille.getValue(), sessionAjoutProvince:sessionAjoutProvince.getValue(), sessionAjoutCodePostal:sessionAjoutCodePostal.getValue(), sessionAjoutTelephoneTravail:sessionAjoutTelephoneTravail.getValue(), sessionAjoutTelephoneResidence:sessionAjoutTelephoneResidence.getValue(), sessionAjoutTelephoneCellulaire:sessionAjoutTelephoneCellulaire.getValue(), sessionAjoutFax:sessionAjoutFax.getValue(), sessionAjoutCourriel:sessionAjoutCourriel.getValue() }, failure: function(session_ajout_information_form, alert){ Ext.Msg.alert('Erreur', 'Une erreur est survenue lors du transfère des données.'); }, success: function(session_ajout_information_form, alert){ Ext.MessageBox.alert('Message', 'La session a été ajoutée avec succès.'); sessionAjoutDialog.hide(); sessionGrilleDataStore.load({params:{start:0, limit:sessionLigne}}); sessionAjoutResetForm(); } }); } else { Ext.MessageBox.alert('Erreur', erreur); } }); var sessionAjoutLayout = sessionAjoutDialog.getLayout(); sessionAjoutLayout.beginUpdate(); sessionAjoutLayout.add('center', new Ext.ContentPanel('session_ajout_information', {title: 'Informations'})); sessionAjoutLayout.add('center', new Ext.ContentPanel('session_ajout_coordonnee', {autoCreate:true, title: 'Coordonnées', background:true})); sessionAjoutLayout.endUpdate(); sessionAjoutDialog.show(); }; } // //BOITE DE DIALOGUE ==> AJOUT (assignation des champs) var sessionEtablissementDataStore = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({url: 'include/equipe/equipeEtablissement.php'}), reader: new Ext.data.JsonReader({ root: 'results', totalProperty: 'total', id: 'etablissement_id' }, [ {name: 'etablissement_id'}, {name: 'etablissement_etablissement'} ] ) }); sessionEtablissementDataStore.setDefaultSort('etablissement_etablissement', 'ASC'); sessionEtablissementDataStore.load(); var sessionAjoutEtablissement = new Ext.form.ComboBox({ fieldLabel: 'Etablissement', hiddenName: 'sessionAjoutEtablissement', store: sessionEtablissementDataStore, valueField:'etablissement_id', displayField:'etablissement_etablissement', typeAhead: false, mode: 'remote', triggerAction: 'all', selectOnFocus:true, allowBlank:false, disabled: true }); function sessionAjoutEntraineurSelection(amaladie, etablissementid, btn){ if (btn == 'yes'){ Ext.Ajax.request({ url:'include/session/sessionAjoutEntraineur.php', params:{sessionAssuranceMaladie:amaladie, sessionEtablissementId:etablissementid}, methode:'post', callback: function(options, success, response){ var data; data = response.responseText.replace(/[\n\r]/g,''); data = eval('('+data+')'); if (data.success == false){ Ext.MessageBox.alert('Message', 'L\'entraîneur est déjà assigner à cet établissement.'); sessionGrilleDataStore.load({params:{start:0, limit:sessionLigne}}); sessionAjoutResetForm(); sessionAjoutEtablissement.enable(); } else if (data.success == true){ Ext.MessageBox.alert('Message', 'L\'entraîneur a été assigner avec succès.'); sessionAjoutResetForm(); sessionAjoutEtablissement.enable(); } else { Ext.Msg.alert('Erreur', 'Une erreur est survenue lors du transfère des données.'); } } }); } else { sessionAjoutResetForm(); sessionAjoutEtablissement.enable(); } } var sessionAjoutNomUtilisateur = new Ext.form.TextField({ fieldLabel: 'Nom d\'utilisateur', name: 'sessionAjoutNomUtilisateur', allowBlank:false, onBlur: function (){ if (this.isValid(false) == true){ Ext.Ajax.request({ url:'include/session/sessionNomUtilisateur.php', params:{sessionNomUtilisateur:this.getValue()}, methode:'post', callback:function(options, success, response){ var data; data = response.responseText.replace(/[\n\r]/g,''); data = eval('('+data+')'); if (data.success == false){ sessionAjoutNomUtilisateur.markInvalid('Ce nom d\'utilisateur existe déjà.'); } } }); } } }); var sessionAjoutMotPasse = new Ext.form.TextField({ fieldLabel: 'Mot de passe', name: 'sessionAjoutMotPasse', vtype:'password' }); var sessionAjoutNom = new Ext.form.TextField({ fieldLabel: 'Nom', name: 'sessionAjoutNom', allowBlank:false, onBlur: function (){ var sessionNomValue = this.getValue(); sessionNomValue = capWords(sessionNomValue); this.setValue(sessionNomValue); } }); var sessionAjoutPrenom = new Ext.form.TextField({ fieldLabel: 'Prénom', name: 'sessionAjoutPrenom', allowBlank:false, onBlur: function (){ var sessionPrenomValue = this.getValue(); sessionPrenomValue = capWords(sessionPrenomValue); this.setValue(sessionPrenomValue); } }); var sessionAjoutAssuranceMaladie = new Ext.form.TextField({ fieldLabel: 'Assurance maladie', name: 'sessionAjoutAssuranceMaladie', vtype: 'assurancemaladie', allowBlank:false, onBlur: function (){ if (this.isValid(false) == true){ var sexe; var errMsg = 'Ce champ doit contenir un numéro d\'assurance maladie sous le format suivant: NNNP aammjj 00'; var assurancemaladieNomPrenom = this.getValue().slice(0,4); var assurancemaladieAnnee = this.getValue().slice(5,7); var assurancemaladieMois = this.getValue().slice(7,9); var assurancemaladieJour = this.getValue().slice(9,11); var assurancemaladieCode = this.getValue().slice(12,14); if (assurancemaladieJour >= 1 && assurancemaladieJour <= 31){ } else { this.markInvalid(errMsg); return; } if ((assurancemaladieMois >= 1 && assurancemaladieMois <= 12) || (assurancemaladieMois >= 51 && assurancemaladieMois <= 62)){ } else { this.markInvalid(errMsg); return; } var assurancemaladie = assurancemaladieNomPrenom.toUpperCase() + ' ' + assurancemaladieAnnee + '' + assurancemaladieMois + '' + assurancemaladieJour + ' ' + assurancemaladieCode; this.setValue(assurancemaladie); Ext.Ajax.request({ url:'include/session/sessionAssuranceMaladie.php', params:{sessionAssuranceMaladie:assurancemaladie, sessionStatutId:sessionAjoutStatutId, sessionEtablissementId:sessionAjoutEtablissement.getValue()}, methode:'post', callback:function(options, success, response){ var data; data = response.responseText.replace(/[\n\r]/g,''); data = eval('('+data+')'); if (data.success == false){ var etablissementid = data.etablissementid; var amaladie = data.assurancemaladie; if (data.statut == true){ Ext.MessageBox.confirm('Message', 'L\'entraîneur dont le code permanent est ' + amaladie + ' existe déjà. Souhaitez-vous assigner ' + data.prenom + ' ' + data.nom + ' à ' + data.etablissement + '?' , sessionAjoutEntraineurSelection.createDelegate(this, [amaladie, etablissementid], 0)); } else if (data.statut == false){ Ext.MessageBox.alert('Message', 'L\'entraîneur dont le code permanent est ' + amaladie + ' existe déjà. Si vous souhaitez assigner ' + data.prenom + ' ' + data.nom + ' à un établissement, vous devez en premier lieu choisir un établissement.'); } else { sessionAjoutAssuranceMaladie.markInvalid('Ce numero d\'assurance maladie existe déjà.'); } } } }); } } }); var sessionAjoutNiveauCC = new Ext.form.ComboBox({ fieldLabel: 'PNCE', hiddenName: 'sessionAjoutNiveauCC', store: new Ext.data.SimpleStore({ fields: ['abbr', 'niveau'], data : [ ['0', 'Aucune'], ['1', '1'], ['2', '2'], ['3', '3+'] ] }), valueField: 'abbr', displayField: 'niveau', typeAhead: false, mode: 'local', triggerAction: 'all', selectOnFocus: true, editable: false, value: '0', allowBlank: false }); sessionAjoutNiveauCC.on('select', function(combo, record, index){ if (record.data.abbr != 0){ sessionAjoutNumeroCC.enable(); } else { sessionAjoutNumeroCC.disable(); sessionAjoutNumeroCC.reset(); } }); var sessionAjoutNumeroCC = new Ext.form.TextField({ fieldLabel: 'CC', name: 'sessionAjoutNumeroCC', allowBlank:false, disabled:true }); var sessionAjoutAdresse = new Ext.form.TextField({ fieldLabel: 'Adresse', name: 'sessionAjoutAdresse' }); var sessionAjoutVille = new Ext.form.TextField({ fieldLabel: 'Ville', name: 'sessionAjoutVille' }); var sessionAjoutProvince = new Ext.form.ComboBox({ fieldLabel: 'Province', hiddenName: 'sessionAjoutProvince', store: new Ext.data.SimpleStore({ fields: ['abbr', 'province'], data : Ext.data.province }), valueField:'abbr', displayField:'province', typeAhead: false, mode: 'local', triggerAction: 'all', selectOnFocus:true }); var sessionAjoutCodePostal = new Ext.form.TextField({ fieldLabel: 'Code postal', name: 'sessionAjoutCodePostal', vtype:'zipcode', onBlur: function(){ this.setValue(this.getValue().slice(0,7).toUpperCase()); } }); var sessionAjoutTelephoneTravail = new Ext.form.TextField({ fieldLabel: 'Telephone travail', name: 'sessionAjoutTelephoneTravail', vtype:'phone' }); var sessionAjoutTelephoneResidence = new Ext.form.TextField({ fieldLabel: 'Telephone résidence', name: 'sessionAjoutTelephoneResidence', vtype:'phone' }); var sessionAjoutTelephoneCellulaire = new Ext.form.TextField({ fieldLabel: 'Telephone cellulaire', name: 'sessionAjoutTelephoneCellulaire', vtype:'phone' }); var sessionAjoutFax = new Ext.form.TextField({ fieldLabel: 'Fax', name: 'sessionAjoutFax', vtype:'phone' }); var sessionAjoutCourriel = new Ext.form.TextField({ fieldLabel: 'Courriel', name: 'sessionAjoutCourriel', vtype:'email' }); var session_ajout_information_form = new Ext.form.Form({ labelAlign: '', url:'include/session/sessionAjout.php' }); var session_ajout_coordonnee_form = new Ext.form.Form({ labelAlign: '' }); session_ajout_information_form.column({width: 430, labelWidth:120, style:'margin-left:8px;margin-top:8px'}); session_ajout_coordonnee_form.column({width: 430, labelWidth:120, style:'margin-left:8px;margin-top:8px'}); session_ajout_information_form.fieldset( {id:'', legend:'Champs obligatoires'}, sessionAjoutEtablissement, sessionAjoutAssuranceMaladie, sessionAjoutNom, sessionAjoutPrenom, sessionAjoutNomUtilisateur, sessionAjoutMotPasse, sessionAjoutNiveauCC, sessionAjoutNumeroCC ); session_ajout_coordonnee_form.fieldset( {id:'', legend:'Champ optionnel'}, sessionAjoutAdresse, sessionAjoutVille, sessionAjoutProvince, sessionAjoutCodePostal, sessionAjoutTelephoneTravail, sessionAjoutTelephoneResidence, sessionAjoutTelephoneCellulaire, sessionAjoutFax, sessionAjoutCourriel ) session_ajout_information_form.applyIfToFields({width:255}); session_ajout_information_form.render('session_ajout_information_form'); session_ajout_information_form.end(); session_ajout_coordonnee_form.applyIfToFields({width:255}); session_ajout_coordonnee_form.render('session_ajout_coordonnee_form'); session_ajout_coordonnee_form.end(); function sessionAjoutResetForm(){ sessionAjoutEtablissement.disable(); sessionAjoutEtablissement.reset(); sessionAjoutNomUtilisateur.reset(); sessionAjoutMotPasse.reset(); sessionAjoutNom.reset(); sessionAjoutPrenom.reset(); sessionAjoutAssuranceMaladie.reset(); sessionAjoutNiveauCC.reset(); sessionAjoutNumeroCC.reset(); sessionAjoutAdresse.reset(); sessionAjoutVille.reset(); sessionAjoutCodePostal.reset(); sessionAjoutProvince.reset(); sessionAjoutTelephoneTravail.reset(); sessionAjoutTelephoneResidence.reset(); sessionAjoutTelephoneCellulaire.reset(); sessionAjoutFax.reset(); sessionAjoutCourriel.reset(); sessionAjoutNumeroCC.disable(); }; // //BOÎTE DE DIALOGUE ==> MODIFICATION (assignation des champs) var sessionModifNomUtilisateur = new Ext.form.TextField({ fieldLabel: 'Nom d\'utilisateur', name: 'sessionModifNomUtilisateur', allowBlank:false, readOnly: true }); var sessionModifMotPasse = new Ext.form.TextField({ fieldLabel: 'Mot de passe', name: 'sessionModifMotPasse', vtype:'password', allowBlank:false }); var sessionModifNom = new Ext.form.TextField({ fieldLabel: 'Nom', name: 'sessionModifNom', allowBlank:false, onBlur: function (){ var sessionNomValue = this.getValue(); sessionNomValue = capWords(sessionNomValue); this.setValue(sessionNomValue); } }); var sessionModifPrenom = new Ext.form.TextField({ fieldLabel: 'Prénom', name: 'sessionModifPrenom', allowBlank:false, onBlur: function (){ var sessionPrenomValue = this.getValue(); sessionPrenomValue = capWords(sessionPrenomValue); this.setValue(sessionPrenomValue); } }); var sessionModifAssuranceMaladie = new Ext.form.TextField({ fieldLabel: 'Assurance maladie', name: 'sessionModifAssuranceMaladie', vtype: 'assurancemaladie', allowBlank:false, onBlur: function (){ if (this.isValid(false) == true){ var sexe; var errMsg = 'Ce champ doit contenir un numéro d\'assurance maladie sous le format suivant: \"NNNP jjmmaa 00\"'; var assurancemaladieNomPrenom = this.getValue().slice(0,4); var assurancemaladieJour = this.getValue().slice(5,7); var assurancemaladieMois = this.getValue().slice(7,9); var assurancemaladieAnnee = this.getValue().slice(9,11); var assurancemaladieCode = this.getValue().slice(12,14); if (assurancemaladieJour >= 1 && assurancemaladieJour <= 31){ } else { this.markInvalid(errMsg); return; } if ((assurancemaladieMois >= 1 && assurancemaladieMois <= 12) || (assurancemaladieMois >= 51 && assurancemaladieMois <= 62)){ } else { this.markInvalid(errMsg); return; } var assurancemaladie = assurancemaladieNomPrenom.toUpperCase() + ' ' + assurancemaladieJour + '' + assurancemaladieMois + '' + assurancemaladieAnnee + ' ' + assurancemaladieCode; this.setValue(assurancemaladie); Ext.Ajax.request({ url:'include/session/sessionAssuranceMaladie.php', params:{sessionAssuranceMaladie:assurancemaladie, sessionId:sessionSelectionId}, methode:'post', callback:function(options, success, response){ var data; data = response.responseText.replace(/[\n\r]/g,''); data = eval('('+data+')'); if (data.success == false){ sessionModifAssuranceMaladie.markInvalid('Ce numero d\'assurance maladie existe déjà.'); } } }); } } }); var sessionModifNiveauCC = new Ext.form.ComboBox({ fieldLabel: 'PNCE', hiddenName: 'sessionModifNiveauCC', store: new Ext.data.SimpleStore({ fields: ['abbr', 'niveau'], data : [ ['0', 'Aucune'], ['1', '1'], ['2', '2'], ['3', '3+'] ] }), valueField: 'abbr', displayField: 'niveau', typeAhead: false, mode: 'local', triggerAction: 'all', selectOnFocus: true, editable: false, value: '0', allowBlank: false }); sessionModifNiveauCC.on('select', function(combo, record, index){ if (record.data.abbr != 0){ sessionModifNumeroCC.enable(); } else { sessionModifNumeroCC.disable(); sessionModifNumeroCC.reset(); } }); var sessionModifNumeroCC = new Ext.form.TextField({ fieldLabel: 'CC', name: 'sessionModifNumeroCC', allowBlank:false, disabled:true }); var sessionModifAdresse = new Ext.form.TextField({ fieldLabel: 'Adresse', name: 'sessionModifAdresse' }); var sessionModifVille = new Ext.form.TextField({ fieldLabel: 'Ville', name: 'sessionModifVille' }); var sessionModifProvince = new Ext.form.ComboBox({ fieldLabel: 'Province', hiddenName: 'sessionModifProvince', store: new Ext.data.SimpleStore({ fields: ['abbr', 'province'], data : Ext.data.province }), valueField:'abbr', displayField:'province', typeAhead: false, mode: 'local', triggerAction: 'all', selectOnFocus:true }); var sessionModifCodePostal = new Ext.form.TextField({ fieldLabel: 'Code postal', name: 'sessionModifCodePostal', vtype:'zipcode', onBlur: function(){ this.setValue(this.getValue().slice(0,7).toUpperCase()); } }); var sessionModifTelephoneTravail = new Ext.form.TextField({ fieldLabel: 'Telephone travail', name: 'sessionModifTelephoneTravail', vtype:'phone' }); var sessionModifTelephoneResidence = new Ext.form.TextField({ fieldLabel: 'Telephone résidence', name: 'sessionModifTelephoneResidence', vtype:'phone' }); var sessionModifTelephoneCellulaire = new Ext.form.TextField({ fieldLabel: 'Telephone cellulaire', name: 'sessionModifTelephoneCellulaire', vtype:'phone' }); var sessionModifFax = new Ext.form.TextField({ fieldLabel: 'Fax', name: 'sessionModifFax', vtype:'phone' }); var sessionModifCourriel = new Ext.form.TextField({ fieldLabel: 'Courriel', name: 'sessionModifCourriel', vtype:'email' }); var session_modif_information_form = new Ext.form.Form({ labelAlign: '', url:'include/session/sessionModificationAmont.php' }); var session_modif_coordonnee_form = new Ext.form.Form({ labelAlign: '' }); session_modif_information_form.column({width: 430, labelWidth:120, style:'margin-left:8px;margin-top:8px'}); session_modif_coordonnee_form.column({width: 430, labelWidth:120, style:'margin-left:8px;margin-top:8px'}); session_modif_information_form.fieldset( {id:'', legend:'Champs obligatoires'}, sessionModifAssuranceMaladie, sessionModifNom, sessionModifPrenom, sessionModifNomUtilisateur, sessionModifMotPasse, sessionModifNiveauCC, sessionModifNumeroCC ); session_modif_coordonnee_form.fieldset( {id:'', legend:'Champ optionnel'}, sessionModifAdresse, sessionModifVille, sessionModifProvince, sessionModifCodePostal, sessionModifTelephoneTravail, sessionModifTelephoneResidence, sessionModifTelephoneCellulaire, sessionModifFax, sessionModifCourriel ) session_modif_information_form.applyIfToFields({width:255}); session_modif_information_form.render('session_modif_information_form'); session_modif_information_form.end(); session_modif_coordonnee_form.applyIfToFields({width:255}); session_modif_coordonnee_form.render('session_modif_coordonnee_form'); session_modif_coordonnee_form.end(); function sessionModifResetForm(){ sessionModifNomUtilisateur.reset(); sessionModifMotPasse.reset(); sessionModifNom.reset(); sessionModifPrenom.reset(); sessionModifAssuranceMaladie.reset(); sessionModifAdresse.reset(); sessionModifVille.reset(); sessionModifCodePostal.reset(); sessionModifProvince.reset(); sessionModifTelephoneTravail.reset(); sessionModifTelephoneResidence.reset(); sessionModifTelephoneCellulaire.reset(); sessionModifFax.reset(); sessionModifCourriel.reset(); sessionModifNumeroCC.disable(); }; //BOITE DE DIALOGUE ==> LIBERER UNE SESSION var sessionSelectionId2; function sessionLibererDialog(){ var m = sessionGrille.getSelections(); sessionSelectionId2 = sessionSelectionJson(); if (m.length > 0){ var erreur = 'Veuillez corriger les champs suivis d\'un point d\'exclamation.'; var sessionLibererDialog; if (!sessionLibererDialog) { //sessionLibererDialog = createNewDialog('session_liberer_dialog'); sessionLibererDialog = new Ext.LayoutDialog('session_liberer_dialog', { modal:true, autoTabs:true, proxyDrag:true, resizable:false, collapsible:false, width:480, height:200, shadow:true, center: { autoScroll:true, tabPosition:'top', closeOnTab:true, alwaysShowTabs: true } }); sessionLibererDialog.addKeyListener(27, sessionLibererDialog.hide, sessionLibererDialog); sessionLibererDialog.addButton('Annuler', function() { hideField(sessionLibererEtablissement); hideField(sessionLibererId); sessionLibererDialog.hide(); }); sessionLibererDialog.addButton('Liberer', function() { if (session_liberer_information_form.isValid()){ session_liberer_information_form.submit({ waitMsg:'Transfère des données au serveur...', reset: false, failure: function(session_liberer_information_form, alert){ Ext.Msg.alert('Erreur', 'Une erreur est survenue lors du transfère des données.'); }, success: function(session_liberer_information_form, alert){ Ext.MessageBox.alert('Message', 'La session a été ajoutée avec succès.'); hideField(sessionLibererEtablissement); hideField(sessionLibererId); sessionLibererDialog.hide(); sessionGrilleDataStore.load({params:{start:0, limit:sessionLigne}}); //sessionLibererResetForm(); } }); } else { Ext.MessageBox.alert('Erreur', erreur); } }); var sessionLibererLayout = sessionLibererDialog.getLayout(); sessionLibererLayout.beginUpdate(); sessionLibererLayout.add('center', new Ext.ContentPanel('session_liberer_information', {title: 'Libération'})); sessionLibererLayout.endUpdate(); sessionLibererDialog.show(); }; // //BOITE DE DIALOGUE ==> LIBERER UNE SESSION (assignation des champs) var sessionEtablissementDataStore = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'include/equipe/equipeEtablissement2.php', method: 'POST' }), baseParams:{sessionLibererSelectionId: sessionSelectionId2}, reader: new Ext.data.JsonReader({ root: 'results', totalProperty: 'total', id: 'etablissement_id' }, [ {name: 'etablissement_id'}, {name: 'etablissement_etablissement'} ] ) }); sessionEtablissementDataStore.setDefaultSort('etablissement_etablissement', 'ASC'); sessionEtablissementDataStore.load(); var sessionLibererEtablissement = new Ext.form.ComboBox({ fieldLabel: 'Etablissement', hiddenName: 'sessionLibererEtablissement', store: sessionEtablissementDataStore, valueField:'etablissement_id', displayField:'etablissement_etablissement', typeAhead: false, mode: 'remote', triggerAction: 'all', selectOnFocus:true, allowBlank:false, disabled: false }); var sessionLibererId = new Ext.form.TextField({ fieldLabel: 'Id', name: 'sessionLibererId', value: sessionSelectionId2, readOnly: true }); var session_liberer_information_form = new Ext.form.Form({ labelAlign: '', url:'include/session/sessionLiberer.php' }); var session_liberer_coordonnee_form = new Ext.form.Form({ labelAlign: '' }); session_liberer_information_form.column({width: 430, labelWidth:120, style:'margin-left:8px;margin-top:8px'}); session_liberer_information_form.add(sessionLibererEtablissement, sessionLibererId); session_liberer_information_form.render('session_liberer_information_form'); session_liberer_information_form.end(); function sessionLibererResetForm(){ //sessionLibererEtablissement.disable(); sessionLibererEtablissement.reset(); sessionLibererId.reset(); }; function hideField(field) { field.disable();// for validation field.hide(); field.getEl().up('.x-form-item').setDisplayed(false); // hide label }; } else { Ext.MessageBox.alert('Erreur', Msg003); } } //MESASAGES var Msg001 = 'Veuillez sélectionner au minimum un athlète.'; //MODEL DE LA GRILLE ATHLÈTE ==> PARAMÈTRES var athleteLigne = 50; //GRILLE ==> ATHLÈTE (fonctions qui gèrent de façon particulière le contenu d'une colonne) function formatDate(value){ return value ? value.dateFormat('Y-m-d') : ''; } function athleteGrilleRenderStatut(value, p, record){ var statutString = []; if (record.data['athlete_eliminatoire'] == 1){ statutString = ''; } else { if (value == 0){ statutString = ''; } else if (value == 1){ statutString = ''; } else if (value == 2){ statutString = ''; } else if (value == 3){ statutString = ''; } else if (value == 4){ statutString = ''; } } return String.format('{0}', statutString); } function athleteGrilleRenderErreur(value, p, record){ var erreurArray = []; var erreurString = []; erreurArray[0] = record.data['athlete_erreur_sexe']; erreurArray[1] = record.data['athlete_erreur_date_naissance']; if (erreurArray[0] == 0){ erreurString[0] = '\"Le'; } else if (erreurArray[0] == 1){ erreurString[0] = ''; } if (erreurArray[1] == 0){ erreurString[1] = '\"La'; } else if (erreurArray[1] == 1){ erreurString[1] = ''; } return String.format('{0}{1}', erreurString[0], erreurString[1]); } function athleteGrilleRenderAdresse(value, p, record){ if (record.data['athlete_adresse'] != '' && record.data['athlete_ville'] != '' && record.data['athlete_province'] != '' && record.data['athlete_code_postal'] != ''){ return String.format('{0}
{1}, {2}
{3}', record.data['athlete_adresse'], record.data['athlete_ville'], record.data['athlete_province'], record.data['athlete_code_postal']); } else { return String.format('{0} {1} {2}', record.data['athlete_ville'], record.data['athlete_province'], record.data['athlete_code_postal']); } } function athleteGrilleRenderEquipe(value, p, record){ return String.format('{0}', record.data['athlete_equipe_equipe']); } function athleteGrilleRenderCourriel(value, p, record){ return String.format(' {0}', record.data['athlete_courriel']); } //GRILLE ==> ATHLÈTE (modèles qui gèrent le rendu des colonnes) var athleteGrilleColumnModel = new Ext.grid.ColumnModel([ { header: 'Statut', dataIndex: 'athlete_statut', width: 55, renderer: athleteGrilleRenderStatut },{ header: 'No', dataIndex: 'athlete_numero', width: 50 },{ header: 'Nom', dataIndex: 'athlete_nom', width: 160 },{ header: 'Prénom', dataIndex: 'athlete_prenom', width: 160 }, { header: 'Position', dataIndex: 'athlete_position', width: 100 },{ header: 'Taille', dataIndex: 'athlete_taille', width: 70 },{ header: 'Poids', dataIndex: 'athlete_poids', width: 70 },{ header: 'Équipe', dataIndex: 'athlete_equipe_equipe', width: 350, renderer: athleteGrilleRenderEquipe },{ header: 'Équipe antérieure', dataIndex: 'athlete_archive_equipe', width: 350, hidden: true } ]); athleteGrilleColumnModel.defaultSortable = true; //GRILLE ==> ATHLÈTE (methode qui tranfère et gère les données) var athleteGrilleDataStore = new Ext.data.Store({ proxy:new Ext.data.HttpProxy({url: 'include/athlete/athleteGrilleSelection.php'}), reader:new Ext.data.JsonReader({ root:'results', totalProperty:'total', id:'athlete_id' }, [ {name: 'athlete_id'}, {name: 'athlete_nom'}, {name: 'athlete_prenom'}, {name: 'athlete_date_naissance', type:'date', dateFormat:'Y-m-d'}, {name: 'athlete_sexe'}, {name: 'athlete_code_permanent'}, {name: 'athlete_taille'}, {name: 'athlete_poids'}, {name: 'athlete_adresse'}, {name: 'athlete_ville'}, {name: 'athlete_province'}, {name: 'athlete_code_postal'}, {name: 'athlete_telephone'}, {name: 'athlete_courriel'}, {name: 'athlete_option_01'}, {name: 'athlete_option_02'}, {name: 'athlete_option_03'}, {name: 'athlete_option_04'}, {name: 'athlete_option_05'}, {name: 'athlete_saison'}, {name: 'athlete_date_modification', type:'date', dateFormat:'Y-m-d'}, {name: 'athlete_statut'}, {name: 'athlete_date_activation', type:'date', dateFormat:'Y-m-d'}, {name: 'athlete_date_desactivation', type:'date', dateFormat:'Y-m-d'}, {name: 'athlete_eliminatoire'}, {name: 'athlete_numero'}, {name: 'athlete_archive_equipe'}, {name: 'athlete_position'}, {name: 'athlete_erreur_sexe'}, {name: 'athlete_erreur_date_naissance'}, {name: 'athlete_erreur'}, {name: 'athlete_equipe_equipe'} ]), remoteSort: true }); athleteGrilleDataStore.setDefaultSort('athlete_date_naissance', 'ASC'); var athleteGrille = new Ext.grid.EditorGrid('athleteGrille', { ds:athleteGrilleDataStore, cm:athleteGrilleColumnModel, selModel:new Ext.grid.RowSelectionModel({singleSelect:false}), enableColLock:false }); var athleteGrilleLayout = Ext.BorderLayout.create({ center:{ panels:[new Ext.GridPanel(athleteGrille, {fitToFrame:true})] }, east:{ split:false, initialSize: 270, minSize: 270, maxSize: 270, titlebar: true, autoScroll:true, title: 'Statistiques', collapsible: true, animate: true } }, 'athlete'); athleteGrille.render(); var athleteGrilleHeader = athleteGrille.getView().getHeaderPanel(true); var tb = new Ext.Toolbar(athleteGrilleHeader); var athleteGrilleTitre = new Ext.Toolbar.Button({ text:'' }); var athletefilterButton = new Ext.Toolbar.MenuButton({ text: 'Filtre', icon: 'include/image/magnifier.png', cls: 'x-btn-text-icon', tooltip: 'Sélectionnez un filtre.', menu: {items: [ new Ext.menu.CheckItem({ text:'Nom', checked:true, group:'athleteFilter', checkHandler:athleteFiltreSelection }), new Ext.menu.CheckItem({ text:'Prénom', checked:false, group:'athleteFilter', checkHandler:athleteFiltreSelection }), new Ext.menu.CheckItem({ text:'Date de naissance', checked:false, group:'athleteFilter', checkHandler:athleteFiltreSelection }), new Ext.menu.CheckItem({ text:'Code permanent', checked:false, group:'athleteFilter', checkHandler:athleteFiltreSelection }) ]}, minWidth: 105 }); var filter; var gridFoot; var paging; function athleteGrilleSelectionMenuFunction(){ Ext.Ajax.request({ url:'include/athlete/athleteGrilleSelectionMenu.php', method:'post', callback:function(options, success, response){ var data; data = response.responseText.replace(/[\n\r]/g,''); data = eval('('+data+')'); //SUPER MENU : SELECTION PAR ÉTABLISSEMENTS function athleteGrilleMenu(handler, id1, id2, id3){ var items = []; var key1 = 0; while(data.results[0][key1] != undefined){ items[key1] = new Object(); items[key1].text = data.results[0][key1][1]; items[key1].menu = new Object(); items[key1].menu.items = []; var key2 = 0; while(data.results[0][key1][2][key2] != undefined){ items[key1].menu.items[key2] = new Object(); items[key1].menu.items[key2].text = data.results[0][key1][2][key2][1]; items[key1].menu.items[key2].id = id2 + ':' + data.results[0][key1][2][key2][0]; items[key1].menu.items[key2].handler = handler; items[key1].menu.items[key2].menu = new Object(); items[key1].menu.items[key2].menu.items = []; var key3 = 0; while(data.results[0][key1][2][key2][2][key3] != undefined){ items[key1].menu.items[key2].menu.items[key3] = new Ext.menu.Item({ text: data.results[0][key1][2][key2][2][key3][2] + ' ' + data.results[0][key1][2][key2][2][key3][3] + ' ' + data.results[0][key1][2][key2][2][key3][4] + ' ' + data.results[0][key1][2][key2][2][key3][5] + ' ' + data.results[0][key1][2][key2][2][key3][1], id: id3 + ':' + data.results[0][key1][2][key2][2][key3][0], handler: handler }); ++key3; } ++key2; } ++key1; } return items; } function athleteGrilleMenuCategorie(handler, id1, id2, id3){ var items = []; var key1 = 0; while(data.results[1][key1] != undefined){ items[key1] = new Object(); items[key1].text = data.results[1][key1][1]; items[key1].id = id1 + ':' + data.results[1][key1][0]; items[key1].handler = handler; items[key1].menu = new Object(); items[key1].menu.items = []; var key2 = 0; while(data.results[1][key1][2][key2] != undefined){ items[key1].menu.items[key2] = new Object(); items[key1].menu.items[key2].text = data.results[1][key1][2][key2][0]; items[key1].menu.items[key2].id = id2 + ':' + data.results[1][key1][0] + ':' + data.results[1][key1][2][key2][0]; items[key1].menu.items[key2].handler = handler; items[key1].menu.items[key2].menu = new Object(); items[key1].menu.items[key2].menu.items = []; var key3 = 0; while(data.results[1][key1][2][key2][1][key3] != undefined){ items[key1].menu.items[key2].menu.items[key3] = new Ext.menu.Item({ text: data.results[1][key1][2][key2][1][key3], id: id3 + ':' + data.results[1][key1][0] + ':' + data.results[1][key1][2][key2][0] + ':' + data.results[1][key1][2][key2][1][key3], handler: handler }); ++key3; } ++key2; } ++key1; } return items; } var athleteGrilleSelectionMenu = new Ext.menu.Menu({ id: 'athleteGrilleSelectionMenu', items: [ { text: 'Par regroupement...', menu: { items: athleteGrilleMenu(athleteGrilleSelection, 1, 2, 3) } },{ text: 'Par categorie... (Beta)', menu: { items: athleteGrilleMenuCategorie(athleteGrilleSelection, 8, 9, 10) } } ] }); var athleteGrilleExporterMenu = new Ext.menu.Menu({ id: 'athleteGrilleExporterMenu', items: [ new Ext.menu.Item({ text: 'Imprimer', icon: 'include/image/printer.png', cls: 'x-btn-text-icon', handler: athleteImprimerDialog }) ] }); var athleteGrilleLegendeMenu = new Ext.menu.Menu({ id: 'athleteGrilleLegendeMenu', items: [ 'Statut', new Ext.menu.Item({ text: 'Libre', icon: 'include/image/time.png', cls: 'x-btn-text-icon' }), new Ext.menu.Item({ text: 'Inscrit (Entraîneur)', icon: 'include/image/checko.png', cls: 'x-btn-text-icon' }), new Ext.menu.Item({ text: 'Validé (Responsable des sports)', icon: 'include/image/checkj.png', cls: 'x-btn-text-icon' }), new Ext.menu.Item({ text: 'Confirmé (Administrateur)', icon: 'include/image/checkv.png', cls: 'x-btn-text-icon' }), new Ext.menu.Item({ text: 'Non-éligible aux éliminatoires', icon: 'include/image/delete.png', cls: 'x-btn-text-icon' }), new Ext.menu.Item({ text: 'Désactivé', icon: 'include/image/remove.png', cls: 'x-btn-text-icon' }), 'Erreur', new Ext.menu.Item({ text: 'Le sexe ne correspond pas', icon: 'include/image/warningb.png', cls: 'x-btn-text-icon' }), new Ext.menu.Item({ text: 'La date de naissance ne correspond pas', icon: 'include/image/warningo.png', cls: 'x-btn-text-icon' }) ] }); tb.add({ icon: 'include/image/page_white_magnify.png', cls: 'x-btn-text-icon', text:'Sélection', menu: athleteGrilleSelectionMenu }); tb.add({ icon: 'include/image/page_white_go.png', cls: 'x-btn-text-icon', text:'Impression', menu: athleteGrilleExporterMenu }); tb.add({ icon: 'include/image/page_white_text.png', cls: 'x-btn-text-icon', text:'Légende', menu: athleteGrilleLegendeMenu }); Ext.get(Ext.get(tb.addSpacer().getEl()).dom.parentNode).setStyle('width', '50%'); tb.add(athleteGrilleTitre); Ext.get(Ext.get(tb.addSpacer().getEl()).dom.parentNode).setStyle('width', '100%'); tb.add(athletefilterButton); athleteFilter = Ext.get(tb.addDom({ tag: 'input', type: 'text', size: '30', value: '', style: 'background: #f0f0f0;' }).el); athleteFilter.on('keypress', function(e) { if(e.getKey() == e.ENTER && this.getValue().length > 0) { athleteGrilleDataStore.load({params:{start:0, limit:athleteLigne}}); } }); athleteFilter.on('keyup', function(e) { if(e.getKey() == e.BACKSPACE && this.getValue().length === 0) { athleteGrilleDataStore.load({params:{start:0, limit:athleteLigne}}); } }); athleteGrilleDataStore.on('beforeload', function() { athleteGrilleDataStore.baseParams = { athleteStatistique: true, athleteFiltreText: athleteFilter.getValue(), athleteFiltreColonne: athletefilterButton.getText() }; }); athleteGrilleDataStore.load({params:{start:0, limit:athleteLigne}}); var athleteGrilleFooter = athleteGrille.getView().getFooterPanel(true); paging = new Ext.PagingToolbar(athleteGrilleFooter, athleteGrilleDataStore, { pageSize:athleteLigne, displayInfo:true }); } }); } //LAYOUT ==> STATISTIQUES athleteGrilleLayout.beginUpdate(); athleteGrilleLayout.add('east', new Ext.ContentPanel('athleteStatistique', {title: 'Statistiques', closable: false})); athleteGrilleLayout.endUpdate(); var athleteStatistiqueGrilleColumnModel = new Ext.grid.ColumnModel( [ {header: 'Critère', width: 190, dataIndex: 'statistique_statistique'}, {header: 'Valeur', width: 70, dataIndex: 'statistique_valeur'} ] ); var athleteStatistiqueGrilleDataStore = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({url: 'include/athlete/athleteStatistique.php'}), reader: new Ext.data.JsonReader( { record: 'results', id: 'statistique_id' }, [ {name: 'statistique_id'}, {name: 'statistique_statistique'}, {name: 'statistique_valeur'} ] ) }); var athleteStatistiqueGrille = new Ext.grid.EditorGrid('athleteStatistiqueGrille', { ds: athleteStatistiqueGrilleDataStore, cm: athleteStatistiqueGrilleColumnModel, selModel:new Ext.grid.RowSelectionModel(), enableColLock: false, enableColumnHide: false }); athleteStatistiqueGrille.render(); athleteGrilleDataStore.on('load', function(){ athleteStatistiqueGrilleDataStore.load(); }); //FUNCTION ==> SÉLECTION DES GROUPES D'ATHLÈTES var athleteSelection; function athleteGrilleSelection(item, id){ athleteSelection = item.id; athleteGrilleDataStore.load({params:{start:0, limit:athleteLigne, athleteSelectionId:item.id}}); Ext.Ajax.request({ url:'include/athlete/athleteGrilleTitre.php', method:'post', params: {athleteGrilleTitre:item.id}, callback:function(options, success, response){ athleteGrilleTitre.setText(response.responseText); } }); } function athleteFiltreSelection(item, checked){ if(checked) { athletefilterButton.setText(item.text); } } //FUNCTION ==> TRANSFÈRE LES ID DE LA SÉLECTION SOUS LE FORMAT JSON function athleteSelectionJson(){ var m = athleteGrille.getSelections(); var jsonData = '['; for (var i = 0, len = m.length; i < len; i++){ var ss = '{\"id\":\"' + m[i].get('athlete_id') + '\"}'; if (i == 0){ jsonData = jsonData + ss ; } else { jsonData = jsonData + ',' + ss; athleteGrilleDataStore.remove(m[i]); } } jsonData = jsonData + ']'; return jsonData; } //FUNCTION ==> SUPPRESSION DE LA SÉLECTION D'ATHLÈTE //FUNCTION ==> ACTIVATION DE LA SÉLECTION D'ATHLÈTE //FUNCTION ==> IMPRIMER function athleteImprimerDialog(){ Ext.Ajax.request({ url:'include/athlete/athleteGrilleSelection.php', params: {athleteImprimer:true}, methode:'post', callback:function(options, success, response){ if (success == true){ var athleteExporterEl = Ext.get('athleteExporter'); athleteExporterEl.update(''); } } }); } });