update

Events

by ilaria_nunziante

HTML

<link rel="stylesheet" href="https://s3.amazonaws.com/flexmonster/2.3/demo.css">
<script src="https://cdn.flexmonster.com/flexmonster.js"></script>
<script
  src="https://code.jquery.com/jquery-3.4.1.min.js"
  integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
  crossorigin="anonymous"></script>
   <script id="myWorker">
    var i = 0;
    console.log('workerCode');
    setInterval(function() {
   console.log('workerinterval');
    
       i++;
       postMessage(i); // sent data to main app
    }, 500);
</script>
<button id="btn" onclick="updateData()">Update data</button>
<span id="dateId"></span>
<div id="pivot-container">The component will appear here</div>

JavaScript

var pivot = new Flexmonster({
	container: "pivot-container",
  componentFolder: "https://cdn.flexmonster.com/",
  toolbar: true,
  report: {
    dataSource: {
    	data: getData()
    },
    "slice": {
        "rows": [
            {
                "uniqueName": "Category"
            },
            {
                "uniqueName": "Product"
            },
            {
            
                "uniqueName": "[Measures]"
            }
        ],
        "columns": [
            {
                "uniqueName": "Bucket"
            }
        ],
        "measures": [
            {
                "uniqueName": "Quantity",
                "aggregation": "sum"
            }, {
                "uniqueName": "Quantity2",
                "aggregation": "sum"
            }, {
                "uniqueName": "Quantity3",
                "aggregation": "sum"
            }
        ]
    }
  }
});
var w;
var workerData = new Blob([document.getElementById('myWorker').textContent], {
    type: "text/javascript"
});

function startWorker() {
  if (typeof(Worker) !== "undefined") {
    if (typeof(w) == "undefined") {
      //w = new Worker("demo_worker.js");
      w = new Worker(window.URL.createObjectURL(workerData));
    }
    w.onmessage = function(event) {
     console.log('0900');
      document.getElementById("dateId").innerHTML = event.data;
    };
  } else {
    document.getElementById("dateId").innerHTML = "Sorry! No Web Worker support.";
  }
}

function stopWorker() {
  w.terminate();
  w = undefined;
}

/* To see the alert you should change something in the component. 
   For example, update data slice or apply filtering.   */
function updateData() {
  console.log('started');
startWorker();
var dataForUpdate = [];
 var i;
  for(i=0; i< 5000; i++){ 
  dataForUpdate.push({
    Product: "Product_" + i+500000,
    Category:  "Category_" + i+1,
    Bucket:  "Bucket" + i+500000,
    RowId: i+500000,
    Quantity2: i*3,
  });
  };
  flexmonster.updateData({data:...