It's all about the answers!

Ask a question

More Variables for Built-in Reports?


Dan Duce (2534645) | asked Jun 15 '12, 7:21 a.m.
I was wondering if the predefined reports on the Administration - Tools page have more variables available?

For example, the Repository Contents report link looks like this:
/ram/admin/_rlvid.jsp.faces?_rap=!repositoryMetrics&_rvip=/admin/communities.jsp&reportId=repositoryContentsReport&dateRange=week

Are there other options for configuring this report available?  It would be great if I could run this report but specify just one community.

Likewise with the other predefined reports.  Are there ways to vary those?

I didn't see anything in the Help that talked about modifying these reports.   I'd be interested in learning more, even if it isn't officially supported.

Thanks...........Dan


4 answers



permanent link
Rich Kulp (3.6k38) | answered Jun 15 '12, 10:41 a.m.
FORUM MODERATOR / JAZZ DEVELOPER
What you see are not variables to the reports. Those are stupid Java Server Faces parameters that it requires to do navigation. The report pages have no variables other than ones that can be selected on the web page itself, if any.

Rich

permanent link
Gili Mendel (1.8k56) | answered Jun 15 '12, 4:11 p.m.
JAZZ DEVELOPER
edited Jun 15 '12, 4:18 p.m.
What Rich meant there, is that the url parameters are really reflecting the various links that are at the bottom right corner of the Administration page (Repository Statistics).

A workaround, is to use the Activity Audit to generate report/download a file and use a spread sheet to generate a report .... a few steps.... :-(

Another option, if you get someone with some HTML/js skills, to generate a few small HTML files, that do dojo/graphics rendering for a report, and store these files as part of an asset ... so that it generates reports dynamically from a URL report.   for example the following will generate a bar graph for access activity for a specific asset.


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

 

<script type="text/javascript" src="/ram/javascript/dojo/dojo150/dojo/dojo.js"

       djConfig="isDebug: true, parseOnLoad: true">

</script>

<script type="text/javascript">

  dojo.require("dojo.parser");

  dojo.require("dojo._base.xhr");

  dojo.require("dojox.charting.Chart2D");

  dojo.require("dojox.charting.action2d.Highlight");

  dojo.require("dojox.charting.action2d.Tooltip");

  dojo.require("dojox.charting.widget.Legend"); 

</script>

<style type="text/css">

       @import "/ram/javascript/dojo/dojo150/dojo/resources/dojo.css";

       @import "/ram/javascript/dojo/dojo150/dijit/themes/tundra/tundra.css";

       @import "/ram/javascript/dojo/dojo150/dijit/themes/dijit.css";

</style>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<title>User Service Wrapper</title>

</head>

 

<body class="tundra" onload="fetchActivity()">

 

<script type="text/javascript">

   var week = [0, 0];

   var month = [0, 0]

   var quarter = [0, 0];

   var year = [0, 0];

 

   function updateCounter(idx, delta) {

      if (delta<=7)

               week[idx] ++;

         if (delta<=30)

               month[idx]++;

         if (delta<=91)

               quarter[idx]++;

         if (delta<=365)

               year[idx]++;             

   }

   function countActivity(act) {

        var today = new Date();

              var date = new Date(act.timestamp);

              var delta = (today - date)/1000/60/60/24;

              var aid = parseInt(act.typeId);

              if (aid == 610 || // Download                                                                         

                     aid == 650 || // Artifact Browse

                     aid == 621) { // Build                                                                                

                     updateCounter(0, delta);

              }

              else if (aid == 620 || // Rich Client Access

                            aid == 560 || // Search View

                            aid == 608 || // View

                            aid == 630) { // Asset Subscription

                     updateCounter(1, delta);             

              }

   }  

   function fetchActivity() {

       dojo.xhrGet({             

                     // url: "/ram.ws/reporting/settings:format=json|assetActivity:guid={61BEEB23-C7DF-71F0-D101-FD54A31A2F53},version=1.0",

                     //   assetActivity: 220, 240, 280, 310, 350, 380, 480, 430, 460, 481, 431, 461, 482, 432, 462, 560, 610, 620, 621, 630, 633, 675, 680, 685, 690, 151

                     //   artifactUseActivity: 620

                    

                     // tid requires admin, ... good idea to have date limits

                     url: "http://ramlnx:9080/ram.ws/reporting/settings:format=json|activity:tid=(650,610,621,620,560,560,608),guid={61BEEB23-C7DF-71F0-D101-FD54A31A2F53},version=1.0",

                      

            handleAs: "json",

                     sync: true,

            load: function(response, ioArgs) {                                          

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

                               countActivity(response[i]);

                           }

                           // normalize for weekly avg.

                           month[0]/=4; quarter[0]/=12; year[0]/=52;

                           month[1]/=4; quarter[1]/=12; year[1]/=52;

 

                           chart();

                           return response;

            },

            error: function(error, ioArgs) {

                consol.error("failed xhrGet");

                           return error;

            }

         });        

   } 

 

   function chart() {

               var dc = dojox.charting;

               var chart1 = new dc.Chart2D("chart");

               chart1.addPlot("default", {type: "ClusteredColumns", gap: 2});            

               chart1.addAxis("x",{minorLabels: true,

                                        labels: [{value: 1, text: "LastWeek"}, {value: 2, text: "Last Month"},

                                        {value: 3, text: "Last Quarter"}, {value: 4, text: "Last Year"}]

                               }

                           );

               chart1.addAxis("y", {vertical: true, includeZero: true,

                                       majorTick: {color: "red", length: 6},

                                    minorTick: {stroke: "black", length: 3}

                                    });         

               chart1.addSeries("Views",   [ week[1], month[1], quarter[1], year[1] ], {fill: "lightgreen"});

               chart1.addSeries("Downloads",      [ week[0], month[1], quarter[1], year[1] ], {fill: "lightblue"});              

               var h = new dc.action2d.Highlight(chart1, "default");

               var t = new dc.action2d.Tooltip(chart1, "default");

               chart1.render();

               var l = new dojox.charting.widget.Legend({chart: chart1}, "legend");

   }

</script>

 

       <table border="0"><tr valign="top">

              <td>

                <div id="chart" style="width: 400px; height: 300px;"></div>

              </td>

              <td>

                <div style="border: 1px solid #888888; padding: 5px; background-color: rgba(255, 255, 221, 0.8);">

                 <div id="legend" ></div>

                </div>

              </td>

              </tr>

       </table>

 

</body>

</html>



Comments
Rich Kulp commented Jun 15 '12, 4:46 p.m.
FORUM MODERATOR / JAZZ DEVELOPER

Be aware of one thing with this. This will bring down the entire result before processing starts. So if there is a large time range there could be very many metrics and it would be brought completely into the browser memory and processed.


permanent link
Gili Mendel (1.8k56) | answered Jun 15 '12, 6:04 p.m.
JAZZ DEVELOPER
Yes... hence, date/time limits should apply

permanent link
Dan Duce (2534645) | answered Jun 18 '12, 6:08 a.m.
Yeah,   I started out using url reporting to get around the hard coded limits in the Activity Audit reports.  URL reporting is so painful to do, especially when you have a lot of different reports that you want to run using different time periods.  And they aren't very forgiving when something goes wrong.  The error messages don't give you much of an idea what you did wrong.  Generally, when I make a mistake in the url, I just get no data back and no error message, so there's a lot of guessing and experimentation involved.

If you guys ever decide to overhaul the reporting capabilities and need volunteers for input, count me in.  Reporting is probably the biggest frustration I have with RAM (lifecycles, comes second).  Overall, I really like the tool.  But reporting gives me fits.

Cheers.............Dan

Your answer


Register or to post your answer.


Dashboards and work items are no longer publicly available, so some links may be invalid. We now provide similar information through other means. Learn more here.