@@ -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 } ,
@@ -1483,11 +1485,54 @@ function handleUrlPartButton() {
1483
1485
1484
1486
function handleExcludeIndividualUrlClick ( ) {
1485
1487
$ ( "body" ) . on ( "click" , ".exclude_individual_url" , function ( ) {
1486
- postExcludePatterns (
1487
- ( match_pattern = $ ( this ) . attr ( "value" ) ) ,
1488
- ( match_pattern_type = 1 ) ,
1489
- true
1490
- ) ;
1488
+ const url = $ ( this ) . attr ( "value" ) ;
1489
+ // "check" for excluded, "close" for not excluded
1490
+ const isExcluded = $ ( this ) . children ( "i" ) . text ( ) === "check" ;
1491
+ const row = $ ( this ) . closest ( "tr" ) ;
1492
+ const table = $ ( "#delta_urls_table" ) . DataTable ( ) ;
1493
+ const rowData = table . row ( row ) . data ( ) ;
1494
+ const isAffectedByMultiPattern = rowData . exclude_pattern_type === MULTI_URL_PATTERN ;
1495
+ const patternId = rowData . include_pattern_id ;
1496
+
1497
+ if ( isAffectedByMultiPattern ) {
1498
+ // For URLs affected by multi-URL exclude patterns:
1499
+ // - If excluded: Create individual include pattern to override
1500
+ // - If not excluded: Delete the override include pattern
1501
+ if ( isExcluded ) {
1502
+ postIncludePatterns ( ( match_pattern = url ) , ( match_pattern_type = 1 ) ) ;
1503
+ } else {
1504
+ deletePatternWithoutPrompt ( `/api/include-patterns/${ patternId } /` ) ;
1505
+ }
1506
+ } else {
1507
+ // For URLs not affected by multi-URL patterns:
1508
+ // Toggle individual exclude pattern
1509
+ postExcludePatterns (
1510
+ ( match_pattern = url ) ,
1511
+ ( match_pattern_type = 1 ) ,
1512
+ true
1513
+ ) ;
1514
+ }
1515
+ } ) ;
1516
+ }
1517
+
1518
+ function deletePatternWithoutPrompt ( url ) {
1519
+ $ . ajax ( {
1520
+ url : url ,
1521
+ type : "DELETE" ,
1522
+ data : {
1523
+ csrfmiddlewaretoken : csrftoken ,
1524
+ } ,
1525
+ headers : {
1526
+ "X-CSRFToken" : csrftoken ,
1527
+ } ,
1528
+ success : function ( data ) {
1529
+ $ ( "#delta_urls_table" ) . DataTable ( ) . ajax . reload ( null , false ) ;
1530
+ $ ( "#exclude_patterns_table" ) . DataTable ( ) . ajax . reload ( null , false ) ;
1531
+ $ ( "#include_patterns_table" ) . DataTable ( ) . ajax . reload ( null , false ) ;
1532
+ $ ( "#title_patterns_table" ) . DataTable ( ) . ajax . reload ( null , false ) ;
1533
+ $ ( "#document_type_patterns_table" ) . DataTable ( ) . ajax . reload ( null , false ) ;
1534
+ $ ( "#division_patterns_table" ) . DataTable ( ) . ajax . reload ( null , false ) ;
1535
+ } ,
1491
1536
} ) ;
1492
1537
}
1493
1538
0 commit comments