VRFS-3036 bands to_join builder controls
This commit is contained in:
parent
d76f54b40e
commit
e794ccc7af
|
|
@ -88,8 +88,14 @@ module JamRuby
|
|||
|
||||
def self.search_filter_meta
|
||||
return @@search_meta if @@search_meta
|
||||
toJoinMeta = super(self.json_schema[BAND_SEARCH_TYPE_VALS[0]])
|
||||
toJoinMeta.merge!({
|
||||
KEY_BAND_TYPE => { keys: BAND_TYPE_VALS, map: BAND_TYPES },
|
||||
KEY_PLAY_COMMIT => { keys: PLAY_COMMIT_VALS, map: PLAY_COMMITS },
|
||||
KEY_TOUR_OPTION => { keys: TOUR_OPTION_VALS, map: TOUR_OPTIONS }
|
||||
})
|
||||
@@search_meta = {
|
||||
BAND_SEARCH_TYPE_VALS[0] => super(self.json_schema[BAND_SEARCH_TYPE_VALS[0]]),
|
||||
BAND_SEARCH_TYPE_VALS[0] => toJoinMeta,
|
||||
BAND_SEARCH_TYPE_VALS[1] => super(self.json_schema[BAND_SEARCH_TYPE_VALS[1]],
|
||||
{ keys: HIRE_SORT_VALS, map: HIRE_SORT_ORDERS }),
|
||||
}
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ group :development, :test do
|
|||
|
||||
# gem 'teaspoon'
|
||||
# gem 'teaspoon-jasmine'
|
||||
# gem 'puma'
|
||||
gem 'puma'
|
||||
end
|
||||
group :unix do
|
||||
gem 'therubyracer' #, '0.11.0beta8'
|
||||
|
|
|
|||
|
|
@ -47,6 +47,9 @@ context.JK.BaseSearchFilter = class BaseSearchFilter
|
|||
searchMetaData: () =>
|
||||
@searchMeta
|
||||
|
||||
filterData: () =>
|
||||
@searchFilter.data_blob
|
||||
|
||||
renderSearchFilter: () =>
|
||||
$.when(@restGet()).done (sFilter) =>
|
||||
this.loadSearchFilter(sFilter)
|
||||
|
|
@ -68,7 +71,7 @@ context.JK.BaseSearchFilter = class BaseSearchFilter
|
|||
elem = $ '#'+@searchType+'-search-filter-builder select[name='+identifier+']'
|
||||
struct = this.searchMetaData()[identifier]['map']
|
||||
keys = this.searchMetaData()[identifier]['keys']
|
||||
this._populateSelectWithKeys(struct, @searchFilter[identifier], keys, elem)
|
||||
this._populateSelectWithKeys(struct, this.filterData()[identifier], keys, elem)
|
||||
|
||||
_populateSelectWithInt: (sourceStruct, selection, element) =>
|
||||
struct =
|
||||
|
|
@ -79,14 +82,22 @@ context.JK.BaseSearchFilter = class BaseSearchFilter
|
|||
_populateSortOrder: () =>
|
||||
this._populateSelectIdentifier('sort_order')
|
||||
|
||||
_populateSkill: () =>
|
||||
elem = $ '#musician-search-filter-builder select[name=skill_level]'
|
||||
this._populateSelectWithInt(@profileUtils.skillLevelMap, this.filterData().skill_level.toString(), elem)
|
||||
|
||||
_populateGigs: () =>
|
||||
elem = $ '#musician-search-filter-builder select[name=concert_gigs]'
|
||||
this._populateSelectWithInt(@profileUtils.gigMap, this.filterData().concert_gigs.toString(), elem)
|
||||
|
||||
_populateGenres: () =>
|
||||
@screen.find('#search-filter-genres').empty()
|
||||
@rest.getGenres().done (genres) =>
|
||||
genreTemplate = @screen.find('#template-search-filter-setup-genres').html()
|
||||
selected = ''
|
||||
$.each genres, (index, genre) =>
|
||||
if 0 < @searchFilter.data_blob.genres.length
|
||||
genreMatch = $.grep(@searchFilter.data_blob.genres, (n, i) ->
|
||||
if 0 < this.filterData().genres.length
|
||||
genreMatch = $.grep(this.filterData().genres, (n, i) ->
|
||||
n == genre.id)
|
||||
else
|
||||
genreMatch = []
|
||||
|
|
@ -104,8 +115,8 @@ context.JK.BaseSearchFilter = class BaseSearchFilter
|
|||
instrumentTemplate = @screen.find('#template-search-filter-setup-instrument').html()
|
||||
selected = ''
|
||||
proficiency = '1'
|
||||
if 0 < @searchFilter.data_blob.instruments.length
|
||||
instMatch = $.grep(@searchFilter.data_blob.instruments, (inst, i) ->
|
||||
if 0 < this.filterData().instruments.length
|
||||
instMatch = $.grep(this.filterData().instruments, (inst, i) ->
|
||||
yn = inst.instrument_id == instrument.id
|
||||
proficiency = inst.proficiency_level if yn
|
||||
yn)
|
||||
|
|
@ -179,10 +190,10 @@ context.JK.BaseSearchFilter = class BaseSearchFilter
|
|||
performSearch: () =>
|
||||
if this.willSearch(true)
|
||||
$.each this.searchMetaData().filter_keys.single, (index, key) =>
|
||||
@searchFilter[key] = this._builderSelectValue(key)
|
||||
this.filterData()[key] = this._builderSelectValue(key)
|
||||
$.each this.searchMetaData().filter_keys.multi, (index, key) =>
|
||||
@searchFilter[key] = this._builderSelectMultiValue(key)
|
||||
@restPost({ filter: JSON.stringify(@searchFilter), page: @pageNumber }).done(this.didSearch)
|
||||
this.filterData()[key] = this._builderSelectMultiValue(key)
|
||||
@restPost({ filter: JSON.stringify(this.filterData()), page: @pageNumber }).done(this.didSearch)
|
||||
|
||||
renderResultsHeader: () =>
|
||||
@screen.find('#'+@searchType+'-search-filter-description').html(@searchResults.description)
|
||||
|
|
@ -210,7 +221,7 @@ context.JK.BaseSearchFilter = class BaseSearchFilter
|
|||
if @pageNumber < @searchResults.page_count && this.willSearch(false)
|
||||
@screen.find('.paginate-wait').show()
|
||||
@pageNumber += 1
|
||||
@restPost({ filter: JSON.stringify(@searchFilter), page: @pageNumber }).done(this.didSearch)
|
||||
@restPost({ filter: JSON.stringify(this.filterData()), page: @pageNumber }).done(this.didSearch)
|
||||
return true
|
||||
false
|
||||
|
||||
|
|
@ -255,10 +266,10 @@ context.JK.MusicianSearchFilter = class MusicianSearchFilter extends BaseSearchF
|
|||
|
||||
@searchFilter = JSON.parse(sFilter)
|
||||
args =
|
||||
interests: @searchFilter.data_blob.interests
|
||||
skill_level: @searchFilter.data_blob.skill_level
|
||||
studio_sessions: @searchFilter.data_blob.studio_sessions
|
||||
concert_gigs: @searchFilter.data_blob.concert_gigs
|
||||
interests: this.filterData().interests
|
||||
skill_level: this.filterData().skill_level
|
||||
studio_sessions: this.filterData().studio_sessions
|
||||
concert_gigs: this.filterData().concert_gigs
|
||||
|
||||
template = context.JK.fillTemplate(@screen.find('#template-musician-search-filter').html(), args)
|
||||
|
||||
|
|
@ -288,15 +299,7 @@ context.JK.MusicianSearchFilter = class MusicianSearchFilter extends BaseSearchF
|
|||
|
||||
_populateStudio: () =>
|
||||
elem = $ '#musician-search-filter-builder select[name=studio_sessions]'
|
||||
this._populateSelectWithInt(@profileUtils.studioMap, @searchFilter.data_blob.studio_sessions.toString(), elem)
|
||||
|
||||
_populateGigs: () =>
|
||||
elem = $ '#musician-search-filter-builder select[name=concert_gigs]'
|
||||
this._populateSelectWithInt(@profileUtils.gigMap, @searchFilter.data_blob.concert_gigs.toString(), elem)
|
||||
|
||||
_populateSkill: () =>
|
||||
elem = $ '#musician-search-filter-builder select[name=skill_level]'
|
||||
this._populateSelectWithInt(@profileUtils.skillLevelMap, @searchFilter.data_blob.skill_level.toString(), elem)
|
||||
this._populateSelectWithInt(@profileUtils.studioMap, this.filterData().studio_sessions.toString(), elem)
|
||||
|
||||
_populateAges: () =>
|
||||
@screen.find('#search-filter-ages').empty()
|
||||
|
|
@ -305,9 +308,9 @@ context.JK.MusicianSearchFilter = class MusicianSearchFilter extends BaseSearchF
|
|||
ageTemplate = @screen.find('#template-search-filter-setup-ages').html()
|
||||
selected = ''
|
||||
ageLabel = ages_map[key]
|
||||
if 0 < @searchFilter.data_blob.ages.length
|
||||
if 0 < this.filterData().ages.length
|
||||
key_val = key.toString()
|
||||
ageMatch = $.grep(@searchFilter.data_blob.ages, (n, i) ->
|
||||
ageMatch = $.grep(this.filterData().ages, (n, i) ->
|
||||
n == key_val)
|
||||
selected = 'checked' if ageMatch.length > 0
|
||||
ageHtml = context.JK.fillTemplate(ageTemplate,
|
||||
|
|
@ -534,19 +537,19 @@ context.JK.BandSearchFilter = class BandSearchFilter extends BaseSearchFilter
|
|||
|
||||
_searchFilterArgsToJoin: () =>
|
||||
args =
|
||||
tour_option: @searchFilter.data_blob.tour_option
|
||||
skill_level: @searchFilter.data_blob.skill_level
|
||||
play_commit: @searchFilter.data_blob.play_commit
|
||||
band_type: @searchFilter.data_blob.band_type
|
||||
concert_gigs: @searchFilter.data_blob.concert_gigs
|
||||
tour_option: this.filterData().tour_option
|
||||
skill_level: this.filterData().skill_level
|
||||
play_commit: this.filterData().play_commit
|
||||
band_type: this.filterData().band_type
|
||||
concert_gigs: this.filterData().concert_gigs
|
||||
|
||||
_searchFilterArgsToHire: () =>
|
||||
args =
|
||||
skill_level: @searchFilter.data_blob.skill_level
|
||||
concert_gigs: @searchFilter.data_blob.concert_gigs
|
||||
perform_samples: @searchFilter.data_blob.perform_samples
|
||||
max_cost: @searchFilter.data_blob.max_cost
|
||||
free_gigs: @searchFilter.data_blob.free_gigs
|
||||
skill_level: this.filterData().skill_level
|
||||
concert_gigs: this.filterData().concert_gigs
|
||||
perform_samples: this.filterData().perform_samples
|
||||
max_cost: this.filterData().max_cost
|
||||
free_gigs: this.filterData().free_gigs
|
||||
|
||||
_populateSearchFilterToJoin: () =>
|
||||
this._populateInstruments()
|
||||
|
|
@ -563,8 +566,8 @@ context.JK.BandSearchFilter = class BandSearchFilter extends BaseSearchFilter
|
|||
|
||||
@searchFilter = JSON.parse(sFilter)
|
||||
switch @searchSubType
|
||||
when 'to_join' then args = _searchFilterArgsToJoin()
|
||||
when 'to_hire' then args = _searchFilterArgsToHire()
|
||||
when 'to_join' then args = this._searchFilterArgsToJoin()
|
||||
when 'to_hire' then args = this._searchFilterArgsToHire()
|
||||
|
||||
template = context.JK.fillTemplate(@screen.find('#template-band-search-filter-'+@searchSubType).html(), args)
|
||||
|
||||
|
|
@ -581,8 +584,17 @@ context.JK.BandSearchFilter = class BandSearchFilter extends BaseSearchFilter
|
|||
this._populateSortOrder()
|
||||
|
||||
switch @searchSubType
|
||||
when 'to_join' then _populateSearchFilterToJoin()
|
||||
when 'to_hire' then _populateSearchFilterToHire()
|
||||
when 'to_join' then this._populateSearchFilterToJoin()
|
||||
when 'to_hire' then this._populateSearchFilterToHire()
|
||||
|
||||
_populateBandType: () =>
|
||||
this._populateSelectIdentifier('band_type')
|
||||
|
||||
_populatePlayCommit: () =>
|
||||
this._populateSelectIdentifier('play_commit')
|
||||
|
||||
_populateTourOption: () =>
|
||||
this._populateSelectIdentifier('tour_option')
|
||||
|
||||
_populateSortOrder: () =>
|
||||
this._populateSelectIdentifier('sort_order')
|
||||
|
|
@ -642,3 +654,7 @@ context.JK.BandSearchFilter = class BandSearchFilter extends BaseSearchFilter
|
|||
|
||||
registerResultsPagination: () =>
|
||||
super()
|
||||
|
||||
filterData: () =>
|
||||
super()[@searchSubType]
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,6 @@
|
|||
object @search
|
||||
|
||||
node :search_type do |ss| ss.search_type end
|
||||
|
||||
if @search.is_a?(MusicianSearch)
|
||||
if @search.is_a?(BaseSearch)
|
||||
|
||||
node :page_count do |foo|
|
||||
@search.page_count
|
||||
|
|
@ -19,7 +17,8 @@ if @search.is_a?(MusicianSearch)
|
|||
node :filter_json do |foo|
|
||||
@search.to_json
|
||||
end
|
||||
|
||||
|
||||
if @search.is_a? MusicianSearch
|
||||
child(:results => :musicians) {
|
||||
attributes :id, :first_name, :last_name, :name, :city, :state, :country, :online, :musician, :photo_url, :biography, :regionname, :score, :full_score
|
||||
|
||||
|
|
@ -61,10 +60,6 @@ if @search.is_a?(MusicianSearch)
|
|||
|
||||
elsif @search.is_a?(BandSearch)
|
||||
|
||||
node :page_count do |foo|
|
||||
@search.page_count
|
||||
end
|
||||
|
||||
child(:results => :bands) {
|
||||
attributes :id, :name, :city, :state, :country, :photo_url, :biography, :logo_url, :website
|
||||
|
||||
|
|
@ -79,21 +74,13 @@ elsif @search.is_a?(BandSearch)
|
|||
child :genres => :genres do
|
||||
attributes :genre_id, :description
|
||||
end
|
||||
|
||||
child :users => :players do |pl|
|
||||
node :user_id do |uu| uu.id end
|
||||
node :photo_url do |uu| uu.photo_url end
|
||||
node :name do |uu| uu.name end
|
||||
node :instruments do |uu| uu.instruments.map(&:id).join(',') end
|
||||
end
|
||||
|
||||
node :follow_count do |band| @search.follow_count(band) end
|
||||
node :recording_count do |band| @search.record_count(band) end
|
||||
node :session_count do |band| @search.session_count(band) end
|
||||
}
|
||||
end
|
||||
|
||||
else
|
||||
|
||||
node :search_type do |ss| ss.search_type end
|
||||
|
||||
if @search.session_invite_search?
|
||||
child(:results => :suggestions) {
|
||||
node :value do |uu| uu.name end
|
||||
|
|
|
|||
|
|
@ -1,15 +1,15 @@
|
|||
= javascript_include_tag "profile_utils"
|
||||
= javascript_include_tag "member_search_filter"
|
||||
= stylesheet_link_tag "client/band"
|
||||
#band_search_spike
|
||||
= render "clients/band_search_filter"
|
||||
#bands-screen
|
||||
= render "clients/band_search_filter"
|
||||
|
||||
javascript:
|
||||
var initialized = false;
|
||||
$(document).on('JAMKAZAM_READY', function(e, data) {
|
||||
setTimeout(function() {
|
||||
window.band_search_filter = new JK.BandSearchFilter();
|
||||
band_search_filter.init();
|
||||
band_search_filter.init(data.app);
|
||||
band_search_filter.afterShow();
|
||||
}, 1)
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue