diff --git a/lib/server.js b/lib/server.js index 86561a7..3d00935 100644 --- a/lib/server.js +++ b/lib/server.js @@ -1,7 +1,8 @@ ReactiveTable = {}; ReactiveTable.publish = function (name, collectionOrFunction, selectorOrFunction, settings) { - Meteor.publish("reactive-table-" + name, function (publicationId, filters, fields, options, rowsPerPage) { + Meteor.publishComposite("reactive-table-" + name, function(publicationId, filters, fields, options, rowsPerPage) { + var collection; var selector; @@ -13,7 +14,7 @@ ReactiveTable.publish = function (name, collectionOrFunction, selectorOrFunction if (!(collection instanceof Mongo.Collection)) { console.log("ReactiveTable.publish: no collection to publish"); - return []; + return undefined; } if (_.isFunction(selectorOrFunction)) { @@ -89,10 +90,28 @@ ReactiveTable.publish = function (name, collectionOrFunction, selectorOrFunction }); initializing = false; - self.ready(); + // this is called by the containing publishComposite + // self.ready(); self.onStop(function () { handle.stop(); }); + + var compResult = { + find: function () { + return cursor; + } + } + + if (settings.children){ + if (_.isFunction(settings.children)) { + compResult.children = settings.children.call(this); + } else { + compResult.children = settings.children; + } + } + + return compResult; + }); }; diff --git a/package.js b/package.js index e2b0ece..136352b 100644 --- a/package.js +++ b/package.js @@ -6,13 +6,14 @@ Package.describe({ }); Package.on_use(function (api) { - api.versionsFrom("METEOR@0.9.0"); + api.versionsFrom("METEOR@1.0"); api.use('templating', 'client'); api.use('jquery', 'client'); api.use('underscore', 'client'); api.use('reactive-var@1.0.3', 'client'); api.use("anti:i18n@0.4.3", 'client'); api.use("mongo@1.0.8", ["server", "client"]); + api.use("reywood:publish-composite", ["server", "client"]); api.use("fortawesome:fontawesome@4.2.0", 'client', {weak: true});