def update(opts={})
time_specified = opts[:sources].find { |source| source[:time] }
times = opts[:sources].map {|s| s[:time]}.sort.uniq if time_specified
sources = opts[:sources].map { |source|
source[:name]
}.join(':')
case
when time_specified && times.size == 1
values = "#{times.first}:" + opts[:sources].map { |s|
s[:value]
}.join(':')
args = ["--template", sources, values]
@backend.update(@filename, *args)
when time_specified && times.size > 1
times.each do |t|
points = opts[:sources].find_all { |source| source[:time] == t }
sources = points.map { |p|
p[:name]
}.join(':')
values = "#{t}:" + points.map { |p|
p[:value]
}.join(':')
args = ["--template", sources, values]
@backend.update(@filename, *args)
end
when !time_specified
values = "N:" + opts[:sources].map { |source|
source[:value]
}.join(':')
args = ["--template", sources, values]
@backend.update(@filename, *args)
end
true
end