diff --git a/src/components/Uploads/ImageUploader.jsx b/src/components/Uploads/ImageUploader.jsx
index e1f10d6..15006a4 100644
--- a/src/components/Uploads/ImageUploader.jsx
+++ b/src/components/Uploads/ImageUploader.jsx
@@ -1,24 +1,39 @@
-import { Flex, Container,Text, Button } from "@chakra-ui/react";
-import { useState, useEffect,useRef } from "react";
+import { Flex, Container, Text, Button } from "@chakra-ui/react";
+import { useState, useEffect, useRef } from "react";
import { uploadCertficateAdmin } from "utils/firebaseFxns/certificates";
-import { getFirestore, Timestamp, doc, setDoc,collection, query, where,getDocs } from "firebase/firestore";
+import {
+ getFirestore,
+ Timestamp,
+ doc,
+ setDoc,
+ collection,
+ query,
+ where,
+ getDocs,
+} from "firebase/firestore";
import { cert } from "firebaseConfig";
+function ImageUploader({
+ File,
+ setFile,
+ activeInput,
+ setActiveInput,
+ setData,
+ data,
+ eventdetails,
+}) {
+ const fileRef = useRef();
-function ImageUploader({File,setFile,activeInput,setActiveInput,setData,data,eventdetails}) {
- const fileRef = useRef()
-
- const handleSelectFile=(input)=>{
- setFile({...File,img:input.current.files[0]})
- }
+ const handleSelectFile = (input) => {
+ setFile({ ...File, img: input.current.files[0] });
+ };
const handleDragOver = (event) => {
event.preventDefault();
-
};
const handleDrop = (event) => {
event.preventDefault();
- setFile({...File,img:event.dataTransfer.files[0]});
+ setFile({ ...File, img: event.dataTransfer.files[0] });
};
const handleDragLeave = () => {
@@ -34,138 +49,231 @@ function ImageUploader({File,setFile,activeInput,setActiveInput,setData,data,eve
return fname;
}
-
-
function drag(event) {
- if(activeInput.certname)
- {
- setData({
- ...data,
- name:{
+ if (activeInput.certname) {
+ setData({
+ ...data,
+ name: {
...data.name,
- xAxis: event.offsetX ,
- yAxis: event.offsetY+80
- }
- })
- }
-
-
-if(activeInput.certid)
-{
- setData({
- ...data,
- cId:{
- ...data.cId,
- xAxis: event.offsetX ,
- yAxis: event.offsetY+135
- }
- })
- }
-}
+ xAxis: event.offsetX,
+ yAxis: event.offsetY + 80,
+ },
+ });
+ }
-function stopDrag(){
- setActiveInput({
- certname:false,
- certid:false
- })
-}
+ if (activeInput.certid) {
+ setData({
+ ...data,
+
+ cId: {
+ ...data.cId,
+ xAxis: event.offsetX + 235,
+ yAxis: event.offsetY + 200,
+ },
+ });
+ }
+ if (activeInput.id) {
+ setData({
+ ...data,
+ Id: {
+ ...data.id,
+ xAxis: event.offsetX + 235,
+ yAxis: event.offsetY + 200,
+ },
+ });
+ }
+ if (activeInput.ses) {
+ setData({
+ ...data,
+ ses: {
+ ...data.ses,
+ xAxis: event.offsetX + 235,
+ yAxis: event.offsetY + 200,
+ },
+ });
+ }
+ if (activeInput.dep) {
+ setData({
+ ...data,
+ dep: {
+ ...data.dep,
+ xAxis: event.offsetX + 235,
+ yAxis: event.offsetY + 200,
+ },
+ });
+ }
+ }
-console.log(activeInput)
+ function stopDrag() {
+ setActiveInput({
+ certname: false,
+ certid: false,
+ id: false,
+ ses: false,
+ dep: false
+ });
+ }
+
+ console.log(activeInput);
useEffect(() => {
-
var canvas = document.getElementById("cert");
var ctx = canvas.getContext("2d");
var img = new Image();
const reader = new FileReader();
- File.img && reader.readAsDataURL(File?.img)
- reader.addEventListener('load', function(e) {
+ File.img && reader.readAsDataURL(File?.img);
+ reader.addEventListener("load", function (e) {
img.src = reader.result;
});
File?.img && canvas.addEventListener("mousemove", drag);
- canvas.addEventListener("mousedown",stopDrag)
-
-
-
-
-
- img.onload = function() {
-
+ canvas.addEventListener("mousedown", stopDrag);
+
+ img.onload = function () {
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
- ctx.font = `${data.name.fontSize}px ${data.name.fontName}`;
- ctx.fillStyle = data.name.fontColor;
- ctx.fillText("Yout Name Here", data.name.xAxis, data.name.yAxis);
- ctx.font = `${data.cId.fontSize}px ${data.cId.fontName}`;
- ctx.fillStyle = data.cId.fontColor;
- ctx.fillText("CERT67PH02", data.cId.xAxis, data.cId.yAxis);
- }
+ ctx.font = `${data.name.fontSize}px ${data.name.fontName}`;
+ ctx.fillStyle = data.name.fontColor;
+ ctx.fillText("Yout Name Here", data.name.xAxis, data.name.yAxis);
+ ctx.font = `${data.cId.fontSize}px ${data.cId.fontName}`;
+ ctx.fillStyle = data.cId.fontColor;
+ ctx.fillText("CERT67PH02", data.cId.xAxis, data.cId.yAxis);
+ ctx.fillStyle = data.Id.fontColor;
+ ctx.font = `${data.Id.fontSize}px ${data.Id.fontName}`;
+ ctx.fillText("ID67PH02", data.Id.xAxis, data.Id.yAxis);
+ ctx.fillStyle = data.ses.fontColor;
+ ctx.font = `${data.ses.fontSize}px ${data.ses.fontName}`;
+ ctx.fillText("2023-24", data.ses.xAxis, data.ses.yAxis);
+ ctx.fillStyle = data.dep.fontColor;
+ ctx.font = `${data.dep.fontSize}px ${data.dep.fontName}`;
+ ctx.fillText("CSE", data.dep.xAxis, data.dep.yAxis);
+ };
-
- return()=>{
+ return () => {
canvas.removeEventListener("mousemove", drag);
- canvas.removeEventListener("mousedown",stopDrag)
- }
- }, [File,activeInput,data])
-
-const users =[
- {
- name: "kallyan singha",
- email: "kallyan@apiffer.in"
- },
- {
- name: "shreyam maity",
- email: "shreyam@apiffer.in"
- }
-]
-console.log(eventdetails.listParticipants)
-
-const submitCert = async()=>{
- const db = getFirestore(cert);
- var q = query(collection(db, "certMetas"), where("eventName", "==", eventdetails.name))
- await getDocs(q).then(async(snapshot) => {
-if (snapshot.empty) {
-console.log("No matching data");
- var isDone = await uploadCertficateAdmin(File.img,data.name,data.cId,eventdetails.name,eventdetails.date,'admin',eventdetails.listParticipants)
- if(isDone){
- alert("Uploaded");
- }else{
- alert("Failed");
- }
-}else{
- alert("A meta with same name exists")
-}}).catch(err => {
- console.log("Error getting documents", err);
-});
-}
+ canvas.removeEventListener("mousedown", stopDrag);
+ };
+ }, [File, activeInput, data]);
+ const users = [
+ {
+ name: "kallyan singha",
+ email: "kallyan@apiffer.in",
+ },
+ {
+ name: "shreyam maity",
+ email: "shreyam@apiffer.in",
+ },
+ ];
+ console.log(eventdetails.listParticipants);
+ const submitCert = async () => {
+ const db = getFirestore(cert);
+ var q = query(
+ collection(db, "certMetas"),
+ where("eventName", "==", eventdetails.name)
+ );
+ await getDocs(q)
+ .then(async (snapshot) => {
+ if (snapshot.empty) {
+ console.log("No matching data");
+ var isDone = await uploadCertficateAdmin(
+ File.img,
+ data.name,
+ data.cId,
+ data.Id,
+ data.ses,
+ data.dep,
+ eventdetails.name,
+ eventdetails.date,
+ "admin",
+ eventdetails.listParticipants
+ );
+ if (isDone) {
+ alert("Uploaded");
+ } else {
+ alert("Failed");
+ }
+ } else {
+ alert("A meta with same name exists");
+ }
+ })
+ .catch((err) => {
+ console.log("Error getting documents", err);
+ });
+ };
return (
-
-
-
-
+
{!File.img ? (
-
-
+
+
Drag and Drop .png File Here
OR
- handleSelectFile(fileRef)} hidden/>
-
+ handleSelectFile(fileRef)}
+ hidden
+ />
+
) : (
-
-
+
+
{formatString(File?.img?.name)}
-
-
-
+
+
+
)}
-
+
);
}
diff --git a/src/views/CertificateGen/index.js b/src/views/CertificateGen/index.js
index 33a8e2e..243de58 100644
--- a/src/views/CertificateGen/index.js
+++ b/src/views/CertificateGen/index.js
@@ -1,115 +1,464 @@
-import { useState,useEffect } from "react";
-import { Button, Container, Flex, FormControl, FormHelperText, FormLabel, Input, Switch, Textarea } from "@chakra-ui/react";
+import { useState, useEffect } from "react";
+import {
+ Button,
+ Container,
+ Flex,
+ FormControl,
+ FormHelperText,
+ FormLabel,
+ Input,
+ Switch,
+ Textarea,
+} from "@chakra-ui/react";
import CsvUploader from "components/Uploads/CsvUploader";
-import csvtojson from 'csvtojson'
+import csvtojson from "csvtojson";
import ImageUploader from "components/Uploads/ImageUploader";
const CertificateGen = () => {
- const [files,setfiles]= useState(
- {
- pdf: '',
- csv: '',
- img: '',
- })
+ const [files, setfiles] = useState({
+ pdf: "",
+ csv: "",
+ img: "",
+ });
- const [certCord,setCertCord] = useState({
- name:{
- xAxis:0,
- yAxis:0,
- fontName: 'arial',
- fontSize: 40,
- fontColor: ''
- },
- cId:{
- xAxis:0,
- yAxis:0,
- fontName: 'arial',
- fontSize: 15,
- fontColor: ''
- }
- })
-const [activeInputElementPos,setActiveInputElementPos] = useState({
- certname: false,
- certid: false
-})
+ const [certCord, setCertCord] = useState({
+ name: {
+ xAxis: 0,
+ yAxis: 0,
+ fontName: "arial",
+ fontSize: 40,
+ fontColor: "",
+ },
+ cId: {
+ xAxis: 0,
+ yAxis: 0,
+ fontName: "arial",
+ fontSize: 15,
+ fontColor: "",
+ },
+ Id: {
+ xAxis: 0,
+ yAxis: 0,
+ fontName: "arial",
+ fontSize: 30,
+ fontColor: "",
+ },
+ ses: {
+ xAxis: 0,
+ yAxis: 0,
+ fontName: "arial",
+ fontSize: 15,
+ fontColor: "",
+ },
+ dep: {
+ xAxis: 0,
+ yAxis: 0,
+ fontName: "arial",
+ fontSize: 15,
+ fontColor: "",
+ },
+ });
+ const [activeInputElementPos, setActiveInputElementPos] = useState({
+ certname: false,
+ certid: false,
+ ses:false,
+ dep:false,
+ id:false
+ });
-const [eventDetails,setEventDetails] =useState({
- name: '',
- date:'',
- listParticipants: []
-})
-
-useEffect(()=>{
- console.log(files.csv)
- const reader = new FileReader();
- if(files.csv)
- {
- reader.readAsText(files.csv)
- reader.onload = function () {
- const csvString = reader.result;
- csvtojson()
- .fromString(csvString)
- .then((csvJson) => {
- // const jsonString = JSON.stringify(csvJson);
- setEventDetails({...eventDetails,listParticipants:csvJson})
- })
- .catch(err=>console.log(err));
- };
-
- }
-},[files.csv])
+ const [eventDetails, setEventDetails] = useState({
+ name: "",
+ date: "",
+ id:"",
+ ses:"",
+ dep:"",
+ listParticipants: [],
+ });
+ useEffect(() => {
+ console.log(files.csv);
+ const reader = new FileReader();
+ if (files.csv) {
+ reader.readAsText(files.csv);
+ reader.onload = function () {
+ const csvString = reader.result;
+ csvtojson()
+ .fromString(csvString)
+ .then((csvJson) => {
+ // const jsonString = JSON.stringify(csvJson);
+ setEventDetails({ ...eventDetails, listParticipants: csvJson });
+ })
+ .catch((err) => console.log(err));
+ };
+ }
+ }, [files.csv]);
return (
-
-
+
+
+
+
+ Event Name
+
+ setEventDetails({ ...eventDetails, name: e.target.value })
+ }
+ />
+
+ Participant Name Position
+
+ setActiveInputElementPos({ certid: false, certname: true })
+ }
+ >
+
+
+
+
+ X: {certCord.name.xAxis} , Y: {certCord.name.yAxis}
+
+ X:{" "}
+
+ setCertCord({
+ ...certCord,
+ name: { ...certCord.name, xAxis: e.target.value },
+ })
+ }
+ placeholder="X"
+ />
+
+ Y:{" "}
+
+ setCertCord({
+ ...certCord,
+ name: { ...certCord.name, yAxis: e.target.value },
+ })
+ }
+ placeholder="Y"
+ />
+
+
+ setCertCord({
+ ...certCord,
+ name: { ...certCord.name, fontName: e.target.value },
+ })
+ }
+ placeholder="Font"
+ />
+
+ setCertCord({
+ ...certCord,
+ name: { ...certCord.name, fontSize: e.target.value },
+ })
+ }
+ placeholder="Fontsize"
+ />
+
+ setCertCord({
+ ...certCord,
+ name: { ...certCord.name, fontColor: e.target.value },
+ })
+ }
+ />
+
+
+
+ ID Position
+
+
+ setActiveInputElementPos({ ...activeInputElementPos, id:true })
+ }
+ >
+ {" "}
+
+
+
+ X: {certCord.Id.xAxis} , Y: {certCord.Id.yAxis}
+
+ X:
setCertCord({...certCord, Id: {...certCord.Id, xAxis: e.target.value}})} placeholder="X" />
+Y:
setCertCord({...certCord, Id: {...certCord.Id, yAxis: e.target.value}})} placeholder="Y" />
-
-
- Event Name
- setEventDetails({...eventDetails,name:e.target.value})} />
-
-
- Participant Name Position
-
- setActiveInputElementPos({certid:false,certname:true})}>
-
-
-
- X: {certCord.name.xAxis} , Y: {certCord.name.yAxis}
- setCertCord({...certCord,name:{...certCord.name,fontName:e.target.value}})} placeholder="Font" />
- setCertCord({...certCord,name:{...certCord.name,fontSize:e.target.value}})} placeholder="Fontsize"/>
- setCertCord({...certCord,name:{...certCord.name,fontColor:e.target.value}})} />
-
-
-
- Certificate Id Position
-
- setActiveInputElementPos({certid:true,certname:false})}>
-
- X: {certCord.cId.xAxis} , Y: {certCord.cId.yAxis}
-
- setCertCord({...certCord,cId:{...certCord.cId,fontName:e.target.value}})} placeholder="Font" />
- setCertCord({...certCord,cId:{...certCord.cId,fontSize:e.target.value}})} placeholder="Fontsize"/>
- setCertCord({...certCord,cId:{...certCord.cId,fontColor:e.target.value}})} />
-
-
+
+
+
+ setCertCord({
+ ...certCord,
+ Id: { ...certCord.Id, fontName: e.target.value },
+ })
+ }
+ placeholder="Font"
+ />
+
+ setCertCord({
+ ...certCord,
+ Id: { ...certCord.Id, fontSize: e.target.value },
+ })
+ }
+ placeholder="Fontsize"
+ />
+
+ setCertCord({
+ ...certCord,
+ Id: { ...certCord.Id, fontColor: e.target.value },
+ })
+ }
+ />
+
+
+
+ Session Position
+
+
+ setActiveInputElementPos({ ...activeInputElementPos, ses:true })
+ }
+ >
+ {" "}
+
+
+
+ X: {certCord.ses.xAxis} , Y: {certCord.ses.yAxis}
+
+ X: setCertCord({...certCord, ses: {...certCord.ses, xAxis: e.target.value}})} placeholder="X" />
+Y: setCertCord({...certCord, ses: {...certCord.ses, yAxis: e.target.value}})} placeholder="Y" />
- Event Date
- setEventDetails({...eventDetails,date:e.target.value})} />
-
-
+
+
+
+ setCertCord({
+ ...certCord,
+ ses: { ...certCord.ses, fontName: e.target.value },
+ })
+ }
+ placeholder="Font"
+ />
+
+ setCertCord({
+ ...certCord,
+ ses: { ...certCord.ses, fontSize: e.target.value },
+ })
+ }
+ placeholder="Fontsize"
+ />
+
+ setCertCord({
+ ...certCord,
+ ses: { ...certCord.ses, fontColor: e.target.value },
+ })
+ }
+ />
+
+
+
+ Department Position
+
+
+ setActiveInputElementPos({ ...activeInputElementPos, dep:true })
+ }
+ >
+ {" "}
+
+
+
+ X: {certCord.dep.xAxis} , Y: {certCord.dep.yAxis}
+
+ X: setCertCord({...certCord, dep: {...certCord.dep, xAxis: e.target.value}})} placeholder="X" />
+Y: setCertCord({...certCord, dep: {...certCord.dep, yAxis: e.target.value}})} placeholder="Y" />
- Participants List
-
-
-
-
-
-
-
-
-
+
+
+
+ setCertCord({
+ ...certCord,
+ dep: { ...certCord.dep, fontName: e.target.value },
+ })
+ }
+ placeholder="Font"
+ />
+
+ setCertCord({
+ ...certCord,
+ dep: { ...certCord.dep, fontSize: e.target.value },
+ })
+ }
+ placeholder="Fontsize"
+ />
+
+ setCertCord({
+ ...certCord,
+ dep: { ...certCord.dep, fontColor: e.target.value },
+ })
+ }
+ />
+
+
+
+ Certificate Id Position
+
+
+ setActiveInputElementPos({ certid: true, certname: false })
+ }
+ >
+ {" "}
+
+
+
+ X: {certCord.cId.xAxis} , Y: {certCord.cId.yAxis}
+
+
+ setCertCord({
+ ...certCord,
+ cId: { ...certCord.cId, fontName: e.target.value },
+ })
+ }
+ placeholder="Font"
+ />
+
+ setCertCord({
+ ...certCord,
+ cId: { ...certCord.cId, fontSize: e.target.value },
+ })
+ }
+ placeholder="Fontsize"
+ />
+
+ setCertCord({
+ ...certCord,
+ cId: { ...certCord.cId, fontColor: e.target.value },
+ })
+ }
+ />
+
+
+ Event Date
+
+ setEventDetails({ ...eventDetails, date: e.target.value })
+ }
+ />
+
+
+ Participants List
+
+
+
+
+
+
+
+
+
);
};
diff --git a/src/views/Dashboard/Tables/components/Authors.js b/src/views/Dashboard/Tables/components/Authors.js
index 55e2e34..12a1b8f 100644
--- a/src/views/Dashboard/Tables/components/Authors.js
+++ b/src/views/Dashboard/Tables/components/Authors.js
@@ -43,7 +43,7 @@ const Authors = ({
All