@@ -321,6 +321,10 @@ export const Donations = () => {
321321
322322 const onPressCSVButton = ( ) => {
323323 let headers , data ;
324+ const selectedDonations = allDonations . filter ( ( donation ) => selectedRowIds . includes ( donation . id ) ) ;
325+
326+ const donationsToExport = selectedRowIds . length > 0 ? selectedDonations : allDonations ;
327+
324328 if ( freq !== "yearly" && freq !== "monthly" ) {
325329 headers = [
326330 "ID" ,
@@ -332,7 +336,7 @@ export const Donations = () => {
332336 "Total"
333337 ] ;
334338
335- data = allDonations . map ( ( donation ) => ( {
339+ data = donationsToExport . map ( ( donation ) => ( {
336340 "ID" : donation . id ,
337341 "Date" : donation . date ,
338342 "Donor" : donation . donor ,
@@ -350,23 +354,28 @@ export const Donations = () => {
350354 "Total Weight (lb)" ,
351355 "Total Value ($)"
352356 ] ;
353- data = allDonations . map ( ( donation ) => ( {
357+ data = donationsToExport . map ( ( donation ) => ( {
354358 "Date" : donation . monthYear ,
355359 "Donor" : donation . donor ,
356360 "Category" : donation . category ,
357361 "Total Weight (lb)" : donation . totalWeight ,
358362 "Total Value ($)" : donation . totalValue ,
359363 } ) ) ;
360364 }
361- const now = new Date ( ) ;
362- const date = now . toLocaleDateString ( ) ;
363- const time = now . toLocaleTimeString ( ) ;
364- const success = "Donation Data " + date + " " + time ;
365365
366- downloadCSV ( headers , data , `clients.csv` ) ;
366+ const now = new Date ( ) ;
367+ const dateStr = now . toLocaleDateString ( ) . replace ( / \/ / g, '-' ) ;
368+ const timeStr = now . toLocaleTimeString ( ) . replace ( / : / g, '-' ) ;
369+
370+ // Create descriptive filename
371+ const freqStr = freq ? `_${ freq } ` : '' ;
372+ const donorStr = donor ? `_${ donor } ` : '' ;
373+ const filename = `donations${ freqStr } ${ donorStr } _${ dateStr } _${ timeStr } .csv` ;
374+
375+ downloadCSV ( headers , data , filename ) ;
367376 toast ( {
368377 title : 'Successfully Exported' ,
369- description : success ,
378+ description : `Donation data exported to ${ filename } ` ,
370379 status : 'success' ,
371380 duration : 3000 ,
372381 isClosable : true ,
@@ -416,11 +425,18 @@ export const Donations = () => {
416425 backend . get ( `/lastUpdated/donations` ) ,
417426 backend . get ( `/donations/donors` )
418427 ] ) ;
428+
429+ if ( ! donationsResponse . data [ 0 ] . id ) {
430+ donationsResponse . data = donationsResponse . data . map ( ( donation : any , index : number ) => ( {
431+ ...donation ,
432+ id : index + 1
433+ } ) ) ;
434+ }
419435 setValueSum ( valuesResponse . data [ 0 ] ?. sum || 0 ) ;
420436 setWeightSum ( weightResponse . data [ 0 ] ?. sum || 0 ) ;
421437 setAllDonations ( donationsResponse . data ) ;
422438 setDonors ( donorResponse . data . map ( ( donor : { name : string } ) => donor . name ) ) ;
423-
439+
424440 const date = new Date ( lastUpdatedResponse . data [ 0 ] ?. lastUpdatedAt ) ;
425441 setLastUpdated ( date . toLocaleString ( ) ) ;
426442
0 commit comments