piskel/dev/js/devtools/TestRecordController.js
2017-05-22 09:56:42 +02:00

77 lines
2.8 KiB
JavaScript

(function () {
var ns = $.namespace('pskl.devtools');
ns.TestRecordController = function (testRecorder) {
this.testRecorder = testRecorder;
$.subscribe(Events.TEST_RECORD_END, this.onTestRecordEnd_.bind(this));
};
ns.TestRecordController.prototype.init = function () {
var fileInput = document.createElement('input');
fileInput.setAttribute('type', 'file');
fileInput.addEventListener('change', this.onFileInputChange_.bind(this));
fileInput.style.display = 'none';
var container = document.createElement('div');
container.style.cssText = 'position:absolute;z-index:10000;margin:5px;padding:10px;background:lightgrey';
document.body.appendChild(container);
var loadInput = document.createElement('button');
loadInput.innerHTML = 'Load Test ...';
loadInput.addEventListener('click', this.onLoadInputClick_.bind(this));
var startInput = document.createElement('button');
startInput.innerHTML = 'Start record';
startInput.addEventListener('click', this.onStartInputClick_.bind(this));
var stopInput = document.createElement('button');
stopInput.innerHTML = 'Stop record';
stopInput.addEventListener('click', this.onStopInputClick_.bind(this));
stopInput.setAttribute('disabled', 'disabled');
this.container = container;
this.fileInput = this.container.appendChild(fileInput);
this.loadInput = this.container.appendChild(loadInput);
this.startInput = this.container.appendChild(startInput);
this.stopInput = this.container.appendChild(stopInput);
};
ns.TestRecordController.prototype.onLoadInputClick_ = function () {
this.fileInput.click();
};
ns.TestRecordController.prototype.onFileInputChange_ = function () {
var files = this.fileInput.files;
if (files.length == 1) {
var file = files[0];
pskl.utils.FileUtils.readFile(file, function (content) {
var testRecord = JSON.parse(window.atob(content.replace(/data\:.*?\;base64\,/, '')));
var testPlayer = new ns.DrawingTestPlayer(testRecord);
testPlayer.start();
}.bind(this));
}
};
ns.TestRecordController.prototype.onStartInputClick_ = function () {
this.testRecorder.startRecord();
this.startInput.setAttribute('disabled', 'disabled');
this.stopInput.removeAttribute('disabled');
};
ns.TestRecordController.prototype.onStopInputClick_ = function () {
var testRecord = this.testRecorder.stopRecord();
pskl.utils.BlobUtils.stringToBlob(testRecord, function(blob) {
pskl.utils.FileUtils.downloadAsFile(blob, 'record_piskel.json');
}.bind(this), 'application/json');
this.startInput.removeAttribute('disabled');
this.stopInput.setAttribute('disabled', 'disabled');
};
ns.TestRecordController.prototype.onTestRecordEnd_ = function (evt, success) {
window.alert('Test finished : ' + (success ? 'success' : 'failed'));
};
})();