voruby 1.1 → 1.1.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.
@@ -1,391 +0,0 @@
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 HST VOTable.
4
-
5
- require 'voruby/votables/votable'
6
-
7
- module VORuby
8
- module VOTables
9
-
10
- module VOTable
11
- class HSTVOTable < 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 HST configuration file given a key.
23
- # Returns a hash with the field's attributes
24
- # [_key_:]
25
- # The key indexing on field's attribute
26
- def find_field_in_conf_file(key)
27
- hst_field = {'id'=> nil, 'name'=> nil, 'ucd'=> nil}
28
-
29
- if key != nil
30
- HST_ARCHIVE_CONFIG.each do |archive|
31
- archive['votable_fields'].each do |field|
32
- if field['key'] == key
33
- hst_field['id'] = field['id'] if field['id'] != 'nil'
34
- hst_field['name'] = field['name'] if field['name'] != 'nil'
35
- hst_field['ucd'] = field['ucd'] if field['ucd'] != 'nil'
36
- break
37
- end
38
- end
39
- end
40
- end
41
- return hst_field
42
- end
43
-
44
- # Find the column number(s) associated with the
45
- # VOX:imageAccessReference UCD.
46
- # Returns a list of column positions.
47
- def image_access_reference_columns()
48
- hst_ucd_access = find_field_in_conf_file('VOX:Image_AccessReference')['ucd']
49
-
50
- if find_columns(hst_ucd_access).first != nil
51
- find_columns(hst_ucd_access).first
52
- end
53
- end
54
-
55
- def image_ra_columns
56
- ucd_ra = find_field_in_conf_file('POS_EQ_RA_MAIN')['ucd']
57
-
58
- if find_columns(ucd_ra).first != nil
59
- find_columns(ucd_ra).first
60
- end
61
- end
62
-
63
- def image_dec_columns
64
- ucd_dec = find_field_in_conf_file('POS_EQ_DEC_MAIN')['ucd']
65
-
66
- if find_columns(ucd_dec).first != nil
67
- find_columns(ucd_dec).first
68
- end
69
- end
70
-
71
- def image_filter_columns
72
- ucd_filter = find_field_in_conf_file('VOX:BandPass_ID')['ucd']
73
-
74
- if find_columns(ucd_filter).first != nil
75
- find_columns(ucd_filter).first
76
- end
77
- end
78
-
79
- def image_date_obs_columns
80
- #ucd_date_obs = find_field_in_conf_file('')['ucd']
81
-
82
- #if find_columns(ucd_date_obs).first != nil
83
- # find_columns(ucd_date_obs).first
84
- #end
85
- end
86
-
87
- def image_telescope_columns
88
- #ucd_telescope = find_field_in_conf_file('')['ucd']
89
-
90
- #if find_columns(ucd_telescope).first != nil
91
- # find_columns(ucd_telescope).first
92
- #end
93
- end
94
-
95
- def image_survey_columns
96
- ucd_survey = find_field_in_conf_file('VOX:Image_Title')['ucd']
97
-
98
- if find_columns(ucd_survey).first != nil
99
- find_columns(ucd_survey).first
100
- end
101
- end
102
-
103
- def image_instrument_columns
104
- ucd_instrument = find_field_in_conf_file('INST_ID')['ucd']
105
-
106
- if find_columns(ucd_instrument).first != nil
107
- find_columns(ucd_instrument).first
108
- end
109
- end
110
-
111
- def image_sky_columns
112
- #ucd_sky = find_field_in_conf_file('')['ucd']
113
-
114
- #if find_columns(ucd_sky).first != nil
115
- # find_columns(ucd_sky).first
116
- #end
117
- end
118
-
119
- def image_zeropoint_columns
120
- #ucd_zeropoint = find_field_in_conf_file('')['ucd']
121
-
122
- #if find_columns(ucd_zeropoint).first != nil
123
- # find_columns(ucd_zeropoint).first
124
- #end
125
- end
126
-
127
- def image_seeing_columns
128
- #ucd_seeing = find_field_in_conf_file('')['ucd']
129
-
130
- #if find_columns(ucd_seeing).first != nil
131
- # find_columns(ucd_seeing).first
132
- #end
133
- end
134
-
135
- def image_depth_columns
136
- #ucd_depth = find_field_in_conf_file('')['ucd']
137
-
138
- #if find_columns(ucd_depth).first != nil
139
- # find_columns(ucd_depth).first
140
- #end
141
- end
142
-
143
- def image_exptime_columns
144
- ucd_exptime = find_field_in_conf_file('time.expo')['ucd']
145
-
146
- if find_columns(ucd_exptime).first != nil
147
- find_columns(ucd_exptime).first
148
- end
149
- end
150
-
151
- # Create headers for HTML table
152
- # [_res_:]
153
- # The resource from which to extract the table in question.
154
- # [_tbl_:]
155
- # The table inside the resource from which to extract the rows in question.
156
- # [_infer_add_to_cart_ref_:]
157
- #
158
- # [_add_to_cart_header_value_:]
159
- #
160
- # [_infer_access_ref_:]
161
- # Link the access reference URL associated with a row.
162
- # [_access_ref_header_value_:]
163
- # For the access reference column, place this value in the header.
164
- # [_access_ref_col_:]
165
- # A valid SIA VOTable will only ever have one VOX:Image_AccessReference.
166
- # [_header_class_:]
167
- # The class to assign the header of the HTML table.
168
- def create_headers(res, tbl,
169
- infer_add_to_cart_ref, add_to_cart_header_value,
170
- infer_access_ref, access_ref_header_value, access_ref_col,
171
- header_class, id=nil)
172
-
173
- headers = Array.new
174
- thead = "<thead class=\"#{header_class}\">\n"
175
-
176
- thead << "<tr>\n"
177
- if infer_add_to_cart_ref
178
- thead << "<th>#{add_to_cart_header_value}</th>\n"
179
- headers.push("<a href=\"javascript:void(0);\" onclick=\"siap.addAllRowsToCart('#{id}');\">*</a>")
180
- end
181
- if infer_access_ref
182
- thead << "<th>#{access_ref_header_value}</th>\n"
183
- headers.push('&nbsp;')
184
- end
185
- col_count = 0
186
- fields(res, tbl).each do |field|
187
- field_archive = find_field_in_conf_file(field.ucd.value())
188
- field_ucd = field_archive['ucd']
189
- if infer_access_ref and col_count == access_ref_col
190
- headers[1] = field_ucd if field_ucd != 'nil'
191
- else
192
- thead << "<th>#{field_archive['name']}</th>\n"
193
- if field_ucd != 'nil'
194
- headers.push(field_ucd)
195
- else
196
- headers.push('&nbsp;')
197
- end
198
- end
199
- col_count += 1
200
- end
201
- thead << " </tr>\n"
202
-
203
- thead << "<tr>\n"
204
- headers.each do |h|
205
- thead << "<th>#{h}</th>\n"
206
- end
207
- thead << "</tr>\n"
208
-
209
- thead << "</thead>"
210
-
211
- return thead
212
- end
213
-
214
- def create_add_to_cart_link(link_ref, columns)
215
- access_ref_col = image_access_reference_columns()
216
- link_ref << '&resource=' + CGI.escape(columns[access_ref_col].value).to_s if access_ref_col
217
- ra_col = image_ra_columns()
218
- link_ref << '&rac=' + columns[ra_col].value.to_s if ra_col
219
- dec_col = image_dec_columns()
220
- link_ref << '&decc=' + columns[dec_col].value.to_s if dec_col
221
- filter_col = image_filter_columns()
222
- link_ref << '&filter=' + columns[filter_col].value.to_s if filter_col
223
- date_obs_col = image_date_obs_columns()
224
- link_ref << '&date_obs=' + columns[date_obs_col].value.to_s if date_obs_col
225
- teles_col = image_telescope_columns()
226
- link_ref << '&telescop=' + columns[teles_col].value.to_s if teles_col
227
- survey_col = image_survey_columns()
228
- link_ref << '&survey=' + columns[survey_col].value.to_s if survey_col
229
- instrum_col = image_instrument_columns()
230
- link_ref << '&instrument=' + columns[instrum_col].value.to_s if instrum_col
231
- sky_col = image_sky_columns()
232
- link_ref << '&sky=' + columns[sky_col].value.to_s if sky_col
233
- zerop_col = image_zeropoint_columns()
234
- link_ref << '&zeropoint=' + columns[zerop_col].value.to_s if zerop_col
235
- seeing_col = image_seeing_columns()
236
- link_ref << '&seeing=' + columns[seeing_col].value.to_s if seeing_col
237
- depth_col = image_depth_columns()
238
- link_ref << '&depth=' + columns[depth_col].value.to_s if depth_col
239
- exptime_col = image_exptime_columns()
240
- link_ref << '&exptime=' + columns[exptime_col].value.to_s if exptime_col
241
-
242
- return link_ref
243
- end
244
-
245
- # Create body for HTML table
246
- # [_res_:]
247
- # The resource from which to extract the table in question.
248
- # [_tbl_:]
249
- # The table inside the resource from which to extract the rows in question.
250
- # [_infer_add_to_cart_ref_:]
251
- #
252
- # [_add_to_cart_link_value_:]
253
- #
254
- # [_add_to_cart_link_ref_:]
255
- #
256
- # [_infer_access_ref_:]
257
- # Link the access reference URL associated with a row.
258
- # [_access_ref_link_value_:]
259
- # For the access reference column, link this word.
260
- # [_access_ref_col_:]
261
- # A valid SIA VOTable will only ever have one VOX:Image_AccessReference.
262
- # [_body_class_:]
263
- # The class to assign the body of the HTML table.
264
- # [_row_classes_:]
265
- # The class to assign the HTML table body rows.
266
- def create_body(res, tbl,
267
- infer_add_to_cart_ref, add_to_cart_link_value, add_to_cart_link_ref,
268
- infer_access_ref, access_ref_link_value, access_ref_col,
269
- body_class, row_classes)
270
-
271
- tbody = "<tbody class=\"#{body_class}\">\n"
272
- row_count = 0
273
- rows(res, tbl).each do |tr|
274
- tbody << "<tr class=\"#{row_classes[row_count % 2]}\">\n"
275
-
276
- # Specially mark up the first column to link to the image.
277
- columns = tr.tds()
278
-
279
- if infer_add_to_cart_ref
280
- archive = add_to_cart_link_ref.slice(add_to_cart_link_ref.index('&archive='), add_to_cart_link_ref.length)
281
- archive = archive.slice('&archive='.length, archive.length)
282
- archive = archive.slice(0, archive.index('&')) if archive.index('&')
283
- link_id = 'add_' + archive.to_s + '_' + row_count.to_s
284
- url = create_add_to_cart_link(add_to_cart_link_ref, columns)
285
- js = "new Ajax.Request('#{url}', " +
286
- " {method: 'post', " +
287
- " onComplete: function(request){Element.hide('#{link_id}');}});"
288
- tbody << "<td><a id=\"#{link_id}\" href=\"javascript:void(0);\" " +
289
- "onclick=\"#{js};return false;\"" +
290
- ">#{add_to_cart_link_value}</a></td>\n"
291
- end
292
- if infer_access_ref
293
- link_ref = columns[access_ref_col].value
294
- tbody << "<td><a href=\"#{link_ref}\">#{access_ref_link_value}</a></td>\n"
295
- end
296
-
297
- col_count = 0
298
- columns.each do |td|
299
- tbody << "<td>#{td.value}</td>\n" if infer_access_ref and col_count != access_ref_col
300
- col_count += 1
301
- end
302
- tbody << "</tr>\n"
303
- row_count += 1
304
- end
305
- tbody << "</tbody>"
306
-
307
- return tbody
308
- end
309
-
310
- # Convert the specified table in the specified resource into an HTML
311
- # table.
312
- # [_id_:]
313
- # The ID to assign to the HTML table as a whole.
314
- # [_add_to_cart_link_ref_:]
315
- #
316
- # [_res_:]
317
- # The resource from which to extract the table in question.
318
- # [_tbl_:]
319
- # The table inside the resource from which to extract the rows in question.
320
- # [_infer_add_to_cart_ref_:]
321
- #
322
- # [_add_to_cart_header_value_:]
323
- #
324
- # [_add_to_cart_link_value_:]
325
- #
326
- # [_infer_access_ref_:]
327
- # Link the access reference URL associated with a row.
328
- # [_access_ref_header_value_:]
329
- # For the access reference column, place this value in the header.
330
- # [_access_ref_link_value_:]
331
- # For the access reference column, link this word.
332
- # [_show_border_:]
333
- # The boolean value to show HTML table border
334
- # [_table_class_:]
335
- # The class to assign the HTML table as a whole.
336
- # [_header_class_:]
337
- # The class to assign the header of the HTML table.
338
- # [_body_class_:]
339
- # The class to assign the body of the HTML table.
340
- # [_row_classes_:]
341
- # The class to assign the HTML table body rows.
342
- def to_html(id=nil, add_to_cart_link_ref=nil, res=0, tbl=0,
343
- infer_add_to_cart_ref=true,
344
- add_to_cart_header_value='Add to Cart',
345
- add_to_cart_link_value='Add',
346
- infer_access_ref=true,
347
- access_ref_header_value='URL',
348
- access_ref_link_value='Retrieve',
349
- show_border=false,
350
- table_class='votable',
351
- header_class='header',
352
- body_class='body',
353
- row_classes=['row1', 'row2'])
354
- begin
355
- # A valid SIA VOTable will only ever have one VOX:Image_AccessReference.
356
- access_ref_col = image_access_reference_columns()
357
-
358
- if access_ref_col
359
- # Create headers
360
- thead = create_headers(res, tbl,
361
- infer_add_to_cart_ref, add_to_cart_header_value,
362
- infer_access_ref, access_ref_header_value, access_ref_col,
363
- header_class, id)
364
-
365
- # Create body
366
- tbody = create_body(res, tbl,
367
- infer_add_to_cart_ref, add_to_cart_link_value, add_to_cart_link_ref,
368
- infer_access_ref, access_ref_link_value, access_ref_col,
369
- body_class, row_classes)
370
-
371
- return create_table(id, show_border, table_class, thead, tbody)
372
- else
373
- title = 'No Data'
374
- message = 'VOTable not contains data.'
375
- return create_message_table(table_class, header_class,
376
- body_class, row_classes, title, message)
377
- end
378
-
379
- rescue Exception => e
380
- title = 'Error'
381
- message = @resources[0].info[0].text().to_s()
382
- table = create_message_table(table_class, header_class,
383
- body_class, row_classes, title, message)
384
- end
385
- end
386
-
387
- end
388
- end
389
-
390
- end
391
- end