Class: FirebaseStats::Wrapper

Inherits:
Object
  • Object
show all
Defined in:
lib/wrapper.rb

Overview

Transforms the parsed Firebase file into something more user friendly

Instance Method Summary collapse

Constructor Details

#initialize(stats, platform = :all) ⇒ Wrapper

Returns a new instance of Wrapper.

Parameters:



11
12
13
14
15
# File 'lib/wrapper.rb', line 11

def initialize(stats, platform = :all)
  super()
  @stats = stats
  @platform = platform
end

Instance Method Details

#devices(friendly: false) ⇒ Object



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/wrapper.rb', line 60

def devices(friendly: false)
  filtered = filter_device(@stats.data[:devices], @platform)
  cleaned = []
  filtered.each do |row|
    device = {
      'model' => row['Device model'],
      'count' => row['Users'].to_i
    }
    # if friendly && ((@platform == :all) || (@platform == :android))
    #   device['friendly'] = Android::Devices.search_by_model(row['Device Model']).name
    # end
    cleaned << device
  end
  cleaned
end

#os_groupedObject



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/wrapper.rb', line 31

def os_grouped
  raw_os = @stats.data[:os_version]

  grouped = case @platform
            when :ios
              ios_os_group(raw_os)
            when :android
              android_os_group(raw_os)
            else
              android_os_group(raw_os).merge ios_os_group(raw_os)
            end
  computed = []
  grouped.each do |k, v|
    version_name = k
    total = v.map { |version| version['Users'].to_i }.reduce(0, :+)
    computed << { 'version' => version_name, 'total' => total, 'percentage' => as_percentage(os_total, total.to_f) }
  end
  computed
end

#os_totalObject



51
52
53
54
55
56
57
58
# File 'lib/wrapper.rb', line 51

def os_total
  filtered = filter_os(@stats.data[:os_version], @platform)
  total = 0
  filtered.each do |row|
    total += row['Users'].to_i
  end
  total
end

#os_versionObject



17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/wrapper.rb', line 17

def os_version
  filtered = filter_os(@stats.data[:os_version], @platform)

  cleaned = []
  filtered.each do |row|
    cleaned << {
      'version' => row['OS with version'],
      'count' => row['Users'].to_i,
      'percentage' => as_percentage(os_total, row['Users'].to_f)
    }
  end
  cleaned
end