Class: Trello::Label
Overview
A colored Label attached to a card
Constant Summary collapse
- SYMBOL_TO_STRING =
{ id: 'id', name: 'name', board_id: 'idBoard', color: 'color', uses: 'uses' }
Instance Attribute Summary collapse
Attributes inherited from BasicData
Class Method Summary collapse
-
.create(options) ⇒ Object
Create a new card and save it on Trello.
-
.find(id, params = {}) ⇒ Object
Find a specific card by its id.
-
.label_colours ⇒ Object
Label colours.
Instance Method Summary collapse
-
#delete ⇒ Object
Delete this card.
-
#save ⇒ Object
Saves a record.
-
#update! ⇒ Object
Update an existing record.
-
#update_fields(fields) ⇒ Object
Update the fields of a label.
Methods inherited from BasicData
#==, client, #initialize, many, one, parse, parse_many, path_name, #refresh!, register_attributes, save
Constructor Details
This class inherits a constructor from Trello::BasicData
Instance Attribute Details
#color ⇒ String
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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/trello/label.rb', line 9 class Label < BasicData register_attributes :id, :name, :board_id, :uses, readonly: [ :id, :uses, :board_id ] validates_presence_of :id, :uses, :board_id, :name validates_length_of :name, in: 1..16384 SYMBOL_TO_STRING = { id: 'id', name: 'name', board_id: 'idBoard', color: 'color', uses: 'uses' } class << self # Find a specific card by its id. def find(id, params = {}) client.find(:label, id, params) end # Create a new card and save it on Trello. def create() client.create(:label, 'name' => [:name], 'idBoard' => [:board_id], 'color' => [:color], ) end # Label colours def label_colours %w{green yellow orange red purple blue sky lime pink black} end end define_attribute_methods [:color] def color @attributes[:color] end def color= colour unless Label.label_colours.include? colour errors.add(:label, "color '#{colour}' does not exist") return Trello.logger.warn "The label colour '#{colour}' does not exist." end self.send(:"color_will_change!") unless colour == @attributes[:color] @attributes[:color] = colour end # Update the fields of a label. # # Supply a hash of stringkeyed data retrieved from the Trello API representing # a label. def update_fields(fields) attributes[:id] = fields['id'] attributes[:name] = fields['name'] attributes[:color] = fields['color'] attributes[:board_id] = fields['idBoard'] attributes[:uses] = fields['uses'] self end # Returns a reference to the board this label is currently connected. one :board, path: :boards, using: :board_id # Saves a record. def save # If we have an id, just update our fields. return update! if id client.post("/labels", { name: name, color: color, idBoard: board_id, }).json_into(self) end # Update an existing record. # Warning, this updates all fields using values already in memory. If # an external resource has updated these fields, you should refresh! # this object before making your changes, and before updating the record. def update! @previously_changed = changes # extract only new values to build payload payload = Hash[changes.map { |key, values| [SYMBOL_TO_STRING[key.to_sym].to_sym, values[1]] }] @changed_attributes.clear client.put("/labels/#{id}", payload) end # Delete this card def delete client.delete("/labels/#{id}") end end |
#id ⇒ String
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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/trello/label.rb', line 9 class Label < BasicData register_attributes :id, :name, :board_id, :uses, readonly: [ :id, :uses, :board_id ] validates_presence_of :id, :uses, :board_id, :name validates_length_of :name, in: 1..16384 SYMBOL_TO_STRING = { id: 'id', name: 'name', board_id: 'idBoard', color: 'color', uses: 'uses' } class << self # Find a specific card by its id. def find(id, params = {}) client.find(:label, id, params) end # Create a new card and save it on Trello. def create() client.create(:label, 'name' => [:name], 'idBoard' => [:board_id], 'color' => [:color], ) end # Label colours def label_colours %w{green yellow orange red purple blue sky lime pink black} end end define_attribute_methods [:color] def color @attributes[:color] end def color= colour unless Label.label_colours.include? colour errors.add(:label, "color '#{colour}' does not exist") return Trello.logger.warn "The label colour '#{colour}' does not exist." end self.send(:"color_will_change!") unless colour == @attributes[:color] @attributes[:color] = colour end # Update the fields of a label. # # Supply a hash of stringkeyed data retrieved from the Trello API representing # a label. def update_fields(fields) attributes[:id] = fields['id'] attributes[:name] = fields['name'] attributes[:color] = fields['color'] attributes[:board_id] = fields['idBoard'] attributes[:uses] = fields['uses'] self end # Returns a reference to the board this label is currently connected. one :board, path: :boards, using: :board_id # Saves a record. def save # If we have an id, just update our fields. return update! if id client.post("/labels", { name: name, color: color, idBoard: board_id, }).json_into(self) end # Update an existing record. # Warning, this updates all fields using values already in memory. If # an external resource has updated these fields, you should refresh! # this object before making your changes, and before updating the record. def update! @previously_changed = changes # extract only new values to build payload payload = Hash[changes.map { |key, values| [SYMBOL_TO_STRING[key.to_sym].to_sym, values[1]] }] @changed_attributes.clear client.put("/labels/#{id}", payload) end # Delete this card def delete client.delete("/labels/#{id}") end end |
Class Method Details
.create(options) ⇒ Object
Create a new card and save it on Trello.
30 31 32 33 34 35 36 |
# File 'lib/trello/label.rb', line 30 def create() client.create(:label, 'name' => [:name], 'idBoard' => [:board_id], 'color' => [:color], ) end |
.find(id, params = {}) ⇒ Object
Find a specific card by its id.
25 26 27 |
# File 'lib/trello/label.rb', line 25 def find(id, params = {}) client.find(:label, id, params) end |
.label_colours ⇒ Object
Label colours
39 40 41 |
# File 'lib/trello/label.rb', line 39 def label_colours %w{green yellow orange red purple blue sky lime pink black} end |
Instance Method Details
#delete ⇒ Object
Delete this card
102 103 104 |
# File 'lib/trello/label.rb', line 102 def delete client.delete("/labels/#{id}") end |
#save ⇒ Object
Saves a record.
77 78 79 80 81 82 83 84 85 86 |
# File 'lib/trello/label.rb', line 77 def save # If we have an id, just update our fields. return update! if id client.post("/labels", { name: name, color: color, idBoard: board_id, }).json_into(self) end |
#update! ⇒ Object
Update an existing record. Warning, this updates all fields using values already in memory. If an external resource has updated these fields, you should refresh! this object before making your changes, and before updating the record.
92 93 94 95 96 97 98 99 |
# File 'lib/trello/label.rb', line 92 def update! @previously_changed = changes # extract only new values to build payload payload = Hash[changes.map { |key, values| [SYMBOL_TO_STRING[key.to_sym].to_sym, values[1]] }] @changed_attributes.clear client.put("/labels/#{id}", payload) end |
#update_fields(fields) ⇒ Object
Update the fields of a label.
Supply a hash of stringkeyed data retrieved from the Trello API representing a label.
64 65 66 67 68 69 70 71 |
# File 'lib/trello/label.rb', line 64 def update_fields(fields) attributes[:id] = fields['id'] attributes[:name] = fields['name'] attributes[:color] = fields['color'] attributes[:board_id] = fields['idBoard'] attributes[:uses] = fields['uses'] self end |