récupération page.url.templateArgs.site

cancel
Showing results for 
Search instead for 
Did you mean: 
cchumi
Member II

récupération page.url.templateArgs.site

Bonjour ou bonsoir à tous je suis tout nouveau sur ce forum et il s'agit de mon premier poste.

Je développe actuellement une appli pour ma société concernant notre certification ISO 9001.

Actuellement j'arrive très bien à gérer les modèles de contenu mais je sèche sur un dashlet.
Je cherche actuellement à créer un dashlet reprenant des valeurs d'un type de datalists particulier en l'occurence graph:graphList.

Ce dernier modèle est en fait une saisie de 3 champ, une date ( qui représente en réalité un mois et une année ) , une valeur ( la valeur du mois correspondant ) et la tendance ( la moyenne des mois précédents ) .

Ayant mis tout cela sur un cahier des charges je me suis mis à developper mon premier dashlet.
Donc dans webapps\share\WEB-INF\classes\alfresco\site-webscripts\org\alfresco\components\dashlets j'ai crée graphique.get.desc.xml, graphique.get.head.ftl, graphique.get.html.ftl, graphique.get.json.ftl, et graphique.get.js.

Mon dashlet est très bien référencé et je peux donc l'ajouter au dashboard d'un site.

Maintenant mon script graphique.get.js que voici :

//<import resource="classpath:/alfresco/site-webscripts/org/alfresco/callutils.js">

function main()
{

//args["site"];
var site = "Metrologie";
//var siteId = String(json.get("siteId"));
var siteId = page.url.templateArgs.site;

model.testee = siteId;


model.dataSites =  [];
model.listTitles =  [];
var listdata = getListforGraph(siteId);     
model.listTitles = listdata;

var longueur = listdata.length;
var itemsdata = [];
var test = [];
//model.testsite = currentSite;


for (var i = 0, ii = listdata.length; i < ii; i++)

         {
   test = listdata[i];

           itemsdata = getDataforGraph(siteId, test.names, test.titles, test.descriptions);

         }

  return itemsdata;

   }
  


var getListforGraph = function(curresite)
{
    var site, container, theUrl, connector, result, lists, types = [];
//sites = 'test';
//site = currentsites;
//var curresite = "Achats";
   container = 'dataLists';
   theUrl = "/slingshot/datalists/lists/site/" + curresite + "/" + container + "?page=1&pageSize=512";

   connector = remote.connect("alfresco");
   result = connector.get(theUrl);
  
   if (result.status == 200)
   {
model.ok = " ouiii";
      var ss = eval("(" + result + ")");
      try
      {
         for each (var s in ss.datalists)
         {
         if (s.itemType == "graph:graphList")
         {
         types.push(
         {
            names: s.name,
            titles: s.title,
            descriptions: s.description,
         itemtypes: s.itemType
         });
         }
       else
       {
       continue;
       }
      
      
      }
     }
      catch (e)
      {
      }
   }
  
  if (types.size != 0)
  {

      model.bug = "ouiiiii"
   }
   else
   {
   model.bug = "buggg"
   }
      return types;
}

var getDataforGraph = function(currsite, nameliste, titleliste, descliste)
{

  
var site, container, theUrla, connector, result, lists, listetitle, listedesc, liste, activity = [];
model.liste = [];

//site = 'test';
//site = page.url.templateArgs.site;
container = 'dataLists';
liste = nameliste;
listetitle = titleliste;
listedesc = descliste;


   theUrla = '/slingshot/datalists/data/site/' + currsite + '/' + container + '/';

var myObj = { "fields" :[   "graph_graphDate",
                     "graph_graphValeur",
                     "graph_graphTendance",
                     "graph_graphObjectif"
                  ],
              "filter" :{   "filterData" : "",
                     "filterId" : "all"
                  }
         };

var myObjAsString = jsonUtils.toJSONString(myObj);

var itemslist = [];
      siteTitle = "";
var dataSites = new Array();

   connector = remote.connect("alfresco");
  
    
   theUrl = theUrla + liste;
model.url = theUrl;
    result = connector.post(theUrl, myObjAsString, 'application/json');

      // if (response.success !== undefined)
  if (result.status == 200)
   {
      var i, ii;
            
         // Create javascript objects from the server response
         // Each item is a favourite site that the user is a member of
         //var sites = eval('(' + result + ')'), site;
         var response = eval('(' + result + ')'), data;
         if (response.length != 0)
         {
            // Sort the sites by title
            //sites.sort(sortByTitle);

           
            for (i = 0, ii = response.items.length; i < ii; i++)
            {
               data = response.items[i];
       //if (site.shortName == currentSite)
               //{
                 // siteTitle = data.title;
                  //if (ignoreCurrentSite)
                  //{
                     // The current site was piggy-backing the query call; it's not a favourite
                    // continue;
                  //}
                  //currentSiteIsFav = true;
//var dt=new Date(data.itemData.prop_graph_graphDate.value);

   //var mois=dt.getMonth();
   var date = fromISO8601(data.itemData.prop_graph_graphDate.value);

   dataSites.push(
         {
          sitename: site,
         listename: liste,
         listetitle: listetitle,
         listedescription: listedesc,
         tdate : date,
         graphDate : data.itemData.prop_graph_graphDate.value,
          graphValeur : data.itemData.prop_graph_graphValeur.value,
         graphTendance : data.itemData.prop_graph_graphTendance.value,
         graphObjectif : data.itemData.prop_graph_graphObjectif.value
         });
      

         
        }
           
        }

   }

return dataSites;
}

function fromISO8601(formattedString)
{
   var isoRegExp = /^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(.\d+)?)?((?:[+-](\d{2}):(\d{2}))|Z)?)?$/;

   var match = isoRegExp.exec(formattedString);
   var result = null;

   if (match)
   {
      match.shift();
      if (match[1]){match[1]–;} // Javascript Date months are 0-based
      if (match[6]){match[6] *= 1000;} // Javascript Date expects fractional seconds as milliseconds

      result = new Date(match[0]||1970, match[1]||0, match[2]||1, match[3]||0, match[4]||0, match[5]||0, match[6]||0);

      var offset = 0;
      var zoneSign = match[7] && match[7].charAt(0);
      if (zoneSign != 'Z')
      {
         offset = ((match[8] || 0) * 60) + (Number(match[9]) || 0);
         if (zoneSign != '-')
         {
            offset *= -1;
         }
      }
      if (zoneSign)
      {
         offset -= result.getTimezoneOffset();
      }
      if (offset)
      {
         result.setTime(result.getTime() + offset * 60000);
      }
   }

   return result; // Date or null
}

   model.dataSites = main();

recherche en faite toutes les liste de données correspondant au type graph:graphList ( modèle conçu pour les graphique ) .
Ce script fonctionne parfaitement . Dans mon graphique.get.html.ftl je récupère facilement les valeur pour affichage.
Maintenant j'ai donc crée un fichier graphique.get.json.ftl que voici :

<#escape x as jsonUtils.encodeJSONString(x)>
{"datajson":[

<#list dataSites as match>
{
"date" : "${match.tdate?js_string}",
<#assign currentLocale=locale />
<#setting locale="en_US" />
"valeur" : "${match.graphValeur}",
"tendance" : "${match.graphTendance}"
<#setting locale=currentLocale />
}
<#if match_has_next>,</#if>
</#list>
]
}
</#escape>
me permettant je formatter le texte json et ainsi de le passé dans mon graphique.get.html.ftl que voici :


<script type="text/javascript">//<![CDATA[
  new Alfresco.Graphique("${args.htmlid}").setOptions(
  {
    "site": "${page.url.templateArgs.site!""}"
  });
  new Alfresco.widget.DashletResizer("${args.htmlid}", "${instance.object.id}");
//]]></script>



         <div class="dashlet graphique">

         <div id="chart">Loading…</div>
            
</div>
<script type="text/javascript">

YAHOO.util.Event.addListener(window, "load", function() {
   var healthtab = function() {
   
      YAHOO.widget.Chart.SWFURL = "http://yui.yahooapis.com/2.8.2r1/build/charts/assets/charts.swf";

YAHOO.example.puppies = [
   { name: "Ashley", breed: "German Shepherd", age: 12.05 },
   { name: "Dirty Harry", breed: "Norwich Terrier", age: 5.20 },
   { name: "Emma", breed: "Labrador Retriever", age: 9.10 },
   { name: "Oscar", breed: "Yorkshire Terrier", age: 6 },
   { name: "Riley", breed: "Golden Retriever", age: 6 },
   { name: "Shannon", breed: "Greyhound", age: 12 },
   { name: "Washington" ,breed: "English Bulldog", age: 8 },
   { name: "Zoe", breed: "Labrador Retriever", age: 3 }
];



   
//— Ajax call
     // var healthDataSource = new YAHOO.util.DataSource(YAHOO.example.puppies);
     var healthDataSource = new YAHOO.util.XHRDataSource("/share/service/components/dashlets/graphique.json");


      healthDataSource.responseType = YAHOO.util.XHRDataSource.TYPE_JSON;

      healthDataSource.responseSchema = {
     resultsList:"datajson",
        fields: ["date", "valeur", "tendance"]
      };
       
      var seriesDef = [
    { displayName: "Valeur", yField: "valeur" },
    { displayName: "Tendance", yField: "tendance" }
];

//— chart

   
          
      var mychart = new YAHOO.widget.LineChart( "chart", healthDataSource,
     {
      xField: "date",
      series: seriesDef
     });
    

   }();
});
</script>

La partie javascript fait appel au get.json.ftl pour récuperer les data json et donc les injecté dans un datasource selon le schéma que je leur ai défini.
Et c'est là que ça ne marche pas .
Lorsque j'éxécute ce dashlet. J'obtiens une erreur 500 me disant:


{
    "status" :
  {
    "code" : 500,
    "name" : "Internal Error",
    "description" : "An error inside the HTTP server which prevented it from fulfilling the request."
  }, 
 
  "message" : "00170031 Failed to execute script 'classpath*:alfresco\/site-webscripts\/org\/alfresco\/components\/graph\/graph.get.js': 00170030 ReferenceError: \"page\" n'est pas d\u00e9fini (file:\/C:\/Alfresco\/tomcat\/webapps\/share\/WEB-INF\/classes\/alfresco\/site-webscripts\/org\/alfresco\/components\/graph\/graph.get.js#9)", 
  "exception" : "org.springframework.extensions.webscripts.WebScriptException - 00170031 Failed to execute script 'classpath*:alfresco\/site-webscripts\/org\/alfresco\/components\/graph\/graph.get.js': 00170030 ReferenceError: \"page\" n'est pas d\u00e9fini (file:\/C:\/Alfresco\/tomcat\/webapps\/share\/WEB-INF\/classes\/alfresco\/site-webscripts\/org\/alfresco\/components\/graph\/graph.get.js#9)",
  ….

J'ai regardé dans d'autres dashlets et c'est bien comme cela que l'on récupère le nom du site courrant.

J'avoue être complétement perdu . Alors si vous aviez une petite idée ou au moins une orientation . Certainement que ma façon d'écrire mon dashlet n'est pas la bonne … Ou peut etre constatez vous une erreur.
Je suis pret a prendre toutes les critiques comme constructive.

Dans l'attente de vous lire Cordialement

Et n'hésitez pas si vous avez besoin d'informations supplémentaires.
12 Replies
bertrandf
Active Member

Re: récupération page.url.templateArgs.site

Bonjour,

Concernant votre erreur, en effet s'il s'agit d'une dashlet de site, c'est étrange que vous ne puissiez pas récupérer l'identifiant du site.
La famille de votre webscript est bien site-dashlet ?
<family>site-dashlet</family>
Pourriez vous nous montrer le contenu du fichier graphique.get.desc.xml svp ?

A première vue, il semblerait que vous n'avez pas complétement assimilé le fonctionnement d'un webscript Share.
- Je n'ai pas vraiment compris l'utilité du template JSON étant donné que vous réalisez une dashlet de rendu HTML (enfin il me semble puisque vous souhaitez afficher le résultat sur le dashboard).

- Dans votre fichier graphique.get.html.ftl, vous instanciez une classe JavaScript Alfresco.Graphique, a-t-elle était définie quelque part ?
Si oui, pourriez vous nous montrer son contenu ?
Si non, le code ci-dessous est inutile :
<script type="text/javascript">//<![CDATA[
  new Alfresco.Graphique("${args.htmlid}").setOptions(
  {
    "site": "${page.url.templateArgs.site!""}"
  });
  new Alfresco.widget.DashletResizer("${args.htmlid}", "${instance.object.id}");
//]]></script>


Pour savoir si la récupération du nom du site fonctionne, vous pourriez essayer avec une dashlet ultra simple, du genre :

test.get.desc.xml
<webscript>
   <shortname>TEST</shortname>
   <description>Dashlet de test</description>
   <family>site-dashlet</family>
   <url>/components/dashlets/test</url>
</webscript>

test.get.js
model.nomdusite = page.url.templateArgs.site;

test.get.html.ftl
<div class="dashlet">
   <div class="title">TEST</div>
   <div class="body">
      ${nomdusite}
   </div>
</div>
bertrandf
Active Member

Re: récupération page.url.templateArgs.site

Après relecture ,je pense que votre erreur s'explique par votre appel ajax dans le template de votre webscript.
var healthDataSource = new YAHOO.util.XHRDataSource("/share/service/components/dashlets/graphique.json");

Vous refaite appel à votre dashlet en passant l'URL à votre XHRDataSource, en faisant de la sorte, Share ne doit plus être capable de récupérer les objects root comme la page, le user, …

Il faudrait :
* soit que vous trouviez un autre moyen d'alimenter votre DataSource, je ne sais pas si c'est faisable en passant les données dans le 'model'

* soit que vous créiez un autre webscript qui se charge de récupérer les données de votre datalist et vous lui passez un argument site :

Vous auriez une webscript pour votre dashlet :
graphique.get.desc.xml
graphique.get.html.ftl => Dans ce fichier vous feriez appel à votre autre webscript
new YAHOO.util.XHRDataSource("/share/service/components/url-vers-votre-ws/nom-du-webscript.json?siteId=${page.url.templateArgs.site}")

Dans votre deuxième webscript :
getDataListData.get.desc.xml
getDataListData.get.js => reprendre votre code de graphique.get.js et récupérer l'identifiant du site avec page.url.args.siteId
getDataListData.get.json.ftl => reprendre votre code de graphique.get.json.ftl

* soit que vous créiez une classe JavaScript qui se charge de la dataSource et qui affiche les résultat dans le template de votre dashlet (c'est ce genre de traitement qui sont fait par défaut dans Share, pour avoir des exemples, il faut aller voir les fichiers JS dans /tomcat/webapps/share/components et pour vous plus particulièrement dans  /tomcat/webapps/share/components/dashlets/)
cchumi
Member II

Re: récupération page.url.templateArgs.site

Bonjour et merci pour votre réponse.

voici donc le code du desc.xml :

<webscript>
   <shortname>Graphiques</shortname>
   <description>Dashlet pour les Graphiques</description>
   <family>site-dashlet</family>
   <url>/components/dashlets/graphique</url>
</webscript>
il est bien défini en site-dashlet.

En effet dans get.html.ftl j'avais fait un essai avec une classe javascript mais le résultat n'en était pas meilleur donc le bout de code que vous m'avez montré est en effet inutile je l'ai d'ailleurs supprimé cette nuit.

J'avais egalement fait le test avec un dashlet tout simple et la récupération marche j'obtiens bien le nom du site.
D'ailleurs comme dans mon dashlet cela marche aussi si j'affiche directement la valeur dans mon get.html.ftl. mais plus du tout à partir du moment ou c'est le get.json.ftl qui fait appel au get.js.

En fait pour expliquer plus clairement . J'utilise le Datasource de YUI qui pour traiter du json fait appel a un fichier ( ou alors j'ai loupé quelque choses et si je peux m'en affranchir je suis preneur ).
Ce datasource récupère mes valeurs dans le json.ftl qui lui appel le get.js pour retrouver ses valeurs. La chose bizarre est que si dans mon get.js je met le nom du site en dur dans une variable. En l'occurrence :

var siteId = " Metrologie";

tout se passe parfaitement bien.

Une fois ces valeurs récupérer je les traite pour afficher un graphique grace a charts.js de la librairie YUI toujours.

Voilà j'espère avoir apporter quelques eclaircissement.

Dans l'attente de vous lire merci d'avance de vous pencher sur mon cas.
cchumi
Member II

Re: récupération page.url.templateArgs.site

Oups je viens de voir votre réponse en effet ce matin j'ai commencé a m'orienter sur cette piste de deuxième webscript.
Je vais donc continuer cette démarche.

Par il est vrai que je creerai bien une classe Javascript mais meme après avoir analyser les differents JS du répértoire je n'ai pas réussi a développer une classe correcte. C'est ce que j'avais fait hier soir .

En tout cas vraiment merci pour votre réactivité. Je vais de suite terminer mon deuxieme webscript et ainsi voir ce qu'il en est ensuite je m'attaquerai a la classe qui sera bien plus propre sans aucun doute.

Je vous tiens au courant .

Merci

Cordialement
cchumi
Member II

Re: récupération page.url.templateArgs.site

et voila j'ai donc effectuer ce deuxième webscript mais ce dernier me renvoi pour page.url.args.siteId. Une erreur 500 disant que page n'est pas défini tout comme auparavant .

Serais ce lié a mon json qui n'aurai rien a faire a cet endroit ?

Cela fait 4 jours que je sèche complétement sur ce dashlet Smiley Happy . J'ai l'impression de ne pas employé la bonne démarche.
Je vous joins les 3 fichiers du deuxieme webscript au cas ou situé donc dans componnents/graph/
getDataListData.get.desc


<webscript>
   <shortname>Graphiques</shortname>
   <description>Dashlet pour les Graphiques</description>
   <family>site-dashlet</family>
   <url>/components/graph/getDataListData</url>
</webscript>

getDataListData.get.json.ftl


<#escape x as jsonUtils.encodeJSONString(x)>
{"datajson":[

<#list dataSites as match>
{
"date" : "${match.tdate?js_string}",
<#assign currentLocale=locale />
<#setting locale="en_US" />
"valeur" : "${match.graphValeur}",
"tendance" : "${match.graphTendance}"
<#setting locale=currentLocale />
}
<#if match_has_next>,</#if>
</#list>
]
}
</#escape>


et enfin

getDataListData.get.js


//<import resource="classpath:/alfresco/site-webscripts/org/alfresco/callutils.js">

function main()
{

//args["site"];
var site = "Metrologie";
var siteId;
//var siteId = String(json.get("siteId"));
siteId = page.url.args.siteId;

model.testee = siteId;


model.dataSites =  [];
model.listTitles =  [];
var listdata = getListforGraph(siteId);     
model.listTitles = listdata;

var longueur = listdata.length;
var itemsdata = [];
var test = [];
//model.testsite = currentSite;


for (var i = 0, ii = listdata.length; i < ii; i++)

         {
   test = listdata[i];

           itemsdata = getDataforGraph(siteId, test.names, test.titles, test.descriptions);

         }

  return itemsdata;

   }
  


var getListforGraph = function(curresite)
{
    var site, container, theUrl, connector, result, lists, types = [];
//sites = 'test';
//site = currentsites;
//var curresite = "Achats";
   container = 'dataLists';
   theUrl = "/slingshot/datalists/lists/site/" + curresite + "/" + container + "?page=1&pageSize=512";

   connector = remote.connect("alfresco");
   result = connector.get(theUrl);
  
   if (result.status == 200)
   {
model.ok = " ouiii";
      var ss = eval("(" + result + ")");
      try
      {
         for each (var s in ss.datalists)
         {
         if (s.itemType == "graph:graphList")
         {
         types.push(
         {
            names: s.name,
            titles: s.title,
            descriptions: s.description,
         itemtypes: s.itemType
         });
         }
       else
       {
       continue;
       }
      
      
      }
     }
      catch (e)
      {
      }
   }
  
  if (types.size != 0)
  {

      model.bug = "ouiiiii"
   }
   else
   {
   model.bug = "buggg"
   }
      return types;
}

var getDataforGraph = function(currsite, nameliste, titleliste, descliste)
{

  
var site, container, theUrla, connector, result, lists, listetitle, listedesc, liste, activity = [];
model.liste = [];

//site = 'test';
//site = page.url.templateArgs.site;
container = 'dataLists';
liste = nameliste;
listetitle = titleliste;
listedesc = descliste;


   theUrla = '/slingshot/datalists/data/site/' + currsite + '/' + container + '/';

var myObj = { "fields" :[   "graph_graphDate",
                     "graph_graphValeur",
                     "graph_graphTendance",
                     "graph_graphObjectif"
                  ],
              "filter" :{   "filterData" : "",
                     "filterId" : "all"
                  }
         };

var myObjAsString = jsonUtils.toJSONString(myObj);

var itemslist = [];
      siteTitle = "";
var dataSites = new Array();

   connector = remote.connect("alfresco");
  
    
   theUrl = theUrla + liste;
model.url = theUrl;
    result = connector.post(theUrl, myObjAsString, 'application/json');

      // if (response.success !== undefined)
  if (result.status == 200)
   {
      var i, ii;
            
         // Create javascript objects from the server response
         // Each item is a favourite site that the user is a member of
         //var sites = eval('(' + result + ')'), site;
         var response = eval('(' + result + ')'), data;
         if (response.length != 0)
         {
            // Sort the sites by title
            //sites.sort(sortByTitle);

           
            for (i = 0, ii = response.items.length; i < ii; i++)
            {
               data = response.items[i];
       //if (site.shortName == currentSite)
               //{
                 // siteTitle = data.title;
                  //if (ignoreCurrentSite)
                  //{
                     // The current site was piggy-backing the query call; it's not a favourite
                    // continue;
                  //}
                  //currentSiteIsFav = true;
//var dt=new Date(data.itemData.prop_graph_graphDate.value);

   //var mois=dt.getMonth();
   var date = fromISO8601(data.itemData.prop_graph_graphDate.value);

   dataSites.push(
         {
          sitename: site,
         listename: liste,
         listetitle: listetitle,
         listedescription: listedesc,
         tdate : date,
         graphDate : data.itemData.prop_graph_graphDate.value,
          graphValeur : data.itemData.prop_graph_graphValeur.value,
         graphTendance : data.itemData.prop_graph_graphTendance.value,
         graphObjectif : data.itemData.prop_graph_graphObjectif.value
         });
      

         
        }
           
        }

   }

return dataSites;
}

function fromISO8601(formattedString)
{
   var isoRegExp = /^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(.\d+)?)?((?:[+-](\d{2}):(\d{2}))|Z)?)?$/;

   var match = isoRegExp.exec(formattedString);
   var result = null;

   if (match)
   {
      match.shift();
      if (match[1]){match[1]–;} // Javascript Date months are 0-based
      if (match[6]){match[6] *= 1000;} // Javascript Date expects fractional seconds as milliseconds

      result = new Date(match[0]||1970, match[1]||0, match[2]||1, match[3]||0, match[4]||0, match[5]||0, match[6]||0);

      var offset = 0;
      var zoneSign = match[7] && match[7].charAt(0);
      if (zoneSign != 'Z')
      {
         offset = ((match[8] || 0) * 60) + (Number(match[9]) || 0);
         if (zoneSign != '-')
         {
            offset *= -1;
         }
      }
      if (zoneSign)
      {
         offset -= result.getTimezoneOffset();
      }
      if (offset)
      {
         result.setTime(result.getTime() + offset * 60000);
      }
   }

   return result; // Date or null
}

   model.dataSites = main();

et dans le get.html.ftl de mon dashlet je remplit le XHRDatasource comme ceci :


     var healthDataSource = new YAHOO.util.XHRDataSource("/share/service/components/graph/getDataListData.json?siteId=${page.url.templateArgs.site}");

Mais toujours cette fichu erreur 500 concernant page…


Cordialement
bertrandf
Active Member

Re: récupération page.url.templateArgs.site

Ah oui, je suis bête, il ne connait pas l'objet page.
Essayez peut être avec :
args.siteId
ou

url.args.siteId
cchumi
Member II

Re: récupération page.url.templateArgs.site

Et bien tu es un chef sincèrement Smiley Wink . Merci beaucoup .
En mettant args.siteId cela fonctionne parfaitement mais par avec url.args.siteId.

Je vais épurer un peu mon code et le diffuser ici ça pourra toujours servir a quelqu'un .
Maintenant il va me falloir étudier la création de la classe. Penses tu que c'est plus propre de passer par une classe ? Quel avantage je vais en tirer ?

Encore merci à toi BertrandF .

Cordialement
cchumi
Member II

Re: récupération page.url.templateArgs.site

Je me permets de continuer sur la lancer vu que les réponses sont tres réactives sur ce forum Smiley Happy .

En fait dans certains ils se peut que mon dashlet doivent afficher plusieurs graphique. Chaques graphique correspond a une liste differente .
Dans mon js je récupère bien le nom des listes et il est bien transmis en json mais cependant je dois avoir un probleme dans ma boucle car mon itemsdata ne me retourne que les valeurs de la derniere liste.
comment faire pour qu'il ressence chaque liste avec les valeurs corespondantes.
bertrandf
Active Member

Re: récupération page.url.templateArgs.site

Maintenant il va me falloir étudier la création de la classe. Penses tu que c'est plus propre de passer par une classe ? Quel avantage je vais en tirer ?
Désolé pour la réponse tardive, oui je pense que c'est plus propre.
Je ne sais pas s'il y a vraiment un avantage de le faire mais ca permet de bien scinder les choses : une classe JavaScript pour les traitements, un template pour la présentation.

Dans mon js je récupère bien le nom des listes et il est bien transmis en json mais cependant je dois avoir un probleme dans ma boucle car mon itemsdata ne me retourne que les valeurs de la derniere liste.
A chaque itération, vous écrasez la valeur précédente de 'itemsdata '.
    var itemsdata = [];
      for (var i = 0, ii = listdata.length; i < ii; i++) {
         test = listdata[i];
         itemsdata = getDataforGraph(siteId, test.names, test.titles, test.descriptions);
      }
    return itemsdata;
Il faudrait plutôt faire quelque chose du genre :
      for (var i = 0, ii = listdata.length; i < ii; i++) {
         test = listdata[i];
         itemsdata.push(getDataforGraph(siteId, test.names, test.titles, test.descriptions));
      }

Mais il faudra faire attention car 'itemsdata' sera un tableau de tableaux.