diff --git a/ruby/lib/jam_ruby/models/musician_search.rb b/ruby/lib/jam_ruby/models/musician_search.rb index e99c02549..2df73822b 100644 --- a/ruby/lib/jam_ruby/models/musician_search.rb +++ b/ruby/lib/jam_ruby/models/musician_search.rb @@ -92,6 +92,8 @@ module JamRuby KEY_AGES => [AGE_COUNTS[0]] } JSON_SCHEMA_KEYS = JSON_SCHEMA.keys + MULTI_VALUE_KEYS = JSON_SCHEMA.collect { |kk,vv| vv.is_a?(Array) ? kk : nil }.compact + SINGLE_VALUE_KEYS = JSON_SCHEMA.keys - MULTI_VALUE_KEYS def self.user_search_filter(user) unless ms = user.musician_search diff --git a/web/app/assets/javascripts/musician_search_filter.js.coffee b/web/app/assets/javascripts/musician_search_filter.js.coffee index 474c9fb56..3b2969d33 100644 --- a/web/app/assets/javascripts/musician_search_filter.js.coffee +++ b/web/app/assets/javascripts/musician_search_filter.js.coffee @@ -149,8 +149,21 @@ context.JK.MusicianSearchFilter = class MusicianSearchFilter elem = $ '#musician-search-filter-builder select[name='+identifier+']' elem.val() + _selectedMultiValue: (identifier) => + if 'instruments' == identifier + [] + else + elem = $ '#musician-search-filter-builder select[name='+identifier+'] input[type=checkbox]:checked' + vals = [] + elem.each (idx) -> + vals.push($ this.val()) + vals + performSearch: () => - $.each gon.musician_search_filter['filter_keys'], (index, key) => - @searchFilter[key] = this._selectedValue('sort_order') + $.each gon.musician_search_filter.filter_keys.single, (index, key) => + @searchFilter[key] = this._selectedValue(key) + $.each gon.musician_search_filter.filter_keys.multi, (index, key) => + @searchFilter[key] = this._selectedMultiValue(key) + @logger.debug("performSearch: "+JSON.stringify(@searchFilter)) \ No newline at end of file diff --git a/web/app/controllers/spikes_controller.rb b/web/app/controllers/spikes_controller.rb index c1e012283..b43df2dee 100644 --- a/web/app/controllers/spikes_controller.rb +++ b/web/app/controllers/spikes_controller.rb @@ -63,7 +63,11 @@ class SpikesController < ApplicationController def musician_search_filter gon.musician_search_filter = { - filter_keys: MusicianSearch::JSON_SCHEMA_KEYS, + filter_keys: { + keys: MusicianSearch::JSON_SCHEMA_KEYS, + multi: MusicianSearch::MULTI_VALUE_KEYS, + single: MusicianSearch::SINGLE_VALUE_KEYS, + }, sort_order: { keys: MusicianSearch::SORT_VALS, map: MusicianSearch::SORT_ORDERS