This commit is contained in:
Pradeeppon01 2024-07-03 18:42:11 +05:30
parent d39348dd48
commit 416e250ad1
9 changed files with 265 additions and 29 deletions

30
deploy.sh Executable file
View File

@ -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

171
package-lock.json generated
View File

@ -15,14 +15,16 @@
"antd": "^5.17.3", "antd": "^5.17.3",
"bootstrap": "^5.3.3", "bootstrap": "^5.3.3",
"dotenv": "^16.4.5", "dotenv": "^16.4.5",
"react": "^18.2.0", "react": "^18.3.1",
"react-bootstrap": "^2.10.2", "react-bootstrap": "^2.10.2",
"react-dom": "^18.2.0", "react-dom": "^18.3.1",
"react-lazy-load-image-component": "^1.6.0", "react-lazy-load-image-component": "^1.6.0",
"react-medium-image-zoom": "^5.2.4", "react-medium-image-zoom": "^5.2.4",
"react-qr-barcode-scanner": "^1.0.6",
"react-redux": "^9.1.2", "react-redux": "^9.1.2",
"react-router-dom": "^6.23.1", "react-router-dom": "^6.23.1",
"react-toastify": "^10.0.5", "react-toastify": "^10.0.5",
"react-webcam": "^7.2.0",
"react-zoom-pan-pinch": "^3.4.4", "react-zoom-pan-pinch": "^3.4.4",
"redux": "^5.0.1" "redux": "^5.0.1"
}, },
@ -1968,6 +1970,11 @@
"@types/react": "*" "@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": { "node_modules/@types/use-sync-external-store": {
"version": "0.0.3", "version": "0.0.3",
"resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", "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" "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": { "node_modules/acorn": {
"version": "8.11.3", "version": "8.11.3",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", "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" "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": { "node_modules/react-redux": {
"version": "9.1.2", "version": "9.1.2",
"resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.2.tgz", "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.2.tgz",
@ -5315,6 +5375,15 @@
"react-dom": ">=16.6.0" "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": { "node_modules/react-zoom-pan-pinch": {
"version": "3.4.4", "version": "3.4.4",
"resolved": "https://registry.npmjs.org/react-zoom-pan-pinch/-/react-zoom-pan-pinch-3.4.4.tgz", "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", "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz",
"integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" "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": { "node_modules/tslib": {
"version": "2.6.2", "version": "2.6.2",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
@ -6625,8 +6702,7 @@
"@emotion/use-insertion-effect-with-fallbacks": { "@emotion/use-insertion-effect-with-fallbacks": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", "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==", "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw=="
"requires": {}
}, },
"@emotion/utils": { "@emotion/utils": {
"version": "1.2.1", "version": "1.2.1",
@ -7032,8 +7108,7 @@
"@mui/types": { "@mui/types": {
"version": "7.2.14", "version": "7.2.14",
"resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.14.tgz", "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.14.tgz",
"integrity": "sha512-MZsBZ4q4HfzBsywtXgM1Ksj6HDThtiwmOKUXH1pKYISI9gAVXCNHNpo7TlGoGrBaYWZTdNoirIN7JsQcQUjmQQ==", "integrity": "sha512-MZsBZ4q4HfzBsywtXgM1Ksj6HDThtiwmOKUXH1pKYISI9gAVXCNHNpo7TlGoGrBaYWZTdNoirIN7JsQcQUjmQQ=="
"requires": {}
}, },
"@mui/utils": { "@mui/utils": {
"version": "5.15.14", "version": "5.15.14",
@ -7205,8 +7280,7 @@
"uncontrollable": { "uncontrollable": {
"version": "8.0.4", "version": "8.0.4",
"resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-8.0.4.tgz", "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-8.0.4.tgz",
"integrity": "sha512-ulRWYWHvscPFc0QQXvyJjY6LIXU56f0h8pQFvhxiKk5V1fcI8gp9Ht9leVAhrVjzqMw0BgjspBINx9r6oyJUvQ==", "integrity": "sha512-ulRWYWHvscPFc0QQXvyJjY6LIXU56f0h8pQFvhxiKk5V1fcI8gp9Ht9leVAhrVjzqMw0BgjspBINx9r6oyJUvQ=="
"requires": {}
} }
} }
}, },
@ -7413,6 +7487,11 @@
"@types/react": "*" "@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": { "@types/use-sync-external-store": {
"version": "0.0.3", "version": "0.0.3",
"resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", "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" "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": { "acorn": {
"version": "8.11.3", "version": "8.11.3",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
@ -7452,8 +7546,7 @@
"version": "5.3.2", "version": "5.3.2",
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
"integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
"dev": true, "dev": true
"requires": {}
}, },
"ajv": { "ajv": {
"version": "6.12.6", "version": "6.12.6",
@ -7690,8 +7783,7 @@
"bootstrap": { "bootstrap": {
"version": "5.3.3", "version": "5.3.3",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz",
"integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg=="
"requires": {}
}, },
"brace-expansion": { "brace-expansion": {
"version": "1.1.11", "version": "1.1.11",
@ -8268,15 +8360,13 @@
"version": "4.6.2", "version": "4.6.2",
"resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz",
"integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==",
"dev": true, "dev": true
"requires": {}
}, },
"eslint-plugin-react-refresh": { "eslint-plugin-react-refresh": {
"version": "0.4.7", "version": "0.4.7",
"resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.7.tgz", "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.7.tgz",
"integrity": "sha512-yrj+KInFmwuQS2UQcg1SF83ha1tuHC1jMQbRNyuWtlEzzKRDgAl7L4Yp4NlDUZTZNlWvHEzOtJhMi40R7JxcSw==", "integrity": "sha512-yrj+KInFmwuQS2UQcg1SF83ha1tuHC1jMQbRNyuWtlEzzKRDgAl7L4Yp4NlDUZTZNlWvHEzOtJhMi40R7JxcSw==",
"dev": true, "dev": true
"requires": {}
}, },
"eslint-scope": { "eslint-scope": {
"version": "7.2.2", "version": "7.2.2",
@ -9268,8 +9358,7 @@
"qrcode.react": { "qrcode.react": {
"version": "3.1.0", "version": "3.1.0",
"resolved": "https://registry.npmjs.org/qrcode.react/-/qrcode.react-3.1.0.tgz", "resolved": "https://registry.npmjs.org/qrcode.react/-/qrcode.react-3.1.0.tgz",
"integrity": "sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q==", "integrity": "sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q=="
"requires": {}
}, },
"queue-microtask": { "queue-microtask": {
"version": "1.2.3", "version": "1.2.3",
@ -9727,8 +9816,34 @@
"react-medium-image-zoom": { "react-medium-image-zoom": {
"version": "5.2.4", "version": "5.2.4",
"resolved": "https://registry.npmjs.org/react-medium-image-zoom/-/react-medium-image-zoom-5.2.4.tgz", "resolved": "https://registry.npmjs.org/react-medium-image-zoom/-/react-medium-image-zoom-5.2.4.tgz",
"integrity": "sha512-XLu/fLqpbmhiDAGA6yie78tDv4kh8GxvS7kKQArSOvCvm5zvgItoh4h01NAAvnezQ60ovsTeedHiHG3eG9CcGg==", "integrity": "sha512-XLu/fLqpbmhiDAGA6yie78tDv4kh8GxvS7kKQArSOvCvm5zvgItoh4h01NAAvnezQ60ovsTeedHiHG3eG9CcGg=="
"requires": {} },
"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": { "react-redux": {
"version": "9.1.2", "version": "9.1.2",
@ -9781,11 +9896,15 @@
"prop-types": "^15.6.2" "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": { "react-zoom-pan-pinch": {
"version": "3.4.4", "version": "3.4.4",
"resolved": "https://registry.npmjs.org/react-zoom-pan-pinch/-/react-zoom-pan-pinch-3.4.4.tgz", "resolved": "https://registry.npmjs.org/react-zoom-pan-pinch/-/react-zoom-pan-pinch-3.4.4.tgz",
"integrity": "sha512-lGTu7D9lQpYEQ6sH+NSlLA7gicgKRW8j+D/4HO1AbSV2POvKRFzdWQ8eI0r3xmOsl4dYQcY+teV6MhULeg1xBw==", "integrity": "sha512-lGTu7D9lQpYEQ6sH+NSlLA7gicgKRW8j+D/4HO1AbSV2POvKRFzdWQ8eI0r3xmOsl4dYQcY+teV6MhULeg1xBw=="
"requires": {}
}, },
"redux": { "redux": {
"version": "5.0.1", "version": "5.0.1",
@ -10117,6 +10236,11 @@
"resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz",
"integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" "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": { "tslib": {
"version": "2.6.2", "version": "2.6.2",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
@ -10234,8 +10358,7 @@
"use-sync-external-store": { "use-sync-external-store": {
"version": "1.2.2", "version": "1.2.2",
"resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz",
"integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw=="
"requires": {}
}, },
"vite": { "vite": {
"version": "5.2.11", "version": "5.2.11",

View File

@ -17,14 +17,16 @@
"antd": "^5.17.3", "antd": "^5.17.3",
"bootstrap": "^5.3.3", "bootstrap": "^5.3.3",
"dotenv": "^16.4.5", "dotenv": "^16.4.5",
"react": "^18.2.0", "react": "^18.3.1",
"react-bootstrap": "^2.10.2", "react-bootstrap": "^2.10.2",
"react-dom": "^18.2.0", "react-dom": "^18.3.1",
"react-lazy-load-image-component": "^1.6.0", "react-lazy-load-image-component": "^1.6.0",
"react-medium-image-zoom": "^5.2.4", "react-medium-image-zoom": "^5.2.4",
"react-qr-barcode-scanner": "^1.0.6",
"react-redux": "^9.1.2", "react-redux": "^9.1.2",
"react-router-dom": "^6.23.1", "react-router-dom": "^6.23.1",
"react-toastify": "^10.0.5", "react-toastify": "^10.0.5",
"react-webcam": "^7.2.0",
"react-zoom-pan-pinch": "^3.4.4", "react-zoom-pan-pinch": "^3.4.4",
"redux": "^5.0.1" "redux": "^5.0.1"
}, },

View File

@ -21,6 +21,7 @@ import RecordEditor from "./Components/RecordEditor";
import VerifyMarks from "./Components/VerifyMarks"; import VerifyMarks from "./Components/VerifyMarks";
import QueryCardEditor from "./Components/QueryCardEditor"; import QueryCardEditor from "./Components/QueryCardEditor";
import AnomolyPartC from "./Components/AnomolyPartC"; import AnomolyPartC from "./Components/AnomolyPartC";
import BarcodeScanner from "./Components/BarcodeScanner"
function App() { function App() {
return ( return (
@ -42,6 +43,7 @@ function App() {
path="/anomoly/attendence/additionalSheet" path="/anomoly/attendence/additionalSheet"
element={<AttendanceAdditionalSheet />} element={<AttendanceAdditionalSheet />}
></Route> ></Route>
<Route path="/barcodeScanner" element={<BarcodeScanner/>}></Route>
<Route <Route
path="/anomoly/reassigned/booklet" path="/anomoly/reassigned/booklet"
element={<AttendenceCorrection />} element={<AttendenceCorrection />}

View File

@ -25,6 +25,7 @@ import MenuItem from "@mui/material/MenuItem";
import FormControl from "@mui/material/FormControl"; import FormControl from "@mui/material/FormControl";
import Select from "@mui/material/Select"; import Select from "@mui/material/Select";
import { useSearchParams } from "react-router-dom"; import { useSearchParams } from "react-router-dom";
import { updatePartCDegreeType } from "../redux/actions/actions";
const { Content, Header } = Layout; const { Content, Header } = Layout;
@ -40,15 +41,27 @@ function AnomalyPartC() {
const [totalPages, setTotalPages] = useState(1); const [totalPages, setTotalPages] = useState(1);
const [showSystemNoContainer, setShowSystemNoContainer] = useState(false); const [showSystemNoContainer, setShowSystemNoContainer] = useState(false);
const [selectedIndex, setSelectedIndex] = useState(null); const [selectedIndex, setSelectedIndex] = useState(null);
const [selectedDegreeType, setSelectedDegreeType] = useState("2"); const [selectedDegreeType, setSelectedDegreeType] = useState(null);
const degreeTypes = [ const degreeTypes = [
{ type: "UG", type_code: "0" }, { type: "UG", type_code: "0" },
{ type: "PG", type_code: "2" }, { type: "PG", type_code: "2" },
]; ];
const reduxDegreeType = useSelector((state)=> state?.partCDegreeType)
console.log("Redux degree type ...",reduxDegreeType)
useEffect(()=>{
if(reduxDegreeType){
setSelectedDegreeType(reduxDegreeType)
}else{
setSelectedDegreeType("2")
}
},[reduxDegreeType])
const handleDegreeTypeChange = (e) => { const handleDegreeTypeChange = (e) => {
console.log("Value ===== ", e.target.value); const newDegreeType = e.target.value
setSelectedDegreeType(e.target.value); console.log("Value ===== ",newDegreeType);
setSelectedDegreeType(newDegreeType);
dispatch(updatePartCDegreeType(newDegreeType))
}; };
const { const {
token: { colorBgContainer, borderRadiusLG }, token: { colorBgContainer, borderRadiusLG },

View File

@ -0,0 +1,51 @@
import React, { useState, useRef, useCallback } from 'react';
import Webcam from 'react-webcam';
import { QrReader } from 'react-qr-barcode-scanner';
const BarcodeScanner = () => {
const [hasCameraPermission, setHasCameraPermission] = useState(false);
const [barcodeData, setBarcodeData] = useState(null);
const webcamRef = useRef(null);
const handleUserMedia = useCallback(() => {
setHasCameraPermission(true);
}, []);
const handleScan = (result) => {
if (result) {
setBarcodeData(result.text);
}
};
const handleError = (error) => {
console.error(error);
};
return (
<div>
<h1>Barcode Scanner</h1>
{!hasCameraPermission ? (
<Webcam
audio={false}
ref={webcamRef}
screenshotFormat="image/jpeg"
onUserMedia={handleUserMedia}
/>
) : (
<QrReader
onResult={handleScan}
onError={handleError}
style={{ width: '100%' }}
/>
)}
{barcodeData && (
<div>
<h2>Scanned Barcode:</h2>
<p>{barcodeData}</p>
</div>
)}
</div>
);
};
export default BarcodeScanner;

View File

@ -32,6 +32,10 @@ const Home = () => {
title:"SQL Playground", title:"SQL Playground",
url:"/sqlPlayground" url:"/sqlPlayground"
}, },
{
title:"Barcode Scanner",
url:"/barcodeScanner"
}
// { // {
// title:"Marks Verfication", // title:"Marks Verfication",
// url:"/part-c/marks/verify" // url:"/part-c/marks/verify"
@ -43,6 +47,7 @@ const Home = () => {
// title: "Reassingned Serial No Anomoly Manual Updation", // title: "Reassingned Serial No Anomoly Manual Updation",
// url: "/anomoly/reassigned", // url: "/anomoly/reassigned",
// }] // }]
return ( return (
<> <>
<Box> <Box>

View File

@ -253,6 +253,11 @@ const skipPage = () =>{
<Box className="d-flex justify-content-between align-items-center"> <Box className="d-flex justify-content-between align-items-center">
<Box className="d-flex flex-column gap-3 w-25"> <Box className="d-flex flex-column gap-3 w-25">
{imageName && <h5 className="text-left">ID : {imageName}</h5>} {imageName && <h5 className="text-left">ID : {imageName}</h5>}
{paramsError && <h5 className="text-left">Error Code : {paramsError}</h5>}
{paramsDegreeType ? (
paramsDegreeType === 0 ? <h5 className="text-left">Degree Type : UG</h5> :
<h5 className="text-left">Degree Type : PG</h5>
): null}
<TextInputField <TextInputField
placeholder={"Barcode"} placeholder={"Barcode"}
value={barcode} value={barcode}

View File

@ -57,3 +57,8 @@ export const updateSelectedJson = (data) => ({
type: "UPDATE_SELECTED_ERROR_JSON", type: "UPDATE_SELECTED_ERROR_JSON",
payload: data, payload: data,
}) })
export const updatePartCDegreeType = (data) => ({
type:'UPDATE_PART_C_DEGREE_TYPE',
payload: data,
})