{% extends "base.html" %}
{% block content %}
CUCP |
rrc_setup |
initial_ctxt |
x2ap_sgNBadd |
s1ap_ho |
x2ap_ho |
|
Attempts |
Success |
Failure |
Timeout |
Attempts |
Success |
Failure |
Timeout |
Attempts |
Success |
Failure |
Timeout |
Attempts |
Success |
Failure |
Timeout |
Attempts |
Success |
Failure |
Timeout |
rrc_setup
Attempts |
Success |
Failure |
Timeout |
initial_ctxt
Attempts |
Success |
Failure |
Timeout |
x2apsgNB
Attempts |
Success |
Failure |
Timeout |
s1ap_ho
Attempts |
Success |
Failure |
Timeout |
x2ap_ho
Attempts |
Success |
Failure |
Timeout |
{% endblock content %}
{% block js %}
$(document).ready(function () {
var jsonData = {{ cumulative_stats_list|safe }};
var table = $('#myTable').DataTable({
"data": jsonData,
scrollX: true,
"columns": [
{"data": "CUCP"},
{"data": "rrc_setup_Attempts.Count"},
{"data": "rrc_setup_Success.Count"},
{"data": "rrc_setup_Failure.Count"},
{"data": "rrc_setup_Timeout.Count"},
{"data": "initial_ctxt_Attempts.Count"},
{"data": "initial_ctxt_Success.Count"},
{"data": "initial_ctxt_Failure.Count"},
{"data": "initial_ctxt_Timeout.Count"},
{"data": "x2ap_sgNBadd_Attempts.Count"},
{"data": "x2ap_sgNBadd_Success.Count"},
{"data": "x2ap_sgNBadd_Failure.Count"},
{"data": "x2ap_sgNBadd_Timeout.Count"},
{"data": "s1ap_ho_Attempts.Count"},
{"data": "s1ap_ho_Success.Count"},
{"data": "s1ap_ho_Failure.Count"},
{"data": "s1ap_ho_Timeout.Count"},
{"data": "x2ap_ho_Attempts.Count"},
{"data": "x2ap_ho_Success.Count"},
{"data": "x2ap_ho_Failure.Count"},
{"data": "x2ap_ho_Timeout.Count"},
],
"createdRow": function (row, data, dataIndex) {
$(row).addClass('crnti-row');
}
});
$('#collapsibleTables').hide();
$('#myTable tbody').on('click', 'tr.crnti-row', function () {
console.log('Row clicked');
var tr = $(this);
var row = table.row(tr);
var rowData = row.data();
console.log('Row Data:', rowData); // Check the structure of rowData
// Clear existing content
$('.collapsible-table tbody').empty();
var categoryToColumnNumber = {
'Attempts': 0,
'Success': 1,
'Failure': 2,
'Timeout': 3
};
// Iterate over each type (Attempts, Success, Failure, Timeout)
var categories = ['Attempts', 'Success', 'Failure', 'Timeout'];
for (var i = 0; i < categories.length; i++) {
var category=categories[i]; for (var key in rowData) {
if(rowData.hasOwnProperty(key) && key.endsWith('_' + category)) {
var categoryName=key.replace('_' + category, '' );
var columnNumber; if (category==='Attempts' ) { columnNumber=0;
} else if (category==='Success' ) { columnNumber=1; }
else if (category==='Failure' ) { columnNumber=2; }
else if (category==='Timeout' ) { columnNumber=3; }
addCRNTIRows(categoryName, category, rowData[key].CRNTI, category); updateTableCaption(categoryName, rowData.CUCP); }
} }
// Show the collapsible table
var collapsibleTables=$('#collapsibleTables');
var visibleTables=collapsibleTables.find('.collapsible-table:visible');
if (visibleTables.length===0) {
collapsibleTables.show();
} else {
collapsibleTables.hide();
} }); // Function to add CRNTI rows with links to a table
function addCRNTIRows(categoryName, category, crntiObj, categoryHeader) {
var tableId='#' +categoryName.toLowerCase();
if (crntiObj && crntiObj !==undefined && crntiObj.length> 0) {
var tbody = $(tableId).find('tbody'); // Get the existing tbody for the category
if (!tbody.length) {
// If tbody doesn't exist, create a new one
tbody = $('');
$(tableId).append(tbody);
}
// Check if the first row (header row) exists, if not, create it
var headerRow = tbody.find('tr:first');
if (!headerRow.length) {
headerRow = $('
');
tbody.append(headerRow);
// Use existing static headers directly
$(tableId + ' thead th').each(function () {
var columnHeader = $(this).text().trim();
headerRow.append('' +
columnHeader + ' | ');
});
}
// Find the corresponding th element in the header row
var categoryCell = headerRow.find('th:contains(' + categoryHeader + ')');
// Iterate over each CRNTI in the crntiObj array
crntiObj.forEach(function (crnti, index) {
if (index > 0) {
// Add a separator if not the first CRNTI
categoryCell.append('; ');
}
// Split the CRNTI into two parts
var crntiParts = crnti.split('-');
var recordId = crntiParts[0];
var displayPart = crntiParts.slice(1).join('-')
// Create a link with data-identifier-id attribute
var crntiLink = $('', {
href: '/drawranflow/display-streaming-table/5G-NSA/draw-sequence/' + recordId + '/',
'data-identifier-id': recordId,
text: displayPart,
click: function (event) {
event.preventDefault(); // Prevent default link behavior
var mainId = $(this).attr('data-identifier-id');
console.log(mainId);
var url = '/drawranflow/display-streaming-table/5G-NSA/draw-sequence/' + mainId + '/';
window.location.href = url;
}
});
// Append the link to the categoryCell
categoryCell.append(crntiLink);
// Add separator if not the last CRNTI
if (index < crntiObj.length - 1) { categoryCell.append('; ');
}
});
}
}
});
// Function to update the caption of the child table
function updateTableCaption(tableId, cucpValue) {
var tablehead = ' #' + tableId.toLowerCase(); console.log("----tableId",tableId); $(tablehead + 'Caption'
).text(tableId + ' - ' + cucpValue); } {% endblock %}