Class: Hyrax::QaSelectService

Inherits:
Object
  • Object
show all
Defined in:
app/services/hyrax/qa_select_service.rb

Overview

This is an abstract class to provide select options from a questioning authority backed authority

Direct Known Subclasses

LicenseService, RightsStatementService

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(authority_name) ⇒ QaSelectService

Returns a new instance of QaSelectService.



7
8
9
# File 'app/services/hyrax/qa_select_service.rb', line 7

def initialize(authority_name)
  @authority = Qa::Authorities::Local.subauthority_for(authority_name)
end

Instance Attribute Details

#authorityObject (readonly)

Returns the value of attribute authority.



5
6
7
# File 'app/services/hyrax/qa_select_service.rb', line 5

def authority
  @authority
end

Instance Method Details

#active?(id) ⇒ Boolean

Returns:

  • (Boolean)


21
22
23
# File 'app/services/hyrax/qa_select_service.rb', line 21

def active?(id)
  authority.find(id).fetch('active')
end

#active_elementsObject



38
39
40
# File 'app/services/hyrax/qa_select_service.rb', line 38

def active_elements
  authority.all.select { |e| e.fetch('active') }
end

#label(id) { ... } ⇒ String

Returns the label for the authority.

Parameters:

  • id (String)

Yields:

  • when no ‘term’ value is present for the id

Yield Returns:

  • (String)

    an alternate label to return

Returns:

  • (String)

    the label for the authority

Raises:

  • (KeyError)

    when no ‘term’ value is present for the id



34
35
36
# File 'app/services/hyrax/qa_select_service.rb', line 34

def label(id, &block)
  authority.find(id).fetch('term', &block)
end

#select_active_optionsObject



17
18
19
# File 'app/services/hyrax/qa_select_service.rb', line 17

def select_active_options
  active_elements.map { |e| [e[:label], e[:id]] }
end

#select_all_optionsObject



11
12
13
14
15
# File 'app/services/hyrax/qa_select_service.rb', line 11

def select_all_options
  authority.all.map do |element|
    [element[:label], element[:id]]
  end
end