vrfs988: refactoring search results; added fans/bands result template handling

This commit is contained in:
Jonathan Kolyer 2014-01-11 23:34:23 -06:00
parent a4816fecfd
commit da980ce699
4 changed files with 67 additions and 24 deletions

View File

@ -46,6 +46,7 @@ module JamRuby
User.musicians
end
@results = rel.where("(name_tsv @@ to_tsquery('jamenglish', ?))", tsquery).limit(10)
@results
end
def initialize(search_results=nil)

View File

@ -59,12 +59,23 @@
context.JK.SearchResultScreen.searchResults(response, false)
}
function resultDivVisibility(val, isSidebar) {
if (isSidebar) {
$('div[layout=sidebar user-id=' + val.id + '].sidebar-search-connected').hide();
$('div[layout=sidebar user-id=' + val.id + '].sidebar-search-result').show();
} else {
$('div[user-id=' + val.id + '].search-connected').hide();
$('div[user-id=' + val.id + '].search-result').show();
}
}
context.JK.SearchResultScreen.searchResults = function(response, isSidebar) {
var resultCount=0;
var selector;
if (response.search_type === 'musicians') {
resultCount = response.musicians.length;
// TODO: generalize this for each search result type (band, musician, et. al.)
var selector = isSidebar ? "#template-sidebar-search-result" : "#template-search-musicians-result";
selector = isSidebar ? "#template-musicians-sidebar-search-result" : "#template-musicians-search-result";
$.each(response.musicians, function(index, val) {
// fill in template for Connect pre-click
var template = $(selector).html();
@ -73,11 +84,9 @@
avatar_url: context.JK.resolveAvatarUrl(val.photo_url),
profile_url: "/#/profile/" + val.id,
userName: val.name,
location: val.location
location: val.location,
instruments: getInstrumentHtml(val.instruments)
};
if (!isSidebar) {
args['instruments'] = getInstrumentHtml(val.instruments);
}
selector = isSidebar ? '#sidebar-search-results' : '#search-results';
$(selector).append(context.JK.fillTemplate(template, args));
@ -93,16 +102,7 @@
selector = isSidebar ? '#sidebar-search-results' : '#search-results';
$(selector).append(invitationSentHtml);
// initialize visibility of the divs
if (isSidebar) {
$('div[layout=sidebar user-id=' + val.id + '].sidebar-search-connected').hide();
$('div[layout=sidebar user-id=' + val.id + '].sidebar-search-result').show();
} else {
$('div[user-id=' + val.id + '].search-connected').hide();
$('div[user-id=' + val.id + '].search-result').show();
}
// wire up button click handler if search result is not a friend or the current user
// wire up button click handler if search result is not a friend or the current use
if (isSidebar) {
var $sidebar = $('div[layout=sidebar] div[user-id=' + val.id + ']');
if (!val.is_friend && val.id !== context.JK.currentUserId) {
@ -118,13 +118,14 @@
$('div[user-id=' + val.id + ']').find('.btn-connect-friend').hide();
}
}
resultDivVisibility(val, isSidebar);
});
} else if (response.search_type === 'bands') {
} else if (response.search_type === 'fans') {
resultCount = response.fans.length;
$.each(response.fans, function(index, val) {
resultCount = response.bands.length;
$.each(response.bands, function(index, val) {
// fill in template for Connect pre-click
var template = $('#template-search-fans-result').html();
selector = isSidebar ? "#template-bands-sidebar-search-result" : "#template-bands-search-result";
var template = $(selector).html();
var searchResultHtml = context.JK.fillTemplate(template, {
userId: val.id,
avatar_url: context.JK.resolveAvatarUrl(val.photo_url),
@ -133,8 +134,23 @@
location: val.location
});
$('#search-results').append(searchResultHtml);
// initialize visibility of the divs
$('div[user-id=' + val.id + '].search-result').show();
resultDivVisibility(val, isSidebar);
});
} else if (response.search_type === 'fans') {
resultCount = response.fans.length;
$.each(response.fans, function(index, val) {
// fill in template for Connect pre-click
selector = isSidebar ? "#template-fans-sidebar-search-result" : "#template-fans-search-result";
var template = $(selector).html();
var searchResultHtml = context.JK.fillTemplate(template, {
userId: val.id,
avatar_url: context.JK.resolveAvatarUrl(val.photo_url),
profile_url: "/#/profile/" + val.id,
userName: val.name,
location: val.location
});
$('#search-results').append(searchResultHtml);
resultDivVisibility(val, isSidebar);
});
}
if (isSidebar) {

View File

@ -23,7 +23,7 @@
</div>
</div>
<script type="text/template" id="template-search-musicians-result">
<script type="text/template" id="template-musicians-search-result">
<div user-id="{userId}" class="search-result">
<a href="#" class="avatar-small"><img src="{avatar_url}" /></a>
<div class="search-result-name"><a href="{profile_url}">{userName}</a><br />
@ -49,7 +49,17 @@
</div>
</script>
<script type="text/template" id="template-search-fans-result">
<script type="text/template" id="template-bands-search-result">
<div user-id="{userId}" class="search-result">
<a href="#" class="avatar-small"><img src="{avatar_url}" /></a>
<div class="search-result-name"><a href="{profile_url}">{userName}</a><br />
<span class="search-result-location">{location}</span>
</div>
<br clear="left" />
</div>
</script>
<script type="text/template" id="template-fans-search-result">
<div user-id="{userId}" class="search-result">
<a href="#" class="avatar-small"><img src="{avatar_url}" /></a>
<div class="search-result-name"><a href="{profile_url}">{userName}</a><br />

View File

@ -124,7 +124,7 @@
</div>
<!-- Search result template -->
<script type="text/template" id="template-sidebar-search-result">
<script type="text/template" id="template-musicians-sidebar-search-result">
<div user-id="{userId}" class="sidebar-search-result">
<a class="avatar-small"><img src="{avatar_url}" /></a>
<div class="result-name"><a href="{profile_url}">{userName}</a><br />
@ -134,6 +134,22 @@
<br clear="all" />
</div>
</script>
<script type="text/template" id="template-bands-sidebar-search-result">
<div user-id="{userId}" class="sidebar-search-result">
<a class="avatar-small"><img src="{avatar_url}" /></a>
<div class="result-name"><a href="{profile_url}">{userName}</a><br />
<span class="result-location">{location}</span>
</div><br />
</div>
</script>
<script type="text/template" id="template-fans-sidebar-search-result">
<div user-id="{userId}" class="sidebar-search-result">
<a class="avatar-small"><img src="{avatar_url}" /></a>
<div class="result-name"><a href="{profile_url}">{userName}</a><br />
<span class="result-location">{location}</span>
</div><br />
</div>
</script>
<!-- Friend panel template -->
<script type="text/template" id="template-friend-panel">