VRFS-3036 more refactoring

This commit is contained in:
Jonathan Kolyer 2015-05-07 18:08:36 +00:00
parent 13c1c5311e
commit 6fb07d8a31
2 changed files with 5 additions and 232 deletions

View File

@ -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

View File

@ -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 = $ '<option value=""></option>'
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()