Spaces:
Sleeping
Sleeping
<html> | |
<head> | |
<title>Prompt Template</title> | |
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> | |
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script> | |
<!-- Include AdminLTE CSS --> | |
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/adminlte.min.css"> | |
<!-- Include DataTables CSS --> | |
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.25/css/dataTables.bootstrap4.min.css"> | |
<script src="https://cdn.datatables.net/1.10.25/js/jquery.dataTables.min.js"></script> | |
<script src="https://cdn.datatables.net/1.10.25/js/dataTables.bootstrap4.min.js"></script> | |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css" /> | |
<style> | |
.header-row { | |
display: flex; | |
justify-content: space-between; | |
align-items: center; | |
} | |
.card { | |
padding: 0; | |
margin-top: -15px; | |
margin-left: -40px; | |
} | |
.table-container { | |
width: 100%; | |
overflow-x: auto; | |
} | |
.wrapper { | |
display: flex; | |
flex-direction: column; | |
height: 100vh; | |
} | |
.content-wrapper { | |
flex: 1; | |
overflow-y: auto; | |
} | |
.content-header { | |
padding: 5px; | |
} | |
div.dataTables_wrapper div.dataTables_length select { | |
width: 60px; | |
display: inline-block; | |
} | |
th, | |
td { | |
white-space: nowrap; | |
} | |
th:nth-child(1), | |
td:nth-child(1) { | |
/* Sno column */ | |
width: 1%; | |
} | |
th:nth-child(2), | |
td:nth-child(2) { | |
/* API Name column */ | |
width: 20%; | |
} | |
th:nth-child(3), | |
td:nth-child(3) { | |
/* API Endpoint column */ | |
width: 45%; | |
} | |
th:nth-child(4), | |
td:nth-child(4) { | |
/* view column*/ | |
width: 5%; | |
} | |
th:nth-child(5), | |
td:nth-child(5) { | |
/* view column*/ | |
width: 5%; | |
} | |
th:nth-child(6), | |
td:nth-child(6) { | |
/* view column*/ | |
width: 5%; | |
} | |
.reduced-width { | |
width: 25%; | |
} | |
.viewButton { | |
size: 2px; | |
} | |
div.dataTables_wrapper div.dataTables_length select { | |
width: 60px; | |
display: inline-block; | |
} | |
</style> | |
</head> | |
<body> | |
{% include 'sidepane.html' %} | |
<div class="wrapper"> | |
<div class="main-header" style="border-bottom: none;"> | |
<!-- Content Header (Page header) --> | |
<div class="content-header"> | |
<div class="container-fluid"> | |
<div class="container mt-2"> | |
<div class="form-group left-align" id="company-select"> | |
<!-- <label for="company" class="mr-1" style="margin-left:-60px;margin-top:-11px;">Company Name | |
<span class="text-danger">*</span></label> | |
<select type="text" id="company" name="company" class="form-control " | |
style="width: 20%;margin-left:-60px;" required> | |
<option value="" selected>Select</option> | |
</select> --> | |
<h4 id="selectedCompany" style="margin-left: 300px;"></h4> | |
<!-- <div class="col-12 d-flex justify-content-end mb-2"> | |
<button class="btn btn-primary" | |
style="margin-top:-40px;margin-right: -25px;position: fixed;" id="add">Add</button> | |
</div> --> | |
</div> | |
<div class="row"> | |
<div id="message-container" style="margin-left: 150px;width:500px;"></div> | |
</div> | |
</div> | |
</div> | |
</div> | |
<section class="content" id="contentSection" style="display: none;"> | |
<div class="container-fluid"> | |
<div class="form-group"> | |
<!-- <label for="company_id">company_id</label>---> | |
<input type="hidden" id="company_id" name="company_id" class="form-control" required> | |
</div> | |
</div> | |
<!-- Main content--> | |
<section class="content"> | |
<div class="container-fluid"> | |
<div class="row"> | |
<div class="col-12"> | |
<div class="card"> | |
<div class="card-body table-container"> | |
<table id="promptTable" class="table table-bordered table-striped"> | |
<thead> | |
<tr> | |
<th>Sno</th> | |
<th>Datasource</th> | |
<th>Sample Prompt</th> | |
<th>View</th> | |
<th>Edit</th> | |
<th>Delete</th> | |
</tr> | |
</thead> | |
<tbody> | |
<!-- <tr> | |
<td>1</td> | |
<td>API</td> | |
<td>What are the details of ASN24080200002?</td> | |
<td><button class="btn btn-primary viewButton">View</button></td> | |
</tr> | |
<tr> | |
<td>2</td> | |
<td>API</td> | |
<td>What is the expected receiving date of ASN24080200002</td> | |
<td><button class="btn btn-primary viewButton">View</button></td> | |
</tr> | |
<tr> | |
<td>3</td> | |
<td>Document</td> | |
<td>Explain Pre-Receiving Yard Management</td> | |
<td><button class="btn btn-primary viewButton">View</button></td> | |
</tr> | |
<tr> | |
<td>4</td> | |
<td>Document</td> | |
<td>Can you explain the process of unloading a vehicle in more detail?</td> | |
<td><button class="btn btn-primary viewButton">View</button></td> | |
</tr> | |
<tr> | |
<td>5</td> | |
<td>Visual Analysis</td> | |
<td>I want to analyze item name and quantity in a bar chart in warehouse Allcargo Logistics</td> | |
<td><button class="btn btn-primary viewButton">View</button></td> | |
</tr> | |
<tr> | |
<td>6</td> | |
<td>Visual Analysis</td> | |
<td>Can you generate a pie chart with item names and quantities in warehouse Allcargo Logistics</td> | |
<td><button class="btn btn-primary viewButton">View</button></td> | |
</tr> | |
<tr> | |
<td>7</td> | |
<td>Database</td> | |
<td>What are the active warehouses available</td> | |
<td><button class="btn btn-primary viewButton">View</button></td> | |
</tr> | |
<tr> | |
<td>8</td> | |
<td>Database</td> | |
<td>What are the warehouses available</td> | |
<td><button class="btn btn-primary viewButton">View</button></td> | |
</tr> | |
--> | |
</tbody> | |
</table> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
</section> | |
</section> | |
</div> | |
</div> | |
<!-- Modal --> | |
<div class="modal fade" id="addModal" tabindex="-1" role="dialog" aria-labelledby="addModalLabel" | |
aria-hidden="true"> | |
<div class="modal-dialog" role="document"> | |
<div class="modal-content"> | |
<div class="modal-header"> | |
<h5 class="modal-title" id="addModalLabel">Add Prompt templates</h5> | |
<button type="button" class="close" data-dismiss="modal" aria-label="Close"></button> | |
<span aria-hidden="true" data-backdrop="static" data-keyboard="false">×</span> | |
</div> | |
<div class="modal-body"> | |
<div class="form-group"> | |
<!-- <label for="company_id">company_id</label>---> | |
<input type="hidden" id="company_id" name="company_id" class="form-control" required> | |
</div> | |
<form id="addPromptForm"> | |
<div class="form-group"> | |
<label for="scenario">Scenario <span class="text-danger">*</span></label> | |
<input type="text" class="form-control" id="scenario" name="scenario" required> | |
</div> | |
<div class="form-group"> | |
<label for="prompt">Sample Prompt <span class="text-danger">*</span></label> | |
<input type="text" class="form-control" id="prompt" name="sampleprompt" required> | |
</div> | |
<div class="form-group"> | |
<label for="comments">Comments <span class="text-danger">*</span></label> | |
<input type="text" class="form-control" id="comments" name="comments" required> | |
</div> | |
</form> | |
</div> | |
<div class="modal-footer"> | |
<button type="button" id="saveupdate" class="btn btn-primary" style="display: none;">Update</button> | |
<!-- <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button> --> | |
<button type="button" id="save" onclick="save_file()" class="btn btn-primary">Save</button> | |
</div> | |
</div> | |
</div> | |
</div> | |
{ %include 'footer.html'%} | |
<!-- Include DataTables JS and your custom script --> | |
<script src="https://cdn.datatables.net/1.10.25/js/jquery.dataTables.min.js"></script> | |
<script src="https://cdn.datatables.net/1.10.25/js/dataTables.bootstrap4.min.js"></script> | |
<script> | |
var table = $('#promptTable').DataTable(); | |
const role = sessionStorage.getItem('userRole'); | |
console.log('Current role:', role); // Debug statement to check the role | |
const passedCompanyName = sessionStorage.getItem('company_name') | |
document.getElementById('selectedCompany').innerText = `Company Name: ${passedCompanyName}`; | |
const company_id = sessionStorage.getItem('company_id'); | |
document.getElementById("company_id").value = company_id; | |
data_get_from_db(company_id); | |
// if (role === 'superadmin') { | |
// const storecompany_id = sessionStorage.getItem('company_id'); | |
// data_get_from_db(storecompany_id); | |
// document.getElementById('company-select').style.display = 'block'; | |
// //var companyId = getCookie('company_id') | |
// //console.log("company id for superadmin",storecompany_id); | |
// fetchCompanies(); | |
// } else { | |
// document.getElementById('company-select').style.display = 'block'; | |
// const storecompany_id = sessionStorage.getItem('company_id'); | |
// console.log('Current company_id:', storecompany_id); // Debug statement to check the role | |
// data_get_from_db(storecompany_id); | |
// } | |
function moveToNextInput(inputs, currentIndex) { | |
const nextInput = inputs[currentIndex + 1]; | |
if (nextInput) { | |
nextInput.focus(); | |
} else { | |
// Optionally, submit the form or trigger the save button | |
document.getElementById("save").focus(); | |
} | |
} | |
const companySelect = document.getElementById('company'); | |
const addPromptForm = document.getElementById('addPromptForm'); | |
async function data_get_from_db(companyId) { | |
if (companyId) { | |
try { | |
const Response = await fetch(`/api/get_prompt_templates?company_id=${companyId}`); | |
console.log("responce from api :==> ", Response) | |
const connectorsResponse = await Response.json(); | |
console.log("knowledge data table after connecting to table", connectorsResponse); | |
console.log("prompt template data table after connecting to table", connectorsResponse); | |
const table = $('#promptTable').DataTable(); // Initialize DataTable at the start | |
table.clear(); | |
if (!Array.isArray(connectorsResponse)) { | |
throw new TypeError('Expected an array of companies'); | |
displayErrorMessage("prompt template details do not exist for this company. Please fill in the details."); | |
contentSection.style.display = 'none'; | |
} else { | |
connectorsResponse.forEach((company, index) => { | |
table.row.add([ | |
index + 1, | |
company.scenario, | |
company.prompt, | |
`<a href='#' class='btn btn-info btn-sm'data-kid-id='${company.row_id}' data-action="view" onclick='viewCompany(this)''><i class='fas fa-eye'></i></a>`, | |
`<a href='#' class='btn btn-warning btn-sm'data-kid-id='${company.row_id}' data-action="edit" onclick='editCompany(this)'><i class='fas fa-edit'></i></a>`, | |
`<a href='#' class='btn btn-danger btn-sm' data-kid-id='${company.row_id}' onclick='deleteCompany(this)'><i class='fas fa-trash'></i></a>`, | |
// "<a href='#' class='btn btn-info btn-sm'><i class='fas fa-eye' fa-eye'></i></a>", | |
// "<a href='#' class='btn btn-warning btn-sm'><i class='fas fa-edit'></i></a>", | |
// "<a href='#' class='btn btn-danger btn-sm'><i class='fas fa-trash'></i></button>" | |
]).draw(false); | |
}); | |
contentSection.style.display = 'block'; | |
} | |
} catch (error) { | |
console.error('Error fetching company documents:', error); | |
//displayEmptyTable(); | |
displayErrorMessage("Prompt template do not exist for this company. Please fill in the details by clicking add button."); | |
contentSection.style.display = 'none'; | |
} | |
} | |
else { | |
// displayEmptyTable(); | |
displayErrorMessage("Company id do not exist for this company. Please fill in the details by clicking add button."); | |
} | |
} | |
function displayErrorMessage(message) { | |
const messageContainer = document.getElementById('message-container'); | |
if (messageContainer) { | |
messageContainer.innerHTML = `<div class='alert alert-danger'>${message}</div>`; | |
} | |
} | |
// Delete company | |
function deleteCompany(button) { | |
var companyId = $(button).data('kid-id'); | |
console.log("k_id deleted", companyId); | |
$.ajax({ | |
type: "DELETE", | |
url: `/api/prompt_template_for_del/${companyId}`, | |
success: function () { | |
var table = $('#promptTable').DataTable(); | |
table.row($(button).closest('tr')).remove().draw(); | |
//alert("Company deleted successfully."); | |
const messageContainer = document.getElementById('message-container'); | |
if (messageContainer) | |
messageContainer.innerHTML = ` | |
<div class='alert alert-danger'> | |
Prompt details deleted successfully | |
<button class='close' onclick='dismissMessage()'>OK</button> | |
</div>`; | |
fetchCompanies(); // Refresh the table | |
}, | |
error: function (xhr) { | |
alert("Error deleting company: " + xhr.responseJSON.detail); | |
} | |
}); | |
} | |
// view company ! ... | |
function viewCompany(button) { | |
var companyId = $(button).data('kid-id'); | |
const modalTitle = document.getElementById('addModalLabel'); | |
modalTitle.textContent = 'View Prompt Template Details'; | |
console.log("view promt id (Rowid) ===> ", companyId) | |
if(companyId) | |
{ | |
$.getJSON(`/api/getpromttemplate/${companyId}`, function (company) { | |
console.log("view data scenario =====> ", company.scenario) | |
console.log("view data prompt =====> ", company.prompt) | |
console.log("view data comments =====> ", company.comments) | |
$('#scenario').val(company.scenario).attr('readonly', 'readonly'); | |
$('#prompt').val(company.prompts).attr('readonly', 'readonly'); | |
$('#comments').val(company.comments).attr('readonly', 'readonly'); | |
$('#save').hide();// Disable the "Save" button when the modal opens | |
$('#addModal').modal('show'); | |
$('#saveupdate').hide(); | |
}).fail(function () { | |
alert("Error retrieving company details."); | |
}); | |
} | |
} | |
// Edit company details | |
function editCompany(button) { | |
var companyId = $(button).data('kid-id'); | |
const modalTitle = document.getElementById('addModalLabel'); | |
modalTitle.textContent = 'Edit Prompt Templates Details'; | |
console.info("company id ====#> ", companyId); | |
if(companyId) | |
{ | |
$.getJSON(`/api/getpromttemplate/${companyId}`, function (company) { | |
$('#scenario').val(company.scenario).removeAttr('readonly'); | |
$('#prompt').val(company.prompts).removeAttr('readonly'); | |
$('#comments').val(company.comments).removeAttr('readonly'); | |
$('#save').hide(); | |
$('#saveupdate').show(); | |
$('#addModal').modal('show'); | |
// Update the save button to save the edited company | |
$('#saveupdate').off('click').on('click', function () { | |
saveupdate(companyId); // Pass the company ID for updating | |
}); | |
console.log(" edit process completed !") | |
}).fail(function () { | |
alert("Error retrieving company details."); | |
}); | |
} | |
} | |
// Save the updated details | |
function saveupdate(companyId) { | |
console.log("k_id for updating process _ id ! ..,..", companyId); | |
const company_id = document.getElementById("company_id").value; | |
var formData = new FormData(); | |
formData.append('scenario', $('#scenario').val()); | |
formData.append('prompt', $('#prompt').val()); | |
formData.append('comments', $('#comments').val()); | |
console.log("edited form data saved process begin ! ....", formData); | |
$.ajax({ | |
url: `/api/putprompttemplates/${companyId}`, | |
type: 'PUT', | |
data: formData, | |
processData: false, // Required for FormData | |
contentType: false, // Required for FormData | |
success: function (response) { | |
// alert('Prompt details updated successfully.'); | |
const messageContainer = document.getElementById('message-container'); | |
if (messageContainer) | |
messageContainer.innerHTML = ` | |
<div class='alert alert-success'> | |
Prompt Data updated successfully | |
<button class='close' style='font-size:medium;margin-top:6px;' onclick='dismissMessage()'>OK</button> | |
</div>`; | |
$('#addModal').modal('hide'); // Close the modal after saving | |
fetchUpdatedDocuments(company_id); | |
}, | |
error: function () { | |
alert('Form has no changes to update prompt details.'); | |
} | |
}); | |
} | |
function dismissMessage() { | |
const messageContainer = document.getElementById('message-container'); | |
if (messageContainer) { | |
messageContainer.innerHTML = ''; | |
} | |
} | |
async function fetchUpdatedDocuments(company_id) { | |
console.log("company_id", company_id); | |
var table = $('#promptTable').DataTable(); | |
const Response = await fetch(`/api/prompt_update?company_id=${company_id}`); | |
const connectorsResponse = await Response.json(); | |
console.log("prompt data table after connecting to table", connectorsResponse); | |
table.clear(); | |
if (!Array.isArray(connectorsResponse) || connectorsResponse.length === 0) { | |
//displayEmptyTable(); | |
displayErrorMessage("Promptdetails do not exist for this company. Please fill in the details."); | |
contentSection.style.display = 'none'; | |
} else { | |
connectorsResponse.forEach((company, index) => { | |
table.row.add([ | |
index + 1, | |
company.scenario, | |
company.prompts, | |
`<a href='#' class='btn btn-info btn-sm'data-kid-id='${company.id}' data-action="view" onclick='viewCompany(this)''><i class='fas fa-eye'></i></a>`, | |
`<a href='#' class='btn btn-warning btn-sm'data-kid-id='${company.id}' data-action="edit" onclick='editCompany(this)'><i class='fas fa-edit'></i></a>`, | |
//`<a href='#' class='btn btn-danger btn-sm' onclick='deleteCompany(${company.company_id})'><i class='fas fa-trash'></i></a>`, | |
`<a href='#' class='btn btn-danger btn-sm' data-kid-id='${company.id}' onclick='deleteCompany(this)'><i class='fas fa-trash'></i></a>`, | |
company.id | |
// "<a href='#' class='btn btn-info btn-sm'><i class='fas fa-eye'></i></a>", | |
// "<a href='#' class='btn btn-warning btn-sm'><i class='fas fa-edit'></i></a>", | |
// "<a href='#' class='btn btn-danger btn-sm'><i class='fas fa-trash'></i></button>" | |
]).draw(false); | |
}); | |
contentSection.style.display = 'block'; | |
} | |
} | |
function save_file() { | |
const form = document.getElementById('addPromptForm'); | |
// Check if the form is valid | |
if (!form.checkValidity()) { | |
// If the form is invalid, show validation messages and stop the submission | |
form.reportValidity(); | |
return; | |
} | |
const company_id = $('#company_id').val(); | |
const scenario = $('#scenario').val(); | |
const prompt = $('#prompt').val(); | |
const comments = $('#comments').val(); | |
// const view = "<a href='#' class='btn btn-info btn-sm'><i class='fas fa-eye'></i></a>"; | |
// const edit = "<a href='#' class='btn btn-warning btn-sm'><i class='fas fa-edit'></i></a>"; | |
// const dele = "<a href='#' class='btn btn-danger btn-sm'><i class='fas fa-trash'></i></a>"; | |
var formData = new FormData($('#addPromptForm')[0]); | |
const messageContainer = document.getElementById('message-container'); | |
formData.append("company_id", company_id), | |
formData.append("scenario", scenario), | |
formData.append("prompt", prompt), | |
formData.append("comments", comments), | |
//const formData = new FormData(); | |
fetch('/api/save_prompt_details', { | |
method: 'POST', | |
body: formData | |
}) | |
.then(response => { | |
if (!response.ok) { | |
throw new Error('Network response was not ok'); | |
} | |
return response.json(); | |
}) | |
.then(data => { | |
const row_id = data.row_id; | |
console.log("rowid", row_id); | |
var table = $('#promptTable').DataTable(); | |
var rowCount = table.rows().count(); | |
const view = `<a href='#' class='btn btn-info btn-sm'data-kid-id='${row_id}' data-action="view" onclick='viewCompany(this)''><i class='fas fa-eye'></i></a>`; | |
const edit = `<a href='#' class='btn btn-warning btn-sm'data-kid-id='${row_id}' data-action="edit" onclick='editCompany(this)'><i class='fas fa-edit'></i></a>`; | |
const dele = `<a href='#' class='btn btn-danger btn-sm' data-kid-id='${row_id}' onclick='deleteCompany(this)'><i class='fas fa-trash'></i></a>`; | |
table.row.add([ | |
rowCount + 1, | |
scenario, | |
prompt, | |
view, | |
edit, | |
dele | |
]).draw(false); | |
// const messageContainer = document.getElementById('message-container'); | |
if (messageContainer) | |
messageContainer.innerHTML = ` | |
<div class='alert alert-success'> | |
Data saved successfully | |
<button class='close' style='font-size:medium;margin-top:6px;' onclick='dismissMessage()'>OK</button> | |
</div>`; | |
$('#addModal').modal('hide'); | |
document.getElementById('contentSection').style.display = 'block'; // Show the table section | |
}) | |
.catch(error => console.error('Error:', error)); | |
} | |
async function fetchCompanies() { | |
try { | |
const response = await fetch('/api/companies'); | |
if (!response.ok) { | |
throw new Error('Network response was not ok'); | |
} | |
const data = await response.json(); | |
displayCompanies(data.companies); | |
} catch (error) { | |
console.error('Error fetching companies:', error); | |
} | |
} | |
function displayCompanies(companies) { | |
const companySelect = document.getElementById('company'); | |
companySelect.innerHTML = '<option value="" selected>Select</option>'; // Reset the dropdown | |
companies.forEach(company => { | |
const option = document.createElement('option'); | |
option.value = company.name; | |
option.textContent = company.name; | |
companySelect.appendChild(option); | |
}); | |
} | |
function clearFormFields() { | |
document.getElementById('scenario').value = ""; | |
document.getElementById('prompt').value = ""; | |
document.getElementById('comments').value = ""; | |
} | |
$(document).ready(function () { | |
$('#add').on('click', function () { | |
const modalTitle = document.getElementById('addModalLabel'); | |
modalTitle.textContent = 'Add Prompt Template Details'; | |
$('#scenario').removeAttr('readonly'); | |
$('#prompt').removeAttr('readonly'); | |
$('#comments').removeAttr('readonly'); | |
$('#saveupdate').hide(); | |
$('#save').show(); | |
clearFormFields(); | |
$('#message-container').empty(); // Clear the message container | |
$('#addModal').modal('show'); | |
}); | |
$('.modal-footer .btn-secondary, .modal-header .close').on('click', function () { | |
$('#addModal').modal('hide'); | |
}); | |
}); | |
</script> | |
</body> | |
</html> |