Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Starting with the existing Firefly TAP-query UI, extend the graphical query-builder interface as follows:

  1. Determine whether the selected TAP service is advertising an ivoa.ObsCore  table via TAP_SCHEMA .
  2. If so, display a modified UI for the schema/table selection row of the query screen:
    1. Provide a radio button choice for () "Image metadata search" vs. () "General table search".  When the former is selected, display a message to the effect of "Searching table 'ivoa.ObsCore' for image metadata", hide the schema/table selection UI elements, and enable the behavior in items 3 and beyond below.  When the latter is selected, retain the normal TAP-search functionality, but if the schema "ivoa" and table "ivoa.ObsCore" happen to be selected, enable the behavior below anyway.
    2. (Extra) If a table is selected, and the table schema appears consistent with ObsCore (contains the necessary columns for the behavior below), enable the behavior below.
  3. Modify the rest of the UI to show that it is an "image metadata search" screen.
  4. Add a new collapsible subsection of the screen that provides for selection against the calibration level in the fixed list of levels defined in the ObsCore standard.   Provide a checkbox or multiple-selection menu interface.  Also allow for selection against the data product types defined in ObsCore, again as a checkbox or multiple-selection menu interface.  Generate appropriate 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.
    1. (Extra) Query the service to determine the available values of calib_level and dataproduct_type and display them in the UI, e.g., by greying out values that are not present.
  5. Add a new collapsible subsection of the screen that provides for selection against the collection name as a string.  If an "ObsTAP mode" control parameter of the widget is 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.
    1. (Extra) Query the service to determine the list of available values for 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.
  6. Add a new collapsible subsection of the screen that provides for selection against the data product sub-type (which for Rubin/LSST is the Butler dataset type) as a string.  Display of this subsection should be conditioned on whether the service actually has a 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.
    1. (Extra) Query the service to determine the list of available values for 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.
  7. Add a new collapsible subsection of the screen that provides for selection against the wavelength coverage of the observations.  Allow input of wavelengths in nanometers and microns, as well as selection of a wavelength range from a menu of filters.  Make the list of filters configurable by "application" code - that is, by code that's not in core Firefly.  Generate appropriate 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.
    1. (Extra) Query the service to determine the minimum value of 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.
  8. Extend the spatial search subsection of the screen to allow for queries against the boundaries of regions, similar to those currently supported in IRSA Viewer. and in the legacy PDAC portal.  The resulting widget should be able to generate appropriate WHERE clauses for the ADQL as expressions involving s_region and the CONTAINS()  and/or INTERSECTS() operators.
  9. Extend the temporal search subsection of the screen to allow for queries against the exposure duration, expressed in seconds.  Generate appropriate 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.
    1. (Extra) Query the service to determine the minimum value of 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.
  10. (Extra extra) Allow some or all of the "query the service to determine available values" features to interact with / be updated by selections made interactively.  This could be accomplished by, say, doing a 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.
  11. Include the WHERE clauses from all these subsections in the generated ADQL query.
  12. Provide a version of this screen that entirely suppresses the service-selection and table-selection, allowing an application to provide a dedicated "image search" screen without distractions. 

...