29 lines
654 B
Ruby
29 lines
654 B
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
module LabelsAsHash
|
||
|
extend ActiveSupport::Concern
|
||
|
|
||
|
def labels_as_hash(target = nil, params = {})
|
||
|
available_labels = LabelsFinder.new(
|
||
|
current_user,
|
||
|
params
|
||
|
).execute
|
||
|
|
||
|
label_hashes = available_labels.as_json(only: [:title, :color])
|
||
|
|
||
|
if target&.respond_to?(:labels)
|
||
|
already_set_labels = available_labels & target.labels
|
||
|
if already_set_labels.present?
|
||
|
titles = already_set_labels.map(&:title)
|
||
|
label_hashes.each do |hash|
|
||
|
if titles.include?(hash['title'])
|
||
|
hash[:set] = true
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
label_hashes
|
||
|
end
|
||
|
end
|