Thank you for quick response hwillson!
Publication:
if (Meteor.isServer) {
Designs._ensureIndex({
’$**’: ‘text’
});
Meteor.publish(‘designSingle’, (findOneId) => {
check(findOneId, String);
return Designs.find({ styleNumber: findOneId });
});
Meteor.publish(‘designsList’, (indexSearch, Gridlimit, CurrentPg) => {
check(indexSearch, Match.OneOf(String, ‘’));
check(Gridlimit, Number);
check(CurrentPg, Number);
if(indexSearch) {
return Designs.find({
$text: {
$search: indexSearch
}
},
{
limit: 15,
fields: {
score: {
$meta: 'textScore'
}
},
sort: {
score: {
$meta: 'textScore'
}
}
});
} else if (Gridlimit || CurrentPg) {
let limit = Gridlimit || 15;
let skip = (CurrentPg - 1) * Gridlimit;
return Designs.find({}, {
sort: {
createdAt: -1
},
fields: {
'createdAt': 1,
'styleNumber': 1,
'styleRefNo': 1,
'date': 1,
'style.sizerange_id.name': 1,
'style.sizerange_id._id': 1,
'style.basesize_id.name': 1,
'style.designer_id.name': 1,
'style.season_id.name': 1,
'style.customer_id.name': 1,
'style.status_id.name': 1,
'style.description': 1
},
limit: limit,
skip: skip
});
}
});
}
and my grid component subscription code:
this.subscribe('designsList', () => {
return [ this.getReactively('indexQuery'),
this.getReactively('query.limit'),
this.getReactively('query.page')]
}, (err, success) => { this.preloader = false; });
and findOne subscription code: ( resolved in ui.router )
resolve: {
singleDesignSubs: ['$q', '$stateParams', function ($q, $stateParams) {
let designId = $stateParams.designId;
let deferred = $q.defer();
Meteor.subscribe('designSingle', designId, {
onReady: deferred.resolve,
onStop: deferred.reject
});
return deferred.promise;
}]
}
This way grid list inherits every time I click on findOne item and keeps inherited findOne item at the top of the gridlist even while paginating further it wouldnt disappear… If I change my findOne subscription from ui.router into component:
constructor ($scope, $reactive, $stateParams, $timeout) {
‘ngInject’;
this.designId = $stateParams.designId;
this.subscribe(‘designSingle’, () => {return [this.designId]});
}
grid still inherits findOne item but on paginating it disappears and everything comes back to normal but other problem is that if I refresh browser while looking at individual item that item becomes undefined if consoling.log returned object and I cannot do findOne on another collection. If I navigate to any other page and back to single item it works again and object is being returned… does it make any sense?
Also thats my grid objects:
this.helpers({
designsList() {
if(this.indexQuery){
return Designs.find({}, { sort: [['score', 'desc']] });
}else{
return Designs.find({}, { sort: { createdAt: -1 }, limit: this.query.limit });
}
},
countDesigns(){
return Session.get('designsCount');
}
})
so findOne item sticks to designsList() }else{ object
Thank you!