Visualize: Change Chart Type

Test plugins

by Yuriy Bablyukh

HTML

<script type='text/javascript' src="http://build-master.jaspersoft.com:7980/jrs-pro-bugfix/client/visualize.js?_opt=true"></script>
<button id='apply'>Apply</button>
<div id="container"></div>

JavaScript

visualize({
    auth: {
        name: "superuser",
        password: "superuser"
    }
}, function (v) {

    //persisted chart name
    var chartName = "6de026d7-450e-41df-9495-90da1be6ebf7",
        $select = buildControl("Chart types: ", v.report.chart.types),
        report = v.report({
            resource: "/public/BarChartFoodmart",
            container: "#container",
            success: selectDefaultChartType
        });



    $("#apply").click(function () {
        var params = {
            "product_name_1": ["ADJ Rosy Sunglasses"]
        };
        report.params(params).run().fail(function (error) {
            alert(error);
        });
    });

    $select.on("change", function () {
        report.updateComponent(chartName, {
            chartType: $(this).val()
        })
            .done(function (component) {
            chartComponent = component;
        })
            .fail(function (error) {
            alert(error);
        });
    });

    function selectDefaultChartType(data) {
        var component = data.components.filter(function (c) {
            return c.name === chartName || c.id === chartName;
        })
            .pop();
        console.log(component);
        if (component) {
            document.getElementById("chartType").value = component.chartType;
        }
    }

    function buildControl(name, options) {

        function buildOptions(options) {
            var template = "<option id='{value}'>{value}</option>";
            return options.reduce(function (memo, option) {
                return memo + template.replace("{value}", option).replace("{value}", option);
            }, "")
        }

        console.log(options);

        if (!options.length) {
            console.log(options);
        }

        var template = "<label>{label}</label><select id='chartType'>{options}</select><br>",
            content = template.replace("{label}", name)
                .replace("{options}", buildOptions(options));

        var...