diff --git a/backend/.prettierignore b/backend/.prettierignore index 53c37a1..91a3983 100644 --- a/backend/.prettierignore +++ b/backend/.prettierignore @@ -1 +1,3 @@ -dist \ No newline at end of file +dist +node_modules +package-lock.json diff --git a/backend/.prettierrc b/backend/.prettierrc index 0243ce1..0be80af 100644 --- a/backend/.prettierrc +++ b/backend/.prettierrc @@ -4,5 +4,13 @@ "endOfLine": "auto", "printWidth": 100, "tabWidth": 2, - "singleQuote": true + "singleQuote": true, + "overrides": [ + { + "files": "*.json", + "options": { + "singleQuote": false + } + } + ] } diff --git a/backend/package-lock.json b/backend/package-lock.json index b997dcc..7b6a8bc 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -9,7 +9,7 @@ "version": "0.1.0", "dependencies": { "@types/node": "^16.18.2", - "axios": "^1.2.6", + "axios": "^1.6.0", "body-parser": "^1.20.1", "body-parser-xml": "^2.0.3", "cors": "^2.8.5", @@ -2050,9 +2050,9 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/axios": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", - "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.0.tgz", + "integrity": "sha512-EZ1DYihju9pwVB+jg67ogm+Tmqc6JmhamRN6I4Zt8DfZu5lbcQGw3ozH9lFejSJgs/ibaef3A9PMXPLeefFGJg==", "dependencies": { "follow-redirects": "^1.15.0", "form-data": "^4.0.0", diff --git a/backend/package.json b/backend/package.json index fe8e3ab..41007ef 100644 --- a/backend/package.json +++ b/backend/package.json @@ -4,7 +4,7 @@ "private": true, "dependencies": { "@types/node": "^16.18.2", - "axios": "^1.2.6", + "axios": "^1.6.0", "body-parser": "^1.20.1", "body-parser-xml": "^2.0.3", "cors": "^2.8.5", @@ -51,9 +51,9 @@ "start": "ts-node-dev src/server.ts", "test": "mocha", "build": "tsc", - "lint": "tsc && eslint \"**/*.{js,ts}\"", - "lint:fix": "tsc --noEmit && eslint \"**/*.{js,ts}\" --quiet --fix", - "prettier": "prettier --check \"**/*.{js,ts}\"", - "prettier:fix": "prettier --write \"**/*.{js,ts}\"" + "lint": "tsc && eslint \"**/*.{js,ts,jsx,tsx}\"", + "lint:fix": "tsc --noEmit && eslint \"**/*.{js,ts,jsx,tsx}\" --quiet --fix", + "prettier": "prettier --check \"**/*.{js,ts,jsx,tsx,json}\"", + "prettier:fix": "prettier --write \"**/*.{js,ts,jsx,tsx,json}\"" } } diff --git a/frontend/.prettierignore b/frontend/.prettierignore index 2cf1da4..9763c73 100644 --- a/frontend/.prettierignore +++ b/frontend/.prettierignore @@ -1,2 +1,4 @@ dist -build \ No newline at end of file +build +node_modules +package-lock.json diff --git a/frontend/.prettierrc b/frontend/.prettierrc index 912f7bb..0be80af 100644 --- a/frontend/.prettierrc +++ b/frontend/.prettierrc @@ -4,5 +4,13 @@ "endOfLine": "auto", "printWidth": 100, "tabWidth": 2, - "singleQuote": true -} \ No newline at end of file + "singleQuote": true, + "overrides": [ + { + "files": "*.json", + "options": { + "singleQuote": false + } + } + ] +} diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 51ff208..8dba2d6 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -19,7 +19,7 @@ "@types/node": "^16.18.2", "@types/react": "^18.0.23", "@types/react-dom": "^18.0.7", - "axios": "^1.2.6", + "axios": "^1.6.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-router-dom": "^6.4.4", @@ -56,9 +56,9 @@ } }, "node_modules/@adobe/css-tools": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.1.tgz", - "integrity": "sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==" + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.2.tgz", + "integrity": "sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw==" }, "node_modules/@ampproject/remapping": { "version": "2.2.0", @@ -89,11 +89,12 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", "dependencies": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" }, "engines": { "node": ">=6.9.0" @@ -178,31 +179,19 @@ } }, "node_modules/@babel/generator": { - "version": "7.20.14", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.14.tgz", - "integrity": "sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", "dependencies": { - "@babel/types": "^7.20.7", + "@babel/types": "^7.23.0", "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/generator/node_modules/@babel/types": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", - "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", @@ -326,9 +315,9 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "engines": { "node": ">=6.9.0" } @@ -345,23 +334,23 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dependencies": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -378,19 +367,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-member-expression-to-functions/node_modules/@babel/types": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", - "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-module-imports": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", @@ -420,19 +396,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/types": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", - "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-optimise-call-expression": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", @@ -485,19 +448,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/types": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", - "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-simple-access": { "version": "7.20.2", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", @@ -509,19 +459,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-simple-access/node_modules/@babel/types": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", - "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { "version": "7.20.0", "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", @@ -533,42 +470,29 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers/node_modules/@babel/types": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", - "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "engines": { "node": ">=6.9.0" } @@ -595,19 +519,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-wrap-function/node_modules/@babel/types": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", - "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helpers": { "version": "7.20.13", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz", @@ -621,26 +532,13 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helpers/node_modules/@babel/types": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", - "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "engines": { @@ -648,9 +546,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.20.15", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.15.tgz", - "integrity": "sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", "bin": { "parser": "bin/babel-parser.js" }, @@ -1784,19 +1682,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/plugin-transform-react-jsx/node_modules/@babel/types": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", - "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/plugin-transform-react-pure-annotations": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz", @@ -2104,19 +1989,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/preset-env/node_modules/@babel/types": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", - "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/preset-env/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -2192,44 +2064,31 @@ } }, "node_modules/@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template/node_modules/@babel/types": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", - "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz", - "integrity": "sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==", - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.7", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.13", - "@babel/types": "^7.20.7", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -2237,26 +2096,13 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/@babel/types": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", - "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/types": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.4.tgz", - "integrity": "sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { @@ -4568,19 +4414,6 @@ "@types/babel__traverse": "*" } }, - "node_modules/@types/babel__core/node_modules/@babel/types": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", - "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@types/babel__generator": { "version": "7.6.4", "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", @@ -5761,9 +5594,9 @@ } }, "node_modules/axios": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.6.tgz", - "integrity": "sha512-rC/7F08XxZwjMV4iuWv+JpD3E0Ksqg9nac4IIg6RwNuF0JTeWoCo/mBNG54+tNhhI11G3/VDRbdDQTs9hGp4pQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.0.tgz", + "integrity": "sha512-EZ1DYihju9pwVB+jg67ogm+Tmqc6JmhamRN6I4Zt8DfZu5lbcQGw3ozH9lFejSJgs/ibaef3A9PMXPLeefFGJg==", "dependencies": { "follow-redirects": "^1.15.0", "form-data": "^4.0.0", diff --git a/frontend/package.json b/frontend/package.json index d31801e..5ac5d70 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -14,7 +14,7 @@ "@types/node": "^16.18.2", "@types/react": "^18.0.23", "@types/react-dom": "^18.0.7", - "axios": "^1.2.6", + "axios": "^1.6.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-router-dom": "^6.4.4", @@ -54,10 +54,10 @@ "test": "react-scripts test --watchAll=false", "build": "react-scripts build", "eject": "react-scripts eject", - "lint": "tsc && eslint \"**/*.{js,ts}\"", - "lint:fix": "eslint \"**/*.{js,ts}\" --quiet --fix", - "prettier": "prettier --check \"**/*.{js,ts}\"", - "prettier:fix": "prettier --write \"**/*.{js,ts}\"" + "lint": "tsc && eslint \"**/*.{js,ts,jsx,tsx}\"", + "lint:fix": "tsc --noEmit && eslint \"**/*.{js,ts,jsx,tsx}\" --quiet --fix", + "prettier": "prettier --check \"**/*.{js,ts,jsx,tsx,json}\"", + "prettier:fix": "prettier --write \"**/*.{js,ts,jsx,tsx,json}\"" }, "eslintConfig": { "extends": [ @@ -82,7 +82,5 @@ "last 1 safari version" ] }, - "proxy": "http://localhost:5051" - } diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index b9d282a..7b9f888 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -2,43 +2,49 @@ import LocalPharmacyIcon from '@mui/icons-material/LocalPharmacy'; import { Button } from '@mui/material'; import Box from '@mui/material/Box'; import { Container } from '@mui/system'; -import { - BrowserRouter as Router, Link, Route, Routes -} from 'react-router-dom'; +import { BrowserRouter as Router, Link, Route, Routes } from 'react-router-dom'; import './App.css'; import DoctorOrders from './views/DoctorOrders/DoctorOrders'; import Login from './views/Login/Login'; import axios from 'axios'; -axios.defaults.baseURL = process.env.REACT_APP_PIMS_BACKEND_URL ? process.env.REACT_APP_PIMS_BACKEND_URL : - 'http://localhost:' + (process.env.REACT_APP_PIMS_BACKEND_PORT ? process.env.REACT_APP_PIMS_BACKEND_PORT : '5051') ; +axios.defaults.baseURL = process.env.REACT_APP_PIMS_BACKEND_URL + ? process.env.REACT_APP_PIMS_BACKEND_URL + : 'http://localhost:' + + (process.env.REACT_APP_PIMS_BACKEND_PORT ? process.env.REACT_APP_PIMS_BACKEND_PORT : '5051'); function App() { return ( - - -
- -
-
- + + +
+ +
+
+

Pharmacy

-
- - +
+ + + + + +
{/* Initial load to login page, will need to change to check for user authentication to load to correct page */} - } /> - }> - }> + } /> + }> + }> - + ); } diff --git a/frontend/src/config.json b/frontend/src/config.json index fd923bb..6ce29d5 100644 --- a/frontend/src/config.json +++ b/frontend/src/config.json @@ -1,6 +1,6 @@ { - "realm": "ClientFhirServer", - "client": "pims-login", - "auth": "http://localhost:8180/auth", - "scopeId": "pims" - } \ No newline at end of file + "realm": "ClientFhirServer", + "client": "pims-login", + "auth": "http://localhost:8180/auth", + "scopeId": "pims" +} diff --git a/frontend/src/index.tsx b/frontend/src/index.tsx index 032464f..db4d643 100644 --- a/frontend/src/index.tsx +++ b/frontend/src/index.tsx @@ -4,9 +4,7 @@ import './index.css'; import App from './App'; import reportWebVitals from './reportWebVitals'; -const root = ReactDOM.createRoot( - document.getElementById('root') as HTMLElement -); +const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement); root.render( diff --git a/frontend/src/styles/theme.tsx b/frontend/src/styles/theme.tsx index 81e1262..b50826b 100644 --- a/frontend/src/styles/theme.tsx +++ b/frontend/src/styles/theme.tsx @@ -1,42 +1,42 @@ import { createTheme } from '@mui/material/styles'; const colors = { - white: '#fff', - black: '#222', - red: '#d95d77', - redLight: '#f50057', - blue: '#5d89a1', - green: '#28a745', - gray: '#4a4a4a', - grayLight: '#4e5258', - grayLighter: '#b5b6ba', - grayLightest: '#f2f3f9', + white: '#fff', + black: '#222', + red: '#d95d77', + redLight: '#f50057', + blue: '#5d89a1', + green: '#28a745', + gray: '#4a4a4a', + grayLight: '#4e5258', + grayLighter: '#b5b6ba', + grayLightest: '#f2f3f9' }; const paletteBase = { - primary: { - main: colors.blue - }, - secondary: { - main: colors.redLight, - success: colors.green - }, - error: { - main: colors.red - }, - common: colors, - background: { - default: colors.grayLightest, - primary: colors.grayLight - }, - text: { - primary: colors.black, - secondary: colors.black, - gray: colors.grayLighter - }, + primary: { + main: colors.blue + }, + secondary: { + main: colors.redLight, + success: colors.green + }, + error: { + main: colors.red + }, + common: colors, + background: { + default: colors.grayLightest, + primary: colors.grayLight + }, + text: { + primary: colors.black, + secondary: colors.black, + gray: colors.grayLighter + } }; const theme = createTheme({ - palette: { ...paletteBase }, + palette: { ...paletteBase } }); export default theme; diff --git a/frontend/src/views/DoctorOrders/DoctorOrders.tsx b/frontend/src/views/DoctorOrders/DoctorOrders.tsx index 4f9ac01..4237ed3 100644 --- a/frontend/src/views/DoctorOrders/DoctorOrders.tsx +++ b/frontend/src/views/DoctorOrders/DoctorOrders.tsx @@ -9,7 +9,7 @@ import VerifiedOrders from './VerifiedOrders/VerifiedOrders'; function a11yProps(index: number) { return { id: `simple-tab-${index}`, - 'aria-controls': `simple-tabpanel-${index}`, + 'aria-controls': `simple-tabpanel-${index}` }; } @@ -21,21 +21,22 @@ export default function DoctorOrders() { }; return ( - - + + - - - - + + + + @@ -61,4 +62,4 @@ export default function DoctorOrders() { ); -} \ No newline at end of file +} diff --git a/frontend/src/views/DoctorOrders/NewOrders/NewOrders.test.tsx b/frontend/src/views/DoctorOrders/NewOrders/NewOrders.test.tsx index 51dd590..d66b265 100644 --- a/frontend/src/views/DoctorOrders/NewOrders/NewOrders.test.tsx +++ b/frontend/src/views/DoctorOrders/NewOrders/NewOrders.test.tsx @@ -5,7 +5,6 @@ import axios from 'axios'; jest.mock('axios'); describe('', () => { - it('renders the order card with no doctor orders', async () => { axios.get = jest.fn().mockImplementationOnce(() => Promise.resolve({ data: [] })); render(); @@ -15,4 +14,4 @@ describe('', () => { expect(linkElement).toBeInTheDocument(); }); }); -}); \ No newline at end of file +}); diff --git a/frontend/src/views/DoctorOrders/NewOrders/NewOrders.tsx b/frontend/src/views/DoctorOrders/NewOrders/NewOrders.tsx index 2297c50..62a4485 100644 --- a/frontend/src/views/DoctorOrders/NewOrders/NewOrders.tsx +++ b/frontend/src/views/DoctorOrders/NewOrders/NewOrders.tsx @@ -3,11 +3,11 @@ import './NewOrders.css'; const NewOrders = () => { return ( -
+

NewOrders

- +
); }; -export default NewOrders; \ No newline at end of file +export default NewOrders; diff --git a/frontend/src/views/DoctorOrders/OrderCard/EtasuPopUp/EtasuPopUp.test.tsx b/frontend/src/views/DoctorOrders/OrderCard/EtasuPopUp/EtasuPopUp.test.tsx index 36e9c22..31654b4 100644 --- a/frontend/src/views/DoctorOrders/OrderCard/EtasuPopUp/EtasuPopUp.test.tsx +++ b/frontend/src/views/DoctorOrders/OrderCard/EtasuPopUp/EtasuPopUp.test.tsx @@ -4,6 +4,6 @@ import EtasuPopUp from './EtasuPopUp'; test.skip('renders Status', () => { render(); - const linkElement = screen.getByText("Total"); + const linkElement = screen.getByText('Total'); expect(linkElement).toBeInTheDocument(); -}); \ No newline at end of file +}); diff --git a/frontend/src/views/DoctorOrders/OrderCard/EtasuPopUp/EtasuPopUp.tsx b/frontend/src/views/DoctorOrders/OrderCard/EtasuPopUp/EtasuPopUp.tsx index 6153bee..be0bc0f 100644 --- a/frontend/src/views/DoctorOrders/OrderCard/EtasuPopUp/EtasuPopUp.tsx +++ b/frontend/src/views/DoctorOrders/OrderCard/EtasuPopUp/EtasuPopUp.tsx @@ -11,6 +11,14 @@ import axios from 'axios'; import * as React from 'react'; import { useState } from 'react'; +type MetRequirements = { + stakeholderId: string; + completed: boolean; + metRequirementId: string; + requirementName: string; + requirementDescription: string; + _id: string; +}; interface DoctorOrder { caseNumber?: string; @@ -26,42 +34,35 @@ interface DoctorOrder { total?: number; pickupDate?: string; dispenseStatus?: string; - metRequirements: { - stakeholderId: string, - completed: boolean, - metRequirementId: string, - requirementName: string, - requirementDescription: string, - _id: string - }[] + metRequirements: MetRequirements[]; } const Transition = React.forwardRef(function Transition( props: TransitionProps & { children: React.ReactElement; }, - ref: React.Ref, + ref: React.Ref ) { - return ; + return ; }); const EtasuPopUp = (props: any) => { const [open, setOpen] = React.useState(false); - const [doctorOrder, getDoctorOrders] = useState(); const handleClickOpen = () => { setOpen(true); - // call api endpoint to update - const url = '/doctorOrders/api/updateRx/' + props.data._id + '?dontUpdateStatus=true'; - axios.patch(url) - .then(function (response) { - const DoctorOrders = response.data; - //Adding data to state - getDoctorOrders(DoctorOrders); - }) - .catch(error => console.error('Error: $(error')); + // call api endpoint to update + const url = '/doctorOrders/api/updateRx/' + props.data._id + '?dontUpdateStatus=true'; + axios + .patch(url) + .then(function (response) { + const DoctorOrders = response.data; + //Adding data to state + getDoctorOrders(DoctorOrders); + }) + .catch(error => console.error('Error: $(error')); }; const handleClose = () => { @@ -70,7 +71,7 @@ const EtasuPopUp = (props: any) => { return ( - { TransitionComponent={Transition} keepMounted onClose={handleClose} - aria-describedby='alert-dialog-slide-description' + aria-describedby="alert-dialog-slide-description" > {'Elements to Assure Safe Use (ETASU)'} - + - {doctorOrder?.metRequirements.map((etasuElement) => - - {etasuElement.requirementName} - {etasuElement.completed ? '✅' : '❌'} - - )} + {doctorOrder?.metRequirements + .sort((first: MetRequirements, second: MetRequirements) => { + // Keep the other forms unsorted. + if (second.requirementName.includes('Patient Status Update')) { + // Sort the Patient Status Update forms in descending order of timestamp. + return second.requirementName.localeCompare(first.requirementName); + } + return 0; + }) + .map(etasuElement => ( + + {etasuElement.requirementName} + {etasuElement.completed ? '✅' : '❌'} + + ))} @@ -101,4 +111,4 @@ const EtasuPopUp = (props: any) => { ); }; -export default EtasuPopUp; \ No newline at end of file +export default EtasuPopUp; diff --git a/frontend/src/views/DoctorOrders/OrderCard/OrderCard.test.tsx b/frontend/src/views/DoctorOrders/OrderCard/OrderCard.test.tsx index f7a1888..a82d8a6 100644 --- a/frontend/src/views/DoctorOrders/OrderCard/OrderCard.test.tsx +++ b/frontend/src/views/DoctorOrders/OrderCard/OrderCard.test.tsx @@ -3,36 +3,40 @@ import { render, screen, waitFor } from '@testing-library/react'; import OrderCard from './OrderCard'; import axios from 'axios'; -const doctorOrders = [{caseNumber: '1694010494795', - dispenseStatus: 'Pending', - doctorContact: '716-873-1557', - doctorEmail: 'jane.betty@myhospital.com', - doctorID: '1122334455', - doctorName: 'Dr. Jane Doe', - drugNames:'Turalio 200 MG Oral Capsule', - drugNdcCode: '65597-402-20', - drugPrice: 200, - metRequirements: [], - patientCity: 'Winterfell', - patientCountry: 'US', - patientDOB: '1996-06-01', - patientFirstName: 'Jon', - patientLastName: 'Snow', - patientName: 'Jon Snow', - patientPostalCode: '00008', - patientStateProvince: 'Westeros', - pickupDate: 'Tue Dec 13 2022', - quanitities: '90', - rxDate: '2020-07-11', - simpleDrugName: 'Turalio', - total: 1800}]; +const doctorOrders = [ + { + caseNumber: '1694010494795', + dispenseStatus: 'Pending', + doctorContact: '716-873-1557', + doctorEmail: 'jane.betty@myhospital.com', + doctorID: '1122334455', + doctorName: 'Dr. Jane Doe', + drugNames: 'Turalio 200 MG Oral Capsule', + drugNdcCode: '65597-402-20', + drugPrice: 200, + metRequirements: [], + patientCity: 'Winterfell', + patientCountry: 'US', + patientDOB: '1996-06-01', + patientFirstName: 'Jon', + patientLastName: 'Snow', + patientName: 'Jon Snow', + patientPostalCode: '00008', + patientStateProvince: 'Westeros', + pickupDate: 'Tue Dec 13 2022', + quanitities: '90', + rxDate: '2020-07-11', + simpleDrugName: 'Turalio', + total: 1800 + } +]; jest.mock('axios'); describe('', () => { it('renders the order card with no doctor orders', async () => { axios.get = jest.fn().mockImplementationOnce(() => Promise.resolve({ data: [] })); - render(); + render(); await waitFor(() => { expect(screen.getByRole('heading', { name: /no orders yet\./i })).toBeInTheDocument(); @@ -41,7 +45,7 @@ describe('', () => { it('renders the order card and any doctor orders', async () => { axios.get = jest.fn().mockImplementationOnce(() => Promise.resolve({ data: doctorOrders })); - render(); + render(); await waitFor(() => { expect(screen.getByText(/Jon Snow/i)).toBeInTheDocument(); @@ -59,4 +63,4 @@ describe('', () => { expect(screen.getByRole('button', { name: /remove all/i })).toBeInTheDocument(); }); }); -}); \ No newline at end of file +}); diff --git a/frontend/src/views/DoctorOrders/OrderCard/OrderCard.tsx b/frontend/src/views/DoctorOrders/OrderCard/OrderCard.tsx index 25d1b7d..0893f1a 100644 --- a/frontend/src/views/DoctorOrders/OrderCard/OrderCard.tsx +++ b/frontend/src/views/DoctorOrders/OrderCard/OrderCard.tsx @@ -61,7 +61,7 @@ const OrderCard = (props: any) => { }, []); const getAllDoctorOrders = async () => { - await axios + await axios .get(url) .then(function (response) { const allDoctorOrders = response.data; @@ -76,7 +76,7 @@ const OrderCard = (props: any) => { if (doctorOrder.length < 1 && !isLoading) { return ( - +

No orders yet.

); diff --git a/frontend/src/views/DoctorOrders/OrderCard/PickedUpButton.tsx b/frontend/src/views/DoctorOrders/OrderCard/PickedUpButton.tsx index 6b0203f..5a39f37 100644 --- a/frontend/src/views/DoctorOrders/OrderCard/PickedUpButton.tsx +++ b/frontend/src/views/DoctorOrders/OrderCard/PickedUpButton.tsx @@ -1,8 +1,6 @@ import Button from '@mui/material/Button'; import axios from 'axios'; - - // interface DoctorOrder { // caseNumber?: string; // patientName?: string; @@ -28,22 +26,23 @@ import axios from 'axios'; // } const PickedUpButton = (props: any) => { - - - //verify the order - const verifyOrder = () => { - const url = '/doctorOrders/api/updateRx/' + props.data.row._id + '/pickedUp'; - axios.patch(url) - .then(function (response) { - props.data.getAllDoctorOrders(); - console.log(response.data); - }) - .catch(error => console.error('Error: $(error')); - }; + //verify the order + const verifyOrder = () => { + const url = '/doctorOrders/api/updateRx/' + props.data.row._id + '/pickedUp'; + axios + .patch(url) + .then(function (response) { + props.data.getAllDoctorOrders(); + console.log(response.data); + }) + .catch(error => console.error('Error: $(error')); + }; - return ( - - ); + return ( + + ); }; -export default PickedUpButton; \ No newline at end of file +export default PickedUpButton; diff --git a/frontend/src/views/DoctorOrders/OrderCard/VerifyButton.tsx b/frontend/src/views/DoctorOrders/OrderCard/VerifyButton.tsx index c2edac6..db7ec61 100644 --- a/frontend/src/views/DoctorOrders/OrderCard/VerifyButton.tsx +++ b/frontend/src/views/DoctorOrders/OrderCard/VerifyButton.tsx @@ -1,7 +1,6 @@ import Button from '@mui/material/Button'; import axios from 'axios'; - // interface DoctorOrder { // caseNumber?: string; // patientName?: string; @@ -27,22 +26,23 @@ import axios from 'axios'; // } const VerifyButton = (props: any) => { - - - //verify the order - const verifyOrder = () => { - const url = '/doctorOrders/api/updateRx/' + props.data.row._id; - axios.patch(url) - .then(function (response) { - props.data.getAllDoctorOrders(); - console.log(response.data); - }) - .catch(error => console.error('Error: $(error')); - }; + //verify the order + const verifyOrder = () => { + const url = '/doctorOrders/api/updateRx/' + props.data.row._id; + axios + .patch(url) + .then(function (response) { + props.data.getAllDoctorOrders(); + console.log(response.data); + }) + .catch(error => console.error('Error: $(error')); + }; - return ( - - ); + return ( + + ); }; -export default VerifyButton; \ No newline at end of file +export default VerifyButton; diff --git a/frontend/src/views/DoctorOrders/PickedUpOrders/PickedUpOrders.test.tsx b/frontend/src/views/DoctorOrders/PickedUpOrders/PickedUpOrders.test.tsx index 4b44995..9df9b04 100644 --- a/frontend/src/views/DoctorOrders/PickedUpOrders/PickedUpOrders.test.tsx +++ b/frontend/src/views/DoctorOrders/PickedUpOrders/PickedUpOrders.test.tsx @@ -5,7 +5,6 @@ import axios from 'axios'; jest.mock('axios'); describe('', () => { - it('renders the order card with no doctor orders', async () => { axios.get = jest.fn().mockImplementationOnce(() => Promise.resolve({ data: [] })); render(); @@ -15,4 +14,4 @@ describe('', () => { expect(linkElement).toBeInTheDocument(); }); }); -}); \ No newline at end of file +}); diff --git a/frontend/src/views/DoctorOrders/PickedUpOrders/PickedUpOrders.tsx b/frontend/src/views/DoctorOrders/PickedUpOrders/PickedUpOrders.tsx index adfa078..7780eb6 100644 --- a/frontend/src/views/DoctorOrders/PickedUpOrders/PickedUpOrders.tsx +++ b/frontend/src/views/DoctorOrders/PickedUpOrders/PickedUpOrders.tsx @@ -3,11 +3,11 @@ import './PickedUpOrders.css'; const PickedUpOrders = () => { return ( -
+

PickedUpOrders

- +
); }; -export default PickedUpOrders; \ No newline at end of file +export default PickedUpOrders; diff --git a/frontend/src/views/DoctorOrders/VerifiedOrders/VerifiedOrders.test.tsx b/frontend/src/views/DoctorOrders/VerifiedOrders/VerifiedOrders.test.tsx index 2a4b8ae..97d90dd 100644 --- a/frontend/src/views/DoctorOrders/VerifiedOrders/VerifiedOrders.test.tsx +++ b/frontend/src/views/DoctorOrders/VerifiedOrders/VerifiedOrders.test.tsx @@ -3,10 +3,8 @@ import { render, screen, waitFor } from '@testing-library/react'; import VerifiedOrders from './VerifiedOrders'; import axios from 'axios'; - jest.mock('axios'); describe('', () => { - it('renders the order card with no doctor orders', async () => { axios.get = jest.fn().mockImplementationOnce(() => Promise.resolve({ data: [] })); render(); diff --git a/frontend/src/views/DoctorOrders/VerifiedOrders/VerifiedOrders.tsx b/frontend/src/views/DoctorOrders/VerifiedOrders/VerifiedOrders.tsx index a4a21cc..2ef04ad 100644 --- a/frontend/src/views/DoctorOrders/VerifiedOrders/VerifiedOrders.tsx +++ b/frontend/src/views/DoctorOrders/VerifiedOrders/VerifiedOrders.tsx @@ -3,11 +3,11 @@ import './VerifiedOrders.css'; const VerifiedOrders = () => { return ( -
-

VerifiedOrders

- +
+

VerifiedOrders

+
); }; -export default VerifiedOrders; \ No newline at end of file +export default VerifiedOrders; diff --git a/frontend/src/views/DoctorOrders/data.json b/frontend/src/views/DoctorOrders/data.json index a5412ad..9ab5e81 100644 --- a/frontend/src/views/DoctorOrders/data.json +++ b/frontend/src/views/DoctorOrders/data.json @@ -1,32 +1,32 @@ [ - { - "caseNumber": "43f575fe0ae14558976e4a71b7483242", - "patientName": "John Snow", - "patientDOB": "10/22/1980", - "doctorName": "Dr. Jane Betty Doe", - "doctorContact": "716-873-1557", - "doctorID": 1122334455, - "doctorEmail": "jane.betty@myhospital.com", - "drugNames": "Isotretinoin 50 MG Oral Capsule", - "drugPrice": 200, - "quanitities": 90, - "total": 18000, - "pickupDate": "Tue Dec 13 2022", - "dispenseStatus": "Pending" - }, - { - "caseNumber": "53f575fe0ae14558976e4a71b7483242", - "patientName": "Lisa Doe", - "patientDOB": "9/5/1991", - "doctorName": "Dr. Mike Doe", - "doctorContact": "716-873-1557", - "doctorID": 1122334455, - "doctorEmail": "jane.betty@myhospital.com", - "drugNames": "Turalio 200 MG Oral Capsule", - "drugPrice": 200, - "quanitities": 5, - "total": 1000, - "pickupDate": "Tue Dec 13 2022", - "dispenseStatus": "Pending" - } -] \ No newline at end of file + { + "caseNumber": "43f575fe0ae14558976e4a71b7483242", + "patientName": "John Snow", + "patientDOB": "10/22/1980", + "doctorName": "Dr. Jane Betty Doe", + "doctorContact": "716-873-1557", + "doctorID": 1122334455, + "doctorEmail": "jane.betty@myhospital.com", + "drugNames": "Isotretinoin 50 MG Oral Capsule", + "drugPrice": 200, + "quanitities": 90, + "total": 18000, + "pickupDate": "Tue Dec 13 2022", + "dispenseStatus": "Pending" + }, + { + "caseNumber": "53f575fe0ae14558976e4a71b7483242", + "patientName": "Lisa Doe", + "patientDOB": "9/5/1991", + "doctorName": "Dr. Mike Doe", + "doctorContact": "716-873-1557", + "doctorID": 1122334455, + "doctorEmail": "jane.betty@myhospital.com", + "drugNames": "Turalio 200 MG Oral Capsule", + "drugPrice": 200, + "quanitities": 5, + "total": 1000, + "pickupDate": "Tue Dec 13 2022", + "dispenseStatus": "Pending" + } +] diff --git a/frontend/src/views/Login/Login.test.tsx b/frontend/src/views/Login/Login.test.tsx index 9a49111..2b305bd 100644 --- a/frontend/src/views/Login/Login.test.tsx +++ b/frontend/src/views/Login/Login.test.tsx @@ -6,4 +6,4 @@ test.skip('renders Sign in', () => { render(); const linkElement = screen.getByText(/Sign/i); expect(linkElement).toBeInTheDocument(); -}); \ No newline at end of file +}); diff --git a/frontend/src/views/Login/Login.tsx b/frontend/src/views/Login/Login.tsx index 1c08bd1..e2335b3 100644 --- a/frontend/src/views/Login/Login.tsx +++ b/frontend/src/views/Login/Login.tsx @@ -19,12 +19,10 @@ export default function Login() { params.append('grant_type', 'password'); params.append('client_id', config.client); axios - .post( - `${config.auth}/realms/${config.realm}/protocol/openid-connect/token`, - params, - { withCredentials: true } - ) - .then((result) => { + .post(`${config.auth}/realms/${config.realm}/protocol/openid-connect/token`, params, { + withCredentials: true + }) + .then(result => { // do something with the token const scope = result.data.scope.split(' ').includes(config.scopeId); if (scope) { @@ -44,57 +42,52 @@ export default function Login() { }; return ( - + - {token ? + {token ? ( - : + ) : ( - } - + )} + Sign in - + - ); -} \ No newline at end of file +} diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json index 2c2bc1e..e548762 100644 --- a/frontend/tsconfig.json +++ b/frontend/tsconfig.json @@ -1,11 +1,7 @@ { "compilerOptions": { "target": "es6", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], + "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, "esModuleInterop": true, @@ -20,12 +16,8 @@ "outDir": "dist", "jsx": "react-jsx", "paths": { - "*": [ - "./src/typings/*" - ] + "*": ["./src/typings/*"] } }, - "include": [ - "src" - ] + "include": ["src"] }