From 22bc38b695fcb012ee80e3f496a356678d082cab Mon Sep 17 00:00:00 2001 From: Dobromir Popov Date: Fri, 21 Jun 2024 02:42:23 +0300 Subject: [PATCH] name list copy on click implemented --- components/survey/SurveyForm.tsx | 93 +++++++++++++++++++------------- 1 file changed, 55 insertions(+), 38 deletions(-) diff --git a/components/survey/SurveyForm.tsx b/components/survey/SurveyForm.tsx index 1c7f551..60c3ace 100644 --- a/components/survey/SurveyForm.tsx +++ b/components/survey/SurveyForm.tsx @@ -189,6 +189,21 @@ const SurveyForm: React.FC = ({ existingItem }) => { .filter((message) => !message.answer) .map((message) => message.publisherId); }; + + // const copyToClipboard = (text) => { + // navigator.clipboard.writeText(text).then( + // () => toast.success('Copied to clipboard!'), + // (err) => toast.error('Failed to copy text: ', err) + // ); + // }; + + const copyToClipboard = (text) => { + navigator.clipboard.writeText(text).then( + () => alert('Имената са копирани: ' + text), + (err) => alert('Не успяхме да копираме имената: ', err) + ); + }; + return (
< form className="bg-white dark:bg-gray-800 shadow-md rounded px-8 pt-6 pb-8 mb-4" onSubmit={handleSubmit} > @@ -221,55 +236,57 @@ const SurveyForm: React.FC = ({ existingItem }) => {
{/* show count of each answer and the total answered/unanswered messages */} {item?.answersCount?.length > 0 && ( -
- {item?.answersCount?.length > 0 && ( -
-

Отговори:

- {item.answersCount.map((answer, index) => { - const currentCount = item.messages ? item.messages.filter((message) => message.answer === answer).length : 0; - const totalCount = item.messages ? item.messages.length : 0; - const percentage = totalCount > 0 ? (currentCount / totalCount) * 100 : 0; - const ids = getIdsForAnswer(answer); - const names = getNamesByIds(ids); +
+

Отговори:

+ {item.answersCount.map((answer, index) => { + const currentCount = item.messages ? item.messages.filter((message) => message.answer === answer).length : 0; + const totalCount = item.messages ? item.messages.length : 0; + const percentage = totalCount > 0 ? (currentCount / totalCount) * 100 : 0; + const ids = getIdsForAnswer(answer); + const names = getNamesByIds(ids); - return ( -
- -
-
-
- {currentCount} ({percentage.toFixed(1)}%) -
-
-
- ); - })} -
- -
-
message.answer).length / item.messages.length) * 100 : 0}%` }}>
+ return ( +
+ +
copyToClipboard(names)} style={{ cursor: 'copy' }}> +
- {item.messages ? item.messages.filter((message) => message.answer).length : 0} + {currentCount} ({percentage.toFixed(1)}%)
-
- -
-
!message.answer).length / item.messages.length) * 100 : 0}%` }}>
-
- {item.messages ? item.messages.filter((message) => !message.answer).length : 0} -
-
+ ); + })} +
+ +
copyToClipboard(getNamesByIds(getIdsForAnswered()))} style={{ cursor: 'copy' }} + > +
message.answer).length / item.messages.length) * 100 : 0}%` }}>
+
+ {item.messages ? item.messages.filter((message) => message.answer).length : 0}
- )} +
+
+ +
copyToClipboard(getNamesByIds(getIdsForUnanswered()))}> +
!message.answer).length / item.messages.length) * 100 : 0}%` }}>
+
+ {item.messages ? item.messages.filter((message) => !message.answer).length : 0} +
+
+
)} +
{editMode && (<>