Module: LlmCostTracker::DashboardFilterOptionsHelper

Included in:
ApplicationHelper
Defined in:
app/helpers/llm_cost_tracker/dashboard_filter_options_helper.rb

Constant Summary collapse

MAX_FILTER_OPTIONS =
100

Instance Method Summary collapse

Instance Method Details

#filter_options_for(column, filter_params: params) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
# File 'app/helpers/llm_cost_tracker/dashboard_filter_options_helper.rb', line 7

def filter_options_for(column, filter_params: params)
  source = LlmCostTracker::Dashboard::Params.to_hash(filter_params).symbolize_keys
  scope_params = source.merge(
    column => nil, format: nil, page: nil, per: nil, sort: nil
  )
  values = LlmCostTracker::Dashboard::Filter.call(params: scope_params)
                                            .where.not(column => [nil, ""])
                                            .distinct.order(column).limit(MAX_FILTER_OPTIONS).pluck(column)
  current = source[column].presence
  values.unshift(current) if current && !values.include?(current)
  values
end