Skip to content

Instantly share code, notes, and snippets.

@1gor
Forked from jgaskins/gantt_chart.rb
Created February 16, 2019 13:25
Show Gist options
  • Select an option

  • Save 1gor/6d482070dd1b1be765d8908f2340e4c9 to your computer and use it in GitHub Desktop.

Select an option

Save 1gor/6d482070dd1b1be765d8908f2340e4c9 to your computer and use it in GitHub Desktop.
Nested render caching in Clearwater
class GanttChart
include Clearwater::Component
include Clearwater::CachedRender
attr_reader :tasks
def initialize(tasks)
@tasks = tasks
end
def should_render?(previous)
!tasks.equal?(previous.tasks)
end
def render
div([
TaskList.new(tasks),
])
end
end
class TaskList
include Clearwater::Component
include Clearwater::CachedRender
attr_reader :task
def initialize(task)
@task = task
end
def should_render?(previous)
!task.equal?(previous.task)
end
def render
div([
task.title,
])
end
end
class TaskList
include Clearwater::Component
include Clearwater::CachedRender
attr_reader :tasks
def initialize(tasks)
@tasks = tasks
end
def should_render?(previous)
!tasks.equal?(previous.tasks)
end
def render
ul(tasks.map { |task|
li({ key: task.id }, Task.new(task))
})
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment