JSFiddle - React, Tailwind, and code Playground

by Pavel Savushchyk

HTML

<script src="http://infra-platforms-phase2-4592-psavushc.pfa.jaspersoft.com:8080/jasperserver-pro/client/visualize.js"></script>

<table id="params">
  <tr>
    <td>Parameter ID</td>
    <td>Set value</td>
  </tr>
</table>
<div id="values"></div>
<br/>
<button id="apply" disabled>Apply params</button>
<button id="undo" disabled>Undo</button>
<button id="undoAll" disabled>Undo All</button>
<button id="redo" disabled>Redo</button>
<br/>
<br/>

<div id="container"></div>

CSS

#container {
  width: 800px;
  height: 500px;
}

th {
  background-color: blue;
}

JavaScript

visualize({
  auth: {
    name: "superuser",
    password: "superuser"
  }
}, function(v) {
  var dashboard = v.dashboard({
    resource: "/public/Samples/Dashboards/1._Supermart_Dashboard",
    container: "#container",
    error: handleError,
    success: function() {
      $("#apply").prop("disabled", false);
      buildParamsInput();
    },
    events: {
      canUndo: function(val) {
        $("#undo").prop("disabled", !val);
        $("#undoAll").prop("disabled", !val);
      },
      canRedo: function(val) {
        $("#redo").prop("disabled", !val);
      }
    }
  })

  $("#undo").on("click", function() {
    dashboard.undoParams().fail(handleError);
  });

  $("#undoAll").on("click", function() {
    dashboard.undoAllParams().fail(handleError);
  });

  $("#redo").on("click", function() {
    dashboard.redoParams().fail(handleError);
  });


  $("#apply").on("click", function() {
    var params = {};

    $("[data-paramId]").each(function() {
      params[$(this).attr("data-paramId")] = $(this).val().indexOf("[") > -1 ? JSON.parse($(this).val()) : [$(this).val()];
    });

    $("#apply").prop("disabled", true);

    dashboard.params(params).run()
      .fail(handleError)
      .always(function() {
        $("#apply").prop("disabled", false);
      });
  });

  function buildParamsInput() {
    var params = dashboard.data().parameters;
console.log(params);
    for (var i = params.length - 1; i >= 0; i--) {
      var $el = $("<tr><td>" + params[i].id + "</td><td><input type='text' data-paramId='" + params[i].id + "'/></td></tr>");

      $("#params").append($el);

      $el.find("input").val(params[i].value);
    }
  }

  function handleError(e) {
    alert(e);
  }
});