diff --git a/client/src/collection-factory.js b/client/src/collection-factory.js index 0bc89dde24..b48302ab49 100644 --- a/client/src/collection-factory.js +++ b/client/src/collection-factory.js @@ -40,24 +40,26 @@ modelFactory: null, create: function (name, callback, context) { - context = context || this; - - this.modelFactory.getSeed(name, function (seed) { - var orderBy = this.modelFactory.metadata.get(['entityDefs', name, 'collection', 'orderBy']); - var order = this.modelFactory.metadata.get(['entityDefs', name, 'collection', 'order']); - - var className = this.modelFactory.metadata.get(['clientDefs', name, 'collection']) || 'collection'; - - Espo.loader.require(className, function (collectionClass) { - var collection = new collectionClass(null, { - name: name, - orderBy: orderBy, - order: order - }); - collection.model = seed; - collection._user = this.modelFactory.user; - collection.entityType = name; - callback.call(context, collection); + return new Promise(function (resolve) { + context = context || this; + this.modelFactory.getSeed(name, function (seed) { + var orderBy = this.modelFactory.metadata.get(['entityDefs', name, 'collection', 'orderBy']); + var order = this.modelFactory.metadata.get(['entityDefs', name, 'collection', 'order']); + var className = this.modelFactory.metadata.get(['clientDefs', name, 'collection']) || 'collection'; + Espo.loader.require(className, function (collectionClass) { + var collection = new collectionClass(null, { + name: name, + orderBy: orderBy, + order: order + }); + collection.model = seed; + collection._user = this.modelFactory.user; + collection.entityType = name; + if (callback) { + callback.call(context, collection); + } + resolve(collection); + }.bind(this)); }.bind(this)); }.bind(this)); } diff --git a/client/src/model-factory.js b/client/src/model-factory.js index f1af4750b7..d7ba4c5d16 100644 --- a/client/src/model-factory.js +++ b/client/src/model-factory.js @@ -49,10 +49,15 @@ Espo.define('model-factory', [], function () { user: null, create: function (name, callback, context) { - context = context || this; - this.getSeed(name, function (seed) { - var model = new seed(); - callback.call(context, model); + return new Promise(function (resolve) { + context = context || this; + this.getSeed(name, function (seed) { + var model = new seed(); + if (callback) { + callback.call(context, model); + } + resolve(model); + }.bind(this)); }.bind(this)); },