Vous êtes sur la page 1sur 4

<script>

var tbl_event = [

{"uap_code": "U_01", "uap_nom": "UAP1"},


{"uap_code": "U_02", "uap_nom": "UAP2"},
{"uap_code": "U_03", "uap_nom": "UAP3"},
{"uap_code": "U_04", "uap_nom": "UAP4"},
{"uap_code": "U_05", "uap_nom": "SG-ELEC"},
{"uap_code": "U_06", "uap_nom": "ATC-PR"},
{"uap_code": "U_07", "uap_nom": "HORS-SITE"},

];

var tbl_event2 = [
/*UAP1*/
{"reg_2016_code": "NR_24", "reg_2016_nom": "LASER2","uap_code":
"U_01"},
{"reg_2016_code": "NR_27", "reg_2016_nom": "PATE JAUNE","uap_code":
"U_01"},
{"reg_2016_code": "NR_53", "reg_2016_nom": "LASER1","uap_code":
"U_01"},
{"reg_2016_code": "NR_75", "reg_2016_nom": "ENROBE","uap_code":
"U_01"},
{"reg_2016_code": "NR_84", "reg_2016_nom": "GAUFRETTE","uap_code":
"U_01"},
{"reg_2016_code": "NR_94", "reg_2016_nom": "LASER3","uap_code":
"U_01"},

];

// tri dans l'ordre alpha pour new r�gion


tbl_event2.sort(function(a, b){
if( a.reg_2016_nom < b.reg_2016_nom)
return( -1);
if( a.reg_2016_nom > b.reg_2016_nom)
return( 1);
return( 0);
});
</script>

<script>

/**
* Fonction de r�cup�ration des données correspondant au crit�re de
recherche
* @param {String} condition - Chaine indiquant la condition �
remplir
* @param {Array} table - Tableau contenant les donn�es � extraire
* @returns {Array} result - Tableau contenant les donn�es extraites
*/
function getDataFromTable( condition, table) {
// r�cupération de la clé et de la valeur
var cde = condition.replace(/\s/g, '').split('='),
key = cde[0],
value = cde[1],
result = [];

// retour direct si *
if (condition === '*') {
return table.slice();
}
// retourne les éléments r�pondant � la condition
result = table.filter( function(obj){
return obj[key] === value;
});
return result;
}
/**
* Affichage du nombre d'<option> pr�sentes dans le <select>
* @param {Object} obj - <select> parent
* @param {Number} nb - nombre � afficher
*/
function setNombre( obj, nb){
var oElem = obj.parentNode.querySelector('.nombre');
if( oElem){
oElem.innerHTML = nb ? '(' +nb +')' :'';
}
}
/**
* Fonction d'ajout des <option> � un <select>
* @param {String} id_select - ID du <select> � mettre � jour
* @param {Array} liste - Tableau contenant les données � ajouter
* @param {String} valeur - Champ pris en compte pour la value de
l'<option>
* @param {String} texte - Champ pris en compte pour le texte affich�
de l'<option>
* @returns {String} Valeur s�lectionnée du <select> pour chainage
*/
function updateSelect( id_select, liste, valeur, texte){
var oOption,
oSelect = document.getElementById( id_select),
i, nb = liste.length;
// vide le select
oSelect.options.length = 0;
// d�sactive si aucune option disponible
oSelect.disabled = nb ? false : true;
// affiche info nombre options, facultatif
setNombre( oSelect, nb);
// ajoute 1st option
if( nb){
oSelect.add( new Option( 'Choisir', ''));
// focus sur le select
oSelect.focus();
}
// cr�ation des options d'apr�s la liste
for (i = 0; i < nb; i += 1) {
// création option
oOption = new Option( liste[i][texte], liste[i][valeur]);
// ajout de l'option en fin
oSelect.add( oOption);
}
// si une seule option on la s�lectionne
oSelect.selectedIndex = nb === 1 ? 1 : 0;
// on retourne la valeur pour le select suivant
return oSelect.value;
}
/**
* fonction de chainage des <select>
* @param {String|Object} ID du <select> � traiter ou le <select> lui-
m�me
*/
function chainSelect( param){
// affectation par d�faut
param = param || 'init';
var liste,
id = param.id || param,
valeur = param.value || '';

// test � faire pour r�cup�ration de la value


if( typeof id === 'string'){
param = document.getElementById( id);
valeur = param ? param.value : '';
}

switch (id){
case 'init':
// r�cup. des donn�es
liste = getDataFromTable( '*', tbl_event);
// mise � jour du select
valeur = updateSelect( 'uap', liste, 'uap_code', 'uap_nom');
// chainage sur le select li�
chainSelect('uap');
break;
case 'uap':
// r�cup. des donn�es
liste = getDataFromTable( 'uap_code=' +valeur, tbl_event2);
liste1 = getDataFromTable( 'uap_code=' +valeur, tbl_rm_uap);
// mise � jour du select
valeur = updateSelect( 'services', liste, 'reg_2016_code',
'reg_2016_nom');
valeur1 = updateSelect( 'responsable', liste1, 'rm_code',
'rm_nom');
// chainage sur le select li�
chainSelect('services');
chainSelect('responsable');
break;
case 'services':
// r�cup. des donn�es
liste = getDataFromTable( 'reg_2016_code=' +valeur,
tbl_Linge_prod);
// mise � jour du select
valeur = updateSelect( 'Linge_prod', liste, 'reg_code',
'reg_nom');
// chainage sur le select li�
chainSelect('Linge_prod');
break;
case 'Linge_prod':
// affichage final
document.getElementById('prefecture').value = valeur;
break;
}
}
// Initialisation après chargement du DOM
document.addEventListener("DOMContentLoaded", function(event) {
var oSelects = document.querySelectorAll('#liste select'),
i, nb = oSelects.length;
// affectation de la fonction sur le onchange
for( i = 0; i < nb; i += 1) {
oSelects[i].onchange = function() {
chainSelect(this);
};
}
// init du 1st select
if( nb){
chainSelect('init');
}
});

</script>

Vous aimerez peut-être aussi