Git Product home page Git Product logo

nasa / earthdata-search Goto Github PK

View Code? Open in Web Editor NEW
731.0 61.0 214.0 177.48 MB

Earthdata Search is a web application developed by NASA EOSDIS to enable data discovery, search, comparison, visualization, and access across EOSDIS' Earth Science data holdings.

Home Page: https://search.earthdata.nasa.gov

License: Other

JavaScript 95.02% HTML 0.21% Shell 0.11% SCSS 4.66%
earthdata-search data-discovery eosdis hacktoberfest

earthdata-search's Introduction

serverless Build Status codecov Known Vulnerabilities

About

Earthdata Search is a web application developed by NASA EOSDIS to enable data discovery, search, comparison, visualization, and access across EOSDIS' Earth Science data holdings. It builds upon several public-facing services provided by EOSDIS, including the Common Metadata Repository (CMR) for data discovery and access, EOSDIS User Registration System (URS) authentication, the Global Imagery Browse Services (GIBS) for visualization, and a number of OPeNDAP services hosted by data providers.

License

Copyright © 2007-2023 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Application Installation and Usage

The Earthdata Search application uses Node v14 and Webpack 5 to generate static assets. The serverless application utilizes the following AWS services (important to note if deploying to an AWS environment):

  • S3
    • We highly recommend using CloudFront in front of S3.
  • SQS
  • API Gateway
  • Lambda
  • Cloudwatch (Events)

Prerequisites

Node

Earthdata Search runs on Node.js, in order to run the application you'll need to install it.

Recommended: Use Homebrew

brew install node
NPM

npm is a separate project from Node.js, and tends to update more frequently. As a result, even if you’ve just downloaded Node.js (and therefore npm), you’ll probably need to update your npm. Luckily, npm knows how to update itself! To update your npm, type this into your terminal:

npm install -g npm@latest
NVM

To ensure that you're using the correct version of Node it is recommended that you use Node Version Manager. Installation instructions can be found on the repository. The version used is defined in .nvmrc and will be used automatically if NVM is configured correctly.

Serverless Framework

Earthdata Search utilizes the Serverless Framework for managing AWS resources. In order to fully run and manage the application you'll need to install it:

npm install -g serverless@latest
PostgreSQL

Earthdata Search uses PostgreSQL in production on AWS RDS. If you don't already have it installed, download and install it to your development environment.

Recommended: Use Homebrew

brew install postgresql

Start the PostgreSQL server:

# If you have never used brew services before:
brew tap homebrew/services

# Start the server:
brew services start postgresql

If you decide to install via Homebrew you'll need to create the default user.

createuser -s postgres

Initial Setup

Package Installation

Once npm is installed locally, you need to download the dependencies by executing the command below in the project root directory:

npm install
Configuration
Secrets

For local development Earthdata Search uses a json configuration file to store secure files, an example is provided and should be copied and completed before attempting to go any further.

cp secret.config.json.example secret.config.json

In order to operate against a local database this file will need dbUsername and dbPassword values set (you may need to update dbHost, dbName or databasePort in static.config.json if you have custom configuration locally).

If you created the postgres user after a new PostgreSQL install as described above, both dbUsername and dbPassword will be the username you use to log into your computer.

Public (Non-Secure)

Non-secure values are stored in static.config.json. In order to prevent conflicts amongst developers you copy the static config into overrideStatic.config.json and change the config values there. Do not commit changes to static.config.json.

cp static.config.json overrideStatic.config.json

We can configure some of the layouts for the EDSC presentation by updating the defaultPortal value in overrideStatic.config.json. For development purposes we should set this to edsc.

Database Migration

Ensure that you have a database created:

createdb edsc_dev

To run the migrations locally:

DATABASE_URL=postgresql://USERNAME:PASSWORD@localhost:5432/edsc_dev npm run migrate up

Optionally, we can run the migration locally and not within a deployed Lambda. When deployed our database migrations run within Lambda due to the fact that in non-development environments our resources are not publicly accessible. To run the migrations you'll need to invoke the Lambda:

serverless invoke local --function migrateDatabase

Building the Application

The production build of the application will be output in the /static/dist/ directory:

npm run build

Run the Application Locally

The local development environment for the static assets can be started by executing the command below in the project root directory:

npm run start

This will run the React application at http://localhost:8080 -- please see Serverless Framework below for enabling the 'server' side functionality.

Serverless Framework

The serverless framework offers many plugins which allow for local development utilizing many of the services AWS offers. For the most part we only need API Gateway and Lambda for this application but there are plugins for many more services (a list of known exceptions will be maintained below).

Exceptions
  • SQS

While there is an sqs-offline plugin for serverless it still requires an actual queue be running, we may investigate this in the future but for now sqs functionality isn't available while developing locally which means the following pieces of functionality will not operate locally:

  • Generating Colormaps

Running API Gateway and Lambda Locally

Running the following command will spin up API Gateway and Lambda locally which will open up a vast majority of the functionality the backend offers.

npm run offline

This will provide access to API Gateway at http://localhost:3001

Additionally, this ties in with the serverless webpack plugin which will ensure that your lambdas are re-built when changes are detected.

Run the Automated Jest tests

Once the project is built, you must ensure that the automated unit tests pass:

npm run test

Run the Automated Cypress tests

You must also ensure that the automated integration tests pass:

npm run cypress:run

You can also use the Cypress GUI with:

npm run cypress:open
Configuration
Cypress Secrets

When adding new Cypress tests, you will need to modify the secrets.config.json file. You will need to edit the "cypress" object to include data from your local database:

"cypress": {
    "user": {
    "id": 1, // This should match the ID of your user in the 'users' database table
    "username": "your username here" // Replace with the urs_id field of your user in the 'users' database table
    }
}

Deployment

When the time comes to deploy the application, first ensure that you have the required ENV vars set:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY

This application runs in a VPC for NASA security purposes, therefore the following values are expected when a deployment occurs:

  • VPC_ID
  • SUBNET_ID_A
  • SUBNET_ID_B

For production use, this application uses Scatter Swap to obfuscate some IDs -- the library does not require a value be provided but if you'd like to control it you can set the following ENV vars:

  • OBFUSCATION_SPIN
  • OBFUSCATION_SPIN_SHAPEFILES

To deploy the full application use the following:

NODE_ENV=production serverless deploy --stage UNIQUE_STAGE

earthdata-search's People

Contributors

abbottry avatar anupamdahal avatar bccorb avatar bensun13 avatar bilts avatar bnp26 avatar charleshuang80 avatar clynnes avatar daniel-zamora avatar danieljdufour avatar dpesall avatar eniad avatar eudoroolivares2016 avatar i-hardy avatar jennywagg avatar jsiarto avatar legendarylarry avatar lewismc avatar m4cy avatar macrouch avatar marcusberger avatar mfayaq avatar mightynimble avatar mmorahan avatar mreese84 avatar rushgeo avatar saurabhdaware avatar suhay avatar tiagogalvao avatar trevorlang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

earthdata-search's Issues

EDSC-3073: Fix 508 compliance 'form control has no name' findings from SortSite

Please review Contribution.md before contributing to this project.

Description

Findings using SortSite. SortSite was run locally with Tophat removed and robots.txt allowing PowerMapper.

SortSite can be downloaded/accessed here: https://inside.nasa.gov/webservices/support/section-508-testing-sortsite

All of these findings appear repetitive and are pointing to the same code (shapefile dropzone).

Page URL Description Notes Guideline Line Count
/preferences http://localhost:8080/preferences This form control has no programmatically determined name. A programmatically determined name allows screen readers to tell the user what the control does. To add a name do one of the following: Use a LABEL element with the FOR attribute set to the ID of the form control Wrap a LABEL element around the form control Add a TITLE attribute Add an ARIA-LABELLEDBY attribute (not supported in all screen readers) Add an ARIA-LABEL attribute (not supported in all screen readers) Section 508 1194.22 356 1
/contact_info http://localhost:8080/contact_info This form control has no programmatically determined name. A programmatically determined name allows screen readers to tell the user what the control does. To add a name do one of the following: Use a LABEL element with the FOR attribute set to the ID of the form control Wrap a LABEL element around the form control Add a TITLE attribute Add an ARIA-LABELLEDBY attribute (not supported in all screen readers) Add an ARIA-LABEL attribute (not supported in all screen readers) Section 508 1194.22 342 1
/downloads (list) http://localhost:8080/downloads This form control has no programmatically determined name. A programmatically determined name allows screen readers to tell the user what the control does. To add a name do one of the following: Use a LABEL element with the FOR attribute set to the ID of the form control Wrap a LABEL element around the form control Add a TITLE attribute Add an ARIA-LABELLEDBY attribute (not supported in all screen readers) Add an ARIA-LABEL attribute (not supported in all screen readers) Section 508 1194.22 342 1
/projects (savedprojects) http://localhost:8080/projects This form control has no programmatically determined name. A programmatically determined name allows screen readers to tell the user what the control does. To add a name do one of the following: Use a LABEL element with the FOR attribute set to the ID of the form control Wrap a LABEL element around the form control Add a TITLE attribute Add an ARIA-LABELLEDBY attribute (not supported in all screen readers) Add an ARIA-LABEL attribute (not supported in all screen readers) Section 508 1194.22 342 1
/subscriptions http://localhost:8080/subscriptions This form control has no programmatically determined name. A programmatically determined name allows screen readers to tell the user what the control does. To add a name do one of the following: Use a LABEL element with the FOR attribute set to the ID of the form control Wrap a LABEL element around the form control Add a TITLE attribute Add an ARIA-LABELLEDBY attribute (not supported in all screen readers) Add an ARIA-LABEL attribute (not supported in all screen readers) Section 508 1194.22 342 1
error http://localhost:8080/searchwrthwryj This form control has no programmatically determined name. A programmatically determined name allows screen readers to tell the user what the control does. To add a name do one of the following: Use a LABEL element with the FOR attribute set to the ID of the form control Wrap a LABEL element around the form control Add a TITLE attribute Add an ARIA-LABELLEDBY attribute (not supported in all screen readers) Add an ARIA-LABEL attribute (not supported in all screen readers) Section 508 1194.22 342 1

Files

image-2021-02-04-12-07-40-564

Acceptance Criteria

Fix 'form control has no name' for all findings from SortSite to be 508 compliant.

Need a "Remove Filters" button in Filter Collections Sidebar

Is your feature request related to a problem? Please describe.
In the sidebar, there is a section called Keywords. In this section, we can apply multiple filters, but there isn't any button to remove all the features at once, like there is a feature of Clear Filters in Filter Granules.

Describe the solution you'd like
It would be better if we can remove all the filters at once in Keywords section too.

EDSC-2910: Add keyboard shortcut to toggle granule filters

Description

Add keyboard shortcut to toggle granule filters when looking at granules. This should only be active when looking at /search/granules...

The g button should be used for this shortcut.

Acceptance Criteria

  • When on the granules page (/search/granules), hitting the g button on the keyboard toggles the granule filters panel active/inactive.
  • When not on the granules page, hitting the g button on the keyboard has no impact on the application

EDSC-3070: Fix 508 compliance 'Multiple form label' finding

Please review Contribution.md before contributing to this project.

Description

Path Finding Location Element
/projects Multiple form labels Checkbox for 'Use Shapefile from Search' <input class="form-check-input checkbox__input" disabled="" id="ICESAT2-use-shapefile" name="Use Shapefile from Search" type="checkbox">

Files

image-2021-02-04-11-50-07-371

Acceptance Criteria

Fix 'Multiple form label' for all findings to be 508 compliant.

EDSC-2895: Direct download button not working for multi-file granules in list view

Description

Some collections consist of granules that are "multi-file" granules. In this case, clicking the "Download single granule data" button should display a dropdown of the available files to download. This is not working when a user is in the table view on the granules panel.

Reproduction Steps

  1. Search for a collection that has multi-file granules and click on it to load granules (NSIDC-0481 Prod environment)
  2. Click on the download icon in the list view and observe that multiple files appear
  3. Switch to table view using the toggle in the top-right of the granules panel
  4. Click on the download icon in the table view and observe that nothing happens

Acceptance Criteria

  1. Search for a collection that has multi-file granules and click on it to load granules (NSIDC-0481 in Prod)
  2. Click on the download icon in the list view and observe that multiple files appear
  3. Confirm that clicking on those links downloads the intended file
  4. Switch to table view using the toggle at the top of the granules panel
  5. Click on the download icon in the table view and observe that multiple files appear
  6. Confirm that clicking on those links downloads the intended file

EDSC-2914: Add keyboard shortcut to toggle the timeline

Description

Add keyboard shortcut to toggle timeline when on a page that displays the timeline (/search/granules, /projects).

The t button should be used for this shortcut.

Acceptance Criteria

  • When on the granules or project page (/search/granules, /projects), hitting the t button on the keyboard toggles the timeline active/inactive.
  • When not on the granules or project page, hitting the t button on the keyboard has no impact on the application
  • Add t: 'Toggle timeline' to KeyboardShortcutsModal.js
  • When a user is typing into any input field, hitting the t button does not trigger the shortcut

EDSC-3300: Change "Search for collections or topics" placeholder in keyword search

Please review Contribution.md before contributing to this project.

Description

The freetext placeholder on Earthdata Search says "Search for collections or topics", which confuses the issue. Even when you are using the Autosuggest, you are still not really searching for "topics", ultimately you are searching for data collections. Curiously, "Data" is not really mentioned on the front page of the UI. Suggest changing this phrase to "Type text to search for data"

Acceptance Criteria

Keyword search placeholder text reads "Type text to search for data".

EDSC-3484: Fix /contact_info url

Please review Contribution.md before contributing to this project.

Description

The Contact Information route should use a hypen instead of an underscore to match our the other routes. ex: search.earthdata.nasa.gov/contact-info

Acceptance Criteria

Contact information url is displayed as "/contact-info"

EDSC-3314: Display a disabled Explore button, when Smart Handoffs are not valid with the current parameters

Please review Contribution.md before contributing to this project.

Description

When a smart handoff is not displayed do to invalid parameters, we should inform the user by disabling the button and adding a tooltip. Currently, the Explore button is hidden completely.

Acceptance Criteria

Explore button is disabled and user is informed when the current query does not meet the requirements to display a smart handoff

EDSC-2419: Break up shapefiles that cross the antimeridian

Description

When dropping a shapefile that crosses the antimeridian onto EDSC, the polygon that gets drawn and sent to CMR be broken up into two parts, with each part being placed on the appropriate side of the map. The shapefile (shown in orange) should also follow this same behavior.

Screen Shot 2020-10-01 at 11 13 17 AM

Screen Shot 2020-10-01 at 11 13 30 AM

Example Shapefile
alaska-shapefile.kmz.zip (Unzip this file and drop onto the map)

Acceptance Criteria

  • When a shapefile is used that crosses the antimeridian, it is broken up and placed on the other side of the meridian.
  • When a shapefile is used that crosses the antimeridian, the polygon sent to CMR for spatial search is placed on the other side of the meridian

EDSC-3074: Fix 508 compliance 'FIELDSET elements labeled with LEGEND elements' finding from SortSite

Please review Contribution.md before contributing to this project.

Description

Findings using SortSite. SortSite was run locally with Tophat removed and robots.txt allowing PowerMapper.

SortSite can be downloaded/accessed here: https://inside.nasa.gov/webservices/support/section-508-testing-sortsite

Page URL Description Notes Guideline Line Count
/contact_info http://localhost:8080/contact_info All FIELDSET elements should be labeled with LEGEND elements. The first element inside the FIELDSET must be a LEGEND element, which provides a label or description for the group. WCAG 1.0 AA 12.3 272 1

Files

image-2021-02-04-12-11-15-826

Acceptance Criteria

Fix 'FIELDSET elements labeled with LEGEND elements' for all findings from SortSite to be 508 compliant.

EDSC-2911: Add keyboard shortcut to toggle advanced search modal

Description

Add keyboard shortcut to toggle advanced search when on a page that supports search (/search, /search/granules).

The a button should be used for this shortcut.

Acceptance Criteria

  • When on a search supported page (/search, /search/granules), hitting the a button on the keyboard toggles the advanced search modal active/inactive.
  • When not on a search supported page (/search, /search/granules), hitting the a button on the keyboard has no impact on the application.

Clarify order of commands in README

The README states the following

Run

    bin/setup

Note: This command will take a long time to run

### Application configuration

Review `config/application.yml` and update values as necessary

#### (Optional) Earthdata Login (URS) Configuration

I have an issue with this, if you just execute bin/setup, you are WARNed that you should copy config/application.yml.example and config/database.yml.example to formal files at config/application.yml and config/database.yml respectively. This means that once I do that, I then need to go back and configure the deployment however this should be done prior to me running bin/setup!

Additionally, I would strongly suggest that we encourage folks to sign up for URS rather than stating it as an optional step. The reason I say this, is as follows. Say they first run bin/setup, then go and create deployment-specific manifestations of config/application.yml and config/database.yml, based on the logic of the README, they still would again have to go back and add configure URS details if they have not already done that. This seems somewhat convoluted and I think it should be streamlined.

If we can agree, then I'll go ahead and get a quick PR submitted. Any thoughts?

Note on file sharing for OS X

After configuring config/database.yml and config/application.yml and executing ./bin/setup after a lot of std output I get the following...

== Preparing database (development and test environments) ==
    $ docker-compose run web bundle exec rake db:setup
      -> Creating network "earthdata-search_default" with the default driver
      -> Pulling db (postgres:)...
      -> latest: Pulling from library/postgres
Creating earthdata-search_db_1 ... error
      ->
      -> ERROR: for earthdata-search_db_1  Cannot start service db: b'Mounts denied: \r\nThe path /usr/local/earthdata-search/tmp/db\r\nis not shared from OS X and is not known to Docker.\r\nYou can configure shared paths from Docker -> Preferences... -> File Sharing.\r\nSee https://docs.docker.com/docker-for-mac/osxfs/#namespaces for more info.\r\n.'
      -> ERROR: for db  Cannot start service db: b'Mounts denied: \r\nThe path /usr/local/earthdata-search/tmp/db\r\nis not shared from OS X and is not known to Docker.\r\nYou can configure shared paths from Docker -> Preferences... -> File Sharing.\r\nSee https://docs.docker.com/docker-for-mac/osxfs/#namespaces for more info.\r\n.'
      -> Encountered errors while bringing up the project.
Exiting: Error executing command docker-compose run web bundle exec rake db:setup

By default, Docker for Mac shares directories falling under /Users, /Volumes, /private and /tmp anything else needs to be explicitly configured within the Docker daemon. In my case the EDSC code resides within /usr/local
I think this is worthy of being be noted within the README... possibly we could introduce an installation FAQ's section.
wdyt?

Error executing command docker-compose run web bundle exec rake db:setup

Environment

macOS High Sierra v10.13.6
Docker for Mac v2.0.0.0-mac81 (29211)

Issue

The Docker build eventually fails for above environment as follows

./bin/setup
...
== Preparing database (development and test environments) ==
    $ docker-compose run web bundle exec rake db:setup
Starting earthdata-search_db_1 ... done
Could not locate Gemfile or .bundle/ directory
Exiting: Error executing command docker-compose run web bundle exec rake db:setup

I've been picking the docker-compose build apart and haven't yet found any solution.

EDSC-2672: Lazy load Timeline component

Description

In an effort to improve initial load times, we should lazy load the Timeline component. We want to be sure to do this in a way that does not degrade the UX of the initial application load.

Acceptance Criteria

  • Timeline javascript is only loaded in pages that render the timeline (/search/granules, /project)

EDSC-3072: Fix 508 compliance 'repetitive navigation links' findings from SortSite

Please review Contribution.md before contributing to this project.

Description

Findings using SortSite. SortSite was run locally with Tophat removed and robots.txt allowing PowerMapper.

SortSite can be downloaded/accessed here: https://inside.nasa.gov/webservices/support/section-508-testing-sortsite

Many of the findings here are repetitive (pointing to the footer).

Page URL Description Notes Guideline Line Count
/search http://localhost:8080/search?m=-0.0703125!0.0703125!2!1!0!0%2C2 Provide a way to skip repetitive navigation links. Without a skip link, screen readers read out the navigation links on every page before reading the page content. Headings can be a substitute in limited circumstances, but they're not used by all screen reader users, and many other assistive technology users have no way to navigate via headings. Add a "Skip to Content" link at the start of the document hidden offscreen by CSS, and made visible on focus, so it's available to keyboard and screen reader users: [Skip to Content] Section 508 1194.22 (o) 329 1
/granules http://localhost:8080/search/granules?p=C1631076758-NSIDC_ECS&pg[0][gsk]=-start_date&q=C1631076758-NSIDC_ECS&m=-0.0703125!0.0703125!2!1!0!0%2C2&tl=1596639287!4!! Provide a way to skip repetitive navigation links. Without a skip link, screen readers read out the navigation links on every page before reading the page content. Headings can be a substitute in limited circumstances, but they're not used by all screen reader users, and many other assistive technology users have no way to navigate via headings. Add a "Skip to Content" link at the start of the document hidden offscreen by CSS, and made visible on focus, so it's available to keyboard and screen reader users: [Skip to Content] Section 508 1194.22 (o) 329 1
/granule-details http://localhost:8080/search/granules/granule-details?p=C1631076758-NSIDC_ECS&pg[0][gsk]=-start_date&g=G1691500315-NSIDC_ECS&q=C1631076758-NSIDC_ECS&m=67.728515625!-56.30273437500001!4!1!0!0%2C2&tl=1596639287!4!! Provide a way to skip repetitive navigation links. Without a skip link, screen readers read out the navigation links on every page before reading the page content. Headings can be a substitute in limited circumstances, but they're not used by all screen reader users, and many other assistive technology users have no way to navigate via headings. Add a "Skip to Content" link at the start of the document hidden offscreen by CSS, and made visible on focus, so it's available to keyboard and screen reader users: [Skip to Content] Section 508 1194.22 (o) 329 1
/granules/subscriptions http://localhost:8080/search/granules/subscriptions?p=C1631076758-NSIDC_ECS&pg[0][gsk]=-start_date&g=G1691500315-NSIDC_ECS&q=C1631076758-NSIDC_ECS&m=67.728515625!-56.30273437500001!4!1!0!0%2C2&tl=1596639287!4!! Provide a way to skip repetitive navigation links. Without a skip link, screen readers read out the navigation links on every page before reading the page content. Headings can be a substitute in limited circumstances, but they're not used by all screen reader users, and many other assistive technology users have no way to navigate via headings. Add a "Skip to Content" link at the start of the document hidden offscreen by CSS, and made visible on focus, so it's available to keyboard and screen reader users: [Skip to Content] Section 508 1194.22 (o) 329 1
/projects http://localhost:8080/projects?p=C1631076758-NSIDC_ECS!C1631076758-NSIDC_ECS&pg[1][a]=1691500315!NSIDC_ECS&pg[1][v]=t&pg[1][gsk]=-start_date&pg[1][m]=esi0&q=C1631076758-NSIDC_ECS&tl=1596640946!4!! Provide a way to skip repetitive navigation links. Without a skip link, screen readers read out the navigation links on every page before reading the page content. Headings can be a substitute in limited circumstances, but they're not used by all screen reader users, and many other assistive technology users have no way to navigate via headings. Add a "Skip to Content" link at the start of the document hidden offscreen by CSS, and made visible on focus, so it's available to keyboard and screen reader users: [Skip to Content] Section 508 1194.22 (o) 329 1
/downloads http://localhost:8080/downloads/2057964173 Provide a way to skip repetitive navigation links. Without a skip link, screen readers read out the navigation links on every page before reading the page content. Headings can be a substitute in limited circumstances, but they're not used by all screen reader users, and many other assistive technology users have no way to navigate via headings. Add a "Skip to Content" link at the start of the document hidden offscreen by CSS, and made visible on focus, so it's available to keyboard and screen reader users: [Skip to Content] Section 508 1194.22 (o) 329 1
/preferences http://localhost:8080/preferences Provide a way to skip repetitive navigation links. Without a skip link, screen readers read out the navigation links on every page before reading the page content. Headings can be a substitute in limited circumstances, but they're not used by all screen reader users, and many other assistive technology users have no way to navigate via headings. Add a "Skip to Content" link at the start of the document hidden offscreen by CSS, and made visible on focus, so it's available to keyboard and screen reader users: [Skip to Content] Section 508 1194.22 (o) 274 340 342 3
/contact_info http://localhost:8080/contact_info Provide a way to skip repetitive navigation links. Without a skip link, screen readers read out the navigation links on every page before reading the page content. Headings can be a substitute in limited circumstances, but they're not used by all screen reader users, and many other assistive technology users have no way to navigate via headings. Add a "Skip to Content" link at the start of the document hidden offscreen by CSS, and made visible on focus, so it's available to keyboard and screen reader users: [Skip to Content] Section 508 1194.22 (o) 272 327 2
/downloads (list) http://localhost:8080/downloads Provide a way to skip repetitive navigation links. Without a skip link, screen readers read out the navigation links on every page before reading the page content. Headings can be a substitute in limited circumstances, but they're not used by all screen reader users, and many other assistive technology users have no way to navigate via headings. Add a "Skip to Content" link at the start of the document hidden offscreen by CSS, and made visible on focus, so it's available to keyboard and screen reader users: [Skip to Content] Section 508 1194.22 (o) 272 327 2
/projects (savedprojects) http://localhost:8080/projects Provide a way to skip repetitive navigation links. Without a skip link, screen readers read out the navigation links on every page before reading the page content. Headings can be a substitute in limited circumstances, but they're not used by all screen reader users, and many other assistive technology users have no way to navigate via headings. Add a "Skip to Content" link at the start of the document hidden offscreen by CSS, and made visible on focus, so it's available to keyboard and screen reader users: [Skip to Content] Section 508 1194.22 (o) 272 327 2
/subscriptions http://localhost:8080/subscriptions Provide a way to skip repetitive navigation links. Without a skip link, screen readers read out the navigation links on every page before reading the page content. Headings can be a substitute in limited circumstances, but they're not used by all screen reader users, and many other assistive technology users have no way to navigate via headings. Add a "Skip to Content" link at the start of the document hidden offscreen by CSS, and made visible on focus, so it's available to keyboard and screen reader users: [Skip to Content] Section 508 1194.22 (o) 272 327 2
error http://localhost:8080/searchwrthwryj Provide a way to skip repetitive navigation links. Without a skip link, screen readers read out the navigation links on every page before reading the page content. Headings can be a substitute in limited circumstances, but they're not used by all screen reader users, and many other assistive technology users have no way to navigate via headings. Add a "Skip to Content" link at the start of the document hidden offscreen by CSS, and made visible on focus, so it's available to keyboard and screen reader users: [Skip to Content] Section 508 1194.22 (o) 272 327 2

Files

foia_footer
footer
root_spinner

Acceptance Criteria

Fix 'repetitive navigation links' for all findings from SortSite to be 508 compliant.

EDSC-3075: Fix 508 compliance 'element must contain ALT attribute' finding from SortSite

Please review Contribution.md before contributing to this project.

Description

Findings using SortSite. SortSite was run locally with Tophat removed and robots.txt allowing PowerMapper.

SortSite can be downloaded/accessed here: https://inside.nasa.gov/webservices/support/section-508-testing-sortsite

Page URL Description Notes Guideline Line Count
/preferences http://localhost:8080/preferences Each A element must contain text or an IMG with an ALT attribute. Add text to the link, or ALT text if the link contains an image. If there is no link text or the ALT text is blank, screen readers have nothing to read, so read out the URL instead. WCAG 1.0 AA 13.1 340 1

Files

image-2021-02-04-12-13-41-084

Acceptance Criteria

Fix 'element must contain ALT attribute' for all findings from SortSite to be 508 compliant.

EDSC-3064: Fix 508 compliance 'Empty button' findings

Please review Contribution.md before contributing to this project.

Description

Path Finding Location Element
/search Empty button Date/time filter button <button aria-haspopup="true" aria-expanded="false" id="temporal-selection-dropdown" type="button" class="search-form_button search-form_button--dark dropdown-toggle btn btn-inline-block"><i class="fa fa-calendar">
/search Empty button Spatial filter button <button aria-haspopup="true" aria-expanded="false" id="spatial-selection-dropdown" type="button" class="search-form_button search-form_button--dark dropdown-toggle btn btn-inline-block"><i class="fa fa-crop">
/projects Empty button Compose button next to project name <button type="button" class="project-header_button project-header_button--edit" label="Edit project name">
/projects Empty button Open/close folders for band subsetting <button class="btn tree-item__parent-button" type="button">

Files

image-2021-02-04-11-28-43-710
image-2021-02-04-11-30-13-330

Acceptance Criteria

Fix 'Empty button' for all findings to be 508 compliant.

EDSC-3066: Fix 508 compliance 'Broken AIRA reference' finding

Please review Contribution.md before contributing to this project.

Description

Path Finding Element
/downloads Broken ARIA reference <div x-placement="bottom-end" aria-labelledby="" class="dropdown-menu" style="position: absolute; top: 0px; left: 0px; opacity: 0; pointer-events: none;">

Acceptance Criteria

Fix 'Broken ARIA reference' for all findings to be 508 compliant.

EDSC-2523: Spatial restraints should zoom to center of viewable extent

Description

Entering spatial constraints currently zooms to the center of the entire EDSC window extent, not the current visible extent. The entire EDSC window includes space overlapping the map with the collections and facets panels.

With the default spacing of the collections and facet panels, a point is auto-zoomed/centered behind the collections panel. This may vary by browser/screen resolution/settings/etc.

This applies to all spatial search methods.

Acceptance Criteria

  • When entered manually, all spatial selections are centered in the visible map area
  • Shapefile spatial selections are centered in the visible map area

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    C:/RailsInstaller/Ruby2.1.0/bin/ruby.exe -r ./siteconf20150818-11932-hb24zj.rb extconf.rb
Command 'qmake -spec win32-g++ ' not available

Makefile not found

Gem files will remain installed in C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/bundler/gems/capybara-webkit-042822d7
c6f7 for inspection.
Results logged to C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/bundler/gems/extensions/x86-mingw32/2.1.0/capybara-web
kit-042822d7c6f7/gem_make.out
An error occurred while installing capybara-webkit (1.1.1), and Bundler cannot
continue.
Make sure that `gem install capybara-webkit -v '1.1.1'` succeeds before
bundling.

This is the error I get when I try to run bundle install. It seems like a common issue. I installed Qt libraries (v5.5.0), but it didn't work. Do you have a solution for this?

External Links I've already checked these.

Capybara Webkit Wiki
Stackoverflow

EDSC-2515: Improve loading state for collection results

Please review Contribution.md before contributing to this project.

Description

We should implement a nicer loading state similar to the ones elsewhere in the application. Either the pulsing 3 ellipses (like when viewing download history) or the pulsing content skeleton (like on granules panel) will work.

Acceptance Criteria

  1. Loading state for collections is in line with loading states throughout the application.

EDSC-3067: Fix 508 compliance 'Empty form label' findings

Please review Contribution.md before contributing to this project.

Description

Path Finding Location Element
/projects Empty form label Under email address box <label class="form-label col-form-label col-sm-4 text-right">
/projects Empty form label Under spatial subsetting (optional) box header <label class="form-label col-form-label col-sm-4 text-right">
/projects Empty form label Under 'Click to enable' button under spatial subsetting <label class="form-label col-form-label col-sm-4 text-right">
/projects Empty form label Under 'Band Subsetting' box header <label class="form-label col-form-label col-sm-4 text-right">

Files

image-2021-02-04-11-38-53-283

Acceptance Criteria

Fix 'Empty form label' for all findings to be 508 compliant.

EDSC-2673: Lazy load Leaflet

Description

In an effort to improve initial load times, we should lazy load Leaflet js. We want to be sure to do this in a way that does not degrade the UX of the initial application load.

Acceptance Criteria

  • Leaflet/map javascript is only loaded in pages that render the map (/search/*, /project)
  • Once the map component is mounted/rendered, it should not be remounted

README installation requires note regarding configuration of shared paths for Docker on OS X

After configuring config/database.yml and config/application.yml and executing ./bin/setup after a lot of std output I get the following...

== Preparing database (development and test environments) ==
    $ docker-compose run web bundle exec rake db:setup
      -> Creating network "earthdata-search_default" with the default driver
      -> Pulling db (postgres:)...
      -> latest: Pulling from library/postgres
Creating earthdata-search_db_1 ... error
      ->
      -> ERROR: for earthdata-search_db_1  Cannot start service db: b'Mounts denied: \r\nThe path /usr/local/earthdata-search/tmp/db\r\nis not shared from OS X and is not known to Docker.\r\nYou can configure shared paths from Docker -> Preferences... -> File Sharing.\r\nSee https://docs.docker.com/docker-for-mac/osxfs/#namespaces for more info.\r\n.'
      -> ERROR: for db  Cannot start service db: b'Mounts denied: \r\nThe path /usr/local/earthdata-search/tmp/db\r\nis not shared from OS X and is not known to Docker.\r\nYou can configure shared paths from Docker -> Preferences... -> File Sharing.\r\nSee https://docs.docker.com/docker-for-mac/osxfs/#namespaces for more info.\r\n.'
      -> Encountered errors while bringing up the project.
Exiting: Error executing command docker-compose run web bundle exec rake db:setup

This should definitely be noted within the README... possibly we could introduce an installation FAQ's section???

EDSC-3068: Fix 508 compliance 'Empty heading' finding

Please review Contribution.md before contributing to this project.

Description

Path Finding Location Element
/downloads Empty heading Space above page content in light grey area <h2 class="well__heading">

Files

image-2021-02-04-11-41-36-194

Acceptance Criteria

Fix 'Empty heading' for all findings to be 508 compliant.

[INFRA]: Improve project structure

Description

It would be nice to improve the tooling in this project. For instance, implementing grammar, better linting and such like.

Files

N/A

Acceptance Criteria

Well written infra.

Is your feature request related to a problem? Please describe.
N/A

Additional context

Similar work done in OpenMCT (nasa/openmct#6888)

EDSC-2669: As a user, I would like to receive a confirmation that my preferences have been saved

Description

When updating preferences, surface a confirmation message to the user that their preferences have been saved or if a problem occurred.

Acceptance Criteria

  • Upon success, inform the user their preferences have been saved
  • If an error occurs saving the preferences, inform the user that an error has occurred
    • If there is something the user can do to rectify the error, inform them what they can do

EDSC-2913: Add keyboard shortcut to show all supported keyboard shortcuts

Description

Add keyboard shortcut to toggle modal that displays all supported keyboard shortcuts. The ? button should be used for this shortcut.

To make this list of shortcuts easier to maintain, a config file should be used that lists all of the keyboard shortcuts along with a short description of what each of the shortcuts do. Descriptions should be short and to-the-point.

Currently supported shortcut:

  • ] - Toggle main search result/granules panel

Shortcuts with open tickets:

  • g - Toggle granule filters panel
  • a - Toggle advanced search modal
  • / - Focus on search input field
  • ? - Display all keyboard shortcuts
  • t - Toggle timeline

Acceptance Criteria

  • Hitting the ? button on the keyboard displays a modal that lists all supported keyboard shortcuts.

EDSC-2898: Cannot remove filter from granule search box

Description

Cannot remove search from granule search box. Deleting text and hitting 'Enter' causes the page to reload with the text re-populated.

Reproduction Steps

  1. Visit https://search.uat.earthdata.nasa.gov/search/granules?p=C447308-ORNL_DAAC&pg[0][gsk]=-start_date&tl=1585761296!4!!
  2. Copy/paste "1860_1993_2050_NITROGEN.N-deposition2050.txt" into the granule search field
  3. Observe that only a single granule is returned
  4. Delete the text in the granule search field and press enter
  5. Observe that the page refreshed, the text just deleted remains, and only a single granule is returned

Acceptance Criteria

  1. Load any collection with granules
  2. Copy/paste any of the granule titles into the search field and observe that the filter works as intended
  3. Remove the granule search text and observe that no granule filter/search is applied and all expected granules return

EDSC-3069: Fix 508 compliance 'Missing form label' findings

Please review Contribution.md before contributing to this project.

Description

Path Finding Location Element
/search Missing form label Main search bar <input type="text" autocomplete="off" aria-autocomplete="list" aria-controls="react-autowhatever-1" class="search-form__input" name="keywordSearch" data-test-id="keywordSearchInput" placeholder="Search for collections or topics" value="">
/search Missing form label Hidden form at the bottom of the page <input type="file" multiple="multiple" class="dz-hidden-input" accept=".zip,.kml,.kmz,.json,.geojson,.rss,.georss,.xml" style="visibility: hidden; position: absolute; top: 0px; left: 0px; height: 0px; width: 0px;">
/granules Missing form label Granule temporal start time <input type="text" class="form-control form-control-sm" id="granule-filters_temporal-selectiontemporal-form_start-date" placeholder="YYYY-MM-DD HH:mm:ss" autocomplete="off" value="">
/granules Missing form label Granule temporal end time <input type="text" class="form-control form-control-sm" id="granule-filters_temporal-selectiontemporal-form_end-date" placeholder="YYYY-MM-DD HH:mm:ss" autocomplete="off" value="">
/projects Missing form label Email address <input class="form-control input" name="Email Address" placeholder="" value="[email protected]">
/projects Missing form label Checkbox for 'Include Metadata and Processing History' <input class="form-check-input checkbox__input" name="Include Metadata and Processing History" type="checkbox">
/projects Missing form label Checkbox for 'Click to enable' under spatial subsetting <input class="form-check-input checkbox__input" name="Click to enable" type="checkbox">
/projects Missing form label Temporal subsetting 'Start Date' box <input class="form-control input" name="Start Date" placeholder="YYYY-MM-DDTHH:MM:SS" type="datetime" value="">
/projects Missing form label Temporal subsetting 'End Date' box <input class="form-control input" name="End Date" placeholder="YYYY-MM-DDTHH:MM:SS" type="datetime" value="">

Files

image-2021-02-04-11-43-44-776
image-2021-02-04-11-43-50-424
image-2021-02-04-11-43-56-625

Acceptance Criteria

Fix 'Missing form label' for all findings to be 508 compliant.

EDSC-2909: Create EDSCIcon component and implement react-icons

Description

Currently we use a font-awesome package from npm which imports Font Awesome as a font. To improve performance, we should replace this with an svg library like react-icons. We should create an Icon component which will dynamically import react-icons, allowing us to add/remove libraries as needed. The component should accept className, library, and icon as props. Initially, only the Font Awesome library will be used.

Acceptance Criteria

  • All instances of <i> icon elements replaced with EDSCIcon component
  • No visual changes to current icons

EDSC-2912: Add keyboard shortcut to focus on search bar

Description

Add keyboard shortcut to focus on the search bar input field when on a page that supports search (/search, /search/granules).

The / button should be used for this shortcut.

Acceptance Criteria

  • When on a search supported page (/search, /search/granules), hitting the / button on the keyboard focuses on the search input field.
  • When not on a search supported page (/search, /search/granules), hitting the / button on the keyboard has no impact on the application.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.