diff --git a/src/redux/reducers/Progress/MetaAnalytics.js b/src/redux/reducers/Progress/MetaAnalytics.js index aacf15051..21b6b8a7a 100644 --- a/src/redux/reducers/Progress/MetaAnalytics.js +++ b/src/redux/reducers/Progress/MetaAnalytics.js @@ -19,6 +19,21 @@ const diffAnnotationReview = (payload) => { annotation_cumulative_word_count: (value?.ann_cumulative_word_count), review_cumulative_word_count: (value?.rew_cumulative_word_count), diff_annotation_review: (value?.ann_cumulative_word_count - value?.rew_cumulative_word_count), + + annotation_cumulative_sentance_count: (value?.total_ann_sentance_count), + review_cumulative_sentance_count: (value?.total_rev_sentance_count), + diff_annotation_review_sentance_count: (value?.total_ann_sentance_count - value?.total_rev_sentance_count), + + annotation_audio_word_count: (value?.ann_audio_word_count), + review_audio_word_count: (value?.rev_audio_word_count), + diff_annotation_review_audio_word: (value?.ann_audio_word_count - value?.rev_audio_word_count), + + annotation_raw_aud_duration:(value?.ann_raw_aud_duration), + review_raw_aud_duration:(value?.rew_raw_aud_duration), + annotation_raw_aud_duration_tohour:(value?.ann_raw_aud_duration?.split(':')?.map(Number)?.[0] * 1 + value?.ann_raw_aud_duration?.split(':')?.map(Number)?.[1]/ 60 + value?.ann_raw_aud_duration?.split(':')?.map(Number)?.[2]/3600), + review_raw_aud_duration_tohour:(value?.rew_raw_aud_duration?.split(':')?.map(Number)?.[0] * 1 + value?.rew_raw_aud_duration?.split(':')?.map(Number)?.[1]/ 60 + value?.rew_raw_aud_duration?.split(':')?.map(Number)?.[2]/3600), + diff_annotation_review_raw_aud_duration_tohour:(value?.ann_raw_aud_duration?.split(':')?.map(Number)?.[0] * 1 + value?.ann_raw_aud_duration?.split(':')?.map(Number)?.[1]/ 60 + value?.ann_raw_aud_duration?.split(':')?.map(Number)?.[2]/3600 - value?.rew_raw_aud_duration?.split(':')?.map(Number)?.[0] * 1 + value?.rew_raw_aud_duration?.split(':')?.map(Number)?.[1]/ 60 + value?.rew_raw_aud_duration?.split(':')?.map(Number)?.[2]/3600), + annotation_aud_duration:(value?.ann_cumulative_aud_duration), review_aud_duration:(value?.rew_cumulative_aud_duration), annotation_aud_duration_tohour:(value?.ann_cumulative_aud_duration?.split(':')?.map(Number)?.[0] * 1 + value?.ann_cumulative_aud_duration?.split(':')?.map(Number)?.[1]/ 60 + value?.ann_cumulative_aud_duration?.split(':')?.map(Number)?.[2]/3600), diff --git a/src/redux/reducers/WorkspaceDetails/GetMetaAnalytics.js b/src/redux/reducers/WorkspaceDetails/GetMetaAnalytics.js index 937ceae24..00745d9f6 100644 --- a/src/redux/reducers/WorkspaceDetails/GetMetaAnalytics.js +++ b/src/redux/reducers/WorkspaceDetails/GetMetaAnalytics.js @@ -14,6 +14,21 @@ const diffAnnotationReview = (payload) => { annotation_cumulative_word_count: (value?.ann_cumulative_word_count), review_cumulative_word_count: (value?.rew_cumulative_word_count), diff_annotation_review: (value?.ann_cumulative_word_count - value?.rew_cumulative_word_count), + + annotation_cumulative_sentance_count: (value?.total_ann_sentance_count), + review_cumulative_sentance_count: (value?.total_rev_sentance_count), + diff_annotation_review_sentance_count: (value?.total_ann_sentance_count - value?.total_rev_sentance_count), + + annotation_audio_word_count: (value?.ann_audio_word_count), + review_audio_word_count: (value?.rev_audio_word_count), + diff_annotation_review_audio_word: (value?.ann_audio_word_count - value?.rev_audio_word_count), + + annotation_raw_aud_duration:(value?.ann_raw_aud_duration), + review_raw_aud_duration:(value?.rew_raw_aud_duration), + annotation_raw_aud_duration_tohour:(value?.ann_raw_aud_duration?.split(':')?.map(Number)?.[0] * 1 + value?.ann_raw_aud_duration?.split(':')?.map(Number)?.[1]/ 60 + value?.ann_raw_aud_duration?.split(':')?.map(Number)?.[2]/3600), + review_raw_aud_duration_tohour:(value?.rew_raw_aud_duration?.split(':')?.map(Number)?.[0] * 1 + value?.rew_raw_aud_duration?.split(':')?.map(Number)?.[1]/ 60 + value?.rew_raw_aud_duration?.split(':')?.map(Number)?.[2]/3600), + diff_annotation_review_raw_aud_duration_tohour:(value?.ann_raw_aud_duration?.split(':')?.map(Number)?.[0] * 1 + value?.ann_raw_aud_duration?.split(':')?.map(Number)?.[1]/ 60 + value?.ann_raw_aud_duration?.split(':')?.map(Number)?.[2]/3600 - value?.rew_raw_aud_duration?.split(':')?.map(Number)?.[0] * 1 + value?.rew_raw_aud_duration?.split(':')?.map(Number)?.[1]/ 60 + value?.rew_raw_aud_duration?.split(':')?.map(Number)?.[2]/3600), + annotation_aud_duration:(value?.ann_cumulative_aud_duration), review_aud_duration:(value?.rew_cumulative_aud_duration), annotation_aud_duration_tohour:(value?.ann_cumulative_aud_duration?.split(':')?.map(Number)?.[0] * 1 + value?.ann_cumulative_aud_duration?.split(':')?.map(Number)?.[1]/ 60 + value?.ann_cumulative_aud_duration?.split(':')?.map(Number)?.[2]/3600), diff --git a/src/ui/pages/container/Progress/MetaAnalytics/AudioDurationMetaAnalyticsChart.jsx b/src/ui/pages/container/Progress/MetaAnalytics/AudioDurationMetaAnalyticsChart.jsx index b40dab0ee..b82bccce8 100644 --- a/src/ui/pages/container/Progress/MetaAnalytics/AudioDurationMetaAnalyticsChart.jsx +++ b/src/ui/pages/container/Progress/MetaAnalytics/AudioDurationMetaAnalyticsChart.jsx @@ -6,7 +6,7 @@ import { useEffect, useState } from "react"; import ResponsiveChartContainer from "../../../component/common/ResponsiveChartContainer" export default function AudioDurationChart(props) { - const { analyticsData } = props; + const { analyticsData, graphCategory } = props; const classes = DatasetStyle(); const [totalAudioHours, setTotalAudioHours] = useState(); const [totalAnnotationAudioHours, setTotalAnnotationAudioHours] = useState(); @@ -14,67 +14,122 @@ export default function AudioDurationChart(props) { const [data, setData] = useState([]); useEffect(() => { - analyticsData?.sort( - (a, b) => - b.annotation_aud_duration_tohour - a.annotation_aud_duration_tohour - ); - setData(analyticsData); - let allAnnotatorAudioHours = 0; - let allReviewAudioHours = 0; - var languages; - analyticsData?.map((element, index) => { - allAnnotatorAudioHours += - element.annotation_aud_duration_tohour; - allReviewAudioHours += element.review_aud_duration_tohour; - languages = element.languages; - }); - - setTotalAnnotationAudioHours(allAnnotatorAudioHours); - setTotalReviewAudioHours(allReviewAudioHours); - setTotalAudioHours( - allAnnotatorAudioHours + allReviewAudioHours - ); + if (graphCategory=="rawAudioDuration"){ + analyticsData?.sort( + (a, b) => + b.annotation_raw_aud_duration_tohour - a.annotation_raw_aud_duration_tohour + ); + setData(analyticsData); + let allAnnotatorAudioHours = 0; + let allReviewAudioHours = 0; + var languages; + analyticsData?.map((element, index) => { + allAnnotatorAudioHours += + (element.annotation_raw_aud_duration_tohour?element.annotation_raw_aud_duration_tohour:0); + allReviewAudioHours += (element.review_raw_aud_duration_tohour?element.review_raw_aud_duration_tohour:0); + languages = element.languages; + }); + setTotalAnnotationAudioHours(allAnnotatorAudioHours); + setTotalReviewAudioHours(allReviewAudioHours); + setTotalAudioHours( + allAnnotatorAudioHours + allReviewAudioHours + ); + } + else{ + analyticsData?.sort( + (a, b) => + b.annotation_aud_duration_tohour - a.annotation_aud_duration_tohour + ); + setData(analyticsData); + let allAnnotatorAudioHours = 0; + let allReviewAudioHours = 0; + var languages; + analyticsData?.map((element, index) => { + allAnnotatorAudioHours += + element.annotation_aud_duration_tohour; + allReviewAudioHours += element.review_aud_duration_tohour; + languages = element.languages; + }); + setTotalAnnotationAudioHours(allAnnotatorAudioHours); + setTotalReviewAudioHours(allReviewAudioHours); + setTotalAudioHours( + allAnnotatorAudioHours + allReviewAudioHours + ); + } }, [analyticsData]); const CustomTooltip = ({ active, payload, label }) => { if (active && payload && payload.length) { return (
-

+ {graphCategory=='rawAudioDuration'?

{`${label}`}

{`Total hours : ${ - payload[0].payload.annotation_aud_duration_tohour + payload[0].payload.annotation_raw_aud_duration_tohour ? new Intl.NumberFormat("en").format( - payload[0].payload.annotation_aud_duration_tohour + payload[0].payload.annotation_raw_aud_duration_tohour ) : 0 }`}

- {`Total duration : ${payload[0].payload.annotation_aud_duration}`} + {`Total duration : ${payload[0].payload.annotation_raw_aud_duration}`}

{`Annotation duration : ${ - payload[0].payload.diff_annotation_review_aud_duration_tohour + payload[0].payload.diff_annotation_review_raw_aud_duration_tohour ? new Intl.NumberFormat("en").format( payload[0].payload - .diff_annotation_review_aud_duration_tohour + .diff_annotation_review_raw_aud_duration_tohour ) : 0 }`}

{`Review duration : ${ - payload[0].payload.review_aud_duration_tohour + payload[0].payload.review_raw_aud_duration_tohour ? new Intl.NumberFormat("en").format( - payload[0].payload.review_aud_duration_tohour + payload[0].payload.review_raw_aud_duration_tohour ) : 0 }`}

+

: +

+ {`${label}`} +

+ {`Total hours : ${ + payload[0].payload.annotation_aud_duration_tohour + ? new Intl.NumberFormat("en").format( + payload[0].payload.annotation_aud_duration_tohour + ) + : 0 + }`} +

+ {`Total duration : ${payload[0].payload.annotation_aud_duration}`} +

+ {`Annotation duration : ${ + payload[0].payload.diff_annotation_review_aud_duration_tohour + ? new Intl.NumberFormat("en").format( + payload[0].payload + .diff_annotation_review_aud_duration_tohour + ) + : 0 + }`} +

{`Review duration : ${ + payload[0].payload.review_aud_duration_tohour + ? new Intl.NumberFormat("en").format( + payload[0].payload.review_aud_duration_tohour + ) + : 0 + }`}

+

+

+

+ }
); } @@ -105,7 +160,7 @@ export default function AudioDurationChart(props) { padding: "16px 0", }} > - Audio Duration Dashboard + {graphCategory=="rawAudioDuration"?"Raw Audio Duration Dashboard":"Audio Duration Dashboard"} @@ -198,7 +253,7 @@ export default function AudioDurationChart(props) { /> + + )} if(analyticsData.length && (translationProjectTypes.includes(analyticsData[0].projectType) || @@ -138,6 +141,7 @@ export default function MetaAnalytics(props) { ){ return + {analyticsData[0].projectType.includes("Conversation") && } } }) diff --git a/src/ui/pages/container/Progress/MetaAnalytics/SentanceCountMetaAnalyticsChart.jsx b/src/ui/pages/container/Progress/MetaAnalytics/SentanceCountMetaAnalyticsChart.jsx new file mode 100644 index 000000000..b39a29a99 --- /dev/null +++ b/src/ui/pages/container/Progress/MetaAnalytics/SentanceCountMetaAnalyticsChart.jsx @@ -0,0 +1,221 @@ +import React from 'react'; +import { Grid, ThemeProvider, Box, Typography, Paper } from "@mui/material"; +import { + BarChart, + Bar, + XAxis, + YAxis, + Tooltip, + Legend, + Label, + } from "recharts"; + import DatasetStyle from "../../../../styles/Dataset"; + import { useEffect, useState } from "react"; + import ResponsiveChartContainer from "../../../component/common/ResponsiveChartContainer" + +export default function SentanceCountMetaAnalyticsChart(props) { + const {analyticsData} = props + const classes = DatasetStyle(); + const [totalSentanceCount, setTotalSentanceCount] = useState(); + const [totalAnnotationSentanceCount, setTotalAnnotationSentanceCount] = useState(); + const [totalReviewSentanceCount, setTotalReviewSentanceCount] = useState(); + const [data, setData] = useState([]); + + useEffect(() => { + analyticsData?.sort( + (a, b) => + b.annotation_cumulative_sentance_count - + a.annotation_cumulative_sentance_count + ); + setData(analyticsData); + let allAnnotatorCumulativeSentanceCount = 0; + let allReviewCumulativeSentanceCount = 0; + var languages; + analyticsData?.map((element, index) => { + allAnnotatorCumulativeSentanceCount += + (element.annotation_cumulative_sentance_count?element.annotation_cumulative_sentance_count:0); + allReviewCumulativeSentanceCount += (element.review_cumulative_sentance_count?element.review_cumulative_sentance_count:0); + languages = element.languages; + }); + + setTotalAnnotationSentanceCount(allAnnotatorCumulativeSentanceCount); + setTotalReviewSentanceCount(allReviewCumulativeSentanceCount); + setTotalSentanceCount( + allAnnotatorCumulativeSentanceCount + allReviewCumulativeSentanceCount + ); + }, [analyticsData]); + + + const CustomTooltip = ({ active, payload, label }) => { + if (active && payload && payload.length) { + return ( +
+

+ {`${label}`} +

+ {`Total count : ${ + payload[0].payload.annotation_cumulative_sentance_count + ? new Intl.NumberFormat("en").format( + payload[0].payload.annotation_cumulative_sentance_count + ) + : 0 + }`} +

+ {`Annotation : ${ + payload[0].payload.diff_annotation_review_sentance_count + ? new Intl.NumberFormat("en").format( + payload[0].payload.diff_annotation_review_sentance_count + ) + : 0 + }`} +

{`Review : ${ + payload[0].payload.review_cumulative_sentance_count + ? new Intl.NumberFormat("en").format( + payload[0].payload.review_cumulative_sentance_count + ) + : 0 + }`}

+

+

+

+
+ ); + } + + return null; + }; + + return ( + + + {`Sentance Count Dashboard - ${analyticsData[0].projectType}`} + + Count of Annotated and Reviewed Data + + + + + + + Sentance Count Dashboard + + + + + Total Sentance Count + + + {totalSentanceCount && + new Intl.NumberFormat("en").format(totalSentanceCount)} + + + + + Total Annotation Sentance Count + + + {totalAnnotationSentanceCount && + new Intl.NumberFormat("en").format(totalAnnotationSentanceCount)} + + + + + Total Quality/Reviewed Sentance Count + + + {totalReviewSentanceCount && + new Intl.NumberFormat("en").format(totalReviewSentanceCount)} + + + + + + + {/* */} + } + height={90} + interval={0} + position="insideLeft" + type="category" + angle={-30} + > + + + + new Intl.NumberFormat("en", { notation: "compact" }).format( + value + ) + } + > + + + {/* + + + + + + ) +} \ No newline at end of file diff --git a/src/ui/pages/container/Progress/MetaAnalytics/WordCountMetaAnalyticsChart.jsx b/src/ui/pages/container/Progress/MetaAnalytics/WordCountMetaAnalyticsChart.jsx index cbb314770..0eac5b301 100644 --- a/src/ui/pages/container/Progress/MetaAnalytics/WordCountMetaAnalyticsChart.jsx +++ b/src/ui/pages/container/Progress/MetaAnalytics/WordCountMetaAnalyticsChart.jsx @@ -14,7 +14,7 @@ import { import ResponsiveChartContainer from "../../../component/common/ResponsiveChartContainer" export default function WordCountMetaAnalyticsChart(props) { - const {analyticsData} = props + const {analyticsData,graphCategory} = props const classes = DatasetStyle(); const [totalWordCount, setTotalWordCount] = useState(); const [totalAnnotationWordCount, setTotalAnnotationWordCount] = useState(); @@ -22,27 +22,52 @@ export default function WordCountMetaAnalyticsChart(props) { const [data, setData] = useState([]); useEffect(() => { + if (graphCategory=="audioWordCount"){ analyticsData?.sort( - (a, b) => - b.annotation_cumulative_word_count - - a.annotation_cumulative_word_count - ); - setData(analyticsData); - let allAnnotatorCumulativeWordCount = 0; - let allReviewCumulativeWordCount = 0; - var languages; - analyticsData?.map((element, index) => { - allAnnotatorCumulativeWordCount += - element.annotation_cumulative_word_count; - allReviewCumulativeWordCount += element.review_cumulative_word_count; - languages = element.languages; - }); - - setTotalAnnotationWordCount(allAnnotatorCumulativeWordCount); - setTotalReviewWordCount(allReviewCumulativeWordCount); - setTotalWordCount( - allAnnotatorCumulativeWordCount + allReviewCumulativeWordCount - ); + (a, b) => + b.annotation_audio_word_count - + a.review_audio_word_count + ); + setData(analyticsData); + let allAnnotatorAudioWordCount = 0; + let allReviewAudioWordCount = 0; + var languages; + analyticsData?.map((element, index) => { + allAnnotatorAudioWordCount += + (element.annotation_audio_word_count?element.annotation_audio_word_count:0); + allReviewAudioWordCount += (element.review_audio_word_count?element.review_audio_word_count:0); + languages = element.languages; + }); + + setTotalAnnotationWordCount(allAnnotatorAudioWordCount); + setTotalReviewWordCount(allReviewAudioWordCount); + setTotalWordCount( + allAnnotatorAudioWordCount + allReviewAudioWordCount + ); + } + else{ + analyticsData?.sort( + (a, b) => + b.annotation_cumulative_word_count - + a.annotation_cumulative_word_count + ); + setData(analyticsData); + let allAnnotatorCumulativeWordCount = 0; + let allReviewCumulativeWordCount = 0; + var languages; + analyticsData?.map((element, index) => { + allAnnotatorCumulativeWordCount += + element.annotation_cumulative_word_count; + allReviewCumulativeWordCount += element.review_cumulative_word_count; + languages = element.languages; + }); + + setTotalAnnotationWordCount(allAnnotatorCumulativeWordCount); + setTotalReviewWordCount(allReviewCumulativeWordCount); + setTotalWordCount( + allAnnotatorCumulativeWordCount + allReviewCumulativeWordCount + ); + } }, [analyticsData]); @@ -52,6 +77,32 @@ export default function WordCountMetaAnalyticsChart(props) {

{`${label}`} + {graphCategory=="audioWordCount"?

+ {`Total count : ${ + payload[0].payload.annotation_audio_word_count + ? new Intl.NumberFormat("en").format( + payload[0].payload.annotation_audio_word_count + ) + : 0 + }`} +

+ {`Annotation : ${ + payload[0].payload.diff_annotation_review_audio_word + ? new Intl.NumberFormat("en").format( + payload[0].payload.diff_annotation_review_audio_word + ) + : 0 + }`} +

{`Review : ${ + payload[0].payload.review_audio_word_count + ? new Intl.NumberFormat("en").format( + payload[0].payload.review_audio_word_count + ) + : 0 + }`}

+

+

+ :

{`Total count : ${ payload[0].payload.annotation_cumulative_word_count @@ -75,8 +126,8 @@ export default function WordCountMetaAnalyticsChart(props) { ) : 0 }`}

-

-

+

+

}

); @@ -196,7 +247,7 @@ export default function WordCountMetaAnalyticsChart(props) { /> + + )} if(analyticsData.length && (translationProjectTypes.includes(analyticsData[0].projectType) || @@ -137,6 +140,7 @@ export default function MetaAnalytics(props) { ){ return + {analyticsData[0].projectType.includes("Conversation") && } } })