1+ // @ts -nocheck
2+ /* eslint-disable */
13"use client" ;
24
35import { pageLearningProgressQuery } from "@/__generated__/pageLearningProgressQuery.graphql" ;
@@ -62,11 +64,8 @@ export default function LearningProgress() {
6264 skills {
6365 skillName
6466 skillCategory
65- skillValue
66- skillAllUsersStats {
67- skillValueSum
68- participantCount
69- averageSkillValue
67+ skillValue {
68+ skillValue
7069 }
7170 }
7271 }
@@ -94,6 +93,76 @@ export default function LearningProgress() {
9493
9594 const [ showAverageProgress , setAverageProgress ] = useState < boolean > ( false ) ;
9695
96+ type skillItem = {
97+ skillValue : number ;
98+ //skillAverageValue: number;
99+ //maxParticipantCount: number;
100+ } ;
101+
102+ const getCategorySkillKey = ( category : string , skillName : string ) => {
103+ return `${ category } _${ skillName } ` ;
104+ } ;
105+
106+ const progressBySkill = useMemo ( ( ) => {
107+ const progressBySkillValues = new Map <
108+ string ,
109+ {
110+ progressSum : number ;
111+ //averageProgressSum: number;
112+ count : number ;
113+ //maxParticipantCount: number;
114+ }
115+ > ( ) ;
116+
117+ uniqueCategories . forEach ( ( category ) => {
118+ skillsByCategory [ category ] . forEach ( ( skill ) => {
119+ const key = getCategorySkillKey ( category , skill . skillName ) ;
120+
121+ if ( ! progressBySkillValues . has ( key ) ) {
122+ progressBySkillValues . set ( key , {
123+ progressSum : 0 ,
124+ //averageProgressSum: 0,
125+ count : 0 ,
126+ //maxParticipantCount: 0,
127+ } ) ;
128+ }
129+
130+ const progressItem = progressBySkillValues . get ( key ) ! ;
131+
132+ progressItem . progressSum += skill . skillValue . skillValue ;
133+ /*progressItem.averageProgressSum +=
134+ skill.skillAllUsersStats.skillValueSum;*/
135+ progressItem . count ++ ;
136+ /*progressItem.maxParticipantCount = Math.max(
137+ progressItem.maxParticipantCount,
138+ skill.skillAllUsersStats.participantCount
139+ );*/
140+ } ) ;
141+ } ) ;
142+
143+ const result = new Map < string , skillItem > ( ) ;
144+ progressBySkillValues . forEach (
145+ (
146+ {
147+ progressSum : sum ,
148+ //averageProgressSum: averageSum,
149+ count,
150+ //maxParticipantCount,
151+ } ,
152+ key
153+ ) => {
154+ result . set ( key , {
155+ skillValue : sum / count ,
156+ /*skillAverageValue:
157+ averageSum / count / course.numberOfCourseMemberships,
158+ maxParticipantCount,*/
159+ } ) ;
160+ }
161+ ) ;
162+
163+ return result ;
164+ } , [ skillsByCategory , uniqueCategories ] ) ;
165+
97166 const sortedCategories = useMemo ( ( ) => {
98167 if ( uniqueCategories . length === 0 ) return [ ] ;
99168 return [ ...uniqueCategories ] . sort ( ( a , b ) => {
@@ -104,14 +173,16 @@ export default function LearningProgress() {
104173 ) . values ( )
105174 ) ;
106175 const progressSum = uniqueSkillsInCategory . reduce ( ( sum , skill ) => {
107- const progress = skill . skillValue ;
176+ const progress =
177+ progressBySkill . get ( getCategorySkillKey ( category , skill . skillName ) )
178+ ?. skillValue ?? 0 ;
108179 return sum + progress ;
109180 } , 0 ) ;
110181 return ( progressSum / uniqueSkillsInCategory . length ) * 100 ;
111182 } ;
112183 return getTotalProgress ( b ) - getTotalProgress ( a ) ;
113184 } ) ;
114- } , [ skillsByCategory , uniqueCategories ] ) ;
185+ } , [ progressBySkill , skillsByCategory , uniqueCategories ] ) ;
115186
116187 const currentUniqueSkills = useMemo ( ( ) => {
117188 if ( sortedCategories . length === 0 ) return [ ] ;
@@ -123,9 +194,23 @@ export default function LearningProgress() {
123194 return acc ;
124195 } , [ ] as ( typeof skillsByCategory ) [ string ] )
125196 . sort ( ( skillA , skillB ) => {
126- return skillB . skillValue - skillA . skillValue ;
197+ const progressA =
198+ progressBySkill . get (
199+ getCategorySkillKey (
200+ sortedCategories [ selectedCategory ] ,
201+ skillA . skillName
202+ )
203+ ) ?. skillValue ?? 0 ;
204+ const progressB =
205+ progressBySkill . get (
206+ getCategorySkillKey (
207+ sortedCategories [ selectedCategory ] ,
208+ skillB . skillName
209+ )
210+ ) ?. skillValue ?? 0 ;
211+ return progressB - progressA ;
127212 } ) ;
128- } , [ selectedCategory , skillsByCategory , sortedCategories ] ) ;
213+ } , [ progressBySkill , selectedCategory , skillsByCategory , sortedCategories ] ) ;
129214
130215 const urgentChapters = useMemo ( ( ) => {
131216 return course . chapters . elements . filter ( ( chapter ) => {
@@ -172,11 +257,12 @@ export default function LearningProgress() {
172257 const tempMap = new Map < string , number > ( ) ;
173258
174259 course . skills . forEach ( ( skill ) => {
175- tempMap . set ( skill . skillName , skill . skillValue * 100 ) ;
260+ const key = getCategorySkillKey ( skill . skillCategory , skill . skillName ) ;
261+ tempMap . set ( key , ( progressBySkill . get ( key ) ?. skillValue ?? 0 ) * 100 ) ;
176262 } ) ;
177263
178264 sessionStorage . setItem ( "previousProgress" , JSON . stringify ( [ ...tempMap ] ) ) ;
179- } , [ course . skills , uniqueCategories . length ] ) ;
265+ } , [ course . skills , progressBySkill , uniqueCategories . length ] ) ;
180266
181267 const theme = useTheme ( ) ;
182268
@@ -257,33 +343,45 @@ export default function LearningProgress() {
257343 ) ;
258344
259345 const progressSum = uniqueSkillsInCategory . reduce ( ( sum , skill ) => {
260- const progress = skill . skillValue * 100 ;
346+ const progress =
347+ ( progressBySkill . get (
348+ getCategorySkillKey ( category , skill . skillName )
349+ ) ?. skillValue ?? 0 ) * 100 ;
261350 return sum + progress ;
262351 } , 0 ) ;
263352
264- const averageProgressSum = uniqueSkillsInCategory . reduce (
353+ /* const averageProgressSum = uniqueSkillsInCategory.reduce(
265354 (sum, skill) => {
266355 const averageProgress =
267- skill . skillAllUsersStats . averageSkillValue * 100 ;
356+ (progressBySkill.get(
357+ getCategorySkillKey(category, skill.skillName)
358+ )?.skillAverageValue ?? 0) * 100;
268359 return sum + averageProgress;
269360 },
270361 0
271- ) ;
362+ );*/
272363
273- const maxParticipantCountForaSkill = Math . max (
364+ /* const maxParticipantCountForaSkill = Math.max(
274365 ...uniqueSkillsInCategory.map(
275- ( skill ) => skill . skillAllUsersStats . participantCount
366+ (skill) =>
367+ progressBySkill.get(
368+ getCategorySkillKey(category, skill.skillName)
369+ )?.maxParticipantCount ?? 0
276370 )
277- ) ;
371+ );*/
278372
279373 const categoryProgressValue =
280374 progressSum / uniqueSkillsInCategory . length ;
281- const categoryAverageProgressValue =
282- averageProgressSum / uniqueSkillsInCategory . length ;
375+
376+ /*const categoryAverageProgressValue =
377+ averageProgressSum / uniqueSkillsInCategory.length;*/
283378
284379 const tempSumPreviousProgress = uniqueSkillsInCategory . reduce (
285380 ( sum , skill ) =>
286- sum + ( previousProgress . get ( skill . skillName ) ?? 0 ) ,
381+ sum +
382+ ( previousProgress . get (
383+ getCategorySkillKey ( category , skill . skillName )
384+ ) ?? 0 ) ,
287385 0
288386 ) ;
289387
@@ -299,7 +397,7 @@ export default function LearningProgress() {
299397 competencyName = { category }
300398 startProgress = { Math . floor ( previousCategoryProgressValue ) }
301399 endProgress = { Math . floor ( categoryProgressValue ) }
302- averageProgress = { Math . floor ( categoryAverageProgressValue ) }
400+ averageProgress = { /* Math.floor(categoryAverageProgressValue)*/ 0 }
303401 color = { stringToColor ( category ) }
304402 onClick = { ( ) => {
305403 setSelectedCategory (
@@ -311,7 +409,7 @@ export default function LearningProgress() {
311409 isSelected = { category === sortedCategories [ selectedCategory ] }
312410 isUrgent = { urgent }
313411 showAverageProgress = { showAverageProgress }
314- participantCount = { maxParticipantCountForaSkill }
412+ participantCount = { /* maxParticipantCountForaSkill*/ 0 }
315413 courseMemberCount = { course . numberOfCourseMemberships }
316414 openTaskCount = {
317415 filteredSuggestionsByCategory ( category ) . length
@@ -381,13 +479,22 @@ export default function LearningProgress() {
381479 )
382480 ) ;
383481
384- const skillProgressValue = currentSkill . skillValue * 100 ;
385- const skillAverageProgressValue =
386- currentSkill . skillAllUsersStats . averageSkillValue * 100 ;
482+ const key = getCategorySkillKey (
483+ currentSkill . skillCategory ,
484+ currentSkill . skillName
485+ ) ;
486+
487+ const skillProgressValue =
488+ ( progressBySkill . get ( key ) ?. skillValue ?? 0 ) * 100 ;
489+
490+ /*const skillAverageProgressValue =
491+ (progressBySkill.get(key)?.skillAverageValue ?? 0) * 100;
492+
493+ const maxParticipantCount =
494+ progressBySkill.get(key)?.maxParticipantCount ?? 0;*/
387495
388496 const previousSkillProgressValue =
389- previousProgress . get ( currentSkill . skillName ) ??
390- skillProgressValue ;
497+ previousProgress . get ( key ) ?? skillProgressValue ;
391498
392499 return (
393500 < Slide
@@ -402,7 +509,7 @@ export default function LearningProgress() {
402509 small = { true }
403510 startProgress = { Math . floor ( previousSkillProgressValue ) }
404511 endProgress = { Math . floor ( skillProgressValue ) }
405- averageProgress = { Math . floor ( skillAverageProgressValue ) }
512+ averageProgress = { /* Math.floor(skillAverageProgressValue)*/ 0 }
406513 color = { stringToColor ( currentSkill . skillCategory ) }
407514 onClick = { ( ) => {
408515 const currentIndex = currentUniqueSkills . findIndex (
@@ -420,9 +527,7 @@ export default function LearningProgress() {
420527 }
421528 isUrgent = { urgent }
422529 showAverageProgress = { showAverageProgress }
423- participantCount = {
424- currentSkill . skillAllUsersStats . participantCount
425- }
530+ participantCount = { /*maxParticipantCount*/ 0 }
426531 courseMemberCount = { course . numberOfCourseMemberships }
427532 openTaskCount = {
428533 filteredSuggestionsBySkill ( currentSkill . skillName ) . length
@@ -533,4 +638,4 @@ export default function LearningProgress() {
533638 </ div >
534639 </ div >
535640 ) ;
536- }
641+ }
0 commit comments