I have the following problem, I need to block the UI when I upload a file and it is being processed, for this I use Angular BlockUI , but the problem is that the screen is blocked once the process is finished and not during it.
var processData = angular.module('library.process_data', ['blockUI']);
processData.controller('ProcessHomescope$scope', function HomeController($scope, blockUI, blockUIConfig) {
var elementsTeradata = [];
$scope.updloadTeradata = function(e) {
//Bloqueo de UI
blockUIConfig.delay = 100;
blockUI.start("Cargando...");
$timeout(function() {
var files = e.target.files,
f = files[0];
var reader = new FileReader();
reader.onload = function(e) {
var data = e.target.result;
if (!rABS) {
data = new Uint8Array(data);
}
workbook = XLSX.read(data, {
type: rABS ? 'binary' : 'array'
});
elementsTeradata = saveValues(workbook);
alert("Ingrese segundo Archivo");
};
if (rABS) {
reader.readAsBinaryString(f);
} else {
reader.readAsArrayBuffer(f);
}
//procesar el archivo
blockUI.stop();
}, 0);
};
function saveValues(workbook) {
var elementsData = [];
var row = [];
var first_sheet_name = workbook.SheetNames[0];
var worksheet = workbook.Sheets[first_sheet_name];
var limit = XLSX.utils.decode_range(worksheet['!ref']);
var desired_cell;
var desired_value;
for (var x = 0; x <= limit.e.r; x++) {
for (var j = 0; j <= limit.e.c; j++) {
var cell_address = {
c: j,
r: x
};
var cell_ref = XLSX.utils.encode_cell(cell_address);
desired_cell = worksheet[cell_ref];
desired_value = (desired_cell ? desired_cell.v : undefined);
row.push(desired_value);
}
elementsData.push(row);
row = [];
}
return elementsData;
}
});
<html>
<body>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div class="col-md-6">
<div>
<p>Subir Excel de Teradata</p>
<input type="file" name="teradata" id="teradata" custom-on-change="updloadTeradata" />
</div>
</div>
</body>
</html>