hyper-vis 1.0.0.lap34 → 1.0.1

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.
@@ -0,0 +1,124 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Hyperloop::Vis::Graph3d::Component', js: true do
4
+
5
+ it 'creates a component by using the mixin and renders it' do
6
+ mount 'OuterComponent' do
7
+ class VisComponent
8
+ include Hyperloop::Vis::Graph3d::Mixin
9
+
10
+ render_with_dom_node do |dom_node, data, options|
11
+ net = Vis::Graph3d.new(dom_node, data, options)
12
+ end
13
+ end
14
+ class OuterComponent < Hyperloop::Component
15
+ render do
16
+ options = {
17
+ width: '600px',
18
+ height: '600px',
19
+ style: 'surface',
20
+ show_perspective: true,
21
+ show_grid: true,
22
+ show_shadow: false,
23
+ keep_aspect_ratio: true,
24
+ vertical_ratio: 0.5
25
+ }
26
+ dataset = Vis::DataSet.new
27
+ steps = 50 # number of datapoints will be steps*steps
28
+ axis_max = 314
29
+ axis_step = axis_max / steps
30
+ (0...axis_max).step(axis_step) do |x|
31
+ (0...axis_max).step(axis_step) do |y|
32
+ value = Math.sin(x/50) * Math.cos(y/50) * 50 + 50
33
+ dataset.add(x: x, y: y, z: value, style: value)
34
+ end
35
+ end
36
+ DIV { VisComponent(vis_data: dataset, options: options)}
37
+ end
38
+ end
39
+ end
40
+ expect(page.body).to include('<canvas')
41
+ end
42
+
43
+ it 'creates a component by inheriting and renders it' do
44
+ mount 'OuterComponent' do
45
+ class VisComponent < Hyperloop::Vis::Graph3d::Component
46
+ render_with_dom_node do |dom_node, data, options|
47
+ net = Vis::Graph3d.new(dom_node, data, options)
48
+ end
49
+ end
50
+ class OuterComponent < Hyperloop::Component
51
+ render do
52
+ options = {
53
+ width: '600px',
54
+ height: '600px',
55
+ style: 'surface',
56
+ show_perspective: true,
57
+ show_grid: true,
58
+ show_shadow: false,
59
+ keep_aspect_ratio: true,
60
+ vertical_ratio: 0.5
61
+ }
62
+ dataset = Vis::DataSet.new
63
+ steps = 50 # number of datapoints will be steps*steps
64
+ axis_max = 314
65
+ axis_step = axis_max / steps
66
+ (0...axis_max).step(axis_step) do |x|
67
+ (0...axis_max).step(axis_step) do |y|
68
+ value = Math.sin(x/50) * Math.cos(y/50) * 50 + 50
69
+ dataset.add(x: x, y: y, z: value, style: value)
70
+ end
71
+ end
72
+ DIV { VisComponent(vis_data: dataset, options: options)}
73
+ end
74
+ end
75
+ end
76
+ expect(page.body).to include('<canvas')
77
+ end
78
+
79
+ it 'actually passes the params to the component' do
80
+ mount 'OuterComponent' do
81
+ class VisComponent < Hyperloop::Vis::Graph3d::Component
82
+ def self.passed_data
83
+ @@passed_data
84
+ end
85
+ def self.passed_options
86
+ @@passed_options
87
+ end
88
+ render_with_dom_node do |dom_node, data, options|
89
+ @@passed_data = data
90
+ @@passed_options = options
91
+ net = Vis::Graph3d.new(dom_node, data, options)
92
+ end
93
+ end
94
+ class OuterComponent < Hyperloop::Component
95
+ render do
96
+ options = {
97
+ width: '600px',
98
+ height: '600px',
99
+ style: 'surface',
100
+ show_perspective: true,
101
+ show_grid: true,
102
+ show_shadow: false,
103
+ keep_aspect_ratio: true,
104
+ vertical_ratio: 0.5
105
+ }
106
+ dataset = Vis::DataSet.new
107
+ steps = 50 # number of datapoints will be steps*steps
108
+ axis_max = 314
109
+ axis_step = axis_max / steps
110
+ (0...axis_max).step(axis_step) do |x|
111
+ (0...axis_max).step(axis_step) do |y|
112
+ value = Math.sin(x/50) * Math.cos(y/50) * 50 + 50
113
+ dataset.add(x: x, y: y, z: value, style: value)
114
+ end
115
+ end
116
+ DIV { VisComponent(vis_data: dataset, options: options)}
117
+ end
118
+ end
119
+ end
120
+ expect(page.body).to include('<canvas')
121
+ expect_evaluate_ruby('VisComponent.passed_data.is_a?(Vis::DataSet)').to eq(true)
122
+ expect_evaluate_ruby('VisComponent.passed_options.has_key?(:show_shadow)').to eq(true)
123
+ end
124
+ end
@@ -0,0 +1,247 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Vis::Graph3d', js: true do
4
+
5
+ it 'creates a new Graph with options' do
6
+ expect_evaluate_ruby do
7
+ options = {
8
+ width: '600px',
9
+ height: '600px',
10
+ style: 'surface',
11
+ show_perspective: true,
12
+ show_grid: true,
13
+ show_shadow: false,
14
+ keep_aspect_ratio: true,
15
+ vertical_ratio: 0.5
16
+ }
17
+ dataset = Vis::DataSet.new
18
+ steps = 50 # number of datapoints will be steps*steps
19
+ axis_max = 314
20
+ axis_step = axis_max / steps
21
+ (0...axis_max).step(axis_step) do |x|
22
+ (0...axis_max).step(axis_step) do |y|
23
+ value = Math.sin(x/50) * Math.cos(y/50) * 50 + 50
24
+ dataset.add(x: x, y: y, z: value, style: value)
25
+ end
26
+ end
27
+ dom_node = Vis::Graph3d.test_container
28
+ g3d = Vis::Graph3d.new(dom_node, dataset, options)
29
+ [g3d.is_a?(Vis::Graph3d), dom_node.JS[:children].JS[:length]]
30
+ end.to eq([true, 1])
31
+ end
32
+
33
+ it 'it can replace the data' do
34
+ expect_evaluate_ruby do
35
+ options = {
36
+ width: '600px',
37
+ height: '600px',
38
+ style: 'surface',
39
+ show_perspective: true,
40
+ show_grid: true,
41
+ show_shadow: false,
42
+ keep_aspect_ratio: true,
43
+ vertical_ratio: 0.5
44
+ }
45
+ dataset = Vis::DataSet.new
46
+ steps = 50 # number of datapoints will be steps*steps
47
+ axis_max = 314
48
+ axis_step = axis_max / steps
49
+ (0...axis_max).step(axis_step) do |x|
50
+ (0...axis_max).step(axis_step) do |y|
51
+ value = Math.sin(x/50) * Math.cos(y/50) * 50 + 50
52
+ dataset.add(x: x, y: y, z: value, style: value)
53
+ end
54
+ end
55
+ dom_node = Vis::Graph3d.test_container
56
+ g3d = Vis::Graph3d.new(dom_node, dataset, options)
57
+ created = dom_node.JS[:children].JS[:length]
58
+ new_dataset = Vis::DataSet.new
59
+ (0...axis_max).step(axis_step) do |x|
60
+ (0...axis_max).step(axis_step) do |y|
61
+ value = Math.cos(x/50) * Math.sin(y/50) * 50 + 50
62
+ new_dataset.add(x: x, y: y, z: value, style: value)
63
+ end
64
+ end
65
+ g3d.set_data(new_dataset)
66
+ [g3d.is_a?(Vis::Graph3d), created]
67
+ end.to eq([true, 1])
68
+ end
69
+
70
+ it 'it can set options' do
71
+ expect_evaluate_ruby do
72
+ options = {
73
+ width: '600px',
74
+ height: '600px',
75
+ style: 'surface',
76
+ show_perspective: true,
77
+ show_grid: true,
78
+ show_shadow: false,
79
+ keep_aspect_ratio: true,
80
+ vertical_ratio: 0.5
81
+ }
82
+ dataset = Vis::DataSet.new
83
+ steps = 50 # number of datapoints will be steps*steps
84
+ axis_max = 314
85
+ axis_step = axis_max / steps
86
+ (0...axis_max).step(axis_step) do |x|
87
+ (0...axis_max).step(axis_step) do |y|
88
+ value = Math.sin(x/50) * Math.cos(y/50) * 50 + 50
89
+ dataset.add(x: x, y: y, z: value, style: value)
90
+ end
91
+ end
92
+ dom_node = Vis::Graph3d.test_container
93
+ g3d = Vis::Graph3d.new(dom_node, dataset, options)
94
+ created = dom_node.JS[:children].JS[:length]
95
+ error = false
96
+ begin
97
+ g3d.set_options({
98
+ width: '500px',
99
+ height: '500px',
100
+ style: 'surface',
101
+ show_perspective: true,
102
+ show_grid: true,
103
+ show_shadow: true,
104
+ keep_aspect_ratio: true,
105
+ vertical_ratio: 0.5
106
+ })
107
+ rescue
108
+ error = true
109
+ end
110
+ [g3d.is_a?(Vis::Graph3d), created, error]
111
+ end.to eq([true, 1, false])
112
+ end
113
+
114
+ xit 'it can set a event listener' do
115
+ # needs simulated user input
116
+ expect_evaluate_ruby do
117
+ options = {
118
+ width: '600px',
119
+ height: '600px',
120
+ style: 'surface',
121
+ show_perspective: true,
122
+ show_grid: true,
123
+ show_shadow: false,
124
+ keep_aspect_ratio: true,
125
+ vertical_ratio: 0.5
126
+ }
127
+ dataset = Vis::DataSet.new
128
+ steps = 50 # number of datapoints will be steps*steps
129
+ axis_max = 314
130
+ axis_step = axis_max / steps
131
+ (0...axis_max).step(axis_step) do |x|
132
+ (0...axis_max).step(axis_step) do |y|
133
+ value = Math.sin(x/50) * Math.cos(y/50) * 50 + 50
134
+ dataset.add(x: x, y: y, z: value, style: value)
135
+ end
136
+ end
137
+ dom_node = Vis::Graph3d.test_container
138
+ g3d = Vis::Graph3d.new(dom_node, dataset, options)
139
+ created = dom_node.JS[:children].JS[:length]
140
+ received = []
141
+ g3d.on(:camera_position_change) do |info|
142
+ received << info
143
+ `console.log('received', info)`
144
+ end
145
+ [g3d.is_a?(Vis::Graph3d), created, received.size]
146
+ end.to eq([true, 1, 1])
147
+ end
148
+
149
+ it 'can call redraw' do
150
+ expect_evaluate_ruby do
151
+ options = {
152
+ width: '600px',
153
+ height: '600px',
154
+ style: 'surface',
155
+ show_perspective: true,
156
+ show_grid: true,
157
+ show_shadow: false,
158
+ keep_aspect_ratio: true,
159
+ vertical_ratio: 0.5
160
+ }
161
+ dataset = Vis::DataSet.new
162
+ steps = 50 # number of datapoints will be steps*steps
163
+ axis_max = 314
164
+ axis_step = axis_max / steps
165
+ (0...axis_max).step(axis_step) do |x|
166
+ (0...axis_max).step(axis_step) do |y|
167
+ value = Math.sin(x/50) * Math.cos(y/50) * 50 + 50
168
+ dataset.add(x: x, y: y, z: value, style: value)
169
+ end
170
+ end
171
+ dom_node = Vis::Graph3d.test_container
172
+ g3d = Vis::Graph3d.new(dom_node, dataset, options)
173
+ created = dom_node.JS[:children].JS[:length]
174
+ g3d.redraw
175
+ redrawn = dom_node.JS[:children].JS[:length]
176
+ [g3d.is_a?(Vis::Graph3d), created, redrawn]
177
+ end.to eq([true, 1, 1])
178
+ end
179
+
180
+ it 'can set the size' do
181
+ expect_evaluate_ruby do
182
+ options = {
183
+ width: '600px',
184
+ height: '600px',
185
+ style: 'surface',
186
+ show_perspective: true,
187
+ show_grid: true,
188
+ show_shadow: false,
189
+ keep_aspect_ratio: true,
190
+ vertical_ratio: 0.5
191
+ }
192
+ dataset = Vis::DataSet.new
193
+ steps = 50 # number of datapoints will be steps*steps
194
+ axis_max = 314
195
+ axis_step = axis_max / steps
196
+ (0...axis_max).step(axis_step) do |x|
197
+ (0...axis_max).step(axis_step) do |y|
198
+ value = Math.sin(x/50) * Math.cos(y/50) * 50 + 50
199
+ dataset.add(x: x, y: y, z: value, style: value)
200
+ end
201
+ end
202
+ dom_node = Vis::Graph3d.test_container
203
+ g3d = Vis::Graph3d.new(dom_node, dataset, options)
204
+ created = dom_node.JS[:children].JS[:length]
205
+ g3d.set_size('400px', '300px')
206
+ dom_node.JS.querySelector('canvas')
207
+ [g3d.is_a?(Vis::Graph3d), created]
208
+ end.to eq([true, 1])
209
+ end
210
+
211
+ it 'can set and get the camera position' do
212
+ expect_evaluate_ruby do
213
+ options = {
214
+ width: '600px',
215
+ height: '600px',
216
+ style: 'surface',
217
+ show_perspective: true,
218
+ show_grid: true,
219
+ show_shadow: false,
220
+ keep_aspect_ratio: true,
221
+ vertical_ratio: 0.5
222
+ }
223
+ dataset = Vis::DataSet.new
224
+ steps = 50 # number of datapoints will be steps*steps
225
+ axis_max = 314
226
+ axis_step = axis_max / steps
227
+ (0...axis_max).step(axis_step) do |x|
228
+ (0...axis_max).step(axis_step) do |y|
229
+ value = Math.sin(x/50) * Math.cos(y/50) * 50 + 50
230
+ dataset.add(x: x, y: y, z: value, style: value)
231
+ end
232
+ end
233
+ dom_node = Vis::Graph3d.test_container
234
+ g3d = Vis::Graph3d.new(dom_node, dataset, options)
235
+ created = dom_node.JS[:children].JS[:length]
236
+ position = g3d.get_camera_position
237
+ new_position = position.dup
238
+ new_position[:distance] = new_position[:distance] + 1
239
+ g3d.set_camera_position(new_position)
240
+ final_position = g3d.get_camera_position
241
+ [g3d.is_a?(Vis::Graph3d), created, final_position[:distance] == new_position[:distance]]
242
+ end.to eq([true, 1, true])
243
+ end
244
+
245
+ xit 'animation_start'
246
+ xit 'animation_stop'
247
+ end
@@ -0,0 +1,89 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Hyperloop::Vis::Timeline::Component', js: true do
4
+
5
+ it 'creates a component by using the mixin and renders it' do
6
+ mount 'OuterComponent' do
7
+ class VisComponent
8
+ include Hyperloop::Vis::Timeline::Mixin
9
+
10
+ render_with_dom_node do |dom_node, items|
11
+ net = Vis::Timeline.new(dom_node, items)
12
+ end
13
+ end
14
+ class OuterComponent < Hyperloop::Component
15
+ render do
16
+ data = Vis::DataSet.new([
17
+ {id: 1, content: 'item 1', start: '2013-04-20'},
18
+ {id: 2, content: 'item 2', start: '2013-04-14'},
19
+ {id: 3, content: 'item 3', start: '2013-04-18'},
20
+ {id: 4, content: 'item 4', start: '2013-04-16', end: '2013-04-19'},
21
+ {id: 5, content: 'item 5', start: '2013-04-25'},
22
+ {id: 6, content: 'item 6', start: '2013-04-27'}
23
+ ])
24
+ DIV { VisComponent(items: data) }
25
+ end
26
+ end
27
+ end
28
+ expect(page.body).to include('class="vis-timeline')
29
+ end
30
+
31
+ it 'creates a component by inheriting and renders it' do
32
+ mount 'OuterComponent' do
33
+ class VisComponent < Hyperloop::Vis::Timeline::Component
34
+ render_with_dom_node do |dom_node, items|
35
+ net = Vis::Timeline.new(dom_node, items)
36
+ end
37
+ end
38
+ class OuterComponent < Hyperloop::Component
39
+ render do
40
+ data = Vis::DataSet.new([
41
+ {id: 1, content: 'item 1', start: '2013-04-20'},
42
+ {id: 2, content: 'item 2', start: '2013-04-14'},
43
+ {id: 3, content: 'item 3', start: '2013-04-18'},
44
+ {id: 4, content: 'item 4', start: '2013-04-16', end: '2013-04-19'},
45
+ {id: 5, content: 'item 5', start: '2013-04-25'},
46
+ {id: 6, content: 'item 6', start: '2013-04-27'}
47
+ ])
48
+ DIV { VisComponent(items: data) }
49
+ end
50
+ end
51
+ end
52
+ expect(page.body).to include('class="vis-timeline')
53
+ end
54
+
55
+ it 'actually passes the params to the component' do
56
+ mount 'OuterComponent' do
57
+ class VisComponent < Hyperloop::Vis::Timeline::Component
58
+ def self.passed_data
59
+ @@passed_data
60
+ end
61
+ def self.passed_options
62
+ @@passed_options
63
+ end
64
+ render_with_dom_node do |dom_node, items, groups, options|
65
+ @@passed_data = items
66
+ @@passed_options = options
67
+ net = Vis::Timeline.new(dom_node, items, options)
68
+ end
69
+ end
70
+ class OuterComponent < Hyperloop::Component
71
+ render do
72
+ data = Vis::DataSet.new([
73
+ {id: 1, content: 'item 1', start: '2013-04-20'},
74
+ {id: 2, content: 'item 2', start: '2013-04-14'},
75
+ {id: 3, content: 'item 3', start: '2013-04-18'},
76
+ {id: 4, content: 'item 4', start: '2013-04-16', end: '2013-04-19'},
77
+ {id: 5, content: 'item 5', start: '2013-04-25'},
78
+ {id: 6, content: 'item 6', start: '2013-04-27'}
79
+ ])
80
+ options = { align: 'left' }
81
+ DIV { VisComponent(items: data, options: options)}
82
+ end
83
+ end
84
+ end
85
+ expect(page.body).to include('class="vis-timeline')
86
+ expect_evaluate_ruby('VisComponent.passed_data.is_a?(Vis::DataSet)').to eq(true)
87
+ expect_evaluate_ruby('VisComponent.passed_options.has_key?(:align)').to eq(true)
88
+ end
89
+ end