このコミットが含まれているのは:
2026-10-28 20:57:22 +09:00
コミット 614a12e7aa
18個のファイルの変更、175行の追加、107行の削除
+12
ファイルの表示
@@ -29,6 +29,18 @@ class CountsDefaults
end
end.join(' ')
end
if ['posts', 'tags'].include?(resource)
fields = CountsResourceDefinition.new(resource).output_fields
selected = details.fetch('columns').split(' ')
details['columns'] = fields.map { _1[:key] }.select { selected.include?(_1) }.join(' ')
order = lambda do |items, prefix|
items.flat_map do |field|
path = [prefix, field[:key]].compact.join('.')
[path, *order.call(field.fetch(:children, []), path)]
end
end
details['order'] = order.call(fields, nil).join(' ')
end
['latest', 'history'].each do |definition|
result << { definition:, mode: 'details', params: details }
end
+1
ファイルの表示
@@ -165,6 +165,7 @@ class CountsExportProjection
return @labels.fetch("kind:#{ value }", value) if key == 'kind'
return @labels.fetch("category:#{ value }", value) if key == 'category'
if ['language', 'script'].include?(key) && value.is_a?(Hash)
return @labels.fetch("language:#{ value[:code] }", value[:code]) if key == 'language'
return @labels.fetch("#{ key }:#{ value[:code] }",
value[:name] || @labels.fetch('notRegistered', ''))
end
+26 -8
ファイルの表示
@@ -115,13 +115,23 @@ class CountsResourceDefinition
def self.aliases_key(code) = "aliases_#{ code.to_s.downcase.tr('-', '_') }"
def name_columns
@name_columns ||= Locale.select(:code, :language_code, :script_code).order(:code)
.flat_map do |locale|
codes = { code: locale.code, language_code: locale.language_code,
script_code: locale.script_code }
[{ key: self.class.name_key(locale.code), label: 'counts:localeName', name_locale: codes },
{ key: self.class.aliases_key(locale.code), label: 'counts:localeAliases',
name_locale: codes, multiple_values: true }]
@name_columns ||= begin
locales = Locale.joins(:language)
.select('locales.code', 'locales.language_code', 'locales.script_code')
.order('languages.created_at ASC', 'languages.code ASC', 'locales.code ASC')
codes = locales.map do |locale|
{ code: locale.code, language_code: locale.language_code,
script_code: locale.script_code }
end
names = codes.map do |locale|
{ key: self.class.name_key(locale[:code]), label: 'counts:localeName',
name_locale: locale }
end
aliases = codes.map do |locale|
{ key: self.class.aliases_key(locale[:code]), label: 'counts:localeAliases',
name_locale: locale, multiple_values: true }
end
names + aliases
end
end
@@ -200,7 +210,7 @@ class CountsResourceDefinition
keys.flat_map do |child|
next [] if child == 'aliases' && key == 'tags'
if child == 'name' && ['tags', 'parents'].include?(key)
next [{ key: child, label: CHILD_LABELS.fetch(child) }, *name_columns]
next name_columns
end
label = key == 'members' && child == 'tagId' ?
'counts:columns.resourceId' : CHILD_LABELS.fetch(child)
@@ -218,6 +228,13 @@ class CountsResourceDefinition
def condition_fields
fields = output_fields
if resource == 'tags'
fields = fields.map do |field|
next field unless field[:key] == 'parents'
field.merge(children: field[:children] + [
{ key: 'name', label: 'history:name' },
{ key: 'names', label: 'counts:columns.names', children: child_fields('names') }])
end
fields += [{ key: 'name', label: 'counts:columns.name' },
{ key: 'names', label: 'counts:columns.names', children: child_fields('names') },
{ key: 'aliases', label: 'tags:aliases', children: child_fields('aliases') }]
@@ -227,6 +244,7 @@ class CountsResourceDefinition
next field unless field[:key] == 'tags'
field.merge(children: field[:children] + [
{ key: 'name', label: 'history:name' },
{ key: 'names', label: 'counts:columns.names', children: child_fields('names') },
{ key: 'aliases', label: 'tags:aliases', children: child_fields('aliases') }])
end
+4 -2
ファイルの表示
@@ -58,7 +58,6 @@ class CountsTableExport
def body(progress: nil, phase: nil)
Enumerator.new do |output|
ApplicationRecord.transaction(isolation: :repeatable_read) do
@language_names = Language.pluck(:code, :name).to_h
processed = 0
started = false
first = true
@@ -256,6 +255,9 @@ class CountsTableExport
def summary_value(value, index, page)
field = @query.axes.all.fetch(index).fetch('field')
return @labels.fetch('bot', '') if field == 'user' && value.nil?
if ['language_code', 'source_language_code'].include?(field)
return @labels.fetch("language:#{ value }", value)
end
names = page[:axis_labels].fetch("a#{ index }", {})
name = field == 'user' ? names[value.to_s] : names.fetch(value.to_s, value)
@@ -327,7 +329,7 @@ class CountsTableExport
return @query.population.timezone.utc_to_local(value.utc).iso8601
end
if key == 'language_code' || key == 'source_language_code'
return @language_names[value]
return @labels.fetch("language:#{ value }", value)
end
if value.is_a?(Hash)
return value.to_h { |field, item| [@labels.fetch(camel(field.to_s), ''), csv_logical(field, item)] }
+1 -1
ファイルの表示
@@ -391,7 +391,7 @@ class CountsTableQuery
when 'user'
User.where(id: values).pluck(:id, :name).to_h.transform_keys(&:to_s)
when 'language_code', 'source_language_code'
Language.where(code: values).pluck(:code, :name).to_h
values.to_h { [_1, _1] }
when 'tags'
labels = tag_labels(values)
@axis_names["a#{ index }"] = @tag_names