Class: Board
Instance Attribute Summary collapse
-
#backlog_statuses ⇒ Object
readonly
Returns the value of attribute backlog_statuses.
-
#cycletime ⇒ Object
Returns the value of attribute cycletime.
-
#expedited_priority_names ⇒ Object
Returns the value of attribute expedited_priority_names.
-
#possible_statuses ⇒ Object
readonly
Returns the value of attribute possible_statuses.
-
#project_config ⇒ Object
Returns the value of attribute project_config.
-
#raw ⇒ Object
readonly
Returns the value of attribute raw.
-
#sprints ⇒ Object
readonly
Returns the value of attribute sprints.
-
#visible_columns ⇒ Object
readonly
Returns the value of attribute visible_columns.
Instance Method Summary collapse
- #id ⇒ Object
-
#initialize(raw:, possible_statuses: StatusCollection.new) ⇒ Board
constructor
A new instance of Board.
- #kanban? ⇒ Boolean
- #name ⇒ Object
- #project_id ⇒ Object
- #scrum? ⇒ Boolean
- #server_url_prefix ⇒ Object
- #status_ids_from_column(column) ⇒ Object
- #status_ids_in_or_right_of_column(column_name) ⇒ Object
- #url ⇒ Object
Constructor Details
#initialize(raw:, possible_statuses: StatusCollection.new) ⇒ Board
Returns a new instance of Board.
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/jirametrics/board.rb', line 7 def initialize raw:, possible_statuses: StatusCollection.new @raw = raw @board_type = raw['type'] @possible_statuses = possible_statuses @sprints = [] @expedited_priority_names = [] columns = raw['columnConfig']['columns'] # For a Kanban board, the first column here will always be called 'Backlog' and will NOT be # visible on the board. If the board is configured to have a kanban backlog then it will have # statuses matched to it and otherwise, there will be no statuses. if kanban? @backlog_statuses = @possible_statuses.(status_ids_from_column columns[0]) do |unknown_status| # There is a status defined as being 'backlog' that is no longer being returned in statuses. # We used to display a warning for this but honestly, there is nothing that anyone can do about it # so now we just quietly ignore it. end columns = columns[1..] else # We currently don't know how to get the backlog status for a Scrum board @backlog_statuses = [] end @visible_columns = columns.filter_map do |column| # It's possible for a column to be defined without any statuses and in this case, it won't be visible. BoardColumn.new column unless status_ids_from_column(column).empty? end end |
Instance Attribute Details
#backlog_statuses ⇒ Object (readonly)
Returns the value of attribute backlog_statuses.
4 5 6 |
# File 'lib/jirametrics/board.rb', line 4 def backlog_statuses @backlog_statuses end |
#cycletime ⇒ Object
Returns the value of attribute cycletime.
5 6 7 |
# File 'lib/jirametrics/board.rb', line 5 def cycletime @cycletime end |
#expedited_priority_names ⇒ Object
Returns the value of attribute expedited_priority_names.
5 6 7 |
# File 'lib/jirametrics/board.rb', line 5 def expedited_priority_names @expedited_priority_names end |
#possible_statuses ⇒ Object (readonly)
Returns the value of attribute possible_statuses.
4 5 6 |
# File 'lib/jirametrics/board.rb', line 4 def possible_statuses @possible_statuses end |
#project_config ⇒ Object
Returns the value of attribute project_config.
5 6 7 |
# File 'lib/jirametrics/board.rb', line 5 def project_config @project_config end |
#raw ⇒ Object (readonly)
Returns the value of attribute raw.
4 5 6 |
# File 'lib/jirametrics/board.rb', line 4 def raw @raw end |
#sprints ⇒ Object (readonly)
Returns the value of attribute sprints.
4 5 6 |
# File 'lib/jirametrics/board.rb', line 4 def sprints @sprints end |
#visible_columns ⇒ Object (readonly)
Returns the value of attribute visible_columns.
4 5 6 |
# File 'lib/jirametrics/board.rb', line 4 def visible_columns @visible_columns end |
Instance Method Details
#id ⇒ Object
77 78 79 |
# File 'lib/jirametrics/board.rb', line 77 def id @raw['id'].to_i end |
#kanban? ⇒ Boolean
69 70 71 |
# File 'lib/jirametrics/board.rb', line 69 def kanban? @board_type == 'kanban' end |
#name ⇒ Object
88 89 90 |
# File 'lib/jirametrics/board.rb', line 88 def name @raw['name'] end |
#project_id ⇒ Object
81 82 83 84 85 86 |
# File 'lib/jirametrics/board.rb', line 81 def project_id location = @raw['location'] return nil unless location location['id'] if location['type'] == 'project' end |
#scrum? ⇒ Boolean
73 74 75 |
# File 'lib/jirametrics/board.rb', line 73 def scrum? @board_type == 'scrum' end |
#server_url_prefix ⇒ Object
37 38 39 40 41 |
# File 'lib/jirametrics/board.rb', line 37 def server_url_prefix raise "Cannot parse self: #{@raw['self'].inspect}" unless @raw['self'] =~ /^(https?:\/\/.+)\/rest\// $1 end |
#status_ids_from_column(column) ⇒ Object
48 49 50 |
# File 'lib/jirametrics/board.rb', line 48 def status_ids_from_column column column['statuses']&.collect { |status| status['id'].to_i } || [] end |
#status_ids_in_or_right_of_column(column_name) ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/jirametrics/board.rb', line 52 def status_ids_in_or_right_of_column column_name status_ids = [] found_it = false @visible_columns.each do |column| # Check both the current name and also the original raw name in case anonymization has happened. found_it = true if column.name == column_name || column.raw['name'] == column_name status_ids += column.status_ids if found_it end unless found_it column_names = @visible_columns.collect { |c| c.name.inspect }.join(', ') raise "No visible column with name: #{column_name.inspect} Possible options are: #{column_names}" end status_ids end |
#url ⇒ Object
43 44 45 46 |
# File 'lib/jirametrics/board.rb', line 43 def url # Strangely, the URL isn't anywhere in the returned data so we have to fabricate it. "#{server_url_prefix}/secure/RapidBoard.jspa?rapidView=#{id}" end |