Skip to content

Commit

Permalink
Move PromisesResolver to ES6
Browse files Browse the repository at this point in the history
  • Loading branch information
manuquentin committed May 15, 2015
1 parent b68168a commit 307d042
Show file tree
Hide file tree
Showing 9 changed files with 60 additions and 64 deletions.
1 change: 0 additions & 1 deletion src/javascripts/ng-admin/Crud/CrudModule.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ define(function (require) {
CrudModule.controller('BatchDeleteController', require('ng-admin/Crud/delete/BatchDeleteController'));

CrudModule.service('EntryFormatter', require('ng-admin/Crud/misc/EntryFormatter'));
CrudModule.service('PromisesResolver', require('ng-admin/Crud/misc/PromisesResolver'));
CrudModule.service('RetrieveQueries', require('ng-admin/Crud/repository/RetrieveQueries'));
CrudModule.service('CreateQueries', require('ng-admin/Crud/repository/CreateQueries'));
CrudModule.service('UpdateQueries', require('ng-admin/Crud/repository/UpdateQueries'));
Expand Down
56 changes: 0 additions & 56 deletions src/javascripts/ng-admin/Crud/misc/PromisesResolver.js

This file was deleted.

2 changes: 1 addition & 1 deletion src/javascripts/ng-admin/Crud/repository/CreateQueries.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ define(function (require) {
});
};

CreateQueries.$inject = ['$q', 'Restangular', 'NgAdminConfiguration', 'PromisesResolver'];
CreateQueries.$inject = ['$q', 'Restangular', 'NgAdminConfiguration', 'AdminDescription'];

return CreateQueries;
});
2 changes: 1 addition & 1 deletion src/javascripts/ng-admin/Crud/repository/DeleteQueries.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ define(function (require) {
return this.$q.all(promises);
};

DeleteQueries.$inject = ['$q', 'Restangular', 'NgAdminConfiguration', 'PromisesResolver'];
DeleteQueries.$inject = ['$q', 'Restangular', 'NgAdminConfiguration', 'AdminDescription'];

return DeleteQueries;
});
6 changes: 3 additions & 3 deletions src/javascripts/ng-admin/Crud/repository/Queries.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,16 @@ define(function () {
* @param {Application} Configuration
* @constructor
*/
function Queries($q, Restangular, Configuration, PromisesResolver) {
function Queries($q, Restangular, Configuration, AdminDescription) {
this.$q = $q;
this.Restangular = Restangular;
this.config = Configuration();
this.PromisesResolver = PromisesResolver;
this.PromisesResolver = AdminDescription.getPromisesResolver();

this.Restangular.setFullResponse(true); // To get also the headers
}

Queries.$inject = ['$q', 'Restangular', 'NgAdminConfiguration', 'PromisesResolver'];
Queries.$inject = ['$q', 'Restangular', 'NgAdminConfiguration', 'AdminDescription'];

return Queries;
});
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,7 @@ define(function (require) {
});
};

RetrieveQueries.$inject = ['$q', 'Restangular', 'NgAdminConfiguration', 'PromisesResolver'];
RetrieveQueries.$inject = ['$q', 'Restangular', 'NgAdminConfiguration', 'AdminDescription'];

return RetrieveQueries;
});
2 changes: 1 addition & 1 deletion src/javascripts/ng-admin/Crud/repository/UpdateQueries.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ define(function (require) {
});
};

UpdateQueries.$inject = ['$q', 'Restangular', 'NgAdminConfiguration', 'PromisesResolver'];
UpdateQueries.$inject = ['$q', 'Restangular', 'NgAdminConfiguration', 'AdminDescription'];

return UpdateQueries;
});
5 changes: 5 additions & 0 deletions src/javascripts/ng-admin/es6/lib/Factory.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import Application from "./Application";
import Entity from "./Entity/Entity";
import DataStore from "./DataStore/DataStore";
import PromisesResolver from "./Utils/PromisesResolver";

import Field from "./Field/Field";
import BooleanField from "./Field/BooleanField";
Expand Down Expand Up @@ -66,6 +67,10 @@ class Factory {
return new DataStore();
}

getPromisesResolver() {
return PromisesResolver;
}

_init() {
this.registerFieldType('boolean', BooleanField);
this.registerFieldType('choice', ChoiceField);
Expand Down
48 changes: 48 additions & 0 deletions src/javascripts/ng-admin/es6/lib/Utils/PromisesResolver.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@

class PromisesResolver {
static allEvenFailed(promises) {
if (!Array.isArray(promises)) {
throw 'allEvenFailed can only handle an array of promises';
}

return new Promise(function (resolve, reject) {
if (promises.length === 0) {
return resolve([]);
}

let states = [],
results = [];

promises.forEach((promise, key) => {
states[key] = false; // promises are not resolved by default
});

promises.forEach((promise, key) => {
function resolveState(result) {
states[key] = true;
results[key] = result; // result may be an error
for (let i in states) {
if (!states[i]) {
return;
}
}

resolve(results);
}

function resolveSuccess(result) {
return resolveState({status: 'success', result: result});
}

function resolveError(result) {
return resolveState({status: 'error', error: result})
}

// whether the promise ends with success or error, consider it done
promise.then(resolveSuccess, resolveError);
});
});
}
}

export default PromisesResolver;

0 comments on commit 307d042

Please sign in to comment.