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