From e7e82789e12ea170046fb7a59cc5661ad8463a4c Mon Sep 17 00:00:00 2001 From: "guptamanas149@gmail.com" Date: Fri, 7 Jul 2023 18:18:26 +0530 Subject: [PATCH] csv download and fetch form response --- components/elements/FormResponse/index.js | 48 +-- package-lock.json | 126 +++---- .../dashboard/project/[id]/[formid]/index.js | 315 +++++++++++------- pages/dashboard/project/[id]/newform/index.js | 300 +++++++++-------- 4 files changed, 429 insertions(+), 360 deletions(-) diff --git a/components/elements/FormResponse/index.js b/components/elements/FormResponse/index.js index 04e5bfe..359eaec 100644 --- a/components/elements/FormResponse/index.js +++ b/components/elements/FormResponse/index.js @@ -1,26 +1,26 @@ -import React from 'react'; +import React from "react"; +import moment from "moment"; + export default function FormResponse({ response }) { - return ( - <> -
-
-
-
Name:
-
Manas Gupta
-
-
-
City:
-
Ludhiana
-
-
-
State:
-
Punjab
-
-
- Submittted a week ago -
-
-
- - ); + return ( + <> +
+
+ {Object.entries(response.data).map((el) => ( +
+
+ {el[0]}: +
+
+ {el[1]} +
+
+ ))} +
+ {moment(response.createdAt).fromNow()} +
+
+
+ + ); } diff --git a/package-lock.json b/package-lock.json index fec433f..354e969 100644 --- a/package-lock.json +++ b/package-lock.json @@ -47,6 +47,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -143,6 +144,7 @@ "version": "7.22.1", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.1.tgz", "integrity": "sha512-Hkqu7J4ynysSXxmAahpN1jjRwVJ+NdpraFLIWflgjpVob3KNyK3/tIUc7Q7szed8WMp0JNa7Qtd1E9Oo22F9gA==", + "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.21.4", @@ -172,6 +174,7 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, "bin": { "json5": "lib/cli.js" }, @@ -183,6 +186,7 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, "bin": { "semver": "bin/semver.js" } @@ -574,6 +578,7 @@ "version": "7.22.3", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.3.tgz", "integrity": "sha512-jBJ7jWblbgr7r6wYZHMdIqKc73ycaTcCaWRq4/2LpuPHcx7xMlZvpGQkOYc9HeSjn6rcx15CPlgVcBtZ4WZJ2w==", + "dev": true, "dependencies": { "@babel/template": "^7.21.9", "@babel/traverse": "^7.22.1", @@ -5267,7 +5272,8 @@ "node_modules/convert-source-map": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true }, "node_modules/copy-anything": { "version": "3.0.3", @@ -6572,6 +6578,7 @@ "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, "engines": { "node": ">=6.9.0" } @@ -11470,20 +11477,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/typescript": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.3.tgz", - "integrity": "sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==", - "dev": true, - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -11981,6 +11974,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, "requires": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -12054,6 +12048,7 @@ "version": "7.22.1", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.1.tgz", "integrity": "sha512-Hkqu7J4ynysSXxmAahpN1jjRwVJ+NdpraFLIWflgjpVob3KNyK3/tIUc7Q7szed8WMp0JNa7Qtd1E9Oo22F9gA==", + "dev": true, "requires": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.21.4", @@ -12075,12 +12070,14 @@ "json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true } } }, @@ -12372,6 +12369,7 @@ "version": "7.22.3", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.3.tgz", "integrity": "sha512-jBJ7jWblbgr7r6wYZHMdIqKc73ycaTcCaWRq4/2LpuPHcx7xMlZvpGQkOYc9HeSjn6rcx15CPlgVcBtZ4WZJ2w==", + "dev": true, "requires": { "@babel/template": "^7.21.9", "@babel/traverse": "^7.22.1", @@ -13319,8 +13317,7 @@ "@dicebear/avatars-avataaars-sprites": { "version": "4.10.7", "resolved": "https://registry.npmjs.org/@dicebear/avatars-avataaars-sprites/-/avatars-avataaars-sprites-4.10.7.tgz", - "integrity": "sha512-sNjy2VJUV3OHtFN/H1MeL8SN+v6xYIGoO1Zflh8O6vwoQJtNB+bg49H3olcIuRoVHKUdBmCvTS+6M6ZG+hgJBg==", - "requires": {} + "integrity": "sha512-sNjy2VJUV3OHtFN/H1MeL8SN+v6xYIGoO1Zflh8O6vwoQJtNB+bg49H3olcIuRoVHKUdBmCvTS+6M6ZG+hgJBg==" }, "@emotion/hash": { "version": "0.8.0", @@ -13474,8 +13471,7 @@ "@heroicons/react": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.0.18.tgz", - "integrity": "sha512-7TyMjRrZZMBPa+/5Y8lN0iyvUU/01PeMGX2+RE7cQWpEUIcb4QotzUObFkJDejj/HUH4qjP/eQ0gzzKs2f+6Yw==", - "requires": {} + "integrity": "sha512-7TyMjRrZZMBPa+/5Y8lN0iyvUU/01PeMGX2+RE7cQWpEUIcb4QotzUObFkJDejj/HUH4qjP/eQ0gzzKs2f+6Yw==" }, "@humanwhocodes/config-array": { "version": "0.11.9", @@ -14166,8 +14162,7 @@ "@react-types/shared": { "version": "3.16.0", "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.16.0.tgz", - "integrity": "sha512-IQgU4oAEvMwylEvaTsr2XB1G/mAoMe1JFYLD6G78v++oAR9l8o9MQxZ0YSeANDkqTamb2gKezGoT1RxvSKjVxw==", - "requires": {} + "integrity": "sha512-IQgU4oAEvMwylEvaTsr2XB1G/mAoMe1JFYLD6G78v++oAR9l8o9MQxZ0YSeANDkqTamb2gKezGoT1RxvSKjVxw==" } } }, @@ -14355,8 +14350,7 @@ "@react-types/shared": { "version": "3.16.0", "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.16.0.tgz", - "integrity": "sha512-IQgU4oAEvMwylEvaTsr2XB1G/mAoMe1JFYLD6G78v++oAR9l8o9MQxZ0YSeANDkqTamb2gKezGoT1RxvSKjVxw==", - "requires": {} + "integrity": "sha512-IQgU4oAEvMwylEvaTsr2XB1G/mAoMe1JFYLD6G78v++oAR9l8o9MQxZ0YSeANDkqTamb2gKezGoT1RxvSKjVxw==" } } }, @@ -14468,8 +14462,7 @@ "@react-types/shared": { "version": "3.16.0", "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.16.0.tgz", - "integrity": "sha512-IQgU4oAEvMwylEvaTsr2XB1G/mAoMe1JFYLD6G78v++oAR9l8o9MQxZ0YSeANDkqTamb2gKezGoT1RxvSKjVxw==", - "requires": {} + "integrity": "sha512-IQgU4oAEvMwylEvaTsr2XB1G/mAoMe1JFYLD6G78v++oAR9l8o9MQxZ0YSeANDkqTamb2gKezGoT1RxvSKjVxw==" } } }, @@ -14520,8 +14513,7 @@ "@react-types/shared": { "version": "3.16.0", "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.16.0.tgz", - "integrity": "sha512-IQgU4oAEvMwylEvaTsr2XB1G/mAoMe1JFYLD6G78v++oAR9l8o9MQxZ0YSeANDkqTamb2gKezGoT1RxvSKjVxw==", - "requires": {} + "integrity": "sha512-IQgU4oAEvMwylEvaTsr2XB1G/mAoMe1JFYLD6G78v++oAR9l8o9MQxZ0YSeANDkqTamb2gKezGoT1RxvSKjVxw==" } } }, @@ -14556,8 +14548,7 @@ "@react-types/shared": { "version": "3.16.0", "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.16.0.tgz", - "integrity": "sha512-IQgU4oAEvMwylEvaTsr2XB1G/mAoMe1JFYLD6G78v++oAR9l8o9MQxZ0YSeANDkqTamb2gKezGoT1RxvSKjVxw==", - "requires": {} + "integrity": "sha512-IQgU4oAEvMwylEvaTsr2XB1G/mAoMe1JFYLD6G78v++oAR9l8o9MQxZ0YSeANDkqTamb2gKezGoT1RxvSKjVxw==" } } }, @@ -14603,8 +14594,7 @@ "@react-types/shared": { "version": "3.16.0", "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.16.0.tgz", - "integrity": "sha512-IQgU4oAEvMwylEvaTsr2XB1G/mAoMe1JFYLD6G78v++oAR9l8o9MQxZ0YSeANDkqTamb2gKezGoT1RxvSKjVxw==", - "requires": {} + "integrity": "sha512-IQgU4oAEvMwylEvaTsr2XB1G/mAoMe1JFYLD6G78v++oAR9l8o9MQxZ0YSeANDkqTamb2gKezGoT1RxvSKjVxw==" } } }, @@ -14642,8 +14632,7 @@ "@react-types/shared": { "version": "3.16.0", "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.16.0.tgz", - "integrity": "sha512-IQgU4oAEvMwylEvaTsr2XB1G/mAoMe1JFYLD6G78v++oAR9l8o9MQxZ0YSeANDkqTamb2gKezGoT1RxvSKjVxw==", - "requires": {} + "integrity": "sha512-IQgU4oAEvMwylEvaTsr2XB1G/mAoMe1JFYLD6G78v++oAR9l8o9MQxZ0YSeANDkqTamb2gKezGoT1RxvSKjVxw==" } } }, @@ -14725,8 +14714,7 @@ "@react-types/shared": { "version": "3.16.0", "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.16.0.tgz", - "integrity": "sha512-IQgU4oAEvMwylEvaTsr2XB1G/mAoMe1JFYLD6G78v++oAR9l8o9MQxZ0YSeANDkqTamb2gKezGoT1RxvSKjVxw==", - "requires": {} + "integrity": "sha512-IQgU4oAEvMwylEvaTsr2XB1G/mAoMe1JFYLD6G78v++oAR9l8o9MQxZ0YSeANDkqTamb2gKezGoT1RxvSKjVxw==" } } }, @@ -14741,8 +14729,7 @@ "@react-types/shared": { "version": "3.16.0", "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.16.0.tgz", - "integrity": "sha512-IQgU4oAEvMwylEvaTsr2XB1G/mAoMe1JFYLD6G78v++oAR9l8o9MQxZ0YSeANDkqTamb2gKezGoT1RxvSKjVxw==", - "requires": {} + "integrity": "sha512-IQgU4oAEvMwylEvaTsr2XB1G/mAoMe1JFYLD6G78v++oAR9l8o9MQxZ0YSeANDkqTamb2gKezGoT1RxvSKjVxw==" } } }, @@ -14774,8 +14761,7 @@ "@react-types/shared": { "version": "3.16.0", "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.16.0.tgz", - "integrity": "sha512-IQgU4oAEvMwylEvaTsr2XB1G/mAoMe1JFYLD6G78v++oAR9l8o9MQxZ0YSeANDkqTamb2gKezGoT1RxvSKjVxw==", - "requires": {} + "integrity": "sha512-IQgU4oAEvMwylEvaTsr2XB1G/mAoMe1JFYLD6G78v++oAR9l8o9MQxZ0YSeANDkqTamb2gKezGoT1RxvSKjVxw==" } } }, @@ -14798,8 +14784,7 @@ "@react-types/shared": { "version": "3.16.0", "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.16.0.tgz", - "integrity": "sha512-IQgU4oAEvMwylEvaTsr2XB1G/mAoMe1JFYLD6G78v++oAR9l8o9MQxZ0YSeANDkqTamb2gKezGoT1RxvSKjVxw==", - "requires": {} + "integrity": "sha512-IQgU4oAEvMwylEvaTsr2XB1G/mAoMe1JFYLD6G78v++oAR9l8o9MQxZ0YSeANDkqTamb2gKezGoT1RxvSKjVxw==" } } }, @@ -14845,8 +14830,7 @@ "@react-types/shared": { "version": "3.16.0", "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.16.0.tgz", - "integrity": "sha512-IQgU4oAEvMwylEvaTsr2XB1G/mAoMe1JFYLD6G78v++oAR9l8o9MQxZ0YSeANDkqTamb2gKezGoT1RxvSKjVxw==", - "requires": {} + "integrity": "sha512-IQgU4oAEvMwylEvaTsr2XB1G/mAoMe1JFYLD6G78v++oAR9l8o9MQxZ0YSeANDkqTamb2gKezGoT1RxvSKjVxw==" } } }, @@ -14878,16 +14862,14 @@ "@react-types/shared": { "version": "3.16.0", "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.16.0.tgz", - "integrity": "sha512-IQgU4oAEvMwylEvaTsr2XB1G/mAoMe1JFYLD6G78v++oAR9l8o9MQxZ0YSeANDkqTamb2gKezGoT1RxvSKjVxw==", - "requires": {} + "integrity": "sha512-IQgU4oAEvMwylEvaTsr2XB1G/mAoMe1JFYLD6G78v++oAR9l8o9MQxZ0YSeANDkqTamb2gKezGoT1RxvSKjVxw==" } } }, "@react-types/shared": { "version": "3.14.0", "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.14.0.tgz", - "integrity": "sha512-K069Bh/P0qV3zUG8kqabeO8beAUlFdyVPvpcNVPjRl+0Q9NDS9mfdQbmUa0LqdVo5e6jRPdos77Ylflkrz8wcw==", - "requires": {} + "integrity": "sha512-K069Bh/P0qV3zUG8kqabeO8beAUlFdyVPvpcNVPjRl+0Q9NDS9mfdQbmUa0LqdVo5e6jRPdos77Ylflkrz8wcw==" }, "@react-types/switch": { "version": "3.2.5", @@ -14909,8 +14891,7 @@ "@react-types/shared": { "version": "3.16.0", "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.16.0.tgz", - "integrity": "sha512-IQgU4oAEvMwylEvaTsr2XB1G/mAoMe1JFYLD6G78v++oAR9l8o9MQxZ0YSeANDkqTamb2gKezGoT1RxvSKjVxw==", - "requires": {} + "integrity": "sha512-IQgU4oAEvMwylEvaTsr2XB1G/mAoMe1JFYLD6G78v++oAR9l8o9MQxZ0YSeANDkqTamb2gKezGoT1RxvSKjVxw==" } } }, @@ -14934,8 +14915,7 @@ "@react-types/shared": { "version": "3.16.0", "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.16.0.tgz", - "integrity": "sha512-IQgU4oAEvMwylEvaTsr2XB1G/mAoMe1JFYLD6G78v++oAR9l8o9MQxZ0YSeANDkqTamb2gKezGoT1RxvSKjVxw==", - "requires": {} + "integrity": "sha512-IQgU4oAEvMwylEvaTsr2XB1G/mAoMe1JFYLD6G78v++oAR9l8o9MQxZ0YSeANDkqTamb2gKezGoT1RxvSKjVxw==" } } }, @@ -14948,8 +14928,7 @@ "@stitches/react": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/@stitches/react/-/react-1.2.8.tgz", - "integrity": "sha512-9g9dWI4gsSVe8bNLlb+lMkBYsnIKCZTmvqvDG+Avnn69XfmHZKiaMrx7cgTaddq7aTPPmXiTsbFcUy0xgI4+wA==", - "requires": {} + "integrity": "sha512-9g9dWI4gsSVe8bNLlb+lMkBYsnIKCZTmvqvDG+Avnn69XfmHZKiaMrx7cgTaddq7aTPPmXiTsbFcUy0xgI4+wA==" }, "@swc/helpers": { "version": "0.4.14", @@ -15158,8 +15137,7 @@ "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "requires": {} + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" }, "acorn-node": { "version": "1.8.2", @@ -15694,7 +15672,8 @@ "convert-source-map": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true }, "copy-anything": { "version": "3.0.3", @@ -16262,8 +16241,7 @@ "version": "4.6.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", - "dev": true, - "requires": {} + "dev": true }, "eslint-scope": { "version": "5.1.1", @@ -16681,7 +16659,8 @@ "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true }, "get-intrinsic": { "version": "1.1.3", @@ -18298,14 +18277,12 @@ "next-seo": { "version": "5.15.0", "resolved": "https://registry.npmjs.org/next-seo/-/next-seo-5.15.0.tgz", - "integrity": "sha512-LGbcY91yDKGMb7YI+28n3g+RuChUkt6pXNpa8FkfKkEmNiJkeRDEXTnnjVtwT9FmMhG6NH8qwHTelGrlYm9rgg==", - "requires": {} + "integrity": "sha512-LGbcY91yDKGMb7YI+28n3g+RuChUkt6pXNpa8FkfKkEmNiJkeRDEXTnnjVtwT9FmMhG6NH8qwHTelGrlYm9rgg==" }, "next-themes": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.2.1.tgz", - "integrity": "sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==", - "requires": {} + "integrity": "sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==" }, "nextjs-progressbar": { "version": "0.0.16", @@ -18771,8 +18748,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", @@ -19223,14 +19199,12 @@ "react-icons": { "version": "4.9.0", "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.9.0.tgz", - "integrity": "sha512-ijUnFr//ycebOqujtqtV9PFS7JjhWg0QU6ykURVHuL4cbofvRCf3f6GMn9+fBktEFQOIVZnuAYLZdiyadRQRFg==", - "requires": {} + "integrity": "sha512-ijUnFr//ycebOqujtqtV9PFS7JjhWg0QU6ykURVHuL4cbofvRCf3f6GMn9+fBktEFQOIVZnuAYLZdiyadRQRFg==" }, "react-intersection-observer": { "version": "9.4.1", "resolved": "https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-9.4.1.tgz", - "integrity": "sha512-IXpIsPe6BleFOEHKzKh5UjwRUaz/JYS0lT/HPsupWEQou2hDqjhLMStc5zyE3eQVT4Fk3FufM8Fw33qW1uyeiw==", - "requires": {} + "integrity": "sha512-IXpIsPe6BleFOEHKzKh5UjwRUaz/JYS0lT/HPsupWEQou2hDqjhLMStc5zyE3eQVT4Fk3FufM8Fw33qW1uyeiw==" }, "react-is": { "version": "16.13.1", @@ -20080,13 +20054,6 @@ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true }, - "typescript": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.3.tgz", - "integrity": "sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==", - "dev": true, - "peer": true - }, "unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -20258,8 +20225,7 @@ "use-sync-external-store": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", - "requires": {} + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==" }, "util-deprecate": { "version": "1.0.2", diff --git a/pages/dashboard/project/[id]/[formid]/index.js b/pages/dashboard/project/[id]/[formid]/index.js index 36c14ae..27367dc 100644 --- a/pages/dashboard/project/[id]/[formid]/index.js +++ b/pages/dashboard/project/[id]/[formid]/index.js @@ -1,7 +1,12 @@ import React, { useState, useContext, useEffect } from "react"; import Image from "next/image"; import { useRouter } from "next/router"; -import { useQuery, dehydrate, QueryClient, useQueryClient } from "@tanstack/react-query"; +import { + useQuery, + dehydrate, + QueryClient, + useQueryClient, +} from "@tanstack/react-query"; import { BiSortAlt2 } from "react-icons/bi"; import { Modal, Button, Input, Space } from "antd"; @@ -14,126 +19,196 @@ import SEO from "../../../../../components/utils/SEO"; import { MdOutlineContentCopy } from "react-icons/md"; export default function FormDashboard() { - const router = useRouter(); - const { formid, isNew, submissionLink } = router.query; - const { setActive } = useContext(AppbarContext); - let { isLoggedIn, user } = useContext(UserContext); - const [form, setForm] = useState(null); - const [newFormSubmissionLinkModalOpen, setNewFormSubmissionLinkModalOpen] = useState(false); - - const getFormDashboard = async () => { - const res = await get(`/form/dashboard/${formid}`); - const data = res?.data?.data; - setForm(data); - }; - - const copySubmissionLink = () => { - navigator.clipboard.writeText(submissionLink); - }; - useEffect(() => { - if (!isLoggedIn) { - setActive({ - home: false, - dashboard: false, - documentation: false, - faq: false, - }); - router.push("/signin"); - } - setActive({ - home: false, - dashboard: true, - documentation: false, - faq: false, - }); - }, [user]); - useEffect(() => { - if (formid) getFormDashboard(); - }, [formid]); - useEffect(() => { - if (isNew && submissionLink) setNewFormSubmissionLinkModalOpen(true); - }, [isNew, submissionLink]); - return ( - <> - { + const res = await get(`/form/dashboard/${formid}`); + const data = res?.data?.data; + setForm(data); + }; + const getFormResponses = async () => { + const res = await get( + `/form/submissions/${formid}?limit=${limit}&skip=${page * limit}` + ); + const data = res?.data?.data; + setFormSubmissions(data?.submissions); + setFormSubmissionsCount(data?.totalSubmissions); + }; + const copySubmissionLink = () => { + navigator.clipboard.writeText(submissionLink); + }; + const handlePrevPage = () => { + if (page === 0) return; + setPage((prev) => prev - 1); + }; + const handleNextPage = () => { + setPage((prev) => prev + 1); + }; + const exportCSV = async () => { + const res = await get(`/form/csv/${formid}`); + console.log(res); + const data = res?.data?.data; + let encodeUri = data.encodeUri; + console.log(encodeUri); + let link = document.createElement("a"); + link.setAttribute("href", encodeUri); + link.setAttribute("download", "responses.csv"); + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + }; + useEffect(() => { + if (!isLoggedIn) { + setActive({ + home: false, + dashboard: false, + documentation: false, + faq: false, + }); + router.push("/signin"); + } + setActive({ + home: false, + dashboard: true, + documentation: false, + faq: false, + }); + }, [user]); + useEffect(() => { + if (formid) getFormDashboard(); + }, [formid]); + useEffect(() => { + if (formid) getFormResponses(); + }, [formid, page]); + useEffect(() => { + if (isNew && submissionLink) setNewFormSubmissionLinkModalOpen(true); + }, [isNew, submissionLink]); + return ( + <> + -
-
- Dashboard Vector -
-
-
-
-

{form?.name}

- {form?.is_owner && ( - - )} -
-
-
{form?.project?.name}
-
-
-
-
-
- {"45"} Responses -
-
- - Latest -
-
-
- - - - -
-
- - + /> +
+
+ Dashboard Vector +
+
+
+
+

+ {form?.name} +

+ {form?.is_owner && ( + + )} +
+
+
+ {form?.project?.name} +
+
+
+
+
+
+ {formSubmissionsCount}{" "} + + Responses + +
+
+ +
+
+
+ {formSubmissions && + formSubmissions.map((formSubmission) => ( + + ))} +
+
+ + +
+
+
-
-
-
- { - setNewFormSubmissionLinkModalOpen(false); - router.replace(router.asPath.split("?")[0], undefined, { shallow: true }); - }} - > - Ok - , - ]} - > -

Submission Link

-

- Here is your form submission link, send POST request to this link to store your form submission -

- - - - -
-