Skip to content

Instantly share code, notes, and snippets.

@coxandrew
Created September 18, 2012 18:34
Show Gist options
  • Save coxandrew/3744913 to your computer and use it in GitHub Desktop.
Save coxandrew/3744913 to your computer and use it in GitHub Desktop.
class BacklogWidget < Apotomo::Widget
PivotalTracker::Client.token = APP_CONFIG["pivotal"]["api_key"]
def display
project_config = APP_CONFIG["pivotal"]["projects"]["firefly"]
project = PivotalTracker::Project.find(project_config["id"])
iteration = PivotalTracker::Iteration.current(project)
@filter_labels = get_labels(params[:labels])
@stories = get_stories(iteration, @filter_labels)
render
end
private
def get_labels(label_param)
label_param.split(",").map(&:strip) if label_param.present?
end
def get_stories(iteration, filter_labels)
return iteration.stories unless filter_labels
return iteration.stories.select do |story|
story_labels = story.labels.split(",")
(story_labels & filter_labels).sort == filter_labels.uniq.sort
end
end
end
# Given a URL like:
#
# /backlog?labels=cart,shopping
#
# return stories that have at least "cart" and "shopping as labels.
if params[:labels].present?
@labels = params[:labels].split(",").map { |label| label.strip }
@stories = iteration.stories.select do |story|
labels = story.labels.split(",")
(labels & @labels).sort == @labels.uniq.sort
end
else
@stories = iteration.stories
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment