このコミットが含まれているのは:
2026-10-29 22:26:49 +09:00
コミット 7fc2faeaf0
4個のファイルの変更、21行の追加、11行の削除
+12 -8
ファイルの表示
@@ -79,7 +79,7 @@ class CountsTableQuery
selected = expressions.each_with_index.map do |expression, index|
"#{ expression } AS a#{ index }"
end
source = population.scope
source = summary_population.scope
source = source.joins(axes.joins) unless axes.joins.empty?
sql = if expressions.empty?
source.except(:select).select('COUNT(DISTINCT v.id) AS count').to_sql
@@ -165,7 +165,7 @@ class CountsTableQuery
other_count: axes.rows.length, direction: :column)
.map { _1.merge(kind: 'grand_total') }
end
totals = CountsPivotTotals.new(population, axes, row_headers, column_headers).call
totals = CountsPivotTotals.new(summary_population, axes, row_headers, column_headers).call
{ group_count: total,
visible_output_count: axes.rows.empty? ? 1 : total,
column_values:, row_headers:, column_headers:, pivot_totals: totals,
@@ -223,6 +223,10 @@ class CountsTableQuery
@params.merge('execution_at' => population.at.iso8601(6)), authorisation_flg: false)
end
def summary_population
unrestricted_population
end
def record_counts
return @record_counts if @record_counts
@@ -247,7 +251,7 @@ class CountsTableQuery
@record_counts = { total: total.to_i, denied: denied.to_i, visible: }
end
def output_totals(visible_rows)
def output_totals visible_rows
return @output_totals if @output_totals
if HistoryAccess.admin?
@@ -289,7 +293,7 @@ class CountsTableQuery
def locale = @locale ||= Locale.find_by!(code: @params.fetch('locale', 'ja'))
def limited_columns(prefix)
def limited_columns prefix
keys = axes.columns.each_index.map { "a#{ axes.rows.length + _1 }" }
return [[]] if keys.empty?
@@ -315,9 +319,9 @@ class CountsTableQuery
values
end
def measure_relation(values)
def measure_relation values
row_expressions = axes.expressions.first(axes.rows.length)
source = population.scope.except(:select, :order)
source = summary_population.scope.except(:select, :order)
fields = axes.rows + axes.columns.first(values.length)
joins = axes.joins(fields.map { _1.fetch('field') })
source = source.joins(joins) unless joins.empty?
@@ -332,7 +336,7 @@ class CountsTableQuery
source.select(Arel.sql(selected.join(', '))).to_sql
end
def axis_order_sql(key, direction = 'asc', qualifier: nil)
def axis_order_sql key, direction = 'asc', qualifier: nil
column = qualifier ? "#{ qualifier }.#{ key }" : key
expression = column
if axes.all.fetch(key.delete_prefix('a').to_i).fetch('field') == 'category'
@@ -345,7 +349,7 @@ class CountsTableQuery
"#{ column } IS NULL ASC, #{ expression } #{ direction.upcase }"
end
def measure_values(key)
def measure_values key
records = QueryState.records(@params, 'measures').select { _1['key'] == key }
raise ArgumentError if records.empty?
raise ArgumentError unless records.map { _1['axis'] }.sort == (0...records.length).to_a