Module: ProMotion::Table::Searchable

Included in:
ProMotion::Table
Defined in:
lib/ProMotion/table/extensions/searchable.rb

Instance Method Summary collapse

Instance Method Details

#create_search_bar(params) ⇒ Object



36
37
38
39
40
# File 'lib/ProMotion/table/extensions/searchable.rb', line 36

def create_search_bar(params)
  search_bar = UISearchBar.alloc.initWithFrame(params[:frame])
  search_bar.autoresizingMask = UIViewAutoresizingFlexibleWidth
  search_bar
end

#make_searchable(params = {}) ⇒ Object Also known as: makeSearchable



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/ProMotion/table/extensions/searchable.rb', line 5

def make_searchable(params={})
  params = set_searchable_param_defaults(params)

  search_bar = create_search_bar(params)

  if params[:search_bar] && params[:search_bar][:placeholder]
    search_bar.placeholder = params[:search_bar][:placeholder]
  end

  @table_search_display_controller = UISearchDisplayController.alloc.initWithSearchBar(search_bar, contentsController: params[:content_controller])
  @table_search_display_controller.delegate = params[:delegate]
  @table_search_display_controller.searchResultsDataSource = params[:data_source]
  @table_search_display_controller.searchResultsDelegate = params[:search_results_delegate]

  self.table_view.tableHeaderView = search_bar
end

#searchDisplayController(controller, shouldReloadTableForSearchString: search_string) ⇒ Object

iOS methods, headless camel case #######



44
45
46
47
# File 'lib/ProMotion/table/extensions/searchable.rb', line 44

def searchDisplayController(controller, shouldReloadTableForSearchString:search_string)
  self.promotion_table_data.search(search_string)
  true
end

#searchDisplayControllerWillBeginSearch(controller) ⇒ Object



56
57
58
59
# File 'lib/ProMotion/table/extensions/searchable.rb', line 56

def searchDisplayControllerWillBeginSearch(controller)
  self.table_view.setScrollEnabled false
  @table_search_display_controller.delegate.will_begin_search if @table_search_display_controller.delegate.respond_to? "will_begin_search"
end

#searchDisplayControllerWillEndSearch(controller) ⇒ Object



49
50
51
52
53
54
# File 'lib/ProMotion/table/extensions/searchable.rb', line 49

def searchDisplayControllerWillEndSearch(controller)
  self.promotion_table_data.stop_searching
  self.table_view.setScrollEnabled true
  self.table_view.reloadData
  @table_search_display_controller.delegate.will_end_search if @table_search_display_controller.delegate.respond_to? "will_end_search"
end

#set_searchable_param_defaults(params) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/ProMotion/table/extensions/searchable.rb', line 23

def set_searchable_param_defaults(params)
  params[:content_controller] ||= params[:contentController]
  params[:data_source] ||= params[:searchResultsDataSource]
  params[:search_results_delegate] ||= params[:searchResultsDelegate]

  params[:frame] ||= CGRectMake(0, 0, 320, 44) # TODO: Don't hardcode this...
  params[:content_controller] ||= self
  params[:delegate] ||= self
  params[:data_source] ||= self
  params[:search_results_delegate] ||= self
  params
end