Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 975 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php
/**
* Classe GraphiquesBaseflor.php transforme les données écologiques de la table baseflor
*  en graphique svg
*  graphiques/#typegraphique/#bdnt.nn:#num_nomen --> renvoie un graphique avec les données connues
*
*
* @package eflore-projets
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Mathilde SALTHUN-LASSALLE <mathilde@tela-botanica.org>
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
* @version 1.0
* @copyright 1999-2011 Tela Botanica (accueil@tela-botanica.org)
*/

class GraphiquesBaseflor extends CommunGraphiques{

        
        
        
        public function definirTable($version){
                $this->table = Config::get('bdd_table')."_v".$version;
        }
        

        
        //+--------------------------traitement ressources ou paramètres  -------------------------------------------+

        public function traiterReferentieletNum(){
                if (!empty($this->ressources[1])) {
                        if(preg_match('/^(.+)\.nn:([0-9|,]+)$/', $this->ressources[1], $retour) == 1){
                                switch ($retour[1]) {
                                        case 'bdtfx' :
                                                $this->requete_condition[]= "num_nomen = ".$retour[2]." AND bdnt = 'bdtfx' ";
                                                break;
                                        case  'bdafx' :
                                                $this->requete_condition[] = "num_nomen = ".$retour[2]." AND bdnt = 'bdafx' ";
                                                break;
                                        case  'bdbfx' :
                                                $this->requete_condition[] = "num_nomen = ".$retour[2]." AND bdnt = 'bdbfx' ";
                                                break;
                                        default :
                                                $e = "Le référentiel {$retour[1]} n'existe pas.";
                                        throw new Exception( $e, RestServeur::HTTP_CODE_MAUVAISE_REQUETE);
                                        break;
                                }
                        }else {
                                $e = "Erreur dans l'url de votre requête :".
                                                " précisez le référentiel et le numéro nomenclatural sous la forme {bdnt}.nn:{nn}.";
                                throw new Exception( $e, RestServeur::HTTP_CODE_MAUVAISE_REQUETE);
                        }
                } else {
                        throw new Exception( "Erreur dans l'url de votre requête :".
                                                " précisez le référentiel et le numéro nomenclatural sous la forme {bdnt}.nn:{nn}.",
                        RestServeur::HTTP_CODE_MAUVAISE_REQUETE);
                }
        }
        
        
        
        public function traiterTypeGraphique(){
                if (!empty($this->ressources[0])) {
                        switch ($this->ressources[0]) {
                                case  'climat' :
                                        $this->requete_champs = ' ve_lumiere , ve_temperature, ve_continentalite, ve_humidite_atmos' ;
                                        $this->nomGraphique= 'climat';
                                        break;
                                case 'sol' :
                                        $this->requete_champs = ' ve_humidite_edaph , ve_reaction_sol, ve_nutriments_sol, ve_salinite,'
                                        .'ve_texture_sol, ve_mat_org_sol' ;
                                        $this->nomGraphique = 'sol';
                                        break;
                                default :
                                        $e = "Erreur dans l'url de votre requête :".
                                "</br> precisez le graphique -> \"sol\" ou \"climat\".";
                                throw new Exception($e, RestServeur::HTTP_CODE_MAUVAISE_REQUETE);
                                break;
                        }
                }else {
                        throw new Exception("Erreur dans l'url de votre requête :".
                                "</br> precisez le graphique -> \"sol\" ou \"climat\".", RestServeur::HTTP_CODE_MAUVAISE_REQUETE);
                }
        }

        
        //+-------------------------- formatage du résultat  -------------------------------------------+
        
                
        /// ++++ svg +++++ ///
        
        public function changerValeursSVG(){
                $Dompath = new DOMXPath($this->dom);
                foreach ($this->valeurs_en_pourcentage as $cle => $val) {
                        if ($val !== null) { // sinon valeur inconnue donc pas de point rouge
                                $val = preg_replace('/,/','.', $val);
                                $grad_id = array_search($val,$this->graduations_id);
                                $element = $Dompath->query("//*[@id='".$grad_id."']")->item(0);
                                if($element != null) {
                                        $pos_x = $element->getAttribute('x1');
                                        $curseur = $Dompath->query("//*[@id='".$cle."']")->item(0);
                                        $curseur->setAttribute('cx', $pos_x);
                                        $curseur->setAttribute('class', 'curseur');
                                        $this->ajouterInfoAuSurvol($curseur);
                                        $changement = true;
                                }
                        }
                }
                $this->ajusterFormatSVG();
                
        }
        
        
        public function ajouterInfoAuSurvol($curseur){
                $champs = $curseur->getAttribute('id');
                $valeurTexte = $this->recupererOntologies($this->valeurs_champs[$champs], $champs );
                if ($valeurTexte !== false) {
                        $valeurTexte = $this->traiterIntermediaires($valeurTexte->nom, $champs, $champs);
                        $curseur->setAttribute('title',$this->valeurs_champs[$champs].": ".$valeurTexte );
                }
        }

        
}
?>