Class: LcpRuby::Dsl::SearchBuilder

Inherits:
Object
  • Object
show all
Includes:
SourceLocationCapture
Defined in:
lib/lcp_ruby/dsl/presenter_builder.rb

Instance Method Summary collapse

Methods included from SourceLocationCapture

capture_source_loc

Constructor Details

#initializeSearchBuilder

Returns a new instance of SearchBuilder.



1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 1089

def initialize
  @enabled = true
  @searchable_fields_list = nil
  @placeholder_value = nil
  @filters = []
  @auto_search_value = nil
  @debounce_ms_value = nil
  @min_query_length_value = nil
  @default_scope_value = nil
  @advanced_filter_hash = nil
  @parameters = []
  @columns_value = nil
  @responsive_value = nil
end

Instance Method Details

#advanced_filter(&block) ⇒ Object



1156
1157
1158
1159
1160
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 1156

def advanced_filter(&block)
  builder = AdvancedFilterBuilder.new
  builder.instance_eval(&block)
  @advanced_filter_hash = builder.to_hash
end

#auto_search(value = true) ⇒ Object



1117
1118
1119
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 1117

def auto_search(value = true)
  @auto_search_value = value
end

#columns(value) ⇒ Object



1141
1142
1143
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 1141

def columns(value)
  @columns_value = value
end

#debounce_ms(value) ⇒ Object



1121
1122
1123
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 1121

def debounce_ms(value)
  @debounce_ms_value = value
end

#default_scope(value) ⇒ Object



1129
1130
1131
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 1129

def default_scope(value)
  @default_scope_value = value.to_s
end

#enabled(value) ⇒ Object



1104
1105
1106
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 1104

def enabled(value)
  @enabled = value
end

#filter(name, label:, default: false, scope: nil) ⇒ Object



1133
1134
1135
1136
1137
1138
1139
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 1133

def filter(name, label:, default: false, scope: nil)
  filter_hash = { "name" => name.to_s, "label" => label }
  filter_hash["_label_source_loc"] = capture_source_loc
  filter_hash["default"] = true if default
  filter_hash["scope"] = scope.to_s if scope
  @filters << filter_hash
end

#min_query_length(value) ⇒ Object



1125
1126
1127
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 1125

def min_query_length(value)
  @min_query_length_value = value
end

#parameter(name, type:, field: nil, **opts) ⇒ Object



1149
1150
1151
1152
1153
1154
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 1149

def parameter(name, type:, field: nil, **opts)
  param_hash = { "name" => name.to_s, "type" => type.to_s }
  param_hash["field"] = field.to_s if field
  opts.each { |k, v| param_hash[k.to_s] = v.is_a?(Symbol) ? v.to_s : HashUtils.stringify_deep(v) }
  @parameters << param_hash
end

#placeholder(value) ⇒ Object



1112
1113
1114
1115
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 1112

def placeholder(value)
  @placeholder_value = value
  @placeholder_source_loc = capture_source_loc
end

#responsive(value) ⇒ Object



1145
1146
1147
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 1145

def responsive(value)
  @responsive_value = value
end

#searchable_fields(*fields) ⇒ Object



1108
1109
1110
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 1108

def searchable_fields(*fields)
  @searchable_fields_list = fields.flatten.map(&:to_s)
end

#to_hashObject



1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 1162

def to_hash
  hash = { "enabled" => @enabled }
  hash["searchable_fields"] = @searchable_fields_list if @searchable_fields_list
  hash["placeholder"] = @placeholder_value if @placeholder_value
  hash["auto_search"] = @auto_search_value unless @auto_search_value.nil?
  hash["debounce_ms"] = @debounce_ms_value if @debounce_ms_value
  hash["min_query_length"] = @min_query_length_value if @min_query_length_value
  hash["default_scope"] = @default_scope_value if @default_scope_value
  hash["predefined_filters"] = @filters unless @filters.empty?
  hash["columns"] = @columns_value if @columns_value
  hash["responsive"] = HashUtils.stringify_deep(@responsive_value) if @responsive_value
  hash["parameters"] = @parameters unless @parameters.empty?
  hash["advanced_filter"] = @advanced_filter_hash if @advanced_filter_hash
  hash
end