Starting with the existing Firefly TAP-query UI, extend the graphical query-builder interface as follows:
ivoa.ObsCore
table via TAP_SCHEMA
.WHERE
clauses for the ADQL as expressions involving calib_level
and dataproduct_type
. The resulting widget should also be able to generate the equivalent parameter expression for an SIAv2 query, using the CALIB
and DPTYPE
parameters. Provide for an application-level control that determines whether dataproduct_type=="image"
is set as the default query state of this subsection.calib_level
and dataproduct_type
and display them in the UI, e.g., by greying out values that are not present.True
, provide options for "exactly equal" and "matches substring" queries. Generate appropriate WHERE
clauses for the ADQL as expressions involving obs_collection. The resulting widget should also be able to generate the equivalent parameter expression for an SIAv2 query, using the COLLECTION parameter, as long as the "matches substring" control is not asserted (which would be an error, as substring searches are not supported in the SIAv2 query parameters). Provide for an application to provide optional sample values to be displayed in the UI.obs_collection
, and display a list of values as a multiple-selection menu or similar interface, as an alternative to explicit text query string entry. (Extra extra) Include in this display an indication of the number of observation datasets available in each collection. Write the code in a way that facilitates adding further information of this kind in the future.dataproduct_subtype
column. Provide options for "exactly equal" and "matches substring" queries. Generate appropriate WHERE
clauses for the ADQL as expressions involving obs_collection. No SIAv2 support is required. Provide for an application to provide optional sample values to be displayed in the UI.dataproduct_subtype
, and display a list of values as a multiple-selection menu or similar interface, as an alternative to explicit text query string entry. (Extra extra) Include in this display an indication of the number of observation datasets available in each collection. Write the code in a way that facilitates adding further information of this kind in the future.WHERE
clauses for the ADQL as expressions involving em_min
and em_max
, which requires conversion to meters. The resulting widget should also be able to generate the equivalent parameter expression for an SIAv2 query, using the BAND
parameter.em_min
and the maximum value of em_max
available on the service, and display them in the UI, in nanometers if they are both less than 1500nm, otherwise in microns.WHERE
clauses for the ADQL as expressions involving s_region
and the CONTAINS()
and/or INTERSECTS()
operators.WHERE
clauses for the ADQL as expressions involving t_exptime
. The resulting widget should also be able to generate the equivalent parameter expression for an SIAv2 query, using the TIME
and EXPTIME
parameters.t_min
, the maximum value of t_max
, and the minimum and maximum values of t_exptime
available on the service, and display them in the UI.SELECT DISTINCT
for tuples of calib_level, dataproduct_type, dataproduct_subtype, and obs_collection and then maintaining this table internal to the Javascript, updating the counts of available observations per value as appropriate to the currently configured query.WHERE
clauses from all these subsections in the generated ADQL query.Display of the query result will rely on the existing Firefly capability for displaying an image browser based on ObsCore query results.
Note that there is no requirement in this particular task to actually implement SIAv2 queries - the point is just to make the query widgets reusable when we get around to implementing SIAv2.
Add an optional cutout-size parameter to the spatial-selection UI subsection. Ensure that the spatial-selection query is compatible with the cutout size, when provided, so that observations that do not cover the cutout are not returned. When a cutout is requested, ensure that dataproduct_type=="image"
is added to the query.
(Requires more detailed collaboration with the rest of the Firefly team)
Analyze the returned ObsCore table for DataLink information indicating that a linked SODA service is available. If it is, invoke the SODA service (this will require the creation of a new search processor on the Java side of Firefly, most likely) and display the resulting image. If it is not, display a message to the user along the lines of "The image service being accessed does not currently provide a linked image cutout service; displaying the full image instead." In that case, display the cutout box as an overlay on each displayed image. Whether or not a cutout service is available may be a per-row property of the ObsCore table; design the UI behavior accordingly.
ALSO
Allow the application to provide a default cutout service. This should be able to be conditioned on acceptable values of the facility, instrument, calib_level, and dataproduct_subtype (if present) fields in the ObsCore table, and on a regular expression for the obs_publisher_did field. If present, this default is used whenever dataproduct_type is "image", DataLink information fails to yield a SODA service, and the value-matches are satisfied. The default cutout service definition should include a full DataLink service descriptor which will simply be used by Firefly instead of a service descriptor obtained from the query result table.