JSFiddle - React, Tailwind, and code Playground

by vysohanych

HTML

<script type='text/javascript' src="http://build-master.jaspersoft.com:6980/jrs-pro-feature-profile-attributes/client/visualize.js"></script>
<div id="container"></div>

<!-- Button trigger modal -->
<button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
  Launch demo modal
</button>

<div class="modal fade" id="myModal">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
        <h4 class="modal-title">Modal title</h4>
      </div>
      <div class="modal-body">
        <p>One fine body&hellip;</p>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div><!-- /.modal-content -->
  </div><!-- /.modal-dialog -->
</div><!-- /.modal -->

JavaScript

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

    var chartName = "01._Geographic_Results_by_Segment_Report",
        $select = buildControl("Chart types: ", v.report.chart.types),
        report = v.report({
            resource: "/public/Samples/Reports/01._Geographic_Results_by_Segment_Report",
            container: "#container",
            success: selectDefaultChartType
        });

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

    function selectDefaultChartType(data) {
        var component = data.components[0];
        if (component) {
            console.log(component.chartType);

            $select.find("option[value='" + component.chartType + "']")
                .attr("selected", "selected");
        }
    }

    function buildOptions(options) {
        var template = "<option value='{value}'>{value}</option>",
            optionsTemplate = "";

        options.forEach(function (option) {
            optionsTemplate += template.replace(/{value}/g, option);
        });

        return optionsTemplate;
    }

    function buildControl(name, options) {

        console.log(options);

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

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

        var $control = $(content);
        $control.insertBefore($("#container"));
        return $control;
    }

});