surveyor 0.6.8 → 0.6.9
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.
- data/README.md +2 -2
- data/VERSION +1 -1
- data/generators/surveyor/templates/migrate/create_answers.rb +11 -19
- data/generators/surveyor/templates/migrate/create_question_groups.rb +10 -1
- data/generators/surveyor/templates/migrate/create_questions.rb +12 -9
- data/generators/surveyor/templates/migrate/create_survey_sections.rb +9 -5
- data/generators/surveyor/templates/migrate/create_surveys.rb +8 -2
- data/script/surveyor/answer.rb +13 -8
- data/script/surveyor/question.rb +16 -11
- data/script/surveyor/question_group.rb +10 -3
- data/script/surveyor/survey.rb +13 -9
- data/script/surveyor/survey_section.rb +9 -7
- data/surveyor.gemspec +2 -2
- metadata +2 -2
data/README.md
CHANGED
@@ -7,12 +7,12 @@ Surveyor is a rails (gem) plugin, that brings surveys to your rails app. Before
|
|
7
7
|
As a plugin:
|
8
8
|
|
9
9
|
sudo gem install haml
|
10
|
-
script/plugin install git://github.com/breakpointer/surveyor.git -r 'tag v0.6.
|
10
|
+
script/plugin install git://github.com/breakpointer/surveyor.git -r 'tag v0.6.9'
|
11
11
|
|
12
12
|
Or as a gem plugin:
|
13
13
|
|
14
14
|
# in environment.rb
|
15
|
-
config.gem "surveyor", :version => '>=0.6.
|
15
|
+
config.gem "surveyor", :version => '>=0.6.9', :source => 'http://gemcutter.org'
|
16
16
|
|
17
17
|
sudo gem install gemcutter
|
18
18
|
gem tumble
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.6.
|
1
|
+
0.6.9
|
@@ -9,31 +9,23 @@ class CreateAnswers < ActiveRecord::Migration
|
|
9
9
|
t.text :short_text #Used for presenting responses to experts (ie non-survey takers). Just a shorted version of the string
|
10
10
|
t.text :help_text
|
11
11
|
t.integer :weight # Used to assign a weight to an answer object (used for computing surveys that have numerical results) (I added this to support the Urology questionnaire -BLC)
|
12
|
+
t.string :response_class # What kind of additional data does this answer accept?
|
12
13
|
|
14
|
+
# Reference
|
15
|
+
t.string :reference_identifier # from paper
|
16
|
+
t.string :data_export_identifier # data export
|
17
|
+
t.string :common_namespace # maping to a common vocab
|
18
|
+
t.string :common_identitier # maping to a common vocab
|
19
|
+
|
13
20
|
# Display
|
14
|
-
t.string :response_class # What kind of additional data does this answer accept?
|
15
21
|
t.integer :display_order
|
16
22
|
t.boolean :is_exclusive # If set it causes some UI trigger to remove (and disable) all the other answer choices selected for a question (needed for the WHR)
|
17
|
-
t.boolean :hide_label
|
18
|
-
|
19
|
-
# Reference
|
20
|
-
t.string :reference_identifier # Used to relate this question object to questions imported from a paper questionnaire
|
21
|
-
t.string :data_export_identifier # Used when referencing this quesiton in data export. Usually a shortend/cryptic version of the question text
|
22
|
-
t.string :common_data_identitier # Used to share data across surveys (or perhaps map to a common vocab.)
|
23
|
-
|
24
|
-
# Validations
|
25
|
-
# the response_class attr also has validation implications (int, string, float,etc..) but these attrs below give fine grain control over responses
|
26
|
-
t.integer :max_value
|
27
|
-
t.integer :min_value
|
28
|
-
t.integer :length # number of chars/ints accepted
|
29
|
-
t.integer :decimal_precision # only for floats
|
30
|
-
t.boolean :allow_negative # only for numeric values
|
31
|
-
t.boolean :allow_blank
|
32
|
-
t.string :unit # a string representation of the unit (lbs. USD, oz.) - Context is from the survey domain and question
|
33
|
-
|
34
|
-
# Display property
|
23
|
+
t.boolean :hide_label
|
35
24
|
t.integer :display_length # if smaller than answer.length the html input length will be this value
|
36
25
|
|
26
|
+
t.string :custom_class
|
27
|
+
t.string :custom_renderer
|
28
|
+
|
37
29
|
t.timestamps
|
38
30
|
|
39
31
|
end
|
@@ -5,9 +5,18 @@ class CreateQuestionGroups < ActiveRecord::Migration
|
|
5
5
|
t.text :text
|
6
6
|
t.text :help_text
|
7
7
|
|
8
|
+
# Reference
|
9
|
+
t.string :reference_identifier # from paper
|
10
|
+
t.string :data_export_identifier # data export
|
11
|
+
t.string :common_namespace # maping to a common vocab
|
12
|
+
t.string :common_identitier # maping to a common vocab
|
13
|
+
|
8
14
|
# Display
|
9
15
|
t.string :display_type
|
10
|
-
|
16
|
+
|
17
|
+
t.string :custom_class
|
18
|
+
t.string :custom_renderer
|
19
|
+
|
11
20
|
t.timestamps
|
12
21
|
end
|
13
22
|
end
|
@@ -3,26 +3,29 @@ class CreateQuestions < ActiveRecord::Migration
|
|
3
3
|
create_table :questions do |t|
|
4
4
|
# Context
|
5
5
|
t.integer :survey_section_id
|
6
|
+
t.integer :question_group_id
|
6
7
|
|
7
8
|
# Content
|
8
9
|
t.text :text
|
9
10
|
t.text :short_text # For experts (ie non-survey takers). Short version of text
|
10
11
|
t.text :help_text
|
11
|
-
|
12
|
-
# Display
|
13
12
|
t.string :pick
|
14
|
-
t.string :display_type
|
15
|
-
t.integer :display_order
|
16
|
-
t.integer :question_group_id
|
17
|
-
t.boolean :is_mandatory
|
18
13
|
|
19
14
|
# Reference
|
20
|
-
t.string :reference_identifier #
|
21
|
-
t.string :data_export_identifier #
|
15
|
+
t.string :reference_identifier # from paper
|
16
|
+
t.string :data_export_identifier # data export
|
17
|
+
t.string :common_namespace # maping to a common vocab
|
18
|
+
t.string :common_identitier # maping to a common vocab
|
22
19
|
|
23
|
-
#
|
20
|
+
# Display
|
21
|
+
t.integer :display_order
|
22
|
+
t.string :display_type
|
23
|
+
t.boolean :is_mandatory
|
24
24
|
t.integer :display_width # used only for slider component (if needed)
|
25
25
|
|
26
|
+
t.string :custom_class
|
27
|
+
t.string :custom_renderer
|
28
|
+
|
26
29
|
t.timestamps
|
27
30
|
end
|
28
31
|
end
|
@@ -7,13 +7,17 @@ class CreateSurveySections < ActiveRecord::Migration
|
|
7
7
|
# Content
|
8
8
|
t.string :title
|
9
9
|
t.text :description
|
10
|
-
|
10
|
+
|
11
|
+
# Reference
|
12
|
+
t.string :reference_identifier # from paper
|
13
|
+
t.string :data_export_identifier # data export
|
14
|
+
t.string :common_namespace # maping to a common vocab
|
15
|
+
t.string :common_identitier # maping to a common vocab
|
16
|
+
|
11
17
|
# Display
|
12
18
|
t.integer :display_order
|
13
|
-
|
14
|
-
|
15
|
-
t.string :reference_identifier # Used to relate this question object to questions imported from a paper questionnaire
|
16
|
-
t.string :data_export_identifier # Used when referencing this quesiton in data export. Usually a shortend/cryptic version of the question text
|
19
|
+
|
20
|
+
t.string :custom_class
|
17
21
|
|
18
22
|
t.timestamps
|
19
23
|
end
|
@@ -7,14 +7,20 @@ class CreateSurveys < ActiveRecord::Migration
|
|
7
7
|
|
8
8
|
# Reference
|
9
9
|
t.string :access_code
|
10
|
+
t.string :reference_identifier # from paper
|
11
|
+
t.string :data_export_identifier # data export
|
12
|
+
t.string :common_namespace # maping to a common vocab
|
13
|
+
t.string :common_identitier # maping to a common vocab
|
10
14
|
|
11
15
|
# Expiry
|
12
16
|
t.datetime :active_at
|
13
17
|
t.datetime :inactive_at
|
14
18
|
|
15
|
-
#
|
19
|
+
# Display
|
16
20
|
t.string :css_url
|
17
|
-
|
21
|
+
|
22
|
+
t.string :custom_class
|
23
|
+
|
18
24
|
t.timestamps
|
19
25
|
end
|
20
26
|
end
|
data/script/surveyor/answer.rb
CHANGED
@@ -3,11 +3,11 @@ require File.dirname(__FILE__) + '/columnizer'
|
|
3
3
|
class Answer
|
4
4
|
include Columnizer
|
5
5
|
|
6
|
-
# Context, Content,
|
7
|
-
attr_accessor :id, :
|
8
|
-
attr_accessor :text, :short_text, :help_text, :
|
9
|
-
attr_accessor :
|
10
|
-
attr_accessor :
|
6
|
+
# Context, Content, Reference, Display
|
7
|
+
attr_accessor :id, :parser, :question_id
|
8
|
+
attr_accessor :text, :short_text, :help_text, :weight, :response_class
|
9
|
+
attr_accessor :reference_identifier, :data_export_identifier, :common_namespace, :common_identitier
|
10
|
+
attr_accessor :display_order, :is_exclusive, :hide_label, :display_length, :custom_class, :custom_renderer
|
11
11
|
|
12
12
|
def initialize(question, args, options)
|
13
13
|
self.parser = question ? question.parser : nil
|
@@ -69,11 +69,16 @@ class Answer
|
|
69
69
|
out << %( help_text: "#{@help_text}")
|
70
70
|
out << %( weight: #{@weight})
|
71
71
|
out << %( response_class: "#{@response_class}")
|
72
|
-
out << %(
|
72
|
+
out << %( reference_identifier: "#{@reference_identifier}")
|
73
|
+
out << %( data_export_identifier: "#{@data_export_identifier}")
|
74
|
+
out << %( common_namespace: "#{@common_namespace}")
|
75
|
+
out << %( common_identitier: "#{@common_identitier}")
|
76
|
+
out << %( display_order: #{@display_order} )
|
73
77
|
out << %( is_exclusive: #{@is_exclusive})
|
74
78
|
out << %( hide_label: #{@hide_label})
|
75
|
-
out << %(
|
76
|
-
out << %(
|
79
|
+
out << %( display_length: #{@display_length} )
|
80
|
+
out << %( custom_class: "#{@custom_class}")
|
81
|
+
out << %( custom_renderer: "#{@custom_renderer}")
|
77
82
|
(out << nil ).join("\r\n")
|
78
83
|
end
|
79
84
|
|
data/script/surveyor/question.rb
CHANGED
@@ -3,11 +3,11 @@ require File.dirname(__FILE__) + '/columnizer'
|
|
3
3
|
class Question
|
4
4
|
include Columnizer
|
5
5
|
|
6
|
-
# Context, Content,
|
7
|
-
attr_accessor :id, :survey_section_id, :
|
8
|
-
attr_accessor :text, :short_text, :help_text
|
9
|
-
attr_accessor :
|
10
|
-
attr_accessor :
|
6
|
+
# Context, Content, Reference, Display, Children
|
7
|
+
attr_accessor :id, :parser, :survey_section_id, :question_group_id
|
8
|
+
attr_accessor :text, :short_text, :help_text, :pick
|
9
|
+
attr_accessor :reference_identifier, :data_export_identifier, :common_namespace, :common_identitier
|
10
|
+
attr_accessor :display_order, :display_type, :is_mandatory, :display_width, :custom_class, :custom_renderer
|
11
11
|
attr_accessor :answers, :dependency
|
12
12
|
|
13
13
|
def initialize(section, args, options)
|
@@ -54,16 +54,21 @@ class Question
|
|
54
54
|
out =[ %(#{@data_export_identifier}_#{@id}:) ]
|
55
55
|
out << %( id: #{@id})
|
56
56
|
out << %( survey_section_id: #{@survey_section_id})
|
57
|
+
out << %( question_group_id: #{@question_group_id})
|
57
58
|
out << %( text: "#{@text}")
|
58
59
|
out << %( short_text: "#{@short_text}")
|
59
60
|
out << %( help_text: "#{@help_text}")
|
60
|
-
out << %( pick: #{pick})
|
61
|
-
out << %(
|
62
|
-
out << %( display_order: #{display_order})
|
63
|
-
out << %( question_group_id: #{question_group_id})
|
64
|
-
out << %( is_mandatory: #{@is_mandatory})
|
65
|
-
out << %( reference_identifier: #{@reference_identifier})
|
61
|
+
out << %( pick: "#{pick}")
|
62
|
+
out << %( reference_identifier: "#{@reference_identifier}")
|
66
63
|
out << %( data_export_identifier: "#{@data_export_identifier}")
|
64
|
+
out << %( common_namespace: "#{@common_namespace}")
|
65
|
+
out << %( common_identitier: "#{@common_identitier}")
|
66
|
+
out << %( display_order: #{@display_order})
|
67
|
+
out << %( display_type: "#{@display_type}")
|
68
|
+
out << %( is_mandatory: #{@is_mandatory})
|
69
|
+
out << %( display_width: #{@display_width})
|
70
|
+
out << %( custom_class: "#{@custom_class}")
|
71
|
+
out << %( custom_renderer: "#{@custom_renderer}")
|
67
72
|
(out << nil ).join("\r\n")
|
68
73
|
end
|
69
74
|
|
@@ -1,9 +1,10 @@
|
|
1
1
|
class QuestionGroup
|
2
|
-
|
2
|
+
|
3
3
|
# Context, Content, Display
|
4
4
|
attr_accessor :id, :section_id, :section, :parser
|
5
5
|
attr_accessor :text, :help_text
|
6
|
-
attr_accessor :
|
6
|
+
attr_accessor :reference_identifier, :data_export_identifier, :common_namespace, :common_identitier
|
7
|
+
attr_accessor :display_type, :custom_class, :custom_renderer
|
7
8
|
|
8
9
|
# id, section and text required
|
9
10
|
def initialize(section, args, options)
|
@@ -16,13 +17,19 @@ class QuestionGroup
|
|
16
17
|
def default_options()
|
17
18
|
{:display_type => "default"}
|
18
19
|
end
|
19
|
-
|
20
|
+
|
20
21
|
def to_yml
|
21
22
|
out =[ %(#{@id}:) ]
|
22
23
|
out << %( id: #{@id})
|
23
24
|
out << %( text: "#{@text}")
|
24
25
|
out << %( help_text: "#{@help_text}")
|
26
|
+
out << %( reference_identifier: "#{@reference_identifier}")
|
27
|
+
out << %( data_export_identifier: "#{@data_export_identifier}")
|
28
|
+
out << %( common_namespace: "#{@common_namespace}")
|
29
|
+
out << %( common_identitier: "#{@common_identitier}")
|
25
30
|
out << %( display_type: "#{@display_type}")
|
31
|
+
out << %( custom_class: "#{@custom_class}")
|
32
|
+
out << %( custom_renderer: "#{@custom_renderer}")
|
26
33
|
(out << nil ).join("\r\n")
|
27
34
|
end
|
28
35
|
|
data/script/surveyor/survey.rb
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/survey_section'
|
2
2
|
|
3
3
|
class Survey
|
4
|
-
|
5
|
-
# Content, Reference, Expiry, Children
|
4
|
+
include Columnizer
|
5
|
+
# Context, Content, Reference, Expiry, Display, Children
|
6
6
|
attr_accessor :id, :parser
|
7
7
|
attr_accessor :title, :description
|
8
|
-
attr_accessor :access_code
|
8
|
+
attr_accessor :access_code, :reference_identifier, :data_export_identifier, :common_namespace, :common_identitier
|
9
9
|
attr_accessor :active_at, :inactive_at
|
10
|
+
attr_accessor :css_url, :custom_class
|
10
11
|
attr_accessor :survey_sections
|
11
12
|
|
12
13
|
@@current_survey = nil
|
@@ -78,24 +79,27 @@ class Survey
|
|
78
79
|
|
79
80
|
|
80
81
|
def reconcile_dependencies
|
81
|
-
|
82
82
|
@survey_sections.each do |section|
|
83
83
|
section.questions.each do |question|
|
84
84
|
question.dependency.dependency_conditions.each { |con| con.reconcile_dependencies} unless question.dependency.nil?
|
85
|
-
|
86
85
|
end
|
87
|
-
end
|
88
|
-
|
86
|
+
end
|
89
87
|
end
|
90
|
-
|
88
|
+
|
91
89
|
def to_yml
|
92
90
|
out =[ %(survey_#{@id}:) ]
|
93
91
|
out << %( id: #{@id})
|
94
92
|
out << %( title: "#{@title}")
|
95
93
|
out << %( description: "#{@description}")
|
96
|
-
out << %( access_code: #{@access_code})
|
94
|
+
out << %( access_code: "#{@access_code}")
|
95
|
+
out << %( reference_identifier: "#{@reference_identifier}")
|
96
|
+
out << %( data_export_identifier: "#{@data_export_identifier}")
|
97
|
+
out << %( common_namespace: "#{@common_namespace}")
|
98
|
+
out << %( common_identitier: "#{@common_identitier}")
|
97
99
|
out << %( active_at: #{@active_at})
|
98
100
|
out << %( inactive_at: #{@inactive_at})
|
101
|
+
out << %( css_url: "#{@css_url}")
|
102
|
+
out << %( custom_class: "#{@custom_class}")
|
99
103
|
(out << nil ).join("\r\n")
|
100
104
|
end
|
101
105
|
|
@@ -11,14 +11,13 @@ class SurveySection
|
|
11
11
|
include Columnizer
|
12
12
|
|
13
13
|
# Context, Content, Display, Reference, Children, Placeholders
|
14
|
-
attr_accessor :id, :
|
14
|
+
attr_accessor :id, :parser, :survey_id
|
15
15
|
attr_accessor :title, :description
|
16
|
-
attr_accessor :
|
17
|
-
attr_accessor :
|
16
|
+
attr_accessor :reference_identifier, :data_export_identifier, :common_namespace, :common_identitier
|
17
|
+
attr_accessor :display_order, :custom_class
|
18
18
|
attr_accessor :question_groups, :questions, :grid_answers
|
19
19
|
attr_accessor :current_question_group, :current_question, :current_dependency
|
20
20
|
|
21
|
-
|
22
21
|
# id, survey, and title required
|
23
22
|
def initialize(id, survey, title, options = {})
|
24
23
|
self.id = id
|
@@ -131,16 +130,19 @@ class SurveySection
|
|
131
130
|
question
|
132
131
|
end
|
133
132
|
|
134
|
-
|
135
133
|
def to_yml
|
136
134
|
out =[ %(#{@data_export_identifier}_#{@id}:) ]
|
137
135
|
out << %( id: #{@id})
|
138
136
|
out << %( survey_id: #{@survey_id})
|
139
137
|
out << %( title: "#{@title}")
|
140
138
|
out << %( description: "#{@description}")
|
141
|
-
out << %(
|
142
|
-
out << %( reference_identifier: #{@reference_identifier})
|
139
|
+
out << %( reference_identifier: "#{@reference_identifier}")
|
143
140
|
out << %( data_export_identifier: "#{@data_export_identifier}")
|
141
|
+
out << %( common_namespace: "#{@common_namespace}")
|
142
|
+
out << %( common_identitier: "#{@common_identitier}")
|
143
|
+
out << %( display_order: #{@display_order})
|
144
|
+
out << %( custom_class: "#{@custom_class}")
|
145
|
+
|
144
146
|
(out << nil ).join("\r\n")
|
145
147
|
end
|
146
148
|
|
data/surveyor.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{surveyor}
|
8
|
-
s.version = "0.6.
|
8
|
+
s.version = "0.6.9"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Brian Chamberlain", "Mark Yoon"]
|
12
|
-
s.date = %q{2009-10-
|
12
|
+
s.date = %q{2009-10-16}
|
13
13
|
s.email = %q{yoon@northwestern.edu}
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"README.md"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: surveyor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Chamberlain
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2009-10-
|
13
|
+
date: 2009-10-16 00:00:00 -05:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|