Class: Flipper::UI::Decorators::Feature

Inherits:
SimpleDelegator
  • Object
show all
Includes:
Comparable
Defined in:
lib/flipper/ui/decorators/feature.rb

Constant Summary collapse

StateSortMap =
{
  on: 1,
  conditional: 2,
  off: 3,
}.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#descriptionObject

Internal: Used to preload description if descriptions_source is configured for Flipper::UI.



16
17
18
# File 'lib/flipper/ui/decorators/feature.rb', line 16

def description
  @description
end

Instance Method Details

#<=>(other) ⇒ Object



79
80
81
82
83
84
85
# File 'lib/flipper/ui/decorators/feature.rb', line 79

def <=>(other)
  if state == other.state
    key <=> other.key
  else
    StateSortMap[state] <=> StateSortMap[other.state]
  end
end

#color_classObject



23
24
25
26
27
28
29
30
31
32
# File 'lib/flipper/ui/decorators/feature.rb', line 23

def color_class
  case feature.state
  when :on
    'bg-success'
  when :off
    'bg-danger'
  when :conditional
    'bg-warning'
  end
end

#gate_state_titleObject



58
59
60
61
62
63
64
65
66
67
# File 'lib/flipper/ui/decorators/feature.rb', line 58

def gate_state_title
  case feature.state
  when :on
    "Fully enabled"
  when :conditional
    "Conditionally enabled"
  else
    "Disabled"
  end
end

#gates_in_wordsObject



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/flipper/ui/decorators/feature.rb', line 34

def gates_in_words
  return "Fully Enabled" if feature.boolean_value

  statuses = []

  if feature.actors_value.count > 0
    statuses << %Q(<span data-toggle="tooltip" data-placement="bottom" title="#{Util.to_sentence(feature.actors_value.to_a)}">) + Util.pluralize(feature.actors_value.count, 'actor', 'actors') + "</span>"
  end

  if feature.groups_value.count > 0
    statuses << %Q(<span data-toggle="tooltip" data-placement="bottom" title="#{Util.to_sentence(feature.groups_value.to_a)}">) + Util.pluralize(feature.groups_value.count, 'group', 'groups') + "</span>"
  end

  if feature.percentage_of_actors_value > 0
    statuses << "#{feature.percentage_of_actors_value}% of actors"
  end

  if feature.percentage_of_time_value > 0
    statuses << "#{feature.percentage_of_time_value}% of time"
  end

  Util.to_sentence(statuses)
end

#pretty_enabled_gate_namesObject



69
70
71
# File 'lib/flipper/ui/decorators/feature.rb', line 69

def pretty_enabled_gate_names
  enabled_gates.map { |gate| Util.titleize(gate.key) }.sort.join(', ')
end

#pretty_nameObject

Public: Returns name titleized.



19
20
21
# File 'lib/flipper/ui/decorators/feature.rb', line 19

def pretty_name
  @pretty_name ||= Util.titleize(name)
end