├── .dockerignore ├── .env ├── .gitignore ├── LICENSE ├── README.md ├── azure-pipeline-templates ├── README.md └── deploy.yml ├── azure-pipelines.yml ├── backend ├── .dockerignore ├── .gitignore ├── Dockerfile ├── Pipfile ├── Pipfile.lock ├── README.md ├── dev_run.sh ├── docker │ ├── config.py.template │ ├── empty.crt │ └── wsgi.py ├── docker_run.sh ├── pine │ ├── __init__.py │ └── backend │ │ ├── __init__.py │ │ ├── admin │ │ ├── __init__.py │ │ ├── bp.py │ │ └── openapi.yaml │ │ ├── annotations │ │ ├── __init__.py │ │ ├── bp.py │ │ └── openapi.yaml │ │ ├── api │ │ ├── .gitignore │ │ ├── base.yaml │ │ ├── components.yaml │ │ ├── download_swagger_ui.sh │ │ ├── openapi.yaml │ │ └── swagger-ui │ │ │ ├── VERSION │ │ │ ├── favicon-16x16.png │ │ │ ├── favicon-32x32.png │ │ │ ├── index.html │ │ │ ├── oauth2-redirect.html │ │ │ ├── swagger-ui-bundle.js │ │ │ ├── swagger-ui-bundle.js.map │ │ │ ├── swagger-ui-es-bundle-core.js │ │ │ ├── swagger-ui-es-bundle-core.js.map │ │ │ ├── swagger-ui-es-bundle.js │ │ │ ├── swagger-ui-es-bundle.js.map │ │ │ ├── swagger-ui-standalone-preset.js │ │ │ ├── swagger-ui-standalone-preset.js.map │ │ │ ├── swagger-ui.css │ │ │ ├── swagger-ui.css.map │ │ │ ├── swagger-ui.js │ │ │ └── swagger-ui.js.map │ │ ├── app.py │ │ ├── auth │ │ ├── __init__.py │ │ ├── bp.py │ │ ├── eve.py │ │ ├── oauth.py │ │ ├── openapi.yaml │ │ ├── password.py │ │ └── vegas.py │ │ ├── collections │ │ ├── __init__.py │ │ ├── bp.py │ │ └── openapi.yaml │ │ ├── config.py │ │ ├── cors.py │ │ ├── data │ │ ├── __init__.py │ │ ├── bp.py │ │ ├── service.py │ │ └── users.py │ │ ├── documents │ │ ├── __init__.py │ │ ├── bp.py │ │ └── openapi.yaml │ │ ├── job_manager │ │ ├── __init__.py │ │ └── service.py │ │ ├── log.py │ │ ├── models.py │ │ ├── pineiaa │ │ ├── Agreeement.ipynb │ │ ├── __init__.py │ │ ├── bp.py │ │ ├── bratiaa │ │ │ ├── __init__.py │ │ │ ├── agree.py │ │ │ ├── agree_cli.py │ │ │ ├── evaluation.py │ │ │ ├── iaa_service.py │ │ │ └── utils.py │ │ └── openapi.yaml │ │ ├── pipelines │ │ ├── __init__.py │ │ ├── bp.py │ │ └── openapi.yaml │ │ └── shared │ │ ├── __init__.py │ │ ├── config.py │ │ └── transform.py └── scripts │ └── data │ ├── add_admin.sh │ ├── list_users.sh │ ├── reset_user_passwords.sh │ └── set_user_password.sh ├── check.sh ├── cleanup_dev_stack.sh ├── client ├── Pipfile ├── Pipfile.lock ├── README.md ├── interactive_dev_run.sh ├── interactive_docker_run.sh └── pine │ ├── __init__.py │ └── client │ ├── __init__.py │ ├── client.py │ ├── exceptions.py │ ├── log.py │ ├── models.py │ └── password.py ├── docker-compose-mrddocker.yml ├── docker-compose.override.yml ├── docker-compose.prod.yml ├── docker-compose.test.yml ├── docker-compose.yml ├── docs ├── .gitignore ├── Makefile ├── Pipfile ├── Pipfile.lock ├── README.md ├── build │ ├── doctrees │ │ ├── autoapi │ │ │ ├── index.doctree │ │ │ └── pine │ │ │ │ ├── backend │ │ │ │ ├── admin │ │ │ │ │ ├── bp │ │ │ │ │ │ └── index.doctree │ │ │ │ │ └── index.doctree │ │ │ │ ├── annotations │ │ │ │ │ ├── bp │ │ │ │ │ │ └── index.doctree │ │ │ │ │ └── index.doctree │ │ │ │ ├── api │ │ │ │ │ ├── bp │ │ │ │ │ │ └── index.doctree │ │ │ │ │ └── index.doctree │ │ │ │ ├── app │ │ │ │ │ └── index.doctree │ │ │ │ ├── auth │ │ │ │ │ ├── bp │ │ │ │ │ │ └── index.doctree │ │ │ │ │ ├── eve │ │ │ │ │ │ └── index.doctree │ │ │ │ │ ├── index.doctree │ │ │ │ │ ├── oauth │ │ │ │ │ │ └── index.doctree │ │ │ │ │ ├── password │ │ │ │ │ │ └── index.doctree │ │ │ │ │ └── vegas │ │ │ │ │ │ └── index.doctree │ │ │ │ ├── collections │ │ │ │ │ ├── bp │ │ │ │ │ │ └── index.doctree │ │ │ │ │ └── index.doctree │ │ │ │ ├── config │ │ │ │ │ └── index.doctree │ │ │ │ ├── cors │ │ │ │ │ └── index.doctree │ │ │ │ ├── data │ │ │ │ │ ├── bp │ │ │ │ │ │ └── index.doctree │ │ │ │ │ ├── index.doctree │ │ │ │ │ ├── service │ │ │ │ │ │ └── index.doctree │ │ │ │ │ └── users │ │ │ │ │ │ └── index.doctree │ │ │ │ ├── documents │ │ │ │ │ ├── bp │ │ │ │ │ │ └── index.doctree │ │ │ │ │ └── index.doctree │ │ │ │ ├── index.doctree │ │ │ │ ├── job_manager │ │ │ │ │ ├── index.doctree │ │ │ │ │ └── service │ │ │ │ │ │ └── index.doctree │ │ │ │ ├── log │ │ │ │ │ └── index.doctree │ │ │ │ ├── models │ │ │ │ │ └── index.doctree │ │ │ │ ├── pineiaa │ │ │ │ │ ├── bp │ │ │ │ │ │ └── index.doctree │ │ │ │ │ ├── bratiaa │ │ │ │ │ │ ├── agree │ │ │ │ │ │ │ └── index.doctree │ │ │ │ │ │ ├── agree_cli │ │ │ │ │ │ │ └── index.doctree │ │ │ │ │ │ ├── evaluation │ │ │ │ │ │ │ └── index.doctree │ │ │ │ │ │ ├── iaa_service │ │ │ │ │ │ │ └── index.doctree │ │ │ │ │ │ ├── index.doctree │ │ │ │ │ │ └── utils │ │ │ │ │ │ │ └── index.doctree │ │ │ │ │ └── index.doctree │ │ │ │ ├── pipelines │ │ │ │ │ ├── bp │ │ │ │ │ │ └── index.doctree │ │ │ │ │ └── index.doctree │ │ │ │ └── shared │ │ │ │ │ ├── config │ │ │ │ │ └── index.doctree │ │ │ │ │ ├── index.doctree │ │ │ │ │ └── transform │ │ │ │ │ └── index.doctree │ │ │ │ ├── client │ │ │ │ ├── client │ │ │ │ │ └── index.doctree │ │ │ │ ├── exceptions │ │ │ │ │ └── index.doctree │ │ │ │ ├── index.doctree │ │ │ │ ├── log │ │ │ │ │ └── index.doctree │ │ │ │ ├── models │ │ │ │ │ └── index.doctree │ │ │ │ └── password │ │ │ │ │ └── index.doctree │ │ │ │ ├── index.doctree │ │ │ │ └── pipelines │ │ │ │ ├── EveClient │ │ │ │ └── index.doctree │ │ │ │ ├── NERWrapper │ │ │ │ └── index.doctree │ │ │ │ ├── NER_API │ │ │ │ └── index.doctree │ │ │ │ ├── RankingFunctions │ │ │ │ └── index.doctree │ │ │ │ ├── app │ │ │ │ ├── index.doctree │ │ │ │ └── listener │ │ │ │ │ ├── index.doctree │ │ │ │ │ ├── main │ │ │ │ │ └── index.doctree │ │ │ │ │ └── service_listener │ │ │ │ │ └── index.doctree │ │ │ │ ├── corenlp_NER_pipeline │ │ │ │ └── index.doctree │ │ │ │ ├── index.doctree │ │ │ │ ├── opennlp_NER_pipeline │ │ │ │ └── index.doctree │ │ │ │ ├── pipeline │ │ │ │ └── index.doctree │ │ │ │ ├── pmap_ner │ │ │ │ └── index.doctree │ │ │ │ ├── run_service │ │ │ │ └── index.doctree │ │ │ │ ├── shared │ │ │ │ ├── config │ │ │ │ │ └── index.doctree │ │ │ │ ├── index.doctree │ │ │ │ └── transform │ │ │ │ │ └── index.doctree │ │ │ │ └── spacy_NER_pipeline │ │ │ │ └── index.doctree │ │ ├── environment.pickle │ │ └── index.doctree │ ├── html │ │ ├── .buildinfo │ │ ├── _sources │ │ │ ├── autoapi │ │ │ │ ├── index.rst.txt │ │ │ │ └── pine │ │ │ │ │ ├── backend │ │ │ │ │ ├── admin │ │ │ │ │ │ ├── bp │ │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ ├── annotations │ │ │ │ │ │ ├── bp │ │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ ├── api │ │ │ │ │ │ ├── bp │ │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ ├── app │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ ├── auth │ │ │ │ │ │ ├── bp │ │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ │ ├── eve │ │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ │ ├── index.rst.txt │ │ │ │ │ │ ├── oauth │ │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ │ ├── password │ │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ │ └── vegas │ │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ ├── collections │ │ │ │ │ │ ├── bp │ │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ ├── config │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ ├── cors │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ ├── data │ │ │ │ │ │ ├── bp │ │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ │ ├── index.rst.txt │ │ │ │ │ │ ├── service │ │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ │ └── users │ │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ ├── documents │ │ │ │ │ │ ├── bp │ │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ ├── index.rst.txt │ │ │ │ │ ├── job_manager │ │ │ │ │ │ ├── index.rst.txt │ │ │ │ │ │ └── service │ │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ ├── log │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ ├── models │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ ├── pineiaa │ │ │ │ │ │ ├── bp │ │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ │ ├── bratiaa │ │ │ │ │ │ │ ├── agree │ │ │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ │ │ ├── agree_cli │ │ │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ │ │ ├── evaluation │ │ │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ │ │ ├── iaa_service │ │ │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ │ │ ├── index.rst.txt │ │ │ │ │ │ │ └── utils │ │ │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ ├── pipelines │ │ │ │ │ │ ├── bp │ │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ └── shared │ │ │ │ │ │ ├── config │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ │ ├── index.rst.txt │ │ │ │ │ │ └── transform │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ ├── client │ │ │ │ │ ├── client │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ ├── exceptions │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ ├── index.rst.txt │ │ │ │ │ ├── log │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ ├── models │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ └── password │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ ├── index.rst.txt │ │ │ │ │ └── pipelines │ │ │ │ │ ├── EveClient │ │ │ │ │ └── index.rst.txt │ │ │ │ │ ├── NERWrapper │ │ │ │ │ └── index.rst.txt │ │ │ │ │ ├── NER_API │ │ │ │ │ └── index.rst.txt │ │ │ │ │ ├── RankingFunctions │ │ │ │ │ └── index.rst.txt │ │ │ │ │ ├── app │ │ │ │ │ ├── index.rst.txt │ │ │ │ │ └── listener │ │ │ │ │ │ ├── index.rst.txt │ │ │ │ │ │ ├── main │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ │ └── service_listener │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ ├── corenlp_NER_pipeline │ │ │ │ │ └── index.rst.txt │ │ │ │ │ ├── index.rst.txt │ │ │ │ │ ├── opennlp_NER_pipeline │ │ │ │ │ └── index.rst.txt │ │ │ │ │ ├── pipeline │ │ │ │ │ └── index.rst.txt │ │ │ │ │ ├── pmap_ner │ │ │ │ │ └── index.rst.txt │ │ │ │ │ ├── run_service │ │ │ │ │ └── index.rst.txt │ │ │ │ │ ├── shared │ │ │ │ │ ├── config │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ ├── index.rst.txt │ │ │ │ │ └── transform │ │ │ │ │ │ └── index.rst.txt │ │ │ │ │ └── spacy_NER_pipeline │ │ │ │ │ └── index.rst.txt │ │ │ └── index.rst.txt │ │ ├── _static │ │ │ ├── background_b01.png │ │ │ ├── basic.css │ │ │ ├── bizstyle.css │ │ │ ├── bizstyle.js │ │ │ ├── css3-mediaqueries.js │ │ │ ├── css3-mediaqueries_src.js │ │ │ ├── doctools.js │ │ │ ├── documentation_options.js │ │ │ ├── file.png │ │ │ ├── graphviz.css │ │ │ ├── jquery-3.5.1.js │ │ │ ├── jquery.js │ │ │ ├── language_data.js │ │ │ ├── minus.png │ │ │ ├── plus.png │ │ │ ├── pygments.css │ │ │ ├── searchtools.js │ │ │ ├── underscore-1.12.0.js │ │ │ ├── underscore-1.13.1.js │ │ │ ├── underscore-1.3.1.js │ │ │ └── underscore.js │ │ ├── autoapi │ │ │ ├── index.html │ │ │ └── pine │ │ │ │ ├── backend │ │ │ │ ├── admin │ │ │ │ │ ├── bp │ │ │ │ │ │ └── index.html │ │ │ │ │ └── index.html │ │ │ │ ├── annotations │ │ │ │ │ ├── bp │ │ │ │ │ │ └── index.html │ │ │ │ │ └── index.html │ │ │ │ ├── api │ │ │ │ │ ├── bp │ │ │ │ │ │ └── index.html │ │ │ │ │ └── index.html │ │ │ │ ├── app │ │ │ │ │ └── index.html │ │ │ │ ├── auth │ │ │ │ │ ├── bp │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── eve │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── index.html │ │ │ │ │ ├── oauth │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── password │ │ │ │ │ │ └── index.html │ │ │ │ │ └── vegas │ │ │ │ │ │ └── index.html │ │ │ │ ├── collections │ │ │ │ │ ├── bp │ │ │ │ │ │ └── index.html │ │ │ │ │ └── index.html │ │ │ │ ├── config │ │ │ │ │ └── index.html │ │ │ │ ├── cors │ │ │ │ │ └── index.html │ │ │ │ ├── data │ │ │ │ │ ├── bp │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── index.html │ │ │ │ │ ├── service │ │ │ │ │ │ └── index.html │ │ │ │ │ └── users │ │ │ │ │ │ └── index.html │ │ │ │ ├── documents │ │ │ │ │ ├── bp │ │ │ │ │ │ └── index.html │ │ │ │ │ └── index.html │ │ │ │ ├── index.html │ │ │ │ ├── job_manager │ │ │ │ │ ├── index.html │ │ │ │ │ └── service │ │ │ │ │ │ └── index.html │ │ │ │ ├── log │ │ │ │ │ └── index.html │ │ │ │ ├── models │ │ │ │ │ └── index.html │ │ │ │ ├── pineiaa │ │ │ │ │ ├── bp │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── bratiaa │ │ │ │ │ │ ├── agree │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ ├── agree_cli │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ ├── evaluation │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ ├── iaa_service │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── utils │ │ │ │ │ │ │ └── index.html │ │ │ │ │ └── index.html │ │ │ │ ├── pipelines │ │ │ │ │ ├── bp │ │ │ │ │ │ └── index.html │ │ │ │ │ └── index.html │ │ │ │ └── shared │ │ │ │ │ ├── config │ │ │ │ │ └── index.html │ │ │ │ │ ├── index.html │ │ │ │ │ └── transform │ │ │ │ │ └── index.html │ │ │ │ ├── client │ │ │ │ ├── client │ │ │ │ │ └── index.html │ │ │ │ ├── exceptions │ │ │ │ │ └── index.html │ │ │ │ ├── index.html │ │ │ │ ├── log │ │ │ │ │ └── index.html │ │ │ │ ├── models │ │ │ │ │ └── index.html │ │ │ │ └── password │ │ │ │ │ └── index.html │ │ │ │ ├── index.html │ │ │ │ └── pipelines │ │ │ │ ├── EveClient │ │ │ │ └── index.html │ │ │ │ ├── NERWrapper │ │ │ │ └── index.html │ │ │ │ ├── NER_API │ │ │ │ └── index.html │ │ │ │ ├── RankingFunctions │ │ │ │ └── index.html │ │ │ │ ├── app │ │ │ │ ├── index.html │ │ │ │ └── listener │ │ │ │ │ ├── index.html │ │ │ │ │ ├── main │ │ │ │ │ └── index.html │ │ │ │ │ └── service_listener │ │ │ │ │ └── index.html │ │ │ │ ├── corenlp_NER_pipeline │ │ │ │ └── index.html │ │ │ │ ├── index.html │ │ │ │ ├── opennlp_NER_pipeline │ │ │ │ └── index.html │ │ │ │ ├── pipeline │ │ │ │ └── index.html │ │ │ │ ├── pmap_ner │ │ │ │ └── index.html │ │ │ │ ├── run_service │ │ │ │ └── index.html │ │ │ │ ├── shared │ │ │ │ ├── config │ │ │ │ │ └── index.html │ │ │ │ ├── index.html │ │ │ │ └── transform │ │ │ │ │ └── index.html │ │ │ │ └── spacy_NER_pipeline │ │ │ │ └── index.html │ │ ├── genindex.html │ │ ├── index.html │ │ ├── objects.inv │ │ ├── py-modindex.html │ │ ├── search.html │ │ └── searchindex.js │ ├── latex │ │ ├── LICRcyr2utf8.xdy │ │ ├── LICRlatin2utf8.xdy │ │ ├── LatinRules.xdy │ │ ├── Makefile │ │ ├── _static │ │ │ └── graphviz.css │ │ ├── footnotehyper-sphinx.sty │ │ ├── latexmkjarc │ │ ├── latexmkrc │ │ ├── make.bat │ │ ├── pine.pdf │ │ ├── pine.tex │ │ ├── python.ist │ │ ├── sphinx.sty │ │ ├── sphinx.xdy │ │ ├── sphinxcyrillic.sty │ │ ├── sphinxhighlight.sty │ │ ├── sphinxhowto.cls │ │ ├── sphinxlatexadmonitions.sty │ │ ├── sphinxlatexcontainers.sty │ │ ├── sphinxlatexgraphics.sty │ │ ├── sphinxlatexindbibtoc.sty │ │ ├── sphinxlatexlists.sty │ │ ├── sphinxlatexliterals.sty │ │ ├── sphinxlatexnumfig.sty │ │ ├── sphinxlatexobjects.sty │ │ ├── sphinxlatexshadowbox.sty │ │ ├── sphinxlatexstyleheadings.sty │ │ ├── sphinxlatexstylepage.sty │ │ ├── sphinxlatexstyletext.sty │ │ ├── sphinxlatextables.sty │ │ ├── sphinxmanual.cls │ │ ├── sphinxmessages.sty │ │ ├── sphinxmulticell.sty │ │ ├── sphinxoptionsgeometry.sty │ │ ├── sphinxoptionshyperref.sty │ │ ├── sphinxpackagecyrillic.sty │ │ └── sphinxpackagefootnote.sty │ └── singlehtml │ │ ├── .buildinfo │ │ ├── _static │ │ ├── background_b01.png │ │ ├── basic.css │ │ ├── bizstyle.css │ │ ├── bizstyle.js │ │ ├── css3-mediaqueries.js │ │ ├── css3-mediaqueries_src.js │ │ ├── doctools.js │ │ ├── documentation_options.js │ │ ├── file.png │ │ ├── graphviz.css │ │ ├── jquery-3.5.1.js │ │ ├── jquery.js │ │ ├── language_data.js │ │ ├── minus.png │ │ ├── plus.png │ │ ├── pygments.css │ │ ├── searchtools.js │ │ ├── underscore-1.12.0.js │ │ ├── underscore-1.13.1.js │ │ ├── underscore-1.3.1.js │ │ └── underscore.js │ │ ├── index.html │ │ └── objects.inv └── source │ ├── conf.py │ └── index.rst ├── eve ├── .dockerignore ├── .gitignore ├── Dockerfile ├── Pipfile ├── Pipfile.lock ├── README.md ├── dev_run.sh ├── docker │ ├── config.py.template │ ├── empty.crt │ └── wsgi.py ├── docker_run.sh └── python │ ├── EveDataLayer.py │ ├── Jhed.py │ ├── __init__.py │ ├── settings.py │ └── update_documents_annnotation_status.py ├── frontend └── annotation │ ├── .browserslistrc │ ├── .dockerignore │ ├── .editorconfig │ ├── .gitignore │ ├── Dockerfile │ ├── README.md │ ├── angular.json │ ├── dev_run.sh │ ├── docker │ └── empty.crt │ ├── docker_run.sh │ ├── e2e │ ├── protractor.conf.js │ ├── src │ │ ├── app.e2e-spec.ts │ │ └── app.po.ts │ └── tsconfig.json │ ├── generate_ssl_cert.sh │ ├── nginx │ ├── certs │ │ ├── dhparam.pem │ │ ├── server.crt │ │ └── server.key │ ├── nlp-web-app.http.mustache │ ├── nlp-web-app.https.mustache │ └── snippets │ │ ├── api-rules.conf │ │ ├── default-logging.conf │ │ ├── self-signed.conf │ │ └── ssl-params.conf │ ├── package-lock.json │ ├── package.json │ ├── src │ ├── app │ │ ├── app.component.css │ │ ├── app.component.html │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.config.ts │ │ ├── app.module.ts │ │ ├── app.paths.ts │ │ ├── app.routing.ts │ │ ├── component │ │ │ ├── about │ │ │ │ ├── about.component.css │ │ │ │ ├── about.component.html │ │ │ │ ├── about.component.spec.ts │ │ │ │ └── about.component.ts │ │ │ ├── account │ │ │ │ ├── account.component.css │ │ │ │ ├── account.component.html │ │ │ │ ├── account.component.spec.ts │ │ │ │ └── account.component.ts │ │ │ ├── add-collection │ │ │ │ ├── add-collection.component.css │ │ │ │ ├── add-collection.component.html │ │ │ │ ├── add-collection.component.spec.ts │ │ │ │ └── add-collection.component.ts │ │ │ ├── add-document │ │ │ │ ├── add-document.component.css │ │ │ │ ├── add-document.component.html │ │ │ │ ├── add-document.component.spec.ts │ │ │ │ └── add-document.component.ts │ │ │ ├── admin-data │ │ │ │ ├── admin-data.component.css │ │ │ │ ├── admin-data.component.html │ │ │ │ ├── admin-data.component.spec.ts │ │ │ │ └── admin-data.component.ts │ │ │ ├── admin-user-modify │ │ │ │ ├── admin-user-modify.component.css │ │ │ │ ├── admin-user-modify.component.html │ │ │ │ ├── admin-user-modify.component.spec.ts │ │ │ │ └── admin-user-modify.component.ts │ │ │ ├── admin-users │ │ │ │ ├── admin-users.component.css │ │ │ │ ├── admin-users.component.html │ │ │ │ ├── admin-users.component.spec.ts │ │ │ │ └── admin-users.component.ts │ │ │ ├── admin │ │ │ │ ├── admin.component.css │ │ │ │ ├── admin.component.html │ │ │ │ ├── admin.component.spec.ts │ │ │ │ └── admin.component.ts │ │ │ ├── annotate │ │ │ │ ├── annotate.component.css │ │ │ │ ├── annotate.component.html │ │ │ │ ├── annotate.component.spec.ts │ │ │ │ ├── annotate.component.ts │ │ │ │ ├── ner-data.ts │ │ │ │ └── ner-selection.ts │ │ │ ├── collection-details │ │ │ │ ├── collection-details-add-annotator-modal.component.html │ │ │ │ ├── collection-details-add-label-modal.component.html │ │ │ │ ├── collection-details-add-viewer-modal.component.html │ │ │ │ ├── collection-details.component.css │ │ │ │ ├── collection-details.component.html │ │ │ │ ├── collection-details.component.spec.ts │ │ │ │ ├── collection-details.component.ts │ │ │ │ └── document-data-source.ts │ │ │ ├── collection-iaa-report │ │ │ │ ├── collection-iaa-report.component.css │ │ │ │ ├── collection-iaa-report.component.html │ │ │ │ ├── collection-iaa-report.component.spec.ts │ │ │ │ └── collection-iaa-report.component.ts │ │ │ ├── conf-matrix │ │ │ │ ├── conf-matrix.component.css │ │ │ │ ├── conf-matrix.component.html │ │ │ │ ├── conf-matrix.component.spec.ts │ │ │ │ └── conf-matrix.component.ts │ │ │ ├── document-details │ │ │ │ ├── document-details.component.css │ │ │ │ ├── document-details.component.html │ │ │ │ ├── document-details.component.spec.ts │ │ │ │ └── document-details.component.ts │ │ │ ├── download-collection-data.dialog │ │ │ │ ├── download-collection-data.dialog.component.css │ │ │ │ ├── download-collection-data.dialog.component.html │ │ │ │ ├── download-collection-data.dialog.component.spec.ts │ │ │ │ └── download-collection-data.dialog.component.ts │ │ │ ├── error │ │ │ │ ├── error.component.css │ │ │ │ ├── error.component.html │ │ │ │ ├── error.component.spec.ts │ │ │ │ └── error.component.ts │ │ │ ├── iaa-heatmap │ │ │ │ ├── iaa-heatmap.component.css │ │ │ │ ├── iaa-heatmap.component.html │ │ │ │ ├── iaa-heatmap.component.spec.ts │ │ │ │ └── iaa-heatmap.component.ts │ │ │ ├── image-chooser │ │ │ │ ├── image-chooser.component.css │ │ │ │ ├── image-chooser.component.html │ │ │ │ ├── image-chooser.component.spec.ts │ │ │ │ ├── image-chooser.component.ts │ │ │ │ ├── image-chooser.dialog.css │ │ │ │ └── image-chooser.dialog.html │ │ │ ├── image-collection-uploader │ │ │ │ ├── image-collection-uploader.component.css │ │ │ │ ├── image-collection-uploader.component.html │ │ │ │ ├── image-collection-uploader.component.spec.ts │ │ │ │ ├── image-collection-uploader.component.ts │ │ │ │ ├── image-collection-uploader.dialog.css │ │ │ │ └── image-collection-uploader.dialog.html │ │ │ ├── image-explorer │ │ │ │ ├── image-explorer.component.css │ │ │ │ ├── image-explorer.component.html │ │ │ │ ├── image-explorer.component.spec.ts │ │ │ │ └── image-explorer.component.ts │ │ │ ├── label-chooser │ │ │ │ ├── label-chooser.component.css │ │ │ │ ├── label-chooser.component.html │ │ │ │ ├── label-chooser.component.spec.ts │ │ │ │ └── label-chooser.component.ts │ │ │ ├── loading │ │ │ │ ├── loading.component.css │ │ │ │ ├── loading.component.html │ │ │ │ ├── loading.component.spec.ts │ │ │ │ └── loading.component.ts │ │ │ ├── login │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.spec.ts │ │ │ │ └── login.component.ts │ │ │ ├── message.dialog │ │ │ │ ├── message.dialog.component.css │ │ │ │ ├── message.dialog.component.html │ │ │ │ ├── message.dialog.component.spec.ts │ │ │ │ └── message.dialog.component.ts │ │ │ ├── metrics-history │ │ │ │ ├── metrics-history.component.css │ │ │ │ ├── metrics-history.component.html │ │ │ │ ├── metrics-history.component.spec.ts │ │ │ │ └── metrics-history.component.ts │ │ │ ├── metrics │ │ │ │ ├── metrics.component.css │ │ │ │ ├── metrics.component.html │ │ │ │ ├── metrics.component.spec.ts │ │ │ │ └── metrics.component.ts │ │ │ ├── ner-annotation-table │ │ │ │ ├── ner-annotation-table.component.css │ │ │ │ ├── ner-annotation-table.component.html │ │ │ │ ├── ner-annotation-table.component.spec.ts │ │ │ │ └── ner-annotation-table.component.ts │ │ │ ├── status-bar │ │ │ │ ├── status-bar.component.css │ │ │ │ ├── status-bar.component.html │ │ │ │ ├── status-bar.component.spec.ts │ │ │ │ └── status-bar.component.ts │ │ │ ├── toolbar │ │ │ │ ├── toolbar-nav-button │ │ │ │ │ ├── toolbar-nav-button.component.html │ │ │ │ │ ├── toolbar-nav-button.component.scss │ │ │ │ │ ├── toolbar-nav-button.component.spec.ts │ │ │ │ │ └── toolbar-nav-button.component.ts │ │ │ │ └── toolbar-nav │ │ │ │ │ ├── toolbar-nav.component.html │ │ │ │ │ ├── toolbar-nav.component.scss │ │ │ │ │ ├── toolbar-nav.component.spec.ts │ │ │ │ │ └── toolbar-nav.component.ts │ │ │ ├── user-card │ │ │ │ ├── user-card.component.html │ │ │ │ ├── user-card.component.scss │ │ │ │ ├── user-card.component.spec.ts │ │ │ │ └── user-card.component.ts │ │ │ ├── user-chooser │ │ │ │ ├── user-chooser.component.css │ │ │ │ ├── user-chooser.component.html │ │ │ │ ├── user-chooser.component.spec.ts │ │ │ │ └── user-chooser.component.ts │ │ │ ├── util.ts │ │ │ ├── venn-diag │ │ │ │ ├── venn-diag.component.css │ │ │ │ ├── venn-diag.component.html │ │ │ │ ├── venn-diag.component.spec.ts │ │ │ │ └── venn-diag.component.ts │ │ │ └── view-collections │ │ │ │ ├── view-collections.component.css │ │ │ │ ├── view-collections.component.html │ │ │ │ ├── view-collections.component.spec.ts │ │ │ │ └── view-collections.component.ts │ │ ├── model │ │ │ ├── annotation.ts │ │ │ ├── app.config.ts │ │ │ ├── backend.ts │ │ │ ├── classifier.ts │ │ │ ├── collection.ts │ │ │ ├── created.ts │ │ │ ├── db.ts │ │ │ ├── doclabel.ts │ │ │ ├── document.ts │ │ │ ├── iaareport.ts │ │ │ ├── login.ts │ │ │ ├── metrics.ts │ │ │ ├── pipeline.ts │ │ │ ├── user.ts │ │ │ └── word.ts │ │ └── service │ │ │ ├── admin │ │ │ ├── admin.service.spec.ts │ │ │ └── admin.service.ts │ │ │ ├── annotated │ │ │ ├── annotated.service.spec.ts │ │ │ └── annotated.service.ts │ │ │ ├── annotation │ │ │ ├── annotation.service.spec.ts │ │ │ └── annotation.service.ts │ │ │ ├── auth │ │ │ ├── auth-guard.service.ts │ │ │ ├── auth-module.ts │ │ │ ├── auth.service.ts │ │ │ └── modules │ │ │ │ ├── eve-auth-module.ts │ │ │ │ ├── oauth-authorize.component.html │ │ │ │ ├── oauth-authorize.component.ts │ │ │ │ ├── oauth-module.ts │ │ │ │ └── vegas-auth-module.ts │ │ │ ├── backend │ │ │ ├── backend.service.spec.ts │ │ │ └── backend.service.ts │ │ │ ├── collection-repository │ │ │ ├── collection-repository.service.spec.ts │ │ │ └── collection-repository.service.ts │ │ │ ├── document-repository │ │ │ ├── document-repository.service.spec.ts │ │ │ └── document-repository.service.ts │ │ │ ├── event │ │ │ ├── event.service.spec.ts │ │ │ └── event.service.ts │ │ │ ├── iaa-reporting │ │ │ ├── iaa-reporting.service.spec.ts │ │ │ └── iaa-reporting.service.ts │ │ │ ├── image │ │ │ ├── image-filter.service.spec.ts │ │ │ └── image-filter.service.ts │ │ │ ├── metrics │ │ │ ├── metrics.service.spec.ts │ │ │ └── metrics.service.ts │ │ │ ├── pipeline │ │ │ ├── pipeline.service.spec.ts │ │ │ └── pipeline.service.ts │ │ │ ├── settings │ │ │ ├── settings.service.spec.ts │ │ │ └── settings.service.ts │ │ │ ├── status-bar │ │ │ ├── status-bar.service.spec.ts │ │ │ └── status-bar.service.ts │ │ │ └── utils.ts │ ├── assets │ │ ├── .gitkeep │ │ ├── config │ │ │ ├── config.dev.json │ │ │ └── config.prod.json │ │ ├── favicon.png │ │ ├── pine.svg │ │ ├── pine_large.png │ │ ├── pine_logo.png │ │ ├── pine_logo.xcf │ │ ├── pine_medium.png │ │ ├── pine_small.png │ │ ├── pmed_icon.png │ │ ├── pmed_logo.png │ │ └── tree_icon_sketch.png │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── index.html │ ├── karma.conf.js │ ├── main.ts │ ├── polyfills.ts │ ├── styles.scss │ ├── test.ts │ ├── themes.scss │ ├── tsconfig.app.json │ ├── tsconfig.spec.json │ └── tslint.json │ ├── tsconfig.json │ └── tslint.json ├── generate_documentation.sh ├── pine-chart ├── .helmignore ├── Chart.yaml ├── templates │ ├── _helpers.tpl │ ├── backend-deployment.yaml │ ├── backend-service.yaml │ ├── eve-deployment.yaml │ ├── eve-service.yaml │ ├── frontend-deployment.yaml │ ├── frontend-service.yaml │ ├── ingress.yaml │ ├── nlp-deployment.yaml │ ├── pine-backend-files-pvc.yaml │ ├── pine-models-files-pvc.yaml │ ├── pine-network-policy.yaml │ ├── pine-redis-disk-pvc.yaml │ ├── redis-deployment.yaml │ ├── redis-service.yaml │ └── secrets.yaml └── values.yaml ├── pipelines ├── Dockerfile ├── Pipfile ├── Pipfile.lock ├── dev_run.sh ├── docker │ ├── docker-entrypoint.sh │ ├── empty.crt │ ├── gosu-110-amd64.bin │ └── tini-static-amd64.bin ├── docker_run.sh ├── download_resources.sh ├── pine │ ├── __init__.py │ └── pipelines │ │ ├── EveClient.py │ │ ├── NERWrapper.py │ │ ├── NER_API.py │ │ ├── RankingFunctions.py │ │ ├── __init__.py │ │ ├── app │ │ ├── __init__.py │ │ └── listener │ │ │ ├── __init__.py │ │ │ ├── main.py │ │ │ └── service_listener.py │ │ ├── corenlp_NER_pipeline.py │ │ ├── opennlp_NER_pipeline.py │ │ ├── pipeline.py │ │ ├── pmap_ner.py │ │ ├── resources │ │ └── .gitignore │ │ ├── run_service.py │ │ ├── shared │ │ ├── __init__.py │ │ ├── config.py │ │ └── transform.py │ │ ├── simpletransformers_NER_pipeline.py │ │ └── spacy_NER_pipeline.py ├── requirements.in └── test │ ├── EveClient.py │ └── TestServer.py ├── pre-commit ├── prepend.sh ├── redis ├── .gitignore ├── Dockerfile ├── conf │ ├── default-logging.conf │ └── redis.conf ├── dev_run.sh └── docker_run.sh ├── run_dev_stack.py ├── run_docker_compose.sh ├── setup_dev_stack.sh ├── setup_dev_test_data.sh ├── setup_docker_test_data.sh ├── shared ├── logging.nginx.conf ├── logging.python.dev.json ├── logging.python.json └── logging.redis.conf ├── test ├── Pipfile ├── Pipfile.lock ├── README.md ├── build.sh ├── data │ ├── collections.json │ ├── import_test_data.py │ ├── ner_dataset.csv │ ├── pipelines.json │ ├── snorkel_test.csv │ └── users.json ├── docker │ ├── cypress │ │ ├── Dockerfile │ │ └── docker_run.sh │ └── pytest │ │ ├── Dockerfile │ │ └── docker_run.sh ├── open_with_dev_stack.sh ├── run_docker_compose.sh ├── setup_test_data.sh └── tests │ ├── .gitignore │ ├── cypress.dev.json │ ├── cypress.json │ ├── cypress │ ├── integration │ │ ├── 01-sanity.spec.js │ │ ├── 02-collections.spec.js │ │ └── 03-documents.spec.js │ ├── plugins │ │ └── index.js │ ├── summarize.sh │ └── support │ │ ├── commands.js │ │ └── index.js │ ├── package-lock.json │ ├── package.json │ ├── pytest │ ├── 01_sanity_test.py │ ├── 02_collections_test.py │ ├── 03_documents_test.py │ ├── 04_pipelines_test.py │ └── common.py │ └── run_common.sh ├── update_openapi.sh └── version.sh /.dockerignore: -------------------------------------------------------------------------------- 1 | # Git 2 | **/.git/ 3 | 4 | # Docker 5 | **/docker-compose* 6 | /setup_docker_test_data.sh 7 | 8 | # Node 9 | **/node_modules/ 10 | /frontend/annotation/dist/ 11 | 12 | # Eclipse 13 | **/.project 14 | **/.pydevproject 15 | **/.settings/ 16 | 17 | # Python 18 | **/__pycache__ 19 | 20 | # Database 21 | /eve/db/ 22 | 23 | # Logs 24 | backend/pine/backend/logs 25 | pipelines/JavaNER/pmap_api/logs 26 | 27 | # Misc 28 | /local_data/ 29 | /instance/ 30 | /redis/data 31 | **/Dockerfile 32 | /results/ 33 | -------------------------------------------------------------------------------- /.env: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | REDIS_PORT=6379 4 | EVE_PORT=7510 5 | BACKEND_PORT=7520 6 | MONGO_PORT=27018 7 | 8 | EVE_DB_VOLUME=eve_db 9 | 10 | OPENNLP_ID=5babb6ee4eb7dd2c39b9671c 11 | CORENLP_ID=5babb6ee4eb7dd2c39b9671d 12 | DOCUMENT_CLASSIFIER_ID=5babb6ee4eb7dd2c39b9671b 13 | SIMPLETRANSFORMERS_ID=5babb6ee4eb7dd2c39b96720 14 | 15 | EXPOSED_SERVER_TYPE=https 16 | EXPOSED_SERVER_NAME=localhost 17 | EXPOSED_PORT=8888 18 | 19 | EXPOSED_SERVER_TYPE_PROD=http 20 | EXPOSED_SERVER_NAME_PROD=annotation 21 | EXPOSED_PORT_PROD=80 22 | 23 | # This key must be set to a string of your choice to have a secure deployment. 24 | BACKEND_SECRET_KEY= 25 | 26 | AUTH_MODULE=eve 27 | #MONGO_URI= 28 | #VEGAS_CLIENT_SECRET= 29 | 30 | # Change these to be volume names instead of paths if you want to use docker volumes 31 | # If SHARED_VOLUME is a docker volume, be sure it is populated with the contents of ./shared 32 | SHARED_VOLUME=./shared 33 | MODELS_VOLUME=./local_data/models 34 | LOGS_VOLUME=./local_data/logs 35 | DOCUMENT_IMAGE_VOLUME=./local_data/test_document_images 36 | -------------------------------------------------------------------------------- /azure-pipeline-templates/README.md: -------------------------------------------------------------------------------- 1 | © 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | * [![Prod Build Status](https://dev.azure.com/JH-PMAP/APPLICATIONS/_apis/build/status/oa-nlp_annotator/oa-nlp_annotator%20CI?branchName=master)](https://dev.azure.com/JH-PMAP/APPLICATIONS/_build/latest?definitionId=5&branchName=master) 4 | * [![Dev Build Status](https://dev.azure.com/JH-PMAP/APPLICATIONS/_apis/build/status/oa-nlp_annotator/oa-nlp_annotator%20CI?branchName=develop)](https://dev.azure.com/JH-PMAP/APPLICATIONS/_build/latest?definitionId=5&branchName=develop) 5 | -------------------------------------------------------------------------------- /backend/.dockerignore: -------------------------------------------------------------------------------- 1 | instance/ -------------------------------------------------------------------------------- /backend/.gitignore: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | # Flask 4 | /instance/ 5 | -------------------------------------------------------------------------------- /backend/Pipfile: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | [[source]] 4 | url = "https://pypi.org/simple" 5 | verify_ssl = true 6 | name = "pypi" 7 | 8 | [packages] 9 | requests = "~=2.26.0" 10 | overrides = "~=6.1.0" 11 | python-json-logger = "~=2.0.2" 12 | bcrypt = "~=3.2.0" 13 | flask = "~=2.0.1" 14 | flask-cors = "~=3.0.10" 15 | redis = "~=3.5.3" 16 | aioredis = "~=2.0.0" 17 | six = "~=1.16.0" 18 | munch = "~=2.5.0" 19 | pebble = "~=4.6.1" 20 | pydash = "~=5.0.2" 21 | pyjwt = "~=2.1.0" 22 | authlib = "~=0.15.4" 23 | matplotlib = "~=3.4.2" 24 | scipy = "~=1.7.1" 25 | tabulate = "~=0.8.9" 26 | multiprocessing-logging = "~=0.3.1" 27 | flask-httpauth = "~=4.4.0" 28 | lxml = "~=4.6.3" 29 | 30 | [dev-packages] 31 | 32 | [requires] 33 | python_version = "3.8" 34 | -------------------------------------------------------------------------------- /backend/dev_run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 3 | 4 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 5 | CONFIG_FILE="${DIR}/pine/backend/config.py" 6 | 7 | if ([[ -z ${AUTH_MODULE} ]] || [[ ${AUTH_MODULE} == "vegas" ]]) && [[ -z ${VEGAS_CLIENT_SECRET} ]]; then 8 | echo "" 9 | echo "" 10 | echo "" 11 | echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" 12 | echo "Please set VEGAS_CLIENT_SECRET environment variable" 13 | echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" 14 | echo "" 15 | echo "" 16 | echo "" 17 | exit 1 18 | fi 19 | 20 | export FLASK_APP="pine.backend" 21 | export FLASK_ENV="development" 22 | pipenv run flask run $@ 23 | -------------------------------------------------------------------------------- /backend/docker/config.py.template: -------------------------------------------------------------------------------- 1 | import logging.config 2 | import os 3 | import json 4 | 5 | bind = "0.0.0.0:${PORT}" 6 | workers = ${WORKERS} 7 | accesslog = "-" 8 | timeout = 60 9 | limit_request_line = 0 10 | 11 | if "PINE_LOGGING_CONFIG_FILE" in os.environ and os.path.isfile(os.environ["PINE_LOGGING_CONFIG_FILE"]): 12 | with open(os.environ["PINE_LOGGING_CONFIG_FILE"], "r") as f: 13 | c = json.load(f) 14 | c["disable_existing_loggers"] = True 15 | logconfig_dict = c 16 | -------------------------------------------------------------------------------- /backend/docker/empty.crt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/backend/docker/empty.crt -------------------------------------------------------------------------------- /backend/docker/wsgi.py: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | from pine.backend import create_app 4 | 5 | app = create_app() 6 | -------------------------------------------------------------------------------- /backend/docker_run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 3 | 4 | GUNICORN_CONFIG_FILE="config.py" 5 | 6 | if ([[ -z ${AUTH_MODULE} ]] || [[ ${AUTH_MODULE} == "vegas" ]]) && [[ -z ${VEGAS_CLIENT_SECRET} ]]; then 7 | echo "" 8 | echo "" 9 | echo "" 10 | echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" 11 | echo "Please set VEGAS_CLIENT_SECRET environment variable" 12 | echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" 13 | echo "" 14 | echo "" 15 | echo "" 16 | exit 1 17 | fi 18 | 19 | set -e 20 | 21 | /usr/local/bin/gunicorn --config ${GUNICORN_CONFIG_FILE} wsgi:app 22 | -------------------------------------------------------------------------------- /backend/pine/__init__.py: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | -------------------------------------------------------------------------------- /backend/pine/backend/__init__.py: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | from .app import create_app, VERSION 4 | 5 | __version__ = VERSION 6 | -------------------------------------------------------------------------------- /backend/pine/backend/admin/__init__.py: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | """This module implements all methods required for user authentication when using PINE's db authentication rather than 4 | an external Auth service""" 5 | -------------------------------------------------------------------------------- /backend/pine/backend/annotations/__init__.py: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | """This module contains the api methods required to perform and display annotations in the front-end and store the 3 | annotations in the backend""" 4 | -------------------------------------------------------------------------------- /backend/pine/backend/api/.gitignore: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | *.tar.gz 4 | -------------------------------------------------------------------------------- /backend/pine/backend/api/download_swagger_ui.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 3 | 4 | set -ex 5 | 6 | if [[ $# -eq 0 ]]; then 7 | VERSION=$(curl --silent "https://api.github.com/repos/swagger-api/swagger-ui/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/') 8 | if [[ ${VERSION} = v* ]]; then 9 | VERSION=${VERSION:1} 10 | fi 11 | else 12 | VERSION="$1" 13 | fi 14 | 15 | if [[ ! -f swagger-ui-${VERSION}.tar.gz ]]; then 16 | wget "https://github.com/swagger-api/swagger-ui/archive/refs/tags/v${VERSION}.tar.gz" -O swagger-ui-${VERSION}.tar.gz 17 | fi 18 | 19 | rm -rf swagger-ui/ 20 | tar xzf swagger-ui-${VERSION}.tar.gz swagger-ui-${VERSION}/dist/ --transform "s|swagger-ui-${VERSION}/dist|swagger-ui|" 21 | sed -i 's|https://petstore.swagger.io/v2/swagger.json|{{spec_url}}|' swagger-ui/index.html 22 | echo ${VERSION} > swagger-ui/VERSION 23 | -------------------------------------------------------------------------------- /backend/pine/backend/api/swagger-ui/VERSION: -------------------------------------------------------------------------------- 1 | 3.50.0 2 | -------------------------------------------------------------------------------- /backend/pine/backend/api/swagger-ui/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/backend/pine/backend/api/swagger-ui/favicon-16x16.png -------------------------------------------------------------------------------- /backend/pine/backend/api/swagger-ui/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/backend/pine/backend/api/swagger-ui/favicon-32x32.png -------------------------------------------------------------------------------- /backend/pine/backend/auth/__init__.py: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | from .bp import login_required, admin_required, module, get_logged_in_user, is_flat 4 | 5 | """This module implements all methods required for user authentication and user verification with eve, oauth, and 6 | vegas""" 7 | -------------------------------------------------------------------------------- /backend/pine/backend/auth/password.py: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | import base64 4 | import bcrypt 5 | import hashlib 6 | 7 | def hash_password(password: str) -> str: 8 | sha256 = hashlib.sha256(password.encode()).digest().replace(b"\x00", b"") 9 | hashed_password_bytes = bcrypt.hashpw(sha256, bcrypt.gensalt()) 10 | return base64.b64encode(hashed_password_bytes).decode() 11 | 12 | def check_password(password: str, hashed_password: str): 13 | sha256 = hashlib.sha256(password.encode()).digest().replace(b"\x00", b"") 14 | hashed_password_bytes = base64.b64decode(hashed_password.encode()) 15 | return bcrypt.checkpw(sha256, hashed_password_bytes) 16 | -------------------------------------------------------------------------------- /backend/pine/backend/collections/__init__.py: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | """This module contains the api methods required to interact with, organize, create, and display collections in the 4 | front-end and store the collections in the backend""" 5 | 6 | from .bp import user_permissions_projection, get_user_permissions, get_user_permissions_by_id, get_user_permissions_by_ids, get_overlap_ids 7 | -------------------------------------------------------------------------------- /backend/pine/backend/cors.py: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | from flask import request 4 | from flask_cors import CORS 5 | 6 | def not_found(e): 7 | # because of CORS, we weren't properly getting the 404 because of the pre-flight OPTIONS 8 | # so return 200 for pre-flight check and let the actual get/post/whatever get a 404 that can 9 | # be read with CORS 10 | if request.method.upper() == "OPTIONS": 11 | return "Page not available but this is only a pre-flight check", 200 12 | return e 13 | 14 | def init_app(app): 15 | CORS(app, supports_credentials = True) 16 | app.register_error_handler(404, not_found) 17 | 18 | -------------------------------------------------------------------------------- /backend/pine/backend/data/__init__.py: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | -------------------------------------------------------------------------------- /backend/pine/backend/data/bp.py: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | from . import users 4 | 5 | def init_app(app): 6 | app.cli.add_command(users.print_users_command) 7 | app.cli.add_command(users.set_user_password) 8 | app.cli.add_command(users.add_admin_command) 9 | app.cli.add_command(users.reset_user_passwords) 10 | 11 | -------------------------------------------------------------------------------- /backend/pine/backend/documents/__init__.py: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | from .bp import get_collection_ids_for, get_user_permissions, get_user_permissions_by_id, get_user_permissions_by_ids, sanitize_document -------------------------------------------------------------------------------- /backend/pine/backend/job_manager/__init__.py: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | -------------------------------------------------------------------------------- /backend/pine/backend/pineiaa/__init__.py: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | from ..data import service 4 | from .bp import update_iaa_report_by_collection_id 5 | -------------------------------------------------------------------------------- /backend/pine/backend/pineiaa/bratiaa/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 Tobias Kolditz 2 | 3 | from ..bratiaa.agree import compute_f1_agreement, iaa_report, AnnFile, F1Agreement, Document, input_generator 4 | from ..bratiaa.evaluation import exact_match_instance_evaluation, exact_match_token_evaluation, Annotation 5 | from ..bratiaa.utils import tokenize 6 | from .. import service 7 | -------------------------------------------------------------------------------- /backend/pine/backend/pipelines/__init__.py: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | -------------------------------------------------------------------------------- /backend/pine/backend/shared/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | # ********************************************************************** 4 | # Copyright (C) 2018 Johns Hopkins University Applied Physics Laboratory 5 | # 6 | # All Rights Reserved. 7 | # This material may only be used, modified, or reproduced by or for the 8 | # U.S. government pursuant to the license rights granted under FAR 9 | # clause 52.227-14 or DFARS clauses 252.227-7013/7014. 10 | # For any other permission, please contact the Legal Office at JHU/APL. 11 | # ********************************************************************** 12 | -------------------------------------------------------------------------------- /backend/scripts/data/add_admin.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 3 | 4 | if [[ $# -lt 3 ]]; then 5 | echo "Usage: $0 " 6 | exit 1 7 | fi 8 | 9 | ID="$1" 10 | USERNAME="$2" 11 | PASSWORD="$3" 12 | 13 | export FLASK_APP="pine.backend" 14 | export FLASK_ENV="development" 15 | pipenv run flask add-admin ${ID} ${USERNAME} ${PASSWORD} 16 | -------------------------------------------------------------------------------- /backend/scripts/data/list_users.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 3 | 4 | export FLASK_APP="pine.backend" 5 | export FLASK_ENV="development" 6 | pipenv run flask print-users 7 | -------------------------------------------------------------------------------- /backend/scripts/data/reset_user_passwords.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 3 | 4 | export FLASK_APP="pine.backend" 5 | export FLASK_ENV="development" 6 | pipenv run flask reset-user-passwords 7 | -------------------------------------------------------------------------------- /backend/scripts/data/set_user_password.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 3 | 4 | if [[ $# -lt 2 ]]; then 5 | echo "Usage: $0 " 6 | exit 1 7 | fi 8 | 9 | USERNAME="$1" 10 | PASSWORD="$2" 11 | 12 | export FLASK_APP="pine.backend" 13 | export FLASK_ENV="development" 14 | pipenv run flask set-user-password ${USERNAME} ${PASSWORD} 15 | -------------------------------------------------------------------------------- /check.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # (C) 2021 The Johns Hopkins University Applied Physics Laboratory LLC. 3 | 4 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" 5 | 6 | echo "Checking dependencies for security issues..." 7 | 8 | for MOD in backend client docs eve pipelines test; do 9 | pushd ${DIR}/${MOD} &> /dev/null 10 | echo "" 11 | echo " Checking ${MOD}..." 12 | pipenv check 13 | popd &> /dev/null 14 | done 15 | 16 | for MOD in frontend/annotation test/tests; do 17 | pushd ${DIR}/${MOD} &> /dev/null 18 | echo "" 19 | echo " Checking ${MOD}..." 20 | npm audit 21 | popd &> /dev/null 22 | done 23 | -------------------------------------------------------------------------------- /cleanup_dev_stack.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 3 | 4 | ps ax | grep 'nlp\|ng \|npm\|flask\|virtualenv\|redis\|mongo' | grep -v 'grep\|avahi' 5 | -------------------------------------------------------------------------------- /client/Pipfile: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | [[source]] 4 | url = "https://pypi.org/simple" 5 | verify_ssl = true 6 | name = "pypi" 7 | 8 | [packages] 9 | pymongo = "~=3.12.0" 10 | requests = "~=2.26.0" 11 | overrides = "~=6.1.0" 12 | python-json-logger = "~=2.0.2" 13 | bcrypt = "~=3.2.0" 14 | 15 | [dev-packages] 16 | 17 | [requires] 18 | python_version = "3.8" 19 | -------------------------------------------------------------------------------- /client/README.md: -------------------------------------------------------------------------------- 1 | © 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | ## Developer Environment 4 | 5 | Required packages: 6 | * python 3.6 7 | * pipenv 8 | 9 | `pipenv install --dev` 10 | 11 | ### Running client interactively 12 | 13 | `./interactive_dev_run.sh` will connect the client using the dev stack values and then drop into 14 | an interactive shell to allow interaction with the client. 15 | -------------------------------------------------------------------------------- /client/interactive_dev_run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 3 | 4 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" 5 | 6 | BACKEND_PORT=${BACKEND_PORT:-5000} 7 | EVE_PORT=${EVE_PORT:-5001} 8 | MONGO_PORT=${MONGO_PORT:-27018} 9 | 10 | pushd ${DIR} &> /dev/null 11 | 12 | read -r -d '' CODE << EOF 13 | import code; 14 | import sys; 15 | 16 | sys.path.append("${DIR}"); 17 | import pine.client; 18 | pine.client.setup_logging(); 19 | client = pine.client.LocalPineClient("http://localhost:${BACKEND_PORT}", "http://localhost:${EVE_PORT}", "mongodb://localhost:${MONGO_PORT}"); 20 | code.interact(banner="",exitmsg="",local=locals()) 21 | EOF 22 | 23 | echo "${CODE}" 24 | echo "" 25 | PINE_LOGGING_CONFIG_FILE=$(realpath ${DIR}/../shared/logging.python.dev.json) pipenv run python3 -c "${CODE}" 26 | 27 | popd &> /dev/null 28 | -------------------------------------------------------------------------------- /client/interactive_docker_run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 3 | 4 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" 5 | source ${DIR}/../.env 6 | 7 | export BACKEND_PORT 8 | export EVE_PORT 9 | export MONGO_PORT 10 | 11 | if ! wget http://localhost:${BACKEND_PORT}/ping -O /dev/null -o /dev/null || ! wget http://localhost:${EVE_PORT} -O /dev/null -o /dev/null || ! wget http://localhost:${MONGO_PORT} -O /dev/null -o /dev/null; then 12 | echo "Use docker-compose.test.yml when running docker compose stack." 13 | exit 1 14 | fi 15 | 16 | pushd ${DIR} &> /dev/null 17 | 18 | ./interactive_dev_run.sh 19 | 20 | popd &> /dev/null 21 | -------------------------------------------------------------------------------- /client/pine/__init__.py: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | """PINE main module. 4 | """ 5 | -------------------------------------------------------------------------------- /client/pine/client/__init__.py: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | """PINE client module. 4 | """ 5 | 6 | from .client import PineClient, LocalPineClient 7 | from .log import setup_logging 8 | from .models import CollectionBuilder 9 | -------------------------------------------------------------------------------- /docker-compose.override.yml: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | version: "3" 3 | 4 | services: 5 | 6 | backend: 7 | environment: 8 | - AUTH_MODULE=${AUTH_MODULE} 9 | - VEGAS_CLIENT_SECRET 10 | - EVE_SERVER=http://eve:${EVE_PORT} 11 | - REDIS_SERVER=redis 12 | - PINE_LOGGING_CONFIG_FILE=${PINE_LOGGING_CONFIG_FILE:-/nlp-web-app/shared/logging.python.dev.json} 13 | 14 | eve: 15 | build: 16 | args: 17 | - DB_DIR=/nlp-web-app/eve/db 18 | - MONGO_PORT=${MONGO_PORT} 19 | volumes: 20 | - ${EVE_DB_VOLUME}:/nlp-web-app/eve/db 21 | environment: 22 | - MONGO_URI= 23 | - PINE_LOGGING_CONFIG_FILE=${PINE_LOGGING_CONFIG_FILE:-/nlp-web-app/shared/logging.python.dev.json} 24 | 25 | frontend_annotation: 26 | build: 27 | args: 28 | - SERVER_TYPE=${EXPOSED_SERVER_TYPE} 29 | ports: 30 | - "${EXPOSED_PORT}:443" 31 | environment: 32 | - BACKEND_SERVER=http://backend:${BACKEND_PORT} 33 | - SERVER_NAME=${EXPOSED_SERVER_NAME} 34 | 35 | volumes: 36 | eve_db: 37 | -------------------------------------------------------------------------------- /docker-compose.prod.yml: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | version: "3" 3 | 4 | services: 5 | 6 | eve: 7 | build: 8 | args: 9 | - MONGO_URI=${MONGO_URI} 10 | - DB_DIR= 11 | 12 | frontend_annotation: 13 | container_name: ${EXPOSED_SERVER_NAME_PROD} 14 | build: 15 | args: 16 | - SERVER_TYPE=${EXPOSED_SERVER_TYPE_PROD} 17 | environment: 18 | - SERVER_NAME=${EXPOSED_SERVER_NAME_PROD} 19 | # do not add a ports section; exposed ports are managed by the external Nginx instance 20 | networks: 21 | - default 22 | - service # Allow the server to communicate with the Nginx instance 23 | 24 | networks: 25 | 26 | service: 27 | external: true 28 | -------------------------------------------------------------------------------- /docker-compose.test.yml: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | version: "3" 3 | 4 | services: 5 | 6 | backend: 7 | ports: 8 | - "${BACKEND_PORT}:${BACKEND_PORT}" 9 | 10 | eve: 11 | ports: 12 | - "${EVE_PORT}:${EVE_PORT}" 13 | - "${MONGO_PORT}:${MONGO_PORT}" 14 | 15 | volumes: 16 | eve_test_db: 17 | -------------------------------------------------------------------------------- /docs/.gitignore: -------------------------------------------------------------------------------- 1 | build/latex/pine.* 2 | !build/latex/pine.tex 3 | !build/latex/pine.pdf -------------------------------------------------------------------------------- /docs/Makefile: -------------------------------------------------------------------------------- 1 | # Minimal makefile for Sphinx documentation 2 | # 3 | 4 | # You can set these variables from the command line, and also 5 | # from the environment for the first two. 6 | SPHINXOPTS ?= 7 | SPHINXBUILD ?= sphinx-build 8 | SOURCEDIR = source 9 | BUILDDIR = build 10 | 11 | # Put it first so that "make" without argument is like "make help". 12 | help: 13 | @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 14 | 15 | .PHONY: help Makefile 16 | 17 | # Catch-all target: route all unknown targets to Sphinx using the new 18 | # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). 19 | %: Makefile 20 | @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 21 | -------------------------------------------------------------------------------- /docs/Pipfile: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | [[source]] 4 | url = "https://pypi.org/simple" 5 | verify_ssl = true 6 | name = "pypi" 7 | 8 | [packages] 9 | 10 | [dev-packages] 11 | sphinx = "~=4.1.2" 12 | sphinx-autoapi = "~=1.8.3" 13 | sphinx-autodoc-typehints = "~=1.12.0" 14 | 15 | [scripts] 16 | doc = "make singlehtml html latexpdf LATEXMKOPTS='-silent'" 17 | 18 | [requires] 19 | python_version = "3.8" 20 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | © 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | ## Developer Environment 4 | 5 | Required packages: 6 | * python 3.8 7 | * pipenv 8 | * make 9 | 10 | `pipenv install --dev` 11 | 12 | ### Generating documentation 13 | 14 | Make sure you have the proper latex packages installed: 15 | * `sudo apt install latexmk texlive-latex-recommended texlive-fonts-recommended texlive-latex-extra` 16 | 17 | Generate through pipenv: 18 | * `pipenv run doc` or use convenience script `../generate_documentation.sh` 19 | 20 | Generated documentation can then be found in `./build`. 21 | -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/admin/bp/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/admin/bp/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/admin/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/admin/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/annotations/bp/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/annotations/bp/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/annotations/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/annotations/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/api/bp/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/api/bp/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/api/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/api/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/app/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/app/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/auth/bp/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/auth/bp/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/auth/eve/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/auth/eve/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/auth/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/auth/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/auth/oauth/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/auth/oauth/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/auth/password/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/auth/password/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/auth/vegas/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/auth/vegas/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/collections/bp/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/collections/bp/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/collections/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/collections/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/config/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/config/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/cors/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/cors/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/data/bp/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/data/bp/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/data/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/data/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/data/service/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/data/service/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/data/users/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/data/users/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/documents/bp/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/documents/bp/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/documents/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/documents/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/job_manager/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/job_manager/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/job_manager/service/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/job_manager/service/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/log/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/log/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/models/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/models/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/pineiaa/bp/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/pineiaa/bp/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/pineiaa/bratiaa/agree/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/pineiaa/bratiaa/agree/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/pineiaa/bratiaa/agree_cli/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/pineiaa/bratiaa/agree_cli/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/pineiaa/bratiaa/evaluation/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/pineiaa/bratiaa/evaluation/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/pineiaa/bratiaa/iaa_service/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/pineiaa/bratiaa/iaa_service/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/pineiaa/bratiaa/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/pineiaa/bratiaa/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/pineiaa/bratiaa/utils/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/pineiaa/bratiaa/utils/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/pineiaa/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/pineiaa/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/pipelines/bp/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/pipelines/bp/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/pipelines/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/pipelines/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/shared/config/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/shared/config/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/shared/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/shared/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/backend/shared/transform/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/backend/shared/transform/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/client/client/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/client/client/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/client/exceptions/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/client/exceptions/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/client/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/client/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/client/log/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/client/log/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/client/models/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/client/models/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/client/password/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/client/password/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/pipelines/EveClient/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/pipelines/EveClient/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/pipelines/NERWrapper/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/pipelines/NERWrapper/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/pipelines/NER_API/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/pipelines/NER_API/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/pipelines/RankingFunctions/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/pipelines/RankingFunctions/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/pipelines/app/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/pipelines/app/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/pipelines/app/listener/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/pipelines/app/listener/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/pipelines/app/listener/main/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/pipelines/app/listener/main/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/pipelines/app/listener/service_listener/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/pipelines/app/listener/service_listener/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/pipelines/corenlp_NER_pipeline/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/pipelines/corenlp_NER_pipeline/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/pipelines/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/pipelines/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/pipelines/opennlp_NER_pipeline/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/pipelines/opennlp_NER_pipeline/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/pipelines/pipeline/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/pipelines/pipeline/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/pipelines/pmap_ner/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/pipelines/pmap_ner/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/pipelines/run_service/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/pipelines/run_service/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/pipelines/shared/config/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/pipelines/shared/config/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/pipelines/shared/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/pipelines/shared/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/pipelines/shared/transform/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/pipelines/shared/transform/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/autoapi/pine/pipelines/spacy_NER_pipeline/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/autoapi/pine/pipelines/spacy_NER_pipeline/index.doctree -------------------------------------------------------------------------------- /docs/build/doctrees/environment.pickle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/environment.pickle -------------------------------------------------------------------------------- /docs/build/doctrees/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/doctrees/index.doctree -------------------------------------------------------------------------------- /docs/build/html/.buildinfo: -------------------------------------------------------------------------------- 1 | # Sphinx build info version 1 2 | # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. 3 | config: b189e510399fcedb671fe9781eef3b2b 4 | tags: 645f666f9bcd5a90fca523b33c5a78b7 5 | -------------------------------------------------------------------------------- /docs/build/html/_sources/autoapi/index.rst.txt: -------------------------------------------------------------------------------- 1 | API Reference 2 | ============= 3 | 4 | This page contains auto-generated API reference documentation [#f1]_. 5 | 6 | .. toctree:: 7 | :titlesonly: 8 | 9 | /autoapi/pine/index 10 | 11 | .. [#f1] Created with `sphinx-autoapi `_ -------------------------------------------------------------------------------- /docs/build/html/_sources/autoapi/pine/backend/admin/index.rst.txt: -------------------------------------------------------------------------------- 1 | :py:mod:`pine.backend.admin` 2 | ============================ 3 | 4 | .. py:module:: pine.backend.admin 5 | 6 | .. autoapi-nested-parse:: 7 | 8 | This module implements all methods required for user authentication when using PINE's db authentication rather than 9 | an external Auth service 10 | 11 | 12 | 13 | Submodules 14 | ---------- 15 | .. toctree:: 16 | :titlesonly: 17 | :maxdepth: 1 18 | 19 | bp/index.rst 20 | 21 | 22 | -------------------------------------------------------------------------------- /docs/build/html/_sources/autoapi/pine/backend/annotations/index.rst.txt: -------------------------------------------------------------------------------- 1 | :py:mod:`pine.backend.annotations` 2 | ================================== 3 | 4 | .. py:module:: pine.backend.annotations 5 | 6 | .. autoapi-nested-parse:: 7 | 8 | This module contains the api methods required to perform and display annotations in the front-end and store the 9 | annotations in the backend 10 | 11 | 12 | 13 | Submodules 14 | ---------- 15 | .. toctree:: 16 | :titlesonly: 17 | :maxdepth: 1 18 | 19 | bp/index.rst 20 | 21 | 22 | -------------------------------------------------------------------------------- /docs/build/html/_sources/autoapi/pine/backend/api/bp/index.rst.txt: -------------------------------------------------------------------------------- 1 | :py:mod:`pine.backend.api.bp` 2 | ============================= 3 | 4 | .. py:module:: pine.backend.api.bp 5 | 6 | 7 | Module Contents 8 | --------------- 9 | 10 | 11 | Functions 12 | ~~~~~~~~~ 13 | 14 | .. autoapisummary:: 15 | 16 | pine.backend.api.bp.openapi_spec 17 | pine.backend.api.bp.swagger_ui_index 18 | pine.backend.api.bp.swagger_ui 19 | pine.backend.api.bp.init_app 20 | 21 | 22 | 23 | Attributes 24 | ~~~~~~~~~~ 25 | 26 | .. autoapisummary:: 27 | 28 | pine.backend.api.bp.bp 29 | pine.backend.api.bp.LOGGER 30 | 31 | 32 | .. py:data:: bp 33 | 34 | 35 | 36 | 37 | .. py:data:: LOGGER 38 | 39 | 40 | 41 | 42 | .. py:function:: openapi_spec() 43 | 44 | 45 | .. py:function:: swagger_ui_index() 46 | 47 | 48 | .. py:function:: swagger_ui(file: str) 49 | 50 | 51 | .. py:function:: init_app(app) 52 | 53 | 54 | -------------------------------------------------------------------------------- /docs/build/html/_sources/autoapi/pine/backend/api/index.rst.txt: -------------------------------------------------------------------------------- 1 | :py:mod:`pine.backend.api` 2 | ========================== 3 | 4 | .. py:module:: pine.backend.api 5 | 6 | .. autoapi-nested-parse:: 7 | 8 | This module implements all methods required for SwaggerUI to run on the 9 | backend of PINE. 10 | 11 | 12 | 13 | Submodules 14 | ---------- 15 | .. toctree:: 16 | :titlesonly: 17 | :maxdepth: 1 18 | 19 | bp/index.rst 20 | 21 | 22 | -------------------------------------------------------------------------------- /docs/build/html/_sources/autoapi/pine/backend/app/index.rst.txt: -------------------------------------------------------------------------------- 1 | :py:mod:`pine.backend.app` 2 | ========================== 3 | 4 | .. py:module:: pine.backend.app 5 | 6 | 7 | Module Contents 8 | --------------- 9 | 10 | 11 | Functions 12 | ~~~~~~~~~ 13 | 14 | .. autoapisummary:: 15 | 16 | pine.backend.app.handle_error 17 | pine.backend.app.handle_uncaught_exception 18 | pine.backend.app.create_app 19 | 20 | 21 | 22 | Attributes 23 | ~~~~~~~~~~ 24 | 25 | .. autoapisummary:: 26 | 27 | pine.backend.app.VERSION 28 | pine.backend.app.LOGGER 29 | 30 | 31 | .. py:data:: VERSION 32 | 33 | 34 | 35 | 36 | .. py:data:: LOGGER 37 | 38 | 39 | 40 | 41 | .. py:function:: handle_error(e) 42 | 43 | 44 | .. py:function:: handle_uncaught_exception(e) 45 | 46 | 47 | .. py:function:: create_app(test_config=None) 48 | 49 | 50 | -------------------------------------------------------------------------------- /docs/build/html/_sources/autoapi/pine/backend/auth/index.rst.txt: -------------------------------------------------------------------------------- 1 | :py:mod:`pine.backend.auth` 2 | =========================== 3 | 4 | .. py:module:: pine.backend.auth 5 | 6 | 7 | Submodules 8 | ---------- 9 | .. toctree:: 10 | :titlesonly: 11 | :maxdepth: 1 12 | 13 | bp/index.rst 14 | eve/index.rst 15 | oauth/index.rst 16 | password/index.rst 17 | vegas/index.rst 18 | 19 | 20 | Package Contents 21 | ---------------- 22 | 23 | 24 | Functions 25 | ~~~~~~~~~ 26 | 27 | .. autoapisummary:: 28 | 29 | pine.backend.auth.login_required 30 | pine.backend.auth.admin_required 31 | pine.backend.auth.get_logged_in_user 32 | pine.backend.auth.is_flat 33 | 34 | 35 | 36 | Attributes 37 | ~~~~~~~~~~ 38 | 39 | .. autoapisummary:: 40 | 41 | pine.backend.auth.module 42 | 43 | 44 | .. py:function:: login_required(view) 45 | 46 | 47 | .. py:function:: admin_required(view) 48 | 49 | 50 | .. py:data:: module 51 | 52 | 53 | 54 | 55 | .. py:function:: get_logged_in_user() 56 | 57 | 58 | .. py:function:: is_flat() 59 | 60 | 61 | -------------------------------------------------------------------------------- /docs/build/html/_sources/autoapi/pine/backend/auth/password/index.rst.txt: -------------------------------------------------------------------------------- 1 | :py:mod:`pine.backend.auth.password` 2 | ==================================== 3 | 4 | .. py:module:: pine.backend.auth.password 5 | 6 | 7 | Module Contents 8 | --------------- 9 | 10 | 11 | Functions 12 | ~~~~~~~~~ 13 | 14 | .. autoapisummary:: 15 | 16 | pine.backend.auth.password.hash_password 17 | pine.backend.auth.password.check_password 18 | 19 | 20 | 21 | .. py:function:: hash_password(password: str) -> str 22 | 23 | 24 | .. py:function:: check_password(password: str, hashed_password: str) 25 | 26 | 27 | -------------------------------------------------------------------------------- /docs/build/html/_sources/autoapi/pine/backend/auth/vegas/index.rst.txt: -------------------------------------------------------------------------------- 1 | :py:mod:`pine.backend.auth.vegas` 2 | ================================= 3 | 4 | .. py:module:: pine.backend.auth.vegas 5 | 6 | 7 | Module Contents 8 | --------------- 9 | 10 | Classes 11 | ~~~~~~~ 12 | 13 | .. autoapisummary:: 14 | 15 | pine.backend.auth.vegas.VegasAuthModule 16 | 17 | 18 | 19 | 20 | .. py:class:: VegasAuthModule(app, bp) 21 | 22 | Bases: :py:obj:`pine.backend.auth.oauth.OAuthModule` 23 | 24 | .. py:method:: register_oauth(self, oauth, app) 25 | 26 | 27 | .. py:method:: get_login_form_button_text(self) 28 | 29 | 30 | .. py:method:: make_user(self, decoded: dict) -> pine.backend.auth.oauth.OAuthUser 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /docs/build/html/_sources/autoapi/pine/backend/config/index.rst.txt: -------------------------------------------------------------------------------- 1 | :py:mod:`pine.backend.config` 2 | ============================= 3 | 4 | .. py:module:: pine.backend.config 5 | 6 | 7 | Module Contents 8 | --------------- 9 | 10 | .. py:data:: SECRET_KEY 11 | :annotation: = Cq13XII=% 12 | 13 | 14 | 15 | .. py:data:: DEBUG 16 | :annotation: = True 17 | 18 | 19 | 20 | .. py:data:: EVE_SERVER 21 | 22 | 23 | 24 | 25 | .. py:data:: REDIS_SERVER 26 | 27 | 28 | 29 | 30 | .. py:data:: REDIS_PORT 31 | 32 | 33 | 34 | 35 | .. py:data:: AUTH_MODULE 36 | 37 | 38 | 39 | 40 | .. py:data:: AUTH_MODULE 41 | :annotation: = vegas 42 | 43 | 44 | 45 | .. py:data:: VEGAS_SERVER 46 | 47 | 48 | 49 | 50 | .. py:data:: VEGAS_CLIENT_ID 51 | 52 | 53 | 54 | 55 | .. py:data:: VEGAS_CLIENT_SECRET 56 | 57 | 58 | 59 | 60 | .. py:data:: DOCUMENT_IMAGE_DIR 61 | 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /docs/build/html/_sources/autoapi/pine/backend/cors/index.rst.txt: -------------------------------------------------------------------------------- 1 | :py:mod:`pine.backend.cors` 2 | =========================== 3 | 4 | .. py:module:: pine.backend.cors 5 | 6 | 7 | Module Contents 8 | --------------- 9 | 10 | 11 | Functions 12 | ~~~~~~~~~ 13 | 14 | .. autoapisummary:: 15 | 16 | pine.backend.cors.not_found 17 | pine.backend.cors.init_app 18 | 19 | 20 | 21 | .. py:function:: not_found(e) 22 | 23 | 24 | .. py:function:: init_app(app) 25 | 26 | 27 | -------------------------------------------------------------------------------- /docs/build/html/_sources/autoapi/pine/backend/data/bp/index.rst.txt: -------------------------------------------------------------------------------- 1 | :py:mod:`pine.backend.data.bp` 2 | ============================== 3 | 4 | .. py:module:: pine.backend.data.bp 5 | 6 | 7 | Module Contents 8 | --------------- 9 | 10 | 11 | Functions 12 | ~~~~~~~~~ 13 | 14 | .. autoapisummary:: 15 | 16 | pine.backend.data.bp.init_app 17 | 18 | 19 | 20 | .. py:function:: init_app(app) 21 | 22 | 23 | -------------------------------------------------------------------------------- /docs/build/html/_sources/autoapi/pine/backend/data/index.rst.txt: -------------------------------------------------------------------------------- 1 | :py:mod:`pine.backend.data` 2 | =========================== 3 | 4 | .. py:module:: pine.backend.data 5 | 6 | 7 | Submodules 8 | ---------- 9 | .. toctree:: 10 | :titlesonly: 11 | :maxdepth: 1 12 | 13 | bp/index.rst 14 | service/index.rst 15 | users/index.rst 16 | 17 | 18 | -------------------------------------------------------------------------------- /docs/build/html/_sources/autoapi/pine/backend/job_manager/index.rst.txt: -------------------------------------------------------------------------------- 1 | :py:mod:`pine.backend.job_manager` 2 | ================================== 3 | 4 | .. py:module:: pine.backend.job_manager 5 | 6 | 7 | Submodules 8 | ---------- 9 | .. toctree:: 10 | :titlesonly: 11 | :maxdepth: 1 12 | 13 | service/index.rst 14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/build/html/_sources/autoapi/pine/backend/pineiaa/bratiaa/agree_cli/index.rst.txt: -------------------------------------------------------------------------------- 1 | :py:mod:`pine.backend.pineiaa.bratiaa.agree_cli` 2 | ================================================ 3 | 4 | .. py:module:: pine.backend.pineiaa.bratiaa.agree_cli 5 | 6 | 7 | Module Contents 8 | --------------- 9 | 10 | 11 | Functions 12 | ~~~~~~~~~ 13 | 14 | .. autoapisummary:: 15 | 16 | pine.backend.pineiaa.bratiaa.agree_cli.parse_args 17 | pine.backend.pineiaa.bratiaa.agree_cli.main 18 | 19 | 20 | 21 | .. py:function:: parse_args() 22 | 23 | 24 | .. py:function:: main() 25 | 26 | 27 | -------------------------------------------------------------------------------- /docs/build/html/_sources/autoapi/pine/backend/pineiaa/index.rst.txt: -------------------------------------------------------------------------------- 1 | :py:mod:`pine.backend.pineiaa` 2 | ============================== 3 | 4 | .. py:module:: pine.backend.pineiaa 5 | 6 | 7 | Subpackages 8 | ----------- 9 | .. toctree:: 10 | :titlesonly: 11 | :maxdepth: 3 12 | 13 | bratiaa/index.rst 14 | 15 | 16 | Submodules 17 | ---------- 18 | .. toctree:: 19 | :titlesonly: 20 | :maxdepth: 1 21 | 22 | bp/index.rst 23 | 24 | 25 | Package Contents 26 | ---------------- 27 | 28 | 29 | Functions 30 | ~~~~~~~~~ 31 | 32 | .. autoapisummary:: 33 | 34 | pine.backend.pineiaa.update_iaa_report_by_collection_id 35 | 36 | 37 | 38 | .. py:function:: update_iaa_report_by_collection_id(collection_id: str) -> bool 39 | 40 | 41 | -------------------------------------------------------------------------------- /docs/build/html/_sources/autoapi/pine/backend/pipelines/index.rst.txt: -------------------------------------------------------------------------------- 1 | :py:mod:`pine.backend.pipelines` 2 | ================================ 3 | 4 | .. py:module:: pine.backend.pipelines 5 | 6 | 7 | Submodules 8 | ---------- 9 | .. toctree:: 10 | :titlesonly: 11 | :maxdepth: 1 12 | 13 | bp/index.rst 14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/build/html/_sources/autoapi/pine/backend/shared/index.rst.txt: -------------------------------------------------------------------------------- 1 | :py:mod:`pine.backend.shared` 2 | ============================= 3 | 4 | .. py:module:: pine.backend.shared 5 | 6 | 7 | Submodules 8 | ---------- 9 | .. toctree:: 10 | :titlesonly: 11 | :maxdepth: 1 12 | 13 | config/index.rst 14 | transform/index.rst 15 | 16 | 17 | -------------------------------------------------------------------------------- /docs/build/html/_sources/autoapi/pine/backend/shared/transform/index.rst.txt: -------------------------------------------------------------------------------- 1 | :py:mod:`pine.backend.shared.transform` 2 | ======================================= 3 | 4 | .. py:module:: pine.backend.shared.transform 5 | 6 | 7 | Module Contents 8 | --------------- 9 | 10 | 11 | Functions 12 | ~~~~~~~~~ 13 | 14 | .. autoapisummary:: 15 | 16 | pine.backend.shared.transform.transform_module_by_config 17 | 18 | 19 | 20 | .. py:function:: transform_module_by_config(module_ref, config_ref, config_prefix=None) 21 | 22 | Transforms a given module's properties based on ConfigBuilder Values. 23 | The prefix can be used to avoid blindy changing values and target a subset of matching values in config_ref. 24 | :type module_ref: ModuleType 25 | :type config_ref: dict 26 | :type config_prefix: str 27 | 28 | 29 | -------------------------------------------------------------------------------- /docs/build/html/_sources/autoapi/pine/client/log/index.rst.txt: -------------------------------------------------------------------------------- 1 | :py:mod:`pine.client.log` 2 | ========================= 3 | 4 | .. py:module:: pine.client.log 5 | 6 | 7 | Module Contents 8 | --------------- 9 | 10 | 11 | Functions 12 | ~~~~~~~~~ 13 | 14 | .. autoapisummary:: 15 | 16 | pine.client.log.setup_logging 17 | 18 | 19 | 20 | Attributes 21 | ~~~~~~~~~~ 22 | 23 | .. autoapisummary:: 24 | 25 | pine.client.log.CONFIG_FILE_ENV 26 | 27 | 28 | .. py:data:: CONFIG_FILE_ENV 29 | :annotation: :str = PINE_LOGGING_CONFIG_FILE 30 | 31 | The environment variable that optionally contains the file to use for logging configuration. 32 | 33 | :type: str 34 | 35 | 36 | .. py:function:: setup_logging() 37 | 38 | Sets up logging, if configured to do so. 39 | 40 | The environment variable named by :py:data:`CONFIG_FILE_ENV` is checked and, if present, is 41 | passed to :py:func:`logging.config.dictConfig`. 42 | 43 | 44 | -------------------------------------------------------------------------------- /docs/build/html/_sources/autoapi/pine/client/password/index.rst.txt: -------------------------------------------------------------------------------- 1 | :py:mod:`pine.client.password` 2 | ============================== 3 | 4 | .. py:module:: pine.client.password 5 | 6 | 7 | Module Contents 8 | --------------- 9 | 10 | 11 | Functions 12 | ~~~~~~~~~ 13 | 14 | .. autoapisummary:: 15 | 16 | pine.client.password.hash_password 17 | pine.client.password.check_password 18 | 19 | 20 | 21 | .. py:function:: hash_password(password: str) -> str 22 | 23 | Hashes the given password for use in user object. 24 | 25 | :param password: password 26 | :type password: str 27 | 28 | :returns: hashed password 29 | :rtype: str 30 | 31 | 32 | .. py:function:: check_password(password: str, hashed_password: str) -> str 33 | 34 | Checks the given password against the given hash. 35 | 36 | :param password: password to check 37 | :type password: str 38 | :param hashed_password: hashed password to check against 39 | :type hashed_password: str 40 | 41 | :returns: whether the password matches the hash 42 | :rtype: bool 43 | 44 | 45 | -------------------------------------------------------------------------------- /docs/build/html/_sources/autoapi/pine/index.rst.txt: -------------------------------------------------------------------------------- 1 | :py:mod:`pine` 2 | ============== 3 | 4 | .. py:module:: pine 5 | 6 | 7 | Subpackages 8 | ----------- 9 | .. toctree:: 10 | :titlesonly: 11 | :maxdepth: 3 12 | 13 | backend/index.rst 14 | client/index.rst 15 | pipelines/index.rst 16 | 17 | 18 | -------------------------------------------------------------------------------- /docs/build/html/_sources/autoapi/pine/pipelines/app/index.rst.txt: -------------------------------------------------------------------------------- 1 | :py:mod:`pine.pipelines.app` 2 | ============================ 3 | 4 | .. py:module:: pine.pipelines.app 5 | 6 | 7 | Subpackages 8 | ----------- 9 | .. toctree:: 10 | :titlesonly: 11 | :maxdepth: 3 12 | 13 | listener/index.rst 14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/build/html/_sources/autoapi/pine/pipelines/app/listener/index.rst.txt: -------------------------------------------------------------------------------- 1 | :py:mod:`pine.pipelines.app.listener` 2 | ===================================== 3 | 4 | .. py:module:: pine.pipelines.app.listener 5 | 6 | 7 | Submodules 8 | ---------- 9 | .. toctree:: 10 | :titlesonly: 11 | :maxdepth: 1 12 | 13 | main/index.rst 14 | service_listener/index.rst 15 | 16 | 17 | -------------------------------------------------------------------------------- /docs/build/html/_sources/autoapi/pine/pipelines/app/listener/main/index.rst.txt: -------------------------------------------------------------------------------- 1 | :py:mod:`pine.pipelines.app.listener.main` 2 | ========================================== 3 | 4 | .. py:module:: pine.pipelines.app.listener.main 5 | 6 | 7 | Module Contents 8 | --------------- 9 | 10 | 11 | Functions 12 | ~~~~~~~~~ 13 | 14 | .. autoapisummary:: 15 | 16 | pine.pipelines.app.listener.main.backoff_hdlr 17 | pine.pipelines.app.listener.main.setup_logging 18 | pine.pipelines.app.listener.main.run 19 | 20 | 21 | 22 | .. py:function:: backoff_hdlr(details) 23 | 24 | 25 | .. py:function:: setup_logging() 26 | 27 | 28 | .. py:function:: run() 29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/build/html/_sources/autoapi/pine/pipelines/index.rst.txt: -------------------------------------------------------------------------------- 1 | :py:mod:`pine.pipelines` 2 | ======================== 3 | 4 | .. py:module:: pine.pipelines 5 | 6 | 7 | Subpackages 8 | ----------- 9 | .. toctree:: 10 | :titlesonly: 11 | :maxdepth: 3 12 | 13 | app/index.rst 14 | shared/index.rst 15 | 16 | 17 | Submodules 18 | ---------- 19 | .. toctree:: 20 | :titlesonly: 21 | :maxdepth: 1 22 | 23 | EveClient/index.rst 24 | NERWrapper/index.rst 25 | NER_API/index.rst 26 | RankingFunctions/index.rst 27 | corenlp_NER_pipeline/index.rst 28 | opennlp_NER_pipeline/index.rst 29 | pipeline/index.rst 30 | pmap_ner/index.rst 31 | run_service/index.rst 32 | spacy_NER_pipeline/index.rst 33 | 34 | 35 | -------------------------------------------------------------------------------- /docs/build/html/_sources/autoapi/pine/pipelines/run_service/index.rst.txt: -------------------------------------------------------------------------------- 1 | :py:mod:`pine.pipelines.run_service` 2 | ==================================== 3 | 4 | .. py:module:: pine.pipelines.run_service 5 | 6 | 7 | -------------------------------------------------------------------------------- /docs/build/html/_sources/autoapi/pine/pipelines/shared/index.rst.txt: -------------------------------------------------------------------------------- 1 | :py:mod:`pine.pipelines.shared` 2 | =============================== 3 | 4 | .. py:module:: pine.pipelines.shared 5 | 6 | 7 | Submodules 8 | ---------- 9 | .. toctree:: 10 | :titlesonly: 11 | :maxdepth: 1 12 | 13 | config/index.rst 14 | transform/index.rst 15 | 16 | 17 | -------------------------------------------------------------------------------- /docs/build/html/_sources/autoapi/pine/pipelines/shared/transform/index.rst.txt: -------------------------------------------------------------------------------- 1 | :py:mod:`pine.pipelines.shared.transform` 2 | ========================================= 3 | 4 | .. py:module:: pine.pipelines.shared.transform 5 | 6 | 7 | Module Contents 8 | --------------- 9 | 10 | 11 | Functions 12 | ~~~~~~~~~ 13 | 14 | .. autoapisummary:: 15 | 16 | pine.pipelines.shared.transform.transform_module_by_config 17 | 18 | 19 | 20 | .. py:function:: transform_module_by_config(module_ref, config_ref, config_prefix=None) 21 | 22 | Transforms a given module's properties based on ConfigBuilder Values. 23 | The prefix can be used to avoid blindy changing values and target a subset of matching values in config_ref. 24 | :type module_ref: ModuleType 25 | :type config_ref: dict 26 | :type config_prefix: str 27 | 28 | 29 | -------------------------------------------------------------------------------- /docs/build/html/_sources/index.rst.txt: -------------------------------------------------------------------------------- 1 | .. 2 | (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 3 | 4 | Welcome to pine's documentation! 5 | ======================================= 6 | 7 | .. toctree:: 8 | :maxdepth: 2 9 | :caption: Contents: 10 | 11 | autoapi/index 12 | 13 | Indices and tables 14 | ================== 15 | 16 | * :ref:`genindex` 17 | * :ref:`modindex` 18 | * :ref:`search` 19 | -------------------------------------------------------------------------------- /docs/build/html/_static/background_b01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/html/_static/background_b01.png -------------------------------------------------------------------------------- /docs/build/html/_static/documentation_options.js: -------------------------------------------------------------------------------- 1 | var DOCUMENTATION_OPTIONS = { 2 | URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), 3 | VERSION: '', 4 | LANGUAGE: 'None', 5 | COLLAPSE_INDEX: false, 6 | BUILDER: 'html', 7 | FILE_SUFFIX: '.html', 8 | LINK_SUFFIX: '.html', 9 | HAS_SOURCE: true, 10 | SOURCELINK_SUFFIX: '.txt', 11 | NAVIGATION_WITH_KEYS: false 12 | }; -------------------------------------------------------------------------------- /docs/build/html/_static/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/html/_static/file.png -------------------------------------------------------------------------------- /docs/build/html/_static/graphviz.css: -------------------------------------------------------------------------------- 1 | /* 2 | * graphviz.css 3 | * ~~~~~~~~~~~~ 4 | * 5 | * Sphinx stylesheet -- graphviz extension. 6 | * 7 | * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. 8 | * :license: BSD, see LICENSE for details. 9 | * 10 | */ 11 | 12 | img.graphviz { 13 | border: 0; 14 | max-width: 100%; 15 | } 16 | 17 | object.graphviz { 18 | max-width: 100%; 19 | } 20 | -------------------------------------------------------------------------------- /docs/build/html/_static/minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/html/_static/minus.png -------------------------------------------------------------------------------- /docs/build/html/_static/plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/html/_static/plus.png -------------------------------------------------------------------------------- /docs/build/html/objects.inv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/html/objects.inv -------------------------------------------------------------------------------- /docs/build/latex/LatinRules.xdy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/latex/LatinRules.xdy -------------------------------------------------------------------------------- /docs/build/latex/_static/graphviz.css: -------------------------------------------------------------------------------- 1 | /* 2 | * graphviz.css 3 | * ~~~~~~~~~~~~ 4 | * 5 | * Sphinx stylesheet -- graphviz extension. 6 | * 7 | * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. 8 | * :license: BSD, see LICENSE for details. 9 | * 10 | */ 11 | 12 | img.graphviz { 13 | border: 0; 14 | max-width: 100%; 15 | } 16 | 17 | object.graphviz { 18 | max-width: 100%; 19 | } 20 | -------------------------------------------------------------------------------- /docs/build/latex/latexmkjarc: -------------------------------------------------------------------------------- 1 | $latex = 'pdflatex ' . $ENV{'LATEXOPTS'} . ' -kanji=utf8 %O %S'; 2 | $dvipdf = 'dvipdfmx %O -o %D %S'; 3 | $makeindex = 'internal mendex %S %B %D'; 4 | sub mendex { 5 | my ($source, $basename, $destination) = @_; 6 | my $dictfile = $basename . ".dic"; 7 | unlink($destination); 8 | system("mendex", "-U", "-f", "-d", $dictfile, "-s", "python.ist", $source); 9 | if ($? > 0) { 10 | print("mendex exited with error code $? (ignored)\n"); 11 | } 12 | if (!-e $destination) { 13 | # create an empty .ind file if nothing 14 | open(FH, ">" . $destination); 15 | close(FH); 16 | } 17 | return 0; 18 | } 19 | add_cus_dep( "glo", "gls", 0, "makeglo" ); 20 | sub makeglo { 21 | return system( "mendex -J -f -s gglo.ist -o '$_[0].gls' '$_[0].glo'" ); 22 | } -------------------------------------------------------------------------------- /docs/build/latex/latexmkrc: -------------------------------------------------------------------------------- 1 | $latex = 'latex ' . $ENV{'LATEXOPTS'} . ' %O %S'; 2 | $pdflatex = 'pdflatex ' . $ENV{'LATEXOPTS'} . ' %O %S'; 3 | $lualatex = 'lualatex ' . $ENV{'LATEXOPTS'} . ' %O %S'; 4 | $xelatex = 'xelatex --no-pdf ' . $ENV{'LATEXOPTS'} . ' %O %S'; 5 | $makeindex = 'makeindex -s python.ist %O -o %D %S'; 6 | add_cus_dep( "glo", "gls", 0, "makeglo" ); 7 | sub makeglo { 8 | return system( "makeindex -s gglo.ist -o '$_[0].gls' '$_[0].glo'" ); 9 | } -------------------------------------------------------------------------------- /docs/build/latex/make.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | 3 | REM Command file for Sphinx documentation 4 | 5 | pushd %~dp0 6 | 7 | set PDFLATEX=latexmk -pdf -dvi- -ps- 8 | 9 | set "LATEXOPTS= " 10 | 11 | if "%1" == "" goto all-pdf 12 | 13 | if "%1" == "all-pdf" ( 14 | :all-pdf 15 | for %%i in (*.tex) do ( 16 | %PDFLATEX% %LATEXMKOPTS% %%i 17 | ) 18 | goto end 19 | ) 20 | 21 | if "%1" == "all-pdf-ja" ( 22 | goto all-pdf 23 | ) 24 | 25 | if "%1" == "clean" ( 26 | del /q /s *.dvi *.log *.ind *.aux *.toc *.syn *.idx *.out *.ilg *.pla *.ps *.tar *.tar.gz *.tar.bz2 *.tar.xz *.fls *.fdb_latexmk 27 | goto end 28 | ) 29 | 30 | :end 31 | popd -------------------------------------------------------------------------------- /docs/build/latex/pine.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/latex/pine.pdf -------------------------------------------------------------------------------- /docs/build/latex/python.ist: -------------------------------------------------------------------------------- 1 | line_max 100 2 | headings_flag 1 3 | heading_prefix " \\bigletter " 4 | 5 | preamble "\\begin{sphinxtheindex} 6 | \\let\\bigletter\\sphinxstyleindexlettergroup 7 | \\let\\spxpagem \\sphinxstyleindexpagemain 8 | \\let\\spxentry \\sphinxstyleindexentry 9 | \\let\\spxextra \\sphinxstyleindexextra 10 | 11 | " 12 | 13 | postamble "\n\n\\end{sphinxtheindex}\n" 14 | 15 | symhead_positive "{\\sphinxsymbolsname}" 16 | numhead_positive "{\\sphinxnumbersname}" 17 | -------------------------------------------------------------------------------- /docs/build/latex/sphinxlatexcontainers.sty: -------------------------------------------------------------------------------- 1 | %% CONTAINER DIRECTIVES 2 | % 3 | % change this info string if making any custom modification 4 | \ProvidesFile{sphinxlatexcontainers.sty}[2021/05/03 containers] 5 | 6 | % The purpose of this file is to provide a dummy environment sphinxclass which 7 | % will be inserted for each class in each container directive. The class name 8 | % will be passed as the argument to the environment. 9 | % 10 | % For a class foo, the user can define customised handling of that class by 11 | % defining the sphinxclassfoo LaTeX environment. 12 | 13 | \newenvironment{sphinxuseclass}[1]{% 14 | \def\sphinxClassFunctionName{sphinxclass#1}% 15 | \ltx@ifundefined{\sphinxClassFunctionName}% 16 | {}% undefined so do nothing 17 | {\expandafter\begin\expandafter{\sphinxClassFunctionName}}% 18 | }{% 19 | \ltx@ifundefined{\sphinxClassFunctionName}% 20 | {}% we did nothing so we keep doing nothing 21 | {\expandafter\end\expandafter{\sphinxClassFunctionName}}% 22 | }% 23 | -------------------------------------------------------------------------------- /docs/build/latex/sphinxmessages.sty: -------------------------------------------------------------------------------- 1 | % 2 | % sphinxmessages.sty 3 | % 4 | % message resources for Sphinx 5 | % 6 | \ProvidesPackage{sphinxmessages}[2019/01/04 v2.0 Localized LaTeX macros (Sphinx team)] 7 | 8 | \renewcommand{\literalblockcontinuedname}{continued from previous page} 9 | \renewcommand{\literalblockcontinuesname}{continues on next page} 10 | \renewcommand{\sphinxnonalphabeticalgroupname}{Non\sphinxhyphen{}alphabetical} 11 | \renewcommand{\sphinxsymbolsname}{Symbols} 12 | \renewcommand{\sphinxnumbersname}{Numbers} 13 | \def\pageautorefname{page} 14 | 15 | \addto\captionsenglish{\renewcommand{\figurename}{Fig.\@{} }} 16 | \def\fnum@figure{\figurename\thefigure{}} 17 | 18 | \addto\captionsenglish{\renewcommand{\tablename}{Table }} 19 | \def\fnum@table{\tablename\thetable{}} 20 | 21 | \addto\captionsenglish{\renewcommand{\literalblockname}{Listing}} -------------------------------------------------------------------------------- /docs/build/singlehtml/.buildinfo: -------------------------------------------------------------------------------- 1 | # Sphinx build info version 1 2 | # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. 3 | config: b189e510399fcedb671fe9781eef3b2b 4 | tags: 33eac41acc08762151beb8f3b7b86c8f 5 | -------------------------------------------------------------------------------- /docs/build/singlehtml/_static/background_b01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/singlehtml/_static/background_b01.png -------------------------------------------------------------------------------- /docs/build/singlehtml/_static/documentation_options.js: -------------------------------------------------------------------------------- 1 | var DOCUMENTATION_OPTIONS = { 2 | URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), 3 | VERSION: '', 4 | LANGUAGE: 'None', 5 | COLLAPSE_INDEX: false, 6 | BUILDER: 'singlehtml', 7 | FILE_SUFFIX: '.html', 8 | LINK_SUFFIX: '.html', 9 | HAS_SOURCE: true, 10 | SOURCELINK_SUFFIX: '.txt', 11 | NAVIGATION_WITH_KEYS: false 12 | }; -------------------------------------------------------------------------------- /docs/build/singlehtml/_static/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/singlehtml/_static/file.png -------------------------------------------------------------------------------- /docs/build/singlehtml/_static/graphviz.css: -------------------------------------------------------------------------------- 1 | /* 2 | * graphviz.css 3 | * ~~~~~~~~~~~~ 4 | * 5 | * Sphinx stylesheet -- graphviz extension. 6 | * 7 | * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. 8 | * :license: BSD, see LICENSE for details. 9 | * 10 | */ 11 | 12 | img.graphviz { 13 | border: 0; 14 | max-width: 100%; 15 | } 16 | 17 | object.graphviz { 18 | max-width: 100%; 19 | } 20 | -------------------------------------------------------------------------------- /docs/build/singlehtml/_static/minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/singlehtml/_static/minus.png -------------------------------------------------------------------------------- /docs/build/singlehtml/_static/plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/singlehtml/_static/plus.png -------------------------------------------------------------------------------- /docs/build/singlehtml/objects.inv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/docs/build/singlehtml/objects.inv -------------------------------------------------------------------------------- /docs/source/index.rst: -------------------------------------------------------------------------------- 1 | .. 2 | (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 3 | 4 | Welcome to pine's documentation! 5 | ======================================= 6 | 7 | .. toctree:: 8 | :maxdepth: 2 9 | :caption: Contents: 10 | 11 | autoapi/index 12 | 13 | Indices and tables 14 | ================== 15 | 16 | * :ref:`genindex` 17 | * :ref:`modindex` 18 | * :ref:`search` 19 | -------------------------------------------------------------------------------- /eve/.dockerignore: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | /db/ 4 | -------------------------------------------------------------------------------- /eve/.gitignore: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | # Eclipse 3 | /.project 4 | /.pydevproject 5 | /.settings/ 6 | 7 | # Mongo 8 | /logs/ 9 | /db/ 10 | 11 | # Python 12 | **/__pycache__/ 13 | 14 | -------------------------------------------------------------------------------- /eve/Pipfile: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | [[source]] 4 | url = "https://pypi.org/simple" 5 | verify_ssl = true 6 | name = "pypi" 7 | 8 | [packages] 9 | eve = "~=1.1.5" 10 | requests = "~=2.26.0" 11 | flask-cors = "~=3.0.10" 12 | python-json-logger = "~=2.0.2" 13 | 14 | [dev-packages] 15 | 16 | [requires] 17 | python_version = "3.8" 18 | -------------------------------------------------------------------------------- /eve/README.md: -------------------------------------------------------------------------------- 1 | © 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | ## Development Environment 4 | 5 | Requirements: 6 | * Mongo >=4 7 | * Python 3, Pip, and Pipenv 8 | 9 | With pipenv, doing a `pipenv install --dev` will install the python 10 | dependencies in a virtual environment. 11 | 12 | After this you can run `dev_run.sh` to run the dev environment. 13 | 14 | ## Production Environment 15 | 16 | This service can also be run as a Docker container. 17 | It should be run using docker-compose at the top level (../). 18 | -------------------------------------------------------------------------------- /eve/dev_run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 3 | 4 | DIR="$( cd "$( dirname "${0}" )" && pwd )" 5 | DATA_DIR=${DATA_DIR:-${DIR}} 6 | LOG_DIR=${LOG_DIR:-${DIR}/logs} 7 | DB_DIR=${DATA_DIR}/db 8 | 9 | set -ex 10 | 11 | mkdir -p ${DB_DIR} ${LOG_DIR} 12 | 13 | if [[ -z ${MONGO_URI} ]]; then 14 | # use a port separate from the system-wide mongo port, if it's running as a service 15 | export MONGO_PORT=${MONGO_PORT:-27018} 16 | mkdir -p logs/ db/ 17 | mongod --dbpath ${DB_DIR} \ 18 | --port ${MONGO_PORT} \ 19 | --logpath ${LOG_DIR}/mongod.log \ 20 | --logRotate reopen --logappend & 21 | else 22 | export MONGO_URI 23 | fi 24 | 25 | export FLASK_PORT=${FLASK_PORT:-5001} 26 | export FLASK_ENV="development" 27 | export PYTHONPATH="${DIR}/python" 28 | pipenv run python3 ${DIR}/python/EveDataLayer.py 29 | -------------------------------------------------------------------------------- /eve/docker/config.py.template: -------------------------------------------------------------------------------- 1 | import logging.config 2 | import os 3 | import json 4 | 5 | bind = "0.0.0.0:${PORT}" 6 | workers = ${WORKERS} 7 | accesslog = "-" 8 | timeout = 60 9 | limit_request_line = 0 10 | 11 | if "PINE_LOGGING_CONFIG_FILE" in os.environ and os.path.isfile(os.environ["PINE_LOGGING_CONFIG_FILE"]): 12 | with open(os.environ["PINE_LOGGING_CONFIG_FILE"], "r") as f: 13 | c = json.load(f) 14 | c["disable_existing_loggers"] = True 15 | logconfig_dict = c 16 | -------------------------------------------------------------------------------- /eve/docker/empty.crt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/eve/docker/empty.crt -------------------------------------------------------------------------------- /eve/docker/wsgi.py: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | from python.EveDataLayer import create_app 4 | 5 | app = create_app() 6 | -------------------------------------------------------------------------------- /eve/docker_run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 3 | 4 | DIR="$( cd "$( dirname "${0}" )" && pwd )" 5 | 6 | set -e 7 | 8 | if [[ -z ${MONGO_URI} ]] && [[ -z ${DB_DIR} ]]; then 9 | echo "Please set MONGO_URI or DB_DIR in docker configuration." 10 | exit 1 11 | fi 12 | 13 | if [[ -n ${MONGO_URI} ]]; then 14 | export MONGO_URI 15 | fi 16 | if [[ -n ${FLASK_PORT} ]]; then 17 | export FLASK_PORT 18 | export MONGO_PORT=${MONGO_PORT:-27018} 19 | fi 20 | 21 | mkdir -p ${LOG_DIR} 22 | 23 | if [[ -z ${MONGO_URI} ]]; then 24 | DOCKER_IP=$(awk 'END{print $1}' /etc/hosts) 25 | 26 | # only run if MONGO_URI is not set 27 | mongod --dbpath ${DB_DIR} \ 28 | --logpath ${LOG_DIR}/mongod.log \ 29 | --bind_ip localhost,${DOCKER_IP} \ 30 | --port ${MONGO_PORT} \ 31 | --logRotate reopen --logappend & 32 | fi 33 | /usr/local/bin/gunicorn --config config.py --pythonpath ${DIR}/python wsgi:app 34 | -------------------------------------------------------------------------------- /eve/python/__init__.py: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | -------------------------------------------------------------------------------- /frontend/annotation/.browserslistrc: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | # This file is currently used by autoprefixer to adjust CSS to support the below specified browsers 3 | # For additional information regarding the format and rule options, please see: 4 | # https://github.com/browserslist/browserslist#queries 5 | # For IE 9-11 support, please uncomment the last line of the file and adjust as needed 6 | > 0.5% 7 | last 2 versions 8 | Firefox ESR 9 | not dead 10 | IE 9-11 -------------------------------------------------------------------------------- /frontend/annotation/.dockerignore: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | node_modules/ 4 | -------------------------------------------------------------------------------- /frontend/annotation/.editorconfig: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | # Editor configuration, see http://editorconfig.org 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | insert_final_newline = true 10 | trim_trailing_whitespace = true 11 | 12 | [*.md] 13 | max_line_length = off 14 | trim_trailing_whitespace = false 15 | -------------------------------------------------------------------------------- /frontend/annotation/.gitignore: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | # See http://help.github.com/ignore-files/ for more about ignoring files. 3 | 4 | # compiled output 5 | /dist 6 | /tmp 7 | /out-tsc 8 | 9 | # dependencies 10 | /node_modules 11 | 12 | # IDEs and editors 13 | /.idea 14 | .project 15 | .classpath 16 | .c9/ 17 | *.launch 18 | .settings/ 19 | *.sublime-workspace 20 | 21 | # IDE - VSCode 22 | .vscode/* 23 | 24 | # misc 25 | /.sass-cache 26 | /connect.lock 27 | /coverage 28 | /libpeerconnection.log 29 | npm-debug.log 30 | yarn-error.log 31 | testem.log 32 | /typings 33 | 34 | # System Files 35 | .DS_Store 36 | Thumbs.db 37 | -------------------------------------------------------------------------------- /frontend/annotation/dev_run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 3 | 4 | set -x 5 | 6 | npm start $@ 7 | -------------------------------------------------------------------------------- /frontend/annotation/docker/empty.crt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/frontend/annotation/docker/empty.crt -------------------------------------------------------------------------------- /frontend/annotation/e2e/protractor.conf.js: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | // Protractor configuration file, see link for more information 4 | // https://github.com/angular/protractor/blob/master/lib/config.ts 5 | 6 | const { SpecReporter } = require('jasmine-spec-reporter'); 7 | 8 | exports.config = { 9 | allScriptsTimeout: 11000, 10 | specs: [ 11 | './src/**/*.e2e-spec.ts' 12 | ], 13 | capabilities: { 14 | 'browserName': 'chrome' 15 | }, 16 | directConnect: true, 17 | baseUrl: 'http://localhost:4200/', 18 | framework: 'jasmine', 19 | jasmineNodeOpts: { 20 | showColors: true, 21 | defaultTimeoutInterval: 30000, 22 | print: function() {} 23 | }, 24 | onPrepare() { 25 | require('ts-node').register({ 26 | project: require('path').join(__dirname, './tsconfig.e2e.json') 27 | }); 28 | jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); 29 | } 30 | }; -------------------------------------------------------------------------------- /frontend/annotation/e2e/src/app.e2e-spec.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | import { AppPage } from './app.po'; 4 | 5 | describe('workspace-project App', () => { 6 | let page: AppPage; 7 | 8 | beforeEach(() => { 9 | page = new AppPage(); 10 | }); 11 | 12 | it('should display welcome message', () => { 13 | page.navigateTo(); 14 | expect(page.getParagraphText()).toEqual('Welcome to PINE!'); 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /frontend/annotation/e2e/src/app.po.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | import { browser, by, element } from 'protractor'; 4 | 5 | export class AppPage { 6 | navigateTo() { 7 | return browser.get('/'); 8 | } 9 | 10 | getParagraphText() { 11 | return element(by.css('app-root h1')).getText(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /frontend/annotation/e2e/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "module": "commonjs", 6 | "target": "es5", 7 | "types": [ 8 | "jasmine", 9 | "jasminewd2", 10 | "node" 11 | ] 12 | } 13 | } -------------------------------------------------------------------------------- /frontend/annotation/generate_ssl_cert.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 3 | 4 | # based on 5 | # https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-nginx-in-ubuntu-18-04 6 | 7 | set -x 8 | 9 | # 5 years 10 | DAYS="1825" 11 | 12 | openssl req -x509 -nodes -days ${DAYS} \ 13 | -newkey rsa:2048 -keyout nginx/certs/server.key \ 14 | -out nginx/certs/server.crt \ 15 | -subj '/C=US/ST=Maryland/L=Laurel/O=JHU\/APL/OU=PMAP\/NLP/CN=pmap-nlp' 16 | 17 | openssl dhparam -out nginx/certs/dhparam.pem 4096 18 | -------------------------------------------------------------------------------- /frontend/annotation/nginx/certs/dhparam.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN DH PARAMETERS----- 2 | MIICCAKCAgEA/hPh4yCR2jfQmShbhtSIGNgDbpJocSvGzhDdgNwV5a2kyidXWe6r 3 | Ab6rbcjs78K3NQ+ZeNdHCTYEUDVD9KGEeTwUhASNEJTk1eDPT9Ll704pvHFkwL45 4 | 0PAGWStAPFoHhgmebkL9a3QarL1OUZ3u0u/0zoIo2Rqp6NYj/AMa5XqzG1aItxoV 5 | c1tI1A1cdCiU0+X3nqXG5uFFn06faiqaY2Ykn5NXMC33VIyxX8xIeWg7zUXyLEj3 6 | 5oN2ssVyWkbJ3eoCK+tx3rIFDcSwXKBLaKKDYQNKvH9Uwuq9nWtSAAuX2PkdJX/+ 7 | Seide6Ek/YJa7nONLQ0s7C9FjOJIGnB9CV7wHicSgjXSOb7wnPM56hSoCr6Emsoo 8 | k1N7Ck9iFI5v6abdJ5AB/Mo8swhp1mVmcuwMaF8GOGGTrB1vabOUKPFKO8hSSCOQ 9 | qrtkpczH8o958AEK7I67awA10QgnISQ5Hh2HWdQxzmHVgFrYCs0Za0D0vi8lqcW5 10 | LVSddLC0S+WvhRezymMWV+nVyypUh7dzRtyd2ausOs9nGbG1zbjAKmbkcYnHerXn 11 | rh/T2h6EE/ZH7gdkO9niOTh2mq2G9lrV4LC648S2i7EzVYtP8qAL8zap/+7BTZl8 12 | XuG8+WZ1bKUbZsRINMz+Nt+8HrSyFkFWjQWdfzlsYDciVTZ3O3Kuv4sCAQI= 13 | -----END DH PARAMETERS----- 14 | -------------------------------------------------------------------------------- /frontend/annotation/nginx/nlp-web-app.http.mustache: -------------------------------------------------------------------------------- 1 | include ${LOG_FORMAT_SNIPPET}; 2 | 3 | server { 4 | listen 80; 5 | 6 | server_name ${SERVER_NAME}; 7 | 8 | client_max_body_size 0; 9 | 10 | location / { 11 | root {{ROOT_DIR}}/dist/pine; 12 | index index.html; 13 | expires -1; 14 | add_header Pragma "no-cache"; 15 | add_header Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0"; 16 | try_files $uri$args $uri$args/ $uri $uri/ /index.html =404; 17 | } 18 | 19 | include snippets/api-rules.conf; 20 | 21 | location /api { 22 | include proxy_params; 23 | proxy_set_header X-Forwarded-Prefix /api; 24 | rewrite ^/api(.*) $1 break; 25 | proxy_pass ${BACKEND_SERVER}; 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /frontend/annotation/nginx/nlp-web-app.https.mustache: -------------------------------------------------------------------------------- 1 | include ${LOG_FORMAT_SNIPPET}; 2 | 3 | server { 4 | listen 443 ssl; 5 | include snippets/self-signed.conf; 6 | include snippets/ssl-params.conf; 7 | 8 | server_name ${SERVER_NAME}; 9 | 10 | client_max_body_size 0; 11 | 12 | location / { 13 | root {{ROOT_DIR}}/dist/pine; 14 | index index.html; 15 | expires -1; 16 | add_header Pragma "no-cache"; 17 | add_header Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0"; 18 | try_files $uri$args $uri$args/ $uri $uri/ /index.html =404; 19 | } 20 | 21 | include snippets/api-rules.conf; 22 | 23 | location /api { 24 | include proxy_params; 25 | proxy_set_header X-Forwarded-Prefix /api; 26 | rewrite ^/api(.*) $1 break; 27 | proxy_pass ${BACKEND_SERVER}; 28 | proxy_redirect http://$http_host/ https://$http_host/; 29 | } 30 | 31 | } 32 | 33 | server { 34 | listen 80; 35 | 36 | server_name ${SERVER_NAME}; 37 | 38 | return 302 https://$server_name$request_uri; 39 | } 40 | -------------------------------------------------------------------------------- /frontend/annotation/nginx/snippets/api-rules.conf: -------------------------------------------------------------------------------- 1 | # special cases for redirecting inside api module 2 | # the X-Forwarded-Prefix header doesn't work if this nginx is behind another nginx 3 | rewrite ^/openapi.yaml?$ /api/openapi.yaml; 4 | rewrite ^/swagger?$ /api/swagger; 5 | rewrite ^/swagger/?$ /api/swagger/; 6 | rewrite ^/swagger/(.+)?$ /api/swagger/$1; 7 | -------------------------------------------------------------------------------- /frontend/annotation/nginx/snippets/default-logging.conf: -------------------------------------------------------------------------------- 1 | access_log /dev/stdout; 2 | error_log /dev/stderr info; 3 | -------------------------------------------------------------------------------- /frontend/annotation/nginx/snippets/self-signed.conf: -------------------------------------------------------------------------------- 1 | ssl_certificate /etc/ssl/certs/server.crt; 2 | ssl_certificate_key /etc/ssl/private/server.key; 3 | ssl_stapling off; # must be off for self-signed. Requires nginx >= 1.3.7 4 | ssl_stapling_verify on; # Requires nginx => 1.3.7 5 | -------------------------------------------------------------------------------- /frontend/annotation/nginx/snippets/ssl-params.conf: -------------------------------------------------------------------------------- 1 | ssl_protocols TLSv1.2; 2 | ssl_prefer_server_ciphers on; 3 | ssl_dhparam /etc/nginx/dhparam.pem; 4 | ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384; 5 | ssl_ecdh_curve secp384r1; # Requires nginx >= 1.1.0 6 | ssl_session_timeout 10m; 7 | ssl_session_cache shared:SSL:10m; 8 | ssl_session_tickets off; # Requires nginx >= 1.5.9 9 | #resolver 8.8.8.8 8.8.4.4 valid=300s; 10 | #resolver_timeout 5s; 11 | # Disable strict transport security for now. You can uncomment the following 12 | # line if you understand the implications. 13 | # add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"; 14 | add_header X-Frame-Options DENY; 15 | add_header X-Content-Type-Options nosniff; 16 | add_header X-XSS-Protection "1; mode=block"; 17 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/about/about.component.css: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | #content { 4 | background-image: url("/assets/tree_icon_sketch.png"); 5 | background-repeat: no-repeat; 6 | background-position: center bottom; 7 | background-size: contain; 8 | padding-top: 10px; 9 | padding-bottom: 10px; 10 | } 11 | 12 | #content-card { 13 | background-color: #FFFFFF; 14 | opacity: 0.85; 15 | } 16 | 17 | #version-table mat-cell, #version-table .mat-cell, 18 | #version-table mat-footer-cell, #version-table .mat-footer-cell, 19 | #version-table mat-header-cell, #version-table .mat-header-cell { 20 | padding: 0.75rem !important; 21 | } 22 | 23 | #buttons { 24 | display: flex; 25 | } 26 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/about/about.component.spec.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing"; 4 | 5 | import { AboutComponent } from "./about.component"; 6 | 7 | describe("AboutComponent", () => { 8 | let component: AboutComponent; 9 | let fixture: ComponentFixture; 10 | 11 | beforeEach(waitForAsync(() => { 12 | TestBed.configureTestingModule({ 13 | declarations: [ AboutComponent ] 14 | }) 15 | .compileComponents(); 16 | })); 17 | 18 | beforeEach(() => { 19 | fixture = TestBed.createComponent(AboutComponent); 20 | component = fixture.componentInstance; 21 | fixture.detectChanges(); 22 | }); 23 | 24 | it("should create", () => { 25 | expect(component).toBeTruthy(); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/account/account.component.css: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/account/account.component.spec.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 4 | 5 | import { AccountComponent } from './account.component'; 6 | 7 | describe('AccountComponent', () => { 8 | let component: AccountComponent; 9 | let fixture: ComponentFixture; 10 | 11 | beforeEach(waitForAsync(() => { 12 | TestBed.configureTestingModule({ 13 | declarations: [ AccountComponent ] 14 | }) 15 | .compileComponents(); 16 | })); 17 | 18 | beforeEach(() => { 19 | fixture = TestBed.createComponent(AccountComponent); 20 | component = fixture.componentInstance; 21 | fixture.detectChanges(); 22 | }); 23 | 24 | it('should create', () => { 25 | expect(component).toBeTruthy(); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/add-collection/add-collection.component.css: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | .form-card { 4 | width: 100%; 5 | } 6 | 7 | #content { 8 | padding-top: 3%; 9 | } 10 | 11 | .form-field mat-form-field { 12 | width: 48%; 13 | } 14 | 15 | .form-field .space { 16 | display: inline-block; 17 | width: 4%; 18 | } 19 | 20 | .submitting { 21 | margin-top: 15px; 22 | } 23 | 24 | .submitting mat-card-content { 25 | width: 100%; 26 | display: flex; 27 | align-items: center; 28 | justify-content: center; 29 | } 30 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/add-collection/add-collection.component.spec.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 3 | 4 | import { AddCollectionComponent } from './add-collection.component'; 5 | 6 | describe('AddCollectionComponent', () => { 7 | let component: AddCollectionComponent; 8 | let fixture: ComponentFixture; 9 | 10 | beforeEach(waitForAsync(() => { 11 | TestBed.configureTestingModule({ 12 | declarations: [ AddCollectionComponent ] 13 | }) 14 | .compileComponents(); 15 | })); 16 | 17 | beforeEach(() => { 18 | fixture = TestBed.createComponent(AddCollectionComponent); 19 | component = fixture.componentInstance; 20 | fixture.detectChanges(); 21 | }); 22 | 23 | it('should create', () => { 24 | expect(component).toBeTruthy(); 25 | }); 26 | }); 27 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/add-document/add-document.component.css: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | :host { 3 | display: flex; 4 | flex-direction: column; 5 | } 6 | 7 | mat-dialog-content { 8 | border-bottom: 1px solid rgba(0,0,0,.12); 9 | } 10 | 11 | .form-card { 12 | width: 100%; 13 | } 14 | 15 | .file-upload-display { 16 | float: left; 17 | } 18 | 19 | .file-upload-button { 20 | float: right; 21 | } 22 | 23 | ::ng-deep .doc-text-form-field .mat-form-field-underline { 24 | display: none; 25 | } 26 | 27 | .doc-text-btn-row { 28 | align-items: center; 29 | } -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/add-document/add-document.component.spec.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 3 | 4 | import { AddDocumentComponent } from './add-document.component'; 5 | 6 | describe('AddDocumentComponent', () => { 7 | let component: AddDocumentComponent; 8 | let fixture: ComponentFixture; 9 | 10 | beforeEach(waitForAsync(() => { 11 | TestBed.configureTestingModule({ 12 | declarations: [ AddDocumentComponent ] 13 | }) 14 | .compileComponents(); 15 | })); 16 | 17 | beforeEach(() => { 18 | fixture = TestBed.createComponent(AddDocumentComponent); 19 | component = fixture.componentInstance; 20 | fixture.detectChanges(); 21 | }); 22 | 23 | it('should create', () => { 24 | expect(component).toBeTruthy(); 25 | }); 26 | }); 27 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/admin-data/admin-data.component.css: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | .card-row { 4 | width: 100%; 5 | } 6 | 7 | #export-spinner, #import-spinner { 8 | margin: 0 auto; 9 | } 10 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/admin-data/admin-data.component.spec.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 3 | 4 | import { AdminDataComponent } from './admin-data.component'; 5 | 6 | describe('AdminDataComponent', () => { 7 | let component: AdminDataComponent; 8 | let fixture: ComponentFixture; 9 | 10 | beforeEach(waitForAsync(() => { 11 | TestBed.configureTestingModule({ 12 | declarations: [ AdminDataComponent ] 13 | }) 14 | .compileComponents(); 15 | })); 16 | 17 | beforeEach(() => { 18 | fixture = TestBed.createComponent(AdminDataComponent); 19 | component = fixture.componentInstance; 20 | fixture.detectChanges(); 21 | }); 22 | 23 | it('should create', () => { 24 | expect(component).toBeTruthy(); 25 | }); 26 | }); 27 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/admin-user-modify/admin-user-modify.component.css: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/admin-user-modify/admin-user-modify.component.spec.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 3 | 4 | import { AdminUserModifyComponent } from './admin-user-modify.component'; 5 | 6 | describe('AdminUserModifyComponent', () => { 7 | let component: AdminUserModifyComponent; 8 | let fixture: ComponentFixture; 9 | 10 | beforeEach(waitForAsync(() => { 11 | TestBed.configureTestingModule({ 12 | declarations: [ AdminUserModifyComponent ] 13 | }) 14 | .compileComponents(); 15 | })); 16 | 17 | beforeEach(() => { 18 | fixture = TestBed.createComponent(AdminUserModifyComponent); 19 | component = fixture.componentInstance; 20 | fixture.detectChanges(); 21 | }); 22 | 23 | it('should create', () => { 24 | expect(component).toBeTruthy(); 25 | }); 26 | }); 27 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/admin-users/admin-users.component.css: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | #userTable { 4 | width: 100%; 5 | } 6 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/admin-users/admin-users.component.spec.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 3 | 4 | import { AdminUsersComponent } from './admin-users.component'; 5 | 6 | describe('AdminUsersComponent', () => { 7 | let component: AdminUsersComponent; 8 | let fixture: ComponentFixture; 9 | 10 | beforeEach(waitForAsync(() => { 11 | TestBed.configureTestingModule({ 12 | declarations: [ AdminUsersComponent ] 13 | }) 14 | .compileComponents(); 15 | })); 16 | 17 | beforeEach(() => { 18 | fixture = TestBed.createComponent(AdminUsersComponent); 19 | component = fixture.componentInstance; 20 | fixture.detectChanges(); 21 | }); 22 | 23 | it('should create', () => { 24 | expect(component).toBeTruthy(); 25 | }); 26 | }); 27 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/admin/admin.component.css: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | .btn { 4 | width: 100%; 5 | height: 100%; 6 | white-space: normal; 7 | border-radius: 20px; 8 | border: 1px solid darkgrey; 9 | } 10 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/admin/admin.component.spec.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 3 | 4 | import { AdminComponent } from './admin.component'; 5 | 6 | describe('AdminComponent', () => { 7 | let component: AdminComponent; 8 | let fixture: ComponentFixture; 9 | 10 | beforeEach(waitForAsync(() => { 11 | TestBed.configureTestingModule({ 12 | declarations: [ AdminComponent ] 13 | }) 14 | .compileComponents(); 15 | })); 16 | 17 | beforeEach(() => { 18 | fixture = TestBed.createComponent(AdminComponent); 19 | component = fixture.componentInstance; 20 | fixture.detectChanges(); 21 | }); 22 | 23 | it('should create', () => { 24 | expect(component).toBeTruthy(); 25 | }); 26 | }); 27 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/admin/admin.component.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | import { Component, OnInit } from "@angular/core"; 3 | 4 | import { AuthService } from "../../service/auth/auth.service"; 5 | 6 | import { PATHS } from "../../app.paths"; 7 | 8 | @Component({ 9 | selector: "app-admin", 10 | templateUrl: "./admin.component.html", 11 | styleUrls: ["./admin.component.css"] 12 | }) 13 | export class AdminComponent implements OnInit { 14 | 15 | public static readonly SUBTITLE = "Admin Dashboard"; 16 | 17 | public readonly PATHS = PATHS; 18 | 19 | constructor(public auth: AuthService) { } 20 | 21 | ngOnInit() { 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/annotate/annotate.component.spec.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 3 | 4 | import { AnnotateComponent } from './annotate.component'; 5 | 6 | describe('AnnotateComponent', () => { 7 | let component: AnnotateComponent; 8 | let fixture: ComponentFixture; 9 | 10 | beforeEach(waitForAsync(() => { 11 | TestBed.configureTestingModule({ 12 | declarations: [ AnnotateComponent ] 13 | }) 14 | .compileComponents(); 15 | })); 16 | 17 | beforeEach(() => { 18 | fixture = TestBed.createComponent(AnnotateComponent); 19 | component = fixture.componentInstance; 20 | fixture.detectChanges(); 21 | }); 22 | 23 | it('should create', () => { 24 | expect(component).toBeTruthy(); 25 | }); 26 | }); 27 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/collection-details/collection-details-add-annotator-modal.component.html: -------------------------------------------------------------------------------- 1 | 2 | Add a New Annotator 3 |
4 | 5 | Annotator Username/ID 6 | 7 | 8 |
9 |
10 | 11 | 12 | 13 |
14 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/collection-details/collection-details-add-label-modal.component.html: -------------------------------------------------------------------------------- 1 | 2 | Add a New Label 3 |
4 | 5 | Label 6 | 7 | 8 |
9 |
10 | 11 | 12 | 13 |
14 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/collection-details/collection-details-add-viewer-modal.component.html: -------------------------------------------------------------------------------- 1 | 2 | Add a New Viewer 3 |
4 | 5 | Viewer Username/ID 6 | 7 | 8 |
9 |
10 | 11 | 12 | 13 |
14 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/collection-details/collection-details.component.spec.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 3 | 4 | import { CollectionDetailsComponent } from './collection-details.component'; 5 | 6 | describe('CollectionDetailsComponent', () => { 7 | let component: CollectionDetailsComponent; 8 | let fixture: ComponentFixture; 9 | 10 | beforeEach(waitForAsync(() => { 11 | TestBed.configureTestingModule({ 12 | declarations: [ CollectionDetailsComponent ] 13 | }) 14 | .compileComponents(); 15 | })); 16 | 17 | beforeEach(() => { 18 | fixture = TestBed.createComponent(CollectionDetailsComponent); 19 | component = fixture.componentInstance; 20 | fixture.detectChanges(); 21 | }); 22 | 23 | it('should create', () => { 24 | expect(component).toBeTruthy(); 25 | }); 26 | }); 27 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/collection-iaa-report/collection-iaa-report.component.css: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/collection-iaa-report/collection-iaa-report.component.spec.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 3 | 4 | import { CollectionIaaReportComponent } from './collection-iaa-report.component'; 5 | 6 | describe('CollectionIaaReportComponent', () => { 7 | let component: CollectionIaaReportComponent; 8 | let fixture: ComponentFixture; 9 | 10 | beforeEach(waitForAsync(() => { 11 | TestBed.configureTestingModule({ 12 | declarations: [ CollectionIaaReportComponent ] 13 | }) 14 | .compileComponents(); 15 | })); 16 | 17 | beforeEach(() => { 18 | fixture = TestBed.createComponent(CollectionIaaReportComponent); 19 | component = fixture.componentInstance; 20 | fixture.detectChanges(); 21 | }); 22 | 23 | it('should create', () => { 24 | expect(component).toBeTruthy(); 25 | }); 26 | }); 27 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/collection-iaa-report/collection-iaa-report.component.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | import { Component, OnInit, Input } from '@angular/core'; 3 | import { IAAReport } from 'src/app/model/iaareport'; 4 | 5 | @Component({ 6 | selector: 'app-collection-iaa-report', 7 | templateUrl: './collection-iaa-report.component.html', 8 | styleUrls: ['./collection-iaa-report.component.css'] 9 | }) 10 | export class CollectionIaaReportComponent implements OnInit { 11 | 12 | constructor() { } 13 | 14 | @Input() 15 | iaa_report : IAAReport 16 | 17 | ngOnInit() { 18 | console.log(this.iaa_report) 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/conf-matrix/conf-matrix.component.css: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | mat-grid-tile{ 4 | border: 0.5px solid grey; 5 | } -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/conf-matrix/conf-matrix.component.spec.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 3 | 4 | import { ConfMatrixComponent } from './conf-matrix.component'; 5 | 6 | describe('ConfMatrixComponent', () => { 7 | let component: ConfMatrixComponent; 8 | let fixture: ComponentFixture; 9 | 10 | beforeEach(waitForAsync(() => { 11 | TestBed.configureTestingModule({ 12 | declarations: [ ConfMatrixComponent ] 13 | }) 14 | .compileComponents(); 15 | })); 16 | 17 | beforeEach(() => { 18 | fixture = TestBed.createComponent(ConfMatrixComponent); 19 | component = fixture.componentInstance; 20 | fixture.detectChanges(); 21 | }); 22 | 23 | it('should create', () => { 24 | expect(component).toBeTruthy(); 25 | }); 26 | }); 27 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/conf-matrix/conf-matrix.component.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | import { Component, OnInit, Input } from '@angular/core'; 3 | 4 | @Component({ 5 | selector: 'app-conf-matrix', 6 | templateUrl: './conf-matrix.component.html', 7 | styleUrls: ['./conf-matrix.component.css'] 8 | }) 9 | export class ConfMatrixComponent implements OnInit { 10 | 11 | constructor() { } 12 | 13 | @Input() 14 | data: any 15 | 16 | ngOnInit() { 17 | 18 | } 19 | 20 | 21 | 22 | } 23 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/document-details/document-details.component.css: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | .metadata-table { 4 | width: 100%; 5 | } 6 | 7 | .detail-container { 8 | padding: 10px 20px 20px 20px; 9 | } -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/document-details/document-details.component.spec.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 4 | 5 | import { DocumentDetailsComponent } from './document-details.component'; 6 | 7 | describe('DocumentDetailsComponent', () => { 8 | let component: DocumentDetailsComponent; 9 | let fixture: ComponentFixture; 10 | 11 | beforeEach(waitForAsync(() => { 12 | TestBed.configureTestingModule({ 13 | declarations: [ DocumentDetailsComponent ] 14 | }) 15 | .compileComponents(); 16 | })); 17 | 18 | beforeEach(() => { 19 | fixture = TestBed.createComponent(DocumentDetailsComponent); 20 | component = fixture.componentInstance; 21 | fixture.detectChanges(); 22 | }); 23 | 24 | it('should create', () => { 25 | expect(component).toBeTruthy(); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/download-collection-data.dialog/download-collection-data.dialog.component.css: -------------------------------------------------------------------------------- 1 | /* (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | #title { 4 | margin-bottom: 5px; 5 | } 6 | 7 | #content { 8 | margin-bottom: -20px; 9 | } 10 | 11 | #annotations { 12 | margin-left: 20px; 13 | } 14 | 15 | #actions { 16 | float: right; 17 | padding-top: 0px; 18 | margin-top: 0px; 19 | } 20 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/download-collection-data.dialog/download-collection-data.dialog.component.spec.ts: -------------------------------------------------------------------------------- 1 | /* (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 4 | 5 | import { DownloadCollectionDataComponent } from './download-collection-data.component'; 6 | 7 | describe('DownloadCollectionDataDialogComponent', () => { 8 | let component: DownloadCollectionDataDialogComponent; 9 | let fixture: ComponentFixture; 10 | 11 | beforeEach(waitForAsync(() => { 12 | TestBed.configureTestingModule({ 13 | declarations: [ DownloadCollectionDataDialogComponent ] 14 | }) 15 | .compileComponents(); 16 | })); 17 | 18 | beforeEach(() => { 19 | fixture = TestBed.createComponent(DownloadCollectionDataDialogComponent); 20 | component = fixture.componentInstance; 21 | fixture.detectChanges(); 22 | }); 23 | 24 | it('should create', () => { 25 | expect(component).toBeTruthy(); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/error/error.component.css: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | #card { 4 | margin-top: 15px; 5 | } 6 | 7 | ::ng-deep .main { 8 | font-weight: bold; 9 | font-size: large; 10 | } 11 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/error/error.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/error/error.component.spec.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 4 | 5 | import { ErrorComponent } from './error.component'; 6 | 7 | describe('ErrorComponent', () => { 8 | let component: ErrorComponent; 9 | let fixture: ComponentFixture; 10 | 11 | beforeEach(waitForAsync(() => { 12 | TestBed.configureTestingModule({ 13 | declarations: [ ErrorComponent ] 14 | }) 15 | .compileComponents(); 16 | })); 17 | 18 | beforeEach(() => { 19 | fixture = TestBed.createComponent(ErrorComponent); 20 | component = fixture.componentInstance; 21 | fixture.detectChanges(); 22 | }); 23 | 24 | it('should create', () => { 25 | expect(component).toBeTruthy(); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/iaa-heatmap/iaa-heatmap.component.css: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/iaa-heatmap/iaa-heatmap.component.html: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/iaa-heatmap/iaa-heatmap.component.spec.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 4 | 5 | import { IaaHeatmapComponent } from './iaa-heatmap.component'; 6 | 7 | describe('IaaHeatmapComponent', () => { 8 | let component: IaaHeatmapComponent; 9 | let fixture: ComponentFixture; 10 | 11 | beforeEach(waitForAsync(() => { 12 | TestBed.configureTestingModule({ 13 | declarations: [ IaaHeatmapComponent ] 14 | }) 15 | .compileComponents(); 16 | })); 17 | 18 | beforeEach(() => { 19 | fixture = TestBed.createComponent(IaaHeatmapComponent); 20 | component = fixture.componentInstance; 21 | fixture.detectChanges(); 22 | }); 23 | 24 | it('should create', () => { 25 | expect(component).toBeTruthy(); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/image-chooser/image-chooser.component.css: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | .image-field { 4 | margin-left: 30px; 5 | } 6 | 7 | .image-row { 8 | display: flex; 9 | flex-direction: row; 10 | align-items: center; 11 | } 12 | 13 | .image-col { 14 | display: flex; 15 | flex-flow: column; 16 | } 17 | 18 | .image-field .image-top { 19 | align-self: flex-start; 20 | margin-top: 15px; 21 | } 22 | 23 | .image-choose-btn { 24 | min-width: 130px; 25 | } -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/image-chooser/image-chooser.component.spec.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing"; 4 | 5 | import { ImageChooserComponent } from "./image-chooser.component"; 6 | 7 | describe("ImageChooserComponent", () => { 8 | let component: ImageChooserComponent; 9 | let fixture: ComponentFixture; 10 | 11 | beforeEach(waitForAsync(() => { 12 | TestBed.configureTestingModule({ 13 | declarations: [ ImageChooserComponent ] 14 | }) 15 | .compileComponents(); 16 | })); 17 | 18 | beforeEach(() => { 19 | fixture = TestBed.createComponent(ImageChooserComponent); 20 | component = fixture.componentInstance; 21 | fixture.detectChanges(); 22 | }); 23 | 24 | it("should create", () => { 25 | expect(component).toBeTruthy(); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/image-chooser/image-chooser.dialog.css: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | .content { 4 | min-width: 700px; 5 | padding-bottom: 20px; 6 | } 7 | 8 | .buttons { 9 | padding-top: 0px; 10 | margin-top: -5px; 11 | } 12 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/image-chooser/image-chooser.dialog.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |

Choose Image

4 | 5 | 6 | 7 | 8 | 9 | 10 | 14 | 15 | 19 | 20 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/image-collection-uploader/image-collection-uploader.component.css: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/image-collection-uploader/image-collection-uploader.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |

5 | Optionally, select one or more images to upload for use by documents in this collection. 6 | They can then be accessed by setting "imageUrl" in the document metadata to be 7 | "/<image filename>". 8 |

9 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/image-collection-uploader/image-collection-uploader.component.spec.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing"; 4 | 5 | import { ImageCollectionUploaderComponent } from "./image-collection-uploader.component"; 6 | 7 | describe("ImageCollectionUploaderComponent", () => { 8 | let component: ImageCollectionUploaderComponent; 9 | let fixture: ComponentFixture; 10 | 11 | beforeEach(waitForAsync(() => { 12 | TestBed.configureTestingModule({ 13 | declarations: [ ImageCollectionUploaderComponent ] 14 | }) 15 | .compileComponents(); 16 | })); 17 | 18 | beforeEach(() => { 19 | fixture = TestBed.createComponent(ImageCollectionUploaderComponent); 20 | component = fixture.componentInstance; 21 | fixture.detectChanges(); 22 | }); 23 | 24 | it("should create", () => { 25 | expect(component).toBeTruthy(); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/image-collection-uploader/image-collection-uploader.dialog.css: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/image-collection-uploader/image-collection-uploader.dialog.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |

Upload Images

4 | 5 | 6 | 7 | 8 | 9 | 10 | 14 | 15 | 19 | 20 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/image-explorer/image-explorer.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { ImageExplorerComponent } from './image-explorer.component'; 4 | 5 | describe('ImageExplorerComponent', () => { 6 | let component: ImageExplorerComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ ImageExplorerComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ImageExplorerComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/label-chooser/label-chooser.component.css: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/label-chooser/label-chooser.component.spec.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 4 | 5 | import { LabelChooserComponent } from './label-chooser.component'; 6 | 7 | describe('LabelChooserComponent', () => { 8 | let component: LabelChooserComponent; 9 | let fixture: ComponentFixture; 10 | 11 | beforeEach(waitForAsync(() => { 12 | TestBed.configureTestingModule({ 13 | declarations: [ LabelChooserComponent ] 14 | }) 15 | .compileComponents(); 16 | })); 17 | 18 | beforeEach(() => { 19 | fixture = TestBed.createComponent(LabelChooserComponent); 20 | component = fixture.componentInstance; 21 | fixture.detectChanges(); 22 | }); 23 | 24 | it('should create', () => { 25 | expect(component).toBeTruthy(); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/loading/loading.component.css: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | #container { 4 | display: flex; 5 | flex-direction: column; 6 | justify-content: center; 7 | align-items: center; 8 | } 9 | 10 | h1 { 11 | margin-top: 0px; 12 | } 13 | 14 | #loading { 15 | 16 | } 17 | 18 | #loading h1 { 19 | text-shadow: 2px 2px 10px rgba(0,0,0,0.2); 20 | } 21 | 22 | #loading mat-progress-spinner { 23 | margin: 0 auto; 24 | } 25 | 26 | #error { 27 | text-align: center; 28 | } 29 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/loading/loading.component.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 |
5 |

L O A D I N G . . .

6 |
7 | 8 |
9 |
10 | 11 |
12 |

LOADING ERROR

13 |
14 | {{ errorMessage }} 15 |
16 |
17 | 18 |
19 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/loading/loading.component.spec.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 4 | 5 | import { LoadingComponent } from './loading.component'; 6 | 7 | describe('LoadingComponent', () => { 8 | let component: LoadingComponent; 9 | let fixture: ComponentFixture; 10 | 11 | beforeEach(waitForAsync(() => { 12 | TestBed.configureTestingModule({ 13 | declarations: [ LoadingComponent ] 14 | }) 15 | .compileComponents(); 16 | })); 17 | 18 | beforeEach(() => { 19 | fixture = TestBed.createComponent(LoadingComponent); 20 | component = fixture.componentInstance; 21 | fixture.detectChanges(); 22 | }); 23 | 24 | it('should create', () => { 25 | expect(component).toBeTruthy(); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/loading/loading.component.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | import { Component, OnInit, Input } from "@angular/core"; 4 | 5 | @Component({ 6 | selector: "app-loading", 7 | templateUrl: "./loading.component.html", 8 | styleUrls: ["./loading.component.css"] 9 | }) 10 | export class LoadingComponent implements OnInit { 11 | 12 | @Input() 13 | public loading = true; 14 | 15 | @Input() 16 | public error = false; 17 | 18 | @Input() 19 | public errorMessage: string = undefined; 20 | 21 | @Input() 22 | public spinnerColor = "accent"; 23 | 24 | @Input() 25 | public spinnerMode = "indeterminate"; 26 | 27 | constructor() { } 28 | 29 | ngOnInit() { 30 | } 31 | 32 | public setError(errorMessage: string) { 33 | this.errorMessage = errorMessage; 34 | this.error = true; 35 | } 36 | 37 | public clearError() { 38 | this.error = false; 39 | this.errorMessage = undefined; 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/login/login.component.css: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | :host { 4 | display: flex; 5 | align-items: center; 6 | justify-content: center; 7 | padding-top: 1%; 8 | padding-bottom: 1%; 9 | height: 100%; 10 | } 11 | 12 | #login-card { 13 | width: 350px; 14 | display: flex; 15 | flex-direction: column; 16 | justify-content: center; 17 | margin-top: -64px; 18 | } 19 | 20 | #logo, #name, #long-name, #buttons { 21 | align-self: center; 22 | text-align: center; 23 | } 24 | 25 | #logo { 26 | width: 175px; 27 | } 28 | 29 | #name { 30 | margin-top: 0px; 31 | margin-bottom: 0px; 32 | } 33 | 34 | .login-field { 35 | width: 100%; 36 | } 37 | 38 | #buttons { 39 | padding-bottom: 0px; 40 | margin-bottom: 0px; 41 | } 42 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/login/login.component.spec.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 4 | 5 | import { LoginComponent } from './login.component'; 6 | 7 | describe('LoginComponent', () => { 8 | let component: LoginComponent; 9 | let fixture: ComponentFixture; 10 | 11 | beforeEach(waitForAsync(() => { 12 | TestBed.configureTestingModule({ 13 | declarations: [ LoginComponent ] 14 | }) 15 | .compileComponents(); 16 | })); 17 | 18 | beforeEach(() => { 19 | fixture = TestBed.createComponent(LoginComponent); 20 | component = fixture.componentInstance; 21 | fixture.detectChanges(); 22 | }); 23 | 24 | it('should create', () => { 25 | expect(component).toBeTruthy(); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/message.dialog/message.dialog.component.css: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/message.dialog/message.dialog.component.html: -------------------------------------------------------------------------------- 1 | 2 |

{{data.title}}

3 | {{data.message}} 4 | 5 | 9 | 10 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/message.dialog/message.dialog.component.spec.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 4 | 5 | import { MessageDialogComponent } from './message.dialog.component'; 6 | 7 | describe('MessageDialogComponent', () => { 8 | let component: MessageDialogComponent; 9 | let fixture: ComponentFixture; 10 | 11 | beforeEach(waitForAsync(() => { 12 | TestBed.configureTestingModule({ 13 | declarations: [ MessageDialogComponent ] 14 | }) 15 | .compileComponents(); 16 | })); 17 | 18 | beforeEach(() => { 19 | fixture = TestBed.createComponent(MessageDialogComponent); 20 | component = fixture.componentInstance; 21 | fixture.detectChanges(); 22 | }); 23 | 24 | it('should create', () => { 25 | expect(component).toBeTruthy(); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/metrics-history/metrics-history.component.css: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/metrics-history/metrics-history.component.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 |
5 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/metrics-history/metrics-history.component.spec.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 4 | 5 | import { MetricsHistoryComponent } from './metrics-history.component'; 6 | 7 | describe('MetricsHistoryComponent', () => { 8 | let component: MetricsHistoryComponent; 9 | let fixture: ComponentFixture; 10 | 11 | beforeEach(waitForAsync(() => { 12 | TestBed.configureTestingModule({ 13 | declarations: [ MetricsHistoryComponent ] 14 | }) 15 | .compileComponents(); 16 | })); 17 | 18 | beforeEach(() => { 19 | fixture = TestBed.createComponent(MetricsHistoryComponent); 20 | component = fixture.componentInstance; 21 | fixture.detectChanges(); 22 | }); 23 | 24 | it('should create', () => { 25 | expect(component).toBeTruthy(); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/metrics/metrics.component.css: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | .drop-down{ 4 | margin-left:5px; 5 | border: 0.5px solid grey; 6 | padding-right: 5px; 7 | padding-left: 10px 8 | } 9 | .material-icon{ 10 | margin-left: 5px 11 | } 12 | .info{ 13 | font-size: 1.25em; 14 | } 15 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/metrics/metrics.component.spec.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 4 | 5 | import { MetricsComponent } from './metrics.component'; 6 | 7 | describe('MetricsComponent', () => { 8 | let component: MetricsComponent; 9 | let fixture: ComponentFixture; 10 | 11 | beforeEach(waitForAsync(() => { 12 | TestBed.configureTestingModule({ 13 | declarations: [ MetricsComponent ] 14 | }) 15 | .compileComponents(); 16 | })); 17 | 18 | beforeEach(() => { 19 | fixture = TestBed.createComponent(MetricsComponent); 20 | component = fixture.componentInstance; 21 | fixture.detectChanges(); 22 | }); 23 | 24 | it('should create', () => { 25 | expect(component).toBeTruthy(); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/ner-annotation-table/ner-annotation-table.component.spec.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 4 | 5 | import { AnnotationTableComponent } from './annotation-table.component'; 6 | 7 | describe('AnnotationTableComponent', () => { 8 | let component: AnnotationTableComponent; 9 | let fixture: ComponentFixture; 10 | 11 | beforeEach(waitForAsync(() => { 12 | TestBed.configureTestingModule({ 13 | declarations: [ AnnotationTableComponent ] 14 | }) 15 | .compileComponents(); 16 | })); 17 | 18 | beforeEach(() => { 19 | fixture = TestBed.createComponent(AnnotationTableComponent); 20 | component = fixture.componentInstance; 21 | fixture.detectChanges(); 22 | }); 23 | 24 | it('should create', () => { 25 | expect(component).toBeTruthy(); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/status-bar/status-bar.component.css: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | .toolbar { 4 | height: 42px; 5 | font-size: 1em; 6 | border: 1px black solid; 7 | /* 8 | border-bottom-left-radius: 15px; 9 | border-bottom-right-radius: 15px; 10 | */ 11 | } 12 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/status-bar/status-bar.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |

{{ message }}

6 |
-------------------------------------------------------------------------------- /frontend/annotation/src/app/component/status-bar/status-bar.component.spec.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing"; 4 | 5 | import { StatusBarComponent } from "./status-bar.component"; 6 | 7 | describe("StatusBarComponent", () => { 8 | let component: StatusBarComponent; 9 | let fixture: ComponentFixture; 10 | 11 | beforeEach(waitForAsync(() => { 12 | TestBed.configureTestingModule({ 13 | declarations: [ StatusBarComponent ] 14 | }) 15 | .compileComponents(); 16 | })); 17 | 18 | beforeEach(() => { 19 | fixture = TestBed.createComponent(StatusBarComponent); 20 | component = fixture.componentInstance; 21 | fixture.detectChanges(); 22 | }); 23 | 24 | it("should create", () => { 25 | expect(component).toBeTruthy(); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/status-bar/status-bar.component.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | import { Component, OnInit, Input } from "@angular/core"; 4 | 5 | @Component({ 6 | selector: "app-status-bar", 7 | templateUrl: "./status-bar.component.html", 8 | styleUrls: ["./status-bar.component.css"] 9 | }) 10 | export class StatusBarComponent implements OnInit { 11 | 12 | @Input() 13 | public visible = false; 14 | 15 | @Input() 16 | public message: string; 17 | 18 | @Input() 19 | public showSpinner: boolean = false; 20 | 21 | @Input() 22 | public spinnerMode: "indeterminate"|"determinate" = "indeterminate"; 23 | 24 | @Input() 25 | public spinnerValue: number = 0; 26 | 27 | constructor() { } 28 | 29 | ngOnInit() { 30 | } 31 | 32 | ngAfterViewInit() { 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/toolbar/toolbar-nav-button/toolbar-nav-button.component.html: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 |
5 | {{icon}} 6 | 7 | 8 | 9 |
10 |
11 |
12 |
-------------------------------------------------------------------------------- /frontend/annotation/src/app/component/toolbar/toolbar-nav-button/toolbar-nav-button.component.scss: -------------------------------------------------------------------------------- 1 | a { 2 | display: flex; 3 | height: 100%; 4 | align-items: center; 5 | border-radius: 0; 6 | padding: 0px; 7 | } 8 | 9 | a.selected { 10 | background-color: rgba(0, 0, 0, 0.1); 11 | } 12 | a.selected .bottom-bar { 13 | background-color: #232941; 14 | } 15 | 16 | .btn-container { 17 | line-height: 52px; 18 | } 19 | fa-icon { 20 | margin-right: 8px; 21 | } 22 | .btn-content { 23 | padding: 0 16px; 24 | } 25 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/toolbar/toolbar-nav-button/toolbar-nav-button.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-toolbar-nav-button', 5 | templateUrl: './toolbar-nav-button.component.html', 6 | styleUrls: ['./toolbar-nav-button.component.scss'] 7 | }) 8 | export class ToolbarNavButtonComponent { 9 | @Input() icon; 10 | @Input() link; 11 | } 12 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/toolbar/toolbar-nav/toolbar-nav.component.html: -------------------------------------------------------------------------------- 1 | 2 | Document Collections 3 | 6 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/toolbar/toolbar-nav/toolbar-nav.component.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | flex-direction: row; 3 | box-sizing: border-box; 4 | display: flex; 5 | height: 100%; 6 | margin-left: 10px; 7 | } 8 | 9 | .info-btn { 10 | margin-top: 10px; 11 | } -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/toolbar/toolbar-nav/toolbar-nav.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | import { NO_ERRORS_SCHEMA } from '@angular/core'; 3 | 4 | import { ToolbarNavComponent } from './toolbar-nav.component'; 5 | 6 | describe('ToolbarNavComponent', () => { 7 | let component: ToolbarNavComponent; 8 | let fixture: ComponentFixture; 9 | 10 | beforeEach(waitForAsync(() => { 11 | TestBed.configureTestingModule({ 12 | declarations: [ 13 | ToolbarNavComponent 14 | ], 15 | schemas: [ 16 | NO_ERRORS_SCHEMA 17 | ] 18 | }).compileComponents(); 19 | })); 20 | 21 | beforeEach(() => { 22 | fixture = TestBed.createComponent(ToolbarNavComponent); 23 | component = fixture.componentInstance; 24 | fixture.detectChanges(); 25 | }); 26 | 27 | it('should create', () => { 28 | expect(component).toBeTruthy(); 29 | }); 30 | }); 31 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/toolbar/toolbar-nav/toolbar-nav.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { show } from "../../about/about.component"; 3 | import { MatDialog } from '@angular/material/dialog'; 4 | 5 | @Component({ 6 | selector: 'app-toolbar-nav', 7 | templateUrl: './toolbar-nav.component.html', 8 | styleUrls: ['./toolbar-nav.component.scss'] 9 | }) 10 | export class ToolbarNavComponent implements OnInit { 11 | 12 | constructor(private dialog: MatDialog) { } 13 | 14 | ngOnInit() { 15 | } 16 | 17 | public doAbout() { 18 | show(this.dialog); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/user-card/user-card.component.scss: -------------------------------------------------------------------------------- 1 | .user-container { 2 | min-width: 200px; 3 | max-width: 280px; 4 | padding: 10px; 5 | } 6 | 7 | .user-icon { 8 | font-size: 40px; 9 | height: 40px; 10 | width: 40px; 11 | margin-top: auto; 12 | margin-bottom: auto; 13 | margin-right: 6px 14 | } 15 | 16 | mat-divider { 17 | margin-top: 10px; 18 | } 19 | 20 | .action-buttons button { 21 | margin-top: 10px; 22 | } 23 | 24 | .user-btn { 25 | width: 100%; 26 | } 27 | .user-btn mat-icon { 28 | margin: auto; 29 | } -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/user-card/user-card.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { UserCardComponent } from './user-card.component'; 4 | 5 | describe('UserCardComponent', () => { 6 | let component: UserCardComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ UserCardComponent ] 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(UserCardComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/user-card/user-card.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | import { User, UserDetails } from 'src/app/model/user'; 4 | import { AuthService } from 'src/app/service/auth/auth.service'; 5 | import { PATHS } from "../../app.paths"; 6 | 7 | @Component({ 8 | selector: 'app-user-card', 9 | templateUrl: './user-card.component.html', 10 | styleUrls: ['./user-card.component.scss'] 11 | }) 12 | export class UserCardComponent implements OnInit { 13 | 14 | public readonly PATHS = PATHS; 15 | 16 | public user: User; 17 | 18 | constructor(private authService: AuthService) { } 19 | 20 | ngOnInit() { 21 | this.user = this.authService.loggedInUser; 22 | } 23 | 24 | logout(): void { 25 | this.authService.logout(); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/user-chooser/user-chooser.component.css: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/user-chooser/user-chooser.component.spec.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 4 | 5 | import { UserChooserComponent } from './user-chooser.component'; 6 | 7 | describe('UserChooserComponent', () => { 8 | let component: UserChooserComponent; 9 | let fixture: ComponentFixture; 10 | 11 | beforeEach(waitForAsync(() => { 12 | TestBed.configureTestingModule({ 13 | declarations: [ UserChooserComponent ] 14 | }) 15 | .compileComponents(); 16 | })); 17 | 18 | beforeEach(() => { 19 | fixture = TestBed.createComponent(UserChooserComponent); 20 | component = fixture.componentInstance; 21 | fixture.detectChanges(); 22 | }); 23 | 24 | it('should create', () => { 25 | expect(component).toBeTruthy(); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/util.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | export function uuidv4() { 4 | return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(c) { 5 | var r = Math.random() * 16 | 0, v = c == "x" ? r : (r & 0x3 | 0x8); 6 | return v.toString(16); 7 | }); 8 | } 9 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/venn-diag/venn-diag.component.css: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/venn-diag/venn-diag.component.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/venn-diag/venn-diag.component.spec.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 4 | 5 | import { VennDiagComponent } from './venn-diag.component'; 6 | 7 | describe('VennDiagComponent', () => { 8 | let component: VennDiagComponent; 9 | let fixture: ComponentFixture; 10 | 11 | beforeEach(waitForAsync(() => { 12 | TestBed.configureTestingModule({ 13 | declarations: [ VennDiagComponent ] 14 | }) 15 | .compileComponents(); 16 | })); 17 | 18 | beforeEach(() => { 19 | fixture = TestBed.createComponent(VennDiagComponent); 20 | component = fixture.componentInstance; 21 | fixture.detectChanges(); 22 | }); 23 | 24 | it('should create', () => { 25 | expect(component).toBeTruthy(); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/view-collections/view-collections.component.css: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | .filter-bar { 4 | position: absolute; 5 | top: 64px; 6 | height: 58px; 7 | padding: 0px 16px; 8 | width: 100%; 9 | display: flex; 10 | align-items: center; 11 | flex-direction: row; 12 | border-bottom: 1px solid rgba(0, 0, 0, 0.12); 13 | } 14 | 15 | ::ng-deep .archive-toggle .mat-button-toggle-label-content { 16 | line-height: 32px !important; 17 | } 18 | 19 | .keyword-input { 20 | width: 280px; 21 | } 22 | 23 | .page-container > .page-content { 24 | top: 122px !important; 25 | padding: 0px !important; 26 | } 27 | 28 | .page-container > .page-content table { 29 | width: 100%; 30 | } -------------------------------------------------------------------------------- /frontend/annotation/src/app/component/view-collections/view-collections.component.spec.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 4 | 5 | import { ViewCollectionsComponent } from './view-collections.component'; 6 | 7 | describe('ViewCollectionsComponent', () => { 8 | let component: ViewCollectionsComponent; 9 | let fixture: ComponentFixture; 10 | 11 | beforeEach(waitForAsync(() => { 12 | TestBed.configureTestingModule({ 13 | declarations: [ ViewCollectionsComponent ] 14 | }) 15 | .compileComponents(); 16 | })); 17 | 18 | beforeEach(() => { 19 | fixture = TestBed.createComponent(ViewCollectionsComponent); 20 | component = fixture.componentInstance; 21 | fixture.detectChanges(); 22 | }); 23 | 24 | it('should create', () => { 25 | expect(component).toBeTruthy(); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/model/app.config.ts: -------------------------------------------------------------------------------- 1 | // (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | export interface IAppConfig { 4 | env: { 5 | name: string; 6 | }; 7 | backend: { 8 | host: string; 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/model/backend.ts: -------------------------------------------------------------------------------- 1 | 2 | export interface About { 3 | flask_version: string; 4 | version: string; 5 | db: { 6 | eve_version: string; 7 | flask_version: string; 8 | version: string; 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/model/classifier.ts: -------------------------------------------------------------------------------- 1 | // (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | import { DBObject, DBObjects, ModelObject } from "./db"; 4 | 5 | export interface DBClassifier extends DBObject { 6 | collection_id: string; 7 | labels: string[]; 8 | overlap: number; 9 | pipeline_id: string; 10 | parameters: {[key: string]: string}; 11 | } 12 | 13 | export interface DBClassifiers extends DBObjects { 14 | _items: DBClassifier[]; 15 | } 16 | 17 | export class Classifier extends ModelObject implements DBClassifier { 18 | 19 | public collection_id: string; 20 | public labels: string[]; 21 | public overlap: number; 22 | public pipeline_id: string; 23 | public parameters: {[key: string]: string}; 24 | 25 | public static fromDB(dbObj: DBClassifier): Classifier { 26 | return Object.setPrototypeOf(dbObj, new Classifier()); 27 | } 28 | 29 | public static fromDBItems(dbObjs: DBClassifiers): Classifier[] { 30 | return dbObjs._items.map(Classifier.fromDB); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/model/created.ts: -------------------------------------------------------------------------------- 1 | // (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | import { DBObject } from "./db"; 4 | 5 | export interface CreatedObject extends DBObject { 6 | _status: string; 7 | } 8 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/model/db.ts: -------------------------------------------------------------------------------- 1 | // (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | export interface DBObject { 4 | _id: string; 5 | _updated: Date; 6 | _created: Date; 7 | _etag: string; 8 | _links?: object; 9 | _latest_version?: number; 10 | _version?: number; 11 | } 12 | 13 | export class ModelObject implements DBObject { 14 | 15 | public _id: string; 16 | public _updated: Date; 17 | public _created: Date; 18 | public _etag: string; 19 | public _links?: object; 20 | public _latest_version?: number; 21 | public _version?: number; 22 | 23 | } 24 | 25 | export interface DBMeta { 26 | page: number; 27 | total: number; 28 | max_results: number; 29 | } 30 | 31 | export interface DBObjects { 32 | _items: DBObject[]; 33 | _links?: object; 34 | _meta?: DBMeta; 35 | } 36 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/model/login.ts: -------------------------------------------------------------------------------- 1 | // (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | // see models.py in backend 4 | 5 | export enum LoginFormFieldType { 6 | TEXT = "text", 7 | PASSWORD = "password" 8 | } 9 | 10 | export interface LoginFormField { 11 | name: string; 12 | display: string; 13 | type: LoginFormFieldType; 14 | } 15 | 16 | export interface LoginForm { 17 | fields: LoginFormField[]; 18 | button_text: string; 19 | } 20 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/model/pipeline.ts: -------------------------------------------------------------------------------- 1 | // (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | import { DBObject, DBObjects, ModelObject } from "./db"; 4 | 5 | export interface DBPipeline extends DBObject { 6 | title: string; 7 | description: string; 8 | parameters: object; 9 | } 10 | 11 | export interface DBPipelines extends DBObjects { 12 | _items: DBPipeline[]; 13 | } 14 | 15 | export class Pipeline extends ModelObject implements DBPipeline { 16 | 17 | public title: string; 18 | public description: string; 19 | public parameters: object; 20 | 21 | public static fromDB(dbObj: DBPipeline): Pipeline { 22 | return Object.setPrototypeOf(dbObj, new Pipeline()); 23 | } 24 | 25 | public static fromDBItems(dbObjs: DBPipelines): Pipeline[] { 26 | return dbObjs._items.map(Pipeline.fromDB); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/service/admin/admin.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed, inject } from '@angular/core/testing'; 2 | 3 | import { AdminService } from './admin.service'; 4 | 5 | describe('AdminService', () => { 6 | beforeEach(() => { 7 | TestBed.configureTestingModule({ 8 | providers: [AdminService] 9 | }); 10 | }); 11 | 12 | it('should be created', inject([AdminService], (service: AdminService) => { 13 | expect(service).toBeTruthy(); 14 | })); 15 | }); 16 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/service/annotated/annotated.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import { AnnotatedService } from './annotated.service'; 4 | 5 | describe('AnnotatedService', () => { 6 | beforeEach(() => TestBed.configureTestingModule({})); 7 | 8 | it('should be created', () => { 9 | const service: AnnotatedService = TestBed.get(AnnotatedService); 10 | expect(service).toBeTruthy(); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/service/annotated/annotated.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { Subject } from 'rxjs'; 3 | 4 | @Injectable({ 5 | providedIn: 'root' 6 | }) 7 | export class AnnotatedService { 8 | 9 | constructor() { } 10 | 11 | public documentAnnotated = new Subject(); 12 | 13 | 14 | changeDocumentStatus(document: any) { 15 | this.documentAnnotated.next(document); 16 | } 17 | 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/service/annotation/annotation.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed, inject } from '@angular/core/testing'; 2 | 3 | import { AnnotationService } from './annotation.service'; 4 | 5 | describe('AnnotationService', () => { 6 | beforeEach(() => { 7 | TestBed.configureTestingModule({ 8 | providers: [AnnotationService] 9 | }); 10 | }); 11 | 12 | it('should be created', inject([AnnotationService], (service: AnnotationService) => { 13 | expect(service).toBeTruthy(); 14 | })); 15 | }); 16 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/service/auth/auth-module.ts: -------------------------------------------------------------------------------- 1 | import { Observable } from "rxjs"; 2 | 3 | import { LoginComponent } from "../../component/login/login.component"; 4 | 5 | import { User, UserDetails } from "../../model/user"; 6 | 7 | export abstract class AuthModule { 8 | 9 | public abstract login(values, returnTo: string, component: LoginComponent); 10 | 11 | public abstract getUserDisplayName(user_id: string): string; 12 | 13 | public reloadAllUsers(): Observable { 14 | return null; 15 | } 16 | 17 | public getAllUsers(): Observable { 18 | return null; 19 | } 20 | 21 | public updateLoggedInUserDetails(details: UserDetails): Observable { 22 | return null; 23 | } 24 | 25 | public updateLoggedInUserPassword(currentPassword: string, newPassword: string): Observable { 26 | return null; 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/service/auth/modules/oauth-authorize.component.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/service/auth/modules/vegas-auth-module.ts: -------------------------------------------------------------------------------- 1 | 2 | import { OAuthModule } from "./oauth-module"; 3 | 4 | export class VegasAuthModule extends OAuthModule { 5 | 6 | public static NAME = "vegas"; 7 | 8 | } 9 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/service/backend/backend.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed, inject } from '@angular/core/testing'; 2 | 3 | import { BackendService } from './backend.service'; 4 | 5 | describe('BackendService', () => { 6 | beforeEach(() => { 7 | TestBed.configureTestingModule({ 8 | providers: [BackendService] 9 | }); 10 | }); 11 | 12 | it('should be created', inject([BackendService], (service: BackendService) => { 13 | expect(service).toBeTruthy(); 14 | })); 15 | }); 16 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/service/collection-repository/collection-repository.service.spec.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | import { TestBed, inject } from '@angular/core/testing'; 4 | 5 | import { CollectionRepositoryService } from './collection-repository.service'; 6 | 7 | describe('CollectionRepositoryService', () => { 8 | beforeEach(() => { 9 | TestBed.configureTestingModule({ 10 | providers: [CollectionRepositoryService] 11 | }); 12 | }); 13 | 14 | it('should be created', inject([CollectionRepositoryService], (service: CollectionRepositoryService) => { 15 | expect(service).toBeTruthy(); 16 | })); 17 | }); 18 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/service/document-repository/document-repository.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed, inject } from '@angular/core/testing'; 2 | 3 | import { DocumentRepositoryService } from './document-repository.service'; 4 | 5 | describe('DocumentRepositoryService', () => { 6 | beforeEach(() => { 7 | TestBed.configureTestingModule({ 8 | providers: [DocumentRepositoryService] 9 | }); 10 | }); 11 | 12 | it('should be created', inject([DocumentRepositoryService], (service: DocumentRepositoryService) => { 13 | expect(service).toBeTruthy(); 14 | })); 15 | }); 16 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/service/event/event.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed, inject } from '@angular/core/testing'; 2 | 3 | import { EventService } from './event.service'; 4 | 5 | describe('EventService', () => { 6 | beforeEach(() => { 7 | TestBed.configureTestingModule({ 8 | providers: [EventService] 9 | }); 10 | }); 11 | 12 | it('should be created', inject([EventService], (service: EventService) => { 13 | expect(service).toBeTruthy(); 14 | })); 15 | }); 16 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/service/event/event.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable, EventEmitter } from '@angular/core'; 2 | 3 | import { Collection } from "../../model/collection"; 4 | 5 | export interface AddedDocumentIds { 6 | documentId: string; 7 | collectionId: string; 8 | } 9 | 10 | @Injectable({ 11 | providedIn: 'root' 12 | }) 13 | export class EventService { 14 | 15 | public showUserMessage: EventEmitter = new EventEmitter(); 16 | 17 | public collectionAddedOrArchived: EventEmitter = new EventEmitter(); 18 | 19 | public systemDataImported: EventEmitter = new EventEmitter(); 20 | 21 | //public documentAdded: EventEmitter = new EventEmitter(); 22 | 23 | public documentAddedById: EventEmitter = new EventEmitter(); 24 | 25 | public logout: EventEmitter = new EventEmitter(); 26 | 27 | constructor() { } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/service/iaa-reporting/iaa-reporting.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import { IaaReportingService } from './iaa-reporting.service'; 4 | 5 | describe('IaaReportingService', () => { 6 | beforeEach(() => TestBed.configureTestingModule({})); 7 | 8 | it('should be created', () => { 9 | const service: IaaReportingService = TestBed.get(IaaReportingService); 10 | expect(service).toBeTruthy(); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/service/iaa-reporting/iaa-reporting.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { BackendService } from '../backend/backend.service'; 3 | import { DBIAAReports, IAAReport } from 'src/app/model/iaareport'; 4 | import { map } from 'rxjs/operators'; 5 | import { Observable } from 'rxjs'; 6 | 7 | @Injectable({ 8 | providedIn: 'root' 9 | }) 10 | export class IaaReportingService { 11 | 12 | constructor(private backend : BackendService) { } 13 | 14 | createIAAReport(collection_id){ 15 | return this.backend.post('/iaa_reports/by_collection_id/' + collection_id) 16 | } 17 | getIIAReportByCollection(collection_id): Observable{ 18 | return this.backend.get('/iaa_reports/by_collection_id/' + collection_id).pipe(map(IAAReport.fromDBItems)) 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/service/image/image-filter.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import { ImageFilterService } from './image-filter.service'; 4 | 5 | describe('ImageFilterService', () => { 6 | beforeEach(() => TestBed.configureTestingModule({})); 7 | 8 | it('should be created', () => { 9 | const service: ImageFilterService = TestBed.get(ImageFilterService); 10 | expect(service).toBeTruthy(); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/service/metrics/metrics.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed, inject } from '@angular/core/testing'; 2 | 3 | import { MetricsService } from './metrics.service'; 4 | 5 | describe('MetricsService', () => { 6 | beforeEach(() => { 7 | TestBed.configureTestingModule({ 8 | providers: [MetricsService] 9 | }); 10 | }); 11 | 12 | it('should be created', inject([MetricsService], (service: MetricsService) => { 13 | expect(service).toBeTruthy(); 14 | })); 15 | }); 16 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/service/pipeline/pipeline.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed, inject } from '@angular/core/testing'; 2 | 3 | import { PipelineService } from './pipeline.service'; 4 | 5 | describe('PipelineService', () => { 6 | beforeEach(() => { 7 | TestBed.configureTestingModule({ 8 | providers: [PipelineService] 9 | }); 10 | }); 11 | 12 | it('should be created', inject([PipelineService], (service: PipelineService) => { 13 | expect(service).toBeTruthy(); 14 | })); 15 | }); 16 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/service/settings/settings.service.spec.ts: -------------------------------------------------------------------------------- 1 | // (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | import { TestBed } from '@angular/core/testing'; 4 | 5 | import { SettingsService } from './settings.service'; 6 | 7 | describe('SettingsService', () => { 8 | beforeEach(() => TestBed.configureTestingModule({})); 9 | 10 | it('should be created', () => { 11 | const service: SettingsService = TestBed.get(SettingsService); 12 | expect(service).toBeTruthy(); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /frontend/annotation/src/app/service/status-bar/status-bar.service.spec.ts: -------------------------------------------------------------------------------- 1 | /*(C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | import { TestBed } from "@angular/core/testing"; 4 | 5 | import { StatusBarService } from "./status-bar.service"; 6 | 7 | describe("StatusBarService", () => { 8 | beforeEach(() => TestBed.configureTestingModule({})); 9 | 10 | it("should be created", () => { 11 | const service: StatusBarService = TestBed.get(StatusBarService); 12 | expect(service).toBeTruthy(); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /frontend/annotation/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/frontend/annotation/src/assets/.gitkeep -------------------------------------------------------------------------------- /frontend/annotation/src/assets/config/config.dev.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "name": "dev" 4 | }, 5 | "backend": { 6 | "host": "http://localhost:5000" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /frontend/annotation/src/assets/config/config.prod.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "name": "prod" 4 | }, 5 | "backend": { 6 | "host": "api" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /frontend/annotation/src/assets/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/frontend/annotation/src/assets/favicon.png -------------------------------------------------------------------------------- /frontend/annotation/src/assets/pine_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/frontend/annotation/src/assets/pine_large.png -------------------------------------------------------------------------------- /frontend/annotation/src/assets/pine_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/frontend/annotation/src/assets/pine_logo.png -------------------------------------------------------------------------------- /frontend/annotation/src/assets/pine_logo.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/frontend/annotation/src/assets/pine_logo.xcf -------------------------------------------------------------------------------- /frontend/annotation/src/assets/pine_medium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/frontend/annotation/src/assets/pine_medium.png -------------------------------------------------------------------------------- /frontend/annotation/src/assets/pine_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/frontend/annotation/src/assets/pine_small.png -------------------------------------------------------------------------------- /frontend/annotation/src/assets/pmed_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/frontend/annotation/src/assets/pmed_icon.png -------------------------------------------------------------------------------- /frontend/annotation/src/assets/pmed_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/frontend/annotation/src/assets/pmed_logo.png -------------------------------------------------------------------------------- /frontend/annotation/src/assets/tree_icon_sketch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/frontend/annotation/src/assets/tree_icon_sketch.png -------------------------------------------------------------------------------- /frontend/annotation/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | // (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | export const environment = { 4 | name: "prod", 5 | production: true 6 | }; 7 | -------------------------------------------------------------------------------- /frontend/annotation/src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | // (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | // This file can be replaced during build by using the `fileReplacements` array. 4 | // `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`. 5 | // The list of file replacements can be found in `angular.json`. 6 | 7 | export const environment = { 8 | name: "dev", 9 | production: false 10 | }; 11 | 12 | /* 13 | * In development mode, to ignore zone related error stack frames such as 14 | * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can 15 | * import the following file, but please comment it out in production mode 16 | * because it will have performance impact when throw error 17 | */ 18 | // import 'zone.js/plugins/zone-error'; // Included with Angular CLI. 19 | -------------------------------------------------------------------------------- /frontend/annotation/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | PINE 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 |
19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /frontend/annotation/src/main.ts: -------------------------------------------------------------------------------- 1 | // (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | import { enableProdMode } from '@angular/core'; 4 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 5 | 6 | import { AppModule } from './app/app.module'; 7 | import { environment } from './environments/environment'; 8 | 9 | if (environment.production) { 10 | enableProdMode(); 11 | } 12 | 13 | platformBrowserDynamic().bootstrapModule(AppModule) 14 | .catch(err => console.log(err)); 15 | -------------------------------------------------------------------------------- /frontend/annotation/src/test.ts: -------------------------------------------------------------------------------- 1 | // (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 4 | 5 | import 'zone.js/testing'; 6 | import { getTestBed } from '@angular/core/testing'; 7 | import { 8 | BrowserDynamicTestingModule, 9 | platformBrowserDynamicTesting 10 | } from '@angular/platform-browser-dynamic/testing'; 11 | 12 | declare const require: any; 13 | 14 | // First, initialize the Angular testing environment. 15 | getTestBed().initTestEnvironment( 16 | BrowserDynamicTestingModule, 17 | platformBrowserDynamicTesting() 18 | ); 19 | // Then we find all the tests. 20 | const context = require.context('./', true, /\.spec\.ts$/); 21 | // And load the modules. 22 | context.keys().map(context); 23 | -------------------------------------------------------------------------------- /frontend/annotation/src/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "types": [], 6 | "resolveJsonModule": true, 7 | "allowSyntheticDefaultImports": true 8 | }, 9 | "files": [ 10 | "main.ts", 11 | "polyfills.ts" 12 | ], 13 | "include": [ 14 | "src/**/*.d.ts" 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /frontend/annotation/src/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/spec", 5 | "types": [ 6 | "jasmine", 7 | "node" 8 | ] 9 | }, 10 | "files": [ 11 | "test.ts", 12 | "polyfills.ts" 13 | ], 14 | "include": [ 15 | "**/*.spec.ts", 16 | "**/*.d.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /frontend/annotation/src/tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tslint.json", 3 | "rules": { 4 | "directive-selector": [ 5 | true, 6 | "attribute", 7 | "app", 8 | "camelCase" 9 | ], 10 | "component-selector": [ 11 | true, 12 | "element", 13 | "app", 14 | "kebab-case" 15 | ], 16 | "quotemark": [false], 17 | "whitespace": [true, "check-decl", "check-operator", "check-module", "check-separator", 18 | "check-rest-spread", "check-type", "check-type-operator", 19 | "check-preblock"] 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /frontend/annotation/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "baseUrl": "./", 5 | "downlevelIteration": true, 6 | "importHelpers": true, 7 | "module": "es2020", 8 | "outDir": "./dist/out-tsc", 9 | "sourceMap": true, 10 | "declaration": false, 11 | "moduleResolution": "node", 12 | "experimentalDecorators": true, 13 | "target": "es2015", 14 | "typeRoots": [ 15 | "node_modules/@types" 16 | ], 17 | "lib": [ 18 | "es2017", 19 | "dom" 20 | ] 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /generate_documentation.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 3 | 4 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" 5 | 6 | pushd ${DIR}/docs &>/dev/null 7 | pipenv run doc 8 | popd &>/dev/null 9 | 10 | echo "See documentation in docs/build." 11 | -------------------------------------------------------------------------------- /pine-chart/.helmignore: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | # Patterns to ignore when building packages. 4 | # This supports shell glob matching, relative path matching, and 5 | # negation (prefixed with !). Only one pattern per line. 6 | .DS_Store 7 | # Common VCS dirs 8 | .git/ 9 | .gitignore 10 | .bzr/ 11 | .bzrignore 12 | .hg/ 13 | .hgignore 14 | .svn/ 15 | # Common backup files 16 | *.swp 17 | *.bak 18 | *.tmp 19 | *~ 20 | # Various IDEs 21 | .project 22 | .idea/ 23 | *.tmproj 24 | -------------------------------------------------------------------------------- /pine-chart/Chart.yaml: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | apiVersion: v1 4 | appVersion: "1.1" 5 | description: A Helm chart to deploy pine to Kubernetes 6 | name: pine-chart 7 | version: 0.1.1 8 | -------------------------------------------------------------------------------- /pine-chart/templates/backend-service.yaml: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | {{- $component := .Values.backend }} 3 | apiVersion: v1 4 | kind: Service 5 | metadata: 6 | name: {{ template "pine-chart.fullname" . }}-{{ $component.name }} 7 | labels: 8 | name: {{ template "pine-chart.name" . }} 9 | component: {{ $component.name }} 10 | release: {{ .Release.Name }} 11 | heritage: {{ .Release.Service }} 12 | {{- with $component.service.annotations }} 13 | annotations: 14 | {{ toYaml . | indent 4 }} 15 | {{- end }} 16 | spec: 17 | type: {{ $component.service.type }} 18 | ports: 19 | - port: {{ $component.service.port }} 20 | targetPort: {{ $component.service.targetPort }} 21 | protocol: TCP 22 | name: http 23 | selector: 24 | app: {{ template "pine-chart.name" . }} 25 | component: {{ $component.name }} 26 | release: {{ .Release.Name }} 27 | -------------------------------------------------------------------------------- /pine-chart/templates/eve-service.yaml: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | {{- $component := .Values.eve }} 3 | apiVersion: v1 4 | kind: Service 5 | metadata: 6 | name: {{ template "pine-chart.fullname" . }}-{{ $component.name }} 7 | labels: 8 | name: {{ template "pine-chart.name" . }} 9 | component: {{ $component.name }} 10 | release: {{ .Release.Name }} 11 | heritage: {{ .Release.Service }} 12 | {{- with $component.service.annotations }} 13 | annotations: 14 | {{ toYaml . | indent 4 }} 15 | {{- end }} 16 | spec: 17 | type: {{ $component.service.type }} 18 | ports: 19 | - port: {{ $component.service.port }} 20 | targetPort: {{ $component.service.targetPort }} 21 | protocol: TCP 22 | name: http 23 | selector: 24 | app: {{ template "pine-chart.name" . }} 25 | component: {{ $component.name }} 26 | release: {{ .Release.Name }} 27 | -------------------------------------------------------------------------------- /pine-chart/templates/frontend-service.yaml: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | {{- $component := .Values.frontend }} 3 | apiVersion: v1 4 | kind: Service 5 | metadata: 6 | name: {{ template "pine-chart.fullname" . }}-{{ $component.name }} 7 | labels: 8 | name: {{ template "pine-chart.name" . }} 9 | component: {{ $component.name }} 10 | release: {{ .Release.Name }} 11 | heritage: {{ .Release.Service }} 12 | {{- with $component.service.annotations }} 13 | annotations: 14 | {{ toYaml . | indent 4 }} 15 | {{- end }} 16 | spec: 17 | type: {{ $component.service.type }} 18 | ports: 19 | - port: {{ $component.service.port }} 20 | targetPort: {{ $component.service.port }} 21 | protocol: TCP 22 | name: http 23 | selector: 24 | app: {{ template "pine-chart.name" . }} 25 | component: {{ $component.name }} 26 | release: {{ .Release.Name }} 27 | -------------------------------------------------------------------------------- /pine-chart/templates/pine-network-policy.yaml: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | kind: NetworkPolicy 4 | apiVersion: networking.k8s.io/v1 5 | 6 | metadata: 7 | name: pine-network-policy 8 | namespace: {{ .Values.namespace }} 9 | spec: 10 | podSelector: 11 | matchLabels: 12 | app: {{ template "pine-chart.name" . }} 13 | ingress: 14 | - from: 15 | - podSelector: 16 | matchLabels: 17 | app: {{ template "pine-chart.name" . }} 18 | -------------------------------------------------------------------------------- /pine-chart/templates/pine-redis-disk-pvc.yaml: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | # https://docs.microsoft.com/en-us/azure/aks/azure-disks-dynamic-pv 3 | 4 | {{- if .Values.redis.persistence.enabled }} 5 | apiVersion: v1 6 | kind: PersistentVolumeClaim 7 | metadata: 8 | name: pine-redis-disk-pvc 9 | labels: 10 | app: {{ template "pine-chart.name" . }} 11 | chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" 12 | release: "{{ .Release.Name }}" 13 | heritage: "{{ .Release.Service }}" 14 | spec: 15 | accessModes: 16 | - ReadWriteOnce 17 | resources: 18 | requests: 19 | storage: 32Gi # 32Gi is smallest billable size 20 | {{- end }} 21 | -------------------------------------------------------------------------------- /pine-chart/templates/redis-service.yaml: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | {{- $component := .Values.redis }} 3 | apiVersion: v1 4 | kind: Service 5 | metadata: 6 | name: {{ template "pine-chart.fullname" . }}-{{ $component.name }} 7 | labels: 8 | name: {{ template "pine-chart.name" . }} 9 | component: {{ $component.name }} 10 | release: {{ .Release.Name }} 11 | heritage: {{ .Release.Service }} 12 | {{- with $component.service.annotations }} 13 | annotations: 14 | {{ toYaml . | indent 4 }} 15 | {{- end }} 16 | spec: 17 | type: {{ $component.service.type }} 18 | ports: 19 | - port: {{ $component.service.port }} 20 | targetPort: {{ $component.service.port }} 21 | protocol: TCP 22 | name: http 23 | selector: 24 | app: {{ template "pine-chart.name" . }} 25 | component: {{ $component.name }} 26 | release: {{ .Release.Name }} 27 | -------------------------------------------------------------------------------- /pine-chart/templates/secrets.yaml: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | {{- $root := . }} 3 | {{- range $name, $values := .Values.secrets }} 4 | apiVersion: v1 5 | kind: Secret 6 | metadata: 7 | name: {{ template "pine-chart.fullname" $root }}-{{ $name }} 8 | data: 9 | {{- range $key, $value := $values }} 10 | {{ $key }}: {{ $value | b64enc }} 11 | {{- end }} 12 | --- 13 | {{- end }} 14 | -------------------------------------------------------------------------------- /pipelines/Pipfile: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | [[source]] 4 | name = "pypi" 5 | url = "https://pypi.org/simple" 6 | verify_ssl = true 7 | 8 | [dev-packages] 9 | 10 | [packages] 11 | backoff = "~=1.11.1" 12 | cython = "~=0.29.24" 13 | multiprocessing-logging = "~=0.3.1" 14 | munch = "~=2.5.0" 15 | pebble = "~=4.6.1" 16 | pydash = "~=5.0.2" 17 | pyjnius = "~=1.3.0" 18 | redis = "~=3.5.3" 19 | spacy = "~=2.3.7" # we're a major release behind 20 | scikit-learn = "~=0.24.2" 21 | scikit-multilearn = "~=0.2.0" 22 | python-json-logger = "~=2.0.2" 23 | overrides = "~=6.1.0" 24 | typing-extensions = "~=3.10.0.0" 25 | pandas = "~=1.3.3" 26 | simpletransformers = "~=0.61.13" 27 | torch = {file = "https://download.pytorch.org/whl/cpu/torch-1.9.0%2Bcpu-cp38-cp38-linux_x86_64.whl"} 28 | nltk = "~=3.6.7" 29 | 30 | [requires] 31 | python_version = "3.8" 32 | -------------------------------------------------------------------------------- /pipelines/dev_run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 3 | 4 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 5 | if [[ -n ${DATA_DIR} ]]; then 6 | export AL_ROOT_DIR=${DATA_DIR} 7 | mkdir -p ${DATA_DIR}/models ${DATA_DIR}/tmp 8 | fi 9 | 10 | set -x 11 | 12 | pipenv run python3 -m nltk.downloader punkt 13 | 14 | PIDS="" 15 | for SERVICE in simpletransformers opennlp corenlp spacy; do 16 | AL_PIPELINE=${SERVICE} pipenv run python3 -m pine.pipelines.run_service & 17 | PIDS="${PIDS} $!" 18 | done 19 | 20 | for PID in ${PIDS}; do 21 | wait ${PID} 22 | done 23 | -------------------------------------------------------------------------------- /pipelines/docker/docker-entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | SKIP_PERMISSION_FIX=${SKIP_PERMISSION_FIX:-0} 5 | ROOT_DIR=${ROOT_DIR:-/nlp-web-app/pipelines} 6 | 7 | if [[ ${SKIP_PERMISSION_FIX} = "0" ]]; then 8 | #echo "Fixing Permissions" 9 | for v in ${ROOT_DIR}; do 10 | chown -R nlp_user:nlp_user ${v} 11 | #echo "Changed ${v} Permissions to Active Learning" 12 | done 13 | #else 14 | #echo "Skipped Fixing Permissions" 15 | fi 16 | 17 | #echo "Lowering Privileges and Starting Active Learning" 18 | exec /usr/local/bin/gosu nlp_user "$@" 19 | -------------------------------------------------------------------------------- /pipelines/docker/empty.crt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/pipelines/docker/empty.crt -------------------------------------------------------------------------------- /pipelines/docker/gosu-110-amd64.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/pipelines/docker/gosu-110-amd64.bin -------------------------------------------------------------------------------- /pipelines/docker/tini-static-amd64.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/pipelines/docker/tini-static-amd64.bin -------------------------------------------------------------------------------- /pipelines/docker_run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 4 | 5 | set -e 6 | 7 | python3 -m pine.pipelines.run_service 8 | -------------------------------------------------------------------------------- /pipelines/pine/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/pipelines/pine/__init__.py -------------------------------------------------------------------------------- /pipelines/pine/pipelines/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/pipelines/pine/pipelines/__init__.py -------------------------------------------------------------------------------- /pipelines/pine/pipelines/app/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | # ********************************************************************** 4 | # Copyright (C) 2018 Johns Hopkins University Applied Physics Laboratory 5 | # 6 | # All Rights Reserved. 7 | # This material may only be used, modified, or reproduced by or for the 8 | # U.S. government pursuant to the license rights granted under FAR 9 | # clause 52.227-14 or DFARS clauses 252.227-7013/7014. 10 | # For any other permission, please contact the Legal Office at JHU/APL. 11 | # ********************************************************************** 12 | -------------------------------------------------------------------------------- /pipelines/pine/pipelines/app/listener/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/pipelines/pine/pipelines/app/listener/__init__.py -------------------------------------------------------------------------------- /pipelines/pine/pipelines/resources/.gitignore: -------------------------------------------------------------------------------- 1 | /apache-opennlp-*.tar.gz 2 | /stanford-corenlp-full-*.zip 3 | /stanford-ner-*.zip 4 | 5 | /apache-opennlp-*/ 6 | /stanford-corenlp-full-*/ 7 | /stanford-ner-*/ 8 | -------------------------------------------------------------------------------- /pipelines/pine/pipelines/run_service.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | # ********************************************************************** 4 | # Copyright (C) 2018 Johns Hopkins University Applied Physics Laboratory 5 | # 6 | # All Rights Reserved. 7 | # This material may only be used, modified, or reproduced by or for the 8 | # U.S. government pursuant to the license rights granted under FAR 9 | # clause 52.227-14 or DFARS clauses 252.227-7013/7014. 10 | # For any other permission, please contact the Legal Office at JHU/APL. 11 | # ********************************************************************** 12 | 13 | import sys 14 | 15 | from .app.listener import main 16 | 17 | if __name__ == "__main__": 18 | sys.exit(main.run()) 19 | -------------------------------------------------------------------------------- /pipelines/pine/pipelines/shared/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | # ********************************************************************** 4 | # Copyright (C) 2018 Johns Hopkins University Applied Physics Laboratory 5 | # 6 | # All Rights Reserved. 7 | # This material may only be used, modified, or reproduced by or for the 8 | # U.S. government pursuant to the license rights granted under FAR 9 | # clause 52.227-14 or DFARS clauses 252.227-7013/7014. 10 | # For any other permission, please contact the Legal Office at JHU/APL. 11 | # ********************************************************************** 12 | -------------------------------------------------------------------------------- /pipelines/requirements.in: -------------------------------------------------------------------------------- 1 | backoff 2 | cython 3 | munch 4 | pebble 5 | pydash 6 | pyjnius 7 | redis 8 | spacy 9 | sklearn 10 | scikit-multilearn 11 | -------------------------------------------------------------------------------- /prepend.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 3 | 4 | if [[ $# -lt 3 ]]; then 5 | echo "Usage: $0 [...]" 6 | exit 1 7 | fi 8 | 9 | STDOUT_PREFIX="$1" 10 | STDERR_PREFIX="$2" 11 | shift 2 12 | COMMAND=$@ 13 | 14 | prepend() { 15 | local line 16 | while read line; do 17 | printf '%b: %s\n' "$1" "$line" 18 | done 19 | } 20 | 21 | STDOUT=$(mktemp -u) 22 | STDERR=$(mktemp -u) 23 | mkfifo "$STDOUT" "$STDERR" 24 | trap "rm -f \"$STDOUT\" \"$STDERR\"" EXIT 25 | 26 | prepend "${STDOUT_PREFIX}" < "$STDOUT" >&1 & 27 | prepend "${STDERR_PREFIX}" < "$STDERR" >&2 & 28 | eval "$COMMAND" 1> "$STDOUT" 2> "$STDERR" 29 | EXIT=$? 30 | 31 | wait 32 | exit $EXIT 33 | 34 | -------------------------------------------------------------------------------- /redis/.gitignore: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | /redis-server.log 4 | /data 5 | -------------------------------------------------------------------------------- /redis/Dockerfile: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | FROM ubuntu:20.04 4 | 5 | ENV LC_ALL C.UTF-8 6 | ENV LANG C.UTF-8 7 | ENV DEBIAN_FRONTEND noninteractive 8 | 9 | RUN apt-get clean && \ 10 | apt-get -y update && \ 11 | apt-get -y install software-properties-common ca-certificates 12 | 13 | ARG PORT=6379 14 | ARG ROOT_DIR=/nlp-web-app/redis 15 | ARG DATA_DIR=/nlp-web-app/redis/data 16 | ARG LOG_DIR=/nlp-web-app/logs/redis 17 | 18 | ARG REDIS_ETC=/etc/redis 19 | 20 | EXPOSE $PORT 21 | VOLUME ["$DATA_DIR"] 22 | # log volume is handled in docker-compose 23 | 24 | ENV PORT $PORT 25 | ENV LOG_DIR $LOG_DIR 26 | ENV DATA_DIR $DATA_DIR 27 | ENV CONF_FILE $REDIS_ETC/redis.conf 28 | 29 | RUN mkdir -p $ROOT_DIR $LOG_DIR $DATA_DIR 30 | RUN apt-get update -y && \ 31 | apt-get install -y redis-server 32 | 33 | ADD conf/redis.conf conf/default-logging.conf $REDIS_ETC/ 34 | ADD docker_run.sh $ROOT_DIR 35 | 36 | WORKDIR $ROOT_DIR 37 | 38 | CMD ["./docker_run.sh"] 39 | -------------------------------------------------------------------------------- /redis/dev_run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 3 | 4 | DIR="$( cd "$( dirname "${0}" )" && pwd )" 5 | DATA_DIR=${DATA_DIR:-${DIR}/data} 6 | LOG_DIR=${LOG_DIR:-${DIR}/logs} 7 | 8 | set -ex 9 | 10 | if [[ -z ${REDIS_PORT} ]]; then 11 | REDIS_PORT="6379" 12 | fi 13 | 14 | mkdir -p ${DATA_DIR} ${LOG_DIR} 15 | 16 | redis-server conf/redis.conf \ 17 | --port ${REDIS_PORT} \ 18 | --include ${LOG_FORMAT_SNIPPET:-conf/default-logging.conf} \ 19 | --dir ${DATA_DIR} \ 20 | --logfile ${LOG_DIR}/redis-server.log \ 21 | --daemonize no 22 | -------------------------------------------------------------------------------- /redis/docker_run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 3 | 4 | set -e 5 | 6 | mkdir -p ${LOG_DIR} 7 | redis-server ${CONF_FILE} \ 8 | --include ${LOG_FORMAT_SNIPPET:-/etc/redis/default-logging.conf} \ 9 | --port ${PORT} \ 10 | --daemonize no \ 11 | --dir ${DATA_DIR} 12 | -------------------------------------------------------------------------------- /setup_dev_test_data.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 3 | 4 | set -x 5 | 6 | pushd test &> /dev/null 7 | ./setup_test_data.sh 8 | popd &> /dev/null 9 | -------------------------------------------------------------------------------- /setup_docker_test_data.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 3 | 4 | DIR="$( cd "$( dirname "${0}" )" && pwd )" 5 | source ${DIR}/.env 6 | 7 | export PINE_VERSION=$(${DIR}/version.sh) 8 | 9 | set -ex 10 | 11 | if ! nc -z localhost ${EVE_PORT} || ! nc -z localhost ${MONGO_PORT} || ! nc -z localhost ${BACKEND_PORT} || ! wget -O /dev/null -o /dev/null http://localhost:${BACKEND_PORT}/ping; then 12 | echo "Please run docker-compose up using docker-compose.test.yml." 13 | exit 1 14 | fi 15 | 16 | export BACKEND_PORT 17 | export EVE_PORT 18 | export MONGO_PORT 19 | 20 | pushd ${DIR}/test &> /dev/null 21 | ./setup_test_data.sh 22 | popd &> /dev/null 23 | -------------------------------------------------------------------------------- /shared/logging.nginx.conf: -------------------------------------------------------------------------------- 1 | #log_format pine '$remote_addr - $remote_user [$time_local] ' 2 | # '"$request" $status $body_bytes_sent ' 3 | # '"$http_referer" "$http_user_agent"'; 4 | 5 | # less verbose output 6 | access_log off; 7 | error_log /dev/stderr error; 8 | 9 | # more verbose output 10 | #access_log /dev/stdout; 11 | #error_log /dev/stderr info; 12 | -------------------------------------------------------------------------------- /test/Pipfile: -------------------------------------------------------------------------------- 1 | [[source]] 2 | name = "pypi" 3 | url = "https://pypi.org/simple" 4 | verify_ssl = true 5 | 6 | [packages] 7 | scikit-learn = "~=0.24.2" 8 | pymongo = "~=3.12.0" 9 | requests = "~=2.26.0" 10 | overrides = "~=6.1.0" 11 | python-json-logger = "~=2.0.2" 12 | bcrypt = "~=3.2.0" 13 | 14 | [dev-packages] 15 | pytest = "~=6.2.4" 16 | pytest-rerunfailures = "~=10.1" 17 | 18 | [requires] 19 | python_version = "3.8" 20 | -------------------------------------------------------------------------------- /test/data/ner_dataset.csv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JHUAPL/PINE/10fa7710576ff1e1b415406d0b9bf48dba813c81/test/data/ner_dataset.csv -------------------------------------------------------------------------------- /test/docker/pytest/Dockerfile: -------------------------------------------------------------------------------- 1 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 2 | 3 | FROM ubuntu:20.04 4 | 5 | ENV LC_ALL C.UTF-8 6 | ENV LANG C.UTF-8 7 | ENV DEBIAN_FRONTEND noninteractive 8 | 9 | RUN apt-get clean && \ 10 | apt-get -y update && \ 11 | apt-get -y install software-properties-common ca-certificates 12 | 13 | RUN apt-get -y update && \ 14 | apt-get -y install \ 15 | wget \ 16 | python3 \ 17 | python3-pip 18 | RUN pip3 install pipenv 19 | 20 | RUN mkdir -p /nlp_webapp/ 21 | WORKDIR /nlp_webapp/ 22 | 23 | COPY client/Pipfile* client/ 24 | RUN cd client && pipenv install --dev --system --deploy 25 | COPY test/Pipfile* tests/ 26 | RUN cd tests && pipenv install --dev --system --deploy 27 | 28 | COPY client/ ./client/ 29 | COPY test/tests/pytest/ ./tests/pytest/ 30 | RUN ln -s /nlp_webapp/client/pine ./tests/ 31 | COPY test/docker/pytest/docker_run.sh ./docker_run.sh 32 | COPY test/data/ ./data/ 33 | 34 | CMD ["./docker_run.sh"] 35 | -------------------------------------------------------------------------------- /test/docker/pytest/docker_run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 3 | 4 | if [[ -z ${FRONTEND_BASE_URI} ]] || [[ -z ${BACKEND_BASE_URI} ]]; then 5 | echo "Set env variables FRONTEND_BASE_URI and BACKEND_BASE_URI" 6 | exit 1 7 | fi 8 | 9 | set -x 10 | 11 | while ! wget --no-check-certificate -O /dev/null -o /dev/null ${FRONTEND_BASE_URI}; do 12 | sleep 1 13 | done 14 | 15 | while ! wget -O /dev/null -o /dev/null ${BACKEND_BASE_URI}/ping ; do 16 | sleep 1 17 | done 18 | 19 | sleep 5 20 | 21 | cd tests/ 22 | pytest pytest/ --verbose $@ 23 | -------------------------------------------------------------------------------- /test/open_with_dev_stack.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 3 | 4 | DIR="$( cd "$( dirname "${0}" )" && pwd )" 5 | source ${DIR}/tests/run_common.sh 6 | 7 | if [[ $1 == --pytest ]]; then 8 | pushd ${DIR}/tests 9 | pipenv run pytest pytest/ & 10 | PYTEST_PID="$!" 11 | popd 12 | wait ${PYTEST_PID} 13 | elif [[ $1 == --cypress ]]; then 14 | pushd ${DIR}/tests 15 | npm run cypress:open -- --config-file cypress.dev.json & 16 | CYPRESS_PID="$!" 17 | popd 18 | wait ${CYPRESS_PID} 19 | else 20 | echo "Usage: $0 [--pytest|--cypress]" 21 | exit 1 22 | fi 23 | -------------------------------------------------------------------------------- /test/setup_test_data.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 3 | 4 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" 5 | 6 | set -x 7 | 8 | export MONGO_PORT=${MONGO_PORT:-27018} 9 | export EVE_PORT=${EVE_PORT:-5001} 10 | export BACKEND_PORT=${BACKEND_PORT:-5000} 11 | 12 | export PINE_LOGGING_CONFIG_FILE=$(realpath ${DIR}/../shared/logging.python.dev.json) 13 | 14 | pushd ${DIR} &>/dev/null 15 | pipenv install --dev 16 | pipenv run python3 ./data/import_test_data.py 17 | popd &>/dev/null 18 | -------------------------------------------------------------------------------- /test/tests/.gitignore: -------------------------------------------------------------------------------- 1 | /.pytest_cache/ -------------------------------------------------------------------------------- /test/tests/cypress.dev.json: -------------------------------------------------------------------------------- 1 | { 2 | "baseUrl": "http://localhost:4200", 3 | "fixturesFolder": "../data/", 4 | "video": true, 5 | "videosFolder": "../../results/videos", 6 | "screenshotsFolder": "../../results/screenshots", 7 | "reporter": "mochawesome", 8 | "reporterOptions": { 9 | "reportDir": "../../results/reports", 10 | "overwrite": false, 11 | "html": false, 12 | "json": true 13 | }, 14 | "env": { 15 | "API_URL": "http://localhost:5000", 16 | "AUTH_MODULE": "eve", 17 | "LOGIN_USER": "ada" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /test/tests/cypress.json: -------------------------------------------------------------------------------- 1 | { 2 | "baseUrl": "https://172.17.0.1:8888", 3 | "fixturesFolder": "/nlp_webapp/data/", 4 | "video": true, 5 | "videosFolder": "/nlp_webapp/results/videos", 6 | "screenshotsFolder": "/nlp_webapp/results/screenshots", 7 | "reporter": "mochawesome", 8 | "reporterOptions": { 9 | "reportDir": "/nlp_webapp/results/reports", 10 | "overwrite": false, 11 | "html": false, 12 | "json": true 13 | }, 14 | "env": { 15 | "API_URL": "https://172.17.0.1:8888/api", 16 | "AUTH_MODULE": "eve", 17 | "LOGIN_USER": "ada" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /test/tests/cypress/plugins/index.js: -------------------------------------------------------------------------------- 1 | /* (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | // *********************************************************** 4 | // This example plugins/index.js can be used to load plugins 5 | // 6 | // You can change the location of this file or turn off loading 7 | // the plugins file with the 'pluginsFile' configuration option. 8 | // 9 | // You can read more here: 10 | // https://on.cypress.io/plugins-guide 11 | // *********************************************************** 12 | 13 | // This function is called when a project is opened or re-opened (e.g. due to 14 | // the project's config changing) 15 | 16 | module.exports = (on, config) => { 17 | // `on` is used to hook into various events Cypress emits 18 | // `config` is the resolved Cypress config 19 | } 20 | -------------------------------------------------------------------------------- /test/tests/cypress/summarize.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 3 | 4 | if [[ $# -lt 1 ]]; then 5 | echo "Usage: $0 " 6 | exit 1 7 | fi 8 | 9 | REPORT="$1" 10 | STATUS="$(dirname ${REPORT})/status" 11 | 12 | set -ex 13 | 14 | if [[ $(jq -r '.stats.passPercent' ${REPORT}) == 100 ]]; then 15 | echo "PASSED" > ${STATUS} 16 | else 17 | echo "FAILED" > ${STATUS} 18 | fi 19 | -------------------------------------------------------------------------------- /test/tests/cypress/support/index.js: -------------------------------------------------------------------------------- 1 | /* (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. */ 2 | 3 | // *********************************************************** 4 | // This example support/index.js is processed and 5 | // loaded automatically before your test files. 6 | // 7 | // This is a great place to put global configuration and 8 | // behavior that modifies Cypress. 9 | // 10 | // You can change the location of this file or turn off 11 | // automatically serving support files with the 12 | // 'supportFile' configuration option. 13 | // 14 | // You can read more here: 15 | // https://on.cypress.io/configuration 16 | // *********************************************************** 17 | 18 | // Import commands.js using ES2015 syntax: 19 | import './commands' 20 | 21 | // Alternatively you can use CommonJS syntax: 22 | // require('./commands') 23 | -------------------------------------------------------------------------------- /test/tests/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pine_test", 3 | "version": "1.0.0", 4 | "scripts": { 5 | "cypress:open": "cypress open", 6 | "cypress:record": "cypress run --record", 7 | "cypress:run": "cypress run", 8 | "mochawesome:cleanup": "rm -rf /nlp_webapp/results/reports/*", 9 | "mochawesome:merge": "mochawesome-merge /nlp_webapp/results/reports/mochawesome*.json > /nlp_webapp/results/reports/report.json && rm -f /nlp_webapp/results/reports/mochawesome*.json", 10 | "mochawesome:generate": "marge /nlp_webapp/results/reports/report.json --reportDir /nlp_webapp/results/reports/", 11 | "mochawesome:summarize": "cypress/summarize.sh /nlp_webapp/results/reports/report.json", 12 | "cypress:report": "npm run mochawesome:cleanup; npm run cypress:run; npm run mochawesome:merge; npm run mochawesome:generate; npm run mochawesome:summarize" 13 | }, 14 | "private": true, 15 | "devDependencies": { 16 | "cypress": "^8.2.0", 17 | "mocha": "^9.0.3", 18 | "mochawesome": "^6.2.2", 19 | "mochawesome-merge": "^4.2.0", 20 | "mochawesome-report-generator": "^5.2.0" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /version.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC. 3 | 4 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" 5 | 6 | command -v git >/dev/null 2>&1 7 | if [[ $? -eq 0 ]]; then 8 | cd ${DIR} 9 | git describe --long --dirty --tags --always 10 | else 11 | echo "unknown-no-git" 12 | fi 13 | --------------------------------------------------------------------------------