@@ -466,11 +466,14 @@ const AdminModelCardListPage: React.FC = () => {
466466 } ) }
467467 requireConfirmInput
468468 extraContent = {
469- < Tooltip title = { t ( 'adminModelCard.AlsoDeleteModelFolderTooltip' ) } >
470- < Checkbox
471- checked = { alsoDeleteFolder }
472- onChange = { ( e ) => setAlsoDeleteFolder ( e . target . checked ) }
473- >
469+ < BAIFlex align = "center" gap = "xs" >
470+ < Tooltip title = { t ( 'adminModelCard.AlsoDeleteModelFolderTooltip' ) } >
471+ < Checkbox
472+ checked = { alsoDeleteFolder }
473+ onChange = { ( e ) => setAlsoDeleteFolder ( e . target . checked ) }
474+ />
475+ </ Tooltip >
476+ < span >
474477 { t ( 'adminModelCard.AlsoDeleteModelFolder' ) }
475478 { deletingModelCard ?. vfolder && (
476479 < span style = { { marginLeft : token . marginXXS } } >
@@ -491,12 +494,21 @@ const AdminModelCardListPage: React.FC = () => {
491494 { ')' }
492495 </ span >
493496 ) }
494- </ Checkbox >
495- </ Tooltip >
497+ </ span >
498+ </ BAIFlex >
496499 }
497500 onOk = { ( ) => {
498501 if ( deletingModelCard ) {
499502 return new Promise < void > ( ( resolve , reject ) => {
503+ const vfolderId = deletingModelCard . vfolderId ;
504+ const folderName = deletingModelCard . vfolder ?. metadata . name ;
505+ const folderTrashSearch = new URLSearchParams ( {
506+ statusCategory : 'deleted' ,
507+ filter : folderName
508+ ? `name == "${ folderName } "`
509+ : `id == "${ vfolderId } "` ,
510+ } ) . toString ( ) ;
511+
500512 commitDeleteModelCard ( {
501513 variables : {
502514 id : toLocalId ( deletingModelCard . id ) ,
@@ -513,14 +525,6 @@ const AdminModelCardListPage: React.FC = () => {
513525 }
514526
515527 if ( alsoDeleteFolder ) {
516- const vfolderId = deletingModelCard . vfolderId ;
517- const folderName = deletingModelCard . vfolder ?. metadata . name ;
518- const folderTrashSearch = new URLSearchParams ( {
519- statusCategory : 'deleted' ,
520- filter : folderName
521- ? `name == "${ folderName } "`
522- : `id == "${ vfolderId } "` ,
523- } ) . toString ( ) ;
524528 upsertNotification ( {
525529 type : 'success' ,
526530 message : t ( 'adminModelCard.ModelCardAndFolderDeleted' ) ,
@@ -530,7 +534,6 @@ const AdminModelCardListPage: React.FC = () => {
530534 } ,
531535 toText : t ( 'adminModelCard.GoToTrash' ) ,
532536 open : true ,
533- duration : 4 ,
534537 extraData : null ,
535538 } ) ;
536539 } else {
@@ -560,6 +563,7 @@ const AdminModelCardListPage: React.FC = () => {
560563 />
561564 < BAIDeleteConfirmModal
562565 open = { isBulkDeleteOpen }
566+ confirmLoading = { isBulkDeleteInFlight }
563567 items = { selectedModelCards . map ( ( mc ) => ( {
564568 key : mc . id ,
565569 label : mc . name ,
@@ -569,14 +573,15 @@ const AdminModelCardListPage: React.FC = () => {
569573 count : selectedModelCards . length ,
570574 } ) }
571575 extraContent = {
572- < Tooltip title = { t ( 'adminModelCard.AlsoDeleteModelFolderTooltip' ) } >
573- < Checkbox
574- checked = { alsoDeleteFoldersBulk }
575- onChange = { ( e ) => setAlsoDeleteFoldersBulk ( e . target . checked ) }
576- >
577- { t ( 'adminModelCard.AlsoDeleteModelFolders' ) }
578- </ Checkbox >
579- </ Tooltip >
576+ < BAIFlex align = "center" gap = "xs" >
577+ < Tooltip title = { t ( 'adminModelCard.AlsoDeleteModelFolderTooltip' ) } >
578+ < Checkbox
579+ checked = { alsoDeleteFoldersBulk }
580+ onChange = { ( e ) => setAlsoDeleteFoldersBulk ( e . target . checked ) }
581+ />
582+ </ Tooltip >
583+ < span > { t ( 'adminModelCard.AlsoDeleteModelFolders' ) } </ span >
584+ </ BAIFlex >
580585 }
581586 onOk = { ( ) => {
582587 const ids = selectedModelCards . map ( ( mc ) => toLocalId ( mc . id ) ) ;
@@ -611,12 +616,42 @@ const AdminModelCardListPage: React.FC = () => {
611616 failedIds . has ( toLocalId ( mc . id ) ) ,
612617 ) ,
613618 ) ;
614- message . warning (
615- t ( 'adminModelCard.BulkDeletePartiallyCompleted' , {
619+ upsertNotification ( {
620+ type : 'warning' ,
621+ message : t ( 'adminModelCard.BulkDeletePartiallyCompleted' , {
616622 successCount : successes . length ,
617623 failureCount : failed . length ,
618624 } ) ,
619- ) ;
625+ description : (
626+ < BAIFlex direction = "column" gap = "xs" >
627+ { failed . map ( ( f ) => {
628+ const cardName =
629+ selectedModelCards . find (
630+ ( mc ) => toLocalId ( mc . id ) === f . cardId ,
631+ ) ?. name ?? f . cardId ;
632+ return (
633+ < div key = { f . cardId } >
634+ < Typography . Text strong >
635+ { cardName }
636+ </ Typography . Text >
637+ < Typography . Text type = "secondary" >
638+ { ' — ' }
639+ </ Typography . Text >
640+ < Typography . Text
641+ type = "danger"
642+ style = { { fontSize : token . fontSizeSM } }
643+ >
644+ { f . message }
645+ </ Typography . Text >
646+ </ div >
647+ ) ;
648+ } ) }
649+ </ BAIFlex >
650+ ) ,
651+ open : true ,
652+ duration : 0 ,
653+ extraData : null ,
654+ } ) ;
620655 } else if ( alsoDeleteFoldersBulk ) {
621656 upsertNotification ( {
622657 type : 'success' ,
@@ -632,7 +667,6 @@ const AdminModelCardListPage: React.FC = () => {
632667 } ,
633668 toText : t ( 'adminModelCard.GoToTrash' ) ,
634669 open : true ,
635- duration : 4 ,
636670 extraData : null ,
637671 } ) ;
638672 setSelectedModelCards ( [ ] ) ;
0 commit comments