class XcMetricsAggregator::CategoriesService

Attributes

device_service[R]
percentile_service[R]

Public Class Methods

new(bundle_id, json) click to toggle source
# File lib/xc_metrics_aggregator/service/categories_service.rb, line 7
def initialize(bundle_id, json)
    @json = json
    @bundle_id = bundle_id
    @device_service = DevicesService.new bundle_id, json
    @percentile_service = PercentilesService.new bundle_id, json
end

Public Instance Methods

categories() click to toggle source
# File lib/xc_metrics_aggregator/service/categories_service.rb, line 22
def categories
    @json["categories"].map { |json| Category.new json }
end
get_available_dataset(section_name, device, percentile) click to toggle source
# File lib/xc_metrics_aggregator/service/categories_service.rb, line 35
def get_available_dataset(section_name, device, percentile)
    section = categories.map { |category| 
        category.sections.find { |section| 
            section.display_name == section_name
        }
    }.flatten.compact.first
    if section.nil?
        return nil
    end

    datasets = section.datasets.select do |dataset| 
        available_device = device ? dataset.filter_criteria.device == device.identifier : true
        available_percentile = percentile ? dataset.filter_criteria.percentile == percentile.identifier : true
        available_device && available_percentile && !dataset.points.empty?
    end.last
    datasets
end
get_dataset(section_name, device, percentile) click to toggle source
# File lib/xc_metrics_aggregator/service/categories_service.rb, line 26
def get_dataset(section_name, device, percentile)
    section = categories.map { |category| category.sections.find { |section| section.display_name == section_name } }.first
    dataset = section.datasets.find do |dataset| 
        dataset.filter_criteria.device == device.identifier \
        && dataset.filter_criteria.percentile == percentile.identifier
    end
end
get_section(section_name) click to toggle source
# File lib/xc_metrics_aggregator/service/categories_service.rb, line 53
def get_section(section_name)
    section = categories.map { |category| 
        category.sections.find { |section| 
            section.display_name == section_name
        }
    }.flatten.compact.first
    section
end
structure() click to toggle source
# File lib/xc_metrics_aggregator/service/categories_service.rb, line 14
def structure
    structure = XcMetricsAggregator::TableStructure.new
    structure.title = @bundle_id
    structure.headings = headings
    structure.rows = rows
    structure
end

Private Instance Methods

headings() click to toggle source
# File lib/xc_metrics_aggregator/service/categories_service.rb, line 73
def headings
    ["category", "section", "unit"]
end
rows() click to toggle source
# File lib/xc_metrics_aggregator/service/categories_service.rb, line 63
def rows
    categories.map do |category| 
        [
            category.display_name, 
            category.sections.map{ |s| s.display_name }.join("\n"), 
            category.sections.map{ |s| s.unit.display_name }.join("\n")
        ] 
    end
end