Sha256: ff6d70f45ab01363d6b1f8d5d76af100bbf2a527a01c1df3bfa9b627d1ee6841

Contents?: true

Size: 1.3 KB

Versions: 17

Compression:

Stored size: 1.3 KB

Contents

# frozen_string_literal: true

module Karafka
  module Web
    module Ui
      module Models
        # Model representing group of jobs
        #
        # It simplifies filtering on running jobs and others, etc
        class Jobs
          include Enumerable
          extend Forwardable

          # Last three methods are needed to provide sorting
          def_delegators :@jobs_array, :empty?, :size, :map!, :sort_by!, :reverse!

          # @param jobs_array [Array<Job>] all jobs we want to enclose
          def initialize(jobs_array)
            @jobs_array = jobs_array
          end

          # @return [Jobs] running jobs
          def running
            select { |job| job.status == 'running' }
          end

          # @return [Jobs] pending jobs
          def pending
            select { |job| job.status == 'pending' }
          end

          # Creates a new Jobs object with selected jobs
          # @param block [Proc] select proc
          # @return [Jobs] selected jobs enclosed with the Jobs object
          def select(&block)
            self.class.new(super(&block))
          end

          # Allows for iteration over jobs
          # @param block [Proc] block to call for each job
          def each(&block)
            @jobs_array.each(&block)
          end
        end
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
karafka-web-0.10.4 lib/karafka/web/ui/models/jobs.rb
karafka-web-0.10.3 lib/karafka/web/ui/models/jobs.rb
karafka-web-0.10.2 lib/karafka/web/ui/models/jobs.rb
karafka-web-0.10.1 lib/karafka/web/ui/models/jobs.rb
karafka-web-0.10.0 lib/karafka/web/ui/models/jobs.rb
karafka-web-0.10.0.rc2 lib/karafka/web/ui/models/jobs.rb
karafka-web-0.10.0.rc1 lib/karafka/web/ui/models/jobs.rb
karafka-web-0.10.0.beta1 lib/karafka/web/ui/models/jobs.rb
karafka-web-0.9.1 lib/karafka/web/ui/models/jobs.rb
karafka-web-0.9.0 lib/karafka/web/ui/models/jobs.rb
karafka-web-0.9.0.rc3 lib/karafka/web/ui/models/jobs.rb
karafka-web-0.9.0.rc2 lib/karafka/web/ui/models/jobs.rb
karafka-web-0.9.0.rc1 lib/karafka/web/ui/models/jobs.rb
karafka-web-0.8.2 lib/karafka/web/ui/models/jobs.rb
karafka-web-0.8.1 lib/karafka/web/ui/models/jobs.rb
karafka-web-0.8.0 lib/karafka/web/ui/models/jobs.rb
karafka-web-0.8.0.rc1 lib/karafka/web/ui/models/jobs.rb