@@ -1510,14 +1510,25 @@ <h6>Response</h6>
1510
1510
var model_count = j + 1 ;
1511
1511
var model_heading_name = "answer_" + count + "_model_" + model_count + "_heading" ;
1512
1512
var model_collapse_name = "answer_" + count + "_model_" + model_count + "_collapse" ;
1513
+
1514
+
1513
1515
output_content += '<div class="accordion-item"><h2 class="accordion-header" id="' + model_heading_name + '">' ;
1514
1516
output_content += '<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#' + model_collapse_name + '" aria-expanded="false" aria-controls="' + model_collapse_name + '">' ;
1515
1517
output_content += 'Explanation #' + model_count ;
1516
1518
output_content += '</button></h2>' ;
1517
1519
output_content += '<div id="' + model_collapse_name + '" class="accordion-collapse collapse" aria-labelledby="' + model_heading_name + '" style="">' ;
1518
- //for (var attribute in models[j]['Residuals']) {
1520
+ output_content += '<div id="' + model_collapse_name + '_simplified">' ;
1521
+ output_content += '</div>' ;
1522
+ //for (var attribute in models[j]['Residuals']) {
1519
1523
// attributes_output.push(describe_constraint(models[j]['Residuals'][attribute]));
1520
1524
//}
1525
+
1526
+ output_content += '<div id="' + model_collapse_name + '_detail_header" class="accordian-item"><h3 class="accordian-header">' ;
1527
+ output_content += '<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#' + model_collapse_name + '_detail_content" aria-expanded="false" aria-controls="' + model_collapse_name + '_detail_content">' ;
1528
+ output_content += 'Details' ;
1529
+ output_content += '</button></h3>' ;
1530
+ output_content += '<div id="' + model_collapse_name + '_detail_content" class="accordian-collapse collapse aria-labelledby="' + model_collapse_name + '_detail_header">' ;
1531
+
1521
1532
var constraints_output = describe_constraints_new ( models [ j ] . Residuals , models [ j ] . Terms ) ;
1522
1533
1523
1534
@@ -1561,13 +1572,55 @@ <h6>Response</h6>
1561
1572
//output_content += getNodesFromModel(models[j].Raw);
1562
1573
// output_content += convertModelToParagraphs(models[j].Raw);
1563
1574
output_content += '</div></div>' ;
1575
+ output_content += '</div></div>' ;
1564
1576
1565
1577
}
1566
1578
output_content += '</div></div></div>' ;
1567
1579
}
1568
1580
output_content += '</div>' ;
1569
1581
answer_element . innerHTML = output_content ;
1570
1582
1583
+ // Now we summarize them
1584
+ for ( var a = 0 ; a < parsed_test_response [ 'Answers' ] . length ; a ++ ) {
1585
+ for ( var e = 0 ; e < parsed_test_response [ 'Answers' ] [ a ] [ 'Models' ] . length ; e ++ ) {
1586
+ var target_explanation = document . getElementById ( "answer_" + ( a + 1 ) + "_model_" + ( e + 1 ) + "_collapse" ) ;
1587
+ var target_summary = document . getElementById ( "answer_" + ( a + 1 ) + "_model_" + ( e + 1 ) + "_collapse_simplified" ) ;
1588
+ var detail_header_name = "answer_" + ( a + 1 ) + "_model_" + ( e + 1 ) + "_collapse_detail_header" ;
1589
+ var detail_content_name = "answer_" + ( a + 1 ) + "_model_" + ( e + 1 ) + "_collapse_detail_content" ;
1590
+ var text_explanation = get_text_of_explanation ( target_explanation ) ;
1591
+ var simplify_request = new XMLHttpRequest ( ) ;
1592
+ var warning_text = '<div class="alert alert-warning d-flex align-items-center alert-dismissible fade show" role="alert" id="answer_"' + ( a + 1 ) + "_model_" + ( e + 1 ) + '_collapse_simplified_warning">' ;
1593
+ warning_text += '<i class="bi bi-exclamation-triangle-fill" aria-label="Warning:"></i>' ;
1594
+ warning_text += '<div>The following summarization was automatically generated, and may not be accurate. The details below show the actual reasoning.<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button></div>'
1595
+ warning_text += '</div>' ;
1596
+ simplify_request . onload = function ( ) {
1597
+ if ( this . responseText != '""' ) {
1598
+ target_summary . innerHTML = warning_text + "Summary: " + this . responseText ;
1599
+ } else {
1600
+ // There was no answer, so there is no summary. The contents of the details should be moved to the explanation part,
1601
+ // and the details parts removed.
1602
+
1603
+ var detail_header_target = document . getElementById ( detail_header_name ) ;
1604
+ var detail_content_target = document . getElementById ( detail_content_name ) ;
1605
+
1606
+ // Get the details content innerHTML
1607
+ var explanation = detail_content_target . innerHTML ;
1608
+ // Set it to the value of the target.
1609
+ target_summary . innerHTML = explanation ;
1610
+ // remove the header and the content elements.
1611
+ detail_header_target . remove ( ) ;
1612
+ detail_content_target . remove ( ) ;
1613
+ }
1614
+ }
1615
+ simplify_request . open ( "POST" , "{% url 'simplify' %}" ) ;
1616
+ simplify_request . setRequestHeader ( "Content-Type" , "application/json" ) ;
1617
+ target_summary . innerHTML = "Getting AI Summary..." ;
1618
+ console . log ( "Sending simplify request" ) ;
1619
+ simplify_request . setRequestHeader ( 'X-CSRFToken' , csrftoken ) ;
1620
+ simplify_request . send ( JSON . stringify ( { "explanation" : text_explanation } ) ) ;
1621
+ }
1622
+ }
1623
+
1571
1624
$ ( '#nav-answers-tab' ) . tab ( 'show' ) ;
1572
1625
draw_facts ( ) ; // So that new relevance information will be displayed in the interface.
1573
1626
} else {
@@ -1588,6 +1641,19 @@ <h6>Response</h6>
1588
1641
testrun_request . setRequestHeader ( 'X-CSRFToken' , csrftoken ) ;
1589
1642
testrun_request . send ( JSON . stringify ( new_fact_data ) ) ;
1590
1643
}
1644
+
1645
+ function get_text_of_explanation ( element ) {
1646
+ var output = ""
1647
+ if ( element . hasChildNodes ( ) ) {
1648
+ for ( var c = 0 ; c < element . childNodes . length ; c ++ ) {
1649
+ output += get_text_of_explanation ( element . childNodes [ c ] )
1650
+ }
1651
+ } else {
1652
+ output += "\n" + element . data
1653
+ }
1654
+ return output ;
1655
+ }
1656
+
1591
1657
var view_form_element = document . getElementById ( 'viewform' ) ;
1592
1658
function toggle_view_hidden ( input ) {
1593
1659
index = hidden_by_view . indexOf ( input ) ;
0 commit comments