diff --git a/deploy.sh b/deploy.sh
new file mode 100755
index 0000000..5261965
--- /dev/null
+++ b/deploy.sh
@@ -0,0 +1,30 @@
+#! /bin/bash
+
+SOURCE_DIR=/home/neuu/attendence_UI/frontend
+BRANCH=AttendenceUI
+FRONTEND_DIR=/var/www/exampaper.vidh.ai
+SERVER_IP=52.66.73.43
+
+cd ~/$SOURCE_DIR
+echo "Changed into attendence UI frontend dir ....."
+
+echo "Pulling $BRANCH ..."
+
+git pull origin $BRANCH
+if [[ $? -eq 0 ]];then
+ echo "Pulled the latest code ...."
+ npm run build
+ if [[ $? -eq 0 ]];then
+ echo "Build the latest file ....."
+ scp -r dist/* ubuntu@$SERVER_IP:$FRONTEND_DIR
+ if [[ $? -eq 0 ]];then
+ echo "Copying build file to $FRONTEND_DIR successfull ...."
+ else
+ echo "Copying build file to $FRONTEND_DIR failed ...."
+ fi
+ else
+ echo "Build file failed ...."
+ fi
+else
+ echo "Pulling latest code failed ...."
+fi
diff --git a/package-lock.json b/package-lock.json
index b1a72f0..5997d8d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -15,14 +15,16 @@
"antd": "^5.17.3",
"bootstrap": "^5.3.3",
"dotenv": "^16.4.5",
- "react": "^18.2.0",
+ "react": "^18.3.1",
"react-bootstrap": "^2.10.2",
- "react-dom": "^18.2.0",
+ "react-dom": "^18.3.1",
"react-lazy-load-image-component": "^1.6.0",
"react-medium-image-zoom": "^5.2.4",
+ "react-qr-barcode-scanner": "^1.0.6",
"react-redux": "^9.1.2",
"react-router-dom": "^6.23.1",
"react-toastify": "^10.0.5",
+ "react-webcam": "^7.2.0",
"react-zoom-pan-pinch": "^3.4.4",
"redux": "^5.0.1"
},
@@ -1968,6 +1970,11 @@
"@types/react": "*"
}
},
+ "node_modules/@types/scheduler": {
+ "version": "0.16.8",
+ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz",
+ "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A=="
+ },
"node_modules/@types/use-sync-external-store": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz",
@@ -2003,6 +2010,26 @@
"vite": "^4.2.0 || ^5.0.0"
}
},
+ "node_modules/@zxing/library": {
+ "version": "0.17.1",
+ "resolved": "https://registry.npmjs.org/@zxing/library/-/library-0.17.1.tgz",
+ "integrity": "sha512-RuiBZuteGaFXCle/b0X+g3peN8UpDc3pGe/J7hZBzKWaMZLbjensR7ja3vy47xWhXU4e8MICGqegPMxc2V2sow==",
+ "dependencies": {
+ "ts-custom-error": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 10.4.0"
+ },
+ "optionalDependencies": {
+ "@zxing/text-encoding": "~0.9.0"
+ }
+ },
+ "node_modules/@zxing/text-encoding": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz",
+ "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==",
+ "optional": true
+ },
"node_modules/acorn": {
"version": "8.11.3",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
@@ -5227,6 +5254,39 @@
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
}
},
+ "node_modules/react-qr-barcode-scanner": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/react-qr-barcode-scanner/-/react-qr-barcode-scanner-1.0.6.tgz",
+ "integrity": "sha512-DdalO4oqHyxWPa4cIjiHeMS19HbIvKq+oo/PAglAsxmfhAUGC8sM1mJnzo0zPQM1yw9ZNpjrtqHz+rs86Mu7Ww==",
+ "dependencies": {
+ "@types/react": "^16.9.35",
+ "@zxing/library": "^0.17.0",
+ "react-webcam": "^5.0.1"
+ },
+ "peerDependencies": {
+ "react": "^16.13.1",
+ "react-dom": "^16.13.1"
+ }
+ },
+ "node_modules/react-qr-barcode-scanner/node_modules/@types/react": {
+ "version": "16.14.60",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.60.tgz",
+ "integrity": "sha512-wIFmnczGsTcgwCBeIYOuy2mdXEiKZ5znU/jNOnMZPQyCcIxauMGWlX0TNG4lZ7NxRKj7YUIZRneJQSSdB2jKgg==",
+ "dependencies": {
+ "@types/prop-types": "*",
+ "@types/scheduler": "^0.16",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/react-qr-barcode-scanner/node_modules/react-webcam": {
+ "version": "5.2.4",
+ "resolved": "https://registry.npmjs.org/react-webcam/-/react-webcam-5.2.4.tgz",
+ "integrity": "sha512-Qqj14t68Ke1eoEYjFde+N48HtuIJg0ePIQRpFww9eZt5oBcDpe/l60h+m3VRFJAR5/E3dOhSU5R8EJEcdCq/Eg==",
+ "peerDependencies": {
+ "react": ">=15.3.0",
+ "react-dom": ">=15.3.0"
+ }
+ },
"node_modules/react-redux": {
"version": "9.1.2",
"resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.2.tgz",
@@ -5315,6 +5375,15 @@
"react-dom": ">=16.6.0"
}
},
+ "node_modules/react-webcam": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/react-webcam/-/react-webcam-7.2.0.tgz",
+ "integrity": "sha512-xkrzYPqa1ag2DP+2Q/kLKBmCIfEx49bVdgCCCcZf88oF+0NPEbkwYk3/s/C7Zy0mhM8k+hpdNkBLzxg8H0aWcg==",
+ "peerDependencies": {
+ "react": ">=16.2.0",
+ "react-dom": ">=16.2.0"
+ }
+ },
"node_modules/react-zoom-pan-pinch": {
"version": "3.4.4",
"resolved": "https://registry.npmjs.org/react-zoom-pan-pinch/-/react-zoom-pan-pinch-3.4.4.tgz",
@@ -5797,6 +5866,14 @@
"resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz",
"integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ=="
},
+ "node_modules/ts-custom-error": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/ts-custom-error/-/ts-custom-error-3.3.1.tgz",
+ "integrity": "sha512-5OX1tzOjxWEgsr/YEUWSuPrQ00deKLh6D7OTWcvNHm12/7QPyRh8SYpyWvA4IZv8H/+GQWQEh/kwo95Q9OVW1A==",
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
"node_modules/tslib": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
@@ -6625,8 +6702,7 @@
"@emotion/use-insertion-effect-with-fallbacks": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz",
- "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==",
- "requires": {}
+ "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw=="
},
"@emotion/utils": {
"version": "1.2.1",
@@ -7032,8 +7108,7 @@
"@mui/types": {
"version": "7.2.14",
"resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.14.tgz",
- "integrity": "sha512-MZsBZ4q4HfzBsywtXgM1Ksj6HDThtiwmOKUXH1pKYISI9gAVXCNHNpo7TlGoGrBaYWZTdNoirIN7JsQcQUjmQQ==",
- "requires": {}
+ "integrity": "sha512-MZsBZ4q4HfzBsywtXgM1Ksj6HDThtiwmOKUXH1pKYISI9gAVXCNHNpo7TlGoGrBaYWZTdNoirIN7JsQcQUjmQQ=="
},
"@mui/utils": {
"version": "5.15.14",
@@ -7205,8 +7280,7 @@
"uncontrollable": {
"version": "8.0.4",
"resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-8.0.4.tgz",
- "integrity": "sha512-ulRWYWHvscPFc0QQXvyJjY6LIXU56f0h8pQFvhxiKk5V1fcI8gp9Ht9leVAhrVjzqMw0BgjspBINx9r6oyJUvQ==",
- "requires": {}
+ "integrity": "sha512-ulRWYWHvscPFc0QQXvyJjY6LIXU56f0h8pQFvhxiKk5V1fcI8gp9Ht9leVAhrVjzqMw0BgjspBINx9r6oyJUvQ=="
}
}
},
@@ -7413,6 +7487,11 @@
"@types/react": "*"
}
},
+ "@types/scheduler": {
+ "version": "0.16.8",
+ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz",
+ "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A=="
+ },
"@types/use-sync-external-store": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz",
@@ -7442,6 +7521,21 @@
"react-refresh": "^0.14.0"
}
},
+ "@zxing/library": {
+ "version": "0.17.1",
+ "resolved": "https://registry.npmjs.org/@zxing/library/-/library-0.17.1.tgz",
+ "integrity": "sha512-RuiBZuteGaFXCle/b0X+g3peN8UpDc3pGe/J7hZBzKWaMZLbjensR7ja3vy47xWhXU4e8MICGqegPMxc2V2sow==",
+ "requires": {
+ "@zxing/text-encoding": "~0.9.0",
+ "ts-custom-error": "^3.0.0"
+ }
+ },
+ "@zxing/text-encoding": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz",
+ "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==",
+ "optional": true
+ },
"acorn": {
"version": "8.11.3",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
@@ -7452,8 +7546,7 @@
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
"integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
- "dev": true,
- "requires": {}
+ "dev": true
},
"ajv": {
"version": "6.12.6",
@@ -7690,8 +7783,7 @@
"bootstrap": {
"version": "5.3.3",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz",
- "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==",
- "requires": {}
+ "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg=="
},
"brace-expansion": {
"version": "1.1.11",
@@ -8268,15 +8360,13 @@
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz",
"integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==",
- "dev": true,
- "requires": {}
+ "dev": true
},
"eslint-plugin-react-refresh": {
"version": "0.4.7",
"resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.7.tgz",
"integrity": "sha512-yrj+KInFmwuQS2UQcg1SF83ha1tuHC1jMQbRNyuWtlEzzKRDgAl7L4Yp4NlDUZTZNlWvHEzOtJhMi40R7JxcSw==",
- "dev": true,
- "requires": {}
+ "dev": true
},
"eslint-scope": {
"version": "7.2.2",
@@ -9268,8 +9358,7 @@
"qrcode.react": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/qrcode.react/-/qrcode.react-3.1.0.tgz",
- "integrity": "sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q==",
- "requires": {}
+ "integrity": "sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q=="
},
"queue-microtask": {
"version": "1.2.3",
@@ -9727,8 +9816,34 @@
"react-medium-image-zoom": {
"version": "5.2.4",
"resolved": "https://registry.npmjs.org/react-medium-image-zoom/-/react-medium-image-zoom-5.2.4.tgz",
- "integrity": "sha512-XLu/fLqpbmhiDAGA6yie78tDv4kh8GxvS7kKQArSOvCvm5zvgItoh4h01NAAvnezQ60ovsTeedHiHG3eG9CcGg==",
- "requires": {}
+ "integrity": "sha512-XLu/fLqpbmhiDAGA6yie78tDv4kh8GxvS7kKQArSOvCvm5zvgItoh4h01NAAvnezQ60ovsTeedHiHG3eG9CcGg=="
+ },
+ "react-qr-barcode-scanner": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/react-qr-barcode-scanner/-/react-qr-barcode-scanner-1.0.6.tgz",
+ "integrity": "sha512-DdalO4oqHyxWPa4cIjiHeMS19HbIvKq+oo/PAglAsxmfhAUGC8sM1mJnzo0zPQM1yw9ZNpjrtqHz+rs86Mu7Ww==",
+ "requires": {
+ "@types/react": "^16.9.35",
+ "@zxing/library": "^0.17.0",
+ "react-webcam": "^5.0.1"
+ },
+ "dependencies": {
+ "@types/react": {
+ "version": "16.14.60",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.60.tgz",
+ "integrity": "sha512-wIFmnczGsTcgwCBeIYOuy2mdXEiKZ5znU/jNOnMZPQyCcIxauMGWlX0TNG4lZ7NxRKj7YUIZRneJQSSdB2jKgg==",
+ "requires": {
+ "@types/prop-types": "*",
+ "@types/scheduler": "^0.16",
+ "csstype": "^3.0.2"
+ }
+ },
+ "react-webcam": {
+ "version": "5.2.4",
+ "resolved": "https://registry.npmjs.org/react-webcam/-/react-webcam-5.2.4.tgz",
+ "integrity": "sha512-Qqj14t68Ke1eoEYjFde+N48HtuIJg0ePIQRpFww9eZt5oBcDpe/l60h+m3VRFJAR5/E3dOhSU5R8EJEcdCq/Eg=="
+ }
+ }
},
"react-redux": {
"version": "9.1.2",
@@ -9781,11 +9896,15 @@
"prop-types": "^15.6.2"
}
},
+ "react-webcam": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/react-webcam/-/react-webcam-7.2.0.tgz",
+ "integrity": "sha512-xkrzYPqa1ag2DP+2Q/kLKBmCIfEx49bVdgCCCcZf88oF+0NPEbkwYk3/s/C7Zy0mhM8k+hpdNkBLzxg8H0aWcg=="
+ },
"react-zoom-pan-pinch": {
"version": "3.4.4",
"resolved": "https://registry.npmjs.org/react-zoom-pan-pinch/-/react-zoom-pan-pinch-3.4.4.tgz",
- "integrity": "sha512-lGTu7D9lQpYEQ6sH+NSlLA7gicgKRW8j+D/4HO1AbSV2POvKRFzdWQ8eI0r3xmOsl4dYQcY+teV6MhULeg1xBw==",
- "requires": {}
+ "integrity": "sha512-lGTu7D9lQpYEQ6sH+NSlLA7gicgKRW8j+D/4HO1AbSV2POvKRFzdWQ8eI0r3xmOsl4dYQcY+teV6MhULeg1xBw=="
},
"redux": {
"version": "5.0.1",
@@ -10117,6 +10236,11 @@
"resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz",
"integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ=="
},
+ "ts-custom-error": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/ts-custom-error/-/ts-custom-error-3.3.1.tgz",
+ "integrity": "sha512-5OX1tzOjxWEgsr/YEUWSuPrQ00deKLh6D7OTWcvNHm12/7QPyRh8SYpyWvA4IZv8H/+GQWQEh/kwo95Q9OVW1A=="
+ },
"tslib": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
@@ -10234,8 +10358,7 @@
"use-sync-external-store": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz",
- "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==",
- "requires": {}
+ "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw=="
},
"vite": {
"version": "5.2.11",
diff --git a/package.json b/package.json
index 82085fb..84f0b13 100644
--- a/package.json
+++ b/package.json
@@ -17,14 +17,16 @@
"antd": "^5.17.3",
"bootstrap": "^5.3.3",
"dotenv": "^16.4.5",
- "react": "^18.2.0",
+ "react": "^18.3.1",
"react-bootstrap": "^2.10.2",
- "react-dom": "^18.2.0",
+ "react-dom": "^18.3.1",
"react-lazy-load-image-component": "^1.6.0",
"react-medium-image-zoom": "^5.2.4",
+ "react-qr-barcode-scanner": "^1.0.6",
"react-redux": "^9.1.2",
"react-router-dom": "^6.23.1",
"react-toastify": "^10.0.5",
+ "react-webcam": "^7.2.0",
"react-zoom-pan-pinch": "^3.4.4",
"redux": "^5.0.1"
},
diff --git a/src/App.jsx b/src/App.jsx
index e43f0ed..db2ee09 100644
--- a/src/App.jsx
+++ b/src/App.jsx
@@ -21,6 +21,7 @@ import RecordEditor from "./Components/RecordEditor";
import VerifyMarks from "./Components/VerifyMarks";
import QueryCardEditor from "./Components/QueryCardEditor";
import AnomolyPartC from "./Components/AnomolyPartC";
+import BarcodeScanner from "./Components/BarcodeScanner"
function App() {
return (
@@ -42,6 +43,7 @@ function App() {
path="/anomoly/attendence/additionalSheet"
element={
{barcodeData}
+