lmichel / tap-complex-data Goto Github PK
View Code? Open in Web Editor NEWJS module helping users to query and browse complex data exposed in a IVOA TAP service
License: MIT License
JS module helping users to query and browse complex data exposed in a IVOA TAP service
License: MIT License
Is your feature request related to a problem? Please describe.
The column selector form opens with the default column selected.
One the user has done its own selection, there is no way to turn back this default setup
Describe the solution you'd like
A third restore default
button on the form bottom would be appreciated
On Simbad, when put constraint on numerical IDs, the values are quoted. They shouldn't be.
SELECT TOP 10 "public".basic.oid , "public".basic.otype , "public".basic.main_id , "public".basic.otype_txt , "public".basic.ra , "public".basic.dec
FROM "public".basic
JOIN "public".otypes ON "public".basic.oid="public".otypes.oidref
WHERE ( "public".basic.oid ='11898832' ) AND
( "public".otypes.otype ='-536870912' )
When run this query, the former results are displayed as if the query was successful and there is no error message in the console or on the screen either.
The user has no reason to consider that a failure happen. This is a very serious issue.
Is your feature request related to a problem? Please describe.
being able to edit the request in the jsResources demo page would be usefull
Describe the solution you'd like
a field where we could edit the request
When we connect a table without join (no key either), onle one row is displayed with the following message:
duplacted data has been removed 9 duplicated entrie(s) were removed
Likely an edge effect
Is your feature request related to a problem? Please describe.
Once #36 is fixed, we have 2 levels of bookmarking
This make the bookmark button on the page head confusing
Describe the solution you'd like
Remove the BM button from the page head
Make it accessible from the info button either at service or table nodes
many methods use async await for a very small part of the work and sometimes asynchronous work isn't needed each call due to a cache it would make the api more flexible to make methods use a "smart" async:
fullAsync
when true the whole method is wraped into a promise (even if unnecessary)This has been implemented by Serges on the develop
branch of TapHandle
Is your feature request related to a problem? Please describe.
selecting the table then the field like currently done in the jsResources page is quite un handy
Describe the solution you'd like
putting all columns in one constraint selector
Describe alternatives you've considered
a better way to select the table
Is your feature request related to a problem? Please describe.
Request with joins often return un-normalized data currently a re-normalization process exist in the code dedicated to the jsResource test page but not in the api
Describe the solution you'd like
move re-normalization process from the jsResource test page's dedicated code to the api
Make the waiting panel a little bit transparent.
The black screen is uncomfortable because the user lost track of what he was looking at.
I we have the following schema
A selection on basic=XY with ref=AB will show up
This is exactly the expected behavior
If we had one more join level as shown below
A selection on basic=XY with ref_val=AB will show up
Although this is a correct behavior, it is confusing for the user because he looses the track of the selected data as long as he goes down in the hierarchy .
This issue must be discussed ahead but we can test the following workaround:
level > root
(e.g. ref and deeper in our example)Following the discussion with the registry WG, It turns out that the reason for the misbehavior of the registry browser is due the non support of joins with multiple keys.
Dear Registry WG,
Sorry, I hadn't realised the mail is on-list before hectically
passing the mail to my MTA. Apologies for a mail intended to be
private and a discussion of my transportation predicaments on the
list.Anyway, since it was on-list, let me state the problem for
posteriority now that I've arrived:On Fri, Oct 22, 2021 at 06:04:54PM +0200, Markus Demleitner wrote:
On Fri, Oct 22, 2021 at 04:07:07PM +0200, Laurent Michel wrote:
SELECT TOP 100 rr.capability., rr.interface.
FROM rr.capability
JOIN rr.interface ON rr.interface.ivoid = rr.capability.ivoid
WHERE rr.capability.ivoid like 'ivo://cadc.nrc.ca/youcat'
AND rr.capability.standard_id = 'ivo://ivoa.net/std/tap'The problem here is that you do not join on cap_index; my natural
join of course did that automatically.For all I can see, the foreign key from interface into capability is
correctly declared at least on reg.g-vo.org, though, no?Anyway, if you want to explicitly write the join (which, as I said,
is unidiomatic for RegTAP), you would have to write this asSELECT TOP 100 rr.capability., rr.interface.
FROM rr.capability
JOIN rr.interface ON (
rr.interface.ivoid = rr.capability.ivoid
AND rr.interface.cap_index = rr.capability.cap_index)
WHERE rr.capability.ivoid like 'ivo://cadc.nrc.ca/youcat'
AND rr.capability.standard_id = 'ivo://ivoa.net/std/tap'-- or, more concisely, write the join condition as
USING (ivoid, cap_index)
Oh, and avoid the LIKE operator (here in the ivoid condition) when
you don't actually have a pattern. One of these days there'll be a %
or _ in your literal and you'll have unexpected results.I am also on a crusade against SELECT * -- it usually pays all around
to think what data exactly one needs. Perhaps not so much in this
case, but we have lots of tables in the VO with 100+ columns, and we
ought to educate our users that pulling them all is not a good idea
in general (if only because you'll much earlier hit upload limits
when re-using the table).Side note: The cool TOPCAT feature where you can control-click the
columns you want in the metadata browser and then hit the "insert
columns" botton would be on my wishlist for taphandle...
Is your feature request related to a problem? Please describe.
The only way we have to erase the search bar content is to use the Backspace key.
This triggers many useless queries on the server and alter the user experience.
Describe the solution you'd like
Add a trash button to the search bar that erase it in in step
Describe the bug
Can't connect simbad with the API
To Reproduce
Steps to reproduce the behavior:
Run the test API page select Simbad click on Connect API
Expected behavior
Satus : OK connected with simbad
Desktop (please complete the following information):
It would be nice to display any column that have been constrained.
It could be added to the objectMap, with a flag (to be added to the AH) allowing to remove before the next query.
In addition to the above feature, the WHAT selector should be multi-table
Describe the bug
On CAOM
when expanding the ObsPointing
table to display all columns, the schema name is prefixed with10
which makes the query failing
Initial Query:
SELECT TOP 10 dbo.CaomObservation.observationTID , dbo.CaomObservation.algName , dbo.CaomObservation.trgName , dbo.CaomObservation.trgPosRA , dbo.CaomObservation.trgPosDec , dbo.CaomObservation.tlsName , dbo.CaomObservation.insName
FROM dbo.CaomObservation
click on planTID=574585
Failng query
Async AJAXurl: //vao.stsci.edu/CAOMTAP/tapservice.aspx/sync
query: SELECT TOP 10dbo.ObsPointing.dataProduct_Type , dbo.ObsPointing.calib_level , dbo.ObsPointing.obs_collection , dbo.ObsPointing.obs_id , dbo.ObsPointing.target_name , dbo.ObsPointing.s_ra , dbo.ObsPointing.s_dec , dbo.ObsPointing.t_min , dbo.ObsPointing.t_max , dbo.ObsPointing.t_exptime , dbo.ObsPointing.wavelength_region , dbo.ObsPointing.filters , dbo.ObsPointing.em_min , dbo.ObsPointing.em_max , dbo.ObsPointing.target_classification , dbo.ObsPointing.obs_title , dbo.ObsPointing.t_obs_release , dbo.ObsPointing.instrument_name , dbo.ObsPointing.proposal_pi , dbo.ObsPointing.proposal_id , dbo.ObsPointing.proposal_type , dbo.ObsPointing.project
FROM dbo.ObsPointing
WHERE ( dbo.ObsPointing.obsID=347707 )
there is inside of the api many times the same-ish code :
let data = this.someCall()
if(data.status){
// work
} else {
// return the error
}
or
if(this.connectLevel >n){
//work
}else {
// return generic error
}
those kind of code are everywhere sometimes in both the api and the application using the api thus finding a way to avoid this duplicated code will improve code clarity as well as quality
proposals :
then
and else
to setup handlers this might have some side effect as sometimes the existence of a then
method is used to know if the object can used like a promiseDescribe the bug
The table/schema selector must be tuned in a way that both ivoa
and tap_schema
are always displayed
To Reproduce
Steps to reproduce the behavior:
STSCI CAOMTAP
Obs
tap_schema
node disappeared.Expected behavior
ivoa
and tap_schema
always displayed
Screenshots
As we can not keep the compliance with JSResource for a reasonable cost, we have fork-and-split this code ant to integrate it within the project
In this new work configuration, we have to strip the imported JSResource code in order to get ride of the functions that are irrelevant in the context of TAP-complex
This a background task tat can be achieved in a progressive mode
This has to be checked on Osbcore tables
Describe the bug
On FF MacOS, the horizontal scroll bar of service tree masks the bottom node.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
All node must keep visible
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):
Smartphone (please complete the following information):
Is your feature request related to a problem? Please describe.
there is no way to put constraint for object around a position
Describe the solution you'd like
a constraint editor like the one in TapHandle to handle this kind of constraints
Some tables contain URLs on DataLink endpoints instead of direct links to data products.
DataLink is a VO protocol providing an access to a set of data or services attached to a given product.
Describe the bug
The icon below is supposed to open the query form
The query forms opens an closes twice and the collapsed windows ends-up over the search bar.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Open query form
Desktop (please complete the following information):
Smartphone (please complete the following information):
Additional context
Note that the column selector works fine
Is your feature request related to a problem? Please describe.
Open a credit page when clicking in the logo
Describe the solution you'd like
This page would a static html page to be joined to the project in a doc folder.
It will show up as modal window
Describe alternatives you've considered
We may consider to write the page in MD and to generate the HTML with Pandoc
Describe the bug
The "Get Join Tables" button doesn't work
To Reproduce
Steps to reproduce the behavior:
Expected behavior
The joined table json get showed.
Desktop (please complete the following information):
Is your feature request related to a problem? Please describe.
On a notebook with a screen less wide than a laptop, the dropdown list is very narrow
Describe the solution you'd like
The page header should be rearranged to make that list wider, e.g. by moving the search bar to the right
** Alternative **
Make the list wider than the button
We are looking into the possibility of developing a Vue.js app that would use a TAP service to display events. I was wondering if we could use your code for this? I don't see any license attached to the repo, so it is not clear.
Also, in the README, you mention Typescript, but the typescript files don't seem to be pushed in the repo.
Is your feature request related to a problem? Please describe.
there is no way to change the root table or to use a different schema in the jsResources demos page
Describe the solution you'd like
something like the tree used in the TapHandle page would do the job
Is your feature request related to a problem? Please describe.
Select a line open a few sub panels then select another line and they're all gone ...
Describe the solution you'd like
when changing the selected line all sub panels should updates
Set a constraint and look at the query...
Is your feature request related to a problem? Please describe.
there is only a very limited amount of TAP services and schema which we can connect to.
would be usefull to be able to look up in the registry for other TAP services
Describe the solution you'd like
A TapHandle like search bar
On Simbad, when put constraint on numerical IDs, the values are quoted. They shouldn't be.
SELECT TOP 10 "public".basic.oid , "public".basic.otype , "public".basic.main_id , "public".basic.otype_txt , "public".basic.ra , "public".basic.dec
FROM "public".basic
JOIN "public".otypes ON "public".basic.oid="public".otypes.oidref
WHERE ( "public".basic.oid ='11898832' ) AND
( "public".otypes.otype ='-536870912' )
Is your feature request related to a problem? Please describe.
the API doesn't allow to select more than 10 lines
Describe the solution you'd like
being able to change this either by a specific methods or using another param in the method we call to gather the data
Describe the bug
Selecting vizier does not work
To Reproduce
Steps to reproduce the behavior:
Expected behavior
message get updated and vizier can be connected to the API
Desktop (please complete the following information):
Describe the bug
When multiple paths exist from one table to another are available the system currently only keep the shortest path. This behavior is handy for internal ease of programmation but can hide data.
The system must be able to handle multiple paths.
AS a first quick fix keeping the longest path instead can hide less data.
Is your feature request related to a problem? Please describe.
For the now, only the position UCDs are used to select the columns to be displayed by default.
The Obscore UCDs related to the other axes (time energy at least) must be added
In a more general way, the UCDs to be displayed by default must be preferably taken out from the Obscore Standard.
In the current api implementation there is no encapsulation. If a true encapsulation is currently impossible in JS (or at least to hard to be worth) a basic encapsulation would probably be a good things to add.
as classes are defined in IIFE making a private method or attribute would be easy (define it inside the function and don't register it in the main object), even if this would require some tests to ensure that all objects doesn't share the sames private objects this remains an easy way to do.
Protected fields and methods could be registered in a protected
field of the object, this is not a true protected field but this way would ensure that anyone messing with those fields and functions would know that he may not be supposed to do so.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.