devient CO2 planète ...

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • devient CO2 planète ...

    bonjour
    allez j'ose vous présenter mon premier composant
    merci de vos critiques constructives
    à noter les apports via ce forum de liubov et cavo mais aussi NW pour la création des pdf ...
    LJ
    à télécharger
    Dernière édition par laurent00 à 07/12/2011, 16h28 Raison: changement de nom du composant
    mon avatar : http://www.ingall-niger.org

  • #2
    Re : objectifcarbone

    c'est ICI pour la dernière version
    LJ
    mon avatar : http://www.ingall-niger.org

    Commentaire


    • #3
      Re : objectifcarbone

      Envoyé par laurent00 Voir le message
      c'est ICI pour la dernière version
      LJ
      Bonsoir,
      Le composant s'installe sans problème.
      Par contre, lors du click sur le lien 'Paramètres', on a jolie fatal error en guise de bienvenue :
      Catchable fatal error: Object of class JPaneTabs could not be converted to string in administrator/components/com_objectifcarbone/views/config/tmpl/default.php on line 36
      L'erreur vient du fait que sur la ligne suivante le echo n'a pas lieu d'être :
      Code PHP:
      echo $pane =& JPane::getInstance('tabs', array('startOffset' => 0)); 
      Le supprimer corrige l'erreur.

      La configuration du compo fonctionne correctement (les changements sont bien sauvegardés). Par contre c'est un peu cryptique pour un novice du domaine mais j'imagine que le public ciblé doit savoir à quoi correspondent les différents paramètres et quelles sont les valeurs admissibles.

      Je te ferais un retour prochainement sur le Front-end car je crains d'avoir dépassé mon quota de CO² pour ce premier test...

      Fly06_Fr (http://www.fly06.fr/)
      -------------------------------------------
      Classe MooTools pour Recherche Asynchrone (Ajax) : http://forum.joomla.fr/showthread.ph...one-%28Ajax%29

      Commentaire


      • #4
        Re : objectifcarbone

        merci c corrigé
        évidemment le besoin correspond à ce que j'ai envie de faire donc pas très vulgarisateur
        mais bon cela demande à évoluer ...
        LJ
        mon avatar : http://www.ingall-niger.org

        Commentaire


        • #5
          Re : objectifcarbone

          Bonsoir,
          J'ai testé le formulaire DPE côté FE.
          Il y a quelques messages d'erreurs php (notice) dans le fichier :
          /components/com_objectifcarbone/views/dpe/tmpl/default.php
          (cf. screen-shot ci-dessous)



          La plupart des erreurs sont liées à l'absence de guillemets autour des clés dans les tableaux :
          Code PHP:
          $surface $_POST['surface']; 
          et non :
          Code PHP:
          $surface $_POST[surface]; 


          Sinon ligne 39 il faut un echo sinon, l'attribut action de la balise form est vide :

          Code PHP:
          <form action='<?php echo $_SERVER['PHP_SELF'];?>' method='post'>
          et non :
          Code PHP:
          <form action='<?php $_SERVER[PHP_SELF];?>' method='post'>
          On aussi peut faire 3 remarques supplémentaires :

          1 - Dans le modèle MVC, la récupération et le traitement des données sont plutôt réalisés dans le modèle. Le template sert simplement à la mise en forme html des données issues du traitement.
          2 - Dans le même ordre d'idée, un template de vue dans le modèle MVC doit pouvoir être surchargée par quelqu'un qui connait le html mais pas forcément le php. Il doit donc être codé comme si s'agissait d'un fichier html (http://www.php.net/manual/fr/languag...ax.phpmode.php).
          3 - L'API Joomla intègre l'objet JRequest pour récupérer les données clients de façon sécurisée :


          Par exemple :
          Code PHP:
          $surface JRequest::getInt('surface'0'POST'); 
          et non :
          Code PHP:
          $surface $_POST['surface']; 
          Concernant l'ergonomie du formulaire, ça serait sympa de gérer les champs quantitatifs du formulaire avec un plugin MooTools comme celui-ci :

          (ou l'équivalent pour MooTools 1.2 car celui-ci est compatible 1.3)
          Voir même de passer le formulaire en totalité sous MooTools de façon à voir le résultat directement sans recharger la page et en temps réel dès qu'une valeur est modifiée dans un champs...
          Fly06_Fr (http://www.fly06.fr/)
          -------------------------------------------
          Classe MooTools pour Recherche Asynchrone (Ajax) : http://forum.joomla.fr/showthread.ph...one-%28Ajax%29

          Commentaire


          • #6
            Re : objectifcarbone

            merci pour ces apports
            - si je mets le echo dans <form action='<?php echo $_SERVER['PHP_SELF'];?>' method='post'> il me renvoi à la page d'accueil dés que je calcule
            - pour le Jrequest c ok
            1. oui je savais, mais j'avoue ne pas bien comprendre le passage des variables saisies vers un fichier de calcul puis retour dans le fichier, c pas très direct comme chemin ...
            2. je m'y attendais aussi qu'on me fasse la remarque
            3. pour Mootools je regarde cela

            merci d'avoir pris du temps ...
            LJ
            mon avatar : http://www.ingall-niger.org

            Commentaire


            • #7
              Re : objectifcarbone

              Envoyé par laurent00 Voir le message
              si je mets le echo dans <form action='<?php echo $_SERVER['PHP_SELF'];?>' method='post'> il me renvoi à la page d'accueil dés que je calcule
              Oui c'est normal puisque tu utilise $_SERVER['PHP_SELF'] qui renvoie le nom du fichier du script en cours d'exécution, par rapport à la racine web.

              Donc dans le cas de Joomla, le fichier du script en cours d'exécution est l'index.php à la racine du site Joomla.

              Tu as deux solutions :

              1 - Soit tu laisse la balise <form ...> comme elle est et tu ajoute les paramètres : option, view et Itemid dans des balises input de type hidden
              2 - Soit tu utilise JRoute dans l'attribut action :
              <?php echo JRoute::_( 'index.php?option=com_objectifcarbone&view=dpe' );?>
              au lieu de
              <?php echo $_SERVER['PHP_SELF'];?>

              Quoi qu'il en soit, le echo n'est pas la cause du problème mais le symptôme du problème.

              Fly06_Fr (http://www.fly06.fr/)
              -------------------------------------------
              Classe MooTools pour Recherche Asynchrone (Ajax) : http://forum.joomla.fr/showthread.ph...one-%28Ajax%29

              Commentaire


              • #8
                Re : objectifcarbone

                donc ca avance
                j'ai réussi à faire passer les calculs de la vue dpe dans le models nickel
                par contre pour une autre vue j'ai beaucoup plus de données résultats à faire passer
                j'use du model suivant
                Code PHP:
                    function getTotal()
                    {
                    
                //appel des valeurs saisies
                    
                $fioulJRequest::getInt('fioul'0'POST');

                    
                //appel des params de conversion kwh
                        
                $this->params = & ComObjectifcarbone::getParams();
                    
                $profil_fioul $this->params->get'profil_fioul' );

                    
                //calcul
                    
                $fioulco2=$fioul*$profil_fioul;

                    
                //RES
                    
                $total=$fioulco2+$gazco2+$gapco2+$elecco2+$elekco2+$voitureco2+$trainco2+$avionco2;
                    
                $totaltonne=$total/1000;

                    return 
                $totaltonne;

                    } 
                dans cette fonction getTotal le return ramène une seule valeur, le résultat totaltonne

                dans mon autre vue j'aurais 6 résultats à ramener, il est possible de faire une function pour chaque mais yatil pas une méthode pour en faire une seule et envoyer tous les résultats ...

                merci LJ
                mon avatar : http://www.ingall-niger.org

                Commentaire


                • #9
                  Re : objectifcarbone

                  Envoyé par laurent00 Voir le message
                  dans mon autre vue j'aurais 6 résultats à ramener, il est possible de faire une function pour chaque mais yatil pas une méthode pour en faire une seule et envoyer tous les résultats ...
                  Heu oui il suffit de retourner un tableau contenant tes 6 valeurs !

                  D'ailleurs pendant que j'y suis, tu aurais intérêt à utiliser beaucoup plus souvent les tableaux dans ton code lorsque ça fait sens.

                  Par exemple, si tu récupère tes niveaux de CO² dans un tableau, tu peux remplacer, le très vilain ;
                  Code PHP:
                      $total=$fioulco2+$gazco2+$gapco2+$elecco2+$elekco2+$voitureco2+$trainco2+$avionco2
                  par un nettement plus sexy :
                  Code PHP:
                      $total array_sum($co2); 
                  avec :
                  Code PHP:
                      $co2 JRequest::getVar('co2', array(0), 'post''array'); 
                  Il faut aussi modifier ton formulaire en conséquence, de façon à avoir :

                  Code PHP:
                  <input name="co2[fioul1]" type="text" value=""
                  et non :
                  Code PHP:
                  <input name="fioul1" type="text" value=""
                  et idem pour les autres champs...
                  Fly06_Fr (http://www.fly06.fr/)
                  -------------------------------------------
                  Classe MooTools pour Recherche Asynchrone (Ajax) : http://forum.joomla.fr/showthread.ph...one-%28Ajax%29

                  Commentaire


                  • #10
                    Re : objectifcarbone

                    Salut,

                    Mon dernier post ne tient pas compte du fait que ton total de CO² est en fait le produit scalaire entre le tableau des quantités de "biens" consommés (formulaire) et le tableau des émanations unitaires de CO² par type de "biens" (paramètres).

                    Donc ta méthode getTotal() devrait plut être réécrite de cette façon :

                    Code PHP:
                    function getTotal()
                        {
                        
                    //appel des params de conversion kwh
                        
                    $this->params = & ComObjectifcarbone::getParams();

                        
                    //récup des valeurs saisies
                        
                    $co2 JRequest::getVar('co2', array(0), 'post''array');

                        
                    // calcul du total de CO² émis
                        
                    $total 0;
                        foreach (
                    $co2 as $key => $val) {
                            
                    $total += $val $this->params->get'profil_' $key);
                        }

                        
                    // Retour du total de CO² émis en tonnes
                        
                    return $total/1000;

                        } 
                    Sinon, j'ai vu que tu avais "switché" sur MooTools aussi je me demande si tu prends toujours en compte mes commentaires ici dans la mesure où tu envisages peut-être de restructurer complètement ton code pour créer un calculateur 100% front-end en Javascript/Mootools ?

                    Si c'est le cas fais-mois signe, merci.
                    Fly06_Fr (http://www.fly06.fr/)
                    -------------------------------------------
                    Classe MooTools pour Recherche Asynchrone (Ajax) : http://forum.joomla.fr/showthread.ph...one-%28Ajax%29

                    Commentaire


                    • #11
                      Re : objectifcarbone

                      oui je prends en compte ces commentaires
                      car le mootools m’apparaît un peu comme un autre monde ... donc je regarde mais n'envisage pas trop de chose pour le moment, même si les potentialités sont sympas

                      sinon j'ai passé mes calculs dans le /models mais n'est pas encore intégrer cette façon de faire des tableaux, ni réécris le tmpl en html pur ais ce sont là mes priorités ......
                      j'ai livré une version 1.0.0 dans les extensions Joomla
                      merci LJ
                      mon avatar : http://www.ingall-niger.org

                      Commentaire


                      • #12
                        Re : objectifcarbone

                        Je pense effectivement que tu devrais procéder par étape et attendre que la version client-serveur de ton calculateur soit ****** (simplifier le code par factorisation, respecter les standards Joomla/MVC et corriger les bugs résiduels) avant de penser à développer une version 100% client JS/MooTools.

                        D'autant plus que comme tu l'as bien compris c'est un autre monde... à explorer

                        Un type très simple de factorisation consiste à utiliser la structure de contrôle foreach lorsque les données à manipuler sont stockées dans un tableau.

                        Par exemple, la méthode display() de ta classe ObjectifCarboneViewDpe :
                        Code PHP:
                        function display($tpl null)
                               {  
                          
                        //load and push item basics parameters
                            
                        $params = & JComponentHelper::getParams'com_objectifcarbone' );

                            
                        $co2_color_title $this->params->get'co2_color_title' );
                            
                        $this->assignRef('co2_color_title',    $co2_color_title);
                            
                            
                        $co2_title $this->params->get'co2_title' );
                            
                        $this->assignRef('co2_title',    $co2_title);
                            
                            
                        $title_txt $this->params->get'title_txt' );
                            
                        $this->assignRef('title_txt',    $title_txt);
                            
                            
                        $print_tmpl $this->params->get'print_tmpl' );
                            
                        $this->assignRef('print_tmpl',    $print_tmpl);

                            
                        $display_logo $this->params->get'display_logo' );
                            
                        $this->assignRef('display_logo',    $display_logo);    
                          
                              
                        $print_button $this->params->get'print_button' );
                            
                        $this->assignRef('print_button',    $print_button); 

                            
                        $display_help $this->params->get'display_help' );
                            
                        $this->assignRef('display_help',    $display_help);    

                            
                        $b_labeldpe $this->params->get('b_labeldpe');
                            
                        $c_labeldpe $this->params->get('c_labeldpe');
                            
                        $d_labeldpe $this->params->get('d_labeldpe');
                            
                        $e_labeldpe $this->params->get('e_labeldpe');
                            
                        $f_labeldpe $this->params->get('f_labeldpe');
                            
                        $g_labeldpe $this->params->get('g_labeldpe');

                            
                        // loading params of CO2_LABEL Group...
                            
                        $bco2_labeldpe $this->params->get('bco2_labeldpe');
                            
                        $cco2_labeldpe $this->params->get('cco2_labeldpe');
                            
                        $dco2_labeldpe $this->params->get('dco2_labeldpe');
                            
                        $eco2_labeldpe $this->params->get('eco2_labeldpe');
                            
                        $fco2_labeldpe $this->params->get('fco2_labeldpe');
                            
                        $gco2_labeldpe $this->params->get('gco2_labeldpe');    
                         
                            
                        //Push params into the template
                            
                        $this->assignRef('b_labeldpe',    $b_labeldpe);
                            
                        $this->assignRef('c_labeldpe',    $c_labeldpe);
                            
                        $this->assignRef('d_labeldpe',    $d_labeldpe);
                            
                        $this->assignRef('e_labeldpe',    $e_labeldpe);
                            
                        $this->assignRef('f_labeldpe',    $f_labeldpe);
                            
                        $this->assignRef('g_labeldpe',    $g_labeldpe);

                            
                        $this->assignRef('bco2_labeldpe',    $bco2_labeldpe);
                            
                        $this->assignRef('cco2_labeldpe',    $cco2_labeldpe);
                            
                        $this->assignRef('dco2_labeldpe',    $dco2_labeldpe);
                            
                        $this->assignRef('eco2_labeldpe',    $eco2_labeldpe);
                            
                        $this->assignRef('fco2_labeldpe',    $fco2_labeldpe);
                            
                        $this->assignRef('gco2_labeldpe',    $gco2_labeldpe);

                            
                        // loading params of CO2_LABEL Group...
                            
                        $prix_bois $this->params->get('prix_bois');
                            
                        $this->assignRef('prix_bois',    $prix_bois);

                            
                        $prix_gas $this->params->get('prix_gas');
                            
                        $this->assignRef('prix_gas',    $prix_gas);

                            
                        $prix_gasp $this->params->get('prix_gasp');
                            
                        $this->assignRef('prix_gasp',    $prix_gasp);

                            
                        $prix_fioul $this->params->get('prix_fioul');
                            
                        $this->assignRef('prix_fioul',    $prix_fioul);

                            
                        $prix_elec $this->params->get('prix_elec');
                            
                        $this->assignRef('prix_elec',    $prix_elec);
                               
                                
                        parent::display($tpl);
                            } 
                        peut s'écrire plus simplement :

                        Code PHP:
                            function display($tpl null)
                               {  
                          
                        //load and push item basics parameters
                            
                        $params = & JComponentHelper::getParams'com_objectifcarbone' );

                            foreach (
                        $params->_registry['_default']['data'] as $key => $val) {
                                
                        $this->assignRef($key,    $val);
                            }
                               
                                
                        parent::display($tpl);
                            } 
                        Voilà, je te laisse sur ça. Si tu as des questions n'hésite pas.
                        Dernière édition par Fly06_Fr à 06/11/2011, 22h03
                        Fly06_Fr (http://www.fly06.fr/)
                        -------------------------------------------
                        Classe MooTools pour Recherche Asynchrone (Ajax) : http://forum.joomla.fr/showthread.ph...one-%28Ajax%29

                        Commentaire


                        • #13
                          Re : objectifcarbone

                          pour cela il faut sans doute que je change ma classe en déclarant les variables $key et $val ...
                          parce que sisnon comment il va les reconnaître ?
                          LJ
                          mon avatar : http://www.ingall-niger.org

                          Commentaire


                          • #14
                            Re : objectifcarbone

                            Envoyé par laurent00 Voir le message
                            pour cela il faut sans doute que je change ma classe en déclarant les variables $key et $val ...
                            parce que sisnon comment il va les reconnaître ?
                            Non ce n'est pas nécessaire.

                            Les variables $key et $val sont automatiquement définies par php lorsqu'il rencontre une boucle du type :

                            Code PHP:
                            foreach ($myArray as $key => $val) {
                            // Instructions

                            $key contient la clé de l'item courant
                            $val contient la valeur de l'item courant



                            Je crois que la lecture d'un livre sur le langage php te serait très utile surtout si ton projet d'extension s'inscrit dans la durée et que tu souhaites le faire évoluer...
                            Fly06_Fr (http://www.fly06.fr/)
                            -------------------------------------------
                            Classe MooTools pour Recherche Asynchrone (Ajax) : http://forum.joomla.fr/showthread.ph...one-%28Ajax%29

                            Commentaire


                            • #15
                              Re : objectifcarbone

                              oui c sur je vais faire un saut à la bibliothèque ...
                              mes deux sujets suivants
                              sont
                              - réécriture des vues en html
                              - intégration de tableau array
                              merci
                              Dernière édition par laurent00 à 07/11/2011, 14h12
                              mon avatar : http://www.ingall-niger.org

                              Commentaire

                              Annonce

                              Réduire
                              Aucune annonce pour le moment.

                              Partenaire de l'association

                              Réduire

                              Hébergeur Web PlanetHoster
                              Travaille ...
                              X