grid model
by John Allan
JavaScript
(funciton () {
var viewmodel;
viewmodel = {
results: null,
connections: null
};
module.private.handleDataUserSearchBrowse = function (e, data) {
var articleData;
articleData = {};
viewmodel.results = (data.intent === 'search') ? data : viewmodel.results.concat(data);
articleData.action = (data.intent === 'search') ? 'list' : 'append';
articleData.data = processViewmodelResults(articleData.action === 'list' ? viewmodel : data);
PubSub.publish('uiAction.UserSearchGridList', articleData);
};
module.private.handleDataConnectionBrowse = function (e, data) {
if (!generalUtilities.prop(data, 'response.status')) {
viewmodel.connections = generalUtilities.arrayToHash(data.response, 'UserId');
PubSub.publish('uiAction.UserSearchGridList', articleData);
}
};
module.private.handleDataConnectionAdd = function (e, data) {
var articleData, connectionStatus;
articleData = {};
connectionStatus = {
ImFollowing: true,
FollowingMe: (generalUtilities.prop(data, 'connectaction') === 'accept') ? true : false,
Connected: (generalUtilities.prop(data, 'connectaction') === 'accept') ? true : false,
};
viewmodel.connections[data.contact.KnownContactUserId] = connectionStatus;
articleData.action = 'article';
articleData.data = viewmodel.results.filter(function (result) {
result.UserId === data.contact.KnownContactUserId;
});
PubSub.publish('uiAction.UserSearchGridList', articleData);
};
PubSub.subscribe('data.UserSearchBrowse', module.private.handleDataUserSearchBrowse);
PubSub.subscribe('data.ConnectionBrowse', module.private.handleDataConnectionBrowse);
PubSub.subscribe('data.ConnectionAdd', module.private.handleDataConnectionAdd);
//template bindings
PubSub('uiAction.ArticleBind'{
events: 'uiAction.UserSearchGrid',
selector: selectors.gridContainer,
template: userSearchGridCompiled,
...