spout 0.8.0.rc4 → 0.8.0.rc5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/spout/commands/exporter.rb +26 -29
- data/lib/spout/commands/graphs.rb +1 -1
- data/lib/spout/commands/importer.rb +5 -5
- data/lib/spout/helpers/chart_types.rb +2 -1
- data/lib/spout/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1038cad773aceeeaac1094a6adfd45b2ad083272
|
|
4
|
+
data.tar.gz: e6f1973edde2c5ebd32ced6f84873de3bcb7b29b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d88dbc04759648e28509bd63d171a307f029776c73e2b4297212d9035412ee16bf01f6b06180df9a4f22bb282c622547bd5c100f7db7481811e2c82b2010be67
|
|
7
|
+
data.tar.gz: 2262b47b04d4dca34e15b655a8d65f53b31b79cc006a81949d9a8b0d515c90852bbdb96225e6065aacb843eaef4e7ad88e57082d9b03d573e462e9061e785ee0
|
data/CHANGELOG.md
CHANGED
|
@@ -24,6 +24,9 @@
|
|
|
24
24
|
- `dictionary.variables.count`
|
|
25
25
|
- `dictionary.domains.count`
|
|
26
26
|
- `dictionary.forms.count`
|
|
27
|
+
- The `spout export` command now includes a `forms.csv` file that exports form information referenced by variables
|
|
28
|
+
- Graphs for histograms now specify units on the x-axis
|
|
29
|
+
- The `spout graphs` command does not generate graphs when no underlying values exists for the variable
|
|
27
30
|
- **Gem Changes**
|
|
28
31
|
- Updated to colorize 0.7.2
|
|
29
32
|
- Updated to minitest
|
|
@@ -31,6 +34,7 @@
|
|
|
31
34
|
|
|
32
35
|
### Bug Fix
|
|
33
36
|
- Spout commands are now more consistently case insensitive for file and column names across platforms
|
|
37
|
+
- The `spout import` command now correctly makes variable ids and domain ids consistently lowercase
|
|
34
38
|
|
|
35
39
|
### Testing
|
|
36
40
|
- Refactored Spout code and updated test coverage for all major spout commands
|
|
@@ -19,45 +19,42 @@ module Spout
|
|
|
19
19
|
puts " create".colorize( :green ) + " #{folder}"
|
|
20
20
|
FileUtils.mkpath folder
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
22
|
+
generic_export(folder, 'variables', %w(id display_name description type units domain labels calculation))
|
|
23
|
+
generic_export(folder, 'domains', %w(value display_name description), true)
|
|
24
|
+
generic_export(folder, 'forms', %w(id display_name code_book))
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def generic_export(folder, type, keys, include_domain_name = false)
|
|
28
|
+
export_file = "#{type}.csv"
|
|
29
|
+
puts " export".colorize( :blue ) + " #{folder}/#{export_file}"
|
|
30
|
+
CSV.open("#{folder}/#{export_file}", "wb") do |csv|
|
|
31
|
+
if include_domain_name
|
|
32
|
+
csv << ['folder', 'domain_id'] + keys
|
|
33
|
+
else
|
|
34
|
+
csv << ['folder'] + keys
|
|
32
35
|
end
|
|
33
|
-
|
|
34
|
-
domains_export_file = "domains.csv"
|
|
35
|
-
puts " export".colorize( :blue ) + " #{folder}/#{domains_export_file}"
|
|
36
|
-
CSV.open("#{folder}/#{domains_export_file}", "wb") do |csv|
|
|
37
|
-
keys = %w(value display_name description)
|
|
38
|
-
csv << ['folder', 'domain_id'] + keys
|
|
39
|
-
Dir.glob("domains/**/*.json").sort.each do |file|
|
|
36
|
+
Dir.glob("#{type}/**/*.json").sort.each do |file|
|
|
40
37
|
if json = JSON.parse(File.read(file)) rescue false
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
38
|
+
relative_folder = generic_folder_path(file, type)
|
|
39
|
+
if include_domain_name
|
|
40
|
+
domain_name = extract_domain_name(file)
|
|
41
|
+
json.each do |hash|
|
|
42
|
+
csv << [relative_folder, domain_name] + keys.collect{|key| hash[key]}
|
|
43
|
+
end
|
|
44
|
+
else
|
|
45
|
+
csv << [relative_folder] + keys.collect{|key| json[key].kind_of?(Array) ? json[key].join(';') : json[key].to_s}
|
|
45
46
|
end
|
|
46
47
|
end
|
|
47
48
|
end
|
|
48
49
|
end
|
|
49
50
|
end
|
|
50
51
|
|
|
51
|
-
def
|
|
52
|
-
file.gsub(
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
def domain_folder_path(file)
|
|
56
|
-
file.gsub(/domains\//, '').split('/')[0..-2].join('/')
|
|
52
|
+
def generic_folder_path(file, type)
|
|
53
|
+
file.gsub(/#{type}\//, '').split('/')[0..-2].join('/')
|
|
57
54
|
end
|
|
58
55
|
|
|
59
|
-
def
|
|
60
|
-
file.gsub(/
|
|
56
|
+
def extract_domain_name(file)
|
|
57
|
+
file.gsub(/domains\//, '').split('/').last.to_s.gsub(/.json/, '')
|
|
61
58
|
end
|
|
62
59
|
|
|
63
60
|
end
|
|
@@ -101,7 +101,7 @@ module Spout
|
|
|
101
101
|
end
|
|
102
102
|
else
|
|
103
103
|
filtered_subjects = @subjects.select{ |s| s.send(chart_type) != nil } # and s.send(variable_name) != nil
|
|
104
|
-
if filtered_subjects.count > 0
|
|
104
|
+
if filtered_subjects.collect(&variable_name.to_sym).compact.count > 0
|
|
105
105
|
stats[:charts][chart_title] = Spout::Helpers::ChartTypes::chart_arbitrary(chart_type, filtered_subjects, json, variable_name, visits)
|
|
106
106
|
stats[:tables][chart_title] = visits.collect do |visit_display_name, visit_value|
|
|
107
107
|
visit_subjects = filtered_subjects.select{ |s| s._visit == visit_value }
|
|
@@ -46,12 +46,12 @@ EOT
|
|
|
46
46
|
folder = File.join('variables', row.delete('folder').to_s)
|
|
47
47
|
FileUtils.mkpath folder
|
|
48
48
|
hash = {}
|
|
49
|
-
id = row.delete('id')
|
|
49
|
+
id = row.delete('id').to_s.downcase
|
|
50
50
|
hash['id'] = id
|
|
51
51
|
hash['display_name'] = row.delete('display_name')
|
|
52
52
|
hash['description'] = row.delete('description').to_s
|
|
53
53
|
hash['type'] = row.delete('type')
|
|
54
|
-
domain = row.delete('domain').to_s
|
|
54
|
+
domain = row.delete('domain').to_s.downcase
|
|
55
55
|
hash['domain'] = domain if domain != ''
|
|
56
56
|
units = row.delete('units').to_s
|
|
57
57
|
hash['units'] = units if units != ''
|
|
@@ -61,7 +61,7 @@ EOT
|
|
|
61
61
|
hash['labels'] = labels if labels.size > 0
|
|
62
62
|
hash['other'] = row unless row.empty?
|
|
63
63
|
|
|
64
|
-
file_name = File.join(folder, id
|
|
64
|
+
file_name = File.join(folder, id + '.json')
|
|
65
65
|
File.open(file_name, 'w') do |file|
|
|
66
66
|
file.write(JSON.pretty_generate(hash) + "\n")
|
|
67
67
|
end
|
|
@@ -89,7 +89,7 @@ EOT
|
|
|
89
89
|
|
|
90
90
|
next if row['domain_id'].to_s == '' or row['value'].to_s == '' or row['display_name'].to_s == ''
|
|
91
91
|
folder = File.join('domains', row['folder'].to_s).gsub(/[^a-zA-Z0-9_\/\.-]/, '_')
|
|
92
|
-
domain_name = row['domain_id'].to_s.gsub(/[^a-zA-Z0-9_\/\.-]/, '_')
|
|
92
|
+
domain_name = row['domain_id'].to_s.gsub(/[^a-zA-Z0-9_\/\.-]/, '_').downcase
|
|
93
93
|
domains[domain_name] ||= {}
|
|
94
94
|
domains[domain_name]["folder"] = folder
|
|
95
95
|
domains[domain_name]["options"] ||= []
|
|
@@ -106,7 +106,7 @@ EOT
|
|
|
106
106
|
folder = domain_hash["folder"]
|
|
107
107
|
FileUtils.mkpath folder
|
|
108
108
|
|
|
109
|
-
file_name = File.join(folder, domain_name
|
|
109
|
+
file_name = File.join(folder, domain_name + '.json')
|
|
110
110
|
|
|
111
111
|
File.open(file_name, 'w') do |file|
|
|
112
112
|
file.write(JSON.pretty_generate(domain_hash["options"]) + "\n")
|
|
@@ -353,6 +353,7 @@ module Spout
|
|
|
353
353
|
title = "#{json['display_name']}"
|
|
354
354
|
subtitle = "By Visit"
|
|
355
355
|
units = "Subjects"
|
|
356
|
+
x_axis_units = json["units"]
|
|
356
357
|
series = []
|
|
357
358
|
|
|
358
359
|
all_subject_values = subjects.collect(&method.to_sym).compact.sort
|
|
@@ -370,7 +371,7 @@ module Spout
|
|
|
370
371
|
series << { name: display_name, data: data }
|
|
371
372
|
end
|
|
372
373
|
|
|
373
|
-
{ title: title, subtitle: subtitle, categories: categories, units: units, series: series }
|
|
374
|
+
{ title: title, subtitle: subtitle, categories: categories, units: units, series: series, x_axis_title: x_axis_units }
|
|
374
375
|
end
|
|
375
376
|
|
|
376
377
|
def self.pull_categories(json, method, all_subject_values, domain_json)
|
data/lib/spout/version.rb
CHANGED
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.8.0.
|
|
4
|
+
version: 0.8.0.rc5
|
|
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-06-
|
|
11
|
+
date: 2014-06-27 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rake
|