nebula-webclient 8.0.10286

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,127 @@
1
+
2
+ require 'erb'
3
+
4
+ module Nebula
5
+ module WebClient
6
+
7
+ class Encoder
8
+
9
+ def self.str(s)
10
+ s.to_s
11
+ end
12
+
13
+ def self.url(s)
14
+ ERB::Util.u(s)
15
+ end
16
+
17
+ def self.js(s)
18
+ return 'null' if s.nil?
19
+ s = s.to_s
20
+ s = s.gsub("\\", '\\\\')
21
+ s = s.gsub("\'", '\\\'')
22
+ s = s.gsub("\"", '\"')
23
+ s = s.gsub("\t", '\t')
24
+ s = s.gsub("\r", '\r')
25
+ s = s.gsub("\n", '\n')
26
+ '"' << s << '"'
27
+ end
28
+ end
29
+
30
+ class Border
31
+ def initialize(s = 'solid', w = 0, c = '#000')
32
+ @style = s
33
+ @width = w
34
+ @color = c
35
+ end
36
+
37
+ def to_s
38
+ '' << style.to_s << ' ' << width.to_s << 'px ' << color.to_s
39
+ end
40
+
41
+ attr(:style, true)
42
+ attr(:width, true)
43
+ attr(:color, true)
44
+ end
45
+
46
+ class Setting
47
+ def initialize
48
+ @width = 640
49
+ @height = 480
50
+ @border = Border.new
51
+ @menu_docking = :bottom
52
+ @render_mode = :default
53
+ @language = :english
54
+ end
55
+
56
+ def parameters(uri)
57
+ s = ''
58
+ s << '?w=' << Encoder.str(width)
59
+ s << '&h=' << Encoder.str(height)
60
+ s << '&b=' << Encoder.url(border) if border.width > 0
61
+ s << '&m=' << Encoder.str(menu_docking) if menu_docking != :bottom
62
+ s << '&r=' << Encoder.str(render_mode) if render_mode != :default
63
+ s << '&l=' << Encoder.str(Languages[language]) if language != :english
64
+ s << '&u=' << Encoder.url(uri) if uri
65
+ s
66
+ end
67
+
68
+ def json(uri)
69
+ s = ''
70
+ s << '{width:' << Encoder.str(width)
71
+ s << ',height:' << Encoder.str(height)
72
+ s << ',border:' << Encoder.str(border) if border.width > 0
73
+ s << ',menuDocking:' << Encoder.str(menu_docking) if menu_docking != :bottom
74
+ s << ',renderMode:' << Encoder.str(render_mode) if render_mode != :default
75
+ s << ',language:' << Encoder.str(Languages[language]) if language != :english
76
+ s << ',uri' << Encoder.js(uri) if uri
77
+ s << '}'
78
+ s
79
+ end
80
+
81
+ attr(:width, true)
82
+ attr(:height, true)
83
+ attr(:border, true)
84
+ attr(:menu_docking, true)
85
+ attr(:render_mode, true)
86
+ attr(:language, true)
87
+
88
+ Languages = {:english => 'en-us',
89
+ :french => 'fr',
90
+ :simplified_chinese => 'zh-cn',
91
+ :traditional_chinese => 'zh-tw',
92
+ :japanese => 'jp'
93
+ }
94
+ end
95
+
96
+ class RenderSetting
97
+ def initialize(w, h, mode = :default, set = '', view = '', version = '1.0')
98
+ @width = w
99
+ @height = h
100
+ @render_mode = mode
101
+ @selection_set = set
102
+ @sectional_view = view
103
+ @version = version
104
+ end
105
+
106
+ def json
107
+ s = ''
108
+ s << '{screenWidth:' << Encoder.str(width)
109
+ s << ',screenHeight:' << Encoder.str(height)
110
+ s << ',renderMode:' << Encoder.str(render_mode)
111
+ s << ',selectionSet:' << Encoder.str(selection_set) if !selection_set.blank?
112
+ s << ',sectionalView:' << Encoder.str(sectional_view) if !sectional_view.blank?
113
+ s << ',version:' << Encoder.str(version)
114
+ s << '}'
115
+ end
116
+
117
+ attr(:width, true)
118
+ attr(:height, true)
119
+ attr(:render_mode, true)
120
+ attr(:selection_set, true)
121
+ attr(:sectional_view, true)
122
+ attr(:version, true)
123
+ end
124
+
125
+ end
126
+ end
127
+
@@ -0,0 +1,95 @@
1
+
2
+ module Nebula
3
+ module WebClient
4
+
5
+ class Viewer
6
+ ServiceHostAddress = 'http://nebula.gems8.com/__nebulaviewerv100__'
7
+
8
+ def self.html(args)
9
+ uri = args[:uri]
10
+ id, klass = selector(args)
11
+ setting = setting(args)
12
+
13
+ s = ''
14
+ s << '<iframe src="' << ServiceHostAddress << '/EmbeddedViewer'
15
+ s << setting.parameters(uri)
16
+ s << '" width="' << Encoder.str(setting.width)
17
+ s << '" height="' << Encoder.str(setting.height)
18
+ s << '" class="' << Encoder.str(klass) if !klass.blank?
19
+ s << '" id=' << Encoder.str(id) if !id.blank?
20
+ s << '" scrolling="no" frameBorder="0"></iframe>'
21
+ end
22
+
23
+ def self.javascript(args)
24
+ uri = args[:uri]
25
+ selector = args[:selector]
26
+
27
+ s = ''
28
+ s << 'new NebulaViewer('
29
+ s << Encoder.js(selector)
30
+ s << ','
31
+ s << setting(args).json(uri)
32
+ s << ');'
33
+ end
34
+
35
+ def self.jssection(args)
36
+ '<script type="text/javascript">' << javascript(args) << '</script>'
37
+ end
38
+
39
+ def self.thumbnail(args)
40
+ uri = args[:uri]
41
+ id, klass = selector(args)
42
+ width = args[:width]
43
+ height = args[:height]
44
+
45
+ s = ''
46
+ s << '<img src="' << thumbnail_url(args)
47
+ s << '" width="' << Encoder.str(width)
48
+ s << '" height="' << Encoder.str(height)
49
+ s << '" id="' << Encoder.str(id) if !id.blank?
50
+ s << '" class="' << Encoder.str(klass) if !klass.blank?
51
+ s << '" />'
52
+ end
53
+
54
+ def self.thumbnail_url(args)
55
+ uri = args[:uri]
56
+ id, klass = selector(args)
57
+ render = RenderSetting.new(args[:width], args[:height])
58
+
59
+ uri = 'image/jpeg@' << uri if !uri.index('@')
60
+
61
+ s = ''
62
+ s << ServiceHostAddress
63
+ s << '/Render?u=' << Encoder.url(uri)
64
+ s << '&c=d'
65
+ s << '&s=' << Encoder.url(render.json)
66
+ s << '&timestamp=thumbnail'
67
+ end
68
+
69
+ def self.setting(args)
70
+ setting = args[:setting] || Setting.new
71
+ setting.width = args[:width] if args[:width]
72
+ setting.height = args[:height] if args[:height]
73
+ setting
74
+ end
75
+
76
+ def self.selector(args)
77
+ selector = args[:selecor]
78
+ if selector.blank?
79
+ return args[:id], args[:klass]
80
+ else
81
+ selector.strip!
82
+ if selector.start_with?('#')
83
+ return selector[1..-1].strip, nil
84
+ elsif selector.start_with?('.')
85
+ return nil, selector[1..-1].strip
86
+ else
87
+ return selector, nil
88
+ end
89
+ end
90
+ end
91
+ end
92
+
93
+ end
94
+ end
95
+
@@ -0,0 +1,4 @@
1
+
2
+ require 'nebula/webclient/setting'
3
+ require 'nebula/webclient/viewer'
4
+
@@ -0,0 +1,2 @@
1
+ require 'nebula/webclient'
2
+
metadata ADDED
@@ -0,0 +1,48 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nebula-webclient
3
+ version: !ruby/object:Gem::Version
4
+ version: 8.0.10286
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Nebula Visualization Technology
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-05-13 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: The library of Nebula Viewer web client.
15
+ email: nebula@gems8.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/nebula/webclient/setting.rb
21
+ - lib/nebula/webclient/viewer.rb
22
+ - lib/nebula/webclient.rb
23
+ - lib/nebula-webclient.rb
24
+ homepage: http://nebula.gems8.com
25
+ licenses: []
26
+ post_install_message:
27
+ rdoc_options: []
28
+ require_paths:
29
+ - lib
30
+ required_ruby_version: !ruby/object:Gem::Requirement
31
+ none: false
32
+ requirements:
33
+ - - ! '>='
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
36
+ required_rubygems_version: !ruby/object:Gem::Requirement
37
+ none: false
38
+ requirements:
39
+ - - ! '>='
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ requirements: []
43
+ rubyforge_project:
44
+ rubygems_version: 1.8.25
45
+ signing_key:
46
+ specification_version: 3
47
+ summary: The library of Nebula Viewer web client.
48
+ test_files: []