From 82e3cbf0e2dfc8f230fa0663cb6cf417a827faf2 Mon Sep 17 00:00:00 2001 From: Erin O'Connor Date: Sun, 3 May 2020 13:03:39 -0400 Subject: [PATCH 01/36] reorganized folder structure --- ExampleUI/.editorconfig => .editorconfig | 0 .gitignore | 155 +-- {ExampleUI/.vscode => .vscode}/launch.json | 0 ExampleApi/.vscode/launch.json | 18 - ExampleApi/.vscode/tasks.json | 14 - ExampleApi/package-lock.json | 1108 ----------------- ExampleApi/package.json | 25 - ExampleApi/src/app.ts | 24 - ExampleApi/src/common/AppRouter.ts | 28 - ExampleApi/src/common/MongoDB.ts | 117 -- ExampleApi/src/common/NodeApplication.ts | 58 - ExampleApi/src/config.ts | 7 - ExampleApi/src/mainRouter.ts | 17 - ExampleApi/src/projects/projectsController.ts | 88 -- ExampleApi/src/projects/projectsModel.ts | 24 - ExampleApi/src/projects/projectsRouter.ts | 20 - ExampleApi/src/security/securityController.ts | 62 - ExampleApi/src/security/securityMiddleware.ts | 29 - ExampleApi/src/security/securityrouter.ts | 18 - ExampleApi/src/security/userModel.ts | 47 - ExampleApi/tsconfig.json | 66 - ExampleUI/.gitignore | 46 - ExampleUI/README.md => README.md | 0 ExampleUI/angular.json => angular.json | 0 ExampleUI/browserslist => browserslist | 0 {ExampleUI/e2e => e2e}/protractor.conf.js | 0 {ExampleUI/e2e => e2e}/src/app.e2e-spec.ts | 0 {ExampleUI/e2e => e2e}/src/app.po.ts | 0 {ExampleUI/e2e => e2e}/tsconfig.json | 0 ExampleUI/karma.conf.js => karma.conf.js | 0 .../package-lock.json => package-lock.json | 0 ExampleUI/package.json => package.json | 0 .../src => src}/app/app-routing.module.ts | 0 {ExampleUI/src => src}/app/app.component.html | 0 {ExampleUI/src => src}/app/app.component.scss | 0 .../src => src}/app/app.component.spec.ts | 0 {ExampleUI/src => src}/app/app.component.ts | 0 {ExampleUI/src => src}/app/app.module.ts | 0 .../addproject/addproject.component.html | 0 .../addproject/addproject.component.scss | 0 .../addproject/addproject.component.spec.ts | 0 .../pages/addproject/addproject.component.ts | 0 .../app/pages/home/home.component.html | 0 .../app/pages/home/home.component.scss | 0 .../app/pages/home/home.component.spec.ts | 0 .../app/pages/home/home.component.ts | 0 .../app/pages/login/login.component.html | 0 .../app/pages/login/login.component.scss | 0 .../app/pages/login/login.component.spec.ts | 0 .../app/pages/login/login.component.ts | 0 .../pages/register/register.component.html | 0 .../pages/register/register.component.scss | 0 .../pages/register/register.component.spec.ts | 0 .../app/pages/register/register.component.ts | 0 .../app/services/auth.service.spec.ts | 0 .../src => src}/app/services/auth.service.ts | 0 .../app/services/projects.service.spec.ts | 0 .../app/services/projects.service.ts | 0 .../token-interceptor.service.spec.ts | 0 .../app/services/token-interceptor.service.ts | 0 {ExampleUI/src => src}/assets/.gitkeep | 0 .../environments/environment.prod.ts | 0 .../src => src}/environments/environment.ts | 0 {ExampleUI/src => src}/favicon.ico | Bin {ExampleUI/src => src}/index.html | 0 {ExampleUI/src => src}/main.ts | 0 {ExampleUI/src => src}/polyfills.ts | 0 {ExampleUI/src => src}/styles.scss | 0 {ExampleUI/src => src}/test.ts | 0 .../tsconfig.app.json => tsconfig.app.json | 0 ExampleUI/tsconfig.json => tsconfig.json | 0 .../tsconfig.spec.json => tsconfig.spec.json | 0 ExampleUI/tslint.json => tslint.json | 0 73 files changed, 46 insertions(+), 1925 deletions(-) rename ExampleUI/.editorconfig => .editorconfig (100%) rename {ExampleUI/.vscode => .vscode}/launch.json (100%) delete mode 100644 ExampleApi/.vscode/launch.json delete mode 100644 ExampleApi/.vscode/tasks.json delete mode 100644 ExampleApi/package-lock.json delete mode 100644 ExampleApi/package.json delete mode 100644 ExampleApi/src/app.ts delete mode 100644 ExampleApi/src/common/AppRouter.ts delete mode 100644 ExampleApi/src/common/MongoDB.ts delete mode 100644 ExampleApi/src/common/NodeApplication.ts delete mode 100644 ExampleApi/src/config.ts delete mode 100644 ExampleApi/src/mainRouter.ts delete mode 100644 ExampleApi/src/projects/projectsController.ts delete mode 100644 ExampleApi/src/projects/projectsModel.ts delete mode 100644 ExampleApi/src/projects/projectsRouter.ts delete mode 100644 ExampleApi/src/security/securityController.ts delete mode 100644 ExampleApi/src/security/securityMiddleware.ts delete mode 100644 ExampleApi/src/security/securityrouter.ts delete mode 100644 ExampleApi/src/security/userModel.ts delete mode 100644 ExampleApi/tsconfig.json delete mode 100644 ExampleUI/.gitignore rename ExampleUI/README.md => README.md (100%) rename ExampleUI/angular.json => angular.json (100%) rename ExampleUI/browserslist => browserslist (100%) rename {ExampleUI/e2e => e2e}/protractor.conf.js (100%) rename {ExampleUI/e2e => e2e}/src/app.e2e-spec.ts (100%) rename {ExampleUI/e2e => e2e}/src/app.po.ts (100%) rename {ExampleUI/e2e => e2e}/tsconfig.json (100%) rename ExampleUI/karma.conf.js => karma.conf.js (100%) rename ExampleUI/package-lock.json => package-lock.json (100%) rename ExampleUI/package.json => package.json (100%) rename {ExampleUI/src => src}/app/app-routing.module.ts (100%) rename {ExampleUI/src => src}/app/app.component.html (100%) rename {ExampleUI/src => src}/app/app.component.scss (100%) rename {ExampleUI/src => src}/app/app.component.spec.ts (100%) rename {ExampleUI/src => src}/app/app.component.ts (100%) rename {ExampleUI/src => src}/app/app.module.ts (100%) rename {ExampleUI/src => src}/app/pages/addproject/addproject.component.html (100%) rename {ExampleUI/src => src}/app/pages/addproject/addproject.component.scss (100%) rename {ExampleUI/src => src}/app/pages/addproject/addproject.component.spec.ts (100%) rename {ExampleUI/src => src}/app/pages/addproject/addproject.component.ts (100%) rename {ExampleUI/src => src}/app/pages/home/home.component.html (100%) rename {ExampleUI/src => src}/app/pages/home/home.component.scss (100%) rename {ExampleUI/src => src}/app/pages/home/home.component.spec.ts (100%) rename {ExampleUI/src => src}/app/pages/home/home.component.ts (100%) rename {ExampleUI/src => src}/app/pages/login/login.component.html (100%) rename {ExampleUI/src => src}/app/pages/login/login.component.scss (100%) rename {ExampleUI/src => src}/app/pages/login/login.component.spec.ts (100%) rename {ExampleUI/src => src}/app/pages/login/login.component.ts (100%) rename {ExampleUI/src => src}/app/pages/register/register.component.html (100%) rename {ExampleUI/src => src}/app/pages/register/register.component.scss (100%) rename {ExampleUI/src => src}/app/pages/register/register.component.spec.ts (100%) rename {ExampleUI/src => src}/app/pages/register/register.component.ts (100%) rename {ExampleUI/src => src}/app/services/auth.service.spec.ts (100%) rename {ExampleUI/src => src}/app/services/auth.service.ts (100%) rename {ExampleUI/src => src}/app/services/projects.service.spec.ts (100%) rename {ExampleUI/src => src}/app/services/projects.service.ts (100%) rename {ExampleUI/src => src}/app/services/token-interceptor.service.spec.ts (100%) rename {ExampleUI/src => src}/app/services/token-interceptor.service.ts (100%) rename {ExampleUI/src => src}/assets/.gitkeep (100%) rename {ExampleUI/src => src}/environments/environment.prod.ts (100%) rename {ExampleUI/src => src}/environments/environment.ts (100%) rename {ExampleUI/src => src}/favicon.ico (100%) rename {ExampleUI/src => src}/index.html (100%) rename {ExampleUI/src => src}/main.ts (100%) rename {ExampleUI/src => src}/polyfills.ts (100%) rename {ExampleUI/src => src}/styles.scss (100%) rename {ExampleUI/src => src}/test.ts (100%) rename ExampleUI/tsconfig.app.json => tsconfig.app.json (100%) rename ExampleUI/tsconfig.json => tsconfig.json (100%) rename ExampleUI/tsconfig.spec.json => tsconfig.spec.json (100%) rename ExampleUI/tslint.json => tslint.json (100%) diff --git a/ExampleUI/.editorconfig b/.editorconfig similarity index 100% rename from ExampleUI/.editorconfig rename to .editorconfig diff --git a/.gitignore b/.gitignore index 32932cd..86d943a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,109 +1,46 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -lerna-debug.log* - -# Output -out/**/*.js -out/**/*.map -out - -# Diagnostic reports (https://nodejs.org/api/report.html) -report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage -*.lcov - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (https://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules/ -jspm_packages/ - -# TypeScript v1 declaration files -typings/ - -# TypeScript cache -*.tsbuildinfo - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Microbundle cache -.rpt2_cache/ -.rts2_cache_cjs/ -.rts2_cache_es/ -.rts2_cache_umd/ - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# Yarn Integrity file -.yarn-integrity - -# dotenv environment variables file -.env -.env.test - -# parcel-bundler cache (https://parceljs.org/) -.cache - -# Next.js build output -.next - -# Nuxt.js build / generate output -.nuxt -dist - -# Gatsby files -.cache/ -# Comment in the public line in if your project uses Gatsby and *not* Next.js -# https://nextjs.org/blog/next-9-1#public-directory-support -# public - -# vuepress build output -.vuepress/dist - -# Serverless directories -.serverless/ - -# FuseBox cache -.fusebox/ - -# DynamoDB Local files -.dynamodb/ - -# TernJS port file -.tern-port +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/tmp +/out-tsc +# Only exists if Bazel was run +/bazel-out + +# dependencies +/node_modules + +# profiling files +chrome-profiler-events*.json +speed-measure-plugin*.json + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history/* + +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +yarn-error.log +testem.log +/typings + +# System Files +.DS_Store +Thumbs.db diff --git a/ExampleUI/.vscode/launch.json b/.vscode/launch.json similarity index 100% rename from ExampleUI/.vscode/launch.json rename to .vscode/launch.json diff --git a/ExampleApi/.vscode/launch.json b/ExampleApi/.vscode/launch.json deleted file mode 100644 index 1d91807..0000000 --- a/ExampleApi/.vscode/launch.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "type": "node", - "request": "launch", - "name": "Launch Program", - "preLaunchTask": "tsc: build - tsconfig.json", - "skipFiles": [ - "/**" - ], - "program": "${workspaceFolder}\\out\\app.js" - } - ] -} \ No newline at end of file diff --git a/ExampleApi/.vscode/tasks.json b/ExampleApi/.vscode/tasks.json deleted file mode 100644 index 0e125ab..0000000 --- a/ExampleApi/.vscode/tasks.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "version": "2.0.0", - "tasks": [ - { - "type": "typescript", - "tsconfig": "tsconfig.json", - "problemMatcher": [ - "$tsc" - ], - "group": "build", - "label": "tsc: build - tsconfig.json" - } - ] -} \ No newline at end of file diff --git a/ExampleApi/package-lock.json b/ExampleApi/package-lock.json deleted file mode 100644 index bff98d1..0000000 --- a/ExampleApi/package-lock.json +++ /dev/null @@ -1,1108 +0,0 @@ -{ - "name": "exampleapi", - "version": "1.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@types/bcrypt": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/bcrypt/-/bcrypt-3.0.0.tgz", - "integrity": "sha512-nohgNyv+1ViVcubKBh0+XiNJ3dO8nYu///9aJ4cgSqv70gBL+94SNy/iC2NLzKPT2Zt/QavrOkBVbZRLZmw6NQ==", - "dev": true - }, - "@types/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", - "dev": true, - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/bson": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/bson/-/bson-4.0.2.tgz", - "integrity": "sha512-+uWmsejEHfmSjyyM/LkrP0orfE2m5Mx9Xel4tXNeqi1ldK5XMQcDsFkBmLDtuyKUbxj2jGDo0H240fbCRJZo7Q==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/connect": { - "version": "3.4.33", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz", - "integrity": "sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/express": { - "version": "4.17.6", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.6.tgz", - "integrity": "sha512-n/mr9tZI83kd4azlPG5y997C/M4DNABK9yErhFM6hKdym4kkmd9j0vtsJyjFIwfRBxtrxZtAfGZCNRIBMFLK5w==", - "dev": true, - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "*", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.17.5", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.5.tgz", - "integrity": "sha512-578YH5Lt88AKoADy0b2jQGwJtrBxezXtVe/MBqWXKZpqx91SnC0pVkVCcxcytz3lWW+cHBYDi3Ysh0WXc+rAYw==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/range-parser": "*" - } - }, - "@types/jsonwebtoken": { - "version": "8.3.9", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.3.9.tgz", - "integrity": "sha512-00rI8GbOKuRtoYxltFSRTVUXCRLbuYwln2/nUMPtFU9JGS7if+nnmLjeoFGmqsNCmblPLAaeQ/zMLVsHr6T5bg==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/mime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.1.tgz", - "integrity": "sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw==", - "dev": true - }, - "@types/mongodb": { - "version": "3.5.8", - "resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.5.8.tgz", - "integrity": "sha512-2yOociZaXyiJ9CvGp/svjtlMCIPdl82XIRVmx35ehuWA046bipLwwcXfwVyvTYIU98yWYK5p44knCVQ+ZS4Bdw==", - "dev": true, - "requires": { - "@types/bson": "*", - "@types/node": "*" - } - }, - "@types/node": { - "version": "13.13.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.1.tgz", - "integrity": "sha512-uysqysLJ+As9jqI5yqjwP3QJrhOcUwBjHUlUxPxjbplwKoILvXVsmYWEhfmAQlrPfbRZmhJB007o4L9sKqtHqQ==", - "dev": true - }, - "@types/qs": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.1.tgz", - "integrity": "sha512-lhbQXx9HKZAPgBkISrBcmAcMpZsmpe/Cd/hY7LGZS5OfkySUBItnPZHgQPssWYUET8elF+yCFBbP1Q0RZPTdaw==", - "dev": true - }, - "@types/range-parser": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", - "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==", - "dev": true - }, - "@types/serve-static": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.3.tgz", - "integrity": "sha512-oprSwp094zOglVrXdlo/4bAHtKTAxX6VT8FOZlBKrmyLbNvE1zxZyJ6yikMVtHIvwP45+ZQGJn+FdXGKTozq0g==", - "dev": true, - "requires": { - "@types/express-serve-static-core": "*", - "@types/mime": "*" - } - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - } - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - }, - "are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "bcrypt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-4.0.1.tgz", - "integrity": "sha512-hSIZHkUxIDS5zA2o00Kf2O5RfVbQ888n54xQoF/eIaquU4uaLxK8vhhBdktd0B3n2MjkcAWzv4mnhogykBKOUQ==", - "requires": { - "node-addon-api": "^2.0.0", - "node-pre-gyp": "0.14.0" - } - }, - "bl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.0.tgz", - "integrity": "sha512-wbgvOpqopSr7uq6fJrLH8EsvYMJf9gzfo2jCsL2eTy75qXPukA4pCgHamOQkZtY5vmfVtjB+P3LNlMHW5CEZXA==", - "requires": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" - } - }, - "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "requires": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "bson": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.4.tgz", - "integrity": "sha512-S/yKGU1syOMzO86+dGpg2qGoDL0zvzcb262G+gqEy6TgP6rt6z6qxSFX/8X6vLC91P7G7C3nLs0+bvDzmvBA3Q==" - }, - "buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" - }, - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" - }, - "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "requires": { - "safe-buffer": "5.1.2" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" - }, - "denque": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/denque/-/denque-1.4.1.tgz", - "integrity": "sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ==" - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" - }, - "ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" - }, - "express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "requires": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - } - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "requires": { - "minipass": "^2.6.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" - }, - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", - "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "jsonwebtoken": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", - "requires": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^5.6.0" - }, - "dependencies": { - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "jwa": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", - "requires": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", - "requires": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" - }, - "lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" - }, - "lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" - }, - "lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" - }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" - }, - "lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" - }, - "lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - }, - "memory-pager": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", - "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", - "optional": true - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "mime-db": { - "version": "1.43.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", - "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==" - }, - "mime-types": { - "version": "2.1.26", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", - "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", - "requires": { - "mime-db": "1.43.0" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", - "requires": { - "minipass": "^2.9.0" - } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "requires": { - "minimist": "^1.2.5" - } - }, - "mongodb": { - "version": "3.5.6", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.5.6.tgz", - "integrity": "sha512-sh3q3GLDLT4QmoDLamxtAECwC3RGjq+oNuK1ENV8+tnipIavss6sMYt77hpygqlMOCt0Sla5cl7H4SKCVBCGEg==", - "requires": { - "bl": "^2.2.0", - "bson": "^1.1.4", - "denque": "^1.4.1", - "require_optional": "^1.0.1", - "safe-buffer": "^5.1.2", - "saslprep": "^1.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "needle": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.1.tgz", - "integrity": "sha512-x/gi6ijr4B7fwl6WYL9FwlCvRQKGlUNvnceho8wxkwXqN8jvVmmmATTmZPRRG7b/yC1eode26C2HO9jl78Du9g==", - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" - }, - "node-addon-api": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.0.tgz", - "integrity": "sha512-ASCL5U13as7HhOExbT6OlWJJUV/lLzL2voOSP1UVehpRD8FbSrSDjfScK/KwAvVTI5AS6r4VwbOMlIqtvRidnA==" - }, - "node-pre-gyp": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz", - "integrity": "sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==", - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4.4.2" - } - }, - "nopt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", - "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", - "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" - }, - "npm-packlist": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", - "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" - }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "proxy-addr": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.9.1" - } - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "require_optional": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", - "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", - "requires": { - "resolve-from": "^2.0.0", - "semver": "^5.1.0" - } - }, - "resolve-from": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "saslprep": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", - "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", - "optional": true, - "requires": { - "sparse-bitfield": "^3.0.3" - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } - } - }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" - }, - "sparse-bitfield": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", - "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=", - "optional": true, - "requires": { - "memory-pager": "^1.0.2" - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" - }, - "tar": { - "version": "4.4.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", - "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" - } - }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - } - } -} diff --git a/ExampleApi/package.json b/ExampleApi/package.json deleted file mode 100644 index 1b6e705..0000000 --- a/ExampleApi/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "exampleapi", - "version": "1.0.0", - "description": "", - "main": "out/app.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "", - "license": "ISC", - "dependencies": { - "bcrypt": "^4.0.1", - "body-parser": "^1.19.0", - "express": "^4.17.1", - "jsonwebtoken": "^8.5.1", - "mongodb": "^3.5.6" - }, - "devDependencies": { - "@types/bcrypt": "^3.0.0", - "@types/body-parser": "^1.19.0", - "@types/express": "^4.17.6", - "@types/jsonwebtoken": "^8.3.9", - "@types/mongodb": "^3.5.8" - } -} diff --git a/ExampleApi/src/app.ts b/ExampleApi/src/app.ts deleted file mode 100644 index 63ecd35..0000000 --- a/ExampleApi/src/app.ts +++ /dev/null @@ -1,24 +0,0 @@ -import express from 'express' -import { MainRouter } from './mainRouter'; -import { NodeApplication } from './common/NodeApplication'; -import { AppRouter } from './common/AppRouter'; - -//main application class -class Application extends NodeApplication { - - constructor(port: number) { - super(port,'/api'); - } - - //Notify that server is running - OnSetupComplete(port: number): void { - console.log('ExampleApi Listening on port ' + port.toString()); - } - - //setup main routing for the application - SetupRoutes(): AppRouter { - return new MainRouter(); - } -} -const port = process.env.PORT || 3000; -new Application(+port).startServer(); diff --git a/ExampleApi/src/common/AppRouter.ts b/ExampleApi/src/common/AppRouter.ts deleted file mode 100644 index f1fe01c..0000000 --- a/ExampleApi/src/common/AppRouter.ts +++ /dev/null @@ -1,28 +0,0 @@ -import express from 'express'; - -/*AppRouter represents a route on the server. AppRouters can be strung - together to create a heirarchy */ -export abstract class AppRouter{ - protected router: express.Router; - - // expressRouter property accessor: Returns the underlying - // express router object - public get expressRouter(): express.Router{ - return this.router; - } - constructor(){ - this.router=express.Router(); - this.setupRoutes(); - } - - //addRouter: Adds a child router on the given path beneath this router - // path: the path to reach the new router - // child: the child router object to be attached - addRouter(path: string,child: AppRouter):void{ - this.router.use(path,child.expressRouter); - } - - //setupRoutes: abstract method to be implemented in child classes to - // create the underlying routes that are part of this route tree - abstract setupRoutes(): void; -} \ No newline at end of file diff --git a/ExampleApi/src/common/MongoDB.ts b/ExampleApi/src/common/MongoDB.ts deleted file mode 100644 index cef66ff..0000000 --- a/ExampleApi/src/common/MongoDB.ts +++ /dev/null @@ -1,117 +0,0 @@ -import { MongoClient, FilterQuery, ObjectID } from 'mongodb'; -/*Wrapper class for accessing Mongo Databse*/ - -export class Database { - - //constructor - //url: the connection url for the mongo server - //dbName: the name of the database to access - constructor(private url: string, private dbName: string) { } - - //converts a string to a mongodb object id - static stringToId(id:string):ObjectID{ - return new ObjectID(id); - } - //addRecord - // collection: the name of the collection to add the record to. - // object: a javascript object to store in the collection - // returns a promise to an array of records - addRecord(collection: string, object: any): Promise{ - var dbname = this.dbName; - var url=this.url; - return new Promise(function(resolve,reject){ - MongoClient.connect(url, function (err, db) { - if (err) reject(err); - const dbo = db.db(dbname); - dbo.collection(collection).insertOne(object,(err, result) => { - if (err) reject(err); - db.close(); - resolve(true); - }); - }); - - }); - } - - //updateRecord - // collection: the name of the collection to update the record to. - // object: a javascript object to store in the collection - // returns a promise to a boolean indicating success - updateRecord(collection: string, filter:any, update: any): Promise{ - var dbname = this.dbName; - var url=this.url; - return new Promise(function(resolve,reject){ - MongoClient.connect(url, function (err, db) { - if (err) reject(err); - const dbo = db.db(dbname); - dbo.collection(collection).updateOne(filter,update,(err, result) => { - if (err) reject(err); - db.close(); - resolve(result.matchedCount==1); - }); - }); - - }); - } - - //getRecords - // collection: the name of the collection to get from. - // query: a mongo query object - // returns a promise to an array of records - getRecords(collection: string, query: FilterQuery = {}): Promise { - var dbname = this.dbName; - var url=this.url; - return new Promise(function (resolve, reject) { - MongoClient.connect(url, function (err, db) { - if (err) reject(err); - const dbo = db.db(dbname); - dbo.collection(collection).find(query).toArray((err, result) => { - if (err) reject(err); - db.close(); - resolve(result); - }); - }); - }); - } - - //getOneRecords - // collection: the name of the collection to get from. - // query: a mongo query object - // returns a promise to a single records - getOneRecord(collection: string, query: FilterQuery = {}): Promise { - var dbname = this.dbName; - var url=this.url; - return new Promise(function (resolve, reject) { - MongoClient.connect(url, function (err, db) { - if (err) reject(err); - const dbo = db.db(dbname); - dbo.collection(collection).findOne(query, (err, result) => { - if (err) reject(err); - db.close(); - resolve(result); - }); - }); - }); - } - - //deleteRecord - // collection: the name of the collection to get from. - // query: a mongo query object - // returns a promise to a boolean indicating success - deleteRecord(collection: string,query: FilterQuery={}): Promise{ - var dbname = this.dbName; - var url=this.url; - return new Promise(function (resolve, reject) { - MongoClient.connect(url, function (err, db) { - if (err) reject(err); - const dbo = db.db(dbname); - dbo.collection(collection).deleteOne(query, (err, result) => { - if (err) reject(err); - db.close(); - resolve(result.deletedCount==1); - }); - }); - }); - - } -} \ No newline at end of file diff --git a/ExampleApi/src/common/NodeApplication.ts b/ExampleApi/src/common/NodeApplication.ts deleted file mode 100644 index 55d9d8b..0000000 --- a/ExampleApi/src/common/NodeApplication.ts +++ /dev/null @@ -1,58 +0,0 @@ -import express from 'express' -import bodyParser from 'body-parser' -import { AppRouter } from './AppRouter'; - -/* This is the base class for a Node Express application, it provides lifecycle hooks - for various stages of application initialization and an abstract method - for attaching the endpoint routes to the appliation */ -export abstract class NodeApplication { - app: express.Application; - routes: express.Router; - - //NodeApplication: - // port: number - The port for the node server to listen on - // rootPath: string (Optional) - The path of the root route, - // defaults to the root of the server - constructor(private port: number, rootPath: string='/') { - this.app = express(); - this.OnBeforeInit(); - this.initCors(); - this.initBodyParser(); - this.routes = this.SetupRoutes().expressRouter; - this.app.use(rootPath, this.routes); - } - - //SetupRoutes: Abstract method for child classes to implement - // returns: A populated AppRouter object to be attached to the - // root of the site - abstract SetupRoutes(): AppRouter; - - //OnBeforeInit: Lifecycle hook before initialization of the application - OnBeforeInit(): void {}; - //OnSetupComplete: Lifecycle hook after node server started and listening - OnSetupComplete(port: number): void {} - - //initBodyParser: Initialize default options for the body parser - // override to prevent or change behavior - protected initBodyParser(): void{ - this.app.use(bodyParser.urlencoded({ extended: false })); - this.app.use(bodyParser.json()); - } - - //initCors: Initialize default options for CORS allowing open access - // Override this method to prvent or change behavior - protected initCors(): void { - this.app.use(function (req: express.Request, res: express.Response, next: any) { - res.header("Access-Control-Allow-Origin", "*"); - res.header("Access-Control-Allow-Methods", "PUT, GET, POST, DELETE, OPTIONS"); - res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization, Access-Control-Allow-Credentials"); - res.header("Access-Control-Allow-Credentials", "true"); - next(); - }); - } - - //startServer: Called to start the node.js server - startServer(): void { - this.app.listen(this.port, ()=>this.OnSetupComplete(this.port)); - } -} diff --git a/ExampleApi/src/config.ts b/ExampleApi/src/config.ts deleted file mode 100644 index 8f90b44..0000000 --- a/ExampleApi/src/config.ts +++ /dev/null @@ -1,7 +0,0 @@ -//configuration information -export const Config={ - serverport: process.env.PORT || 3000, - secret: process.env.SECRET || "some-secret-goes-here", - tokenLife: 1800, - url: process.env.MONGOURL || "mongodb://localhost:27017/" -}; \ No newline at end of file diff --git a/ExampleApi/src/mainRouter.ts b/ExampleApi/src/mainRouter.ts deleted file mode 100644 index 4ea5add..0000000 --- a/ExampleApi/src/mainRouter.ts +++ /dev/null @@ -1,17 +0,0 @@ -import express from 'express' -import { AppRouter } from './common/AppRouter'; -import { SecurityRouter } from './security/securityrouter'; -import { ProjectsRouter } from './projects/projectsRouter'; - -//root router for the API - -export class MainRouter extends AppRouter{ - constructor(){super();} - - //adds the child routers to various paths to form the overall API. - setupRoutes(): void { - this.addRouter('/security',new SecurityRouter()); - this.addRouter('/projects',new ProjectsRouter()); - } - -} \ No newline at end of file diff --git a/ExampleApi/src/projects/projectsController.ts b/ExampleApi/src/projects/projectsController.ts deleted file mode 100644 index 571122c..0000000 --- a/ExampleApi/src/projects/projectsController.ts +++ /dev/null @@ -1,88 +0,0 @@ -import express, { RequestHandler } from 'express'; -import { ProjectsModel } from './projectsModel'; -import { Database } from '../common/MongoDB'; -import { Config } from '../config'; -//This is just an example of a second controller attached to the security module - -export class ProjectsController { - static db: Database = new Database(Config.url, "projects"); - static projectsTable = 'projects'; - - //getProjects - //sends a json object with all projects in the system that match :year - getProjects(req: express.Request, res: express.Response) { - const semester = req.params.semester; - ProjectsController.db.getRecords(ProjectsController.projectsTable, { semester: semester }) - .then((results) => res.send({ fn: 'getProjects', status: 'success', data: results }).end()) - .catch((reason) => res.status(500).send(reason).end()); - - } - //getProject - //sends the specific project as JSON with id=:id - getProject(req: express.Request, res: express.Response) { - const semester = req.params.semester; - const id = Database.stringToId(req.params.id); - ProjectsController.db.getOneRecord(ProjectsController.projectsTable, { _id: id, semester: semester }) - .then((results) => res.send({ fn: 'getProject', status: 'success', data: results }).end()) - .catch((reason) => res.status(500).send(reason).end()); - } - //addProject - //adds the project to the database - addProject(req: express.Request, res: express.Response) { - const proj: ProjectsModel = ProjectsModel.fromObject(req.body); - - ProjectsController.db.addRecord(ProjectsController.projectsTable, proj.toObject()) - .then((result: boolean) => res.send({ fn: 'addProject', status: 'success' }).end()) - .catch((reason) => res.status(500).send(reason).end()); - } - - //updateProject - //updates the project in the database with id :id - updateProject(req: express.Request, res: express.Response) { - const id = Database.stringToId(req.params.id); - const data = req.body; - delete data.authUser; - ProjectsController.db.updateRecord(ProjectsController.projectsTable, { _id: id }, { $set: req.body }) - .then((results) => results ? (res.send({ fn: 'updateProject', status: 'success' })) : (res.send({ fn: 'updateProject', status: 'failure', data: 'Not found' })).end()) - .catch(err => res.send({ fn: 'updateProject', status: 'failure', data: err }).end()); - - } - //deleteProject - //deletes the project int he database with id :id - deleteProject(req: express.Request, res: express.Response) { - const id = Database.stringToId(req.params.id); - ProjectsController.db.deleteRecord(ProjectsController.projectsTable, { _id: id }) - .then((results) => results ? (res.send({ fn: 'deleteProject', status: 'success' })) : (res.send({ fn: 'deleteProject', status: 'failure', data: 'Not found' })).end()) - .catch((reason) => res.status(500).send(reason).end()); - } - //getSemesters - //returns all valid unique semesters in the database - getSemesters(req: express.Request, res: express.Response) { - ProjectsController.db.getRecords(ProjectsController.projectsTable) - .then(results => { - //extracts just the semester - let semesters = results.map((x: any) => x.semester); - //removes duplciates - semesters = semesters.filter((value: string, index: number, array: any[]) => - !array.filter((v, i) => value === v && i < index).length); - res.send({ fn: 'deleteProject', status: 'success', data: { semesters: semesters } }) - }) - .catch((reason) => res.status(500).send(reason).end()); - } - //getProjectNumbers - //returns all valid unique projectNumbers for a given semesters in the database - getProjectNumbers(req: express.Request, res: express.Response) { - const semester = req.params.semester; - ProjectsController.db.getRecords(ProjectsController.projectsTable,{semester:semester}) - .then(results => { - //extracts just the projectNumber - let projects = results.map((x: any) => x.projectNumber); - //removes duplciates - projects = projects.filter((value: number, index: number, array: any[]) => - !array.filter((v, i) => value === v && i < index).length); - res.send({ fn: 'deleteProject', status: 'success', data: { projectNumbers:projects.sort()} }); - }) - .catch((reason) => res.status(500).send(reason).end()); - } - -} \ No newline at end of file diff --git a/ExampleApi/src/projects/projectsModel.ts b/ExampleApi/src/projects/projectsModel.ts deleted file mode 100644 index dc2baca..0000000 --- a/ExampleApi/src/projects/projectsModel.ts +++ /dev/null @@ -1,24 +0,0 @@ - -export class ProjectsModel{ - id=''; - name=''; - description?=''; - groupid=''; - groupMembers:string[]=[]; - semester=''; - projectNumber=0; - - static fromObject(object:any):ProjectsModel{ - const p:ProjectsModel=new ProjectsModel(); - p.name=object.name; - p.description=object.description; - p.groupid=object.groupId; - p.groupMembers=object.groupMembers; - p.semester=object.semester - p.projectNumber=object.projectNumber; - return p; - } - toObject():any{ - return {name:this.name,description:this.description,groupid:this.groupid,groupMembers:this.groupMembers,semester:this.semester,projectNumber:this.projectNumber}; - } -} \ No newline at end of file diff --git a/ExampleApi/src/projects/projectsRouter.ts b/ExampleApi/src/projects/projectsRouter.ts deleted file mode 100644 index 46a91d4..0000000 --- a/ExampleApi/src/projects/projectsRouter.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { AppRouter } from "../common/AppRouter"; -import { SecurityMiddleware } from "../security/securityMiddleware"; -import { ProjectsController } from "./projectsController"; - -//This is just an example second router to show how additional routers can be added -export class ProjectsRouter extends AppRouter{ - static projController: ProjectsController=new ProjectsController(); - constructor(){super();} - - //sets up the routes within this module shows an example of a route that requires authorization, and one that does not - setupRoutes(): void { - this.expressRouter.get('/semesters',ProjectsRouter.projController.getSemesters); - this.expressRouter.get('/projectNumbers/:semester',ProjectsRouter.projController.getProjectNumbers); - this.expressRouter.get('/:semester',ProjectsRouter.projController.getProjects); - this.expressRouter.get('/:semester/:id',ProjectsRouter.projController.getProject); - this.expressRouter.post('/',[SecurityMiddleware.RequireAuth],ProjectsRouter.projController.addProject); - this.expressRouter.put('/:id',[SecurityMiddleware.RequireAuth],ProjectsRouter.projController.updateProject); - this.expressRouter.delete('/:id',[SecurityMiddleware.RequireAuth],ProjectsRouter.projController.deleteProject); - } -} \ No newline at end of file diff --git a/ExampleApi/src/security/securityController.ts b/ExampleApi/src/security/securityController.ts deleted file mode 100644 index dcf351e..0000000 --- a/ExampleApi/src/security/securityController.ts +++ /dev/null @@ -1,62 +0,0 @@ -import express from 'express'; -import { Config } from '../config'; -import jwt from 'jsonwebtoken'; -import { UserModel } from './userModel'; -import { Database } from '../common/MongoDB'; - -//Implementation of security endpoints - -export class SecurityController { - static db: Database = new Database(Config.url, "security"); - static usersTable = 'users'; - - //login - POST - //expects email and password fields to be set in the body of the post request - //sends a token to the caller on success, 401 on failure - public login(req: express.Request, res: express.Response, next: express.NextFunction) { - SecurityController.db.getOneRecord(SecurityController.usersTable, { email: req.body.email }) - .then((userRecord: any) => { - if (!userRecord) return res.sendStatus(401).end(); - const usr: UserModel = UserModel.fromObject(userRecord); - if (!usr.validatePassword(req.body.password)) return res.sendStatus(401).end(); - const token = jwt.sign(usr.toObject(), Config.secret, { expiresIn: Config.tokenLife }); - res.send({ fn: 'login', status: 'success', data: { token: token,user: {email: req.body.email} } }).end(); - }).catch(err => res.sendStatus(500).end()); - } - - //register - POST - //expects email and password fields to be set in the body of the post request - //sends a success message to caller on success, or a failure status code on failure - register(req: express.Request, res: express.Response, next: express.NextFunction) { - const user: UserModel = new UserModel(req.body.email, req.body.password); - SecurityController.db.getOneRecord(SecurityController.usersTable, { email: req.body.email }) - .then((userRecord: any) => { - if (userRecord) return res.status(400).send({ fn: 'register', status: 'failure', data: 'User Exits' }).end(); - SecurityController.db.addRecord(SecurityController.usersTable, user.toObject()).then((result: boolean) => res.send({ fn: 'register', status: 'success' }).end()) - .catch((reason) => res.sendStatus(500).end()); - }).catch((reason) => res.sendStatus(500).end()); - } - //authorize - GET - //this code actually does nothing, but if it is secured at the route level, it will return the email address for the token that - //was returned. This is used to verify a token by a client application - //returns the users email on success - authorize(req: express.Request, res: express.Response, next: express.NextFunction) { - //validate that req.authUser exists, if so, return the user's email address. - console.log(); - res.send({ fn: 'authorize', status: 'success', data:{email: req.body.authUser.email} }).end(); - } - //changePwd - POST - //chages the password of the user represented in the token. Expects password in the body of the POST - //returns a success messager to the client on success, a failure status code on failure - changePwd(req: express.Request, res: express.Response, next: express.NextFunction) { - if (!req.body.password) res.status(400).send({ fn: 'changePwd', status: 'failure' }).end(); - const user: UserModel = new UserModel(req.body.authUser.email, req.body.password); - SecurityController.db.updateRecord(SecurityController.usersTable, {email: user.email},{ $set: {password: user.password }}).then((result:Boolean)=>{ - if (result) - res.send({ fn: 'changePwd', status: 'success' }).end(); - else - res.status(400).send({ fn: 'changePwd', status: 'failure' }).end(); - }).catch(err=>res.send({ fn: 'changePwd', status: 'failure', data:err }).end()); - } - -} \ No newline at end of file diff --git a/ExampleApi/src/security/securityMiddleware.ts b/ExampleApi/src/security/securityMiddleware.ts deleted file mode 100644 index 7834ec6..0000000 --- a/ExampleApi/src/security/securityMiddleware.ts +++ /dev/null @@ -1,29 +0,0 @@ -import express, { RequestHandler } from 'express'; -import jwt from 'jsonwebtoken'; -import { Config } from '../config'; - -//Class represeneting verification function for JWT. The static member can be used to return a method that validates the token - -export class SecurityMiddleware { - - //Returns a method that validates a bearer token, on success, populates authUser in the body with the user information from the token, - //then calls the next function in the chain (the controller). On failure to authenticate, halts execution and sends error response - static get RequireAuth(): RequestHandler { - return (req: express.Request, res: express.Response, next: express.NextFunction) => { - let token = req.headers["x-access-token"] || req.headers["authorization"]; - //if no token found, return response (without going to the next middelware) - if (!token) return res.status(401).send("Access denied. No token provided."); - - if (token.includes('bearer')) token=token.toString().substr(6).trimLeft(); - try { - //if can verify the token, set req.user and pass to next middleware - const decoded = jwt.verify(token.toString(), Config.secret); - req.body.authUser = decoded; - next(); - } catch (ex) { - //if invalid token - res.status(400).send("Invalid token."); - } - } - } -} \ No newline at end of file diff --git a/ExampleApi/src/security/securityrouter.ts b/ExampleApi/src/security/securityrouter.ts deleted file mode 100644 index 0cdcb1b..0000000 --- a/ExampleApi/src/security/securityrouter.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { AppRouter } from "../common/AppRouter"; -import { SecurityController } from "./securityController"; -import { SecurityMiddleware } from "./securityMiddleware"; - -//Router for security portion of the api -export class SecurityRouter extends AppRouter{ - - constructor(){super();} - - //called by the framework to add the routes for the security portion of the API - setupRoutes(): void { - const securityController: SecurityController=new SecurityController(); - this.expressRouter.get('/authorize',[SecurityMiddleware.RequireAuth],securityController.authorize) - this.expressRouter.post('/login',securityController.login); - this.expressRouter.post('/register',securityController.register); - this.expressRouter.post('/changepwd',[SecurityMiddleware.RequireAuth],securityController.changePwd); - } -} \ No newline at end of file diff --git a/ExampleApi/src/security/userModel.ts b/ExampleApi/src/security/userModel.ts deleted file mode 100644 index fdc61e6..0000000 --- a/ExampleApi/src/security/userModel.ts +++ /dev/null @@ -1,47 +0,0 @@ -import bcrypt from 'bcrypt'; - -//represents a user in the system -export class UserModel{ - id?=''; - email = ''; - private _password=''; - - //when user password is set through here, it is stored encrypted - set password(val:string){ - this._password=UserModel.encryptString(val); - } - //returns encrypted password - get password():string{return this._password;} - - //encrypts password - public constructor(email:string,password:string){ - this.email=email; - this.password=password; - } - - //does not encrypt password, expects already encrypted password - static fromObject=(obj:any):UserModel=>{ - const mdl=new UserModel(obj.email,''); - mdl._password=obj.password; - return mdl; - } - - //includes encrypted password - toObject=(): any=> ({email: this.email,password: this.password}); - - //compares unencrypted password to encrypted password - validatePassword(password:string):boolean{ - if (this.password==='*') {return false;} - return bcrypt.compareSync(password,this.password); - } - - //encrypt a string using the bcrypt library - static encryptString(inval:string):string{ - try { - var salt = bcrypt.genSaltSync(10); - return bcrypt.hashSync(inval, salt); - }catch (err){ - return '*'; - } - } -} \ No newline at end of file diff --git a/ExampleApi/tsconfig.json b/ExampleApi/tsconfig.json deleted file mode 100644 index df1204c..0000000 --- a/ExampleApi/tsconfig.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "compilerOptions": { - /* Basic Options */ - // "incremental": true, /* Enable incremental compilation */ - "target": "es5", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ - "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ - // "lib": [], /* Specify library files to be included in the compilation. */ - // "allowJs": true, /* Allow javascript files to be compiled. */ - // "checkJs": true, /* Report errors in .js files. */ - // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ - // "declaration": true, /* Generates corresponding '.d.ts' file. */ - // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ - "sourceMap": true, /* Generates corresponding '.map' file. */ - // "outFile": "./", /* Concatenate and emit output to single file. */ - "outDir": "out", /* Redirect output structure to the directory. */ - // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ - // "composite": true, /* Enable project compilation */ - // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ - // "removeComments": true, /* Do not emit comments to output. */ - // "noEmit": true, /* Do not emit outputs. */ - // "importHelpers": true, /* Import emit helpers from 'tslib'. */ - // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ - // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ - - /* Strict Type-Checking Options */ - "strict": true, /* Enable all strict type-checking options. */ - // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* Enable strict null checks. */ - // "strictFunctionTypes": true, /* Enable strict checking of function types. */ - // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ - // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ - // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ - // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ - - /* Additional Checks */ - // "noUnusedLocals": true, /* Report errors on unused locals. */ - // "noUnusedParameters": true, /* Report errors on unused parameters. */ - // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ - // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ - - /* Module Resolution Options */ - // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ - // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ - // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ - // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ - // "typeRoots": [], /* List of folders to include type definitions from. */ - // "types": [], /* Type declaration files to be included in compilation. */ - // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ - "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ - // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - - /* Source Map Options */ - // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ - // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ - - /* Experimental Options */ - // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ - // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ - - /* Advanced Options */ - "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ - } -} diff --git a/ExampleUI/.gitignore b/ExampleUI/.gitignore deleted file mode 100644 index 86d943a..0000000 --- a/ExampleUI/.gitignore +++ /dev/null @@ -1,46 +0,0 @@ -# See http://help.github.com/ignore-files/ for more about ignoring files. - -# compiled output -/dist -/tmp -/out-tsc -# Only exists if Bazel was run -/bazel-out - -# dependencies -/node_modules - -# profiling files -chrome-profiler-events*.json -speed-measure-plugin*.json - -# IDEs and editors -/.idea -.project -.classpath -.c9/ -*.launch -.settings/ -*.sublime-workspace - -# IDE - VSCode -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json -.history/* - -# misc -/.sass-cache -/connect.lock -/coverage -/libpeerconnection.log -npm-debug.log -yarn-error.log -testem.log -/typings - -# System Files -.DS_Store -Thumbs.db diff --git a/ExampleUI/README.md b/README.md similarity index 100% rename from ExampleUI/README.md rename to README.md diff --git a/ExampleUI/angular.json b/angular.json similarity index 100% rename from ExampleUI/angular.json rename to angular.json diff --git a/ExampleUI/browserslist b/browserslist similarity index 100% rename from ExampleUI/browserslist rename to browserslist diff --git a/ExampleUI/e2e/protractor.conf.js b/e2e/protractor.conf.js similarity index 100% rename from ExampleUI/e2e/protractor.conf.js rename to e2e/protractor.conf.js diff --git a/ExampleUI/e2e/src/app.e2e-spec.ts b/e2e/src/app.e2e-spec.ts similarity index 100% rename from ExampleUI/e2e/src/app.e2e-spec.ts rename to e2e/src/app.e2e-spec.ts diff --git a/ExampleUI/e2e/src/app.po.ts b/e2e/src/app.po.ts similarity index 100% rename from ExampleUI/e2e/src/app.po.ts rename to e2e/src/app.po.ts diff --git a/ExampleUI/e2e/tsconfig.json b/e2e/tsconfig.json similarity index 100% rename from ExampleUI/e2e/tsconfig.json rename to e2e/tsconfig.json diff --git a/ExampleUI/karma.conf.js b/karma.conf.js similarity index 100% rename from ExampleUI/karma.conf.js rename to karma.conf.js diff --git a/ExampleUI/package-lock.json b/package-lock.json similarity index 100% rename from ExampleUI/package-lock.json rename to package-lock.json diff --git a/ExampleUI/package.json b/package.json similarity index 100% rename from ExampleUI/package.json rename to package.json diff --git a/ExampleUI/src/app/app-routing.module.ts b/src/app/app-routing.module.ts similarity index 100% rename from ExampleUI/src/app/app-routing.module.ts rename to src/app/app-routing.module.ts diff --git a/ExampleUI/src/app/app.component.html b/src/app/app.component.html similarity index 100% rename from ExampleUI/src/app/app.component.html rename to src/app/app.component.html diff --git a/ExampleUI/src/app/app.component.scss b/src/app/app.component.scss similarity index 100% rename from ExampleUI/src/app/app.component.scss rename to src/app/app.component.scss diff --git a/ExampleUI/src/app/app.component.spec.ts b/src/app/app.component.spec.ts similarity index 100% rename from ExampleUI/src/app/app.component.spec.ts rename to src/app/app.component.spec.ts diff --git a/ExampleUI/src/app/app.component.ts b/src/app/app.component.ts similarity index 100% rename from ExampleUI/src/app/app.component.ts rename to src/app/app.component.ts diff --git a/ExampleUI/src/app/app.module.ts b/src/app/app.module.ts similarity index 100% rename from ExampleUI/src/app/app.module.ts rename to src/app/app.module.ts diff --git a/ExampleUI/src/app/pages/addproject/addproject.component.html b/src/app/pages/addproject/addproject.component.html similarity index 100% rename from ExampleUI/src/app/pages/addproject/addproject.component.html rename to src/app/pages/addproject/addproject.component.html diff --git a/ExampleUI/src/app/pages/addproject/addproject.component.scss b/src/app/pages/addproject/addproject.component.scss similarity index 100% rename from ExampleUI/src/app/pages/addproject/addproject.component.scss rename to src/app/pages/addproject/addproject.component.scss diff --git a/ExampleUI/src/app/pages/addproject/addproject.component.spec.ts b/src/app/pages/addproject/addproject.component.spec.ts similarity index 100% rename from ExampleUI/src/app/pages/addproject/addproject.component.spec.ts rename to src/app/pages/addproject/addproject.component.spec.ts diff --git a/ExampleUI/src/app/pages/addproject/addproject.component.ts b/src/app/pages/addproject/addproject.component.ts similarity index 100% rename from ExampleUI/src/app/pages/addproject/addproject.component.ts rename to src/app/pages/addproject/addproject.component.ts diff --git a/ExampleUI/src/app/pages/home/home.component.html b/src/app/pages/home/home.component.html similarity index 100% rename from ExampleUI/src/app/pages/home/home.component.html rename to src/app/pages/home/home.component.html diff --git a/ExampleUI/src/app/pages/home/home.component.scss b/src/app/pages/home/home.component.scss similarity index 100% rename from ExampleUI/src/app/pages/home/home.component.scss rename to src/app/pages/home/home.component.scss diff --git a/ExampleUI/src/app/pages/home/home.component.spec.ts b/src/app/pages/home/home.component.spec.ts similarity index 100% rename from ExampleUI/src/app/pages/home/home.component.spec.ts rename to src/app/pages/home/home.component.spec.ts diff --git a/ExampleUI/src/app/pages/home/home.component.ts b/src/app/pages/home/home.component.ts similarity index 100% rename from ExampleUI/src/app/pages/home/home.component.ts rename to src/app/pages/home/home.component.ts diff --git a/ExampleUI/src/app/pages/login/login.component.html b/src/app/pages/login/login.component.html similarity index 100% rename from ExampleUI/src/app/pages/login/login.component.html rename to src/app/pages/login/login.component.html diff --git a/ExampleUI/src/app/pages/login/login.component.scss b/src/app/pages/login/login.component.scss similarity index 100% rename from ExampleUI/src/app/pages/login/login.component.scss rename to src/app/pages/login/login.component.scss diff --git a/ExampleUI/src/app/pages/login/login.component.spec.ts b/src/app/pages/login/login.component.spec.ts similarity index 100% rename from ExampleUI/src/app/pages/login/login.component.spec.ts rename to src/app/pages/login/login.component.spec.ts diff --git a/ExampleUI/src/app/pages/login/login.component.ts b/src/app/pages/login/login.component.ts similarity index 100% rename from ExampleUI/src/app/pages/login/login.component.ts rename to src/app/pages/login/login.component.ts diff --git a/ExampleUI/src/app/pages/register/register.component.html b/src/app/pages/register/register.component.html similarity index 100% rename from ExampleUI/src/app/pages/register/register.component.html rename to src/app/pages/register/register.component.html diff --git a/ExampleUI/src/app/pages/register/register.component.scss b/src/app/pages/register/register.component.scss similarity index 100% rename from ExampleUI/src/app/pages/register/register.component.scss rename to src/app/pages/register/register.component.scss diff --git a/ExampleUI/src/app/pages/register/register.component.spec.ts b/src/app/pages/register/register.component.spec.ts similarity index 100% rename from ExampleUI/src/app/pages/register/register.component.spec.ts rename to src/app/pages/register/register.component.spec.ts diff --git a/ExampleUI/src/app/pages/register/register.component.ts b/src/app/pages/register/register.component.ts similarity index 100% rename from ExampleUI/src/app/pages/register/register.component.ts rename to src/app/pages/register/register.component.ts diff --git a/ExampleUI/src/app/services/auth.service.spec.ts b/src/app/services/auth.service.spec.ts similarity index 100% rename from ExampleUI/src/app/services/auth.service.spec.ts rename to src/app/services/auth.service.spec.ts diff --git a/ExampleUI/src/app/services/auth.service.ts b/src/app/services/auth.service.ts similarity index 100% rename from ExampleUI/src/app/services/auth.service.ts rename to src/app/services/auth.service.ts diff --git a/ExampleUI/src/app/services/projects.service.spec.ts b/src/app/services/projects.service.spec.ts similarity index 100% rename from ExampleUI/src/app/services/projects.service.spec.ts rename to src/app/services/projects.service.spec.ts diff --git a/ExampleUI/src/app/services/projects.service.ts b/src/app/services/projects.service.ts similarity index 100% rename from ExampleUI/src/app/services/projects.service.ts rename to src/app/services/projects.service.ts diff --git a/ExampleUI/src/app/services/token-interceptor.service.spec.ts b/src/app/services/token-interceptor.service.spec.ts similarity index 100% rename from ExampleUI/src/app/services/token-interceptor.service.spec.ts rename to src/app/services/token-interceptor.service.spec.ts diff --git a/ExampleUI/src/app/services/token-interceptor.service.ts b/src/app/services/token-interceptor.service.ts similarity index 100% rename from ExampleUI/src/app/services/token-interceptor.service.ts rename to src/app/services/token-interceptor.service.ts diff --git a/ExampleUI/src/assets/.gitkeep b/src/assets/.gitkeep similarity index 100% rename from ExampleUI/src/assets/.gitkeep rename to src/assets/.gitkeep diff --git a/ExampleUI/src/environments/environment.prod.ts b/src/environments/environment.prod.ts similarity index 100% rename from ExampleUI/src/environments/environment.prod.ts rename to src/environments/environment.prod.ts diff --git a/ExampleUI/src/environments/environment.ts b/src/environments/environment.ts similarity index 100% rename from ExampleUI/src/environments/environment.ts rename to src/environments/environment.ts diff --git a/ExampleUI/src/favicon.ico b/src/favicon.ico similarity index 100% rename from ExampleUI/src/favicon.ico rename to src/favicon.ico diff --git a/ExampleUI/src/index.html b/src/index.html similarity index 100% rename from ExampleUI/src/index.html rename to src/index.html diff --git a/ExampleUI/src/main.ts b/src/main.ts similarity index 100% rename from ExampleUI/src/main.ts rename to src/main.ts diff --git a/ExampleUI/src/polyfills.ts b/src/polyfills.ts similarity index 100% rename from ExampleUI/src/polyfills.ts rename to src/polyfills.ts diff --git a/ExampleUI/src/styles.scss b/src/styles.scss similarity index 100% rename from ExampleUI/src/styles.scss rename to src/styles.scss diff --git a/ExampleUI/src/test.ts b/src/test.ts similarity index 100% rename from ExampleUI/src/test.ts rename to src/test.ts diff --git a/ExampleUI/tsconfig.app.json b/tsconfig.app.json similarity index 100% rename from ExampleUI/tsconfig.app.json rename to tsconfig.app.json diff --git a/ExampleUI/tsconfig.json b/tsconfig.json similarity index 100% rename from ExampleUI/tsconfig.json rename to tsconfig.json diff --git a/ExampleUI/tsconfig.spec.json b/tsconfig.spec.json similarity index 100% rename from ExampleUI/tsconfig.spec.json rename to tsconfig.spec.json diff --git a/ExampleUI/tslint.json b/tslint.json similarity index 100% rename from ExampleUI/tslint.json rename to tslint.json From 29219974af24539a78a82d5e75535464e073af4f Mon Sep 17 00:00:00 2001 From: Erin O'Connor Date: Sun, 3 May 2020 13:47:52 -0400 Subject: [PATCH 02/36] working map --- package-lock.json | 276 +++++++++++++++++++++++++++++++++++++++++++++- package.json | 1 + src/index.html | 182 +++++++++++++++++++++++++++--- src/styles.scss | 2 +- src/uStates.js | 76 +++++++++++++ 5 files changed, 518 insertions(+), 19 deletions(-) create mode 100644 src/uStates.js diff --git a/package-lock.json b/package-lock.json index 6da3038..2c8cbba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3090,8 +3090,7 @@ "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "commondir": { "version": "1.0.1", @@ -3819,6 +3818,270 @@ "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", "dev": true }, + "d3": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-5.16.0.tgz", + "integrity": "sha512-4PL5hHaHwX4m7Zr1UapXW23apo6pexCgdetdJ5kTmADpG/7T9Gkxw0M0tf/pjoB63ezCCm0u5UaFYy2aMt0Mcw==", + "requires": { + "d3-array": "1", + "d3-axis": "1", + "d3-brush": "1", + "d3-chord": "1", + "d3-collection": "1", + "d3-color": "1", + "d3-contour": "1", + "d3-dispatch": "1", + "d3-drag": "1", + "d3-dsv": "1", + "d3-ease": "1", + "d3-fetch": "1", + "d3-force": "1", + "d3-format": "1", + "d3-geo": "1", + "d3-hierarchy": "1", + "d3-interpolate": "1", + "d3-path": "1", + "d3-polygon": "1", + "d3-quadtree": "1", + "d3-random": "1", + "d3-scale": "2", + "d3-scale-chromatic": "1", + "d3-selection": "1", + "d3-shape": "1", + "d3-time": "1", + "d3-time-format": "2", + "d3-timer": "1", + "d3-transition": "1", + "d3-voronoi": "1", + "d3-zoom": "1" + } + }, + "d3-array": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz", + "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==" + }, + "d3-axis": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-1.0.12.tgz", + "integrity": "sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ==" + }, + "d3-brush": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-1.1.5.tgz", + "integrity": "sha512-rEaJ5gHlgLxXugWjIkolTA0OyMvw8UWU1imYXy1v642XyyswmI1ybKOv05Ft+ewq+TFmdliD3VuK0pRp1VT/5A==", + "requires": { + "d3-dispatch": "1", + "d3-drag": "1", + "d3-interpolate": "1", + "d3-selection": "1", + "d3-transition": "1" + } + }, + "d3-chord": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-1.0.6.tgz", + "integrity": "sha512-JXA2Dro1Fxw9rJe33Uv+Ckr5IrAa74TlfDEhE/jfLOaXegMQFQTAgAw9WnZL8+HxVBRXaRGCkrNU7pJeylRIuA==", + "requires": { + "d3-array": "1", + "d3-path": "1" + } + }, + "d3-collection": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.7.tgz", + "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==" + }, + "d3-color": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz", + "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==" + }, + "d3-contour": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-1.3.2.tgz", + "integrity": "sha512-hoPp4K/rJCu0ladiH6zmJUEz6+u3lgR+GSm/QdM2BBvDraU39Vr7YdDCicJcxP1z8i9B/2dJLgDC1NcvlF8WCg==", + "requires": { + "d3-array": "^1.1.1" + } + }, + "d3-dispatch": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.6.tgz", + "integrity": "sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==" + }, + "d3-drag": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.2.5.tgz", + "integrity": "sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w==", + "requires": { + "d3-dispatch": "1", + "d3-selection": "1" + } + }, + "d3-dsv": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.2.0.tgz", + "integrity": "sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g==", + "requires": { + "commander": "2", + "iconv-lite": "0.4", + "rw": "1" + } + }, + "d3-ease": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.6.tgz", + "integrity": "sha512-SZ/lVU7LRXafqp7XtIcBdxnWl8yyLpgOmzAk0mWBI9gXNzLDx5ybZgnRbH9dN/yY5tzVBqCQ9avltSnqVwessQ==" + }, + "d3-fetch": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-1.1.2.tgz", + "integrity": "sha512-S2loaQCV/ZeyTyIF2oP8D1K9Z4QizUzW7cWeAOAS4U88qOt3Ucf6GsmgthuYSdyB2HyEm4CeGvkQxWsmInsIVA==", + "requires": { + "d3-dsv": "1" + } + }, + "d3-force": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-1.2.1.tgz", + "integrity": "sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg==", + "requires": { + "d3-collection": "1", + "d3-dispatch": "1", + "d3-quadtree": "1", + "d3-timer": "1" + } + }, + "d3-format": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.4.tgz", + "integrity": "sha512-TWks25e7t8/cqctxCmxpUuzZN11QxIA7YrMbram94zMQ0PXjE4LVIMe/f6a4+xxL8HQ3OsAFULOINQi1pE62Aw==" + }, + "d3-geo": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.12.0.tgz", + "integrity": "sha512-NalZVW+6/SpbKcnl+BCO67m8gX+nGeJdo6oGL9H6BRUGUL1e+AtPcP4vE4TwCQ/gl8y5KE7QvBzrLn+HsKIl+w==", + "requires": { + "d3-array": "1" + } + }, + "d3-hierarchy": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz", + "integrity": "sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==" + }, + "d3-interpolate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz", + "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==", + "requires": { + "d3-color": "1" + } + }, + "d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" + }, + "d3-polygon": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-1.0.6.tgz", + "integrity": "sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ==" + }, + "d3-quadtree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.7.tgz", + "integrity": "sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA==" + }, + "d3-random": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-1.1.2.tgz", + "integrity": "sha512-6AK5BNpIFqP+cx/sreKzNjWbwZQCSUatxq+pPRmFIQaWuoD+NrbVWw7YWpHiXpCQ/NanKdtGDuB+VQcZDaEmYQ==" + }, + "d3-scale": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-2.2.2.tgz", + "integrity": "sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw==", + "requires": { + "d3-array": "^1.2.0", + "d3-collection": "1", + "d3-format": "1", + "d3-interpolate": "1", + "d3-time": "1", + "d3-time-format": "2" + } + }, + "d3-scale-chromatic": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-1.5.0.tgz", + "integrity": "sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg==", + "requires": { + "d3-color": "1", + "d3-interpolate": "1" + } + }, + "d3-selection": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.4.1.tgz", + "integrity": "sha512-BTIbRjv/m5rcVTfBs4AMBLKs4x8XaaLkwm28KWu9S2vKNqXkXt2AH2Qf0sdPZHjFxcWg/YL53zcqAz+3g4/7PA==" + }, + "d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "requires": { + "d3-path": "1" + } + }, + "d3-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.1.0.tgz", + "integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==" + }, + "d3-time-format": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.2.3.tgz", + "integrity": "sha512-RAHNnD8+XvC4Zc4d2A56Uw0yJoM7bsvOlJR33bclxq399Rak/b9bhvu/InjxdWhPtkgU53JJcleJTGkNRnN6IA==", + "requires": { + "d3-time": "1" + } + }, + "d3-timer": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz", + "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==" + }, + "d3-transition": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.3.2.tgz", + "integrity": "sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA==", + "requires": { + "d3-color": "1", + "d3-dispatch": "1", + "d3-ease": "1", + "d3-interpolate": "1", + "d3-selection": "^1.1.0", + "d3-timer": "1" + } + }, + "d3-voronoi": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.4.tgz", + "integrity": "sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==" + }, + "d3-zoom": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.8.3.tgz", + "integrity": "sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ==", + "requires": { + "d3-dispatch": "1", + "d3-drag": "1", + "d3-interpolate": "1", + "d3-selection": "1", + "d3-transition": "1" + } + }, "damerau-levenshtein": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz", @@ -5617,7 +5880,6 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" } @@ -9976,6 +10238,11 @@ "aproba": "^1.1.1" } }, + "rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=" + }, "rxjs": { "version": "6.5.5", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", @@ -10002,8 +10269,7 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sass": { "version": "1.26.3", diff --git a/package.json b/package.json index 3c310b7..ed67a15 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "@angular/platform-browser": "~9.1.1", "@angular/platform-browser-dynamic": "~9.1.1", "@angular/router": "~9.1.1", + "d3": "^5.16.0", "rxjs": "~6.5.4", "tslib": "^1.10.0", "zone.js": "~0.10.2" diff --git a/src/index.html b/src/index.html index cc76f89..d5b84ac 100644 --- a/src/index.html +++ b/src/index.html @@ -1,14 +1,170 @@ - - - - - ExampleUI - - - - - + + +ExampleUI + + + + + + - - - + +
+ + + + + + \ No newline at end of file diff --git a/src/styles.scss b/src/styles.scss index 90d4ee0..e50a47e 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -1 +1 @@ -/* You can add global styles to this file, and also import other style files */ +/* You can add global styles to this file, and also import other style files */ \ No newline at end of file diff --git a/src/uStates.js b/src/uStates.js new file mode 100644 index 0000000..1b464de --- /dev/null +++ b/src/uStates.js @@ -0,0 +1,76 @@ +(function(){ + var uStatePaths=[ +{id:"HI",n:"Hawaii",d:"M233.08751,519.30948L235.02744,515.75293L237.2907,515.42961L237.61402,516.23791L235.51242,519.30948L233.08751,519.30948ZM243.27217,515.59127L249.4153,518.17784L251.51689,517.85452L253.1335,513.97465L252.48686,510.57977L248.28366,510.09479L244.24213,511.87306L243.27217,515.59127ZM273.9878,525.61427L277.706,531.11074L280.13092,530.78742L281.26255,530.30244L282.7175,531.59573L286.43571,531.43407L287.40568,529.97912L284.49577,528.20085L282.55584,524.48263L280.45424,520.92609L274.63444,523.83599L273.9878,525.61427ZM294.19545,534.50564L295.48874,532.5657L300.17691,533.53566L300.82356,533.05068L306.96668,533.69732L306.64336,534.99062L304.05678,536.44556L299.69193,536.12224L294.19545,534.50564ZM299.53027,539.67879L301.47021,543.55866L304.54176,542.42703L304.86509,540.81041L303.24848,538.70882L299.53027,538.3855L299.53027,539.67879ZM306.4817,538.54716L308.74496,535.63726L313.43313,538.06218L317.79798,539.19381L322.16284,541.94205L322.16284,543.88198L318.6063,545.66026L313.75645,546.63022L311.33154,545.17527L306.4817,538.54716ZM323.13281,554.06663L324.74942,552.77335L328.14431,554.38997L335.74238,557.94651L339.13727,560.0481L340.75387,562.47302L342.69381,566.83787L346.73534,569.42445L346.41202,570.71775L342.53215,573.95097L338.32896,575.40592L336.87401,574.75928L333.80244,576.53754L331.37753,579.77077L329.11427,582.68067L327.33599,582.51901L323.77945,579.93243L323.45613,575.40592L324.10277,572.981L322.48616,567.32286L320.38456,565.54458L320.2229,562.958L322.48616,561.98804L324.58776,558.91648L325.07274,557.94651L323.45613,556.16823L323.13281,554.06663Z"}, +{id:"AK",n:"Alaska",d:"M158.07671,453.67502L157.75339,539.03215L159.36999,540.00211L162.44156,540.16377L163.8965,539.03215L166.48308,539.03215L166.64475,541.94205L173.59618,548.73182L174.08117,551.3184L177.47605,549.37846L178.1227,549.2168L178.44602,546.14524L179.90096,544.52863L181.0326,544.36697L182.97253,542.91201L186.04409,545.01361L186.69074,547.92352L188.63067,549.05514L189.7623,551.48006L193.64218,553.25833L197.03706,559.2398L199.78529,563.11966L202.04855,565.86791L203.50351,569.58611L208.515,571.36439L213.68817,573.46598L214.65813,577.83084L215.14311,580.9024L214.17315,584.29729L212.39487,586.56054L210.77826,585.75224L209.32331,582.68067L206.57507,581.22573L204.7968,580.09409L203.98849,580.9024L205.44344,583.65065L205.6051,587.36885L204.47347,587.85383L202.53354,585.9139L200.43195,584.62061L200.91693,586.23722L202.21021,588.0155L201.40191,588.8238C201.40191,588.8238,200.59361,588.50048,200.10863,587.85383C199.62363,587.20719,198.00703,584.45895,198.00703,584.45895L197.03706,582.19569C197.03706,582.19569,196.71374,583.48898,196.06709,583.16565C195.42044,582.84233,194.7738,581.71071,194.7738,581.71071L196.55207,579.77077L195.09712,578.31582L195.09712,573.30432L194.28882,573.30432L193.48052,576.6992L192.34888,577.1842L191.37892,573.46598L190.73227,569.74777L189.92396,569.26279L190.24729,574.92094L190.24729,576.05256L188.79233,574.75928L185.23579,568.77781L183.13419,568.29283L182.48755,564.57462L180.87094,561.66472L179.25432,560.53308L179.25432,558.26983L181.35592,556.97654L180.87094,556.65322L178.28436,557.29986L174.88947,554.87495L172.30289,551.96504L167.45306,549.37846L163.41152,546.79188L164.70482,543.55866L164.70482,541.94205L162.92654,543.55866L160.01664,544.69029L156.29843,543.55866L150.64028,541.13375L145.14381,541.13375L144.49717,541.61873L138.03072,537.73885L135.92912,537.41553L133.18088,531.59573L129.62433,531.91905L126.06778,533.374L126.55277,537.90052L127.68439,534.99062L128.65437,535.31394L127.19941,539.67879L130.43263,536.93055L131.07928,538.54716L127.19941,542.91201L125.90612,542.58869L125.42114,540.64875L124.12785,539.84045L122.83456,540.97208L120.08632,539.19381L117.01475,541.29541L115.23649,543.397L111.8416,545.4986L107.15342,545.33693L106.66844,543.23534L110.38664,542.58869L110.38664,541.29541L108.12338,540.64875L109.09336,538.22384L111.35661,534.34397L111.35661,532.5657L111.51827,531.75739L115.88313,529.49413L116.85309,530.78742L119.60134,530.78742L118.30805,528.20085L114.58983,527.87752L109.57834,530.62576L107.15342,534.02064L105.37515,536.60723L104.24352,538.87049L100.04033,540.32543L96.96876,542.91201L96.645439,544.52863L98.908696,545.4986L99.717009,547.60018L96.96876,550.83341L90.502321,555.03661L82.742574,559.2398L80.640977,560.37142L75.306159,561.50306L69.971333,563.76631L71.749608,565.0596L70.294654,566.51455L69.809672,567.64618L67.061434,566.67621L63.828214,566.83787L63.019902,569.10113L62.049939,569.10113L62.37326,566.67621L58.816709,567.96951L55.90681,568.93947L52.511924,567.64618L49.602023,569.58611L46.368799,569.58611L44.267202,570.87941L42.65059,571.68771L40.548995,571.36439L37.962415,570.23276L35.699158,570.87941L34.729191,571.84937L33.112578,570.71775L33.112578,568.77781L36.184142,567.48452L42.488929,568.13117L46.853782,566.51455L48.955378,564.41296L51.86528,563.76631L53.643553,562.958L56.391794,563.11966L58.008406,564.41296L58.978369,564.08964L61.241626,561.3414L64.313196,560.37142L67.708076,559.72478L69.00137,559.40146L69.648012,559.88644L70.456324,559.88644L71.749608,556.16823L75.791141,554.71329L77.731077,550.99508L79.994336,546.46856L81.610951,545.01361L81.934272,542.42703L80.317657,543.72032L76.922764,544.36697L76.276122,541.94205L74.982838,541.61873L74.012865,542.58869L73.851205,545.4986L72.39625,545.33693L70.941306,539.51713L69.648012,540.81041L68.516388,540.32543L68.193068,538.3855L64.151535,538.54716L62.049939,539.67879L59.463361,539.35547L60.918305,537.90052L61.403286,535.31394L60.756645,533.374L62.211599,532.40404L63.504883,532.24238L62.858241,530.4641L62.858241,526.09925L61.888278,525.12928L61.079966,526.58423L54.936843,526.58423L53.481892,525.29094L52.835247,521.41108L50.733651,517.85452L50.733651,516.88456L52.835247,516.07625L52.996908,513.97465L54.128536,512.84303L53.320231,512.35805L52.026941,512.84303L50.895313,510.09479L51.86528,505.08328L56.391794,501.85007L58.978369,500.23345L60.918305,496.51525L63.666554,495.22195L66.253132,496.35359L66.576453,498.77851L69.00137,498.45517L72.23459,496.03026L73.851205,496.67691L74.821167,497.32355L76.437782,497.32355L78.701041,496.03026L79.509354,491.6654C79.509354,491.6654,79.832675,488.75551,80.479317,488.27052C81.125959,487.78554,81.44928,487.30056,81.44928,487.30056L80.317657,485.36062L77.731077,486.16893L74.497847,486.97723L72.557911,486.49225L69.00137,484.71397L63.989875,484.55231L60.433324,480.83411L60.918305,476.95424L61.564957,474.52932L59.463361,472.75105L57.523423,469.03283L58.008406,468.22453L64.798177,467.73955L66.899773,467.73955L67.869736,468.70951L68.516388,468.70951L68.354728,467.0929L72.23459,466.44626L74.821167,466.76958L76.276122,467.90121L74.821167,470.00281L74.336186,471.45775L77.084435,473.07437L82.095932,474.85264L83.874208,473.88268L81.610951,469.51783L80.640977,466.2846L81.610951,465.47629L78.21606,463.53636L77.731077,462.40472L78.21606,460.78812L77.407756,456.90825L74.497847,452.22007L72.072929,448.01688L74.982838,446.07694L78.21606,446.07694L79.994336,446.72359L84.197528,446.56193L87.915733,443.00539L89.047366,439.93382L92.765578,437.5089L94.382182,438.47887L97.130421,437.83222L100.84863,435.73062L101.98027,435.56896L102.95023,436.37728L107.47674,436.21561L110.22498,433.14405L111.35661,433.14405L114.91316,435.56896L116.85309,437.67056L116.36811,438.80219L117.01475,439.93382L118.63137,438.31721L122.51124,438.64053L122.83456,442.35873L124.7745,443.81369L131.88759,444.46033L138.19238,448.66352L139.64732,447.69356L144.82049,450.28014L146.92208,449.6335L148.86202,448.82518L153.71185,450.76512L158.07671,453.67502ZM42.973913,482.61238L45.075509,487.9472L44.913847,488.91717L42.003945,488.59384L40.225672,484.55231L38.447399,483.09737L36.02248,483.09737L35.86082,480.51078L37.639093,478.08586L38.770722,480.51078L40.225672,481.96573L42.973913,482.61238ZM40.387333,516.07625L44.105542,516.88456L47.823749,517.85452L48.632056,518.8245L47.015444,522.5427L43.94388,522.38104L40.548995,518.8245L40.387333,516.07625ZM19.694697,502.01173L20.826327,504.5983L21.957955,506.21492L20.826327,507.02322L18.72473,503.95166L18.72473,502.01173L19.694697,502.01173ZM5.9534943,575.0826L9.3483796,572.81934L12.743265,571.84937L15.329845,572.17269L15.814828,573.7893L17.754763,574.27429L19.694697,572.33436L19.371375,570.71775L22.119616,570.0711L25.029518,572.65768L23.897889,574.43595L19.533037,575.56758L16.784795,575.0826L13.066588,573.95097L8.7017347,575.40592L7.0851227,575.72924L5.9534943,575.0826ZM54.936843,570.55609L56.553455,572.49602L58.655048,570.87941L57.2001,569.58611L54.936843,570.55609ZM57.846745,573.62764L58.978369,571.36439L61.079966,571.68771L60.271663,573.62764L57.846745,573.62764ZM81.44928,571.68771L82.904234,573.46598L83.874208,572.33436L83.065895,570.39442L81.44928,571.68771ZM90.17899,559.2398L91.310623,565.0596L94.220522,565.86791L99.232017,562.958L103.59687,560.37142L101.98027,557.94651L102.46525,555.52159L100.36365,556.81488L97.453752,556.00657L99.070357,554.87495L101.01029,555.68325L104.89016,553.90497L105.37515,552.45003L102.95023,551.64172L103.75853,549.70178L101.01029,551.64172L96.322118,555.19827L91.472284,558.10817L90.17899,559.2398ZM132.53423,539.35547L134.95915,537.90052L133.98918,536.12224L132.21091,537.09221L132.53423,539.35547Z"}, +{id:"FL",n:"Florida",d:"M759.8167,439.1428L762.08236,446.4614L765.81206,456.20366L771.14685,465.57996L774.86504,471.88472L779.71486,477.38118L783.75637,481.09937L785.37297,484.00926L784.24135,485.30254L783.43305,486.59582L786.34293,494.03221L789.25282,496.94209L791.83939,502.27689L795.39592,508.09667L799.92241,516.34135L801.2157,523.93939L801.70068,535.90227L802.34732,537.68053L802.024,541.0754L799.59909,542.36869L799.92241,544.30861L799.27577,546.24854L799.59909,548.67344L800.08407,550.61337L797.33585,553.84658L794.2643,555.30152L790.38445,555.46318L788.9295,557.07979L786.5046,558.04975L785.21131,557.56477L784.07969,556.59481L783.75637,553.68492L782.94806,550.29005L779.55319,545.11691L775.99666,542.85367L772.11681,542.53035L771.30851,543.82363L768.23696,539.4588L767.59032,535.90227L765.00375,531.86076L763.22549,530.72913L761.60888,532.83072L759.83062,532.5074L757.72903,527.49592L754.81914,523.61607L751.90925,518.28128L749.32269,515.20973L745.76616,511.49154L747.86774,509.06663L751.10095,503.57017L750.93929,501.95357L746.4128,500.98361L744.79619,501.63025L745.11952,502.27689L747.70608,503.24685L746.25114,507.77335L745.44284,508.25833L743.66457,504.21682L742.37129,499.367L742.04797,496.61877L743.50291,491.93062L743.50291,482.39265L740.43136,478.67446L739.13808,475.60291L733.96494,474.30963L732.02502,473.66299L730.40841,471.07642L727.01354,469.45981L725.88192,466.06494L723.13369,465.09498L720.70878,461.37679L716.50561,459.92185L713.59572,458.4669L711.00916,458.4669L706.96764,459.27521L706.80598,461.21513L707.61429,462.18509L707.1293,463.31672L704.05776,463.15506L700.33957,466.71159L696.78303,468.65151L692.90318,468.65151L689.66997,469.9448L689.34665,467.19657L687.73005,465.25664L684.82016,464.12502L683.20356,462.67007L675.12053,458.79022L667.52249,457.01196L663.15766,457.6586L657.17622,458.14358L651.19478,460.24517L647.71554,460.85813L647.47762,452.80838L644.89105,450.86846L643.11278,449.09019L643.4361,446.01863L653.62072,444.72535L679.16312,441.81546L685.95287,441.16882L691.38887,441.44909L693.97544,445.32895L695.43038,446.78389L703.52854,447.29911L714.34829,446.65247L735.86068,445.35918L741.3064,444.68481L746.41398,444.88932L746.84081,447.79921L749.07381,448.60751L749.30875,443.97751L747.78053,439.80456L749.08893,438.36473L754.64356,438.81948L759.8167,439.1428ZM772.36211,571.54788L774.78703,570.90124L776.08031,570.65875L777.53527,568.31466L779.87935,566.69805L781.17264,567.18304L782.87008,567.50636L783.27423,568.55715L779.79853,569.76961L775.59533,571.22456L773.25125,572.43702L772.36211,571.54788ZM785.86081,566.53639L787.07327,567.58719L789.82151,565.4856L795.15632,561.28241L798.87452,557.40254L801.38027,550.77444L802.35024,549.077L802.5119,545.68212L801.78442,546.1671L800.81446,548.99617L799.3595,553.6035L796.12628,558.8575L791.76144,563.06068L788.36656,565.00061L785.86081,566.53639Z"}, +{id:"NH",n:"New Hampshire",d:"M880.79902,142.42476L881.66802,141.34826L882.75824,138.05724L880.21516,137.14377L879.73017,134.07221L875.85032,132.94059L875.527,130.19235L868.25225,106.75153L863.65083,92.208542L862.75375,92.203482L862.10711,93.820087L861.46047,93.335106L860.4905,92.365143L859.03556,94.305068L858.98709,99.337122L859.29874,105.00434L861.23866,107.75258L861.23866,111.7941L857.52046,116.85688L854.93389,117.98852L854.93389,119.12014L856.06552,120.89841L856.06552,129.46643L855.25721,138.6811L855.09555,143.53092L856.06552,144.82422L855.90386,149.35071L855.41887,151.12899L856.38768,151.83821L873.17535,147.41366L875.35022,146.81121L877.19379,144.03788L880.79902,142.42476Z"}, +{id:"MI",n:"Michigan",d:"M581.61931,82.059006L583.4483,80.001402L585.62022,79.201221L590.99286,75.314624L593.27908,74.743065L593.73634,75.200319L588.59232,80.344339L585.27728,82.287628L583.21967,83.202124L581.61931,82.059006ZM667.79369,114.18719L668.44033,116.69293L671.67355,116.85459L672.96684,115.64213C672.96684,115.64213,672.88601,114.18719,672.56269,114.02552C672.23936,113.86386,670.94608,112.16642,670.94608,112.16642L668.76366,112.40891L667.14704,112.57057L666.82372,113.7022L667.79369,114.18719ZM567.49209,111.21318L568.20837,110.63278L570.9566,109.82447L574.51313,107.56123L574.51313,106.59126L575.15978,105.94462L581.14121,104.97466L583.56612,103.03473L587.93095,100.93315L588.09261,99.639864L590.03254,96.729975L591.8108,95.921673L593.10409,94.143408L595.36733,91.880161L599.73217,89.455254L604.42032,88.970273L605.55194,90.101896L605.22862,91.071859L601.51043,92.041822L600.05549,95.113371L597.79224,95.921673L597.30726,98.34658L594.88235,101.57979L594.55903,104.16636L595.36733,104.65134L596.3373,103.51972L599.89383,100.60983L601.18711,101.90311L603.45036,101.90311L606.68357,102.87307L608.13851,104.0047L609.59345,107.07625L612.34168,109.82447L616.22153,109.66281L617.67648,108.69285L619.29308,109.98613L620.90969,110.47112L622.20297,109.66281L623.33459,109.66281L624.9512,108.69285L628.99271,105.13632L632.38758,104.0047L639.01566,103.68138L643.54215,101.74145L646.12872,100.44817L647.58367,100.60983L647.58367,106.26794L648.06865,106.59126L650.97853,107.39957L652.91846,106.91458L659.06156,105.29798L660.19318,104.16636L661.64813,104.65134L661.64813,111.60274L664.88134,114.67429L666.17462,115.32093L667.4679,116.29089L666.17462,116.61421L665.36632,116.29089L661.64813,115.80591L659.54654,116.45255L657.28329,116.29089L654.05008,117.74584L652.27182,117.74584L646.45204,116.45255L641.27891,116.61421L639.33898,119.20078L632.38758,119.84742L629.96267,120.65572L628.83105,123.72727L627.53777,124.8589L627.05279,124.69724L625.59784,123.08063L621.07135,125.50554L620.42471,125.50554L619.29308,123.88893L618.48478,124.05059L616.54486,128.41543L615.57489,132.45694L612.39377,139.45774L611.21701,138.42347L609.84527,137.39215L607.90449,127.10413L604.36001,125.73408L602.30743,123.44785L590.18707,120.70437L587.3318,119.67473L579.10138,117.50199L571.21139,116.35887L567.49209,111.21318ZM697.8,177.2L694.6,168.9L692.3,159.9L689.9,156.7L687.3,154.9L685.7,156L681.8,157.8L679.9,162.8L677.1,166.5L676,167.2L674.5,166.5C674.5,166.5,671.9,165.1,672.1,164.4C672.3,163.8,672.6,159.4,672.6,159.4L676,158.1L676.8,154.7L677.4,152.1L679.9,150.5L679.5,140.5L677.9,138.2L676.6,137.4L675.8,135.3L676.6,134.5L678.2,134.8L678.4,133.2L676,131L674.7,128.4L672.1,128.4L667.6,126.9L662.1,123.5L659.3,123.5L658.7,124.2L657.7,123.7L654.6,121.4L651.7,123.2L648.8,125.5L649.2,129L650.1,129.3L652.2,129.8L652.7,130.6L650.1,131.4L647.5,131.8L646.1,133.5L645.8,135.6L646.1,137.3L646.4,142.8L642.8,144.9L642.2,144.7L642.2,140.5L643.5,138.1L644.1,135.6L643.3,134.8L641.4,135.6L640.4,139.8L637.7,141L635.9,142.9L635.7,143.9L636.4,144.7L635.7,147.3L633.5,147.8L633.5,148.9L634.3,151.3L633.1,157.5L631.5,161.5L632.2,166.2L632.7,167.3L631.9,169.8L631.5,170.6L631.2,173.3L634.8,179.3L637.7,185.8L639.1,190.6L638.3,195.3L637.3,201.3L634.9,206.4L634.6,209.2L631.3,212.3L635.8,212.1L657.2,209.9L664.4,208.9L664.5,210.5L671.4,209.3L681.7,207.8L685.5,207.4L685.7,206.8L685.8,205.3L687.9,201.6L689.9,199.9L689.7,194.8L691.3,193.2L692.4,192.9L692.6,189.3L694.2,186.3L695.2,186.9L695.4,187.5L696.2,187.7L698.1,186.7L697.8,177.2Z"}, +{id:"VT",n:"Vermont",d:"M844.48416,154.05791L844.80086,148.71228L841.91015,137.92811L841.26351,137.60479L838.35361,136.3115L839.16191,133.40161L838.35361,131.30002L835.65356,126.66004L836.62353,122.78018L835.81522,117.60703L833.39031,111.14059L832.58474,106.21808L859.0041,99.48626L859.3128,105.00847L861.22906,107.7507L861.22906,111.79222L857.52191,116.85021L854.93534,117.99288L854.92429,119.11345L856.23426,120.63257L855.92333,128.73054L855.3139,137.9894L855.08595,143.54634L856.05591,144.83963L855.89425,149.41032L855.40927,151.10021L856.42345,151.82737L848.9859,153.33408L844.48416,154.05791Z"}, +{id:"ME",n:"Maine",d:"M922.83976,78.830719L924.77969,80.932305L927.04294,84.650496L927.04294,86.590422L924.94135,91.278575L923.00142,91.925217L919.60655,94.996766L914.75674,100.49322C914.75674,100.49322,914.1101,100.49322,913.46346,100.49322C912.81682,100.49322,912.49349,98.391636,912.49349,98.391636L910.71523,98.553296L909.74527,100.00824L907.32036,101.46319L906.3504,102.91813L907.967,104.37307L907.48202,105.01972L906.99704,107.76794L905.05711,107.60628L905.05711,105.98968L904.73379,104.69639L903.27885,105.01972L901.50058,101.78651L899.399,103.07979L900.69228,104.53473L901.0156,105.66636L900.2073,106.95964L900.53062,110.03119L900.69228,111.64779L899.07568,114.23436L896.16579,114.71934L895.84247,117.62923L890.50767,120.70078L889.21439,121.18576L887.59778,119.73082L884.52623,123.28735L885.4962,126.52056L884.04125,127.81384L883.87959,132.17867L882.75631,138.43803L880.29406,137.28208L879.80907,134.21052L875.92922,133.07889L875.6059,130.33065L868.33115,106.88983L863.63257,92.250088L865.05311,92.131923L866.5669,92.541822L866.5669,89.955254L867.8752,85.458798L870.46177,80.770645L871.91672,76.729133L869.97679,74.304226L869.97679,68.322789L870.78509,67.352826L871.5934,64.604598L871.43174,63.149654L871.27007,58.29984L873.04834,53.450026L875.95823,44.5587L878.05981,40.355528L879.3531,40.355528L880.64638,40.517188L880.64638,41.648811L881.93967,43.912058L884.68789,44.5587L885.4962,43.750397L885.4962,42.780435L889.53771,39.870546L891.31597,38.092281L892.77092,38.253942L898.75235,40.678849L900.69228,41.648811L909.74527,71.555998L915.7267,71.555998L916.53501,73.495924L916.69667,78.345738L919.60655,80.608984L920.41486,80.608984L920.57652,80.124003L920.09154,78.99238L922.83976,78.830719ZM901.90801,108.97825L903.44379,107.44247L904.81791,108.49327L905.38372,110.91819L903.68628,111.80732L901.90801,108.97825ZM908.61694,103.07763L910.39521,104.93673C910.39521,104.93673,911.6885,105.01755,911.6885,104.69423C911.6885,104.37091,911.93099,102.67347,911.93099,102.67347L912.82013,101.86517L912.01182,100.08689L909.99106,100.81437L908.61694,103.07763Z"}, +{id:"RI",n:"Rhode Island",d:"M874.07001,178.89536L870.37422,163.93937L876.6435,162.09423L878.83463,164.02135L882.14112,168.342L884.82902,172.74409L881.82968,174.36888L880.5364,174.20722L879.40478,175.98549L876.97987,177.92541L874.07001,178.89536Z"}, +{id:"NY",n:"New York",d:"M830.37944,188.7456L829.24781,187.77564L826.66123,187.61398L824.39799,185.67406L822.76738,179.54493L819.30892,179.63547L816.86521,176.92727L797.47989,181.30921L754.47811,190.0389L746.94846,191.26689L746.2103,184.79855L747.6384,183.67317L748.93168,182.54155L749.90165,180.92494L751.67991,179.79332L753.61984,178.01505L754.10482,176.39845L756.2064,173.65022L757.33803,172.68026L757.17637,171.71029L755.88308,168.63875L754.10482,168.47709L752.16489,162.33399L755.07478,160.55572L759.43961,159.10078L763.48113,157.80749L766.71434,157.32251L773.01909,157.16085L774.95902,158.45414L776.57562,158.6158L778.67721,157.32251L781.26378,156.19089L786.43691,155.70591L788.5385,153.92764L790.31676,150.69443L791.93337,148.75451L794.03495,148.75451L795.97488,147.62288L796.13654,145.35964L794.6816,143.25805L794.35828,141.80311L795.4899,139.70152L795.4899,138.24658L793.71163,138.24658L791.93337,137.43828L791.12507,136.30665L790.96341,133.72008L796.78318,128.22363L797.42982,127.41533L798.88477,124.50544L801.79466,119.97894L804.54289,116.26075L806.64447,113.83585L809.05957,112.01024L812.14093,110.7643L817.63738,109.47101L820.87059,109.63267L825.39709,108.17773L832.96228,106.10656L833.48207,111.08623L835.90699,117.55267L836.71529,122.72582L835.74533,126.60568L838.3319,131.13218L839.1402,133.23377L838.3319,136.14367L841.2418,137.43695L841.88844,137.76027L844.96,148.75321L844.42371,153.81288L843.93873,164.64415L844.74703,170.14062L845.55533,173.69716L847.01028,180.9719L847.01028,189.05494L845.87865,191.31819L847.71798,193.31098L848.51453,194.9894L846.57461,196.76767L846.89793,198.06095L848.19121,197.73763L849.64616,196.44435L851.9094,193.85778L853.04103,193.21114L854.65763,193.85778L856.92088,194.01944L864.84224,190.13959L867.75213,187.39136L869.04541,185.93642L873.24858,187.55302L869.85371,191.10955L865.97386,194.01944L858.8608,199.35423L856.27424,200.3242L850.45446,202.26412L846.41295,203.39575L845.23821,202.86282L844.99419,199.17429L845.47917,196.42605L845.31751,194.32447L842.504,192.62547L837.9775,191.6555L834.09764,190.52388L830.37944,188.7456Z"}, +{id:"PA",n:"Pennsylvania",d:"M825.1237,224.69205L826.43212,224.42105L828.76165,223.1678L829.97353,220.68473L831.59014,218.42148L834.82335,215.34992L834.82335,214.54162L832.39844,212.92502L828.8419,210.5001L827.87194,207.91353L825.1237,207.59021L824.96204,206.45858L824.15374,203.71035L826.417,202.57873L826.57866,200.15381L825.28536,198.86052L825.44702,197.24391L827.38696,194.17236L827.38696,191.1008L830.08459,188.45492L829.16431,187.77994L826.64023,187.58703L824.34574,185.64711L822.79582,179.53105L819.29124,179.63157L816.83601,176.92824L798.74502,181.12601L755.74324,189.8557L746.85189,191.31064L746.23122,184.78925L740.86869,189.8569L739.5754,190.34188L735.37311,193.35077L738.28387,212.48822L740.76553,222.21758L744.33733,241.47907L747.60664,240.84139L759.55022,239.33892L797.47685,231.67372L812.35306,228.8504L820.65341,227.22804L820.92052,226.98951L823.02212,225.37289L825.1237,224.69205Z"}, +{id:"NJ",n:"New Jersey",d:"M829.67942,188.46016L827.35687,191.19443L827.35687,194.26599L825.41693,197.33754L825.25527,198.95416L826.54857,200.24744L826.38691,202.67236L824.12365,203.80398L824.93195,206.55221L825.09361,207.68384L827.84185,208.00716L828.81181,210.59373L832.36835,213.01865L834.79326,214.63525L834.79326,215.44356L831.81005,218.14012L830.19344,220.40336L828.73849,223.1516L826.47524,224.44488L826.01279,226.04736L825.77029,227.25982L825.16106,229.86656L826.25333,232.11075L829.48654,235.02064L834.33635,237.28389L838.37786,237.93053L838.53952,239.38547L837.73122,240.35543L838.05454,243.10366L838.86284,243.10366L840.96443,240.67876L841.77273,235.82894L844.52096,231.78743L847.59251,225.32101L848.72413,219.82456L848.07749,218.69293L847.91583,209.31662L846.29922,205.92176L845.1676,206.73006L842.41937,207.05338L841.93439,206.5684L843.06602,205.59843L845.1676,203.65851L845.23066,202.56468L844.84627,199.13084L845.41964,196.3826L845.30217,194.41359L842.49463,192.66324L837.40249,191.48748L833.26505,190.10585L829.67942,188.46016Z"}, +{id:"DE",n:"Delaware",d:"M825.6261,228.2791L825.99441,226.13221L826.36948,224.44116L824.74648,224.83892L823.13102,225.30648L820.92476,227.07078L822.64488,232.11366L824.90814,237.77178L827.00972,247.47143L828.62634,253.77621L833.63782,253.61455L839.77994,252.43387L837.51571,245.0476L836.54574,245.53258L832.98921,243.10768L831.21095,238.41952L829.27102,234.86299L826.1239,231.99268L825.25974,229.89456L825.6261,228.2791Z"}, +{id:"MD",n:"Maryland",d:"M839.79175,252.41476L833.7832,253.6186L828.6403,253.73606L826.79674,246.81373L824.87193,237.64441L822.29931,231.45596L821.01093,227.05763L813.50491,228.67999L798.6287,231.50331L761.17727,239.05421L762.30857,244.06587L763.27853,249.72398L763.60185,249.40066L765.70345,246.97576L767.96669,244.3581L770.3916,243.74254L771.84656,242.28759L773.62482,239.70102L774.9181,240.34767L777.82799,240.02434L780.41457,237.92276L782.42146,236.46949L784.26669,235.98451L785.91104,237.11446L788.82093,238.5694L790.76085,240.34767L791.97331,241.88345L796.09566,243.58088L796.09566,246.49077L801.59212,247.78406L802.73656,248.32604L804.14846,246.29772L807.03043,248.26788L805.75226,250.74981L804.98699,254.73547L803.20873,257.32204L803.20873,259.42363L803.85537,261.2019L808.91932,262.55759L813.23042,262.49587L816.30196,263.46584L818.40355,263.78916L819.37351,261.68757L817.91857,259.58599L817.91857,257.80772L815.49366,255.70613L813.39208,250.20968L814.68536,244.87488L814.5237,242.7733L813.23042,241.48001C813.23042,241.48001,814.68536,239.86341,814.68536,239.21677C814.68536,238.57012,815.17034,237.11518,815.17034,237.11518L817.11027,235.8219L819.05019,234.20529L819.53517,235.17526L818.08023,236.79186L816.78695,240.51005L817.11027,241.64167L818.88853,241.96499L819.37351,247.46145L817.27193,248.43141L817.59525,251.98794L818.08023,251.82628L819.21185,249.88636L820.82846,251.66462L819.21185,252.95791L818.88853,256.35278L821.4751,259.74765L825.35495,260.23263L826.97156,259.42433L830.20811,263.60726L831.56646,264.14356L838.22013,261.34661L840.22771,257.32274L839.79175,252.41476ZM823.82217,261.44348L824.95379,263.94923L825.11545,265.7275L826.24708,267.5866C826.24708,267.5866,827.13622,266.69746,827.13622,266.37414C827.13622,266.05082,826.40875,263.30258,826.40875,263.30258L825.68127,260.95849L823.82217,261.44348Z"}, +{id:"VA",n:"Virginia",d:"M831.63885,266.06892L831.49494,264.12189L837.94837,261.57201L837.17796,264.78985L834.25801,268.56896L833.83992,273.15478L834.30167,276.54522L832.4737,281.52338L830.30943,283.43952L828.83909,278.79871L829.28498,273.3496L830.87198,269.16653L831.63885,266.06892ZM834.97904,294.37028L776.80486,306.94571L739.37789,312.22478L732.69956,311.8496L730.11431,313.77598L722.77518,313.99667L714.39307,314.97434L703.47811,316.58896L713.94754,310.97776L713.93442,308.90283L715.45447,306.7567L726.00825,295.25527L729.95497,299.73273L733.73798,300.69671L736.28144,299.55639L738.51866,298.24523L741.05527,299.58875L744.96944,298.16099L746.84617,293.60465L749.44709,294.14467L752.30233,292.01342L754.1016,292.50702L756.92881,288.83045L757.27706,286.74734L756.3134,285.47177L757.31617,283.60514L762.59044,271.32799L763.20721,265.59291L764.4361,265.06937L766.61463,267.51224L770.55049,267.21107L772.4797,259.63744L775.27369,259.07658L776.32344,256.33551L778.90326,253.98863L781.67509,248.29344L781.76002,243.22589L791.58153,247.04871C792.26238,247.38913,792.41441,241.99956,792.41441,241.99956L796.06697,243.59789L796.1353,246.53605L801.91955,247.83554L804.0525,249.01174L805.71242,251.06743L805.05787,254.7161L803.11043,257.30708L803.22028,259.36615L803.80924,261.21906L808.78799,262.48749L813.23926,262.52737L816.30809,263.48601L818.2516,263.79531L818.96641,266.88377L822.15685,267.2863L823.02492,268.48632L822.58543,273.1764L823.96016,274.27895L823.48121,276.20934L824.71062,276.99911L824.48882,278.38371L821.79483,278.28877L821.88379,279.90429L824.16478,281.44716L824.28632,282.85906L826.05943,284.64444L826.55122,287.16857L823.99818,288.54988L825.5704,290.04418L831.37142,288.35835L834.97904,294.37028Z"}, +{id:"WV",n:"West Virginia",d:"M761.18551,238.96731L762.29752,243.91184L763.38096,249.94317L765.51125,247.36283L767.77449,244.29127L770.31287,243.67572L771.76782,242.22078L773.54609,239.63421L774.99107,240.28085L777.90096,239.95753L780.48754,237.85594L782.49443,236.40268L784.33966,235.91769L785.64358,236.93416L789.28683,238.75579L791.22676,240.53406L792.60088,241.82734L791.83916,247.38228L786.00425,244.84106L781.759,243.21904L781.65786,248.39747L778.91022,253.9342L776.38019,256.36086L775.1881,259.11025L772.54452,259.61035L771.64668,263.21223L770.60345,267.1619L766.63521,267.50264L764.31148,265.06376L763.24033,265.62317L762.60765,271.09287L761.25736,274.62737L756.29896,285.58234L757.19565,286.74304L756.98979,288.65158L754.1811,292.53605L752.3726,291.99176L749.40455,294.1515L746.86217,293.57929L744.86294,298.13486C744.86294,298.13486,741.60363,299.56508,740.94003,299.50258C740.77952,299.48746,738.47093,298.25348,738.47093,298.25348L736.13441,299.63285L733.72461,300.67725L729.97992,299.78813L728.85852,298.61985L726.6663,295.59649L723.52371,293.60837L721.81214,289.98513L717.52726,286.51694L716.88061,284.25369L714.29404,282.79874L713.48573,281.18214L713.24324,275.92816L715.42566,275.84733L717.3656,275.03903L717.52726,272.2908L719.14386,270.83585L719.30552,265.82437L720.27548,261.94451L721.56877,261.29787L722.86205,262.42949L723.34704,264.20776L725.12531,263.23779L725.61029,261.62119L724.47867,259.84292L724.47867,257.41801L725.44863,256.12472L727.71188,252.72985L729.00516,251.27491L731.10676,251.75989L733.37,250.14327L736.44155,246.7484L738.70481,242.86854L739.02813,237.21043L739.51311,232.19894L739.51311,227.51078L738.38149,224.43923L739.35145,222.98427L740.63493,221.69099L744.12618,241.51811L748.75719,240.76696L761.18551,238.96731Z"}, +{id:"OH",n:"Ohio",d:"M735.32497,193.32832L729.23143,197.38167L725.35158,199.64492L721.95671,203.36311L717.9152,207.24296L714.68199,208.05126L711.7721,208.53624L706.27564,211.12281L704.17406,211.28447L700.77919,208.21292L695.60605,208.85957L693.01949,207.40462L690.63842,206.05379L685.74585,206.7572L675.56123,208.37381L664.35436,210.55854L665.64765,225.18882L667.42592,238.92999L670.01248,262.37079L670.5783,267.20196L674.70065,267.07294L677.12556,266.26463L680.48936,267.76777L682.55985,272.1326L687.69879,272.1155L689.59053,274.2342L691.3517,274.1689L693.89009,272.82744L696.39426,273.19894L701.81554,273.68162L703.54251,271.54894L705.88816,270.25566L707.95865,269.57481L708.60529,272.32305L710.38357,273.29301L713.85926,275.63708L716.04168,275.55626L717.3748,275.06378L717.55951,272.30225L719.14487,270.84729L719.24403,266.05457C719.24403,266.05457,720.26799,261.94551,720.26799,261.94551L721.56726,261.34423L722.88861,262.49197L723.42676,264.18899L725.14589,263.15157L725.58487,261.69082L724.46818,259.78776L724.53447,257.47333L725.28347,256.40102L727.43623,253.09454L728.48645,251.5512L730.58804,252.03618L732.85129,250.41957L735.92284,247.0247L738.69433,242.94597L739.01466,237.89046L739.49964,232.87897L739.32286,227.57209L738.36802,224.67731L738.71926,223.48753L740.52365,221.73742L738.23486,212.69009L735.32497,193.32832Z"}, +{id:"IN",n:"Indiana",d:"M619.56954,299.97132L619.63482,297.11274L620.11981,292.58623L622.38305,289.67635L624.16133,285.79648L626.74789,281.59331L626.26291,275.77352L624.48465,273.02529L624.16133,269.79208L624.96963,264.29561L624.48465,257.3442L623.19135,241.33979L621.89807,225.98203L620.9276,214.26201L623.99866,215.15152L625.45361,216.12148L626.58523,215.79816L628.68682,213.85824L631.51639,212.24125L636.60919,212.07921L658.59506,209.81595L664.17079,209.28279L665.67393,225.239L669.92528,262.08055L670.52374,267.85215L670.15224,270.1154L671.38022,271.91077L671.47661,273.28332L668.95532,274.88283L665.41589,276.43414L662.21376,276.98442L661.6153,281.85135L657.04061,285.16382L654.24419,289.17426L654.56751,291.55099L653.98617,293.08519L650.6597,293.08519L649.07417,291.46859L646.58086,292.73079L643.8979,294.23393L644.05957,297.28838L642.86578,297.54641L642.3979,296.52827L640.23102,295.02513L636.9807,296.36661L635.42939,299.37286L633.99155,298.56456L632.5366,296.96505L628.07226,297.45004L622.47943,298.42L619.56954,299.97132Z"}, +{id:"IL",n:"Illinois",d:"M619.54145,300.34244L619.5727,297.11273L620.14009,292.46677L622.47262,289.55091L624.33927,285.47515L626.57229,281.47982L626.20079,276.22742L624.19558,272.68485L624.0992,269.33817L624.79403,264.06866L623.96862,256.89029L622.90228,241.11284L621.609,226.0955L620.68672,214.4563L620.41421,213.53491L619.60591,210.94834L618.31263,207.23015L616.69602,205.45188L615.24108,202.86532L615.00751,197.37636L569.21108,199.97461L569.4397,202.34656L571.72593,203.03243L572.64041,204.17554L573.09766,206.00452L576.98424,209.43386L577.67012,211.72009L576.98424,215.14943L575.15526,218.80739L574.4694,221.32223L572.18317,223.15122L570.35419,223.83709L565.09587,225.20882L564.41,227.0378L563.72413,229.09541L564.41,230.46715L566.23898,232.06751L566.01036,236.18271L564.18137,237.78307L563.49551,239.38343L563.49551,242.1269L561.66653,242.58414L560.06617,243.72726L559.83755,245.099L560.06617,247.1566L558.3515,248.47117L557.3227,251.27181L557.77994,254.92976L560.06617,262.24569L567.3821,269.79024L572.86903,273.4482L572.64041,277.79203L573.55491,279.16377L579.95634,279.62101L582.69981,280.99275L582.01395,284.65071L579.72772,290.5949L579.04185,293.79562L581.32807,297.6822L587.72951,302.94052L592.30197,303.62639L594.35956,308.65609L596.41717,311.8568L595.50268,314.82889L597.10304,318.9441L598.93202,321.00171L600.34605,320.12102L601.25371,318.04623L603.46679,316.29903L605.59826,315.68463L608.20079,316.86443L611.82778,318.24013L613.01673,317.9419L613.2166,315.68345L611.9293,313.27166L612.23352,310.89494L614.07192,309.54749L617.09446,308.7372L618.35536,308.27868L617.74275,306.8918L616.95138,304.53743L618.38398,303.55647L619.54145,300.34244Z"}, +{id:"CT",n:"Connecticut",d:"M874.06831,178.86288L870.39088,163.98407L865.67206,164.90438L844.44328,169.64747L845.44347,172.87314L846.89842,180.14788L847.0752,189.1148L845.85518,191.28967L847.77597,193.22201L852.0475,189.31637L855.60403,186.08316L857.54395,183.98157L858.35226,184.62821L861.10048,183.17327L866.27362,182.04165L874.06831,178.86288Z"}, +{id:"WI",n:"Wisconsin",d:"M615.06589,197.36866L614.99915,194.21124L613.82004,189.68474L613.1734,183.54165L612.04178,181.11674L613.01174,178.04519L613.82004,175.1353L615.27499,172.54874L614.62834,169.15387L613.9817,165.59734L614.46668,163.81907L616.40661,161.39416L616.56827,158.64593L615.75997,157.35265L616.40661,154.76608L615.95409,150.59537L618.70232,144.93726L621.61221,138.14752L621.77387,135.88427L621.45055,134.91431L620.64224,135.39929L616.43907,141.70405L613.69084,145.74556L611.75092,147.52383L610.94262,149.78707L608.98767,150.59537L607.85605,152.5353L606.4011,152.21198L606.23944,150.43371L607.53273,148.00881L609.63431,143.32065L611.41258,141.70405L612.40341,139.3462L609.84296,137.44486L607.86814,127.07787L604.32067,125.73589L602.37441,123.42756L590.2447,120.70592L587.36881,119.69387L579.15569,117.52658L571.23777,116.36783L567.47261,111.23716L566.72221,111.79117L565.5243,111.62951L564.87765,110.49789L563.54364,110.79444L562.41201,110.9561L560.63375,111.92606L559.66378,111.27942L560.31043,109.33949L562.25035,106.26794L563.38197,105.13632L561.44205,103.68138L559.34046,104.48968L556.43057,106.4296L548.99419,109.66281L546.0843,110.30945L543.17442,109.82447L542.19269,108.94622L540.07599,111.7814L539.84737,114.52487L539.84737,122.9839L538.70425,124.58427L533.44593,128.47084L531.15971,134.41503L531.61695,134.64365L534.1318,136.70126L534.81766,139.90198L532.98868,143.10269L532.98868,146.98928L533.44593,153.61933L536.41802,156.59143L539.84737,156.59143L541.67635,159.79215L545.10568,160.24939L548.99227,165.96496L556.07957,170.08017L558.13717,172.82364L559.05167,180.25388L559.73753,183.5689L562.02376,185.16926L562.25238,186.541L560.19478,189.97033L560.4234,193.17106L562.93825,197.05764L565.4531,198.20075L568.42519,198.65799L569.76753,200.03811L615.06589,197.36866Z"}, +{id:"NC",n:"North Carolina",d:"M834.98153,294.31554L837.06653,299.23289L840.62306,305.69931L843.04796,308.12422L843.6946,310.38747L841.2697,310.54913L842.078,311.19577L841.75468,315.39894L839.16811,316.69222L838.52147,318.79381L837.22819,321.7037L833.50999,323.3203L831.08509,322.99698L829.63014,322.83532L828.01354,321.54204L828.33686,322.83532L828.33686,323.80529L830.27679,323.80529L831.08509,325.09857L829.14516,331.40333L833.34833,331.40333L833.99498,333.01993L836.25822,330.75669L837.55151,330.2717L835.61158,333.82823L832.54003,338.67805L831.24675,338.67805L830.11512,338.19307L827.3669,338.83971L822.19376,341.26462L815.72734,346.59941L812.33247,351.28756L810.39255,357.75398L809.90757,360.17889L805.21941,360.66387L799.76628,362.00053L789.81987,353.798L777.21033,346.19995L774.30044,345.39164L761.69091,346.84659L757.41445,347.59674L755.79785,344.36352L752.82749,342.24682L736.3381,342.7318L729.06336,343.5401L720.01037,348.06661L713.86726,350.65317L692.68971,353.23975L693.1898,349.18542L694.96807,347.73048L697.71631,347.08383L698.36295,343.36563L702.56613,340.61741L706.44598,339.16245L710.64917,335.60592L715.014,333.50433L715.66064,330.43277L719.5405,326.55292L720.18714,326.39126C720.18714,326.39126,720.18714,327.52289,720.99545,327.52289C721.80375,327.52289,722.93538,327.84621,722.93538,327.84621L725.19863,324.28967L727.30022,323.64302L729.56346,323.96635L731.18008,320.40982L734.08997,317.82324L734.57495,315.72165L734.76245,312.07346L739.03895,312.05094L746.23754,311.19515L761.99477,308.94272L777.13081,306.85615L798.77129,302.1368L818.75461,297.87823L829.93155,295.47242L834.98153,294.31554ZM839.25199,327.52211L841.83857,325.01636L844.99095,322.42978L846.52673,321.78314L846.68839,319.76238L846.04175,313.61926L844.5868,311.27518L843.94015,309.41608L844.66763,309.17358L847.41587,314.67006L847.82002,319.11573L847.65836,322.51062L844.26348,324.04639L841.43441,326.47131L840.30279,327.68377L839.25199,327.52211Z"}, +{id:"DC",n:"Washington DC",d:"M805.81945,250.84384L803.96117,249.01967L802.72854,248.33338L804.17155,246.31091L807.06064,248.25941L805.81945,250.84384Z"}, +{id:"MA",n:"Massachusets",d:"M899.62349,173.25394L901.79541,172.56806L902.25267,170.85339L903.28147,170.9677L904.31027,173.25394L903.05285,173.71118L899.16625,173.8255L899.62349,173.25394ZM890.24995,174.05412L892.53617,171.42495L894.13654,171.42495L895.96553,172.911L893.56499,173.9398L891.39307,174.9686L890.24995,174.05412ZM855.45082,152.06593L873.09769,147.42525L875.36095,146.77861L877.27503,143.9829L881.0118,142.31959L883.90104,146.73243L881.47613,151.90557L881.15281,153.36051L883.09274,155.94708L884.22436,155.13878L886.00263,155.13878L888.26587,157.72534L892.14573,163.70678L895.70226,164.19176L897.9655,163.2218L899.74377,161.44353L898.93546,158.69531L896.83388,157.0787L895.37893,157.887L894.40897,156.59372L894.89395,156.10874L896.99554,155.94708L898.7738,156.75538L900.71373,159.18029L901.68369,162.09018L902.00701,164.51508L897.80384,165.97003L893.92399,167.90995L890.04414,172.43645L888.10421,173.89139L888.10421,172.92143L890.52912,171.46648L891.0141,169.68822L890.2058,166.61667L887.29591,168.07161L886.48761,169.52656L886.97259,171.7898L884.90626,172.79023L882.15906,168.2631L878.76418,163.89826L876.69368,162.08579L870.16041,163.96199L865.06808,165.01278L844.39292,169.60499L843.72516,164.83714L844.3718,154.24837L848.66107,153.35923L855.45082,152.06593Z"}, +{id:"TN",n:"Tennessee",d:"M696.67788,318.25411L644.78479,323.2656L629.02523,325.04386L624.40403,325.55657L620.53568,325.52885L620.31471,329.62968L612.12933,329.89369L605.17792,330.54033L597.08709,330.41647L595.67331,337.48933L593.97708,342.96938L590.68391,345.72022L589.33517,350.10128L589.01185,352.68785L584.97033,354.95109L586.42527,358.50763L585.45531,362.87247L584.48693,363.66212L692.64548,353.25457L693.04875,349.29963L694.85948,347.80924L697.69363,347.05979L698.36556,343.34281L702.46416,340.63785L706.51109,339.14382L710.59467,335.57349L715.03076,333.54803L715.55202,330.48068L719.61662,326.49569L720.16742,326.38152C720.16742,326.38152,720.19867,327.51314,721.00697,327.51314C721.81527,327.51314,722.9469,327.86771,722.9469,327.86771L725.21015,324.27992L727.28049,323.63328L729.5556,323.92849L731.15391,320.39563L734.10916,317.75172L734.53084,315.81261L734.8398,312.10146L732.69325,311.90169L730.09157,313.93002L723.09826,313.95909L704.73897,316.34591L696.67788,318.25411Z"}, +{id:"AR",n:"Arkansas",d:"M593.82477,343.05296L589.84489,343.76966L584.73274,343.13563L585.15344,341.53356L588.13319,338.96687L589.07657,335.31062L587.24759,332.33852L508.83002,334.85337L510.43038,341.71206L510.43037,349.94248L511.80212,360.91647L512.03074,398.7534L514.31697,400.69669L517.28906,399.32496L520.03254,400.46807L520.71288,407.04137L576.33414,405.90077L577.47977,403.8104L577.19315,400.26089L575.36752,397.28879L576.96621,395.80358L575.36752,393.29208L576.05172,390.78225L577.42011,385.17682L579.9383,383.11419L579.25243,380.82963L582.9104,375.45784L585.65387,374.08945L585.54039,372.59587L585.19495,370.77023L588.0519,365.1715L590.45494,363.91491L590.83907,360.48728L592.60974,359.24558L589.46622,358.76131L588.12476,354.75087L590.92884,352.37416L591.4791,350.35496L592.75858,346.30835L593.82477,343.05296Z"}, +{id:"MO",n:"Missouri",d:"M558.44022,248.11316L555.92035,245.02591L554.77723,242.73968L490.42,245.14022L488.13374,245.25453L489.39117,247.76938L489.16255,250.0556L491.67739,253.94219L494.76379,258.0574L497.8502,260.80087L500.01143,261.02949L501.50816,261.94399L501.50816,264.91608L499.67919,266.51644L499.22193,268.80266L501.27954,272.23201L503.7944,275.2041L506.30924,277.03308L507.68097,288.69283L507.99511,324.76504L508.22373,329.45179L508.68097,334.8353L531.11396,333.96848L554.31999,333.28261L575.12465,332.4816L586.77939,332.2513L588.94879,335.6773L588.2646,338.9848L585.17735,341.38784L584.60496,343.22518L589.98345,343.68244L593.87841,342.99656L595.59559,337.50293L596.24701,331.64614L598.34504,329.09098L600.94107,327.60409L600.9925,324.55385L602.00852,322.61737L600.31429,320.0736L598.98336,321.05786L596.99074,318.83062L595.70571,314.07162L596.50672,311.55342L594.56259,308.12576L592.73195,303.54996L587.93254,302.75062L580.96374,297.15187L579.24488,293.03834L580.04423,289.83762L582.1035,283.77995L582.56242,280.91632L580.61328,279.88501L573.75794,279.08734L572.72997,277.37518L572.61817,273.14482L567.13123,269.71381L560.15572,261.94231L557.8695,254.62638L557.63921,250.40106L558.44022,248.11316Z"}, +{id:"GA",n:"Georgia",d:"M672.29229,355.5518L672.29229,357.73422L672.45395,359.83582L673.10059,363.23069L676.49547,371.15206L678.92038,381.01337L680.37532,387.15648L681.99193,392.00629L683.44688,398.9577L685.54847,405.26247L688.13504,408.65735L688.62002,412.05222L690.55995,412.86052L690.72161,414.96212L688.94334,419.81193L688.45836,423.04515L688.2967,424.98508L689.91331,429.34992L690.23663,434.68472L689.42832,437.10963L690.07497,437.91794L691.52992,438.72624L691.73462,441.94433L693.96763,445.29386L696.21807,447.45591L704.13945,447.61757L714.9592,446.97093L736.47159,445.67765L741.91731,445.00328L746.49456,445.03101L746.65622,447.9409L749.24279,448.7492L749.56611,444.38436L747.9495,439.85786L749.08113,438.24126L754.90091,439.04956L759.87832,439.36734L759.1029,433.06855L761.36614,423.0456L762.82109,418.84242L762.3361,416.25586L765.67051,410.01156L765.16021,408.65988L763.2468,409.36446L760.66024,408.07116L760.01359,405.96957L758.72031,402.41304L756.45705,400.31145L753.87049,399.66481L752.25388,394.81499L749.32887,388.47999L745.1257,386.54006L743.0241,384.60013L741.73081,382.01356L739.62923,380.07363L737.36598,378.78034L735.10273,375.87045L732.03118,373.60721L727.50467,371.82893L727.01969,370.37399L724.59478,367.4641L724.1098,366.00915L720.71492,361.03867L717.19505,361.13784L713.44014,358.7817L712.02186,357.48842L711.69854,355.71015L712.56934,353.77023L714.79598,352.66009L714.16204,350.56287L672.29229,355.5518Z"}, +{id:"SC",n:"South Carolina",d:"M764.94328,408.16488L763.16622,409.13438L760.57965,407.84109L759.93301,405.7395L758.63973,402.18297L756.37647,400.08137L753.7899,399.43473L752.1733,394.58492L749.42506,388.60347L745.22189,386.66353L743.12029,384.72361L741.82701,382.13704L739.72542,380.1971L737.46217,378.90382L735.19892,375.99393L732.12737,373.73069L727.60086,371.95241L727.11588,370.49747L724.69098,367.58758L724.20599,366.13262L720.81111,360.95949L717.41624,361.12115L713.37472,358.69623L712.08144,357.40295L711.75812,355.62468L712.56642,353.68476L714.82967,352.71478L714.31885,350.4257L720.08695,348.08913L729.20245,343.50013L736.97718,342.69182L753.09158,342.26934L755.72983,344.14677L757.40893,347.50499L761.71128,346.89501L774.32081,345.44005L777.2307,346.24836L789.84024,353.84642L799.94832,361.9681L794.52715,367.42644L791.94058,373.56954L791.4556,379.8743L789.839,380.6826L788.70737,383.43083L786.28247,384.07747L784.18088,387.634L781.43265,390.38223L779.16941,393.7771L777.5528,394.5854L773.99627,397.98027L771.08638,398.14193L772.05635,401.37514L767.04487,406.8716L764.94328,408.16488Z"}, +{id:"KY",n:"Kentucky",d:"M725.9944,295.2707L723.70108,297.67238L720.12289,301.66642L715.19834,307.13109L713.98257,308.84686L713.92007,310.94844L709.54021,313.11253L703.88209,316.50741L696.65022,318.30626L644.78233,323.20512L629.02277,324.98338L624.40157,325.49609L620.53322,325.46837L620.30627,329.68865L612.12686,329.83321L605.17545,330.47985L597.18797,330.41963L598.39575,329.09955L600.89529,327.5587L601.12392,324.35797L602.03841,322.52899L600.43159,319.99009L601.23342,318.08328L603.49668,316.30502L605.59826,315.65837L608.34649,316.95166L611.90303,318.24494L613.03466,317.92162L613.19632,315.65837L611.90303,313.23346L612.22635,310.97021L614.16628,309.51527L616.75286,308.86862L618.36946,308.22198L617.56116,306.44371L616.91452,304.50378L618.42114,303.50798C618.42442,303.47086,619.6751,299.98569,619.65943,299.85017L622.71265,298.37149L628.03244,297.40153L632.52648,296.91655L633.91892,298.54398L635.44719,299.41478L637.03796,296.30657L640.22504,295.02395L642.43013,296.50798L642.84069,297.50702L644.01421,297.24301L643.85254,294.29008L646.98341,292.54089L649.1315,291.46741L650.66086,293.12822L653.97901,293.08402L654.56634,291.51277L654.19883,289.24953L656.79936,285.25103L661.57591,281.81313L662.28186,276.97727L665.20688,276.52136L668.99834,274.87568L671.44166,273.16744L671.24333,271.60251L670.10088,270.14757L670.6667,267.15266L674.85155,267.03516L677.15146,266.28936L680.49885,267.71846L682.55296,272.0833L687.68525,272.09412L689.73626,274.30231L691.35171,274.15461L693.9534,272.87644L699.19046,273.44981L701.76538,273.66732L703.45296,271.61108L706.07091,270.1852L707.95269,269.4781L708.59933,272.31473L710.64276,273.37307L713.28552,275.45556L713.40299,281.1288L714.21129,282.70121L716.80101,284.25749L717.57265,286.552L721.73254,289.98894L723.53785,293.61218L725.9944,295.2707Z"}, +{id:"AL",n:"Alabama",d:"M631.30647,460.41572L629.81587,446.09422L627.06763,427.34158L627.22929,413.27709L628.03759,382.23824L627.87593,365.58718L628.04102,359.16812L672.5255,355.54867L672.3777,357.73109L672.53936,359.83269L673.18601,363.22756L676.58089,371.14893L679.00579,381.01024L680.46074,387.15335L682.07734,392.00317L683.5323,398.95458L685.63388,405.25934L688.22045,408.65423L688.70543,412.04909L690.64537,412.8574L690.80703,414.95899L689.02875,419.80881L688.54377,423.04203L688.38211,424.98195L689.99873,429.3468L690.32205,434.68159L689.51373,437.10651L690.16039,437.91481L691.61533,438.72311L691.94347,441.61193L686.34581,441.25838L679.55606,441.90503L654.01366,444.81491L643.6021,446.22168L643.38072,449.09908L645.15899,450.87735L647.74556,452.81727L648.32642,460.75271L642.78436,463.32561L640.03614,463.00229L642.78436,461.06236L642.78436,460.0924L639.71282,454.11096L637.44957,453.46432L635.99462,457.82915L634.70134,460.57738L634.0547,460.41572L631.30647,460.41572Z"}, +{id:"LS",n:"Louisiana",d:"M607.96706,459.16125L604.68245,455.99511L605.69236,450.49488L605.03101,449.6018L595.76934,450.60836L570.74102,451.06728L570.05683,448.6726L570.96964,440.2169L574.28552,434.27105L579.31688,425.58003L578.74281,423.18201L579.9994,422.50116L580.45833,420.54867L578.17209,418.49274L578.0603,416.55029L576.22964,412.20478L576.08259,405.86618L520.6088,406.79015L520.63737,416.36372L521.32324,425.73725L522.00911,429.62383L524.52396,433.73904L525.43845,438.76875L529.78228,444.25568L530.0109,447.4564L530.69677,448.14227L530.0109,456.60131L527.03881,461.631L528.63917,463.68861L527.95329,466.20345L527.26743,473.51938L525.89569,476.72009L526.01815,480.33654L530.70463,478.81639L542.81798,479.0234L553.16425,482.57993L559.63067,483.71156L563.34886,482.25661L566.58207,483.38824L569.81528,484.3582L570.62358,482.25661L567.39037,481.12499L564.8038,481.60997L562.05557,479.99337C562.05557,479.99337,562.21724,478.70008,562.86388,478.53842C563.51052,478.37676,565.93543,477.56846,565.93543,477.56846L567.71369,479.0234L569.49196,478.05344L572.72517,478.70008L574.18011,481.12499L574.50343,483.38824L579.02992,483.71156L580.80819,485.48982L579.99989,487.10643L578.7066,487.91473L580.32321,489.53133L588.72955,493.08786L592.28608,491.79458L593.25605,489.36967L595.84261,488.72303L597.62088,487.26809L598.91416,488.23805L599.72246,491.14794L597.45922,491.95624L598.10586,492.60288L601.50073,491.3096L603.76398,487.91473L604.57228,487.42975L602.47069,487.10643L603.27899,485.48982L603.11733,484.03488L605.21892,483.5499L606.35054,482.25661L606.99718,483.06491C606.99718,483.06491,606.83552,486.13646,607.64383,486.13646C608.45213,486.13646,611.847,486.78311,611.847,486.78311L615.88851,488.72303L616.85847,490.17798L619.76836,490.17798L620.89999,491.14794L623.16323,488.07639L623.16323,486.62144L621.86995,486.62144L618.47508,483.87322L612.6553,483.06491L609.42209,480.80167L610.55372,478.05344L612.81696,478.37676L612.97862,477.73012L611.20036,476.76016L611.20036,476.27517L614.43357,476.27517L616.21183,473.20363L614.91855,471.2637L614.59523,468.51547L613.14028,468.67713L611.20036,470.77872L610.55372,473.36529L607.48217,472.71864L606.5122,470.94038L608.29047,469.00045L610.1938,465.55485L609.1327,463.14258L607.96706,459.16125Z"}, +{id:"MS",n:"Mississippi",d:"M631.55882,459.34458L631.30456,460.60073L626.13142,460.60073L624.67648,459.79243L622.57489,459.46911L615.78515,461.40903L614.00689,460.60073L611.42032,464.8039L610.31778,465.58192L609.19395,463.09394L608.05083,459.20735L604.6215,456.00664L605.7646,450.46209L605.07874,449.5476L603.24976,449.77622L595.33184,450.64959L570.78534,451.02296L570.0156,448.7976L570.88897,440.4208L574.00581,434.74799L579.23288,425.60309L578.78714,423.17049L580.024,422.51424L580.45987,420.59477L578.14239,418.51579L578.02727,416.37431L576.19155,412.25322L576.08255,406.29045L577.41008,403.80948L577.18678,400.39373L575.41729,397.31114L576.94371,395.82893L575.3731,393.32939L575.83035,391.67718L577.40775,385.15081L579.8937,383.11446L579.25203,380.74749L582.91,375.44496L585.74186,374.08854L585.52089,372.41338L585.23276,370.73228L588.10882,365.16461L590.45454,363.9331L590.60617,363.04009L627.94965,359.15892L628.13451,365.44225L628.29617,382.09331L627.48787,413.13216L627.32621,427.19665L630.07445,445.94929L631.55882,459.34458Z"}, +{id:"IA",n:"Iowa",d:"M569.19154,199.5843L569.45592,202.3705L571.67964,202.94776L572.63358,204.17309L573.13359,206.02845L576.92643,209.3871L577.6123,211.7786L576.93796,215.20307L575.35565,218.43505L574.55631,221.17684L572.38356,222.77888L570.66805,223.35128L565.08903,225.21148L563.69757,229.06017L564.42621,230.43191L566.26672,232.1145L565.98379,236.15079L564.22064,237.68865L563.44923,239.33179L563.57645,242.10811L561.69014,242.56535L560.06469,243.67026L559.7859,245.02289L560.06469,247.13781L558.51367,248.25388L556.04314,245.1206L554.78057,242.67073L489.04475,245.18558L488.12672,245.35102L486.07432,240.83506L485.8457,234.20499L484.24534,230.08978L483.55948,224.83147L481.27325,221.1735L480.35877,216.37243L477.61529,208.82788L476.47218,203.45524L475.10044,201.28333L473.50008,198.53987L475.45406,193.69604L476.8258,187.98047L474.08233,185.92286L473.62508,183.17939L474.53958,180.66454L476.25425,180.66454L558.90825,179.39506L559.74251,183.57818L561.99469,185.13915L562.2514,186.56224L560.22186,189.95155L560.41227,193.15707L562.92713,196.95527L565.45392,198.24889L568.5332,198.75194L569.19154,199.5843Z"}, +{id:"MN",n:"Minnesota",d:"M475.23781,128.82439L474.78056,120.36535L472.95158,113.04943L471.1226,99.560705L470.66535,89.729927L468.83637,86.300584L467.23601,81.270889L467.23601,70.982869L467.92187,67.096282L466.10094,61.644615L496.23336,61.679886L496.55668,53.435202L497.20332,53.273541L499.46657,53.758523L501.40649,54.566825L502.21479,60.063281L503.66974,66.206379L505.28634,67.822984L510.13616,67.822984L510.45948,69.277928L516.76424,69.601249L516.76424,71.702835L521.61405,71.702835L521.93737,70.409551L523.06899,69.277928L525.33224,68.631286L526.62552,69.601249L529.53541,69.601249L533.41526,72.187816L538.75006,74.612723L541.17497,75.097705L541.65995,74.127742L543.11489,73.64276L543.59987,76.552649L546.18644,77.845933L546.67142,77.360951L547.96471,77.522612L547.96471,79.624198L550.55127,80.594161L553.62282,80.594161L555.23943,79.785858L558.47264,76.552649L561.0592,76.067668L561.86751,77.845933L562.35249,79.139216L563.32245,79.139216L564.29241,78.330914L573.18374,78.007593L574.962,81.079142L575.60865,81.079142L576.32226,79.994863L580.76217,79.624198L580.15007,81.903657L576.21135,83.740782L566.96557,87.80191L562.19083,89.808807L559.11928,92.395375L556.69437,95.951905L554.43113,99.831756L552.65286,100.64006L548.12637,105.65153L546.83308,105.81319L542.5053,108.57031L540.04242,111.77542L539.8138,114.96681L539.90816,123.01016L538.53212,124.69891L533.45058,128.45888L531.2205,134.44129L534.09225,136.675L534.77214,139.90198L532.9169,143.14091L533.08769,146.88893L533.45655,153.61933L536.4848,156.62132L539.8138,156.62132L541.70491,159.75392L545.08408,160.25719L548.94324,165.92866L556.03053,170.04541L558.17368,172.92053L558.84483,179.36004L477.63333,180.50483L477.29541,144.82798L476.83817,141.85589L472.72296,138.42655L471.57984,136.59757L471.57984,134.9972L473.63744,133.39685L475.00918,132.02511L475.23781,128.82439Z"}, +{id:"OK",n:"Oklahoma",d:"M380.34313,320.82146L363.65895,319.54815L362.77873,330.50058L383.24411,331.65746L415.29966,332.96106L412.96506,357.37971L412.50781,375.21228L412.73644,376.81264L417.08027,380.4706L419.13787,381.61371L419.82374,381.38509L420.50961,379.32748L421.88135,381.15647L423.93895,381.15647L423.93895,379.78473L426.68242,381.15647L426.22518,385.04305L430.34039,385.27167L432.85523,386.41479L436.97044,387.10066L439.48529,388.92964L441.77152,386.87204L445.20086,387.5579L447.71571,390.98724L448.63019,390.98724L448.63019,393.27347L450.91642,393.95933L453.20264,391.67311L455.03163,392.35897L457.54647,392.35897L458.46097,394.87383L464.76204,396.9528L466.13378,396.26694L467.96276,392.15173L469.10587,392.15173L470.24899,394.20933L474.3642,394.8952L478.02215,396.26694L480.99425,397.18143L482.82324,396.26694L483.5091,393.75209L487.85293,393.75209L489.91053,394.66658L492.654,392.60897L493.79712,392.60897L494.48299,394.20933L498.59819,394.20933L500.19855,392.15173L502.02754,392.60897L504.08514,395.12383L507.28585,396.9528L510.48658,397.8673L512.42766,398.98623L512.03856,361.76922L510.66681,350.79524L510.50635,341.9229L509.06646,335.38517L508.28826,328.20553L508.22012,324.38931L496.08328,324.70805L449.67324,324.25081L404.63433,322.19319L380.34313,320.82146Z"}, +{id:"TX",n:"Texas",d:"M361.46423,330.57358L384.15502,331.65952L415.24771,332.80264L412.9131,356.25844L412.61634,374.41196L412.68448,376.49375L417.02831,380.31218L419.01496,381.75934L420.19917,381.19965L420.57254,379.38193L421.71286,381.18555L423.8245,381.22948L423.82183,379.78239L425.49177,380.74966L426.63047,381.15853L426.2712,385.12618L430.35939,385.21969L433.28471,386.41686L437.23945,386.94224L439.62083,389.02122L441.74493,386.94505L445.46987,387.55996L447.69078,390.7849L448.76574,391.10586L448.60527,393.07113L450.81888,393.86342L453.14903,391.80862L455.28205,392.42354L457.51143,392.45902L458.4445,394.89446L464.77259,397.00891L466.36564,396.24198L467.85511,392.06427L468.19583,392.06427L469.10232,392.14591L470.33137,394.21454L474.26125,394.87982L477.59825,396.0027L481.02388,397.19867L482.86446,396.22367L483.57822,393.70883L488.03144,393.75303L489.84018,394.68381L492.63943,392.5773L493.74307,392.6215L494.59411,394.22657L498.64883,394.22657L500.1677,392.19795L502.03507,392.60519L503.9811,395.00847L507.50167,397.05262L510.36043,397.86243L511.87405,398.66227L514.32075,400.65959L517.36379,399.3318L520.05488,400.47068L520.61869,406.57662L520.57893,416.27879L521.26479,425.8128L521.96697,429.41791L524.6423,433.83777L525.54048,438.7885L529.75643,444.32652L529.95245,447.47146L530.69882,448.2573L529.96875,456.63737L527.09665,461.64387L528.62962,463.79674L527.99954,466.13482L527.32997,473.53914L525.82565,476.87714L526.12053,480.37949L520.45565,481.96467L510.59436,486.49117L509.6244,488.43109L507.03783,490.37102L504.93625,491.82596L503.64296,492.63426L497.98485,497.96906L495.23662,500.07065L489.90182,503.30385L484.24371,505.72876L477.93895,509.12363L476.16069,510.57858L470.34091,514.13511L466.94604,514.78175L463.06619,520.2782L459.02468,520.60153L458.05471,522.54145L460.31796,524.48138L458.86301,529.97783L457.56973,534.50433L456.43811,538.38418L455.62981,542.91067L456.43811,545.33558L458.21637,552.28698L459.18634,558.43007L460.9646,561.1783L459.99464,562.63325L456.92309,564.57317L451.26497,560.69332L445.76852,559.5617L444.47523,560.04668L441.24202,559.40004L437.03885,556.32849L431.86572,555.19687L424.26767,551.802L422.16609,547.92214L420.8728,541.45573L417.6396,539.5158L416.99295,537.25255L417.6396,536.60591L417.96292,533.21104L416.66963,532.5644L416.02299,531.59444L417.31627,527.2296L415.69967,524.96636L412.46646,523.67307L409.07159,519.30824L405.51506,512.68016L401.31189,510.09359L401.47355,508.15367L396.13875,495.86747L395.33045,491.6643L393.55219,489.72438L393.39053,488.26943L387.40909,482.93464L384.82252,479.86309L384.82252,478.73146L382.23595,476.62988L375.44621,475.49825L368.00983,474.85161L364.93828,472.58837L360.41179,474.36663L356.85526,475.82158L354.59201,479.05478L353.62205,482.77298L349.25722,488.91607L346.83231,491.34098L344.24574,490.37102L342.46748,489.23939L340.52755,488.59275L336.6477,486.32951L336.6477,485.68286L334.86944,483.74294L329.6963,481.64135L322.25992,473.88165L319.99667,469.1935L319.99667,461.11047L316.76346,454.64405L316.27848,451.89583L314.66188,450.92586L313.53025,448.82428L308.51878,446.72269L307.2255,445.10609L300.11243,437.18472L298.81915,433.95151L294.13099,431.68826L292.67604,427.32339L290.08945,424.41352L288.14954,423.92856L287.50031,419.25092L295.50218,419.93681L324.53717,422.68026L353.57225,424.28062L355.80578,404.8188L359.69233,349.26378L361.29272,330.51646L362.66446,330.54504M461.69381,560.20778L461.128,553.0947L458.37976,545.90078L457.81394,538.86853L459.34972,530.62382L462.66378,523.75323L466.13948,518.33758L469.29188,514.78103L469.93852,515.02353L465.16952,521.65163L460.80468,528.19891L458.78391,534.827L458.46059,540.00016L459.34972,546.14328L461.9363,553.3372L462.42128,558.51034L462.58294,559.9653L461.69381,560.20778Z"}, +{id:"NM",n:"New Mexico",d:"M288.15255,424.01315L287.37714,419.26505L296.02092,419.79045L326.19268,422.73635L353.46084,424.42624L355.67611,405.71877L359.53347,349.8428L361.27115,330.45357L362.84285,330.58213L363.66825,319.41874L259.6638,308.78279L242.16645,429.2176L257.62712,431.20675L258.9204,421.1838L288.15255,424.01315Z"}, +{id:"KS",n:"Kansas",d:"M507.88059,324.38028L495.26233,324.58471L449.17324,324.12748L404.61576,322.06985L379.98602,320.81244L383.87981,256.21747L405.96327,256.89264L446.2524,257.73404L490.55364,258.72162L495.64927,258.72162L497.83367,260.88402L499.85133,260.86264L501.49163,261.87511L501.42913,264.88434L499.60015,266.60971L499.2679,268.84188L501.11098,272.24421L504.06334,275.43927L506.39069,277.05373L507.69146,288.29455L507.88059,324.38028Z"}, +{id:"NE",n:"Nebraska",d:"M486.09787,240.70058L489.32848,247.72049L489.19985,250.02301L492.65907,255.51689L495.37836,258.66923L490.32888,258.66923L446.84632,257.73055L406.05946,256.84025L383.80724,256.05638L384.88001,234.72853L352.56177,231.80828L356.9056,187.79842L372.45193,188.82723L392.57072,189.97033L410.40329,191.11345L434.18005,192.25656L444.92531,191.79932L446.98291,194.08554L451.78399,197.05764L452.9271,197.97213L457.27093,196.60039L461.15752,196.14315L463.90099,195.91452L465.72997,197.28626L469.7874,198.88662L472.75949,200.48698L473.21674,202.08734L474.13123,204.14494L475.96021,204.14494L476.75819,204.19111L477.65242,208.87293L480.57268,217.34085L481.14521,221.09756L483.6687,224.87181L484.23829,229.98595L485.84553,234.22632L486.09787,240.70058Z"}, +{id:"SD",n:"South Dakota",d:"M476.44687,204.02465L476.39942,203.44378L473.50371,198.59834L475.36394,193.88623L476.85667,187.99969L474.0748,185.91998L473.68964,183.17652L474.48204,180.62217L477.67055,180.63738L477.54747,175.63124L477.21417,145.45699L476.59644,141.68941L472.52412,138.35848L471.54149,136.68152L471.47899,135.0727L473.50111,133.5433L475.03333,131.87763L475.27829,129.22084L417.0212,127.62049L362.22199,124.1714L356.89672,187.86259L371.48699,188.76639L391.43684,189.972L409.17989,190.90059L432.95665,192.20417L444.93935,191.77953L446.90565,194.02471L452.10029,197.27806L452.86418,198.00081L457.40562,196.548L463.94616,195.93309L465.62146,197.26936L469.82597,198.86549L472.77103,200.50132L473.17001,201.98513L474.2095,204.22601L476.44687,204.02465Z"}, +{id:"ND",n:"North Dakota",d:"M475.30528,128.91846L474.69037,120.48479L473.01342,113.66887L471.12193,100.64465L470.66469,89.657624L468.92523,86.580482L467.16862,81.386086L467.19987,70.941816L467.82323,67.117729L465.98913,61.649968L437.34688,61.085941L418.75593,60.439299L392.24361,59.146015L369.29727,57.012146L362.30403,124.18898L417.23627,127.53263L475.30528,128.91846Z"}, +{id:"WY",n:"Wyoming",d:"M360.37668,143.27587L253.63408,129.81881L239.5506,218.27684L352.81521,231.86233L360.37668,143.27587Z"}, +{id:"MT",n:"Montana",d:"M369.20952,56.969133L338.5352,54.1613L309.27465,50.60477L280.01411,46.563258L247.68201,41.228463L229.25272,37.833593L196.52907,30.900857L192.05005,52.248389L195.47939,59.79293L194.10765,64.365382L195.93663,68.937833L199.13736,70.309572L203.75818,81.079025L206.45328,84.255548L206.91052,85.398666L210.33986,86.541784L210.79711,88.599377L203.70981,106.20333L203.70981,108.71818L206.22466,111.91889L207.13914,111.91889L211.94021,108.9468L212.62609,107.80368L214.22645,108.48955L213.99782,113.74787L216.7413,126.32212L219.71339,128.83696L220.62787,129.52283L222.45686,131.80905L221.99961,135.2384L222.68548,138.66773L223.8286,139.58223L226.11482,137.296L228.85829,137.296L232.05901,138.89636L234.57386,137.98187L238.68907,137.98187L242.34702,139.58223L245.0905,139.12498L245.54774,136.15288L248.51983,135.46702L249.89157,136.83876L250.34882,140.03947L251.77469,140.87411L253.66164,129.83937L360.40731,143.26829L369.20952,56.969133Z"}, +{id:"CO",n:"Colarado",d:"M380.03242,320.96457L384.93566,234.63961L271.5471,221.99565L259.33328,309.93481L380.03242,320.96457Z"}, +{id:"ID",n:"Idaho",d:"M148.47881,176.48395L157.24968,141.26323L158.62142,137.03371L161.13626,131.08953L159.87884,128.8033L157.36398,128.91761L156.56381,127.88881L157.02106,126.7457L157.36398,123.65929L161.82213,118.17234L163.65111,117.7151L164.79422,116.57199L165.36578,113.37127L166.28026,112.68541L170.16685,106.85553L174.05344,102.5117L174.28206,98.739432L170.85272,96.110269L169.31717,91.709286L182.94208,28.367595L196.45967,30.895706L192.05159,52.278719L195.61194,59.764071L194.03083,64.424911L196.00068,69.066144L199.1389,70.321335L202.97424,79.877923L206.48693,84.315077L206.99418,85.458195L210.33513,86.601313L210.70398,88.698388L203.73297,106.07448L203.56779,108.64041L206.19891,111.96211L207.10399,111.91321L212.01528,108.88761L212.6927,107.79264L214.25501,108.4515L213.97657,113.80522L216.71582,126.38793L220.63365,129.56584L222.31483,131.73129L221.59822,135.81515L222.66444,138.62256L223.72607,139.71384L226.20536,137.36242L229.05352,137.41131L231.97277,138.74651L234.75279,138.06458L238.54705,137.9041L242.52595,139.50446L245.26943,139.2077L245.76617,136.17039L248.69876,135.40556L249.95893,136.92147L250.39986,139.86643L251.8242,141.07964L243.4382,194.6883C243.4382,194.6883,155.47221,177.98769,148.47881,176.48395Z"}, +{id:"UT",n:"Utah",d:"M259.49836,310.10509L175.74933,298.23284L196.33694,185.69149L243.11725,194.43663L241.63245,205.06705L239.32083,218.23971L247.12852,219.16808L263.53504,220.97287L271.74601,221.82851L259.49836,310.10509Z"}, +{id:"AZ",n:"Arizona",d:"M144.9112,382.62909L142.28419,384.78742L141.96087,386.24237L142.44585,387.21233L161.36012,397.88192L173.48466,405.47996L188.19576,414.04797L205.00845,424.07092L217.29465,426.49583L242.24581,429.20074L259.50142,310.07367L175.76579,298.15642L172.6734,314.56888L171.06711,314.58419L169.35244,317.21335L166.83759,317.09903L165.58017,314.35556L162.8367,314.01263L161.9222,312.86952L161.00772,312.86952L160.09322,313.44108L158.14993,314.46988L158.03563,321.44286L157.80699,323.15753L157.23545,335.73177L155.7494,337.90368L155.17784,341.21871L157.92131,346.1341L159.17873,351.96398L159.97892,352.99278L161.00772,353.56434L160.8934,355.85056L159.29305,357.22229L155.86371,358.93696L153.92042,360.88026L152.43437,364.53821L151.86281,369.4536L149.00503,372.19707L146.94743,372.88294L147.08312,373.71282L146.62587,375.42749L147.08312,376.22767L150.74108,376.79921L150.16952,379.54269L148.68347,381.7146L144.9112,382.62909Z"}, +{id:"NV",n:"Nevada",d:"M196.39273,185.57552L172.75382,314.39827L170.92158,314.74742L169.34882,317.1536L166.97588,317.16429L165.50393,314.42082L162.88546,314.0424L162.11454,312.93477L161.07671,312.88073L158.29834,314.52502L157.98808,321.3105L157.62599,327.08767L157.27742,335.68048L155.83032,337.76964L153.3914,336.69561L84.311514,232.49442L103.30063,164.90951L196.39273,185.57552Z"}, +{id:"OR",n:"Oregon",d:"M148.72184,175.53153L157.57154,140.73002L158.62233,136.5005L160.9767,130.87727L160.36119,129.71439L157.84633,129.66821L156.56473,127.99751L157.02197,126.53344L157.52538,123.28656L161.98353,117.79961L163.81251,116.70046L164.95562,115.55735L166.44166,111.99172L170.48872,106.32232L174.05435,102.45992L174.28297,99.008606L171.01411,96.539924L169.2307,91.897299L156.56693,88.285329L141.47784,84.741679L126.04582,84.855985L125.58858,83.484256L120.10163,85.54186L115.64349,84.970301L113.24295,83.36994L111.98553,84.055815L107.29877,83.827183L105.5841,82.455454L100.32578,80.39785L99.525598,80.512166L95.181768,79.02611L93.238477,80.855093L87.065665,80.512166L81.121482,76.396957L81.807347,75.596777L82.035968,67.823604L79.749743,63.937027L75.634535,63.365468L74.94867,60.850621L72.594738,60.384056L66.796213,62.44284L64.532966,68.909258L61.299757,78.932207L58.066547,85.398626L53.055073,99.463087L46.588654,113.04256L38.505631,125.65208L36.565705,128.56197L35.757403,137.12997L36.143498,149.2102L148.72184,175.53153Z"}, +{id:"WA",n:"Washington",d:"M102.07324,7.6117734L106.43807,9.0667177L116.1377,11.814946L124.7057,13.754871L144.7516,19.412988L167.70739,25.071104L182.93051,28.278277L169.29815,91.864088L156.85315,88.33877L141.34514,84.768091L126.11585,84.801329L125.66028,83.45663L120.06106,85.635923L115.46563,84.899179L113.31866,83.315125L112.00545,83.973101L107.26979,83.832858L105.57143,82.483225L100.30839,80.370922L99.573419,80.51784L95.184297,78.993392L93.290999,80.810771L87.025093,80.512038L81.099395,76.386336L81.878352,75.453573L81.999575,67.776121L79.717576,63.93642L75.602368,63.32938L74.924958,60.818764L72.649446,60.361832L69.094498,61.592408L66.831251,58.373161L67.154572,55.463272L69.9028,55.139951L71.519405,51.09844L68.932837,49.966816L69.094498,46.248625L73.459331,45.601984L70.711103,42.853756L69.256158,35.740695L69.9028,32.830807L69.9028,24.909444L68.124535,21.676234L70.387782,12.299927L72.489368,12.784908L74.914275,15.694797L77.662503,18.281364L80.895712,20.22129L85.422205,22.322876L88.493756,22.969518L91.403645,24.424462L94.798518,25.394425L97.061764,25.232765L97.061764,22.807857L98.355048,21.676234L100.45663,20.38295L100.77996,21.514574L101.10328,23.292839L98.840029,23.77782L98.516708,25.879406L100.29497,27.334351L101.4266,29.759258L102.07324,31.699183L103.52818,31.537523L103.68984,30.244239L102.71988,28.950955L102.2349,25.717746L103.0432,23.939481L102.39656,22.484537L102.39656,20.22129L104.17483,16.66476L103.0432,14.078192L100.61829,9.2283781L100.94162,8.4200758L102.07324,7.6117734ZM92.616548,13.590738L94.637312,13.429078L95.122294,14.803197L96.658073,13.186582L99.002155,13.186582L99.810458,14.722361L98.274678,16.419801L98.92133,17.228114L98.193853,19.248875L96.819734,19.653021C96.819734,19.653021,95.930596,19.733857,95.930596,19.410536C95.930596,19.087215,97.385551,16.823958,97.385551,16.823958L95.688111,16.258141L95.36479,17.713095L94.637312,18.359737L93.10153,16.09648L92.616548,13.590738Z"}, +{id:"CA",n:"California",d:"M144.69443,382.19813L148.63451,381.70951L150.12055,379.69807L150.66509,376.75698L147.11357,376.16686L146.5994,375.49864L147.0769,373.46633L146.91762,372.87666L148.84019,372.25707L151.88297,369.42439L152.46453,364.42929L153.84443,361.02718L155.78772,358.86092L159.30659,357.27125L160.96098,355.66642L161.02971,353.55758L160.03638,352.97757L159.01323,351.90484L157.85801,346.05639L155.17281,341.2263L155.73862,337.7213L153.31904,336.69199L84.257718,232.51359L103.15983,164.9121L36.079967,149.21414L34.573071,153.94738L34.41141,161.38376L29.238275,173.18497L26.166727,175.77154L25.843406,176.90316L24.06514,177.71147L22.610196,181.91464L21.801894,185.14785L24.550122,189.35102L26.166727,193.55419L27.29835,197.11072L26.975029,203.57714L25.196764,206.64869L24.550122,212.46847L23.580159,216.18666L25.358424,220.06651L28.106652,224.593L30.369899,229.44282L31.663182,233.48433L31.339862,236.71754L31.016541,237.20252L31.016541,239.3041L36.674657,245.60886L36.189676,248.03377L35.543034,250.29702L34.896392,252.23694L35.058052,260.48163L37.159638,264.19982L39.099564,266.78638L41.847792,267.27137L42.817755,270.01959L41.686132,273.57612L39.584545,275.19273L38.452922,275.19273L37.64462,279.07258L38.129601,281.98247L41.362811,286.3473L42.979415,291.6821L44.434359,296.37025L45.727643,299.4418L49.122513,305.26158L50.577457,307.84814L51.062439,310.75803L52.679043,311.72799L52.679043,314.1529L51.870741,316.09283L50.092476,323.20589L49.607494,325.14581L52.032402,327.89404L56.235574,328.37902L60.762067,330.15729L64.641918,332.25887L67.551807,332.25887L70.461695,335.33042L73.048262,340.18024L74.179886,342.44348L78.059737,344.54507L82.909551,345.35337L84.364495,347.45496L85.011137,350.68817L83.556193,351.33481L83.879514,352.30477L87.112725,353.11307L89.860953,353.27474L93.020842,351.58789L96.900696,355.79106L97.708998,358.05431L100.29557,362.25748L100.61889,365.49069L100.61889,374.867L101.10387,376.64526L111.12682,378.10021L130.84939,380.84843L144.69443,382.19813ZM56.559218,338.48145L57.852506,340.01723L57.690846,341.31052L54.457625,341.22969L53.891811,340.01723L53.245167,338.56228L56.559218,338.48145ZM58.49915,338.48145L59.711608,337.83481L63.268151,339.9364L66.339711,341.14885L65.450575,341.79551L60.924066,341.55301L59.307456,339.9364L58.49915,338.48145ZM79.191764,358.28493L80.970029,360.62901L81.778342,361.59898L83.314121,362.16479L83.879928,360.70984L82.909965,358.93157L80.242562,356.91081L79.191764,357.07247L79.191764,358.28493ZM77.736809,366.93379L79.515085,370.08618L80.727543,372.02612L79.272589,372.2686L77.979305,371.05615C77.979305,371.05615,77.251828,369.6012,77.251828,369.19704C77.251828,368.7929,77.251828,367.01462,77.251828,367.01462L77.736809,366.93379Z"} + ]; + var uStates={}; + + uStates.draw = function(id, data, toolTip){ + function mouseOver(d){ + d3.select("#tooltip").transition().duration(200).style("opacity", .9); + + d3.select("#tooltip").html(toolTip(d.n, data[d.id])) + .style("left", (d3.event.pageX) + "px") + .style("top", (d3.event.pageY - 28) + "px"); + } + + function mouseOut(){ + d3.select("#tooltip").transition().duration(500).style("opacity", 0); + } + + d3.select(id).selectAll(".state") + .data(uStatePaths).enter().append("path").attr("class","state").attr("d",function(d){ return d.d;}) + .style("fill",function(d){ return data[d.id].color; }) + .on("mouseover", mouseOver).on("mouseout", mouseOut); + } + this.uStates=uStates; +})(); \ No newline at end of file From 61d9420be11d9823c7a03ff4021e587d9836013f Mon Sep 17 00:00:00 2001 From: Erin O'Connor Date: Sun, 3 May 2020 14:00:08 -0400 Subject: [PATCH 03/36] renamed project --- README.md | 2 +- angular.json | 16 ++++++++-------- e2e/src/app.e2e-spec.ts | 2 +- karma.conf.js | 2 +- src/app/app.component.html | 2 +- src/app/app.component.spec.ts | 6 +++--- src/app/app.component.ts | 2 +- src/index.html | 2 +- 8 files changed, 17 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 358ea45..a0e5338 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ExampleUI +# COVID19-FrontEnd This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.1.1. diff --git a/angular.json b/angular.json index 5a83e96..0b0aad6 100644 --- a/angular.json +++ b/angular.json @@ -3,7 +3,7 @@ "version": 1, "newProjectRoot": "projects", "projects": { - "ExampleUI": { + "COVID19-FrontEnd": { "projectType": "application", "schematics": { "@schematics/angular:component": { @@ -17,7 +17,7 @@ "build": { "builder": "@angular-devkit/build-angular:browser", "options": { - "outputPath": "dist/ExampleUI", + "outputPath": "dist/COVID19-FrontEnd", "index": "src/index.html", "main": "src/main.ts", "polyfills": "src/polyfills.ts", @@ -66,18 +66,18 @@ "serve": { "builder": "@angular-devkit/build-angular:dev-server", "options": { - "browserTarget": "ExampleUI:build" + "browserTarget": "COVID19-FrontEnd:build" }, "configurations": { "production": { - "browserTarget": "ExampleUI:build:production" + "browserTarget": "COVID19-FrontEnd:build:production" } } }, "extract-i18n": { "builder": "@angular-devkit/build-angular:extract-i18n", "options": { - "browserTarget": "ExampleUI:build" + "browserTarget": "COVID19-FrontEnd:build" } }, "test": { @@ -114,18 +114,18 @@ "builder": "@angular-devkit/build-angular:protractor", "options": { "protractorConfig": "e2e/protractor.conf.js", - "devServerTarget": "ExampleUI:serve" + "devServerTarget": "COVID19-FrontEnd:serve" }, "configurations": { "production": { - "devServerTarget": "ExampleUI:serve:production" + "devServerTarget": "COVID19-FrontEnd:serve:production" } } } } } }, - "defaultProject": "ExampleUI", + "defaultProject": "COVID19-FrontEnd", "cli": { "analytics": false } diff --git a/e2e/src/app.e2e-spec.ts b/e2e/src/app.e2e-spec.ts index 8d8ebb8..604c0be 100644 --- a/e2e/src/app.e2e-spec.ts +++ b/e2e/src/app.e2e-spec.ts @@ -10,7 +10,7 @@ describe('workspace-project App', () => { it('should display welcome message', () => { page.navigateTo(); - expect(page.getTitleText()).toEqual('ExampleUI app is running!'); + expect(page.getTitleText()).toEqual('COVID19-FrontEnd app is running!'); }); afterEach(async () => { diff --git a/karma.conf.js b/karma.conf.js index 0dfb572..dafc458 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -16,7 +16,7 @@ module.exports = function (config) { clearContext: false // leave Jasmine Spec Runner output visible in browser }, coverageIstanbulReporter: { - dir: require('path').join(__dirname, './coverage/ExampleUI'), + dir: require('path').join(__dirname, './coverage/COVID19-FrontEnd'), reports: ['html', 'lcovonly', 'text-summary'], fixWebpackSourcePaths: true }, diff --git a/src/app/app.component.html b/src/app/app.component.html index 371d823..4874226 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -5,7 +5,7 @@ } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 513592b..947e882 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -5,7 +5,7 @@ import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; import { HomeComponent } from './pages/home/home.component'; import { LoginComponent } from './pages/login/login.component'; -import { RegisterComponent } from './pages/register/register.component'; +import { GraphComponent } from './pages/graph/graph.component'; import { AddprojectComponent } from './pages/addproject/addproject.component'; import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http'; import { ReactiveFormsModule } from '@angular/forms'; @@ -19,7 +19,7 @@ import { D3MapComponent } from './d3-map/d3-map.component'; AppComponent, HomeComponent, LoginComponent, - RegisterComponent, + GraphComponent, AddprojectComponent, D3MapComponent ], diff --git a/src/app/pages/register/canvasjs.min.js b/src/app/pages/graph/canvasjs.min.js similarity index 100% rename from src/app/pages/register/canvasjs.min.js rename to src/app/pages/graph/canvasjs.min.js diff --git a/src/app/pages/register/data.ts b/src/app/pages/graph/data.ts similarity index 100% rename from src/app/pages/register/data.ts rename to src/app/pages/graph/data.ts diff --git a/src/app/pages/register/register.component.html b/src/app/pages/graph/graph.component.html similarity index 100% rename from src/app/pages/register/register.component.html rename to src/app/pages/graph/graph.component.html diff --git a/src/app/pages/register/register.component.scss b/src/app/pages/graph/graph.component.scss similarity index 100% rename from src/app/pages/register/register.component.scss rename to src/app/pages/graph/graph.component.scss diff --git a/src/app/pages/register/register.component.spec.ts b/src/app/pages/graph/graph.component.spec.ts similarity index 55% rename from src/app/pages/register/register.component.spec.ts rename to src/app/pages/graph/graph.component.spec.ts index 6c19551..3300b39 100644 --- a/src/app/pages/register/register.component.spec.ts +++ b/src/app/pages/graph/graph.component.spec.ts @@ -1,20 +1,20 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { RegisterComponent } from './register.component'; +import { GraphComponent } from './graph.component'; -describe('RegisterComponent', () => { - let component: RegisterComponent; - let fixture: ComponentFixture; +describe('GraphComponent', () => { + let component: GraphComponent; + let fixture: ComponentFixture; beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [ RegisterComponent ] + declarations: [ GraphComponent ] }) .compileComponents(); })); beforeEach(() => { - fixture = TestBed.createComponent(RegisterComponent); + fixture = TestBed.createComponent(GraphComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/src/app/pages/register/register.component.ts b/src/app/pages/graph/graph.component.ts similarity index 95% rename from src/app/pages/register/register.component.ts rename to src/app/pages/graph/graph.component.ts index 2a39b9d..178dc9e 100644 --- a/src/app/pages/register/register.component.ts +++ b/src/app/pages/graph/graph.component.ts @@ -5,11 +5,11 @@ import { max } from 'rxjs/operators'; @Component({ - selector: 'app-register', - templateUrl: './register.component.html', - styleUrls: ['./register.component.scss'] + selector: 'app-graph', + templateUrl: './graph.component.html', + styleUrls: ['./graph.component.scss'] }) -export class RegisterComponent implements OnInit { +export class GraphComponent implements OnInit { stateData: any; constructor(private projSvc:ProjectsService) { projSvc.getProjects().subscribe(result=>{ From 2f1a88654ee6b8e0f13daf85ca1c7631ccca7fc8 Mon Sep 17 00:00:00 2001 From: Charlie Date: Wed, 13 May 2020 13:52:22 -0400 Subject: [PATCH 30/36] removed unneccessary files and pages from site --- src/app/app-routing.module.ts | 6 --- src/app/app.component.html | 19 --------- src/app/app.module.ts | 6 --- .../addproject/addproject.component.html | 1 - .../addproject/addproject.component.scss | 0 .../addproject/addproject.component.spec.ts | 25 ----------- .../pages/addproject/addproject.component.ts | 15 ------- src/app/pages/login/login.component.html | 25 ----------- src/app/pages/login/login.component.scss | 0 src/app/pages/login/login.component.spec.ts | 25 ----------- src/app/pages/login/login.component.ts | 42 ------------------- .../pages/register/register.component.html | 1 - .../pages/register/register.component.scss | 0 .../pages/register/register.component.spec.ts | 25 ----------- src/app/pages/register/register.component.ts | 15 ------- 15 files changed, 205 deletions(-) delete mode 100644 src/app/pages/addproject/addproject.component.html delete mode 100644 src/app/pages/addproject/addproject.component.scss delete mode 100644 src/app/pages/addproject/addproject.component.spec.ts delete mode 100644 src/app/pages/addproject/addproject.component.ts delete mode 100644 src/app/pages/login/login.component.html delete mode 100644 src/app/pages/login/login.component.scss delete mode 100644 src/app/pages/login/login.component.spec.ts delete mode 100644 src/app/pages/login/login.component.ts delete mode 100644 src/app/pages/register/register.component.html delete mode 100644 src/app/pages/register/register.component.scss delete mode 100644 src/app/pages/register/register.component.spec.ts delete mode 100644 src/app/pages/register/register.component.ts diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 2f6f9f7..64c9781 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -1,17 +1,11 @@ import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; import { HomeComponent } from './pages/home/home.component'; -import { LoginComponent } from './pages/login/login.component'; -import { RegisterComponent } from './pages/register/register.component'; -import { AddprojectComponent } from './pages/addproject/addproject.component'; const routes: Routes = [ {path:'',redirectTo:'home',pathMatch:'full'}, {path:'home',component: HomeComponent}, - {path:'login',component: LoginComponent}, - {path:'register',component: RegisterComponent}, - {path:'addproject',component: AddprojectComponent} ]; @NgModule({ diff --git a/src/app/app.component.html b/src/app/app.component.html index d090b63..f2fd7d6 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -14,25 +14,6 @@ - - - -
diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 513592b..349ce3e 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -4,9 +4,6 @@ import { NgModule } from '@angular/core'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; import { HomeComponent } from './pages/home/home.component'; -import { LoginComponent } from './pages/login/login.component'; -import { RegisterComponent } from './pages/register/register.component'; -import { AddprojectComponent } from './pages/addproject/addproject.component'; import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http'; import { ReactiveFormsModule } from '@angular/forms'; import { TokenInterceptorService } from './services/token-interceptor.service'; @@ -18,9 +15,6 @@ import { D3MapComponent } from './d3-map/d3-map.component'; declarations: [ AppComponent, HomeComponent, - LoginComponent, - RegisterComponent, - AddprojectComponent, D3MapComponent ], imports: [ diff --git a/src/app/pages/addproject/addproject.component.html b/src/app/pages/addproject/addproject.component.html deleted file mode 100644 index 81a076c..0000000 --- a/src/app/pages/addproject/addproject.component.html +++ /dev/null @@ -1 +0,0 @@ -

addproject works!

diff --git a/src/app/pages/addproject/addproject.component.scss b/src/app/pages/addproject/addproject.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/src/app/pages/addproject/addproject.component.spec.ts b/src/app/pages/addproject/addproject.component.spec.ts deleted file mode 100644 index b4844a6..0000000 --- a/src/app/pages/addproject/addproject.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; - -import { AddprojectComponent } from './addproject.component'; - -describe('AddprojectComponent', () => { - let component: AddprojectComponent; - let fixture: ComponentFixture; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [ AddprojectComponent ] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(AddprojectComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/src/app/pages/addproject/addproject.component.ts b/src/app/pages/addproject/addproject.component.ts deleted file mode 100644 index 9b66638..0000000 --- a/src/app/pages/addproject/addproject.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'app-addproject', - templateUrl: './addproject.component.html', - styleUrls: ['./addproject.component.scss'] -}) -export class AddprojectComponent implements OnInit { - - constructor() { } - - ngOnInit(): void { - } - -} diff --git a/src/app/pages/login/login.component.html b/src/app/pages/login/login.component.html deleted file mode 100644 index 84d28b4..0000000 --- a/src/app/pages/login/login.component.html +++ /dev/null @@ -1,25 +0,0 @@ -
{{error}}
-

Login

-
-
- - -
-
Username is required
-
-
-
- - -
-
Password is required
-
-
-
- - Register -
-
\ No newline at end of file diff --git a/src/app/pages/login/login.component.scss b/src/app/pages/login/login.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/src/app/pages/login/login.component.spec.ts b/src/app/pages/login/login.component.spec.ts deleted file mode 100644 index d6d85a8..0000000 --- a/src/app/pages/login/login.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; - -import { LoginComponent } from './login.component'; - -describe('LoginComponent', () => { - let component: LoginComponent; - let fixture: ComponentFixture; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [ LoginComponent ] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(LoginComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/src/app/pages/login/login.component.ts b/src/app/pages/login/login.component.ts deleted file mode 100644 index b57d224..0000000 --- a/src/app/pages/login/login.component.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { FormGroup, FormBuilder, Validators } from '@angular/forms'; -import { ActivatedRoute, Router } from '@angular/router'; -import { AuthService } from 'src/app/services/auth.service'; - -@Component({ - selector: 'app-login', - templateUrl: './login.component.html', - styleUrls: ['./login.component.scss'] -}) -export class LoginComponent implements OnInit { - - loginForm: FormGroup; - loading =false; - submitted=false; - returnUrl: string; - error: string; - - constructor(private formBuilder: FormBuilder,private route: ActivatedRoute,private router: Router,private authSvc:AuthService) { - if (authSvc.loggedIn) - this.router.navigate(['/']); - } - - ngOnInit(): void { - this.loginForm=this.formBuilder.group({ - username: ['',Validators.required], - password: ['',Validators.required] - }); - this.returnUrl=this.route.snapshot.queryParams['returnUrl'] || '/'; - } - - login(){ - this.submitted=true; - if (this.loginForm.invalid){ - return; - } - this.loading=true; - this.authSvc.login(this.loginForm.controls.username.value,this.loginForm.controls.password.value).subscribe(response=>{ - this.router.navigate([this.returnUrl]); - },err=>{this.submitted=false;this.loading=false;this.error=err.message||err;}); - } -} diff --git a/src/app/pages/register/register.component.html b/src/app/pages/register/register.component.html deleted file mode 100644 index 6b0ba2e..0000000 --- a/src/app/pages/register/register.component.html +++ /dev/null @@ -1 +0,0 @@ -

register works!

diff --git a/src/app/pages/register/register.component.scss b/src/app/pages/register/register.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/src/app/pages/register/register.component.spec.ts b/src/app/pages/register/register.component.spec.ts deleted file mode 100644 index 6c19551..0000000 --- a/src/app/pages/register/register.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; - -import { RegisterComponent } from './register.component'; - -describe('RegisterComponent', () => { - let component: RegisterComponent; - let fixture: ComponentFixture; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [ RegisterComponent ] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(RegisterComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/src/app/pages/register/register.component.ts b/src/app/pages/register/register.component.ts deleted file mode 100644 index 8f62eda..0000000 --- a/src/app/pages/register/register.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'app-register', - templateUrl: './register.component.html', - styleUrls: ['./register.component.scss'] -}) -export class RegisterComponent implements OnInit { - - constructor() { } - - ngOnInit(): void { - } - -} From fd2fbd8baf77a898d8bf39308343a5d2de9ad1b9 Mon Sep 17 00:00:00 2001 From: Nishant Chintala Date: Wed, 13 May 2020 14:00:27 -0400 Subject: [PATCH 31/36] added data for dropdown states --- src/app/d3-map/d3-map.component.html | 137 +++++++++++++++------------ src/app/d3-map/d3-map.component.ts | 117 ++++++++++++----------- 2 files changed, 138 insertions(+), 116 deletions(-) diff --git a/src/app/d3-map/d3-map.component.html b/src/app/d3-map/d3-map.component.html index 9b87a76..ba62e59 100644 --- a/src/app/d3-map/d3-map.component.html +++ b/src/app/d3-map/d3-map.component.html @@ -1,65 +1,76 @@
+ -
- -
- - - - +
+ +
+ + + + + + \ No newline at end of file diff --git a/src/app/d3-map/d3-map.component.ts b/src/app/d3-map/d3-map.component.ts index 7347573..8930f98 100644 --- a/src/app/d3-map/d3-map.component.ts +++ b/src/app/d3-map/d3-map.component.ts @@ -1,4 +1,4 @@ -import { Component, ElementRef, ViewChild, OnInit, ViewEncapsulation, OnChanges} from '@angular/core'; +import { Component, ElementRef, ViewChild, OnInit, ViewEncapsulation, OnChanges } from '@angular/core'; import * as d3 from 'd3'; import { ProjectsService } from '../services/projects.service'; @@ -14,7 +14,7 @@ declare var test: any; export class D3MapComponent implements OnInit { // Map HTML div - @ViewChild('statesvg', {static: true, read: ElementRef}) chartContainer: ElementRef; + @ViewChild('statesvg', { static: true, read: ElementRef }) chartContainer: ElementRef; stateData: any; @@ -24,19 +24,29 @@ export class D3MapComponent implements OnInit { this.createChart(); }) } - - ngOnInit(): void{ - + + ngOnInit(): void { + } - - test() { + + test() { var inputValue = (document.getElementById("slct")).value; + var totalCases = this.stateData[inputValue][this.stateData[inputValue].length - 1].confirmed; + var totalDeaths = this.stateData[inputValue][this.stateData[inputValue].length - 1].deaths; var myWrapper = document.getElementById("wrapperOne"); - myWrapper.innerHTML = "State: " + inputValue; - myWrapper.style.display = "none"; - myWrapper.style.display = "block"; -} - + myWrapper.innerHTML = "State: " + inputValue; + myWrapper.style.display = "none"; + myWrapper.style.display = "block"; + var myWrapper2 = document.getElementById("wrapperTwo"); + myWrapper2.innerHTML = "Confirmed Cases: " + totalCases + myWrapper2.style.display = "none"; + myWrapper2.style.display = "block"; + var myWrapper3 = document.getElementById("wrapperThree"); + myWrapper3.innerHTML = "Total Deaths: " + totalDeaths + myWrapper3.style.display = "none"; + myWrapper3.style.display = "block"; + } + private createChart(): void { var uStatePaths = [ @@ -113,24 +123,24 @@ export class D3MapComponent implements OnInit { } function tooltipHtml(n, d) { /* function to create html content string in tooltip div. */ - return "

"+n+"

"+ - ""+ - ""+ - ""+ - "
Date "+(d.date)+"
Confirmed "+(d.confirmed)+"
Deaths"+(d.deaths)+"
"; + return "

" + n + "

" + + "" + + "" + + "" + + "
Date " + (d.date) + "
Confirmed " + (d.confirmed) + "
Deaths" + (d.deaths) + "
"; } - var state_ID = [this.stateData["Hawaii"], this.stateData.Alaska, this.stateData.Florida, this.stateData["South Carolina"], this.stateData.Georgia, - this.stateData.Alabama, this.stateData["North Carolina"], this.stateData.Tennessee, this.stateData["Rhode Island"], - this.stateData.Connecticut, this.stateData.Massachusetts, this.stateData.Maine, this.stateData["New Hampshire"], this.stateData.Vermont, - this.stateData["New York"], this.stateData["New Jersey"], this.stateData.Pennsylvania, this.stateData.Delaware, - this.stateData.Maryland, this.stateData["West Virginia"], this.stateData.Kentucky, this.stateData.Ohio, this.stateData.Michigan, - this.stateData.Wyoming, this.stateData.Montana, this.stateData.Idaho, this.stateData.Washington, 0, this.stateData.Texas, - this.stateData.California, this.stateData.Arizona, this.stateData.Nevada, this.stateData.Utah, this.stateData.Colorado, - this.stateData["New Mexico"], this.stateData.Oregon, this.stateData["North Dakota"], this.stateData["South Dakota"], this.stateData.Nebraska, - this.stateData.Iowa, this.stateData.Mississippi, this.stateData.Indiana, this.stateData.Illinois, this.stateData.Minnesota, - this.stateData.Wisconsin, this.stateData.Missouri, this.stateData.Arkansas, this.stateData.Oklahoma, this.stateData.Kansas, - this.stateData.Louisiana, this.stateData.Virginia] + var state_ID = [this.stateData["Hawaii"], this.stateData.Alaska, this.stateData.Florida, this.stateData["South Carolina"], this.stateData.Georgia, + this.stateData.Alabama, this.stateData["North Carolina"], this.stateData.Tennessee, this.stateData["Rhode Island"], + this.stateData.Connecticut, this.stateData.Massachusetts, this.stateData.Maine, this.stateData["New Hampshire"], this.stateData.Vermont, + this.stateData["New York"], this.stateData["New Jersey"], this.stateData.Pennsylvania, this.stateData.Delaware, + this.stateData.Maryland, this.stateData["West Virginia"], this.stateData.Kentucky, this.stateData.Ohio, this.stateData.Michigan, + this.stateData.Wyoming, this.stateData.Montana, this.stateData.Idaho, this.stateData.Washington, 0, this.stateData.Texas, + this.stateData.California, this.stateData.Arizona, this.stateData.Nevada, this.stateData.Utah, this.stateData.Colorado, + this.stateData["New Mexico"], this.stateData.Oregon, this.stateData["North Dakota"], this.stateData["South Dakota"], this.stateData.Nebraska, + this.stateData.Iowa, this.stateData.Mississippi, this.stateData.Indiana, this.stateData.Illinois, this.stateData.Minnesota, + this.stateData.Wisconsin, this.stateData.Missouri, this.stateData.Arkansas, this.stateData.Oklahoma, this.stateData.Kansas, + this.stateData.Louisiana, this.stateData.Virginia] var max_confirmed = 0; var sampleData = {}; /* Sample random data. */ @@ -139,35 +149,36 @@ export class D3MapComponent implements OnInit { "MI", "WY", "MT", "ID", "WA", "DC", "TX", "CA", "AZ", "NV", "UT", "CO", "NM", "OR", "ND", "SD", "NE", "IA", "MS", "IN", "IL", "MN", "WI", "MO", "AR", "OK", "KS", "LS", "VA"] - states.forEach(function(d, i){ - //Array.isArray(state_ID[i]) - if(Array.isArray(state_ID[i])) - { - sampleData[d]={ date: state_ID[i][state_ID[i].length-1].date, - deaths: state_ID[i][state_ID[i].length-1].deaths, - confirmed: state_ID[i][state_ID[i].length-1].confirmed }; - - if(state_ID[i][state_ID[i].length-1].confirmed > max_confirmed) - { - max_confirmed = state_ID[i][state_ID[i].length-1].confirmed; - } - } - else - { - sampleData[d]={ - date: 0, - deaths:0, - confirmed: 0 }; + states.forEach(function (d, i) { + //Array.isArray(state_ID[i]) + if (Array.isArray(state_ID[i])) { + sampleData[d] = { + date: state_ID[i][state_ID[i].length - 1].date, + deaths: state_ID[i][state_ID[i].length - 1].deaths, + confirmed: state_ID[i][state_ID[i].length - 1].confirmed + }; + + if (state_ID[i][state_ID[i].length - 1].confirmed > max_confirmed) { + max_confirmed = state_ID[i][state_ID[i].length - 1].confirmed; } + } + else { + sampleData[d] = { + date: 0, + deaths: 0, + confirmed: 0 + }; + } }); // Set the color for each state - states.forEach(function(d, i){ - if(Array.isArray(state_ID[i])){ - sampleData[d]={ - date: sampleData[d].date, deaths: sampleData[d].deaths, confirmed: sampleData[d].confirmed, - color:d3.interpolate("#ffffcc", "#800026")( state_ID[i][state_ID[i].length-1].confirmed/ max_confirmed / 25 )}; - } + states.forEach(function (d, i) { + if (Array.isArray(state_ID[i])) { + sampleData[d] = { + date: sampleData[d].date, deaths: sampleData[d].deaths, confirmed: sampleData[d].confirmed, + color: d3.interpolate("#ffffcc", "#800026")(state_ID[i][state_ID[i].length - 1].confirmed / max_confirmed / 25) + }; + } }); /* draw states on id #statesvg */ From 150d92f92b34bdeac6e24f01bc603327f4a51f69 Mon Sep 17 00:00:00 2001 From: Nishant Chintala Date: Wed, 13 May 2020 14:03:09 -0400 Subject: [PATCH 32/36] added date --- src/app/d3-map/d3-map.component.html | 5 +++++ src/app/d3-map/d3-map.component.ts | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/src/app/d3-map/d3-map.component.html b/src/app/d3-map/d3-map.component.html index ba62e59..b3ee31b 100644 --- a/src/app/d3-map/d3-map.component.html +++ b/src/app/d3-map/d3-map.component.html @@ -71,6 +71,11 @@

Testing

+ \ No newline at end of file diff --git a/src/app/d3-map/d3-map.component.ts b/src/app/d3-map/d3-map.component.ts index 8930f98..732f4fb 100644 --- a/src/app/d3-map/d3-map.component.ts +++ b/src/app/d3-map/d3-map.component.ts @@ -31,6 +31,7 @@ export class D3MapComponent implements OnInit { test() { var inputValue = (document.getElementById("slct")).value; + var dataAsOf = this.stateData[inputValue][this.stateData[inputValue].length -1].date; var totalCases = this.stateData[inputValue][this.stateData[inputValue].length - 1].confirmed; var totalDeaths = this.stateData[inputValue][this.stateData[inputValue].length - 1].deaths; var myWrapper = document.getElementById("wrapperOne"); @@ -45,6 +46,10 @@ export class D3MapComponent implements OnInit { myWrapper3.innerHTML = "Total Deaths: " + totalDeaths myWrapper3.style.display = "none"; myWrapper3.style.display = "block"; + var myWrapper4 = document.getElementById("wrapperFour"); + myWrapper4.innerHTML = "Updated on: " + dataAsOf + myWrapper4.style.display = "none"; + myWrapper4.style.display = "block"; } private createChart(): void { From 3d26894d0ec6f964c336a5f1981413090a929547 Mon Sep 17 00:00:00 2001 From: Dan Paddock Date: Wed, 13 May 2020 14:11:27 -0400 Subject: [PATCH 33/36] fixed page loading --- src/app/app-routing.module.ts | 4 +++- src/app/app.component.html | 3 +-- src/app/pages/home/home.component.html | 5 ----- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index fe027f5..3edcfc0 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -4,6 +4,7 @@ import { HomeComponent } from './pages/home/home.component'; import { LoginComponent } from './pages/login/login.component'; import { GraphComponent } from './pages/graph/graph.component'; import { AddprojectComponent } from './pages/addproject/addproject.component'; +import { D3MapComponent } from './d3-map/d3-map.component' const routes: Routes = [ @@ -11,7 +12,8 @@ const routes: Routes = [ {path:'home',component: HomeComponent}, {path:'login',component: LoginComponent}, {path:'graph',component: GraphComponent}, - {path:'addproject',component: AddprojectComponent} + {path:'addproject',component: AddprojectComponent}, + {path:'d3-map',component: D3MapComponent} ]; @NgModule({ diff --git a/src/app/app.component.html b/src/app/app.component.html index 609a94a..a0ac4c6 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -9,7 +9,7 @@