VIsualize.js Render

by NesterOne

HTML

<!--Provide URL to visualize.js-->
<script src="http://underscorejs.org/underscore.js"></script>
<script src="http://code.jquery.com/jquery-2.1.0.js"></script>
<script src="http://build-master.jaspersoft.com:7580/jrs-pro-feature-amber-embedded-report/client/visualize.js"></script>
<!--Provide container to render your visualization-->
<div>
    <div style="width:830px;" id="main"></div>
    <div style="width:500px;" id="drill-down"></div>
</div>

CSS

#main{
   float: left; 
}

#drill-down{
    float: left; 
}

JavaScript

visualize({
    auth: {
        name: "jasperadmin",
        password: "jasperadmin",
        organization: "organization_1"
    }
}, function (v) {
     
    
    v("#main").report({
        resource: "/AdditionalResourcesForTesting/Drill_Reports_with_Controls/main_report",
        linkOptions: {
            beforeRender: function (linkToElemPairs) {
                linkToElemPairs.forEach(showCursor);
            },
            events: {
                "click": function(ev, link){
                    link = fixLink(link);
                    if (link.type == "ReportExecution"){
                        v("#drill-down").report({
                            resource: link.hint.resource,
                            params: link.hint.params, 
                        });
                        console.log(link.hint);
                    }
                }
            }    
        },
        success: function(data){
            console.log(data);
        },
        error: function (err) {
            alert(err.message);
        }
    });
    
    
    function showCursor(pair){
           var el = pair.element;
               el.style.cursor = "pointer";
    }
    
    function fixLink(link){
        //TODO: fix inside visualize.js
         var resource = link.params._report;
         delete link.params._report;
         var params = link.params;
         delete link.params;     
            link.hint = {
                resource: resource,
                params : _.chain(params)
                         .pairs()
                         .map(function(pair){ 
                       
                             var paramName = pair[0],
                                 paramValue = pair[1];
                             if (!_.isArray(paramValue)){
                                 paramValue = [paramValue];
                             }
        
                             return [paramName, paramValue];
                         })
                        ...