// Visualize: Scope Checker (5.6) visualize({ auth: { name: "jasperadmin", password: "jasperadmin", organization: "organization_1" } }, function (v) { createReport(); $("#selected_resource").change(function () { //clean container $("#container").html(""); createReport(); }); //enable report chooser $(':disabled').prop('disabled', false); function createReport(){ //render report from another resource v("#container").report({ resource: $("#selected_resource").val(), success: function(){ setTimeout(function () { console.log("------------------Scope Check Results---------------------------"); console.log(scopeChecker.compareProperties(propertiesNames)); console.log("----------------------------------------------------------------"); }, 5000); }, error:handleError }); } //show error function handleError(err){ alert(err.message); } });
<!-- Visualize: Scope Checker (5.6) --> <!--Provide URL to visualize.js--> <script type='text/javascript' src="http://localhost:8080/jasperserver-pro/client/visualize.js?_opt=true" </script> <script type='text/javascript' src="http://code.jquery.com/jquery-2.1.0.js"></script> <script> function ScopeChecker(scope) { this.scope = scope; } ScopeChecker.prototype.getPropertiesCount = function() { return this.getPropertiesNames().length; }; ScopeChecker.prototype.getPropertiesNames = function() { return Object.keys(this.scope); }; ScopeChecker.prototype.compareProperties = function(scope1PropertiesNames, scope2PropertiesNames) { if (!scope1PropertiesNames) { throw "Properties for scope 1 not specified"; } if (!scope2PropertiesNames) { scope2PropertiesNames = this.getPropertiesNames(); } var comparisonResult = { added: [], removed: [], madeUndefined: [], pollution: [] }; var i, j; for (i = 0; i < scope1PropertiesNames.length; i++) { comparisonResult.removed.push(scope1PropertiesNames[i]); for (j = 0; j < scope2PropertiesNames.length; j++) { if (scope1PropertiesNames[i] === scope2PropertiesNames[j]) { comparisonResult.removed.pop(); break; } } } for (i = 0; i < scope2PropertiesNames.length; i++) { comparisonResult.added.push(scope2PropertiesNames[i]); for (j = 0; j < scope1PropertiesNames.length; j++) { if (scope2PropertiesNames[i] === scope1PropertiesNames[j]) { comparisonResult.added.pop(); break; } } } for (i = 0; i < comparisonResult.added.length; i++) { if (this.scope[comparisonResult.added[i]] === undefined) { comparisonResult.madeUndefined.push(comparisonResult.added[i]); } else { comparisonResult.pollution.push(comparisonResult.added[i]); } } return comparisonResult; }; var propertiesNames = []; var scopeChecker = new ScopeChecker(window); propertiesNames = scopeChecker.getPropertiesNames(); </script> <select id="selected_resource" name="report"> <option value="/public/Samples/Reports/1._Geographic_Results_by_Segment_Report">1._Geographic_Results_by_Segment_Report</option> <option value="/public/Samples/Reports/2_Sales_Mix_by_Demographic_Report">2_Sales_Mix_by_Demographic_Report</option> <option value="/public/Samples/Reports/3_Store_Segment_Performance_Report">3_Store_Segment_Performance_Report</option> <option value="/public/Samples/Reports/04._Product_Results_by_Store_Type_Report">04._Product_Results_by_Store_Type_Report</option> <option selected="selected" value="/public/Samples/Reports/AllAccounts">AllAccounts</option> <option value="/public/Samples/Reports/5g.AccountsReport">5g.AccountsReport</option> <option value="/public/Samples/Reports/06g.ProfitDetailReport">06g.ProfitDetailReport</option> <option value="/public/Samples/Reports/ProfitDetailReport">ProfitDetailReport</option> <option value="/public/Samples/Reports/07g.RevenueDetailReport">07g.RevenueDetailReport</option> <option value="/public/Samples/Reports/RevenueDetailReport">RevenueDetailReport</option> <option value="/public/Samples/Reports/08g.UnitSalesDetailReport">08g.UnitSalesDetailReport</option> <option value="/public/Samples/Reports/08.UnitSalesDetailReport">08.UnitSalesDetailReport</option> <option value="/public/Samples/Reports/9.CustomerDetailReport">9.CustomerDetailReport</option> <option value="/public/Samples/Reports/9g.CustomerDetailReport">9g.CustomerDetailReport</option> <option value="/public/Samples/Reports/10g.PerformanceByStoreType">10g.PerformanceByStoreType</option> <option value="/public/Samples/Reports/State_Performance">State_Performance</option> <option value="/public/Samples/Reports/11g.SalesByMonthReport">11g.SalesByMonthReport</option> <option value="/public/Samples/Reports/SalesByMonthReport">SalesByMonthReport</option> <option value="/public/Samples/Reports/12g.PromotionDetailsReport">/public/Samples/Reports/12g.PromotionDetailsReport</option> <option value="/public/Samples/Reports/PromotionDetailsReport">PromotionDetailsReport</option> <option value="/public/Samples/Reports/13g.TopFivesReport">13g.TopFivesReport</option> <option value=""></option> <option value=""></option> <option value=""></option> <option value=""></option> <option value=""></option> <option value=""></option> <option value=""></option> <option value=""></option> <option value=""></option> <option value=""></option> <option value=""></option> </select> <!--Provide container to render your visualization--> <div id="container"></div>