diff --git a/ruby/lib/jam_ruby/models/base_search.rb b/ruby/lib/jam_ruby/models/base_search.rb index 950dab57b..bcd645c22 100644 --- a/ruby/lib/jam_ruby/models/base_search.rb +++ b/ruby/lib/jam_ruby/models/base_search.rb @@ -124,8 +124,8 @@ module JamRuby end def _sort_order(rel) - val = json[KEY_SORT_ORDER] - if SORT_VALS[1] == val + val = json[self.class::KEY_SORT_ORDER] + if self.class::SORT_VALS[1] == val locidispid = self.user.last_jam_locidispid || 0 my_locid = locidispid / 1000000 rel = rel.joins("LEFT JOIN geoiplocations AS my_geo ON my_geo.locid = #{my_locid}") @@ -160,7 +160,7 @@ module JamRuby rel = do_search(filter) @page_number = [page.to_i, 1].max - rel = rel.paginate(:page => @page_number, :per_page => PER_PAGE) + rel = rel.paginate(:page => @page_number, :per_page => self.class::PER_PAGE) rel = self.search_includes(rel) @page_count = rel.total_pages @@ -169,7 +169,7 @@ module JamRuby end def reset_filter - self.data_blob = JSON_SCHEMA + self.data_blob = self.class::JSON_SCHEMA self.save end @@ -183,7 +183,7 @@ module JamRuby end def is_blank? - self.data_blob == JSON_SCHEMA + self.data_blob == self.class::JSON_SCHEMA end def description diff --git a/web/app/assets/javascripts/base_search_filter.js.coffee b/web/app/assets/javascripts/base_search_filter.js.coffee deleted file mode 100644 index 788a61233..000000000 --- a/web/app/assets/javascripts/base_search_filter.js.coffee +++ /dev/null @@ -1,227 +0,0 @@ -$ = jQuery -context = window -context.JK ||= {}; - -context.JK.BaseSearchFilter = class BaseSearchFilter - - constructor: () -> - @rest = context.JK.Rest() - @logger = context.JK.logger - @searchFilter = null - @profileUtils = context.JK.ProfileUtils - @helpBubble = context.JK.HelpBubbleHelper - @searchResults = null - @isSearching = false - @pageNumber = 1 - @instrument_logo_map = context.JK.getInstrumentIconMap24() - @searchType = '' - @searchTypeS = '' - @restGet = null - @restPost = null - @searchMeta = null - - init: (app) => - @app = app - @screenBindings = { 'afterShow': this.afterShow, 'afterHide': this.afterHide } - @app.bindScreen(@searchTypeS, @screenBindings) - - @screen = $('#'+@searchTypeS+'-screen') - @resultsListContainer = @screen.find('#'+@searchType+'-search-filter-results-list') - @spinner = @screen.find('.paginate-wait') - - this.registerResultsPagination() - - @screen.find('#btn-'+@searchType+'-search-builder').on 'click', => - this.showBuilder() - - @screen.find('#btn-'+@searchType+'-search-reset').on 'click', => - this.resetFilter() - - afterShow: () => - @screen.find('#'+@searchType+'-search-filter-results').show() - @screen.find('#'+@searchType+'-search-filter-builder').hide() - this.getUserFilterResults() - - showBuilder: () => - @screen.find('#'+@searchType+'-search-filter-results').hide() - @screen.find('#'+@searchType+'-search-filter-builder').show() - @resultsListContainer.empty() - - afterHide: () => - @resultsListContainer.empty() - - renderSearchFilter: () => - $.when(@restGet()).done (sFilter) => - this.loadSearchFilter(sFilter) - - loadSearchFilter: (sFilter) => - - _populateSelectWithKeys: (struct, selection, keys, element) => - element.children().remove() - $.each keys, (idx, value) => - label = struct[value] - blankOption = $ '' - blankOption.text label - blankOption.attr 'value', value - blankOption.attr 'selected', '' if value == selection - element.append(blankOption) - context.JK.dropdown(element) - - _populateSelectIdentifier: (identifier) => - elem = $ '#'+@searchType+'-search-filter-builder select[name='+identifier+']' - struct = gon.band_search_meta[identifier]['map'] - keys = gon.band_search_meta[identifier]['keys'] - this._populateSelectWithKeys(struct, @searchFilter[identifier], keys, elem) - - _populateSelectWithInt: (sourceStruct, selection, element) => - struct = - '-1': 'Any' - $.extend(struct, sourceStruct) - this._populateSelectWithKeys(struct, selection, Object.keys(struct).sort(), element) - - _populateSortOrder: () => - this._populateSelectIdentifier('sort_order') - - _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) -> - n == genre.id) - else - genreMatch = [] - selected = 'checked' if genreMatch.length > 0 - genreHtml = context.JK.fillTemplate(genreTemplate, - id: genre.id - description: genre.description - checked: selected) - @screen.find('#search-filter-genres').append genreHtml - - _populateInstruments: () => - @screen.find('#search-filter-instruments').empty() - @rest.getInstruments().done (instruments) => - $.each instruments, (index, instrument) => - 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) -> - yn = inst.instrument_id == instrument.id - proficiency = inst.proficiency_level if yn - yn) - selected = 'checked' if instMatch.length > 0 - instrumentHtml = context.JK.fillTemplate(instrumentTemplate, - id: instrument.id - description: instrument.description - checked: selected) - @screen.find('#search-filter-instruments').append instrumentHtml - profsel = '#search-filter-instruments tr[data-instrument-id="'+instrument.id+'"] select' - jprofsel = @screen.find(profsel) - jprofsel.val(proficiency) - context.JK.dropdown(jprofsel) - return true - - _builderSelectValue: (identifier) => - elem = $ '#'+@searchType+'-search-filter-builder select[name='+identifier+']' - elem.val() - - _builderSelectMultiValue: (identifier) => - vals = [] - elem = $ '#search-filter-'+identifier+' input[type=checkbox]:checked' - if 'instruments' == identifier - elem.each (idx) -> - row = $(this).parent().parent() - instrument = - instrument_id: row.data('instrument-id') - proficiency_level: row.find('select').val() - vals.push instrument - else - elem.each (idx) -> - vals.push $(this).val() - vals - - willSearch: (reload) => - return false if @isSearching - @isSearching = true - if reload - @pageNumber = 1 - @screen.find('#'+@searchType+'-search-filter-spinner').show() - @resultsListContainer.empty() - @screen.find('#'+@searchType+'-search-filter-builder').hide() - @screen.find('#'+@searchType+'-search-filter-results').show() - true - - didSearch: (response) => - this.loadSearchFilter(response.filter_json) - @searchResults = response - @screen.find('#'+@searchType+'-search-filter-spinner').hide() - this.renderResultsPage() - @screen.find('.paginate-wait').hide() - @isSearching = false - - resetFilter: () => - if this.willSearch(true) - @restPost({ filter: 'reset' }).done(this.didSearch) - - cancelFilter: () => - this.resetFilter() - - getUserFilterResults: () => - if this.willSearch(true) - @restGet('results=true').done(this.didSearch) - - performSearch: () => - if this.willSearch(true) - $.each @searchMeta.filter_keys.single, (index, key) => - @searchFilter[key] = this._builderSelectValue(key) - $.each @searchMeta.filter_keys.multi, (index, key) => - @searchFilter[key] = this._builderSelectMultiValue(key) - @restPost({ filter: JSON.stringify(@searchFilter), page: @pageNumber }).done(this.didSearch) - - renderResultsHeader: () => - @screen.find('#'+@searchType+'-search-filter-description').html(@searchResults.description) - if @searchResults.is_blank_filter - @screen.find('#btn-'+@searchType+'-search-reset').hide() - else - @screen.find('#btn-'+@searchType+'-search-reset').show() - - renderResultsPage: () => - - _formatLocation: (band) -> - if band.city and band.state - band.city + ', ' + band.state - else if band.city - band.city - else if band.regionname - band.regionname - else - 'Location Unavailable' - - friendRequestCallback: (user_id)=> - # TODO: - - paginate: () => - if @pageNumber < @searchResults.page_count && this.willSearch(false) - @screen.find('.paginate-wait').show() - @pageNumber += 1 - @rest.postBandSearchFilter({ filter: JSON.stringify(@searchFilter), page: @pageNumber }).done(this.didSearch) - return true - false - - registerResultsPagination: () => - _resultsListContainer = @resultsListContainer - _headerHeight = @screen.find('#'+@searchType+'-search-filter-results-header').height() - _paginator = this.paginate - - @screen.find('.content-body-scroller').scroll -> - if _resultsListContainer.is(':visible') - jthis = $(this) - wintop = jthis.scrollTop() - winheight = jthis.innerHeight() - docheight = jthis[0].scrollHeight - _headerHeight - scrollTrigger = 0.98; - if ((wintop / (docheight - winheight)) >= scrollTrigger) - _paginator()