@@ -259,6 +259,8 @@ function initializeDataTable() {
259
259
getDocumentTypeColumn ( ) ,
260
260
getDivisionColumn ( ) ,
261
261
{ data : "id" , visible : false , searchable : false } ,
262
+ { data : "exclude_pattern_type" , visible : false , searchable : false } ,
263
+ { data : "include_pattern_id" , visible : false , searchable : false } ,
262
264
{ data : "generated_title_id" , visible : false , searchable : false } ,
263
265
{ data : "match_pattern_type" , visible : false , searchable : false } ,
264
266
{ data : "delta_urls_count" , visible : false , searchable : false } ,
@@ -1456,11 +1458,54 @@ function handleUrlPartButton() {
1456
1458
1457
1459
function handleExcludeIndividualUrlClick ( ) {
1458
1460
$ ( "body" ) . on ( "click" , ".exclude_individual_url" , function ( ) {
1459
- postExcludePatterns (
1460
- ( match_pattern = $ ( this ) . attr ( "value" ) ) ,
1461
- ( match_pattern_type = 1 ) ,
1462
- true
1463
- ) ;
1461
+ const url = $ ( this ) . attr ( "value" ) ;
1462
+ // "check" for excluded, "close" for not excluded
1463
+ const isExcluded = $ ( this ) . children ( "i" ) . text ( ) === "check" ;
1464
+ const row = $ ( this ) . closest ( "tr" ) ;
1465
+ const table = $ ( "#delta_urls_table" ) . DataTable ( ) ;
1466
+ const rowData = table . row ( row ) . data ( ) ;
1467
+ const isAffectedByMultiPattern = rowData . exclude_pattern_type === MULTI_URL_PATTERN ;
1468
+ const patternId = rowData . include_pattern_id ;
1469
+
1470
+ if ( isAffectedByMultiPattern ) {
1471
+ // For URLs affected by multi-URL exclude patterns:
1472
+ // - If excluded: Create individual include pattern to override
1473
+ // - If not excluded: Delete the override include pattern
1474
+ if ( isExcluded ) {
1475
+ postIncludePatterns ( ( match_pattern = url ) , ( match_pattern_type = 1 ) ) ;
1476
+ } else {
1477
+ deletePatternWithoutPrompt ( `/api/include-patterns/${ patternId } /` ) ;
1478
+ }
1479
+ } else {
1480
+ // For URLs not affected by multi-URL patterns:
1481
+ // Toggle individual exclude pattern
1482
+ postExcludePatterns (
1483
+ ( match_pattern = url ) ,
1484
+ ( match_pattern_type = 1 ) ,
1485
+ true
1486
+ ) ;
1487
+ }
1488
+ } ) ;
1489
+ }
1490
+
1491
+ function deletePatternWithoutPrompt ( url ) {
1492
+ $ . ajax ( {
1493
+ url : url ,
1494
+ type : "DELETE" ,
1495
+ data : {
1496
+ csrfmiddlewaretoken : csrftoken ,
1497
+ } ,
1498
+ headers : {
1499
+ "X-CSRFToken" : csrftoken ,
1500
+ } ,
1501
+ success : function ( data ) {
1502
+ $ ( "#delta_urls_table" ) . DataTable ( ) . ajax . reload ( null , false ) ;
1503
+ $ ( "#exclude_patterns_table" ) . DataTable ( ) . ajax . reload ( null , false ) ;
1504
+ $ ( "#include_patterns_table" ) . DataTable ( ) . ajax . reload ( null , false ) ;
1505
+ $ ( "#title_patterns_table" ) . DataTable ( ) . ajax . reload ( null , false ) ;
1506
+ $ ( "#document_type_patterns_table" ) . DataTable ( ) . ajax . reload ( null , false ) ;
1507
+ $ ( "#division_patterns_table" ) . DataTable ( ) . ajax . reload ( null , false ) ;
1508
+ } ,
1464
1509
} ) ;
1465
1510
}
1466
1511
0 commit comments