hyper-vis 1.0.0.lap25 → 1.0.0.lap26

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
  SHA256:
3
- metadata.gz: 749aaea83b655118b902175e75dee3dc7d6be3b4ad94f6f99ddd59382518d257
4
- data.tar.gz: 7b59a5aa4e67be9c9da57be137949d59bf228cd977ced44d78ef16af2face9fd
3
+ metadata.gz: a5ca235e1473450e7e8bb6d5d6dc3d9e3cbc5434beaf9817acce9b28ef8b614d
4
+ data.tar.gz: 7210dd81862749f8ab0bad615f4f10eaa40b236d2d9b1695e9aad6c111ee22ba
5
5
  SHA512:
6
- metadata.gz: 4cf89533e6e15d81f85fe3a9dbb744d24612d4262af39323937004935504cb29fb69766d606e249d3ebc39d38819e38d5040809a670ea1f6dd1c0ccabd759ec4
7
- data.tar.gz: 8befb906b571f215eb6b884d953000acb468907fdd88c0120cdecdd4755187ab8e5b8d3f200070892d37ccb93ada3f5e8d51c2afbb981f3287e3f1a231ea5f74
6
+ metadata.gz: 7198cc58880d826bdd3c035c2573d1bf900742bdd89e56551193b74ae6d22c9482682699035275dce33a88fb2dc0015cfc9af7434ee442c6898526c8e6a18e91
7
+ data.tar.gz: 9ff30ffb4c13436d2b7e17dbbee8f1ec5a7e938fb94dba19c5988ad9896b2e6500feebeded9b713f7326f764a8fb7fdb8e774e5bfda717269dd9a3a043d4a8ee
data/README.md CHANGED
@@ -1,4 +1,62 @@
1
1
  # hyper-vis
2
2
 
3
- No docs yet, See spec/ directory fo usage
4
- Vis Stylesheets not included yet.
3
+ A Opal Ruby wraper for (Vis.js)[visjs.org] with a Ruby-Hyperloop Component.
4
+ Currently supports the complete API for:
5
+ - Vis Dataset
6
+ - Vis Dataview
7
+ - Vis Network
8
+
9
+ ### Installation
10
+ for a rails app:
11
+ ```
12
+ gem 'hyper-vis'
13
+ ```
14
+ and `bundle update`
15
+ hyper-vis depends on `hyper-component` from (ruby-hyperloop)[http://ruby-hyperloop.org]
16
+
17
+ ### Usage
18
+
19
+ vis.js is automatically imported. If you use webpacker, you may need to cancel the import in your config/intializers/hyperloop.rb
20
+ ```
21
+ config.cancel_import 'vis/source/vis.js'
22
+ ```
23
+ stylesheets are includes in 'vis/source/vis.css', images are there too.
24
+
25
+ #### The Vis part
26
+ ```
27
+ dataset = Vis::DataSet.new([{id: 1, name: 'foo'}, {id: 2, name: 'bar'}, {id: 3, name: 'pub'}])
28
+ edge_dataset = Vis::DataSet.new([{from: 1, to: 2}, {from: 2, to: 3}])
29
+ dom_node = Vis::Network.test_container
30
+ net = Vis::Network.new(dom_node, {nodes: dataset, edges: edge_dataset})
31
+ xy = net.canvas_to_dom({x: 10, y: 10})
32
+ ```
33
+ #### The Component part
34
+ The Component takes care about all the things necessary to make Vis.js play nice with React.
35
+ The Component also provides a helper to access the document.
36
+ Vis::Network can be used within the render_with_dom_node.
37
+ ```
38
+ class MyVisNetworkComponent
39
+ include Hyperloop::Vis::Network::Mixin
40
+
41
+ render_with_dom_node do |dom_node, data, options|
42
+
43
+ net = Vis::Network.new(dom_node, data, options)
44
+
45
+ canvas = document.JS.querySelector('canvas')
46
+ end
47
+ end
48
+
49
+ class AOuterComponent < Hyperloop::Component
50
+ render do
51
+ received_data = []
52
+
53
+ options = { manipulation: {
54
+ edit_node: proc { |node_data, callback| received_data << node_data }
55
+ }}
56
+
57
+ data = Vis::DataSet.new([{id: 1, name: 'foo'}, {id: 2, name: 'bar'}, {id: 3, name: 'pub'}])
58
+
59
+ DIV { MyVisNetworkComponent(data: data, otions: options)}
60
+ end
61
+ end
62
+ ```
data/lib/hyper-vis.rb CHANGED
@@ -8,8 +8,8 @@ require 'hyperloop/vis/version'
8
8
  if RUBY_ENGINE == 'opal'
9
9
  require 'vis'
10
10
  require 'hyper-component'
11
- require 'hyperloop/vis/mixin'
12
- require 'hyperloop/vis/component'
11
+ require 'hyperloop/vis/network/mixin'
12
+ require 'hyperloop/vis/network/component'
13
13
  else
14
14
  Opal.append_path __dir__.untaint
15
15
  end
@@ -0,0 +1,15 @@
1
+ module Hyperloop
2
+ module Vis
3
+ module Network
4
+ class Component
5
+ include Hyperloop::Vis::Network::Mixin
6
+ def self.inherited(base)
7
+ base.class_eval do
8
+ param data: nil
9
+ param options: nil
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,67 @@
1
+ require 'react/component'
2
+
3
+ module Hyperloop
4
+ module Vis
5
+ module Network
6
+ module Mixin
7
+ def self.included(base)
8
+ base.include(Hyperloop::Component::Mixin)
9
+ base.class_eval do
10
+ param data: nil
11
+ param options: nil
12
+
13
+ def _set_dom_node(dom_node)
14
+ @_dom_node = dom_node
15
+ end
16
+
17
+ def data
18
+ @_data
19
+ end
20
+
21
+ def document
22
+ `window.document`
23
+ end
24
+
25
+ def options
26
+ @_options
27
+ end
28
+
29
+ def self.render_with_dom_node(tag = 'DIV', &block)
30
+ render do
31
+ @_vis_render_block = block
32
+ @_data = params.data
33
+ @_options = params.options
34
+ send(tag, ref: method(:_set_dom_node).to_proc)
35
+ end
36
+ end
37
+
38
+ def should_component_update?
39
+ false
40
+ end
41
+
42
+ after_mount do
43
+ if @_dom_node && @_vis_render_block
44
+ @_vis_render_block.call(@_dom_node, @_data, @_options)
45
+ end
46
+ end
47
+
48
+ before_receive_props do |new_props|
49
+ changed = false
50
+ if new_props[:data] != @_data
51
+ @_data = new_props[:data]
52
+ changed = true
53
+ end
54
+ if new_props[:options] != @_options
55
+ @_options = new_props[:options]
56
+ changed = true
57
+ end
58
+ if changed && @_dom_node && @_vis_render_block
59
+ @_vis_render_block.call(@_dom_node, @_data, @_options)
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
@@ -1,5 +1,5 @@
1
1
  module Hyperloop
2
2
  module Vis
3
- VERSION = '1.0.0.lap25'
3
+ VERSION = '1.0.0.lap26'
4
4
  end
5
5
  end
data/lib/vis/network.rb CHANGED
@@ -53,13 +53,16 @@ module Vis
53
53
  @event_handlers[event].delete(event_handler_id)
54
54
  end
55
55
 
56
+ EVENTS_NO_COVERSION = %i[afterDrawing beforeDrawing blurEdge blurNode hoverEdge hoverNode showPopup]
57
+ EVENTS_NO_PARAM = %i[hidePopup startStabilizing stabilizationIterationsDone initRedraw]
58
+
56
59
  def on(event, &block)
57
60
  event = lower_camelize(event)
58
61
  @event_handlers[event] = {} unless @event_handlers[event]
59
62
  event_handler_id = `Math.random().toString(36).substring(6)`
60
- handler = if %i[afterDrawing beforeDrawing blurEdge blurNode hoverEdge hoverNode showPopup].include?(event)
63
+ handler = if EVENTS_NO_COVERSION.include?(event)
61
64
  `function(param) { #{block.call(`param`)}; }`
62
- elsif %i[hidePopup startStabilizing stabilizationIterationsDone initRedraw].include?(event)
65
+ elsif EVENTS_NO_PARAM.include?(event)
63
66
  `function() { #{block.call}; }`
64
67
  else
65
68
  `function(event_info) { #{block.call(`Opal.Hash.$new(event_info)`)}; }`
@@ -70,9 +73,9 @@ module Vis
70
73
  end
71
74
 
72
75
  def once(event, &block)
73
- handler = if %i[afterDrawing beforeDrawing blurEdge blurNode hoverEdge hoverNode showPopup].include?(event)
76
+ handler = if EVENTS_NO_COVERSION.include?(event)
74
77
  `function(param) { #{block.call(`param`)}; }`
75
- elsif %i[hidePopup startStabilizing stabilizationIterationsDone initRedraw].include?(event)
78
+ elsif EVENTS_NO_PARAM.include?(event)
76
79
  `function() { #{block.call}; }`
77
80
  else
78
81
  `function(event_info) { #{block.call(`Opal.Hash.$new(event_info)`)}; }`
Binary file
@@ -0,0 +1,1448 @@
1
+ .vis .overlay {
2
+ position: absolute;
3
+ top: 0;
4
+ left: 0;
5
+ width: 100%;
6
+ height: 100%;
7
+
8
+ /* Must be displayed above for example selected Timeline items */
9
+ z-index: 10;
10
+ }
11
+
12
+ .vis-active {
13
+ box-shadow: 0 0 10px #86d5f8;
14
+ }
15
+
16
+ /* override some bootstrap styles screwing up the timelines css */
17
+
18
+ .vis [class*="span"] {
19
+ min-height: 0;
20
+ width: auto;
21
+ }
22
+
23
+ div.vis-configuration {
24
+ position:relative;
25
+ display:block;
26
+ float:left;
27
+ font-size:12px;
28
+ }
29
+
30
+ div.vis-configuration-wrapper {
31
+ display:block;
32
+ width:700px;
33
+ }
34
+
35
+ div.vis-configuration-wrapper::after {
36
+ clear: both;
37
+ content: "";
38
+ display: block;
39
+ }
40
+
41
+ div.vis-configuration.vis-config-option-container{
42
+ display:block;
43
+ width:495px;
44
+ background-color: #ffffff;
45
+ border:2px solid #f7f8fa;
46
+ border-radius:4px;
47
+ margin-top:20px;
48
+ left:10px;
49
+ padding-left:5px;
50
+ }
51
+
52
+ div.vis-configuration.vis-config-button{
53
+ display:block;
54
+ width:495px;
55
+ height:25px;
56
+ vertical-align: middle;
57
+ line-height:25px;
58
+ background-color: #f7f8fa;
59
+ border:2px solid #ceced0;
60
+ border-radius:4px;
61
+ margin-top:20px;
62
+ left:10px;
63
+ padding-left:5px;
64
+ cursor: pointer;
65
+ margin-bottom:30px;
66
+ }
67
+
68
+ div.vis-configuration.vis-config-button.hover{
69
+ background-color: #4588e6;
70
+ border:2px solid #214373;
71
+ color:#ffffff;
72
+ }
73
+
74
+ div.vis-configuration.vis-config-item{
75
+ display:block;
76
+ float:left;
77
+ width:495px;
78
+ height:25px;
79
+ vertical-align: middle;
80
+ line-height:25px;
81
+ }
82
+
83
+
84
+ div.vis-configuration.vis-config-item.vis-config-s2{
85
+ left:10px;
86
+ background-color: #f7f8fa;
87
+ padding-left:5px;
88
+ border-radius:3px;
89
+ }
90
+ div.vis-configuration.vis-config-item.vis-config-s3{
91
+ left:20px;
92
+ background-color: #e4e9f0;
93
+ padding-left:5px;
94
+ border-radius:3px;
95
+ }
96
+ div.vis-configuration.vis-config-item.vis-config-s4{
97
+ left:30px;
98
+ background-color: #cfd8e6;
99
+ padding-left:5px;
100
+ border-radius:3px;
101
+ }
102
+
103
+ div.vis-configuration.vis-config-header{
104
+ font-size:18px;
105
+ font-weight: bold;
106
+ }
107
+
108
+ div.vis-configuration.vis-config-label{
109
+ width:120px;
110
+ height:25px;
111
+ line-height: 25px;
112
+ }
113
+
114
+ div.vis-configuration.vis-config-label.vis-config-s3{
115
+ width:110px;
116
+ }
117
+ div.vis-configuration.vis-config-label.vis-config-s4{
118
+ width:100px;
119
+ }
120
+
121
+ div.vis-configuration.vis-config-colorBlock{
122
+ top:1px;
123
+ width:30px;
124
+ height:19px;
125
+ border:1px solid #444444;
126
+ border-radius:2px;
127
+ padding:0px;
128
+ margin:0px;
129
+ cursor:pointer;
130
+ }
131
+
132
+ input.vis-configuration.vis-config-checkbox {
133
+ left:-5px;
134
+ }
135
+
136
+
137
+ input.vis-configuration.vis-config-rangeinput{
138
+ position:relative;
139
+ top:-5px;
140
+ width:60px;
141
+ /*height:13px;*/
142
+ padding:1px;
143
+ margin:0;
144
+ pointer-events:none;
145
+ }
146
+
147
+ input.vis-configuration.vis-config-range{
148
+ /*removes default webkit styles*/
149
+ -webkit-appearance: none;
150
+
151
+ /*fix for FF unable to apply focus style bug */
152
+ border: 0px solid white;
153
+ background-color:rgba(0,0,0,0);
154
+
155
+ /*required for proper track sizing in FF*/
156
+ width: 300px;
157
+ height:20px;
158
+ }
159
+ input.vis-configuration.vis-config-range::-webkit-slider-runnable-track {
160
+ width: 300px;
161
+ height: 5px;
162
+ background: #dedede; /* Old browsers */
163
+ background: -moz-linear-gradient(top, #dedede 0%, #c8c8c8 99%); /* FF3.6+ */
164
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#dedede), color-stop(99%,#c8c8c8)); /* Chrome,Safari4+ */
165
+ background: -webkit-linear-gradient(top, #dedede 0%,#c8c8c8 99%); /* Chrome10+,Safari5.1+ */
166
+ background: -o-linear-gradient(top, #dedede 0%, #c8c8c8 99%); /* Opera 11.10+ */
167
+ background: -ms-linear-gradient(top, #dedede 0%,#c8c8c8 99%); /* IE10+ */
168
+ background: linear-gradient(to bottom, #dedede 0%,#c8c8c8 99%); /* W3C */
169
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#dedede', endColorstr='#c8c8c8',GradientType=0 ); /* IE6-9 */
170
+
171
+ border: 1px solid #999999;
172
+ box-shadow: #aaaaaa 0px 0px 3px 0px;
173
+ border-radius: 3px;
174
+ }
175
+ input.vis-configuration.vis-config-range::-webkit-slider-thumb {
176
+ -webkit-appearance: none;
177
+ border: 1px solid #14334b;
178
+ height: 17px;
179
+ width: 17px;
180
+ border-radius: 50%;
181
+ background: #3876c2; /* Old browsers */
182
+ background: -moz-linear-gradient(top, #3876c2 0%, #385380 100%); /* FF3.6+ */
183
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#3876c2), color-stop(100%,#385380)); /* Chrome,Safari4+ */
184
+ background: -webkit-linear-gradient(top, #3876c2 0%,#385380 100%); /* Chrome10+,Safari5.1+ */
185
+ background: -o-linear-gradient(top, #3876c2 0%,#385380 100%); /* Opera 11.10+ */
186
+ background: -ms-linear-gradient(top, #3876c2 0%,#385380 100%); /* IE10+ */
187
+ background: linear-gradient(to bottom, #3876c2 0%,#385380 100%); /* W3C */
188
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#3876c2', endColorstr='#385380',GradientType=0 ); /* IE6-9 */
189
+ box-shadow: #111927 0px 0px 1px 0px;
190
+ margin-top: -7px;
191
+ }
192
+ input.vis-configuration.vis-config-range:focus {
193
+ outline: none;
194
+ }
195
+ input.vis-configuration.vis-config-range:focus::-webkit-slider-runnable-track {
196
+ background: #9d9d9d; /* Old browsers */
197
+ background: -moz-linear-gradient(top, #9d9d9d 0%, #c8c8c8 99%); /* FF3.6+ */
198
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#9d9d9d), color-stop(99%,#c8c8c8)); /* Chrome,Safari4+ */
199
+ background: -webkit-linear-gradient(top, #9d9d9d 0%,#c8c8c8 99%); /* Chrome10+,Safari5.1+ */
200
+ background: -o-linear-gradient(top, #9d9d9d 0%,#c8c8c8 99%); /* Opera 11.10+ */
201
+ background: -ms-linear-gradient(top, #9d9d9d 0%,#c8c8c8 99%); /* IE10+ */
202
+ background: linear-gradient(to bottom, #9d9d9d 0%,#c8c8c8 99%); /* W3C */
203
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#9d9d9d', endColorstr='#c8c8c8',GradientType=0 ); /* IE6-9 */
204
+ }
205
+
206
+ input.vis-configuration.vis-config-range::-moz-range-track {
207
+ width: 300px;
208
+ height: 10px;
209
+ background: #dedede; /* Old browsers */
210
+ background: -moz-linear-gradient(top, #dedede 0%, #c8c8c8 99%); /* FF3.6+ */
211
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#dedede), color-stop(99%,#c8c8c8)); /* Chrome,Safari4+ */
212
+ background: -webkit-linear-gradient(top, #dedede 0%,#c8c8c8 99%); /* Chrome10+,Safari5.1+ */
213
+ background: -o-linear-gradient(top, #dedede 0%, #c8c8c8 99%); /* Opera 11.10+ */
214
+ background: -ms-linear-gradient(top, #dedede 0%,#c8c8c8 99%); /* IE10+ */
215
+ background: linear-gradient(to bottom, #dedede 0%,#c8c8c8 99%); /* W3C */
216
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#dedede', endColorstr='#c8c8c8',GradientType=0 ); /* IE6-9 */
217
+
218
+ border: 1px solid #999999;
219
+ box-shadow: #aaaaaa 0px 0px 3px 0px;
220
+ border-radius: 3px;
221
+ }
222
+ input.vis-configuration.vis-config-range::-moz-range-thumb {
223
+ border: none;
224
+ height: 16px;
225
+ width: 16px;
226
+
227
+ border-radius: 50%;
228
+ background: #385380;
229
+ }
230
+
231
+ /*hide the outline behind the border*/
232
+ input.vis-configuration.vis-config-range:-moz-focusring{
233
+ outline: 1px solid white;
234
+ outline-offset: -1px;
235
+ }
236
+
237
+ input.vis-configuration.vis-config-range::-ms-track {
238
+ width: 300px;
239
+ height: 5px;
240
+
241
+ /*remove bg colour from the track, we'll use ms-fill-lower and ms-fill-upper instead */
242
+ background: transparent;
243
+
244
+ /*leave room for the larger thumb to overflow with a transparent border */
245
+ border-color: transparent;
246
+ border-width: 6px 0;
247
+
248
+ /*remove default tick marks*/
249
+ color: transparent;
250
+ }
251
+ input.vis-configuration.vis-config-range::-ms-fill-lower {
252
+ background: #777;
253
+ border-radius: 10px;
254
+ }
255
+ input.vis-configuration.vis-config-range::-ms-fill-upper {
256
+ background: #ddd;
257
+ border-radius: 10px;
258
+ }
259
+ input.vis-configuration.vis-config-range::-ms-thumb {
260
+ border: none;
261
+ height: 16px;
262
+ width: 16px;
263
+ border-radius: 50%;
264
+ background: #385380;
265
+ }
266
+ input.vis-configuration.vis-config-range:focus::-ms-fill-lower {
267
+ background: #888;
268
+ }
269
+ input.vis-configuration.vis-config-range:focus::-ms-fill-upper {
270
+ background: #ccc;
271
+ }
272
+
273
+ .vis-configuration-popup {
274
+ position: absolute;
275
+ background: rgba(57, 76, 89, 0.85);
276
+ border: 2px solid #f2faff;
277
+ line-height:30px;
278
+ height:30px;
279
+ width:150px;
280
+ text-align:center;
281
+ color: #ffffff;
282
+ font-size:14px;
283
+ border-radius:4px;
284
+ -webkit-transition: opacity 0.3s ease-in-out;
285
+ -moz-transition: opacity 0.3s ease-in-out;
286
+ transition: opacity 0.3s ease-in-out;
287
+ }
288
+ .vis-configuration-popup:after, .vis-configuration-popup:before {
289
+ left: 100%;
290
+ top: 50%;
291
+ border: solid transparent;
292
+ content: " ";
293
+ height: 0;
294
+ width: 0;
295
+ position: absolute;
296
+ pointer-events: none;
297
+ }
298
+
299
+ .vis-configuration-popup:after {
300
+ border-color: rgba(136, 183, 213, 0);
301
+ border-left-color: rgba(57, 76, 89, 0.85);
302
+ border-width: 8px;
303
+ margin-top: -8px;
304
+ }
305
+ .vis-configuration-popup:before {
306
+ border-color: rgba(194, 225, 245, 0);
307
+ border-left-color: #f2faff;
308
+ border-width: 12px;
309
+ margin-top: -12px;
310
+ }
311
+ div.vis-tooltip {
312
+ position: absolute;
313
+ visibility: hidden;
314
+ padding: 5px;
315
+ white-space: nowrap;
316
+
317
+ font-family: verdana;
318
+ font-size:14px;
319
+ color:#000000;
320
+ background-color: #f5f4ed;
321
+
322
+ -moz-border-radius: 3px;
323
+ -webkit-border-radius: 3px;
324
+ border-radius: 3px;
325
+ border: 1px solid #808074;
326
+
327
+ box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.2);
328
+ pointer-events: none;
329
+
330
+ z-index: 5;
331
+ }
332
+
333
+
334
+ div.vis-color-picker {
335
+ position:absolute;
336
+ top: 0px;
337
+ left: 30px;
338
+ margin-top:-140px;
339
+ margin-left:30px;
340
+ width:310px;
341
+ height:444px;
342
+ z-index: 1;
343
+ padding: 10px;
344
+ border-radius:15px;
345
+ background-color:#ffffff;
346
+ display: none;
347
+ box-shadow: rgba(0,0,0,0.5) 0px 0px 10px 0px;
348
+ }
349
+
350
+ div.vis-color-picker div.vis-arrow {
351
+ position: absolute;
352
+ top:147px;
353
+ left:5px;
354
+ }
355
+
356
+ div.vis-color-picker div.vis-arrow::after,
357
+ div.vis-color-picker div.vis-arrow::before {
358
+ right: 100%;
359
+ top: 50%;
360
+ border: solid transparent;
361
+ content: " ";
362
+ height: 0;
363
+ width: 0;
364
+ position: absolute;
365
+ pointer-events: none;
366
+ }
367
+
368
+ div.vis-color-picker div.vis-arrow:after {
369
+ border-color: rgba(255, 255, 255, 0);
370
+ border-right-color: #ffffff;
371
+ border-width: 30px;
372
+ margin-top: -30px;
373
+ }
374
+
375
+ div.vis-color-picker div.vis-color {
376
+ position:absolute;
377
+ width: 289px;
378
+ height: 289px;
379
+ cursor: pointer;
380
+ }
381
+
382
+
383
+
384
+ div.vis-color-picker div.vis-brightness {
385
+ position: absolute;
386
+ top:313px;
387
+ }
388
+
389
+ div.vis-color-picker div.vis-opacity {
390
+ position:absolute;
391
+ top:350px;
392
+ }
393
+
394
+ div.vis-color-picker div.vis-selector {
395
+ position:absolute;
396
+ top:137px;
397
+ left:137px;
398
+ width:15px;
399
+ height:15px;
400
+ border-radius:15px;
401
+ border:1px solid #ffffff;
402
+ background: #4c4c4c; /* Old browsers */
403
+ background: -moz-linear-gradient(top, #4c4c4c 0%, #595959 12%, #666666 25%, #474747 39%, #2c2c2c 50%, #000000 51%, #111111 60%, #2b2b2b 76%, #1c1c1c 91%, #131313 100%); /* FF3.6+ */
404
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#4c4c4c), color-stop(12%,#595959), color-stop(25%,#666666), color-stop(39%,#474747), color-stop(50%,#2c2c2c), color-stop(51%,#000000), color-stop(60%,#111111), color-stop(76%,#2b2b2b), color-stop(91%,#1c1c1c), color-stop(100%,#131313)); /* Chrome,Safari4+ */
405
+ background: -webkit-linear-gradient(top, #4c4c4c 0%,#595959 12%,#666666 25%,#474747 39%,#2c2c2c 50%,#000000 51%,#111111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%); /* Chrome10+,Safari5.1+ */
406
+ background: -o-linear-gradient(top, #4c4c4c 0%,#595959 12%,#666666 25%,#474747 39%,#2c2c2c 50%,#000000 51%,#111111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%); /* Opera 11.10+ */
407
+ background: -ms-linear-gradient(top, #4c4c4c 0%,#595959 12%,#666666 25%,#474747 39%,#2c2c2c 50%,#000000 51%,#111111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%); /* IE10+ */
408
+ background: linear-gradient(to bottom, #4c4c4c 0%,#595959 12%,#666666 25%,#474747 39%,#2c2c2c 50%,#000000 51%,#111111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%); /* W3C */
409
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#4c4c4c', endColorstr='#131313',GradientType=0 ); /* IE6-9 */
410
+ }
411
+
412
+
413
+
414
+ div.vis-color-picker div.vis-new-color {
415
+ position:absolute;
416
+ width:140px;
417
+ height:20px;
418
+ border:1px solid rgba(0,0,0,0.1);
419
+ border-radius:5px;
420
+ top:380px;
421
+ left:159px;
422
+ text-align:right;
423
+ padding-right:2px;
424
+ font-size:10px;
425
+ color:rgba(0,0,0,0.4);
426
+ vertical-align:middle;
427
+ line-height:20px;
428
+
429
+ }
430
+
431
+ div.vis-color-picker div.vis-initial-color {
432
+ position:absolute;
433
+ width:140px;
434
+ height:20px;
435
+ border:1px solid rgba(0,0,0,0.1);
436
+ border-radius:5px;
437
+ top:380px;
438
+ left:10px;
439
+ text-align:left;
440
+ padding-left:2px;
441
+ font-size:10px;
442
+ color:rgba(0,0,0,0.4);
443
+ vertical-align:middle;
444
+ line-height:20px;
445
+ }
446
+
447
+ div.vis-color-picker div.vis-label {
448
+ position:absolute;
449
+ width:300px;
450
+ left:10px;
451
+ }
452
+
453
+ div.vis-color-picker div.vis-label.vis-brightness {
454
+ top:300px;
455
+ }
456
+
457
+ div.vis-color-picker div.vis-label.vis-opacity {
458
+ top:338px;
459
+ }
460
+
461
+ div.vis-color-picker div.vis-button {
462
+ position:absolute;
463
+ width:68px;
464
+ height:25px;
465
+ border-radius:10px;
466
+ vertical-align: middle;
467
+ text-align:center;
468
+ line-height: 25px;
469
+ top:410px;
470
+ border:2px solid #d9d9d9;
471
+ background-color: #f7f7f7;
472
+ cursor:pointer;
473
+ }
474
+
475
+ div.vis-color-picker div.vis-button.vis-cancel {
476
+ /*border:2px solid #ff4e33;*/
477
+ /*background-color: #ff7761;*/
478
+ left:5px;
479
+ }
480
+ div.vis-color-picker div.vis-button.vis-load {
481
+ /*border:2px solid #a153e6;*/
482
+ /*background-color: #cb8dff;*/
483
+ left:82px;
484
+ }
485
+ div.vis-color-picker div.vis-button.vis-apply {
486
+ /*border:2px solid #4588e6;*/
487
+ /*background-color: #82b6ff;*/
488
+ left:159px;
489
+ }
490
+ div.vis-color-picker div.vis-button.vis-save {
491
+ /*border:2px solid #45e655;*/
492
+ /*background-color: #6dff7c;*/
493
+ left:236px;
494
+ }
495
+
496
+
497
+ div.vis-color-picker input.vis-range {
498
+ width: 290px;
499
+ height:20px;
500
+ }
501
+
502
+ /* TODO: is this redundant?
503
+ div.vis-color-picker input.vis-range-brightness {
504
+ width: 289px !important;
505
+ }
506
+
507
+
508
+ div.vis-color-picker input.vis-saturation-range {
509
+ width: 289px !important;
510
+ }*/
511
+ div.vis-network div.vis-manipulation {
512
+ box-sizing: content-box;
513
+
514
+ border-width: 0;
515
+ border-bottom: 1px;
516
+ border-style:solid;
517
+ border-color: #d6d9d8;
518
+ background: #ffffff; /* Old browsers */
519
+ background: -moz-linear-gradient(top, #ffffff 0%, #fcfcfc 48%, #fafafa 50%, #fcfcfc 100%); /* FF3.6+ */
520
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(48%,#fcfcfc), color-stop(50%,#fafafa), color-stop(100%,#fcfcfc)); /* Chrome,Safari4+ */
521
+ background: -webkit-linear-gradient(top, #ffffff 0%,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%); /* Chrome10+,Safari5.1+ */
522
+ background: -o-linear-gradient(top, #ffffff 0%,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%); /* Opera 11.10+ */
523
+ background: -ms-linear-gradient(top, #ffffff 0%,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%); /* IE10+ */
524
+ background: linear-gradient(to bottom, #ffffff 0%,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%); /* W3C */
525
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#fcfcfc',GradientType=0 ); /* IE6-9 */
526
+
527
+ padding-top:4px;
528
+ position: absolute;
529
+ left: 0;
530
+ top: 0;
531
+ width: 100%;
532
+ height: 28px;
533
+ }
534
+
535
+ div.vis-network div.vis-edit-mode {
536
+ position:absolute;
537
+ left: 0;
538
+ top: 5px;
539
+ height: 30px;
540
+ }
541
+
542
+ /* FIXME: shouldn't the vis-close button be a child of the vis-manipulation div? */
543
+
544
+ div.vis-network div.vis-close {
545
+ position:absolute;
546
+ right: 0;
547
+ top: 0;
548
+ width: 30px;
549
+ height: 30px;
550
+
551
+ background-position: 20px 3px;
552
+ background-repeat: no-repeat;
553
+ background-image: url("img/network/cross.png");
554
+ cursor: pointer;
555
+ -webkit-touch-callout: none;
556
+ -webkit-user-select: none;
557
+ -khtml-user-select: none;
558
+ -moz-user-select: none;
559
+ -ms-user-select: none;
560
+ user-select: none;
561
+ }
562
+
563
+ div.vis-network div.vis-close:hover {
564
+ opacity: 0.6;
565
+ }
566
+
567
+ div.vis-network div.vis-manipulation div.vis-button,
568
+ div.vis-network div.vis-edit-mode div.vis-button {
569
+ float:left;
570
+ font-family: verdana;
571
+ font-size: 12px;
572
+ -moz-border-radius: 15px;
573
+ border-radius: 15px;
574
+ display:inline-block;
575
+ background-position: 0px 0px;
576
+ background-repeat:no-repeat;
577
+ height:24px;
578
+ margin-left: 10px;
579
+ /*vertical-align:middle;*/
580
+ cursor: pointer;
581
+ padding: 0px 8px 0px 8px;
582
+ -webkit-touch-callout: none;
583
+ -webkit-user-select: none;
584
+ -khtml-user-select: none;
585
+ -moz-user-select: none;
586
+ -ms-user-select: none;
587
+ user-select: none;
588
+ }
589
+
590
+ div.vis-network div.vis-manipulation div.vis-button:hover {
591
+ box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.20);
592
+ }
593
+
594
+ div.vis-network div.vis-manipulation div.vis-button:active {
595
+ box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.50);
596
+ }
597
+
598
+ div.vis-network div.vis-manipulation div.vis-button.vis-back {
599
+ background-image: url("img/network/backIcon.png");
600
+ }
601
+
602
+ div.vis-network div.vis-manipulation div.vis-button.vis-none:hover {
603
+ box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.0);
604
+ cursor: default;
605
+ }
606
+ div.vis-network div.vis-manipulation div.vis-button.vis-none:active {
607
+ box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.0);
608
+ }
609
+ div.vis-network div.vis-manipulation div.vis-button.vis-none {
610
+ padding: 0;
611
+ }
612
+ div.vis-network div.vis-manipulation div.notification {
613
+ margin: 2px;
614
+ font-weight: bold;
615
+ }
616
+
617
+ div.vis-network div.vis-manipulation div.vis-button.vis-add {
618
+ background-image: url("img/network/addNodeIcon.png");
619
+ }
620
+
621
+ div.vis-network div.vis-manipulation div.vis-button.vis-edit,
622
+ div.vis-network div.vis-edit-mode div.vis-button.vis-edit {
623
+ background-image: url("img/network/editIcon.png");
624
+ }
625
+
626
+ div.vis-network div.vis-edit-mode div.vis-button.vis-edit.vis-edit-mode {
627
+ background-color: #fcfcfc;
628
+ border: 1px solid #cccccc;
629
+ }
630
+
631
+ div.vis-network div.vis-manipulation div.vis-button.vis-connect {
632
+ background-image: url("img/network/connectIcon.png");
633
+ }
634
+
635
+ div.vis-network div.vis-manipulation div.vis-button.vis-delete {
636
+ background-image: url("img/network/deleteIcon.png");
637
+ }
638
+ /* top right bottom left */
639
+ div.vis-network div.vis-manipulation div.vis-label,
640
+ div.vis-network div.vis-edit-mode div.vis-label {
641
+ margin: 0 0 0 23px;
642
+ line-height: 25px;
643
+ }
644
+ div.vis-network div.vis-manipulation div.vis-separator-line {
645
+ float:left;
646
+ display:inline-block;
647
+ width:1px;
648
+ height:21px;
649
+ background-color: #bdbdbd;
650
+ margin: 0px 7px 0 15px; /*top right bottom left*/
651
+ }
652
+
653
+ /* TODO: is this redundant?
654
+ div.network-navigation_wrapper {
655
+ position: absolute;
656
+ left: 0;
657
+ top: 0;
658
+ width: 100%;
659
+ height: 100%;
660
+ }
661
+ */
662
+
663
+ div.vis-network div.vis-navigation div.vis-button {
664
+ width:34px;
665
+ height:34px;
666
+ -moz-border-radius: 17px;
667
+ border-radius: 17px;
668
+ position:absolute;
669
+ display:inline-block;
670
+ background-position: 2px 2px;
671
+ background-repeat:no-repeat;
672
+ cursor: pointer;
673
+ -webkit-touch-callout: none;
674
+ -webkit-user-select: none;
675
+ -khtml-user-select: none;
676
+ -moz-user-select: none;
677
+ -ms-user-select: none;
678
+ user-select: none;
679
+ }
680
+
681
+ div.vis-network div.vis-navigation div.vis-button:hover {
682
+ box-shadow: 0 0 3px 3px rgba(56, 207, 21, 0.30);
683
+ }
684
+
685
+ div.vis-network div.vis-navigation div.vis-button:active {
686
+ box-shadow: 0 0 1px 3px rgba(56, 207, 21, 0.95);
687
+ }
688
+
689
+ div.vis-network div.vis-navigation div.vis-button.vis-up {
690
+ background-image: url("img/network/upArrow.png");
691
+ bottom:50px;
692
+ left:55px;
693
+ }
694
+ div.vis-network div.vis-navigation div.vis-button.vis-down {
695
+ background-image: url("img/network/downArrow.png");
696
+ bottom:10px;
697
+ left:55px;
698
+ }
699
+ div.vis-network div.vis-navigation div.vis-button.vis-left {
700
+ background-image: url("img/network/leftArrow.png");
701
+ bottom:10px;
702
+ left:15px;
703
+ }
704
+ div.vis-network div.vis-navigation div.vis-button.vis-right {
705
+ background-image: url("img/network/rightArrow.png");
706
+ bottom:10px;
707
+ left:95px;
708
+ }
709
+ div.vis-network div.vis-navigation div.vis-button.vis-zoomIn {
710
+ background-image: url("img/network/plus.png");
711
+ bottom:10px;
712
+ right:15px;
713
+ }
714
+ div.vis-network div.vis-navigation div.vis-button.vis-zoomOut {
715
+ background-image: url("img/network/minus.png");
716
+ bottom:10px;
717
+ right:55px;
718
+ }
719
+ div.vis-network div.vis-navigation div.vis-button.vis-zoomExtends {
720
+ background-image: url("img/network/zoomExtends.png");
721
+ bottom:50px;
722
+ right:15px;
723
+ }
724
+ .vis-timeline {
725
+ /*
726
+ -webkit-transition: height .4s ease-in-out;
727
+ transition: height .4s ease-in-out;
728
+ */
729
+ }
730
+
731
+ .vis-panel {
732
+ /*
733
+ -webkit-transition: height .4s ease-in-out, top .4s ease-in-out;
734
+ transition: height .4s ease-in-out, top .4s ease-in-out;
735
+ */
736
+ }
737
+
738
+ .vis-axis {
739
+ /*
740
+ -webkit-transition: top .4s ease-in-out;
741
+ transition: top .4s ease-in-out;
742
+ */
743
+ }
744
+
745
+ /* TODO: get animation working nicely
746
+
747
+ .vis-item {
748
+ -webkit-transition: top .4s ease-in-out;
749
+ transition: top .4s ease-in-out;
750
+ }
751
+
752
+ .vis-item.line {
753
+ -webkit-transition: height .4s ease-in-out, top .4s ease-in-out;
754
+ transition: height .4s ease-in-out, top .4s ease-in-out;
755
+ }
756
+ /**/
757
+ .vis-current-time {
758
+ background-color: #FF7F6E;
759
+ width: 2px;
760
+ z-index: 1;
761
+ pointer-events: none;
762
+ }
763
+
764
+ .vis-rolling-mode-btn {
765
+ height: 40px;
766
+ width: 40px;
767
+ position: absolute;
768
+ top: 7px;
769
+ right: 20px;
770
+ border-radius: 50%;
771
+ font-size: 28px;
772
+ cursor: pointer;
773
+ opacity: 0.8;
774
+ color: white;
775
+ font-weight: bold;
776
+ text-align: center;
777
+ background: #3876c2;
778
+ }
779
+ .vis-rolling-mode-btn:before {
780
+ content: "\26F6";
781
+ }
782
+
783
+ .vis-rolling-mode-btn:hover {
784
+ opacity: 1;
785
+ }
786
+ .vis-custom-time {
787
+ background-color: #6E94FF;
788
+ width: 2px;
789
+ cursor: move;
790
+ z-index: 1;
791
+ }
792
+
793
+ .vis-panel.vis-background.vis-horizontal .vis-grid.vis-horizontal {
794
+ position: absolute;
795
+ width: 100%;
796
+ height: 0;
797
+ border-bottom: 1px solid;
798
+ }
799
+
800
+ .vis-panel.vis-background.vis-horizontal .vis-grid.vis-minor {
801
+ border-color: #e5e5e5;
802
+ }
803
+
804
+ .vis-panel.vis-background.vis-horizontal .vis-grid.vis-major {
805
+ border-color: #bfbfbf;
806
+ }
807
+
808
+
809
+ .vis-data-axis .vis-y-axis.vis-major {
810
+ width: 100%;
811
+ position: absolute;
812
+ color: #4d4d4d;
813
+ white-space: nowrap;
814
+ }
815
+
816
+ .vis-data-axis .vis-y-axis.vis-major.vis-measure {
817
+ padding: 0;
818
+ margin: 0;
819
+ border: 0;
820
+ visibility: hidden;
821
+ width: auto;
822
+ }
823
+
824
+
825
+ .vis-data-axis .vis-y-axis.vis-minor {
826
+ position: absolute;
827
+ width: 100%;
828
+ color: #bebebe;
829
+ white-space: nowrap;
830
+ }
831
+
832
+ .vis-data-axis .vis-y-axis.vis-minor.vis-measure {
833
+ padding: 0;
834
+ margin: 0;
835
+ border: 0;
836
+ visibility: hidden;
837
+ width: auto;
838
+ }
839
+
840
+ .vis-data-axis .vis-y-axis.vis-title {
841
+ position: absolute;
842
+ color: #4d4d4d;
843
+ white-space: nowrap;
844
+ bottom: 20px;
845
+ text-align: center;
846
+ }
847
+
848
+ .vis-data-axis .vis-y-axis.vis-title.vis-measure {
849
+ padding: 0;
850
+ margin: 0;
851
+ visibility: hidden;
852
+ width: auto;
853
+ }
854
+
855
+ .vis-data-axis .vis-y-axis.vis-title.vis-left {
856
+ bottom: 0;
857
+ -webkit-transform-origin: left top;
858
+ -moz-transform-origin: left top;
859
+ -ms-transform-origin: left top;
860
+ -o-transform-origin: left top;
861
+ transform-origin: left bottom;
862
+ -webkit-transform: rotate(-90deg);
863
+ -moz-transform: rotate(-90deg);
864
+ -ms-transform: rotate(-90deg);
865
+ -o-transform: rotate(-90deg);
866
+ transform: rotate(-90deg);
867
+ }
868
+
869
+ .vis-data-axis .vis-y-axis.vis-title.vis-right {
870
+ bottom: 0;
871
+ -webkit-transform-origin: right bottom;
872
+ -moz-transform-origin: right bottom;
873
+ -ms-transform-origin: right bottom;
874
+ -o-transform-origin: right bottom;
875
+ transform-origin: right bottom;
876
+ -webkit-transform: rotate(90deg);
877
+ -moz-transform: rotate(90deg);
878
+ -ms-transform: rotate(90deg);
879
+ -o-transform: rotate(90deg);
880
+ transform: rotate(90deg);
881
+ }
882
+
883
+ .vis-legend {
884
+ background-color: rgba(247, 252, 255, 0.65);
885
+ padding: 5px;
886
+ border: 1px solid #b3b3b3;
887
+ box-shadow: 2px 2px 10px rgba(154, 154, 154, 0.55);
888
+ }
889
+
890
+ .vis-legend-text {
891
+ /*font-size: 10px;*/
892
+ white-space: nowrap;
893
+ display: inline-block
894
+ }
895
+
896
+ .vis-item {
897
+ position: absolute;
898
+ color: #1A1A1A;
899
+ border-color: #97B0F8;
900
+ border-width: 1px;
901
+ background-color: #D5DDF6;
902
+ display: inline-block;
903
+ z-index: 1;
904
+ /*overflow: hidden;*/
905
+ }
906
+
907
+ .vis-item.vis-selected {
908
+ border-color: #FFC200;
909
+ background-color: #FFF785;
910
+
911
+ /* z-index must be higher than the z-index of custom time bar and current time bar */
912
+ z-index: 2;
913
+ }
914
+
915
+ .vis-editable.vis-selected {
916
+ cursor: move;
917
+ }
918
+
919
+ .vis-item.vis-point.vis-selected {
920
+ background-color: #FFF785;
921
+ }
922
+
923
+ .vis-item.vis-box {
924
+ text-align: center;
925
+ border-style: solid;
926
+ border-radius: 2px;
927
+ }
928
+
929
+ .vis-item.vis-point {
930
+ background: none;
931
+ }
932
+
933
+ .vis-item.vis-dot {
934
+ position: absolute;
935
+ padding: 0;
936
+ border-width: 4px;
937
+ border-style: solid;
938
+ border-radius: 4px;
939
+ }
940
+
941
+ .vis-item.vis-range {
942
+ border-style: solid;
943
+ border-radius: 2px;
944
+ box-sizing: border-box;
945
+ }
946
+
947
+ .vis-item.vis-background {
948
+ border: none;
949
+ background-color: rgba(213, 221, 246, 0.4);
950
+ box-sizing: border-box;
951
+ padding: 0;
952
+ margin: 0;
953
+ }
954
+
955
+ .vis-item .vis-item-overflow {
956
+ position: relative;
957
+ width: 100%;
958
+ height: 100%;
959
+ padding: 0;
960
+ margin: 0;
961
+ overflow: hidden;
962
+ }
963
+
964
+ .vis-item-visible-frame {
965
+ white-space: nowrap;
966
+ }
967
+
968
+ .vis-item.vis-range .vis-item-content {
969
+ position: relative;
970
+ display: inline-block;
971
+ }
972
+
973
+ .vis-item.vis-background .vis-item-content {
974
+ position: absolute;
975
+ display: inline-block;
976
+ }
977
+
978
+ .vis-item.vis-line {
979
+ padding: 0;
980
+ position: absolute;
981
+ width: 0;
982
+ border-left-width: 1px;
983
+ border-left-style: solid;
984
+ }
985
+
986
+ .vis-item .vis-item-content {
987
+ white-space: nowrap;
988
+ box-sizing: border-box;
989
+ padding: 5px;
990
+ }
991
+
992
+ .vis-item .vis-onUpdateTime-tooltip {
993
+ position: absolute;
994
+ background: #4f81bd;
995
+ color: white;
996
+ width: 200px;
997
+ text-align: center;
998
+ white-space: nowrap;
999
+ padding: 5px;
1000
+ border-radius: 1px;
1001
+ transition: 0.4s;
1002
+ -o-transition: 0.4s;
1003
+ -moz-transition: 0.4s;
1004
+ -webkit-transition: 0.4s;
1005
+ }
1006
+
1007
+ .vis-item .vis-delete, .vis-item .vis-delete-rtl {
1008
+ position: absolute;
1009
+ top: 0px;
1010
+ width: 24px;
1011
+ height: 24px;
1012
+ box-sizing: border-box;
1013
+ padding: 0px 5px;
1014
+ cursor: pointer;
1015
+
1016
+ -webkit-transition: background 0.2s linear;
1017
+ -moz-transition: background 0.2s linear;
1018
+ -ms-transition: background 0.2s linear;
1019
+ -o-transition: background 0.2s linear;
1020
+ transition: background 0.2s linear;
1021
+ }
1022
+
1023
+ .vis-item .vis-delete {
1024
+ right: -24px;
1025
+ }
1026
+
1027
+ .vis-item .vis-delete-rtl {
1028
+ left: -24px;
1029
+ }
1030
+
1031
+ .vis-item .vis-delete:after, .vis-item .vis-delete-rtl:after {
1032
+ content: "\00D7"; /* MULTIPLICATION SIGN */
1033
+ color: red;
1034
+ font-family: arial, sans-serif;
1035
+ font-size: 22px;
1036
+ font-weight: bold;
1037
+
1038
+ -webkit-transition: color 0.2s linear;
1039
+ -moz-transition: color 0.2s linear;
1040
+ -ms-transition: color 0.2s linear;
1041
+ -o-transition: color 0.2s linear;
1042
+ transition: color 0.2s linear;
1043
+ }
1044
+
1045
+ .vis-item .vis-delete:hover, .vis-item .vis-delete-rtl:hover {
1046
+ background: red;
1047
+ }
1048
+
1049
+ .vis-item .vis-delete:hover:after, .vis-item .vis-delete-rtl:hover:after {
1050
+ color: white;
1051
+ }
1052
+
1053
+ .vis-item .vis-drag-center {
1054
+ position: absolute;
1055
+ width: 100%;
1056
+ height: 100%;
1057
+ top: 0;
1058
+ left: 0px;
1059
+ cursor: move;
1060
+ }
1061
+
1062
+ .vis-item.vis-range .vis-drag-left {
1063
+ position: absolute;
1064
+ width: 24px;
1065
+ max-width: 20%;
1066
+ min-width: 2px;
1067
+ height: 100%;
1068
+ top: 0;
1069
+ left: -4px;
1070
+
1071
+ cursor: w-resize;
1072
+ }
1073
+
1074
+ .vis-item.vis-range .vis-drag-right {
1075
+ position: absolute;
1076
+ width: 24px;
1077
+ max-width: 20%;
1078
+ min-width: 2px;
1079
+ height: 100%;
1080
+ top: 0;
1081
+ right: -4px;
1082
+
1083
+ cursor: e-resize;
1084
+ }
1085
+
1086
+ .vis-range.vis-item.vis-readonly .vis-drag-left,
1087
+ .vis-range.vis-item.vis-readonly .vis-drag-right {
1088
+ cursor: auto;
1089
+ }
1090
+
1091
+
1092
+ .vis-itemset {
1093
+ position: relative;
1094
+ padding: 0;
1095
+ margin: 0;
1096
+
1097
+ box-sizing: border-box;
1098
+ }
1099
+
1100
+ .vis-itemset .vis-background,
1101
+ .vis-itemset .vis-foreground {
1102
+ position: absolute;
1103
+ width: 100%;
1104
+ height: 100%;
1105
+ overflow: visible;
1106
+ }
1107
+
1108
+ .vis-axis {
1109
+ position: absolute;
1110
+ width: 100%;
1111
+ height: 0;
1112
+ left: 0;
1113
+ z-index: 1;
1114
+ }
1115
+
1116
+ .vis-foreground .vis-group {
1117
+ position: relative;
1118
+ box-sizing: border-box;
1119
+ border-bottom: 1px solid #bfbfbf;
1120
+ }
1121
+
1122
+ .vis-foreground .vis-group:last-child {
1123
+ border-bottom: none;
1124
+ }
1125
+
1126
+ .vis-nesting-group {
1127
+ cursor: pointer;
1128
+ }
1129
+
1130
+ .vis-nested-group {
1131
+ background: #f5f5f5;
1132
+ }
1133
+
1134
+ .vis-label.vis-nesting-group.expanded:before {
1135
+ content: "\25BC";
1136
+ }
1137
+
1138
+ .vis-label.vis-nesting-group.collapsed-rtl:before {
1139
+ content: "\25C0";
1140
+ }
1141
+
1142
+ .vis-label.vis-nesting-group.collapsed:before {
1143
+ content: "\25B6";
1144
+ }
1145
+
1146
+ .vis-overlay {
1147
+ position: absolute;
1148
+ top: 0;
1149
+ left: 0;
1150
+ width: 100%;
1151
+ height: 100%;
1152
+ z-index: 10;
1153
+ }
1154
+
1155
+ .vis-labelset {
1156
+ position: relative;
1157
+
1158
+ overflow: hidden;
1159
+
1160
+ box-sizing: border-box;
1161
+ }
1162
+
1163
+ .vis-labelset .vis-label {
1164
+ position: relative;
1165
+ left: 0;
1166
+ top: 0;
1167
+ width: 100%;
1168
+ color: #4d4d4d;
1169
+
1170
+ box-sizing: border-box;
1171
+ }
1172
+
1173
+ .vis-labelset .vis-label {
1174
+ border-bottom: 1px solid #bfbfbf;
1175
+ }
1176
+
1177
+ .vis-labelset .vis-label.draggable {
1178
+ cursor: pointer;
1179
+ }
1180
+
1181
+ .vis-labelset .vis-label:last-child {
1182
+ border-bottom: none;
1183
+ }
1184
+
1185
+ .vis-labelset .vis-label .vis-inner {
1186
+ display: inline-block;
1187
+ padding: 5px;
1188
+ }
1189
+
1190
+ .vis-labelset .vis-label .vis-inner.vis-hidden {
1191
+ padding: 0;
1192
+ }
1193
+
1194
+ .vis-panel {
1195
+ position: absolute;
1196
+
1197
+ padding: 0;
1198
+ margin: 0;
1199
+
1200
+ box-sizing: border-box;
1201
+ }
1202
+
1203
+ .vis-panel.vis-center,
1204
+ .vis-panel.vis-left,
1205
+ .vis-panel.vis-right,
1206
+ .vis-panel.vis-top,
1207
+ .vis-panel.vis-bottom {
1208
+ border: 1px #bfbfbf;
1209
+ }
1210
+
1211
+ .vis-panel.vis-center,
1212
+ .vis-panel.vis-left,
1213
+ .vis-panel.vis-right {
1214
+ border-top-style: solid;
1215
+ border-bottom-style: solid;
1216
+ overflow: hidden;
1217
+ }
1218
+
1219
+ .vis-left.vis-panel.vis-vertical-scroll, .vis-right.vis-panel.vis-vertical-scroll {
1220
+ height: 100%;
1221
+ overflow-x: hidden;
1222
+ overflow-y: scroll;
1223
+ }
1224
+
1225
+ .vis-left.vis-panel.vis-vertical-scroll {
1226
+ direction: rtl;
1227
+ }
1228
+
1229
+ .vis-left.vis-panel.vis-vertical-scroll .vis-content {
1230
+ direction: ltr;
1231
+ }
1232
+
1233
+ .vis-right.vis-panel.vis-vertical-scroll {
1234
+ direction: ltr;
1235
+ }
1236
+
1237
+ .vis-right.vis-panel.vis-vertical-scroll .vis-content {
1238
+ direction: rtl;
1239
+ }
1240
+
1241
+ .vis-panel.vis-center,
1242
+ .vis-panel.vis-top,
1243
+ .vis-panel.vis-bottom {
1244
+ border-left-style: solid;
1245
+ border-right-style: solid;
1246
+ }
1247
+
1248
+ .vis-background {
1249
+ overflow: hidden;
1250
+ }
1251
+
1252
+ .vis-panel > .vis-content {
1253
+ position: relative;
1254
+ }
1255
+
1256
+ .vis-panel .vis-shadow {
1257
+ position: absolute;
1258
+ width: 100%;
1259
+ height: 1px;
1260
+ box-shadow: 0 0 10px rgba(0,0,0,0.8);
1261
+ /* TODO: find a nice way to ensure vis-shadows are drawn on top of items
1262
+ z-index: 1;
1263
+ */
1264
+ }
1265
+
1266
+ .vis-panel .vis-shadow.vis-top {
1267
+ top: -1px;
1268
+ left: 0;
1269
+ }
1270
+
1271
+ .vis-panel .vis-shadow.vis-bottom {
1272
+ bottom: -1px;
1273
+ left: 0;
1274
+ }
1275
+ .vis-graph-group0 {
1276
+ fill:#4f81bd;
1277
+ fill-opacity:0;
1278
+ stroke-width:2px;
1279
+ stroke: #4f81bd;
1280
+ }
1281
+
1282
+ .vis-graph-group1 {
1283
+ fill:#f79646;
1284
+ fill-opacity:0;
1285
+ stroke-width:2px;
1286
+ stroke: #f79646;
1287
+ }
1288
+
1289
+ .vis-graph-group2 {
1290
+ fill: #8c51cf;
1291
+ fill-opacity:0;
1292
+ stroke-width:2px;
1293
+ stroke: #8c51cf;
1294
+ }
1295
+
1296
+ .vis-graph-group3 {
1297
+ fill: #75c841;
1298
+ fill-opacity:0;
1299
+ stroke-width:2px;
1300
+ stroke: #75c841;
1301
+ }
1302
+
1303
+ .vis-graph-group4 {
1304
+ fill: #ff0100;
1305
+ fill-opacity:0;
1306
+ stroke-width:2px;
1307
+ stroke: #ff0100;
1308
+ }
1309
+
1310
+ .vis-graph-group5 {
1311
+ fill: #37d8e6;
1312
+ fill-opacity:0;
1313
+ stroke-width:2px;
1314
+ stroke: #37d8e6;
1315
+ }
1316
+
1317
+ .vis-graph-group6 {
1318
+ fill: #042662;
1319
+ fill-opacity:0;
1320
+ stroke-width:2px;
1321
+ stroke: #042662;
1322
+ }
1323
+
1324
+ .vis-graph-group7 {
1325
+ fill:#00ff26;
1326
+ fill-opacity:0;
1327
+ stroke-width:2px;
1328
+ stroke: #00ff26;
1329
+ }
1330
+
1331
+ .vis-graph-group8 {
1332
+ fill:#ff00ff;
1333
+ fill-opacity:0;
1334
+ stroke-width:2px;
1335
+ stroke: #ff00ff;
1336
+ }
1337
+
1338
+ .vis-graph-group9 {
1339
+ fill: #8f3938;
1340
+ fill-opacity:0;
1341
+ stroke-width:2px;
1342
+ stroke: #8f3938;
1343
+ }
1344
+
1345
+ .vis-timeline .vis-fill {
1346
+ fill-opacity:0.1;
1347
+ stroke: none;
1348
+ }
1349
+
1350
+
1351
+ .vis-timeline .vis-bar {
1352
+ fill-opacity:0.5;
1353
+ stroke-width:1px;
1354
+ }
1355
+
1356
+ .vis-timeline .vis-point {
1357
+ stroke-width:2px;
1358
+ fill-opacity:1.0;
1359
+ }
1360
+
1361
+
1362
+ .vis-timeline .vis-legend-background {
1363
+ stroke-width:1px;
1364
+ fill-opacity:0.9;
1365
+ fill: #ffffff;
1366
+ stroke: #c2c2c2;
1367
+ }
1368
+
1369
+
1370
+ .vis-timeline .vis-outline {
1371
+ stroke-width:1px;
1372
+ fill-opacity:1;
1373
+ fill: #ffffff;
1374
+ stroke: #e5e5e5;
1375
+ }
1376
+
1377
+ .vis-timeline .vis-icon-fill {
1378
+ fill-opacity:0.3;
1379
+ stroke: none;
1380
+ }
1381
+
1382
+ .vis-time-axis {
1383
+ position: relative;
1384
+ overflow: hidden;
1385
+ }
1386
+
1387
+ .vis-time-axis.vis-foreground {
1388
+ top: 0;
1389
+ left: 0;
1390
+ width: 100%;
1391
+ }
1392
+
1393
+ .vis-time-axis.vis-background {
1394
+ position: absolute;
1395
+ top: 0;
1396
+ left: 0;
1397
+ width: 100%;
1398
+ height: 100%;
1399
+ }
1400
+
1401
+ .vis-time-axis .vis-text {
1402
+ position: absolute;
1403
+ color: #4d4d4d;
1404
+ padding: 3px;
1405
+ overflow: hidden;
1406
+ box-sizing: border-box;
1407
+
1408
+ white-space: nowrap;
1409
+ }
1410
+
1411
+ .vis-time-axis .vis-text.vis-measure {
1412
+ position: absolute;
1413
+ padding-left: 0;
1414
+ padding-right: 0;
1415
+ margin-left: 0;
1416
+ margin-right: 0;
1417
+ visibility: hidden;
1418
+ }
1419
+
1420
+ .vis-time-axis .vis-grid.vis-vertical {
1421
+ position: absolute;
1422
+ border-left: 1px solid;
1423
+ }
1424
+
1425
+ .vis-time-axis .vis-grid.vis-vertical-rtl {
1426
+ position: absolute;
1427
+ border-right: 1px solid;
1428
+ }
1429
+
1430
+ .vis-time-axis .vis-grid.vis-minor {
1431
+ border-color: #e5e5e5;
1432
+ }
1433
+
1434
+ .vis-time-axis .vis-grid.vis-major {
1435
+ border-color: #bfbfbf;
1436
+ }
1437
+
1438
+
1439
+ .vis-timeline {
1440
+ position: relative;
1441
+ border: 1px solid #bfbfbf;
1442
+
1443
+ overflow: hidden;
1444
+ padding: 0;
1445
+ margin: 0;
1446
+
1447
+ box-sizing: border-box;
1448
+ }