spout 0.10.0.beta8 → 0.10.0.beta9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 97f132b532821e57396f65c1752060dac1a33c14
4
- data.tar.gz: f87fc93a7f9a60c34e81f602c47a770bbd29eba9
3
+ metadata.gz: 1510bf903f7dada97ac4f63538881fe5cddb0825
4
+ data.tar.gz: 8678041008439bd0eaea5e163eb6d4fc6337469b
5
5
  SHA512:
6
- metadata.gz: 7c9ed942121864d02d02bdcdac9115e8b04093e368f31dfd9a4e37541726f5ff803654a93b6d62c872c314efb40f4757bf759f6d1098281dc91f090bbd201229
7
- data.tar.gz: 741c7cfd6b2f365aff937f8d2508a04aaaef81fad297cca5773f3c2a82e1759cda0aba69a68d6e72a6d6547a39151f8915d64ac7e0d688ee5f605dd5a39fe216
6
+ metadata.gz: 390ca815b08364e3d3f8e068dd1104d784bdc48eb85bd2da9fc6e3d44562aec5ac75e22524d0580c1f0dba8ffec341021e463ac9b57d627ac7ae6b8e85d846f4
7
+ data.tar.gz: fa7bf7eb06e667c972354bd7b81f4d32e7f0c37de0a7115c06f484361943a7a9b737020b9434c4b7d132403035aa9c9f1caf89fccdfd3cf87e8b0357163fe935
data/CHANGELOG.md CHANGED
@@ -9,6 +9,9 @@
9
9
  - Display names that use mixed case are unaffected
10
10
  - `spout import --domains` now marks options as `"missing": true` if the option value starts with a dot `.` or a dash `-`
11
11
  - Display names for domain options are also changed to title case if they are all caps
12
+ - **Graph Command**
13
+ - Graphs and tables no longer display missing codes that do not exist in the dataset for variables of type `choices`
14
+ - Graphs and tables now remove domain values for variables of type `integer` or `numeric`
12
15
  - **Testing Changes**
13
16
  - Tests now include checks to assure that variable display_name fields don't exceed 255 length requirement
14
17
  - `include Spout::Tests::VariableDisplayNameLength`
@@ -60,7 +60,7 @@ module Spout
60
60
 
61
61
  begin
62
62
  run_all
63
- rescue Interrupt, IRB::Abort
63
+ rescue Interrupt
64
64
  puts "\nINTERRUPTED".colorize(:red)
65
65
  end
66
66
  end
@@ -209,7 +209,7 @@ module Spout
209
209
  require 'spout/commands/images'
210
210
  argv = []
211
211
  argv << "--clean" if @clean
212
- Spout::Commands::Images.new(argv, [], [], @version, [], true, @url, @slug, @token)
212
+ Spout::Commands::Images.new([], [], [], @version, argv, true, @url, @slug, @token)
213
213
  puts "\r Image Generation: " + "DONE ".colorize(:green)
214
214
  end
215
215
 
@@ -9,6 +9,7 @@ require 'spout/helpers/subject_loader'
9
9
  require 'spout/helpers/chart_types'
10
10
  require 'spout/helpers/config_reader'
11
11
  require 'spout/helpers/send_file'
12
+ require 'spout/version'
12
13
 
13
14
  module Spout
14
15
  module Commands
@@ -74,7 +75,8 @@ module Spout
74
75
  def load_current_progress
75
76
  @progress_file = File.join(@graphs_folder, ".progress.json")
76
77
  @progress = JSON.parse(File.read(@progress_file)) rescue @progress = {}
77
- @progress = {} if @clean
78
+ @progress = {} if !@progress.kind_of?(Hash) or @clean or @progress['SPOUT_VERSION'] != Spout::VERSION::STRING
79
+ @progress['SPOUT_VERSION'] = Spout::VERSION::STRING
78
80
  end
79
81
 
80
82
  def save_current_progress
@@ -137,7 +139,12 @@ module Spout
137
139
 
138
140
  if @deploy_mode and not @progress[variable_name]['uploaded'] == true
139
141
  response = send_to_server(chart_json_file)
140
- @progress[variable_name]['uploaded'] = (response.kind_of?(Hash) and response['upload'] == 'success')
142
+ if response.kind_of?(Hash) and response['upload'] == 'success'
143
+ @progress[variable_name]['uploaded'] = true
144
+ else
145
+ puts "\nUPLOAD FAILED: ".colorize(:red) + File.basename(chart_json_file)
146
+ @progress[variable_name]['uploaded'] = false
147
+ end
141
148
  end
142
149
 
143
150
  save_current_progress
@@ -52,7 +52,8 @@ module Spout
52
52
  def load_current_progress
53
53
  @progress_file = File.join(@images_folder, ".progress.json")
54
54
  @progress = JSON.parse(File.read(@progress_file)) rescue @progress = {}
55
- @progress = {} if @clean
55
+ @progress = {} if !@progress.kind_of?(Hash) or @clean or @progress['SPOUT_VERSION'] != Spout::VERSION::STRING
56
+ @progress['SPOUT_VERSION'] = Spout::VERSION::STRING
56
57
  end
57
58
 
58
59
  def save_current_progress
@@ -125,7 +126,9 @@ module Spout
125
126
  end
126
127
  run_phantom_js(variable_name, "#{variable_name}-lg.png", 600, tmp_options_file) if @sizes.size == 0 or @sizes.include?('lg')
127
128
  run_phantom_js(variable_name, "#{variable_name}.png", 75, tmp_options_file) if @sizes.size == 0 or @sizes.include?('sm')
128
- @progress[variable_name]['uploaded'] = (@deploy_mode and @progress[variable_name]['failed'] != true)
129
+
130
+ @progress[variable_name]['uploaded'] = (@deploy_mode and @progress[variable_name]['upload_failed'] != true)
131
+
129
132
  save_current_progress
130
133
  end
131
134
 
@@ -161,6 +164,7 @@ module Spout
161
164
  if response.kind_of?(Hash) and response['upload'] == 'success'
162
165
  @progress[variable_name]['uploaded_files'] << png_name
163
166
  else
167
+ puts "\nUPLOAD FAILED: ".colorize(:red) + File.basename(png_name)
164
168
  @progress[variable_name]['upload_failed'] = true
165
169
  end
166
170
  end
@@ -72,6 +72,9 @@ module Spout
72
72
 
73
73
  filtered_subjects = subjects.select{ |s| s.send(method) != nil and s.send(chart_type) != nil }.sort_by(&chart_type.to_sym)
74
74
 
75
+ all_subject_values = filtered_subjects.collect(&method.to_sym).compact.sort
76
+ domain_json = remove_unused_missing_codes_from_domain(domain_json, all_subject_values.uniq)
77
+
75
78
  categories = [:quartile_one, :quartile_two, :quartile_three, :quartile_four].collect do |quartile|
76
79
  bucket = filtered_subjects.send(quartile).collect(&chart_type.to_sym)
77
80
  "#{bucket.min} to #{bucket.max}"
@@ -168,6 +171,8 @@ module Spout
168
171
  return unless domain_json = get_domain(json)
169
172
 
170
173
  filtered_subjects = subjects.select{ |s| s.send(method) != nil and s.send(chart_type) != nil }.sort_by(&chart_type.to_sym)
174
+ all_subject_values = filtered_subjects.collect(&method.to_sym).compact.sort
175
+ domain_json = remove_unused_missing_codes_from_domain(domain_json, all_subject_values.uniq)
171
176
 
172
177
  categories = [:quartile_one, :quartile_two, :quartile_three, :quartile_four].collect do |quartile|
173
178
  bucket = filtered_subjects.send(quartile).collect(&chart_type.to_sym)
@@ -216,6 +221,8 @@ module Spout
216
221
  units = 'percent'
217
222
  series = []
218
223
 
224
+ all_subject_values = subjects.collect(&method.to_sym).compact.sort
225
+ domain_json = remove_unused_missing_codes_from_domain(domain_json, all_subject_values.uniq)
219
226
 
220
227
  domain_json.each do |option_hash|
221
228
  domain_values = subjects.select{ |s| s.send(method) == option_hash['value'] }
@@ -311,6 +318,9 @@ module Spout
311
318
 
312
319
  filtered_subjects = subjects.select{ |s| s.send(chart_type) != nil }
313
320
 
321
+ all_subject_values = filtered_subjects.collect(&method.to_sym).compact.sort
322
+ domain_json = remove_unused_missing_codes_from_domain(domain_json, all_subject_values.uniq)
323
+
314
324
  rows = domain_json.collect do |option_hash|
315
325
  row_subjects = filtered_subjects.select{ |s| s.send(method) == option_hash['value'] }
316
326
  row_cells = chart_variable_domain.collect do |display_name, value|
@@ -358,6 +368,9 @@ module Spout
358
368
 
359
369
  all_subject_values = subjects.collect(&method.to_sym).compact.sort
360
370
  return nil if all_subject_values.count == 0
371
+
372
+ domain_json = remove_unused_missing_codes_from_domain(domain_json, all_subject_values.uniq) if domain_json
373
+
361
374
  categories = pull_categories(json, method, all_subject_values, domain_json)
362
375
 
363
376
  buckets = continuous_buckets(all_subject_values)
@@ -398,6 +411,11 @@ module Spout
398
411
  end
399
412
  data
400
413
  end
414
+
415
+ def self.remove_unused_missing_codes_from_domain(domain_json, unique_subject_values)
416
+ domain_json.select{|option_hash| option_hash['missing'] != true or (option_hash['missing'] == true and unique_subject_values.include?(option_hash['value']))}
417
+ end
418
+
401
419
  end
402
420
  end
403
421
  end
@@ -40,12 +40,12 @@ module Spout
40
40
 
41
41
  @csv_files = Dir.glob("csvs/#{@csv_directory}/*.csv")
42
42
  @csv_files.each_with_index do |csv_file, index|
43
- count = 0
43
+ count = 1 # Includes counting the header row
44
44
  print "\nParsing #{csv_file}"
45
45
  CSV.parse( File.open(csv_file, 'r:iso-8859-1:utf-8'){|f| f.read}, headers: true, header_converters: lambda { |h| h.to_s.downcase } ) do |line|
46
46
  row = line.to_hash
47
47
  count += 1
48
- print "\rParsing #{csv_file} - line ##{count}" if (count % 10 == 0)
48
+ print "\rParsing #{csv_file} - Row ##{count}" if (count % 10 == 0)
49
49
  @subjects << Spout::Models::Subject.create do |t|
50
50
  t._visit = row[@visit]
51
51
 
@@ -66,8 +66,9 @@ module Spout
66
66
  end
67
67
  end
68
68
  # puts "Memory Used: " + (`ps -o rss -p #{$$}`.strip.split.last.to_i / 1024).to_s + " MB" if count % 1000 == 0
69
- break if @number_of_rows != nil and count >= @number_of_rows
69
+ break if @number_of_rows != nil and count - 1 >= @number_of_rows
70
70
  end
71
+ print "\rParsing #{csv_file} - Row ##{count}"
71
72
  puts "\n"
72
73
  end
73
74
 
@@ -80,7 +81,10 @@ module Spout
80
81
  end
81
82
 
82
83
  def load_subjects_from_csvs_part_two!
83
- @variable_files.each do |variable_file|
84
+ variable_count = @variable_files.count
85
+ print "Converting numeric values to floats"
86
+ @variable_files.each_with_index do |variable_file, index|
87
+ print "\rConverting numeric values to floats:#{"% 3d" % ((index+1)*100/variable_count)}%"
84
88
  json = JSON.parse(File.read(variable_file)) rescue json = nil
85
89
  next unless json
86
90
  next unless @valid_ids.include?(json["id"].to_s.downcase) or @valid_ids.size == 0
@@ -88,8 +92,16 @@ module Spout
88
92
  method = json['id'].to_s.downcase
89
93
  next unless Spout::Models::Subject.method_defined?(method)
90
94
 
95
+ domain_json = get_domain(json)
96
+ # Make all domain options nil for numerics/integers
97
+ if domain_json
98
+ domain_values = domain_json.collect{|option_hash| option_hash['value']}
99
+ @subjects.each{ |s| domain_values.include?(s.send(method)) ? s.send("#{method}=", nil) : nil }
100
+ end
101
+
91
102
  @subjects.each{ |s| s.send(method) != nil ? s.send("#{method}=", s.send("#{method}").to_f) : nil }
92
103
  end
104
+ puts "\n"
93
105
  @subjects
94
106
  end
95
107
 
@@ -103,6 +115,22 @@ module Spout
103
115
  end
104
116
  @all_domains = @all_domains.compact.uniq.sort
105
117
  end
118
+
119
+ def get_json(file_name, file_type)
120
+ file = Dir.glob("#{file_type.to_s.downcase}s/**/#{file_name.to_s.downcase}.json", File::FNM_CASEFOLD).first
121
+ json = JSON.parse(File.read(file)) rescue json = nil
122
+ json
123
+ end
124
+
125
+ def get_variable(variable_name)
126
+ get_json(variable_name, 'variable')
127
+ end
128
+
129
+ def get_domain(json)
130
+ get_json(json['domain'], 'domain')
131
+ end
132
+
133
+
106
134
  end
107
135
  end
108
136
  end
data/lib/spout/version.rb CHANGED
@@ -3,7 +3,7 @@ module Spout
3
3
  MAJOR = 0
4
4
  MINOR = 10
5
5
  TINY = 0
6
- BUILD = "beta8" # nil, "pre", "rc", "rc2"
6
+ BUILD = "beta9" # nil, "pre", "rc", "rc2"
7
7
 
8
8
  STRING = [MAJOR, MINOR, TINY, BUILD].compact.join('.')
9
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spout
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0.beta8
4
+ version: 0.10.0.beta9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Remo Mueller
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-22 00:00:00.000000000 Z
11
+ date: 2014-10-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake