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,
   ...