voruby 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.
- data/LICENSE +339 -0
- data/REQUIREMENTS +4 -0
- data/Rakefile.rb +296 -0
- data/lib/voruby/adql/adql.rb +2735 -0
- data/lib/voruby/adql/ext.rb +15 -0
- data/lib/voruby/adql/loader.rb +5 -0
- data/lib/voruby/adql/operations.rb +54 -0
- data/lib/voruby/adql/parser.rb +160 -0
- data/lib/voruby/adql/transforms.rb +573 -0
- data/lib/voruby/ext.rb +17 -0
- data/lib/voruby/loader.rb +4 -0
- data/lib/voruby/misc/propertyfile.rb +36 -0
- data/lib/voruby/plastic/applications.rb +174 -0
- data/lib/voruby/plastic/constants.rb +30 -0
- data/lib/voruby/plastic/loader.rb +10 -0
- data/lib/voruby/plastic/plastic.rb +1 -0
- data/lib/voruby/resources/conesearch/conesearch.rb +9 -0
- data/lib/voruby/resources/conesearch/conesearch_v0_2.rb +55 -0
- data/lib/voruby/resources/conesearch/conesearch_v0_3.rb +50 -0
- data/lib/voruby/resources/conesearch/conesearch_v1_0.rb +72 -0
- data/lib/voruby/resources/conesearch/loader.rb +4 -0
- data/lib/voruby/resources/loader.rb +50 -0
- data/lib/voruby/resources/nodes.rb +190 -0
- data/lib/voruby/resources/openskynode/loader.rb +4 -0
- data/lib/voruby/resources/openskynode/openskynode.rb +9 -0
- data/lib/voruby/resources/openskynode/openskynode_v0_1.rb +54 -0
- data/lib/voruby/resources/sia/loader.rb +5 -0
- data/lib/voruby/resources/sia/sia.rb +9 -0
- data/lib/voruby/resources/sia/sia_v0_6.rb +90 -0
- data/lib/voruby/resources/sia/sia_v0_7.rb +89 -0
- data/lib/voruby/resources/sia/sia_v1_0.rb +122 -0
- data/lib/voruby/resources/stsci.rb +59 -0
- data/lib/voruby/resources/vodataservice/coverage_v0_2.rb +195 -0
- data/lib/voruby/resources/vodataservice/coverage_v0_3.rb +158 -0
- data/lib/voruby/resources/vodataservice/loader.rb +5 -0
- data/lib/voruby/resources/vodataservice/vodataservice.rb +9 -0
- data/lib/voruby/resources/vodataservice/vodataservice_v0_4.rb +189 -0
- data/lib/voruby/resources/vodataservice/vodataservice_v0_5.rb +163 -0
- data/lib/voruby/resources/vodataservice/vodataservice_v1_0.rb +221 -0
- data/lib/voruby/resources/voregistry/loader.rb +4 -0
- data/lib/voruby/resources/voregistry/voregistry.rb +9 -0
- data/lib/voruby/resources/voregistry/voregistry_v0_2.rb +40 -0
- data/lib/voruby/resources/voregistry/voregistry_v0_3.rb +30 -0
- data/lib/voruby/resources/voregistry/voregistry_v1_0.rb +86 -0
- data/lib/voruby/resources/voresource/loader.rb +17 -0
- data/lib/voruby/resources/voresource/voresource.rb +9 -0
- data/lib/voruby/resources/voresource/voresource_v0_10.rb +322 -0
- data/lib/voruby/resources/voresource/voresource_v0_9.rb +405 -0
- data/lib/voruby/resources/voresource/voresource_v1_0.rb +230 -0
- data/lib/voruby/services/ext.rb +11 -0
- data/lib/voruby/services/gestalt/footprint.rb +95 -0
- data/lib/voruby/services/gestalt/wcs_fixer.rb +105 -0
- data/lib/voruby/services/gestalt/wesix.rb +155 -0
- data/lib/voruby/services/loader.rb +7 -0
- data/lib/voruby/services/registry/registry.rb +53 -0
- data/lib/voruby/services/resolver/resolver.rb +35 -0
- data/lib/voruby/sesame/loader.rb +6 -0
- data/lib/voruby/sesame/sesame_v1_0.rb +64 -0
- data/lib/voruby/simple/loader.rb +6 -0
- data/lib/voruby/simple/parameters.rb +196 -0
- data/lib/voruby/simple/sap.rb +446 -0
- data/lib/voruby/spacetime/loader.rb +3 -0
- data/lib/voruby/spacetime/spacetime.rb +607 -0
- data/lib/voruby/stc/coords_v1_20.rb +900 -0
- data/lib/voruby/stc/loader.rb +55 -0
- data/lib/voruby/stc/region_v1_20.rb +274 -0
- data/lib/voruby/stc/stc_v1_20.rb +1196 -0
- data/lib/voruby/util.rb +27 -0
- data/lib/voruby/voevent/loader.rb +7 -0
- data/lib/voruby/voevent/voevent_v1_0.rb +213 -0
- data/lib/voruby/voevent/voevent_v1_1.rb +196 -0
- data/lib/voruby/votables/chandra.rb +410 -0
- data/lib/voruby/votables/cnoc.rb +393 -0
- data/lib/voruby/votables/data.rb +179 -0
- data/lib/voruby/votables/galex.rb +390 -0
- data/lib/voruby/votables/hst.rb +391 -0
- data/lib/voruby/votables/int.rb +391 -0
- data/lib/voruby/votables/libxml_parser.rb +411 -0
- data/lib/voruby/votables/libxml_votable.rb +67 -0
- data/lib/voruby/votables/loader.rb +10 -0
- data/lib/voruby/votables/meta.rb +763 -0
- data/lib/voruby/votables/misc.rb +51 -0
- data/lib/voruby/votables/nsa.rb +393 -0
- data/lib/voruby/votables/nsar3.rb +410 -0
- data/lib/voruby/votables/rexml_parser.rb +408 -0
- data/lib/voruby/votables/rexml_votable.rb +67 -0
- data/lib/voruby/votables/sdss.rb +393 -0
- data/lib/voruby/votables/transforms.rb +388 -0
- data/lib/voruby/votables/tree.rb +45 -0
- data/lib/voruby/votables/types.rb +391 -0
- data/lib/voruby/votables/votable.rb +630 -0
- data/lib/voruby/votables/xmm.rb +394 -0
- data/test/adql/test1.adql +49 -0
- data/test/adql/test2.adql +51 -0
- data/test/adql/test3.adql +81 -0
- data/test/adql/test4.adql +53 -0
- data/test/adql/test5.adql +55 -0
- data/test/adql/test6.adql +18 -0
- data/test/adql/test7.adql +48 -0
- data/test/adql/unittest.rb +1672 -0
- data/test/plastic/test.rb +44 -0
- data/test/plastic/test.vot +5385 -0
- data/test/plastic/unittest.rb +66 -0
- data/test/resources/conesearch/conesearch_v0_3.xml +31 -0
- data/test/resources/conesearch/conesearch_v1_0.xml +86 -0
- data/test/resources/conesearch/unittest_v0_3.rb +22 -0
- data/test/resources/conesearch/unittest_v1_0.rb +24 -0
- data/test/resources/openskynode/open_sky_node_v0_1.xml +32 -0
- data/test/resources/openskynode/unittest_v0_1.rb +31 -0
- data/test/resources/sia/simple_image_access_v0_7.xml +36 -0
- data/test/resources/sia/simple_image_access_v1_0.xml +122 -0
- data/test/resources/sia/unittest_v0_7.rb +24 -0
- data/test/resources/sia/unittest_v1_0.rb +29 -0
- data/test/resources/stsci.xml +336 -0
- data/test/resources/unittest_stsci.rb +25 -0
- data/test/resources/vodataservice/catalog_service_resource_v1_0.xml +128 -0
- data/test/resources/vodataservice/data_collection_resource_v0_5.xml +54 -0
- data/test/resources/vodataservice/data_collection_resource_v1_0.xml +117 -0
- data/test/resources/vodataservice/data_service_resource_v1_0.xml +115 -0
- data/test/resources/vodataservice/sky_service_resource_v0_10.xml +45 -0
- data/test/resources/vodataservice/table_service_resource_v1_0.xml +122 -0
- data/test/resources/vodataservice/tabular_sky_service_resource_v0_10.xml +60 -0
- data/test/resources/vodataservice/unittest_v0_5.rb +126 -0
- data/test/resources/vodataservice/unittest_v1_0.rb +151 -0
- data/test/resources/voregistry/authority_resource_v0_3.xml +20 -0
- data/test/resources/voregistry/authority_resource_v1_0.xml +82 -0
- data/test/resources/voregistry/registry_service_v0_3.xml +20 -0
- data/test/resources/voregistry/registry_service_v1_0.xml +107 -0
- data/test/resources/voregistry/unittest_v0_3.rb +31 -0
- data/test/resources/voregistry/unittest_v1_0.rb +34 -0
- data/test/resources/voresource/organisation_resource_v1_0.xml +90 -0
- data/test/resources/voresource/resource_organisation_v0_10.xml +22 -0
- data/test/resources/voresource/resource_service_v0_10.xml +19 -0
- data/test/resources/voresource/resource_v0_10.xml +19 -0
- data/test/resources/voresource/resource_v1_0.xml +79 -0
- data/test/resources/voresource/service_resource_v1_0.xml +91 -0
- data/test/resources/voresource/unittest_v0_10.rb +61 -0
- data/test/resources/voresource/unittest_v0_9.rb +4 -0
- data/test/resources/voresource/unittest_v1_0.rb +190 -0
- data/test/services/gestalt/unittest.rb +74 -0
- data/test/services/registry/unittest.rb +34 -0
- data/test/services/resolver/unittest.rb +38 -0
- data/test/simple/unittest.rb +46 -0
- data/test/spacetime/unittest.rb +39 -0
- data/test/stc/catalog_entry_location_v1_20.xml +112 -0
- data/test/stc/obs_data_location_v1_20.xml +108 -0
- data/test/stc/search_location_v1_20.xml +54 -0
- data/test/stc/stc_resource_profile_v1_20.xml +60 -0
- data/test/stc/unittest_v1_20.rb +620 -0
- data/test/voevent/unittest_v1_0.rb +79 -0
- data/test/voevent/unittest_v1_1.rb +70 -0
- data/test/voevent/voevent_v1_0.xml +96 -0
- data/test/voevent/voevent_v1_1.xml +76 -0
- data/test/votables/test.vot +366 -0
- data/test/votables/unittest.rb +54 -0
- metadata +256 -0
@@ -0,0 +1,51 @@
|
|
1
|
+
module VORuby
|
2
|
+
module VOTables
|
3
|
+
module VOTable
|
4
|
+
|
5
|
+
# Miscellaneous classes that don't fit elsewhere.
|
6
|
+
module Misc
|
7
|
+
|
8
|
+
# An exception thrown when the incoming type does not match
|
9
|
+
# the expected value.
|
10
|
+
class TypeException < Exception
|
11
|
+
|
12
|
+
# [_obj_:]
|
13
|
+
# The object itself.
|
14
|
+
# [_prototype_:]
|
15
|
+
# The prototype of the expected class.
|
16
|
+
def initialize(obj=nil, prototype=nil)
|
17
|
+
super("Invalid type: #{obj.class} (#{obj}) != #{prototype}")
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
# A class which checks to see whether the type of the incoming class
|
22
|
+
# matches expectation.
|
23
|
+
class TypeCheck
|
24
|
+
attr_accessor :obj, :proto
|
25
|
+
|
26
|
+
# [_obj_:]
|
27
|
+
# The object in question.
|
28
|
+
# [_proto_:]
|
29
|
+
# The prototype of the expected class.
|
30
|
+
def initialize(obj=nil, proto=nil)
|
31
|
+
#raise "TypeCheck must have an object" if obj == nil
|
32
|
+
#raise "TypeCheck must have a prototype" if proto == nil
|
33
|
+
|
34
|
+
@obj = obj
|
35
|
+
@proto = proto
|
36
|
+
end
|
37
|
+
|
38
|
+
# Check to see whether the class is of the expected type.
|
39
|
+
def check
|
40
|
+
raise TypeException.new(@obj, @proto) if @obj and !@obj.is_a?(@proto)
|
41
|
+
end
|
42
|
+
|
43
|
+
def to_s
|
44
|
+
"{object=#{@obj};prototype=#{@proto}}"
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,393 @@
|
|
1
|
+
# A set of classes designed to read and manipulate
|
2
|
+
# especific VOTables[http://www.ivoa.net/Documents/latest/VOT.html].
|
3
|
+
# This class represents a NSA VOTable.
|
4
|
+
|
5
|
+
require 'voruby/votables/votable'
|
6
|
+
|
7
|
+
module VORuby
|
8
|
+
module VOTables
|
9
|
+
|
10
|
+
module VOTable
|
11
|
+
class NSAVOTable < VOTable
|
12
|
+
|
13
|
+
# Our object's contructor
|
14
|
+
# [_votable:_]
|
15
|
+
# The VOTable object
|
16
|
+
def initialize(votable)
|
17
|
+
super(votable.id, votable.version, votable.description,
|
18
|
+
votable.definitions, votable.coosys, votable.params,
|
19
|
+
votable.info, votable.resources)
|
20
|
+
end
|
21
|
+
|
22
|
+
# Find a field in NSA configuration file given a key.
|
23
|
+
# Returns a hash with the field's attributes
|
24
|
+
# [_key_:]
|
25
|
+
# The key indexing on field's attribute. This key is the same
|
26
|
+
# UCD, because I guess that NSA always uses the UCDs on its
|
27
|
+
# fields
|
28
|
+
def find_field_in_conf_file(key)
|
29
|
+
nsa_field = {'id'=> nil, 'name'=> nil, 'ucd'=> nil}
|
30
|
+
|
31
|
+
if key != nil
|
32
|
+
NSA_ARCHIVE_CONFIG.each do |archive|
|
33
|
+
archive['votable_fields'].each do |field|
|
34
|
+
if field['key'] == key
|
35
|
+
nsa_field['id'] = field['id'] if field['id'] != 'nil'
|
36
|
+
nsa_field['name'] = field['name'] if field['name'] != 'nil'
|
37
|
+
nsa_field['ucd'] = field['ucd'] if field['ucd'] != 'nil'
|
38
|
+
break
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
return nsa_field
|
44
|
+
end
|
45
|
+
|
46
|
+
# Find the column number(s) associated with the
|
47
|
+
# VOX:imageAccessReference UCD.
|
48
|
+
# Returns a list of column positions.
|
49
|
+
def image_access_reference_columns()
|
50
|
+
nsa_ucd_access = find_field_in_conf_file('VOX:Image_AccessReference')['ucd']
|
51
|
+
|
52
|
+
if find_columns(nsa_ucd_access).first != nil
|
53
|
+
find_columns(nsa_ucd_access).first
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def image_ra_columns
|
58
|
+
ucd_ra = find_field_in_conf_file('POS_EQ_RA_MAIN')['ucd']
|
59
|
+
|
60
|
+
if find_columns(ucd_ra).first != nil
|
61
|
+
find_columns(ucd_ra).first
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def image_dec_columns
|
66
|
+
ucd_dec = find_field_in_conf_file('POS_EQ_DEC_MAIN')['ucd']
|
67
|
+
|
68
|
+
if find_columns(ucd_dec).first != nil
|
69
|
+
find_columns(ucd_dec).first
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def image_filter_columns
|
74
|
+
#ucd_filter = find_field_in_conf_file('')['ucd']
|
75
|
+
|
76
|
+
#if find_columns(ucd_filter).first != nil
|
77
|
+
# find_columns(ucd_filter).first
|
78
|
+
#end
|
79
|
+
end
|
80
|
+
|
81
|
+
def image_date_obs_columns
|
82
|
+
#ucd_date_obs = find_field_in_conf_file('')['ucd']
|
83
|
+
|
84
|
+
#if find_columns(ucd_date_obs).first != nil
|
85
|
+
# find_columns(ucd_date_obs).first
|
86
|
+
#end
|
87
|
+
end
|
88
|
+
|
89
|
+
def image_telescope_columns
|
90
|
+
#ucd_telescope = find_field_in_conf_file('')['ucd']
|
91
|
+
|
92
|
+
#if find_columns(ucd_telescope).first != nil
|
93
|
+
# find_columns(ucd_telescope).first
|
94
|
+
#end
|
95
|
+
end
|
96
|
+
|
97
|
+
def image_survey_columns
|
98
|
+
ucd_survey = find_field_in_conf_file('ID_SURVEY')['ucd']
|
99
|
+
|
100
|
+
if find_columns(ucd_survey).first != nil
|
101
|
+
find_columns(ucd_survey).first
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
def image_instrument_columns
|
106
|
+
ucd_instrument = find_field_in_conf_file('INST_ID')['ucd']
|
107
|
+
|
108
|
+
if find_columns(ucd_instrument).first != nil
|
109
|
+
find_columns(ucd_instrument).first
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
def image_sky_columns
|
114
|
+
#ucd_sky = find_field_in_conf_file('')['ucd']
|
115
|
+
|
116
|
+
#if find_columns(ucd_sky).first != nil
|
117
|
+
# find_columns(ucd_sky).first
|
118
|
+
#end
|
119
|
+
end
|
120
|
+
|
121
|
+
def image_zeropoint_columns
|
122
|
+
#ucd_zeropoint = find_field_in_conf_file('')['ucd']
|
123
|
+
|
124
|
+
#if find_columns(ucd_zeropoint).first != nil
|
125
|
+
# find_columns(ucd_zeropoint).first
|
126
|
+
#end
|
127
|
+
end
|
128
|
+
|
129
|
+
def image_seeing_columns
|
130
|
+
#ucd_seeing = find_field_in_conf_file('')['ucd']
|
131
|
+
|
132
|
+
#if find_columns(ucd_seeing).first != nil
|
133
|
+
# find_columns(ucd_seeing).first
|
134
|
+
#end
|
135
|
+
end
|
136
|
+
|
137
|
+
def image_depth_columns
|
138
|
+
#ucd_depth = find_field_in_conf_file('')['ucd']
|
139
|
+
|
140
|
+
#if find_columns(ucd_depth).first != nil
|
141
|
+
# find_columns(ucd_depth).first
|
142
|
+
#end
|
143
|
+
end
|
144
|
+
|
145
|
+
def image_exptime_columns
|
146
|
+
#ucd_exptime = find_field_in_conf_file('')['ucd']
|
147
|
+
|
148
|
+
#if find_columns(ucd_exptime).first != nil
|
149
|
+
# find_columns(ucd_exptime).first
|
150
|
+
#end
|
151
|
+
end
|
152
|
+
|
153
|
+
# Create headers for HTML table
|
154
|
+
# [_res_:]
|
155
|
+
# The resource from which to extract the table in question.
|
156
|
+
# [_tbl_:]
|
157
|
+
# The table inside the resource from which to extract the rows in question.
|
158
|
+
# [_infer_add_to_cart_ref_:]
|
159
|
+
#
|
160
|
+
# [_add_to_cart_header_value_:]
|
161
|
+
#
|
162
|
+
# [_infer_access_ref_:]
|
163
|
+
# Link the access reference URL associated with a row.
|
164
|
+
# [_access_ref_header_value_:]
|
165
|
+
# For the access reference column, place this value in the header.
|
166
|
+
# [_access_ref_col_:]
|
167
|
+
# A valid SIA VOTable will only ever have one VOX:Image_AccessReference.
|
168
|
+
# [_header_class_:]
|
169
|
+
# The class to assign the header of the HTML table.
|
170
|
+
def create_headers(res, tbl,
|
171
|
+
infer_add_to_cart_ref, add_to_cart_header_value,
|
172
|
+
infer_access_ref, access_ref_header_value, access_ref_col,
|
173
|
+
header_class)
|
174
|
+
|
175
|
+
headers = Array.new
|
176
|
+
thead = "<thead class=\"#{header_class}\">\n"
|
177
|
+
|
178
|
+
thead << "<tr>\n"
|
179
|
+
if infer_add_to_cart_ref
|
180
|
+
thead << "<th>#{add_to_cart_header_value}</th>\n"
|
181
|
+
headers.push(' ')
|
182
|
+
end
|
183
|
+
if infer_access_ref
|
184
|
+
thead << "<th>#{access_ref_header_value}</th>\n"
|
185
|
+
headers.push(' ')
|
186
|
+
end
|
187
|
+
col_count = 0
|
188
|
+
fields(res, tbl).each do |field|
|
189
|
+
field_archive = find_field_in_conf_file(field.ucd.value())
|
190
|
+
field_ucd = field_archive['ucd']
|
191
|
+
if infer_access_ref and col_count == access_ref_col
|
192
|
+
headers[1] = field_ucd if field_ucd != 'nil'
|
193
|
+
else
|
194
|
+
thead << "<th>#{field_archive['name']}</th>\n"
|
195
|
+
if field_ucd != 'nil'
|
196
|
+
headers.push(field_ucd)
|
197
|
+
else
|
198
|
+
headers.push(' ')
|
199
|
+
end
|
200
|
+
end
|
201
|
+
col_count += 1
|
202
|
+
end
|
203
|
+
thead << " </tr>\n"
|
204
|
+
|
205
|
+
thead << "<tr>\n"
|
206
|
+
headers.each do |h|
|
207
|
+
thead << "<th>#{h}</th>\n"
|
208
|
+
end
|
209
|
+
thead << "</tr>\n"
|
210
|
+
|
211
|
+
thead << "</thead>"
|
212
|
+
|
213
|
+
return thead
|
214
|
+
end
|
215
|
+
|
216
|
+
def create_add_to_cart_link(link_ref, columns)
|
217
|
+
access_ref_col = image_access_reference_columns()
|
218
|
+
link_ref << '&resource=' + CGI.escape(columns[access_ref_col].value).to_s if access_ref_col
|
219
|
+
ra_col = image_ra_columns()
|
220
|
+
link_ref << '&rac=' + columns[ra_col].value.to_s if ra_col
|
221
|
+
dec_col = image_dec_columns()
|
222
|
+
link_ref << '&decc=' + columns[dec_col].value.to_s if dec_col
|
223
|
+
filter_col = image_filter_columns()
|
224
|
+
link_ref << '&filter=' + columns[filter_col].value.to_s if filter_col
|
225
|
+
date_obs_col = image_date_obs_columns()
|
226
|
+
link_ref << '&date_obs=' + columns[date_obs_col].value.to_s if date_obs_col
|
227
|
+
teles_col = image_telescope_columns()
|
228
|
+
link_ref << '&telescop=' + columns[teles_col].value.to_s if teles_col
|
229
|
+
survey_col = image_survey_columns()
|
230
|
+
link_ref << '&survey=' + columns[survey_col].value.to_s if survey_col
|
231
|
+
instrum_col = image_instrument_columns()
|
232
|
+
link_ref << '&instrument=' + columns[instrum_col].value.to_s if instrum_col
|
233
|
+
sky_col = image_sky_columns()
|
234
|
+
link_ref << '&sky=' + columns[sky_col].value.to_s if sky_col
|
235
|
+
zerop_col = image_zeropoint_columns()
|
236
|
+
link_ref << '&zeropoint=' + columns[zerop_col].value.to_s if zerop_col
|
237
|
+
seeing_col = image_seeing_columns()
|
238
|
+
link_ref << '&seeing=' + columns[seeing_col].value.to_s if seeing_col
|
239
|
+
depth_col = image_depth_columns()
|
240
|
+
link_ref << '&depth=' + columns[depth_col].value.to_s if depth_col
|
241
|
+
exptime_col = image_exptime_columns()
|
242
|
+
link_ref << '&exptime=' + columns[exptime_col].value.to_s if exptime_col
|
243
|
+
|
244
|
+
return link_ref
|
245
|
+
end
|
246
|
+
|
247
|
+
# Create body for HTML table
|
248
|
+
# [_res_:]
|
249
|
+
# The resource from which to extract the table in question.
|
250
|
+
# [_tbl_:]
|
251
|
+
# The table inside the resource from which to extract the rows in question.
|
252
|
+
# [_infer_add_to_cart_ref_:]
|
253
|
+
#
|
254
|
+
# [_add_to_cart_link_value_:]
|
255
|
+
#
|
256
|
+
# [_add_to_cart_link_ref_:]
|
257
|
+
#
|
258
|
+
# [_infer_access_ref_:]
|
259
|
+
# Link the access reference URL associated with a row.
|
260
|
+
# [_access_ref_link_value_:]
|
261
|
+
# For the access reference column, link this word.
|
262
|
+
# [_access_ref_col_:]
|
263
|
+
# A valid SIA VOTable will only ever have one VOX:Image_AccessReference.
|
264
|
+
# [_body_class_:]
|
265
|
+
# The class to assign the body of the HTML table.
|
266
|
+
# [_row_classes_:]
|
267
|
+
# The class to assign the HTML table body rows.
|
268
|
+
def create_body(res, tbl,
|
269
|
+
infer_add_to_cart_ref, add_to_cart_link_value, add_to_cart_link_ref,
|
270
|
+
infer_access_ref, access_ref_link_value, access_ref_col,
|
271
|
+
body_class, row_classes)
|
272
|
+
|
273
|
+
tbody = "<tbody class=\"#{body_class}\">\n"
|
274
|
+
row_count = 0
|
275
|
+
rows(res, tbl).each do |tr|
|
276
|
+
tbody << "<tr class=\"#{row_classes[row_count % 2]}\">\n"
|
277
|
+
|
278
|
+
# Specially mark up the first column to link to the image.
|
279
|
+
columns = tr.tds()
|
280
|
+
|
281
|
+
if infer_add_to_cart_ref
|
282
|
+
archive = add_to_cart_link_ref.slice(add_to_cart_link_ref.index('&archive='), add_to_cart_link_ref.length)
|
283
|
+
archive = archive.slice('&archive='.length, archive.length)
|
284
|
+
archive = archive.slice(0, archive.index('&')) if archive.index('&')
|
285
|
+
link_id = 'add_' + archive.to_s + '_' + row_count.to_s
|
286
|
+
url = create_add_to_cart_link(add_to_cart_link_ref, columns)
|
287
|
+
js = "new Ajax.Request('#{url}', " +
|
288
|
+
" {method: 'post', " +
|
289
|
+
" onComplete: function(request){Element.hide('#{link_id}');}});"
|
290
|
+
tbody << "<td><a id=\"#{link_id}\" href=\"javascript:void(0);\" " +
|
291
|
+
"onclick=\"#{js};return false;\"" +
|
292
|
+
">#{add_to_cart_link_value}</a></td>\n"
|
293
|
+
end
|
294
|
+
if infer_access_ref
|
295
|
+
link_ref = columns[access_ref_col].value
|
296
|
+
tbody << "<td><a href=\"#{link_ref}\">#{access_ref_link_value}</a></td>\n"
|
297
|
+
end
|
298
|
+
|
299
|
+
col_count = 0
|
300
|
+
columns.each do |td|
|
301
|
+
tbody << "<td>#{td.value}</td>\n" if infer_access_ref and col_count != access_ref_col
|
302
|
+
col_count += 1
|
303
|
+
end
|
304
|
+
tbody << "</tr>\n"
|
305
|
+
row_count += 1
|
306
|
+
end
|
307
|
+
tbody << "</tbody>"
|
308
|
+
|
309
|
+
return tbody
|
310
|
+
end
|
311
|
+
|
312
|
+
# Convert the specified table in the specified resource into an HTML
|
313
|
+
# table.
|
314
|
+
# [_id_:]
|
315
|
+
# The ID to assign to the HTML table as a whole.
|
316
|
+
# [_add_to_cart_link_ref_:]
|
317
|
+
#
|
318
|
+
# [_res_:]
|
319
|
+
# The resource from which to extract the table in question.
|
320
|
+
# [_tbl_:]
|
321
|
+
# The table inside the resource from which to extract the rows in question.
|
322
|
+
# [_infer_add_to_cart_ref_:]
|
323
|
+
#
|
324
|
+
# [_add_to_cart_header_value_:]
|
325
|
+
#
|
326
|
+
# [_add_to_cart_link_value_:]
|
327
|
+
#
|
328
|
+
# [_infer_access_ref_:]
|
329
|
+
# Link the access reference URL associated with a row.
|
330
|
+
# [_access_ref_header_value_:]
|
331
|
+
# For the access reference column, place this value in the header.
|
332
|
+
# [_access_ref_link_value_:]
|
333
|
+
# For the access reference column, link this word.
|
334
|
+
# [_show_border_:]
|
335
|
+
# The boolean value to show HTML table border
|
336
|
+
# [_table_class_:]
|
337
|
+
# The class to assign the HTML table as a whole.
|
338
|
+
# [_header_class_:]
|
339
|
+
# The class to assign the header of the HTML table.
|
340
|
+
# [_body_class_:]
|
341
|
+
# The class to assign the body of the HTML table.
|
342
|
+
# [_row_classes_:]
|
343
|
+
# The class to assign the HTML table body rows.
|
344
|
+
def to_html(id=nil, add_to_cart_link_ref=nil, res=0, tbl=0,
|
345
|
+
infer_add_to_cart_ref=true,
|
346
|
+
add_to_cart_header_value='Add to Cart',
|
347
|
+
add_to_cart_link_value='Add',
|
348
|
+
infer_access_ref=true,
|
349
|
+
access_ref_header_value='URL',
|
350
|
+
access_ref_link_value='Retrieve',
|
351
|
+
show_border=false,
|
352
|
+
table_class='votable',
|
353
|
+
header_class='header',
|
354
|
+
body_class='body',
|
355
|
+
row_classes=['row1', 'row2'])
|
356
|
+
begin
|
357
|
+
# A valid SIA VOTable will only ever have one VOX:Image_AccessReference.
|
358
|
+
access_ref_col = image_access_reference_columns()
|
359
|
+
|
360
|
+
if access_ref_col
|
361
|
+
# Create headers
|
362
|
+
thead = create_headers(res, tbl,
|
363
|
+
infer_add_to_cart_ref, add_to_cart_header_value,
|
364
|
+
infer_access_ref, access_ref_header_value, access_ref_col,
|
365
|
+
header_class)
|
366
|
+
|
367
|
+
# Create body
|
368
|
+
tbody = create_body(res, tbl,
|
369
|
+
infer_add_to_cart_ref, add_to_cart_link_value, add_to_cart_link_ref,
|
370
|
+
infer_access_ref, access_ref_link_value, access_ref_col,
|
371
|
+
body_class, row_classes)
|
372
|
+
|
373
|
+
return create_table(id, show_border, table_class, thead, tbody)
|
374
|
+
else
|
375
|
+
title = 'No Data'
|
376
|
+
message = 'VOTable not contains data.'
|
377
|
+
return create_message_table(table_class, header_class,
|
378
|
+
body_class, row_classes, title, message)
|
379
|
+
end
|
380
|
+
|
381
|
+
rescue Exception => e
|
382
|
+
title = 'Error'
|
383
|
+
message = @resources[0].info[0].text().to_s()
|
384
|
+
table = create_message_table(table_class, header_class,
|
385
|
+
body_class, row_classes, title, message)
|
386
|
+
end
|
387
|
+
end
|
388
|
+
|
389
|
+
end
|
390
|
+
end
|
391
|
+
|
392
|
+
end
|
393
|
+
end
|