TruSat / trusat-frontend

The React codebase for space-sustainability tool TruSat
https://trusat.org
Apache License 2.0
31 stars 8 forks source link

Catalog objects are viewable, and their TLE’s are downloadable by Celestrak category #253

Open johngribbin opened 4 years ago

johngribbin commented 4 years ago

This feature would:

It will require navigation queries for the various object categories, and mimic the service offered by Celestrak here - https://www.celestrak.com/SpaceTrack/TLERetriever3Help.php

mikeville commented 4 years ago

Here's a design that replaces the "all" filter with a "more" dropdown:

Screen Shot 2020-03-23 at 3 12 44 PM

Figma design file here.

mikeville commented 4 years ago

Let's track category labels and groups in this public doc.

johngribbin commented 4 years ago

@mikeville Do we want to include a description for these new filters? The way I see it, we can do one of two things:

  1. Basic description - These are the Starlink objects in the TruSat Catalog
  2. More detailed - These are satellites that form part of a constellation being created by American company SpaceX to provide satellite internet access

This is the component that will need to be updated when a decision is made - https://github.com/TruSat/trusat-frontend/blob/dev/src/catalog/components/FilterDescription.js

johngribbin commented 4 years ago

FYI - frond end work on this feature can be tracked on the celestrak-categories branch.

See here, a tweak to the FilterDescription component that covers the "Basic Description" update outlined in the comment above - https://github.com/TruSat/trusat-frontend/blob/feature/celestrak-categories/src/catalog/components/FilterDescription.js

mikeville commented 4 years ago

@johngribbin Good idea with the description.

For the text All the objects classified as "${catalogFilter}" in the TruSat Catalog, is the category title that's in the category dropdown available to put in the description instead of its respective catalogFilter argument?

For example, "nnss" would instead read as "Navy navigation satellite"?

johngribbin commented 4 years ago

@mikeville It is possible, but it would take a rethink of how "state" is managed for a number of components. I'll have a look at it

johngribbin commented 4 years ago

Summary of changes that were made this morning in response to feedback can be viewed here - https://github.com/TruSat/trusat-frontend/pull/284

Changes were all merged to the dev branch can be viewed by running TruSat locally. Following the steps outlined in the Get Started section of the README here - https://github.com/TruSat/trusat-frontend/blob/dev/README.md and make sure to checkout the dev branch

Alternative you can view the current state of the feature by visiting the dev deployment site hosted here - https://devvymcdevface.trusat.org/catalog/priorities

@mikeville @interplanetarychris @mainnebula

johngribbin commented 4 years ago

After quick chat with @Kmoneal, I've got some questions re Download ${catalogFilter} TLEs button on the catalog view.

Currently if no data is found for a given catalogFilter, the CatalogTable does not render any rows, and instead returns the message The catalog does not currently include any objects that match the filter chosen. I have noticed that when this happens, then there is not going to be any TLEs either to download. Questions:

  1. Should we hide the button when it is found that there is no data to be rendered in the table?
  2. Is there celestrak categories that do return data to be displayed in the table, but do not not return any TLE data to be downloaded? And if so what should we do in that case?

@mikeville @interplanetarychris

interplanetarychris commented 4 years ago

It’s possible for there to be IODs, but not yet TLEs, but as it gets more automated, that window of time is likely to decrease.

-Chris @interplanetary On Apr 2, 2020, 12:10 -0700, John Gribbin notifications@github.com, wrote:

After quick chat with @Kmoneal, I've got some questions re Download ${catalogFilter} TLEs button on the catalog view. Currently if no data is found for a given catalogFilter, the CatalogTable does not render any rows, and instead returns the message The catalog does not currently include any objects that match the filter chosen. I have noticed that when this happens, then there is not going to be any TLEs either to download. Questions:

  1. Should we hide the button when it is found that there is no data to be rendered in the table?
  2. Is there celestrak categories that will return data to be displayed in the table, but will not return any TLE data to be downloaded? And if so what should we do with those?

@mikeville @interplanetarychris — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

johngribbin commented 4 years ago

https://github.com/TruSat/trusat-frontend/pull/285

Changes deployed to development site - https://devvymcdevface.trusat.org/catalog/one-web

Download TLEs button now hidden when no data is returned to the Catalog Table.

johngribbin commented 4 years ago

After testing the Celestrak Categories feature, I found that the following Categories return objects to the CatalogTable, but do not offer any TLEs to download:

With the current implementation of the DownloadCatalogFilterTleButton the front-end does not know if there is going to be any TLEs available before the user clicks the button. A quick fix for this could be to include the number of TLEs in the data returned to the /catalog/{catalogFilter} endpoint - which could be used to decide whether or not to render the button. This would be a much better UX.

Another bonus from doing this fix is that we can include in the change the number of objects for a given category - and I can use this in the FilterDescription component to inform the user of how many objects we have information on for the filter they just selected.

@Kmoneal We currently return an array of objects from the /catalog/${catalogFilter} endpoint. I propose we change this to return a JSON object that looks like the following:

{
    data: [],
    object_count: integer 999,
    tle_count: 50
}

data would be the value that is currently returned - i.e. an array of objects (one for each sat object)