Challenge Overview
The goal of the challenge is to create Myyna PINs using a command line Node.JS utility that uses a web service to pull PPI products and insert them as PINs in Myyna Web app.
Project Overview
The Planetary Data System (PDS http://pds.nasa.gov/) is an archive of data from NASA’s planetary missions. The mission data (called products) can be raw images, time-series data or text documents.
While this treasure trove of information is accessible to the public, utilization has been somewhat limited by barriers to entry such as required expertise on the domain, and familiarity with the data format.
The goal of this (PDS Storyboard) project is to develop a web application that will make the data easier to find and use by a wider range of people. PDS data is only as valuable as the ease of access and adoption – and NASA wants to make sure all this valuable mission data reaches a broader audience to further scientific discovery and research.
We are building a basic web application version. We are starting by reusing an open source web application called myyna. The point is to create a Pinterest-like social web application that address the need to make PDS data more accessible, and foster greater use of the available resources through collaboration and ease of distribution of data and research. By making PDS data easily accessible, and providing a Pinterest-like collaboration tool, the goal is to advance research and utilization of the data. This new web application will be called the “Planetary Data Storyboard” (Or PDS).
We are customizing Myyna web application to include the features we need to implement in the first version of this PDS Storyboard web application.
Challenge Requirements
You will address the following in this challenge :
-
Build a nodejs command line utility.
-
The web service url to use to get PPI products is http://ppi.pds.nasa.gov/metadex/select/?q={query}
-
{query} is constructed as follow
-
The query should be configurable.
-
-
Example of valid call : http://ppi.pds.nasa.gov/metadex/select/?q=TARGET_NAME:(Jupiter)
-
-
The utility flow :
-
Read input arguments (if any or needed!)
-
Validate input arguments.
-
Read configurable {query} from configuration, and validate it.
-
Construct the web service URL call, then make the call.
-
For each <doc> in returned response :
-
Read <str name=”slot”> value, it is starts with /archive then skip this <doc>, otherwise, proceed to next steps.
-
Create PIN as follow :
-
board_id : read from configuration
-
pin_type : url_image
-
pin_url : constructed as follow :
-
Read DATA_SET_ID, if array then read first item.
-
Construct URL http://ppi.pds.nasa.gov/ditdos/view?id=pds://PPI/{DATA_SET_ID}/DATA
-
For each “leaf” element if type is ‘text’ and term extension is LBL then read extract the LBL file name with the extension, let’s assume it’s name is {LBL_NAME}
-
Construct the pin URL as : http://ppi.pds.nasa.gov/search/render/vista.htm?id=pds://{DATA_SET_ID}/DATA/{LBL_NAME}
-
An example is DATA_SET_ID : GO-A-MAG-3-RDR-GASPRA-HIGH-RES-V1.0, the URL to get DATA http://ppi.pds.nasa.gov/ditdos/view?id=pds://PPI/GO-A-MAG-3-RDR-GASPRA-HIGH-RES-V1.0/DATA , there are two LBL files, the first file name is GASPRA_GEO, the pin_url then will be http://ppi.pds.nasa.gov/search/render/vista.htm?id=pds://PPI/GO-A-MAG-3-RDR-GASPRA-HIGH-RES-V1.0/DATA/GASPRA_GEO
-
-
source_url should be same as pin_url
-
time : current date
-
user_id : read from configuration
-
description : read from <str name=”description”> element
-
domain : http://ppi.pds.nasa.gov/
-
metadata :
-
All elements under <doc> should be stored as metadadata excluding : description.
-
-
Images :
-
Use this image to generate previews for the PIN.
-
-
-
-
-
Include the utility code and configuration under “pds_generator” folder.
General Notes
-
Update readme with deployment and configuration information.
Gitlab Access
-
We have cloned the Myyna github and placed it in gitlab, user the gitlab repository as basis for your work. https://gitlab.com/nasa-pds-storyboard/storyboard-frontend
-
You need to be logged in to view the repository.
-
Deliverable
-
Patch file of changes.
-
Updated readme file with deployment and verification steps.
-
Text file for reviewers.
Final Submission Guidelines
.