Skip to content

Instantly share code, notes, and snippets.

@martiansideofthemoon
Created November 26, 2015 16:57
Show Gist options
  • Save martiansideofthemoon/00f7d22ccb97a97c4380 to your computer and use it in GitHub Desktop.
Save martiansideofthemoon/00f7d22ccb97a97c4380 to your computer and use it in GitHub Desktop.
var app = angular.module('wptview', []);
app.directive('customOnChange', function() {
return {
restrict: 'A',
link: function (scope, element, attrs) {
var onChangeHandler = scope.$eval(attrs.customOnChange);
element.bind('change', onChangeHandler);
}
};
});
app.factory('ResultsModel',function() {
var ResultsModel = function() {
this.service = new LovefieldService();
}
ResultsModel.prototype.readFile = function(file) {
var reader = new FileReader();
var lovefield = this.service;
var deferred = Promise.defer();
reader.onload = function(progressEvent) {
deferred.resolve(this.result);
};
reader.readAsText(file, "UTF-8");
return deferred.promise;
}
ResultsModel.prototype.addResultsFromLogs = function (file) {
var lovefield = this.service;
var promise = this.readFile(file).then(function(result) {
var JSONArray = logCruncher(result, testsFilter);
console.log(JSONArray);
lovefield.getDbConnection().then(function(db) {
lovefield.insertTests(JSONArray).then(function(results) {
console.log("Tests successfully added!");
lovefield.insertTestResults(JSONArray, results).then(function() {
console.log("Test results successfully added!");
});
});
});
});
return promise;
}
ResultsModel.prototype.getResults = function() {
var lovefield = this.service;
return lovefield.selectNTests();
}
return ResultsModel;
});
app.controller('wptviewController', function($scope, ResultsModel) {
$scope.results = {};
var resultsModel = new ResultsModel();
$scope.uploadFile = function (evt) {
var file = evt.target.files[0];
resultsModel.addResultsFromLogs(file).then(function() {
// I want this function to execute after L#38, insertTestResults() has completed
console.log("Results added!");
// Enable generate button
});
}
$scope.fillTable = function() {
resultsModel.getResults().then(function(results) {
console.log(results);
$scope.results = results;
$scope.$apply();
});
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment