├── .gitattributes ├── .github └── workflows │ ├── stale.yml │ └── test.yml ├── .gitignore ├── .travis.yml ├── AR ├── HIRO.jpg ├── README.md ├── crosshair.png ├── css │ └── stylesheet.css ├── favicon-192.png ├── footer │ ├── OIT-footer.css │ ├── OIT-footer.html │ ├── OIT-footer.js │ └── img │ │ ├── png │ │ ├── facebook25.png │ │ ├── flickr.png │ │ ├── github32.png │ │ ├── rss25.png │ │ ├── twitter16.png │ │ └── youtube15.png │ │ └── svg │ │ ├── facebook25.svg │ │ ├── flickr.svg │ │ ├── rss25.svg │ │ ├── twitter16.svg │ │ └── youtube15.svg ├── index.html └── js │ ├── notebook.js │ └── setup.js ├── NASA-M-16-21-Framework.pdf ├── NASA-M-16-21-OCIO-Memo.pdf ├── README.md ├── app.yaml ├── bower.json ├── cron_scripts ├── code_to_catalog.py └── release.sh ├── data ├── SRA.json ├── catalog.json ├── deprecated │ ├── SRA_old.json │ ├── catalog.json │ ├── catalog.json-save │ ├── catalog_old.json │ ├── catalog_old_2.json │ ├── catalog_original_no_nlp_20190326.json │ ├── code-pre_aug_2017.json │ ├── code-v1.0.1.json │ ├── code.json │ ├── code_original_use.json │ ├── new-code.json │ └── test │ │ ├── code-nasa-app.html │ │ └── index.html └── license_mappings.json ├── fonts ├── ArcaMajora3-Bold.woff ├── ArcaMajora3-Bold.woff2 ├── ArcaMajora3-Heavy.woff └── ArcaMajora3-Heavy.woff2 ├── images ├── backgrounds │ ├── guide.jpg │ ├── projects-bottom.jpg │ ├── projects.jpg │ └── share.jpg ├── favicon.ico ├── guide-steps │ ├── 1.png │ ├── 10.png │ ├── 11.png │ ├── 12.png │ ├── 13.png │ ├── 14.png │ ├── 2.png │ ├── 3.png │ ├── 4.png │ ├── 5.png │ ├── 6.png │ ├── 7.png │ ├── 8.png │ └── 9.png └── logos │ ├── nasa-144.png │ ├── nasa-192.png │ ├── nasa-48.png │ ├── nasa-512.png │ ├── nasa-72.png │ └── nasa-96.png ├── index.html ├── manifest.json ├── package-lock.json ├── package.json ├── polymer.json ├── service-worker.js ├── src ├── assets │ └── css │ │ └── material-kit.css ├── code-nasa-app.html ├── code-nasa-experiments.html ├── code-nasa-guide.html ├── code-nasa-invalid.html ├── code-nasa-projects.html ├── code-nasa-related.html ├── code-nasa-share.html ├── code-nasa-tagcluster.html ├── images │ ├── backgrounds │ │ ├── guide.jpg │ │ ├── projects-bottom.jpg │ │ ├── projects.jpg │ │ └── share.jpg │ ├── down-arrow.svg │ ├── downloadSince.png │ ├── favicon.ico │ ├── forc.png │ ├── fork.jpg │ ├── laborHours.png │ ├── logos │ │ ├── nasa-144.png │ │ ├── nasa-192.png │ │ ├── nasa-48.png │ │ ├── nasa-512.png │ │ ├── nasa-72.png │ │ └── nasa-96.png │ ├── obs.png │ ├── popular_code.png │ └── tag_bubble.png ├── observablecode-import.html └── shared-styles.html ├── sw-precache-config.js ├── yarn-error.log └── yarn.lock /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto -------------------------------------------------------------------------------- /.github/workflows/stale.yml: -------------------------------------------------------------------------------- 1 | name: Mark stale issues and pull requests 2 | 3 | on: 4 | schedule: 5 | - cron: "0 0 * * *" 6 | 7 | jobs: 8 | stale: 9 | 10 | runs-on: ubuntu-latest 11 | 12 | steps: 13 | - uses: actions/stale@v1 14 | with: 15 | repo-token: ${{ secrets.GITHUB_TOKEN }} 16 | stale-issue-message: 'Stale issue message' 17 | stale-pr-message: 'Stale pull request message' 18 | stale-issue-label: 'no-issue-activity' 19 | stale-pr-label: 'no-pr-activity' 20 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | # This is a basic workflow to help you get started with Actions 2 | 3 | name: CI 4 | 5 | # Controls when the action will run. Triggers the workflow on push or pull request 6 | # events but only for the master branch 7 | on: 8 | push: 9 | branches: [ master ] 10 | pull_request: 11 | branches: [ master ] 12 | 13 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel 14 | jobs: 15 | # This workflow contains a single job called "build" 16 | build: 17 | # The type of runner that the job will run on 18 | runs-on: ubuntu-latest 19 | 20 | # Steps represent a sequence of tasks that will be executed as part of the job 21 | steps: 22 | # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it 23 | - uses: actions/checkout@v2 24 | 25 | # Runs a single command using the runners shell 26 | - name: Run a one-line script 27 | run: echo Hello, world! 28 | 29 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | bower_components/ 2 | build/ 3 | node_modules/ 4 | .DS_Store 5 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | sudo: required 3 | dist: trusty 4 | addons: 5 | firefox: '46.0' 6 | apt: 7 | sources: 8 | - google-chrome 9 | packages: 10 | - google-chrome-stable 11 | node_js: 12 | - '8' 13 | - '10' 14 | before_script: 15 | - npm install -g bower polymer-cli 16 | - bower install 17 | script: 18 | - xvfb-run polymer test 19 | -------------------------------------------------------------------------------- /AR/HIRO.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/AR/HIRO.jpg -------------------------------------------------------------------------------- /AR/README.md: -------------------------------------------------------------------------------- 1 | # STI-Tagger-AR-Viz 2 | ## AR visualization of the D3 Graph currently in the code.nasa.gov/Experiments Page 3 | ### How to use: 4 | 1. Print the HIRO.jpg in the main directory or dowload it onto a seperate device that can be looked at by your devices Camera 5 | 2. Go to https://developer.nasa.gov/pages/OpenInnovation/STI-Tagger-AR-Viz/ . It will ask to access you camera, please allow it. 6 | 3. Point your camera at the picture you printed or downloaded and the visialization will render on top of it. 7 | 4. Click or tap on your screen and the sphere highlighted Blue will open a detailed data description. 8 | ### How to use: UI Guide 9 | * This build was developed with users mostly using mobile devices, therefore there is a black crosshair(+) in the middle of the screen. Said crosshair is what selects the object, therefore clicking or tapping anywhere on the screen will trigger the crosshair, not where has been clicked. 10 | * The sliders at the bottom adjust the minimum and the maximum tag count displayed. For example, if the minimum is set to "10", then the graph will show me tag spheres that had been generated at least 10 times. 11 | * When you click/tap to select a sphere, a popup will show up from the bottom of the screen with various related data. If you wish to leave this screen, click/tap the button in the lower right corner. 12 | * The button in the top right corner opens a Sub Cluster Menu, which lets you narrow down the visualization to five tags + similar tags. The box right under the selector displays links connected with the Sub Cluster 13 | -------------------------------------------------------------------------------- /AR/crosshair.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/AR/crosshair.png -------------------------------------------------------------------------------- /AR/css/stylesheet.css: -------------------------------------------------------------------------------- 1 | * { 2 | -webkit-box-sizing: border-box; 3 | -moz-box-sizing: border-box; 4 | box-sizing: border-box; 5 | } 6 | 7 | main{ 8 | cursor: none !important; 9 | overflow: hidden !important; 10 | } 11 | 12 | p{ 13 | font-size: 12px; 14 | overflow:auto; 15 | } 16 | 17 | a:-webkit-any-link { 18 | color: #9bdaf1; 19 | cursor: pointer; 20 | text-decoration: none; 21 | } 22 | a:link { 23 | color: #9bdaf1; 24 | cursor: pointer; 25 | text-decoration: none; 26 | } 27 | 28 | select{ 29 | overflow-x: auto; 30 | max-width: 100%; 31 | max-height: 39%; 32 | } 33 | section{ 34 | max-width: 100%; 35 | max-height: 45%; 36 | } 37 | 38 | header{ 39 | position: fixed; 40 | left: 0; 41 | right: 0; 42 | top: 0; 43 | width: 100%; 44 | height: 10%; 45 | z-index: 10000; 46 | background: #323a45; 47 | color: #9bdaf1; 48 | padding: 1%; 49 | } 50 | footer{ 51 | position: fixed; 52 | left: 0; 53 | right: 0; 54 | bottom: 0; 55 | width: 100%; 56 | height: 8%; 57 | background: #323a45; 58 | color: white; 59 | padding: 1rem; 60 | } 61 | 62 | #tutorial{ 63 | position: absolute; 64 | left: 0; 65 | top: 0; 66 | width: 100%; 67 | height: 100%; 68 | text-align: center; 69 | padding-top: 37%; 70 | font-size: 20px; 71 | background: white; 72 | z-index: 1000; 73 | -webkit-transition: 2s ease; 74 | -moz-transition: 2s ease; 75 | -ms-transition: 2s ease; 76 | -o-transition: 2s ease; 77 | transition: 2s ease; 78 | opacity: 1; 79 | } 80 | #tutorial.instructions{ 81 | -webkit-transition: 2s ease; 82 | -moz-transition: 2s ease; 83 | -ms-transition: 2s ease; 84 | -o-transition: 2s ease; 85 | transition: 2s ease; 86 | opacity: .5; 87 | } 88 | #tutorial.instructions.visible{ 89 | -webkit-transition: 2s ease; 90 | -moz-transition: 2s ease; 91 | -ms-transition: 2s ease; 92 | -o-transition: 2s ease; 93 | transition: 2s ease; 94 | transform: translate(0, 100%); 95 | } 96 | 97 | #footerDiv{ 98 | position: fixed; 99 | right: 0; 100 | bottom: 8%; 101 | width: 100%; 102 | height: 48%; 103 | background: #323a45; 104 | color: white; 105 | padding: 1rem; 106 | border: .2rem solid white; 107 | z-index: 9000; 108 | -webkit-transition: 1s ease; 109 | -moz-transition: 1s ease; 110 | -ms-transition: 1s ease; 111 | -o-transition: 1s ease; 112 | transition: 1s ease; 113 | transform: translate(0, 117%); 114 | } 115 | 116 | #footerDiv.visible{ 117 | -webkit-transition: 1s ease; 118 | -moz-transition: 1s ease; 119 | -ms-transition: 1s ease; 120 | -o-transition: 1s ease; 121 | transition: 1s ease; 122 | transform: translate(0, 0%); 123 | } 124 | main{ 125 | -webkit-transition: 1s ease; 126 | -moz-transition: 1s ease; 127 | -ms-transition: 1s ease; 128 | -o-transition: 1s ease; 129 | transition: 1s ease; 130 | transform: translate(0, 0%); 131 | } 132 | 133 | main.visible{ 134 | -webkit-transition: 1s ease; 135 | -moz-transition: 1s ease; 136 | -ms-transition: 1s ease; 137 | -o-transition: 1s ease; 138 | transition: 1s ease; 139 | transform: translate(0, -26%); 140 | } 141 | 142 | .submenuButton{ 143 | background: white; 144 | float: right; 145 | margin: .5rem; 146 | font-size: 29px; 147 | height: 77%; 148 | width: 9%; 149 | } 150 | 151 | .logo{ 152 | max-width: 10%; 153 | float: left; 154 | } 155 | .title{ 156 | float: left; 157 | margin-top: .5rem; 158 | font-size: 50px; 159 | } 160 | .mobileCH{ 161 | display: block; 162 | margin: 0; 163 | position: absolute; 164 | top: 50%; 165 | left: 50%; 166 | width: 1rem; 167 | } 168 | 169 | .dropdown{ 170 | position: fixed; 171 | right: 0; 172 | top: 10%; 173 | width: 100%; 174 | height: 82%; 175 | color: white; 176 | padding: 1rem; 177 | border: .2rem solid white; 178 | z-index: -1; 179 | -webkit-transition: 1s ease; 180 | -moz-transition: 1s ease; 181 | -ms-transition: 1s ease; 182 | -o-transition: 1s ease; 183 | transition: 1s ease; 184 | transform: translate(100%, 0); 185 | } 186 | .dropdown:after{ 187 | position: fixed; 188 | right: 0; 189 | top: 0; 190 | width: 100%; 191 | height: 100%; 192 | content: ''; 193 | opacity: .7; 194 | z-index: -1; 195 | background: #323a45; 196 | } 197 | .dropdown.visible{ 198 | -webkit-transition: 1s ease; 199 | -moz-transition: 1s ease; 200 | -ms-transition: 1s ease; 201 | -o-transition: 1s ease; 202 | transition: 1s ease; 203 | transform: translate(0, 0); 204 | } 205 | 206 | #buttonSlider{ 207 | position: absolute; 208 | bottom: .5rem; 209 | right: 0; 210 | } 211 | 212 | .textDesc{ 213 | display: block; 214 | } 215 | 216 | #Projects{ 217 | height: 41%; 218 | } 219 | #Projects a:link{ 220 | color: white !important; 221 | } 222 | #Projects a:-webkit-any-link { 223 | color: white !important; 224 | } 225 | #TagName a:link{ 226 | color: white !important; 227 | } 228 | #TagName a:-webkit-any-link { 229 | color: white !important; 230 | } 231 | 232 | /*IPhone X landscape*/ 233 | @media screen and (min-width: 811px) and (max-height: 566px){ 234 | footer{ 235 | padding: .5rem; 236 | } 237 | .logo{ 238 | max-width: 5%; 239 | } 240 | .title{ 241 | font-size: 16px; 242 | margin-top: 3px; 243 | } 244 | #footerDiv{ 245 | width: 40%; 246 | height: 82%; 247 | } 248 | main.visible{ 249 | transform: translate(-19%, 0); 250 | } 251 | .textDesc{ 252 | display: none; 253 | } 254 | .sliderBottom{ 255 | position: absolute; 256 | left: 40%; 257 | top: .5rem; 258 | } 259 | #sliders div{ 260 | float: none !important; 261 | } 262 | .submenuButton{ 263 | margin: .2rem; 264 | font-size: 10px; 265 | height: 77%; 266 | } 267 | } 268 | 269 | /*IPhone 7 plus landscape*/ 270 | @media screen and (min-width: 735px) and (max-width: 810px) and (max-height: 566px){ 271 | footer{ 272 | padding: .5rem; 273 | } 274 | .logo{ 275 | max-width: 5%; 276 | } 277 | .title{ 278 | font-size: 16px; 279 | margin-top: 5px; 280 | } 281 | #footerDiv{ 282 | width: 40%; 283 | height: 82%; 284 | } 285 | #Projects{ 286 | height: 46%; 287 | } 288 | 289 | main.visible{ 290 | transform: translate(-19%, 0); 291 | } 292 | .textDesc{ 293 | display: none; 294 | } 295 | .sliderBottom{ 296 | position: absolute; 297 | left: 40%; 298 | top: .5rem; 299 | } 300 | #sliders div{ 301 | float: none !important; 302 | } 303 | .submenuButton{ 304 | margin: .2rem; 305 | font-size: 10px; 306 | height: 77%; 307 | } 308 | } 309 | 310 | /*IPhone 7 landscape*/ 311 | @media screen and (min-width: 666px) and (max-width: 734px) and (max-height: 566px){ 312 | footer{ 313 | padding: .5rem; 314 | } 315 | .logo{ 316 | max-width: 5%; 317 | } 318 | .title{ 319 | font-size: 16px; 320 | margin-top: 4px; 321 | } 322 | #footerDiv{ 323 | width: 40%; 324 | height: 82%; 325 | } 326 | main.visible{ 327 | transform: translate(-19%, 0); 328 | } 329 | .textDesc{ 330 | display: none; 331 | } 332 | .sliderBottom{ 333 | position: absolute; 334 | left: 40%; 335 | top: .5rem; 336 | } 337 | #sliders div{ 338 | float: none !important; 339 | } 340 | .submenuButton{ 341 | margin: .2rem; 342 | font-size: 10px; 343 | height: 77%; 344 | } 345 | } 346 | 347 | /*IPhone 5 landscape*/ 348 | @media screen and (min-width: 567px) and (max-width: 665px) and (max-height: 566px){ 349 | footer{ 350 | padding: .5rem; 351 | } 352 | .logo{ 353 | max-width: 5%; 354 | } 355 | .title{ 356 | font-size: 16px; 357 | margin-top: 2px; 358 | } 359 | #footerDiv{ 360 | width: 40%; 361 | height: 82%; 362 | } 363 | #Projects{ 364 | height: 29%; 365 | } 366 | main.visible{ 367 | transform: translate(-19%, 0); 368 | } 369 | .textDesc{ 370 | display: none; 371 | } 372 | .sliderBottom{ 373 | position: absolute; 374 | left: 40%; 375 | top: .5rem; 376 | } 377 | #sliders div{ 378 | float: none !important; 379 | } 380 | .submenuButton{ 381 | margin: .2rem; 382 | font-size: 10px; 383 | height: 77%; 384 | } 385 | } 386 | 387 | /*IPhone X portrait*/ 388 | @media screen and (min-height: 811px) and (max-width: 566px){ 389 | .logo{ 390 | max-width: 21%; 391 | } 392 | .title{ 393 | font-size: 19px; 394 | } 395 | footer{ 396 | height: 14%; 397 | } 398 | #footerDiv{ 399 | bottom: 14%; 400 | transform: translate(0, 129%); 401 | } 402 | #Projects{ 403 | height: 53%; 404 | } 405 | main.visible{ 406 | transform: translate(0, -26%); 407 | } 408 | .submenuButton{ 409 | margin: .9rem; 410 | font-size: 22px; 411 | height: 58%; 412 | } 413 | .dropdown{ 414 | height: 76%; 415 | } 416 | } 417 | 418 | /*IPhone 7 plus portrait*/ 419 | @media screen and (min-height: 735px) and (max-height: 810px) and (max-width: 566px){ 420 | .logo{ 421 | max-width: 17%; 422 | } 423 | .title{ 424 | font-size: 23px; 425 | } 426 | footer{ 427 | height: 15%; 428 | } 429 | #footerDiv{ 430 | bottom: 15%; 431 | transform: translate(0, 132%); 432 | } 433 | #Projects{ 434 | height: 48%; 435 | } 436 | main.visible{ 437 | transform: translate(0, -28%); 438 | } 439 | .submenuButton{ 440 | margin: .8rem; 441 | font-size: 22px; 442 | height: 58%; 443 | } 444 | .dropdown{ 445 | height: 75%; 446 | } 447 | } 448 | 449 | /*IPhone 7 portrait*/ 450 | @media screen and (min-height: 666px) and (max-height: 734px) and (max-width: 566px){ 451 | .logo{ 452 | max-width: 17%; 453 | } 454 | .title{ 455 | font-size: 21px; 456 | } 457 | footer{ 458 | height: 17%; 459 | } 460 | #footerDiv{ 461 | bottom: 17%; 462 | transform: translate(0, 136%); 463 | } 464 | #Projects{ 465 | height: 43%; 466 | } 467 | main.visible{ 468 | transform: translate(0, -28%); 469 | } 470 | .submenuButton{ 471 | margin: .7rem; 472 | font-size: 20px; 473 | height: 58%; 474 | } 475 | .dropdown{ 476 | height: 73%; 477 | } 478 | } 479 | 480 | /*IPhone 5 portrait*/ 481 | @media screen and (min-height: 567px) and (max-height: 665px) and (max-width: 566px){ 482 | .logo{ 483 | max-width: 17%; 484 | } 485 | .title{ 486 | font-size: 17px; 487 | } 488 | footer{ 489 | height: 18%; 490 | padding: .5rem; 491 | } 492 | #footerDiv{ 493 | bottom: 18%; 494 | transform: translate(0, 138%); 495 | } 496 | #Projects{ 497 | height: 32%; 498 | } 499 | main.visible{ 500 | transform: translate(0, -27%); 501 | } 502 | .submenuButton{ 503 | margin: .9rem; 504 | font-size: 15px; 505 | height: 58%; 506 | } 507 | .dropdown{ 508 | height: 72%; 509 | } 510 | } 511 | -------------------------------------------------------------------------------- /AR/favicon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/AR/favicon-192.png -------------------------------------------------------------------------------- /AR/footer/OIT-footer.css: -------------------------------------------------------------------------------- 1 | html{ 2 | font-size: 10px; 3 | } 4 | 5 | 6 | footer { 7 | font-family: sans-serif; 8 | -ms-text-size-adjust: 100%; 9 | -webkit-text-size-adjust: 100%; 10 | display: block; 11 | margin: 0; 12 | font-size: 1.5rem; 13 | background-color: #ffffff; 14 | color: #212121; 15 | overflow-x: hidden; 16 | } 17 | 18 | .footer, 19 | .footer::before, 20 | .footer::after { 21 | box-sizing: border-box; 22 | } 23 | 24 | 25 | 26 | .oit-social_link, .oit-link-facebook, .oit-link-twitter, .oit-link-youtube, .oit-link-rss, .oit-link-github{ 27 | margin: 2.5rem 1rem 1.5rem 0; 28 | background-position: center center; 29 | background-repeat: no-repeat; 30 | background-size: auto 2rem; 31 | display: inline-block; 32 | height: 2.5rem; 33 | left: 0; 34 | position: relative; 35 | text-align: center; 36 | width: 2.5rem; 37 | } 38 | 39 | @media screen and (min-width: 707px) { 40 | .oit-social_link, .oit-link-facebook, .oit-link-twitter, .oit-link-youtube, .oit-link-rss, .oit-link-github { 41 | margin: 0 0 0 0.5rem; 42 | } 43 | } 44 | 45 | .oit-social_link span, .oit-link-facebook span, .oit-link-twitter span, .oit-link-youtube span, .oit-link-rss span, .oit-link-github span{ 46 | position: absolute; 47 | left: -999em; 48 | } 49 | 50 | .oit-link-facebook { 51 | background-image: url("../footer/img/png/facebook25.png"); 52 | background-image: url("../footer/img/svg/facebook25.svg"); 53 | } 54 | 55 | .oit-link-twitter { 56 | background-image: url("../footer/img/png/twitter16.png"); 57 | background-image: url("../footer/img/svg/twitter16.svg"); 58 | } 59 | 60 | .oit-link-youtube { 61 | background-image: url("../footer/img/png/youtube15.png"); 62 | background-image: url("../footer/img/svg/youtube15.svg"); 63 | } 64 | 65 | .oit-link-rss { 66 | background-image: url("../footer/img/png/rss25.png"); 67 | background-image: url("../footer/img/svg/rss25.svg"); 68 | } 69 | 70 | .oit-link-github { 71 | background-image: url("../footer/img/png/github32.png"); 72 | } 73 | 74 | .oit-special{ 75 | margin-left: 0px !important; 76 | } 77 | 78 | 79 | .oit-unstyled-list { 80 | margin-top: 0; 81 | margin-bottom: 0; 82 | list-style-type: none; 83 | padding-left: 0; 84 | } 85 | 86 | .oit-unstyled-list > li { 87 | margin-bottom: 0; 88 | } 89 | .oit-footer .oit-unstyled-list { 90 | display: block; 91 | } 92 | 93 | .oit-footer .oit-footer-primary-link{ 94 | display: block; 95 | font-weight: 700; 96 | margin-top: 0; 97 | text-align: center; 98 | } 99 | .oit-footer-primary-link a{ 100 | color: #212121; 101 | text-decoration: none; 102 | } 103 | 104 | @media screen and (min-width: 707px) { 105 | .oit-footer .oit-footer-primary-link { 106 | border-top: none; 107 | } 108 | .oit-special{ 109 | margin-left: 80px; 110 | } 111 | } 112 | 113 | .oit-footer-primary-link a:hover { 114 | cursor: pointer; 115 | text-decoration: underline; 116 | } 117 | 118 | @media screen and (min-width: 707px) { 119 | .oit-footer-primary-link a:hover { 120 | cursor: pointer; 121 | text-decoration: underline; 122 | } 123 | } 124 | 125 | .oit-footer .oit-footer-primary-link ~ li a, 126 | .oit-footer .oit-footer-secondary-link { 127 | text-decoration: none; 128 | } 129 | 130 | .oit-footer-contact_info { 131 | display: inline-block; 132 | font-style: normal; 133 | line-height: 1.5; 134 | } 135 | 136 | .oit-footer-contact_info a { 137 | color: #212121; 138 | text-decoration: none; 139 | } 140 | 141 | .oit-footer-contact_info:hover { 142 | text-decoration: underline; 143 | } 144 | 145 | .oit-footer-return-to-top { 146 | padding-bottom: 2rem; 147 | padding-top: 2rem; 148 | } 149 | 150 | .oit-footer-primary-section { 151 | background-color: #f1f1f1; 152 | } 153 | 154 | .oit-footer-primary-section .oit-footer-primary-content { 155 | padding-bottom: 2rem; 156 | padding-top: 2rem; 157 | } 158 | 159 | .oit-footer-primary-section .oit-footer-primary-content li { 160 | margin-left: 1rem; 161 | } 162 | 163 | @media screen and (min-width: 707px) { 164 | .oit-footer-primary-section .oit-footer-primary-content li { 165 | margin-left: 0; 166 | } 167 | } 168 | 169 | .oit-footer-medium .oit-footer-contact_info p { 170 | margin: 0 1rem 0 0; 171 | } 172 | 173 | @media screen and (min-width: 707px) { 174 | .oit-footer-medium .oit-footer-contact_info p { 175 | margin: 0 0 0 1rem; 176 | } 177 | } 178 | 179 | .oit-footer-medium .oit-footer-contact-heading { 180 | margin-top: 0; 181 | clear: both; 182 | -moz-osx-font-smoothing: grayscale; 183 | -webkit-font-smoothing: antialiased; 184 | font-family: "Helvetica Neue", "Helvetica", "Roboto", "Arial", sans-serif; 185 | line-height: 1.2; 186 | margin-bottom: 0.5em; 187 | font-size: 1.8rem; 188 | font-weight: 700; 189 | } 190 | 191 | @media screen and (min-width: 707px) { 192 | .oit-footer-medium .oit-footer-contact-heading { 193 | margin-top: 0.5rem; 194 | margin-bottom: 0.5rem; 195 | clear: both; 196 | -moz-osx-font-smoothing: grayscale; 197 | -webkit-font-smoothing: antialiased; 198 | font-family: "Helvetica Neue", "Helvetica", "Roboto", "Arial", sans-serif; 199 | line-height: 1.2; 200 | font-size: 1.8rem; 201 | font-weight: 700; 202 | } 203 | } 204 | 205 | 206 | .oit-footer-logo-img { 207 | max-width: 5.5rem; 208 | } 209 | 210 | @media screen and (min-width: 707px) { 211 | .oit-footer-logo-img { 212 | float: left; 213 | max-width: 8rem; 214 | } 215 | } 216 | 217 | .oit-footer-logo-heading { 218 | display: block; 219 | margin-top: 1rem; 220 | clear: both; 221 | -moz-osx-font-smoothing: grayscale; 222 | -webkit-font-smoothing: antialiased; 223 | font-family: "Helvetica Neue", "Helvetica", "Roboto", "Arial", sans-serif; 224 | line-height: 1.2; 225 | margin-bottom: 0.5em; 226 | font-size: 1.8rem; 227 | font-weight: 700; 228 | } 229 | 230 | @media screen and (min-width: 707px) { 231 | .oit-footer-logo-heading { 232 | display: inline-block; 233 | margin-top: 3rem; 234 | padding-left: 1.5rem; 235 | clear: both; 236 | -moz-osx-font-smoothing: grayscale; 237 | -webkit-font-smoothing: antialiased; 238 | font-family: "Helvetica Neue", "Helvetica", "Roboto", "Arial", sans-serif; 239 | line-height: 1.2; 240 | margin-bottom: 0.5em; 241 | font-size: 1.8rem; 242 | font-weight: 700; 243 | } 244 | } 245 | 246 | .oit-footer-medium .oit-footer-primary-section > .oit-grid { 247 | padding: 0; 248 | } 249 | 250 | @media screen and (min-width: 707px) { 251 | .oit-footer-medium .oit-footer-primary-section > .oit-grid { 252 | padding-left: 3rem; 253 | padding-right: 3rem; 254 | } 255 | } 256 | 257 | @media screen and (min-width: 707px) { 258 | .oit-footer-medium .oit-footer-nav ul { 259 | -ms-flex-align: center; 260 | align-items: center; 261 | } 262 | } 263 | 264 | /* stylelint-enable */ 265 | .oit-grid, 266 | .oit-grid-full { 267 | margin-left: auto; 268 | margin-right: auto; 269 | } 270 | 271 | .oit-grid::after, 272 | .oit-grid-full::after { 273 | clear: both; 274 | content: ""; 275 | display: block; 276 | } 277 | 278 | .oit-grid { 279 | padding-right: 1.5rem; 280 | padding-left: 1.5rem; 281 | } 282 | 283 | @media screen and (min-width: 707px) { 284 | .oit-grid { 285 | padding-right: 3rem; 286 | padding-left: 3rem; 287 | } 288 | } 289 | 290 | .oit-grid-full { 291 | padding: 0; 292 | } 293 | 294 | .oit-footer-secondary_section { 295 | background-color: #d6d7d9; 296 | padding-bottom: 2rem; 297 | padding-top: 1rem; 298 | } 299 | 300 | .oit-footer-secondary_section a { 301 | color: #212121; 302 | } 303 | 304 | @media screen and (min-width: 400px){ 305 | .oit-width-one-fourth { 306 | float: left; 307 | display: block; 308 | margin-right: 4.82916%; 309 | width: 47.58542%; 310 | } 311 | .oit-width-one-fourth:last-child { 312 | margin-right: 0; 313 | } 314 | .oit-width-one-fourth:nth-child(2n) { 315 | margin-right: 0; 316 | } 317 | } 318 | 319 | @media screen and (min-width: 630px) { 320 | .oit-width-one-whole { 321 | float: left; 322 | display: block; 323 | margin-right: 4.82916%; 324 | width: 100%; 325 | } 326 | .oit-width-one-whole:last-child { 327 | margin-right: 0; 328 | } 329 | .oit-width-one-half { 330 | float: left; 331 | display: block; 332 | margin-right: 4.82916%; 333 | width: 47.58542%; 334 | } 335 | .oit-width-one-half:last-child { 336 | margin-right: 0; 337 | } 338 | .oit-social_link, .oit-link-facebook, .oit-link-twitter, .oit-link-youtube, .oit-link-rss, .oit-link-github { 339 | left: 1.5rem; 340 | } 341 | } 342 | 343 | @media screen and (min-width: 707px){ 344 | .oit-width-one-fourth { 345 | float: left; 346 | display: block; 347 | margin-right: 2.35765%; 348 | width: 23.23176%; 349 | } 350 | .oit-width-one-fourth:last-child { 351 | margin-right: 0; 352 | } 353 | .oit-width-one-fourth:nth-child(2n) { 354 | float: left; 355 | display: block; 356 | margin-right: 2.35765%; 357 | width: 23.23176%; 358 | } 359 | .oit-width-one-fourth:nth-child(2n):last-child { 360 | margin-right: 0; 361 | } 362 | .oit-width-one-fourth:nth-child(4n) { 363 | margin-right: 0; 364 | } 365 | } 366 | 367 | @media screen and (min-width: 1201px) { 368 | .oit-width-one-whole { 369 | float: left; 370 | display: block; 371 | margin-right: 2.35765%; 372 | width: 100%; 373 | } 374 | .oit-width-one-whole:last-child { 375 | margin-right: 0; 376 | } 377 | .oit-width-one-half { 378 | float: left; 379 | display: block; 380 | margin-right: 2.35765%; 381 | width: 48.82117%; 382 | } 383 | .oit-width-one-half:last-child { 384 | margin-right: 0; 385 | } 386 | } 387 | 388 | 389 | 390 | .oit-width-one-whole:last-child > :last-child, 391 | .oit-width-one-half:first-child > :first-child, 392 | .oit-width-one-fourth:first-child > :first-child{ 393 | margin-top: 0; 394 | } 395 | 396 | @media screen and (min-width: 707px) { 397 | .oit-width-one-whole:last-child > :last-child, 398 | .oit-width-one-half > :first-child, 399 | .oit-width-one-fourth > :first-child{ 400 | margin-top: 0; 401 | } 402 | } 403 | 404 | .oit-width-one-whole:last-child > :last-child, 405 | .oit-width-one-half:last-child > :last-child, 406 | .oit-width-one-fourth:last-child > :last-child{ 407 | margin-bottom: 0; 408 | } 409 | 410 | @media screen and (min-width: 707px) { 411 | .oit-width-one-whole:last-child > :last-child, 412 | .oit-width-one-half > :last-child, 413 | .oit-width-one-fourth > :last-child{ 414 | margin-bottom: 0; 415 | } 416 | } 417 | 418 | @media screen and (min-width: 630px) { 419 | .oit-footer-contact-links { 420 | text-align: right; 421 | } 422 | } 423 | 424 | -------------------------------------------------------------------------------- /AR/footer/OIT-footer.html: -------------------------------------------------------------------------------- 1 | 2 | 58 | -------------------------------------------------------------------------------- /AR/footer/OIT-footer.js: -------------------------------------------------------------------------------- 1 | function insertFooterHere(divParentID){ 2 | var divParent = document.getElementById(divParentID); 3 | var footBlock = document.createElement("div"); 4 | footBlock.setAttribute("w3-include-html" , "footer/OIT-footer.html"); 5 | divParent.appendChild(footBlock); 6 | subIFH(); 7 | } 8 | 9 | function subIFH(){ 10 | var z, i, elmnt, file, xhttp; 11 | /* Loop through a collection of all HTML elements: */ 12 | z = document.getElementsByTagName("div"); 13 | for (i = 0; i < z.length; i++) { 14 | elmnt = z[i]; 15 | /*search for elements with a certain atrribute:*/ 16 | file = elmnt.getAttribute("w3-include-html"); 17 | if (file) { 18 | /* Make an HTTP request using the attribute value as the file name: */ 19 | xhttp = new XMLHttpRequest(); 20 | xhttp.onreadystatechange = function() { 21 | if (this.readyState == 4) { 22 | if (this.status == 200) {elmnt.innerHTML = this.responseText;} 23 | if (this.status == 404) {elmnt.innerHTML = "Page not found.";} 24 | /* Remove the attribute, and call this function once more: */ 25 | elmnt.removeAttribute("w3-include-html"); 26 | subIFH(); 27 | } 28 | } 29 | xhttp.open("GET", file, true); 30 | xhttp.send(); 31 | /* Exit the function: */ 32 | return; 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /AR/footer/img/png/facebook25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/AR/footer/img/png/facebook25.png -------------------------------------------------------------------------------- /AR/footer/img/png/flickr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/AR/footer/img/png/flickr.png -------------------------------------------------------------------------------- /AR/footer/img/png/github32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/AR/footer/img/png/github32.png -------------------------------------------------------------------------------- /AR/footer/img/png/rss25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/AR/footer/img/png/rss25.png -------------------------------------------------------------------------------- /AR/footer/img/png/twitter16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/AR/footer/img/png/twitter16.png -------------------------------------------------------------------------------- /AR/footer/img/png/youtube15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/AR/footer/img/png/youtube15.png -------------------------------------------------------------------------------- /AR/footer/img/svg/facebook25.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AR/footer/img/svg/flickr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | image/svg+xml 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /AR/footer/img/svg/rss25.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AR/footer/img/svg/twitter16.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AR/footer/img/svg/youtube15.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AR/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 17 | 18 |
19 | 22 |
23 | AR User Interface Prototype 24 |
25 | 26 | 27 | 35 |
36 |
37 |
Loading...
38 | 39 | 40 | 41 | 42 | 44 | 45 | 46 |
47 | 48 | 62 | 63 | -------------------------------------------------------------------------------- /AR/js/notebook.js: -------------------------------------------------------------------------------- 1 | //Async function that waits for the notebook to load completely before loading the AR /components 2 | function checkforD3Load(){ 3 | if (document.getElementsByTagName("video").length > 0 && document.getElementsByTagName("select").length > 0){ 4 | console.log("Load finishing..."); 5 | setTimeout(loadAR, 100); 6 | } 7 | else{ 8 | console.log("loading..."); 9 | // Current wait time is one-tenth second 10 | setTimeout(checkforD3Load, 100); 11 | } 12 | } 13 | 14 | //Initial load of the AR visualization 15 | function loadAR(){ 16 | document.getElementById("arjsDebugUIContainer").style.display = "none"; 17 | document.getElementById("dataD3").style.display = "none"; 18 | document.getElementById("arjs-video").style.overflow = "hidden"; 19 | //function definition at line 47 20 | reloadAR(); 21 | var formArray = document.getElementsByTagName("form"); 22 | var footDiv = document.getElementById("sliders"); 23 | var origLength = formArray.length - 1; 24 | //This loop grabs the sliders from the notebook and puts them in the footer 25 | for(var x = 0; x < origLength; x++){ 26 | var textRm = formArray[0].getElementsByTagName('div')[1]; 27 | textRm.classList.add("textDesc"); 28 | // I override the original descriptions due to them being really long 29 | if(x == 0){ 30 | textRm.innerHTML = "Min.: 0 to 50 with steps by 5"; 31 | } 32 | else{ 33 | textRm.innerHTML = "Max.: 0 to 50 with steps by 5"; 34 | formArray[0].getElementsByTagName('div')[0].classList.add("sliderBottom"); 35 | } 36 | formArray[0].getElementsByTagName('div')[0].setAttribute("style", "float: left;"); 37 | formArray[0].append(textRm); 38 | textRm.setAttribute("style", "padding-left: 11rem;"); 39 | formArray[0].getElementsByTagName("input")[0].onchange = function(){reloadAR();}; 40 | console.log(formArray[0]); 41 | footDiv.append(formArray[0]); 42 | } 43 | // This grabs the Cluster Visualization Selecter and the Link Box from the notebook 44 | formArray[0].getElementsByTagName("select")[0].setAttribute("onchange", "new function(){reloadAR();}"); 45 | formArray[0].getElementsByTagName("div")[1].style.display = "none"; 46 | document.getElementById("clusterList").append(formArray[0]); 47 | document.getElementsByTagName("section")[0].style.background = "white"; 48 | document.getElementsByTagName("section")[0].style.padding = 0; 49 | document.getElementById("clusterLinks").append(document.getElementsByTagName("section")[0]); 50 | document.getElementById("tutorial").classList.add("instructions"); 51 | setTimeout(function(){document.getElementById("tutorial").innerHTML = "Click or Tap to Select a Tag";}, 1000); 52 | setTimeout(tutorialPrev, 3500); 53 | } 54 | 55 | function reloadAR(){ 56 | var nodes = document.getElementsByTagName("g"); 57 | var aScene = document.getElementById("aScene"); 58 | //Clears the scene of previous renders if any 59 | while (aScene.firstChild) { 60 | aScene.removeChild(aScene.firstChild); 61 | } 62 | // for each circle on the D3, this converts the circle attributes into spheres and plots them along the surface of a hemisphere 63 | for (var x = 0; x < nodes.length; x++){ 64 | var newNode = document.createElement("a-sphere"); 65 | var nodeText = document.createElement("a-text"); 66 | var newPos = d3.select(nodes[x]).attr("transform").substring(10).split(","); 67 | newPos[1] = (newPos[1].substring(0,newPos[1].length - 1)); 68 | var newPosNum = [Number(newPos[0])/200 - 2.33, Number(newPos[1])/200 - 2.33]; 69 | var newSize = d3.select(nodes[x].children[0]).attr("r")/200; 70 | newPosNum[2] = Math.sqrt(2.6*2.6 - newPosNum[0]*newPosNum[0] - newPosNum[1]*newPosNum[1]) - 1.3; 71 | newNode.object3D.position.set(newPosNum[0], newPosNum[2] ,newPosNum[1]); 72 | //Formatting the sphere title object 73 | nodeText.object3D.position.set(0, newSize + .05 ,0); 74 | nodeText.object3D.rotation.set( 75 | THREE.Math.degToRad(0), 76 | THREE.Math.degToRad(270), 77 | THREE.Math.degToRad(0) 78 | ); 79 | nodeText.setAttribute("value", nodes[x].innerHTML.split("<")[0].split(":")[1]); 80 | nodeText.setAttribute("position", nodeText.object3D.position); 81 | nodeText.setAttribute("rotation", {x: 270, y: 0, z: 0}); 82 | nodeText.setAttribute("wrap-count", 200); 83 | nodeText.setAttribute("color", "black"); 84 | nodeText.setAttribute("align", "center"); 85 | //Formatting the sphere object 86 | newNode.setAttribute("position", newNode.object3D.position); 87 | newNode.setAttribute("radius", newSize); 88 | newNode.setAttribute("color", d3.select(nodes[x].children[0]).attr("fill")); 89 | newNode.setAttribute("colorBU", d3.select(nodes[x].children[0]).attr("fill")); 90 | // These attributes store the information for the pop up menu 91 | newNode.setAttribute("projects", d3.select(nodes[x]).datum().data.projects); 92 | newNode.setAttribute("name", d3.select(nodes[x]).datum().data.name.split(":")[1]); 93 | newNode.setAttribute("count", d3.select(nodes[x]).datum().data.value); 94 | // "Clickable" is so the raycaster can touch the sphere 95 | newNode.classList.add("clickable"); 96 | //Function that pauses the AR and displays more information in the popup menu 97 | newNode.addEventListener('click', function (evt) { 98 | var videoFeed = document.getElementById("aScene"); 99 | videoFeed.pause(); 100 | videoFeed.setAttribute("paused", ""); 101 | var tempAName = document.createElement("a"); 102 | tempAName.setAttribute("href", "https://code.nasa.gov/?q=" + this.getAttribute("name")); 103 | tempAName.innerHTML = this.getAttribute("name"); 104 | var tagName = document.getElementById("TagName"); 105 | while (tagName.firstChild) { 106 | tagName.removeChild(tagName.firstChild); 107 | } 108 | tagName.append(tempAName); 109 | document.getElementById("Count").innerHTML = this.getAttribute("count"); 110 | var projects = this.getAttribute("projects").split(','); 111 | var container = document.getElementById("Projects"); 112 | while (container.firstChild) { 113 | container.removeChild(container.firstChild); 114 | } 115 | for(var x = 0; x < projects.length; x++){ 116 | var tempA = document.createElement("a"); 117 | if (x != projects.length - 1){ 118 | tempA.innerHTML = projects[x] + ",
"; 119 | } 120 | else{ 121 | tempA.innerHTML = projects[x]; 122 | } 123 | tempA.setAttribute("href", "https://code.nasa.gov/?q=" + projects[x].split('(')[0]); 124 | container.append(tempA); 125 | } 126 | document.getElementById("footerDiv").classList.add("visible"); 127 | document.getElementsByClassName("mobileCH")[0].classList.add("visible"); 128 | document.getElementsByTagName("main")[0].classList.add("visible"); 129 | 130 | }); 131 | // When hovering over a sphere, the object turns blue 132 | newNode.addEventListener('mouseenter', function (evt) { 133 | this.setAttribute("color", "lightblue"); 134 | }); 135 | newNode.addEventListener('mouseleave', function (evt) { 136 | this.setAttribute("color", this.getAttribute("colorBU")); 137 | }); 138 | //Add to AR scene 139 | newNode.appendChild(nodeText); 140 | aScene.appendChild(newNode); 141 | } 142 | } 143 | 144 | function tutorialPrev(){ 145 | document.getElementById("tutorial").classList.add("visible"); 146 | } 147 | 148 | //Sets the AR load into motion 149 | setTimeout(checkforD3Load, 100); 150 | -------------------------------------------------------------------------------- /AR/js/setup.js: -------------------------------------------------------------------------------- 1 | //General function for unpausing the AR simulation. 2 | function resumeAR(){ 3 | var videoFeed = document.getElementById("aScene"); 4 | if (videoFeed.getAttribute("paused")!= null){ 5 | videoFeed.play(); 6 | videoFeed.removeAttribute("paused"); 7 | document.getElementById("footerDiv").classList.remove("visible"); 8 | document.getElementsByTagName("main")[0].classList.remove("visible"); 9 | } 10 | } 11 | //Function for the Submenu screen button 12 | function buttonToggle(){ 13 | var videoFeed = document.getElementById("aScene"); 14 | var dropdown = document.getElementsByClassName("dropdown")[0]; 15 | //button toggles off 16 | if(videoFeed.getAttribute("paused") != null){ 17 | resumeAR(); 18 | dropdown.classList.remove("visible"); 19 | } 20 | //button toggles on 21 | else{ 22 | videoFeed.pause(); 23 | videoFeed.setAttribute("paused", ""); 24 | dropdown.classList.add("visible"); 25 | } 26 | } -------------------------------------------------------------------------------- /NASA-M-16-21-Framework.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/NASA-M-16-21-Framework.pdf -------------------------------------------------------------------------------- /NASA-M-16-21-OCIO-Memo.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/NASA-M-16-21-OCIO-Memo.pdf -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CODE.NASA.GOV 2 | 3 | [![Build Status](https://travis-ci.org/nasa/code-nasa-gov.svg?branch=master)](https://travis-ci.org/nasa/code-nasa-gov) 4 | 5 | Catalog of Open Source Software from NASA. Built using [Polymer](https://www.polymer-project.org). 6 | 7 | ## Do You have a Open-Source Code Project For This Site? 8 | 9 | #### Instructions 10 | Instructions for releasing a NASA open-source project can be found on https://code.nasa.gov/#/guide. 11 | 12 | #### Code.json vs Category.json 13 | Newly approved code projects for release are added to code.json. You can add your approved open-source NASA project to code.json, here. 14 | 15 | All federal agencies are mandated to have a code.json that is then harvested by the General Services Adminstration (GSA) and aggregated into code.gov. 16 | 17 | Code.json is reformatted by a script run by NASA's open-innovation team into category.json. Category.json has some attributes not in code.json and is used to build the project page on code.nasa.gov. 18 | 19 | Additionally, at this time, only category.json has the A.I.-generated keyword tags in addition to the human-generated tags. This may change in the future. 20 | 21 | #### Why code.json is bigger than category.json 22 | Some of the code projects in code.json have open-source licenses. Other projects in code.json have government-source only licenses, meaning sharing is constrainted to government agencies. All of the code projects listed in category.json have open-source licenses. 23 | 24 | ### Making your own data visualization with the JSONs that drive code.nasa.gov: 25 | - https://observablehq.com/@justingosses/finding-recent-additions-to-code-nasa-gov 26 | - https://observablehq.com/@briantoliveira/untitled 27 | 28 | If you make your own visualization, please add it as an issue. We would love to see it! 29 | 30 | ## Running The Code In This Repository 31 | 32 | ### Setup 33 | 34 | test 35 | 36 | ### Prerequisites 37 | 38 | Install bower and [polymer-cli](https://github.com/Polymer/polymer-cli): 39 | 40 | npm install -g bower polymer-cli 41 | 42 | Check that you are using Node v8+ 43 | 44 | node -v 45 | 46 | ### Install dependencies 47 | 48 | bower i 49 | 50 | ### Start the development server 51 | 52 | This command serves the app at `http://localhost:8080` and provides basic URL 53 | routing for the app: 54 | 55 | polymer serve --open 56 | 57 | 58 | ### Build 59 | 60 | This command performs HTML, CSS, and JS minification on the application 61 | dependencies and generates a service-worker.js file with code to pre-cache the 62 | dependencies based on the entrypoint and fragments specified in `polymer.json`. 63 | The minified files are output to the `build/unbundled` folder, and are suitable 64 | for serving from a HTTP/2+Push compatible server. 65 | 66 | In addition the command also creates a fallback `build/bundled` folder, 67 | generated using fragment bundling, suitable for serving from non 68 | H2/push-compatible servers or to clients that do not support H2/Push. 69 | 70 | polymer build 71 | 72 | ### Preview the build 73 | 74 | This command serves the minified version of the app at `http://localhost:8080` 75 | in an unbundled state, as it would be served by a push-compatible server: 76 | 77 | polymer serve build/unbundled 78 | 79 | This command serves the minified version of the app at `http://localhost:8080` 80 | generated using fragment bundling: 81 | 82 | polymer serve build/bundled 83 | 84 | ### Deploying 85 | 86 | When deploying to a static web server (with no HTTP/2+Push), be sure to copy only 87 | the files from `build/bundled` directory (**NOT** the project directory) which 88 | contains a functional service worker and minified files. Put them in a top level part of the directory, not within another build/bundled directory within the production directory. 89 | 90 | ### Adding a new view 91 | 92 | You can extend the app by adding more views that will be demand-loaded 93 | e.g. based on the route, or to progressively render non-critical sections 94 | of the application. Each new demand-loaded fragment should be added to the 95 | list of `fragments` in the included `polymer.json` file. This will ensure 96 | those components and their dependencies are added to the list of pre-cached 97 | components (and will have bundles created in the fallback `bundled` build). 98 | -------------------------------------------------------------------------------- /app.yaml: -------------------------------------------------------------------------------- 1 | runtime: python27 2 | api_version: 1 3 | threadsafe: yes 4 | 5 | handlers: 6 | - url: /bower_components 7 | static_dir: bower_components 8 | secure: always 9 | 10 | - url: /data 11 | static_dir: data 12 | secure: always 13 | 14 | - url: /fonts 15 | static_dir: fonts 16 | secure: always 17 | 18 | - url: /images 19 | static_dir: images 20 | secure: always 21 | 22 | - url: /src 23 | static_dir: src 24 | secure: always 25 | 26 | - url: /service-worker.js 27 | static_files: service-worker.js 28 | upload: service-worker.js 29 | secure: always 30 | 31 | - url: /manifest.json 32 | static_files: manifest.json 33 | upload: manifest.json 34 | secure: always 35 | 36 | - url: /NASA-M-16-21-OCIO-Memo.pdf 37 | static_files: NASA-M-16-21-OCIO-Memo.pdf 38 | upload: NASA-M-16-21-OCIO-Memo.pdf 39 | secure: always 40 | 41 | - url: /NASA-M-16-21-Framework.pdf 42 | static_files: NASA-M-16-21-Framework.pdf 43 | upload: NASA-M-16-21-Framework.pdf 44 | secure: always 45 | 46 | - url: /code.json 47 | static_files: code.json 48 | upload: code.json 49 | secure: always 50 | 51 | - url: /.* 52 | static_files: index.html 53 | upload: index.html 54 | secure: always 55 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "code-nasa-gov", 3 | "authors": [ 4 | "The Polymer Authors" 5 | ], 6 | "private": true, 7 | "dependencies": { 8 | "app-layout": "PolymerElements/app-layout#^0.10.0", 9 | "app-route": "PolymerElements/app-route#^0.9.0", 10 | "iron-flex-layout": "PolymerElements/iron-flex-layout#^1.0.0", 11 | "iron-icon": "PolymerElements/iron-icon#^1.0.0", 12 | "iron-iconset-svg": "PolymerElements/iron-iconset-svg#^1.0.0", 13 | "iron-localstorage": "PolymerElements/iron-localstorage#^1.0.0", 14 | "iron-media-query": "PolymerElements/iron-media-query#^1.0.0", 15 | "iron-pages": "PolymerElements/iron-pages#^1.0.0", 16 | "iron-selector": "PolymerElements/iron-selector#^1.0.0", 17 | "paper-icon-button": "PolymerElements/paper-icon-button#~1.1.0", 18 | "polymer": "Polymer/polymer#^1.6.0", 19 | "paper-input": "PolymerElements/paper-input#^1.1.20", 20 | "iron-list": "PolymerElements/iron-list#^1.3.11" 21 | }, 22 | "devDependencies": { 23 | "web-component-tester": "^4.0.0" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /cron_scripts/code_to_catalog.py: -------------------------------------------------------------------------------- 1 | # IMPORTANT: A daily cronjob on tiprod runs this script 2 | 3 | import json 4 | import requests 5 | from datetime import datetime 6 | from subprocess import Popen, PIPE 7 | 8 | # User-set constants 9 | CODE_URL = 'https://raw.githubusercontent.com/nasa/Open-Source-Catalog/master/code.json' 10 | CATALOG_OUT_LOCATION = '/var/www/code/docroot/data/catalog.json' 11 | CATALOG_BACKUP_DIR = '/var/www/code/docroot/catalog_backups' 12 | CURRENT_CATALOG_FILE = '/var/www/code/docroot/data/catalog.json' 13 | 14 | # Computed constants 15 | CATALOG_BACKUP_FILE = '/catalog.json.' + datetime.today().strftime('%Y-%m-%d') 16 | CATALOG_BACKUP_FULL_PATH = CATALOG_BACKUP_DIR + CATALOG_BACKUP_FILE 17 | 18 | # Helper to extract all contributor data from code.json format to catalog.json 19 | # format 20 | def getContribs(full_contribs): 21 | 22 | out_contribs = [] 23 | 24 | for c in full_contribs: 25 | try: 26 | if c['name']: 27 | out_contribs += [ c['name'] ] 28 | except: pass 29 | try: 30 | if c['email']: 31 | out_contribs += [ c['email'] ] 32 | except: pass 33 | try: 34 | if c['github']: 35 | out_contribs += [ c['github'] ] 36 | except: pass 37 | 38 | return out_contribs 39 | 40 | res = requests.get(CODE_URL) 41 | code_projs = res.json()['releases'] 42 | 43 | cat_projs = [] 44 | 45 | # Iterate through all projects from code.json 46 | for p in code_projs: 47 | 48 | new_proj = {} 49 | 50 | # Check if project is open source 51 | if p['permissions']['usageType'] == 'openSource': 52 | 53 | new_proj['Update_Date'] = p['date']['metadataLastUpdated'] 54 | new_proj['Description'] = p['description'] 55 | new_proj['Public Code Repo'] = p['repositoryURL'] 56 | new_proj['NASA Center'] = p['organization'] 57 | new_proj['Contributors'] = getContribs(p['contributors']) 58 | new_proj['Labor_Hours'] = p['laborHours'] 59 | new_proj['Categories'] = p['tags'] 60 | new_proj['Languages'] = [] 61 | new_proj['Software'] = p['name'] 62 | new_proj['License'] = [ l['name'] for l in p['permissions']['licenses'] ] 63 | 64 | try: 65 | new_proj['Categories_NLP'] = p['sti_keywords_passed_thresholds'] 66 | 67 | except: 68 | new_proj['Categories_NLP'] = [] 69 | 70 | try: 71 | new_proj['External Link'] = p['homepageURL'] 72 | except: 73 | try: 74 | new_proj['External Link'] = p['disclaimerURL'] 75 | except: 76 | new_proj['External Link'] = "" 77 | 78 | cat_projs += [new_proj] 79 | 80 | # Check if new catalog items successfuly generated 81 | if len(cat_projs) > 500: 82 | 83 | # Move old catalog.json to backup dir 84 | process = Popen(['cp', CURRENT_CATALOG_FILE, CATALOG_BACKUP_FULL_PATH], stdout=PIPE, stderr=PIPE) 85 | stdout, stderr = process.communicate() 86 | print (stderr) 87 | 88 | # Write out new catalog.json 89 | f = open(CURRENT_CATALOG_FILE, 'w+') 90 | f.write(json.dumps(cat_projs, indent=4)) 91 | f.close() 92 | 93 | -------------------------------------------------------------------------------- /cron_scripts/release.sh: -------------------------------------------------------------------------------- 1 | #pull down master branch 2 | old_head=$(git rev-parse HEAD) 3 | git pull https://github.com/nasa/code-nasa-gov.git 4 | new_head=$(git rev-parse HEAD) 5 | echo "$old_head : $new_head" 6 | 7 | #run polymer build if there is any new commits 8 | if [ $old_head = $new_head ]; then 9 | echo "No new commits" 10 | else 11 | echo "New commits pulled from repo" 12 | echo "running polymer build" 13 | polymer build 14 | #copy build files into the root of the app 15 | FILES='build/*' 16 | for file in $FILES 17 | do 18 | echo "copying $file to root directory" 19 | cp $file $PWD 20 | done 21 | 22 | FILES='build/bundled/*' 23 | for file in $FILES 24 | do 25 | echo "copying $file to root directory" 26 | cp -r $file $PWD 27 | done 28 | fi -------------------------------------------------------------------------------- /data/SRA.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "Center": "ARC", 4 | "Email": "arc-sra-team@mail.nasa.gov" 5 | }, 6 | { 7 | "Center": "AFRC", 8 | "Email": "afrc-ipo-softwarecatalogue@mail.nasa.gov" 9 | }, 10 | { 11 | "Center": "GRC", 12 | "Email": "grc-sra-team@mail.nasa.gov" 13 | }, 14 | { 15 | "Center": "GSFC", 16 | "Email": "gsfc-softwarerequest@mail.nasa.gov" 17 | }, 18 | { 19 | "Center": "HQ", 20 | "Email": "hq-sra-team@mail.nasa.gov" 21 | }, 22 | { 23 | "Center": "JPL", 24 | "Email": "jpl_ott@jpl.nasa.gov" 25 | }, 26 | { 27 | "Center": "JSC", 28 | "Email": "jsc-ttco-software-request@mail.nasa.gov" 29 | }, 30 | { 31 | "Center": "KSC", 32 | "Email": "ksc-dl-software-request@mail.nasa.gov" 33 | }, 34 | { 35 | "Center": "LaRC", 36 | "Email": "larc-sra@mail.nasa.gov" 37 | }, 38 | { 39 | "Center": "MSFC", 40 | "Email": "msfc-sra-team@mail.nasa.gov" 41 | }, 42 | { 43 | "Center": "SSC", 44 | "Email": "ssc-technology@nasa.gov" 45 | } 46 | ] 47 | -------------------------------------------------------------------------------- /data/deprecated/SRA_old.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "Center": "ARC", 4 | "Name": "Martha Del Alto", 5 | "Title": "SRA", 6 | "Phone": "650.604.4865", 7 | "Email": "martha.e.delalto@nasa.gov" 8 | }, 9 | { 10 | "Center": "ARC", 11 | "Name": "Kim Chrestenson", 12 | "Title": "SRA Alternate", 13 | "Phone": "650.604.5063", 14 | "Email": "kim.l.chrestenson@nasa.gov" 15 | }, 16 | { 17 | "Center": "AFRC", 18 | "Name": "Earl Adams", 19 | "Title": "SRA", 20 | "Phone": "661.276.5307", 21 | "Email": "earl.s.adams@nasa.gov" 22 | }, 23 | { 24 | "Center": "AFRC", 25 | "Name": "Samantha Hull", 26 | "Title": "SRA Alternate", 27 | "Phone": "661.276.3368", 28 | "Email": "samantha.m.hull@nasa.gov" 29 | }, 30 | { 31 | "Center": "GRC", 32 | "Name": "Kim Dalgleish-Miller", 33 | "Title": "SRA", 34 | "Phone": "216.433.8047", 35 | "Email": "kimberly.a.dalgleish@nasa.gov" 36 | }, 37 | { 38 | "Center": "GRC", 39 | "Name": "Jason Hanna", 40 | "Title": "SRA Alternate", 41 | "Phone": "216.433.6731", 42 | "Email": "jason.m.hanna@nasa.gov" 43 | }, 44 | { 45 | "Center": "GSFC", 46 | "Name": "Nona K. Cheeks", 47 | "Title": "SRA", 48 | "Phone": "301.286.5810", 49 | "Email": "nona.k.cheeks@nasa.gov" 50 | }, 51 | { 52 | "Center": "GSFC", 53 | "Name": "Enidia Santiago-Arce", 54 | "Title": "SRA Alternate", 55 | "Phone": "301.286.8497", 56 | "Email": "enidia.santiago-arce@nasa.gov" 57 | }, 58 | { 59 | "Center": "HQ", 60 | "Name": "Liteshia Dennis", 61 | "Title": "SRA", 62 | "Phone": "202.358.4778", 63 | "Email": "liteshia.b.dennis@nasa.gov" 64 | }, 65 | { 66 | "Center": "HQ", 67 | "Name": "Stanley Artis", 68 | "Title": "SRA", 69 | "Phone": "202.358.2032", 70 | "Email": "stanley.artis-1@nasa.gov" 71 | }, 72 | { 73 | "Center": "JPL", 74 | "Name": "Brian Morrison", 75 | "Title": "SRA", 76 | "Phone": "818.354.2458", 77 | "Email": "brian.a.morrison@jpl.nasa.gov" 78 | }, 79 | { 80 | "Center": "JSC", 81 | "Name": "Michelle Kamman", 82 | "Title": "SRA", 83 | "Phone": "281.483.7548", 84 | "Email": "michelle.kamman-1@nasa.gov" 85 | }, 86 | { 87 | "Center": "KSC", 88 | "Name": "Roger Liang", 89 | "Title": "SRA", 90 | "Phone": "321.861.2224", 91 | "Email": "roger.h.liang@nasa.gov" 92 | }, 93 | { 94 | "Center": "KSC", 95 | "Name": "Lew Parrish", 96 | "Title": "SRA Alternate", 97 | "Phone": "321.867.5033", 98 | "Email": "lewis.m.parrish@nasa.gov" 99 | }, 100 | { 101 | "Center": "LaRC", 102 | "Name": "Bonnie Lumanog", 103 | "Title": "SRA", 104 | "Phone": "757.864.2933", 105 | "Email": "b.lumanog@nasa.gov" 106 | }, 107 | { 108 | "Center": "MSFC", 109 | "Name": "Danny Garcia", 110 | "Title": "SRA", 111 | "Phone": "256.544.4138", 112 | "Email": "danny.garcia-1@nasa.gov" 113 | }, 114 | { 115 | "Center": "MSFC", 116 | "Name": "Carolyn McMillian", 117 | "Title": "SRA Alternate", 118 | "Phone": "256.544.9151", 119 | "Email": "carolyn.e.mcmillan@nasa.gov" 120 | }, 121 | { 122 | "Center": "SSC", 123 | "Name": "Gigi Savona", 124 | "Title": "SRA", 125 | "Phone": "228.688.3605", 126 | "Email": "gigi.h.savona@nasa.gov" 127 | } 128 | ] 129 | -------------------------------------------------------------------------------- /data/deprecated/test/code-nasa-app.html: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | code-nasa-app 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 30 | 31 | 32 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /data/deprecated/test/index.html: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | Tests 18 | 19 | 20 | 21 | 22 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /data/license_mappings.json: -------------------------------------------------------------------------------- 1 | { 2 | "ALv2": { 3 | "License Long Name": "Apache License 2.0", 4 | "License Link": "https://www.apache.org/licenses/LICENSE-2.0" 5 | }, 6 | "Apache-2.0": { 7 | "License Long Name": "Apache License 2.0", 8 | "License Link": "https://www.apache.org/licenses/LICENSE-2.0" 9 | }, 10 | "ASL": { 11 | "License Long Name": "Apache Software License", 12 | "License Link": "https://www.apache.org/licenses/" 13 | }, 14 | "BSD-3-Clause": { 15 | "License Long Name": "BSD 3-Clause 'New' or 'Revised' license", 16 | "License Link": "http://opensource.org/licenses/BSD-3-Clause" 17 | }, 18 | "BSDv3": { 19 | "License Long Name": "BSD 3-Clause 'New' or 'Revised' license", 20 | "License Link": "http://opensource.org/licenses/BSD-3-Clause" 21 | }, 22 | "BSDv2": { 23 | "License Long Name": "BSD 2-Clause 'Simplified' or 'FreeBSD' license", 24 | "License Link": "http://opensource.org/licenses/BSD-2-Clause" 25 | }, 26 | "FreeBSD": { 27 | "License Long Name": "BSD 2-Clause 'Simplified' or 'FreeBSD' license", 28 | "License Link": "http://opensource.org/licenses/BSD-2-Clause" 29 | }, 30 | "BSD": { 31 | "License Long Name": "Berkeley Source Distribution", 32 | "License Link": "http://en.wikipedia.org/wiki/BSD_licenses" 33 | }, 34 | "CC0": { 35 | "License Long Name": "Creative Commons Public Domain Dedication", 36 | "License Link": "https://creativecommons.org/publicdomain/zero/1.0/" 37 | }, 38 | "CPL": { 39 | "License Long Name": "Common Public License", 40 | "License Link": "http://opensource.org/licenses/cpl1.0.php" 41 | }, 42 | "CDDL": { 43 | "License Long Name": "Common Development and Distribution License", 44 | "License Link": "http://en.wikipedia.org/wiki/Common_Development_and_Distribution_License" 45 | }, 46 | "CMUCS": { 47 | "License Long Name": "Carnegie Mellon University Software Licensing", 48 | "License Link": "http://www.cs.cmu.edu/~helpext/software_licensing/index.html" 49 | }, 50 | "COTS": { 51 | "License Long Name": "Commercial off-the-shelf", 52 | "License Link": "http://en.wikipedia.org/wiki/Commercial_off-the-shelf" 53 | }, 54 | "EPL": { 55 | "License Long Name": "Eclipse Public License", 56 | "License Link": "http://www.eclipse.org/legal/epl-v10.html" 57 | }, 58 | "GPR": { 59 | "License Long Name": "Government Purpose Rights", 60 | "License Link": "http://www.acq.osd.mil/dpap/dars/dfars/html/current/227_71.htm" 61 | }, 62 | "GPLv3": { 63 | "License Long Name": "GNU General Public License (GPL) version 3", 64 | "License Link": "http://www.gnu.org/licenses/gpl.html" 65 | }, 66 | "GPL": { 67 | "License Long Name": "GNU General Public License (GPL) version 3", 68 | "License Link": "http://www.gnu.org/licenses/gpl.html" 69 | }, 70 | "GPLv2": { 71 | "License Long Name": "GNU General Public License (GPL) version 2", 72 | "License Link": "http://www.gnu.org/licenses/old-licenses/gpl-2.0.html" 73 | }, 74 | "HTK": { 75 | "License Long Name": "University of Cambridge HTK License", 76 | "License Link": "http://llvm.org/releases/2.8/LICENSE.TXT" 77 | }, 78 | "LGPL": { 79 | "License Long Name": "GNU Library or 'Lesser' General Public License (LGPL)", 80 | "License Link": "http://www.gnu.org/licenses/lgpl.html" 81 | }, 82 | "LLVM": { 83 | "License Long Name": "LLVM Release License", 84 | "License Link": "http://llvm.org/releases/2.8/LICENSE.TXT" 85 | }, 86 | "MIT": { 87 | "License Long Name": "MIT License", 88 | "License Link": "http://en.wikipedia.org/wiki/MIT_License" 89 | }, 90 | "MPLv2": { 91 | "License Long Name": "Mozilla Public License 2.0", 92 | "License Link": "http://www.mozilla.org/MPL/2.0/" 93 | }, 94 | "NASA Open Source": { 95 | "License Long Name": "NASA Open Source 3.0", 96 | "License Link": "https://opensource.org/license/nasa1-3-php/" 97 | }, 98 | "NCSA": { 99 | "License Long Name": "NCSA/University of Illinois Open Source License", 100 | "License Link": "http://directory.fsf.org/wiki/License:IllinoisNCSA" 101 | }, 102 | "NCSLA": { 103 | "License Long Name": "Non-Commercial Software License Agreement (CU14012)", 104 | "License Link": "https://secure.nouvant.com/columbia/technology/cu14012/license/258" 105 | }, 106 | "Pending Release": { 107 | "License Long Name": "Pending Release", 108 | "License Link": "https://opensource.org/license/nasa1-3-php/" 109 | }, 110 | "Public Domain": { 111 | "License Long Name": "Public Domain", 112 | "License Link": "http://directory.fsf.org/wiki/License:PublicDomain" 113 | }, 114 | "SPL": { 115 | "License Long Name": "Sun Public License", 116 | "License Link": "http://en.wikipedia.org/wiki/Sun_Public_License" 117 | }, 118 | "SUN": { 119 | "License Long Name": "Sun Public License", 120 | "License Link": "http://en.wikipedia.org/wiki/Sun_Public_License" 121 | }, 122 | "UGPR": { 123 | "License Long Name": "Unlimited Government Purpose Rights", 124 | "License Link": "http://www.acq.osd.mil/dpap/dars/dfars/html/current/227_71.htm" 125 | } 126 | } 127 | -------------------------------------------------------------------------------- /fonts/ArcaMajora3-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/fonts/ArcaMajora3-Bold.woff -------------------------------------------------------------------------------- /fonts/ArcaMajora3-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/fonts/ArcaMajora3-Bold.woff2 -------------------------------------------------------------------------------- /fonts/ArcaMajora3-Heavy.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/fonts/ArcaMajora3-Heavy.woff -------------------------------------------------------------------------------- /fonts/ArcaMajora3-Heavy.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/fonts/ArcaMajora3-Heavy.woff2 -------------------------------------------------------------------------------- /images/backgrounds/guide.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/images/backgrounds/guide.jpg -------------------------------------------------------------------------------- /images/backgrounds/projects-bottom.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/images/backgrounds/projects-bottom.jpg -------------------------------------------------------------------------------- /images/backgrounds/projects.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/images/backgrounds/projects.jpg -------------------------------------------------------------------------------- /images/backgrounds/share.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/images/backgrounds/share.jpg -------------------------------------------------------------------------------- /images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/images/favicon.ico -------------------------------------------------------------------------------- /images/guide-steps/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/images/guide-steps/1.png -------------------------------------------------------------------------------- /images/guide-steps/10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/images/guide-steps/10.png -------------------------------------------------------------------------------- /images/guide-steps/11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/images/guide-steps/11.png -------------------------------------------------------------------------------- /images/guide-steps/12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/images/guide-steps/12.png -------------------------------------------------------------------------------- /images/guide-steps/13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/images/guide-steps/13.png -------------------------------------------------------------------------------- /images/guide-steps/14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/images/guide-steps/14.png -------------------------------------------------------------------------------- /images/guide-steps/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/images/guide-steps/2.png -------------------------------------------------------------------------------- /images/guide-steps/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/images/guide-steps/3.png -------------------------------------------------------------------------------- /images/guide-steps/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/images/guide-steps/4.png -------------------------------------------------------------------------------- /images/guide-steps/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/images/guide-steps/5.png -------------------------------------------------------------------------------- /images/guide-steps/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/images/guide-steps/6.png -------------------------------------------------------------------------------- /images/guide-steps/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/images/guide-steps/7.png -------------------------------------------------------------------------------- /images/guide-steps/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/images/guide-steps/8.png -------------------------------------------------------------------------------- /images/guide-steps/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/images/guide-steps/9.png -------------------------------------------------------------------------------- /images/logos/nasa-144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/images/logos/nasa-144.png -------------------------------------------------------------------------------- /images/logos/nasa-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/images/logos/nasa-192.png -------------------------------------------------------------------------------- /images/logos/nasa-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/images/logos/nasa-48.png -------------------------------------------------------------------------------- /images/logos/nasa-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/images/logos/nasa-512.png -------------------------------------------------------------------------------- /images/logos/nasa-72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/images/logos/nasa-72.png -------------------------------------------------------------------------------- /images/logos/nasa-96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/images/logos/nasa-96.png -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | NASA Open Source Software 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 154 | 155 | 156 | 157 | 158 | 177 | 178 | 179 | -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "NASA Open Source Software", 3 | "short_name": "NASA OSS", 4 | "start_url": "/", 5 | "display": "standalone", 6 | "theme_color": "#212121", 7 | "background_color": "#212121", 8 | "icons": [ 9 | { 10 | "src": "images/logos/nasa-192.png", 11 | "sizes": "192x192", 12 | "type": "image/png" 13 | }, 14 | { 15 | "src": "images/logos/nasa-512.png", 16 | "sizes": "512x512", 17 | "type": "image/png" 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "polymer-cli": "^1.9.11" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /polymer.json: -------------------------------------------------------------------------------- 1 | { 2 | "entrypoint": "index.html", 3 | "shell": "src/code-nasa-app.html", 4 | "fragments": [ 5 | "src/code-nasa-projects.html", 6 | "src/code-nasa-guide.html", 7 | "src/code-nasa-share.html", 8 | "src/code-nasa-invalid.html" 9 | ], 10 | "sources": [ 11 | "data/**/*", 12 | "cron_scripts/**/*", 13 | "fonts/**/*", 14 | "images/**/*", 15 | "src/**/*", 16 | "app.yaml", 17 | "bower.json" 18 | ], 19 | "extraDependencies": [ 20 | "manifest.json", 21 | "bower_components/webcomponentsjs/webcomponents-lite.min.js" 22 | ], 23 | "builds": [ 24 | { 25 | "name": "bundled", 26 | "bundle": true, 27 | "js": {"minify": true}, 28 | "css": {"minify": true}, 29 | "html": {"minify": true} 30 | }, 31 | { 32 | "name": "unbundled", 33 | "js": {"minify": true}, 34 | "css": {"minify": true}, 35 | "html": {"minify": true} 36 | } 37 | ] 38 | } 39 | 40 | -------------------------------------------------------------------------------- /service-worker.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright (c) 2016 The Polymer Project Authors. All rights reserved. 4 | * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt 5 | * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt 6 | * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt 7 | * Code distributed by Google as part of the polymer project is also 8 | * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt 9 | */ 10 | console.info('Service worker disabled for development, will be generated at build time.'); 11 | -------------------------------------------------------------------------------- /src/code-nasa-app.html: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 254 | 306 | 307 | 308 | -------------------------------------------------------------------------------- /src/code-nasa-experiments.html: -------------------------------------------------------------------------------- 1 | 2 | 130 | 131 | 132 | 133 | -------------------------------------------------------------------------------- /src/code-nasa-guide.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 254 | 274 | 275 | 276 | 277 | -------------------------------------------------------------------------------- /src/code-nasa-invalid.html: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | 13 | 14 | 15 | 28 | 29 | 34 | 35 | -------------------------------------------------------------------------------- /src/code-nasa-projects.html: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 228 | 229 | 347 | 348 | 349 | -------------------------------------------------------------------------------- /src/code-nasa-related.html: -------------------------------------------------------------------------------- 1 | 2 | 138 | 139 | 140 | 141 | -------------------------------------------------------------------------------- /src/code-nasa-share.html: -------------------------------------------------------------------------------- 1 | 2 | 99 | 100 | 101 | 102 | -------------------------------------------------------------------------------- /src/code-nasa-tagcluster.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | NASA Open Source Software 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 247 | 248 | 251 | 255 | 327 | 328 | 329 | 330 | 331 | -------------------------------------------------------------------------------- /src/images/backgrounds/guide.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/src/images/backgrounds/guide.jpg -------------------------------------------------------------------------------- /src/images/backgrounds/projects-bottom.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/src/images/backgrounds/projects-bottom.jpg -------------------------------------------------------------------------------- /src/images/backgrounds/projects.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/src/images/backgrounds/projects.jpg -------------------------------------------------------------------------------- /src/images/backgrounds/share.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/src/images/backgrounds/share.jpg -------------------------------------------------------------------------------- /src/images/down-arrow.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/downloadSince.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/src/images/downloadSince.png -------------------------------------------------------------------------------- /src/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/src/images/favicon.ico -------------------------------------------------------------------------------- /src/images/forc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/src/images/forc.png -------------------------------------------------------------------------------- /src/images/fork.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/src/images/fork.jpg -------------------------------------------------------------------------------- /src/images/laborHours.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/src/images/laborHours.png -------------------------------------------------------------------------------- /src/images/logos/nasa-144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/src/images/logos/nasa-144.png -------------------------------------------------------------------------------- /src/images/logos/nasa-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/src/images/logos/nasa-192.png -------------------------------------------------------------------------------- /src/images/logos/nasa-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/src/images/logos/nasa-48.png -------------------------------------------------------------------------------- /src/images/logos/nasa-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/src/images/logos/nasa-512.png -------------------------------------------------------------------------------- /src/images/logos/nasa-72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/src/images/logos/nasa-72.png -------------------------------------------------------------------------------- /src/images/logos/nasa-96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/src/images/logos/nasa-96.png -------------------------------------------------------------------------------- /src/images/obs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/src/images/obs.png -------------------------------------------------------------------------------- /src/images/popular_code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/src/images/popular_code.png -------------------------------------------------------------------------------- /src/images/tag_bubble.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/code-nasa-gov/360496821c05cfcdd282067e7435033daad88597/src/images/tag_bubble.png -------------------------------------------------------------------------------- /src/observablecode-import.html: -------------------------------------------------------------------------------- 1 | 33 | -------------------------------------------------------------------------------- /src/shared-styles.html: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | 13 | 14 | 15 | 78 | 79 | -------------------------------------------------------------------------------- /sw-precache-config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright (c) 2016 The Polymer Project Authors. All rights reserved. 4 | * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt 5 | * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt 6 | * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt 7 | * Code distributed by Google as part of the polymer project is also 8 | * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt 9 | */ 10 | module.exports = { 11 | staticFileGlobs: [ 12 | '/index.html', 13 | '/manifest.json', 14 | '/bower_components/webcomponentsjs/webcomponents-lite.min.js', 15 | '/images/**/*', 16 | '/data/*', 17 | '/fonts/*' 18 | ], 19 | navigateFallback: '/index.html' 20 | }; 21 | -------------------------------------------------------------------------------- /yarn-error.log: -------------------------------------------------------------------------------- 1 | Arguments: 2 | /usr/local/bin/node /Users/etyates/.yarn/bin/yarn.js add bower polymer-cli 3 | 4 | PATH: 5 | /Users/etyates/.yarn/bin:/Users/etyates/.config/yarn/global/node_modules/.bin:/Users/etyates/anaconda3/bin:/Users/etyates/anaconda3/condabin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/etyates/me/Applications/Sublime Text.app/Contents/SharedSupport/bin:/Users/etyates/Library/Python/2.7/bin:/Users/etyates/bin:/Users/etyates/.npm-global/bin 6 | 7 | Yarn version: 8 | 1.17.3 9 | 10 | Node version: 11 | 10.16.3 12 | 13 | Platform: 14 | darwin x64 15 | 16 | Trace: 17 | Error: EACCES: permission denied, mkdir '/Users/etyates/src/github/code-nasa-gov/node_modules/clean-css/node_modules/source-map' 18 | 19 | npm manifest: 20 | No manifest 21 | 22 | yarn manifest: 23 | No manifest 24 | 25 | Lockfile: 26 | No lockfile 27 | --------------------------------------------------------------------------------