2012-04-30 4 views
2

J'essaie de trouver un moyen de faire un lien vers une pièce jointe qu'une histoire utilisateur peut avoir, mais je n'ai pas été en mesure de comprendre comment. Comme je l'ai, la seule chose que je reçois dans cette colonne est "[object Object]" quand une histoire utilisateur a une pièce jointe.Lien vers une pièce jointe

Il ne semble pas y avoir beaucoup de choses sur les pièces jointes, si quelqu'un peut jeter de la lumière ou me diriger dans la bonne direction, je l'apprécierais sûrement!

<html> 
<head> 
    <title>Table</title> 
    <meta name="Name" content="App Example: Table" /> 
    <meta name="Version" content="2010.4" /> 
    <meta name="Vendor" content="Rally Software" /> 
    <script type="text/javascript" src="https://rally1.rallydev.com/apps/1.24/sdk.js?loginKey=bignumber"></script> 
    <script type="text/javascript"> 

    function tableExample() { 
     var rallyDataSource = new rally.sdk.data.RallyDataSource('12345', '12345',  'True', 'True'); 
     function itemQuery() { 
     var queryObject = { 
      key: 'stories', 
      type: 'HierarchicalRequirement', 
      fetch: 'FormattedID,Name,ScheduleState,Description,Attachments', 
      query: '(Name contains "release")' 
     }; 
     rallyDataSource.findAll(queryObject, populateTable); 
     } 

     function populateTable(results) { 
     var tableDiv = document.getElementById('aDiv'); 
     var config = { columns: 
      [{key: 'FormattedID', header: 'Formatted ID', width: 100}, 
      {key: 'Name', width: 400}, 
      {key: 'ScheduleState', header: 'Schedule State', width: 200}, 
      {key: 'Description', width: 800}, 
      {key: 'Attachments', header: 'Attachment Link', width: 200}]}; 
     var table = new rally.sdk.ui.Table(config); 

    table.addRows(results.stories); 
     table.display(tableDiv); 

     }; 
     itemQuery(); 
    } 

    rally.addOnLoad(tableExample); 
    </script> 
</head> 
<body> 
    <div id="aDiv"></div> 
</body> 
</html> 

Répondre

1

J'inclus une version légèrement modifiée de votre échantillon App qui fait un peu de post-traitement pour tirer l'ID de l'objet de chaque pièce jointe et laisse tomber dans certains liens HTML qui sont mis à jour dans la colonne de tableau correspondant.

 <html> 
     <head> 
      <title>Table</title> 
      <meta name="Name" content="App Example: Stories with Attachments" /> 
      <meta name="Version" content="2010.4" /> 
      <meta name="Vendor" content="Rally Software" /> 
      <script type="text/javascript" src="https://rally1.rallydev.com/apps/1.29/sdk.js"></script> 
      <script type="text/javascript"> 

      var table = null; 

      function tableExample() { 
       var rallyDataSource = new rally.sdk.data.RallyDataSource('__WORKSPACE_OID__', 
                        '__PROJECT_OID__', 
                        '__PROJECT_SCOPING_UP__', 
                        '__PROJECT_SCOPING_DOWN__'); 
       function itemQuery() { 
       var queryObject = { 
        key: 'stories', 
        type: 'HierarchicalRequirement', 
        fetch: 'FormattedID,Name,ScheduleState,Description,Attachments,ObjectID' 
        // query: '(Name contains "release")' 
       }; 
       rallyDataSource.findAll(queryObject, populateTable); 
       } 

       function populateTable(results) { 

        if (table) { 
         table.destroy(); 
        } 

       var tableDiv = document.getElementById('aDiv'); 

       var config = { 'columnKeys' : ['FormattedID', 'Name', 'ScheduleState', 'Attachments'], 
           'columnHeaders' : ['FormattedID', 'Name', 'ScheduleState', 'Attachments'], 
           'columnWidths' : ['100px',  '400px', '85px',   '300px'] 
           }; 
       table = new rally.sdk.ui.Table(config); 
       table.addRows(results.stories); 

       for (i=0;i<results.stories.length;i++) { 

        myStory = results.stories[i]; 
        myAttachments = results.stories[i].Attachments; 

        myAttachmentHTML = ""; 
        for (j=0;j<myAttachments.length;j++) { 
         myAttachmentOID = myAttachments[j].ObjectID; 
         myAttachmentName = myAttachments[j].Name; 
         myAttachmentURL = "https://rally1.rallydev.com/slm/attachment/"+ 
           myAttachmentOID + "/" + myAttachmentName; 

         myAttachmentHTML += "<div><a href='" + myAttachmentURL + "'>" + 
           myAttachmentName + "</a></div>"; 

        } 
        table.setCell(i, 3, myAttachmentHTML); 
       } 
       table.display(tableDiv); 

       }; 
       itemQuery(); 
      } 

      rally.addOnLoad(tableExample); 
      </script> 
     </head> 
     <body> 
      <div id="aDiv"></div> 
     </body> 
     </html> 
+0

Vous êtes génial! Cela a fait l'affaire, merci. –

+0

Je dois souligner que cette méthode: rally.sdk.util.Context.getServerInfo(). GetSlmUrl() est un moyen plus élégant et mieux supporté pour saisir l'URL du serveur Rally lui-même, par opposition à coder en dur comme dans le exemple que j'ai posté ... –