Sha256: 8eec66c562cc33e6ea23a049317a24a2193f17cbe1362f111dc11bf055a87b58

Contents?: true

Size: 1022 Bytes

Versions: 4

Compression:

Stored size: 1022 Bytes

Contents

module Dovico
  class TimeEntryFormatter

    def initialize(projects)
      @projects = projects
    end

    def format_entries(time_entries)
      text = ""
      time_entries.map do |time_entry|
        text += "#{}"
        time_entry_text(time_entry)
      end.join("\n")
    end

    private
    attr_accessor :projects

    def time_entry_text(time_entry)
      project, task = project_task(time_entry.project_id, time_entry.task_id)

      progress_bar_width = (time_entry.total_hours.to_f * 2).to_i
      sprintf("%s [%s] %s : [%8s] %2sh %s %s",
        time_entry.date,
        "×" * progress_bar_width,
        " " * [16 - progress_bar_width, 0].max,
        time_entry.formal_sheet_status,
        time_entry.total_hours,
        project.name,
        task.name,
      )
    end

    def project_task(project_id, task_id)
      project = projects.select{ |project| project.id == project_id }.first
      task = project.tasks.select{ |task| task.id == task_id }.first

      [project, task]
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
dovico-1.4.0 lib/dovico/model/time_entry_formatter.rb
dovico-1.3.0 lib/dovico/model/time_entry_formatter.rb
dovico-1.2.0 lib/dovico/model/time_entry_formatter.rb
dovico-1.1.0 lib/dovico/model/time_entry_formatter.rb