module Ecoportal module API class V1 class Job class Status attr_reader :id, :progress def initialize(id, complete, errored, progress) @id = id @complete = complete @errored = errored @progress = progress || 0 end def started? progress.positive? end def progressing?(prev) progress_increase(prev).positive? end def complete?(total = nil) return @complete if total.nil? progress >= total end def pending(total) return 1 unless total return 0 if total <= progress total - progress end def progress_increase(prev = 0) prev = prev.progress if prev.is_a?(self.class) prev ||= 0 progress - prev end def errored? @errored end def to_s msg = complete? ? "Completed" : "In progress" msg = "Errored" if errored? msg << " with #{progress} done." msg end end end end end end