class XcMetricsAggregator::MetricsService

Public Class Methods

new(bundle_id, json) click to toggle source
# File lib/xc_metrics_aggregator/service/metrics_service.rb, line 6
def initialize(bundle_id, json)
    @bundle_id = bundle_id
    @category_service = CategoriesService.new bundle_id, json
end

Public Instance Methods

datasets(section_name) click to toggle source
# File lib/xc_metrics_aggregator/service/metrics_service.rb, line 43
def datasets(section_name)
    section = @category_service.get_section(section_name)
    unless section
        raise StandardError.new("wrong section name")
    end
    section.datasets
end
structures(section_name, device_id, percentile_id, version) click to toggle source
# File lib/xc_metrics_aggregator/service/metrics_service.rb, line 11
def structures(section_name, device_id, percentile_id, version)
    rows = []
    samples = [] 
    index = 0
    datasets(section_name).each do |dataset|
        device_identifier =  dataset.filter_criteria.device
        validated_device = !device_id || device_identifier == device_id
        percentile_identifier =  dataset.filter_criteria.percentile
        validated_percentile = !percentile_id || percentile_identifier == percentile_id

        unless validated_device && validated_percentile
            next
        end
        percentile = @category_service.percentile_service.get_percentile dataset.filter_criteria.percentile
        device = @category_service.device_service.get_device dataset.filter_criteria.device
        rows += dataset.points.map.with_index(index) { |p, i| [i, p.version, device.display_name, percentile.display_name] }
        samples += dataset.points.map.with_index(index) { |p, i| [i, p.summary] }
        index += dataset.points.count
    end

    table_structure = XcMetricsAggregator::TableStructure.new
    table_structure.headings = ["Label", "Version", "Device", "Percentile"]
    table_structure.title = section_name
    table_structure.rows = rows
    structure = XcMetricsAggregator::ChartStructure.new
    structure.series = table_structure
    structure.unit = @category_service.get_section(section_name).unit.display_name
    structure.samples = samples

    structure
end