Spaces:
				
			
			
	
			
			
		Runtime error
		
	
	
	
			
			
	
	
	
	
		
		
		Runtime error
		
	| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>Dashboard</title> | |
| <!-- CSS --> | |
| <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css" /> | |
| <link rel="stylesheet" type="text/css" href="../static/css/style.css" /> | |
| <link rel="stylesheet" type="text/css" href="../static/css/dashboard.css" /> | |
| <link rel="stylesheet" type="text/css" href="../static/css/perfect-scrollbar.css" /> | |
| <style> | |
| .btn-primary { | |
| background-color: #0d6efd; | |
| border-radius:5px; | |
| border-color: #0d6efd; | |
| } | |
| #sidebarToggle | |
| { | |
| border-radius:4px; | |
| margin-left:250px; | |
| } | |
| .main-sidebar.toggled .menu-text { | |
| display: none; | |
| } | |
| #selectedCompany.toggled .menu-text { | |
| display: none; | |
| } | |
| .wrapper { | |
| flex: 1; | |
| padding: 10px; | |
| margin-left: 300px; /* Default sidebar width */ | |
| transition: margin-left 0.3s ease; | |
| } | |
| .main-header { | |
| border-bottom: none; | |
| border-top: none; | |
| } | |
| .card { | |
| margin-bottom: 15px; | |
| border-radius: 8px; | |
| overflow: hidden; | |
| transition: background-color 0.3s ease; | |
| } | |
| .card-body { | |
| padding: 15px; | |
| } | |
| .feature-icon { | |
| display: inline-flex; | |
| align-items: center; | |
| justify-content: center; | |
| width: 50px; | |
| height: 50px; | |
| background: rgba(255, 255, 255, 0.1); | |
| border-radius: 50%; | |
| } | |
| .sidebarPanel | |
| { | |
| display:none; | |
| } | |
| .media-body { | |
| text-align: right; | |
| } | |
| .fs-30 { | |
| font-size: 1.875rem; | |
| } | |
| .fs-48 { | |
| font-size: 3rem; | |
| } | |
| /* Responsive Styles */ | |
| @media (max-width: 992px) { | |
| .wrapper { | |
| margin-left: 200px; | |
| } | |
| .main-header { | |
| padding: 15px; | |
| } | |
| } | |
| @media (max-width: 768px) { | |
| .feature-icon { | |
| width: 40px; | |
| height: 40px; | |
| } | |
| .fs-30 { | |
| font-size: 1.5rem; | |
| } | |
| .fs-48 { | |
| font-size: 2.5rem; | |
| } | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| {% set company_name = company_name %} | |
| {% include 'sidepane.html' %} | |
| <div class="wrapper"> | |
| <section class="main-header"> | |
| <div class="container-fluid"> | |
| <div id="company-block" class="form-group left-align" style="display: none;"> | |
| <label for="company" class="ml-3" style="display: inline-block; margin-right: 10px;"> | |
| Select the Company Name to view the details <span class="text-danger">*</span> | |
| </label> | |
| <select type="text" id="company" name="company" class="ml-3 form-control" | |
| style="display: inline-block; width: 20%;" required> | |
| <option value="" selected>Select</option> | |
| </select> | |
| </div> | |
| <div class="row"> | |
| <div class="col-md-6"> | |
| <div class="card bg-primary"> | |
| <div class="card-body"> | |
| <div class="media align-items-center"> | |
| <span class="p-3 mr-3 feature-icon rounded"> | |
| <img src="../static/logos/calendar-silhouette.svg" /> | |
| </span> | |
| <div class="media-body"> | |
| <p class="fs-30 text-white mb-2">KnowledgeBase</p> | |
| <span id="knowledgeBaseCount" class="fs-48 text-white font-w600">{{table_count_of_each_table.knowledge_base}}</span> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="col-md-6"> | |
| <div class="card bg-info"> | |
| <div class="card-body"> | |
| <div class="media align-items-center"> | |
| <span class="p-3 mr-3 feature-icon rounded"> | |
| <img src="../static/logos/calendar-silhouette.svg" /> | |
| </span> | |
| <div class="media-body"> | |
| <p class="fs-30 text-white mb-2">Data connectors</p> | |
| <span id="dataConnectorsCount" class="fs-48 text-white font-w600">{{table_count_of_each_table.data_connectors}}</span> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="row"> | |
| <div class="col-md-6 "> | |
| <div class="card bg-success"> | |
| <div class="card-body"> | |
| <div class="media align-items-center"> | |
| <span class="p-3 mr-3 feature-icon rounded"> | |
| <img src="../static/logos/email.svg" /> | |
| </span> | |
| <div class="media-body"> | |
| <p class="fs-30 text-white mb-2">API Connectors</p> | |
| <span id="apiConnectorsCount" class="fs-48 text-white font-w600">{{table_count_of_each_table.api_connectors}}</span> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="col-md-6 "> | |
| <div class="card bg-secondary"> | |
| <div class="card-body"> | |
| <div class="media align-items-center"> | |
| <span class="p-3 mr-3 feature-icon rounded"> | |
| <img src="../static/logos/dots.svg" /> | |
| </span> | |
| <div class="media-body"> | |
| <p class="fs-30 text-white mb-2">Prompt_Templates</p> | |
| <span id="promptTemplatesCount" class="fs-48 text-white font-w600">{{table_count_of_each_table.prompt_templates}}</span> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| <input type="hidden" id="userRole" name="userRole" value={{role}}> | |
| <input type="hidden" id="company_id" name="company_id" value={{company_id}}> | |
| <input type="hidden" id="username" name="username" value={{username}}> | |
| <input type="hidden" id="company_name" name="company_name" value={{company_name}}> | |
| </div> | |
| {% include 'footer.html' %} | |
| <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/adminlte.min.js"></script> | |
| <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script> | |
| <script> | |
| document.getElementById("add").style.display = "none"; | |
| // function updateCompanyName(newCompanyName) { | |
| // sessionStorage.setItem('company_name', newCompanyName); | |
| // document.getElementById('selectedCompany').innerText = `Company name: ${newCompanyName}`; | |
| // const sidePaneCompanyName = document.querySelector('.sidebar .company-name'); | |
| // if (sidePaneCompanyName) { | |
| // sidePaneCompanyName.innerText = newCompanyName; | |
| // } | |
| // } | |
| function updateSidepane(companyName) { | |
| const sidepaneCompanyElement = document.getElementById('selectedCompany'); | |
| if (sidepaneCompanyElement) { | |
| sidepaneCompanyElement.innerText = `Company Name: ${companyName}`; | |
| } | |
| } | |
| window.addEventListener('pageshow', function (event) { | |
| if (event.persisted || (window.performance && window.performance.navigation.type === 2)) { | |
| window.location.reload(); | |
| } | |
| }); | |
| document.addEventListener('DOMContentLoaded', function () { | |
| var role1 = document.getElementById("userRole").value; | |
| var company_id1 = document.getElementById("company_id").value; | |
| var company_name1=document.getElementById("company_name").value; | |
| var username1=document.getElementById("username").value; | |
| console.log("companyid in dasshboard",username1); | |
| sessionStorage.setItem('userRole', role1); | |
| // sessionStorage.setItem('siderole',role1); | |
| // sessionStorage.setItem('sidecompanyId',company_id1); | |
| sessionStorage.setItem('company_id', company_id1); | |
| sessionStorage.setItem('company_name',company_name1); | |
| sessionStorage.setItem('username',username1); | |
| const companyName = sessionStorage.getItem('company_name'); | |
| if (companyName) { | |
| updateSidepane(companyName); | |
| } | |
| else{ | |
| document.getElementById(selectedCompany).value="Select a company"; | |
| } | |
| if (!role1) { | |
| var roleFromInput = sessionStorage.getItem('userRole'); | |
| sessionStorage.setItem('userRole', roleFromInput); | |
| console.log("Role set in sessionStorage:", roleFromInput); | |
| } else { | |
| sessionStorage.setItem('userRole', role1); | |
| console.log("Retrieved user role from input:", role1); // Debugging | |
| } | |
| if (role1 === "superadmin") { | |
| document.getElementById('company-block').style.display = 'block'; | |
| fetchCompanies(); | |
| } | |
| }); | |
| document.getElementById('company').addEventListener('change', async function () { | |
| const selectedCompany = this.value; | |
| sessionStorage.setItem("company_name",selectedCompany); | |
| // Update the sidepane immediately | |
| updateSidepane(selectedCompany); | |
| if (selectedCompany!== "Select") { | |
| try { | |
| const response = await fetch(`/api/company_id?company_name=${encodeURIComponent(selectedCompany)}`); | |
| if (!response.ok) { | |
| contentSection.style.display = 'none'; | |
| displayErrorMessage("Document details do not exist for this company. Please fill in the details."); | |
| throw new Error('Network response was not ok'); | |
| } | |
| const data = await response.json(); | |
| console.log('data returned', data); | |
| const companyId = data.company_id; | |
| sessionStorage.setItem("company_id",companyId); | |
| console.log("company id for superadmin", company_id); | |
| //document.getElementById('company_id').value = companyId; | |
| if (companyId) { | |
| try { | |
| const countResponse = await fetch(`/api/company_record_count/${companyId}`); | |
| if (!countResponse.ok) { | |
| throw new Error('Network response was not ok'); | |
| } | |
| const countData = await countResponse.json(); | |
| console.log('Count data:', countData); // Log the response data | |
| updateRecordCounts(countData.table_counts); | |
| } catch (error) { | |
| console.error('Error fetching record counts:', error); | |
| } | |
| } else { | |
| clearRecordCounts(); | |
| } | |
| } catch (error) { | |
| console.error('No details for this company ID or data documents:', error); | |
| // displayEmptyTable(); | |
| displayErrorMessage("company details do not exist for this company."); | |
| } | |
| } | |
| }); | |
| function updateRecordCounts(counts) { | |
| // Update the counts displayed in the dashboard | |
| document.getElementById('knowledgeBaseCount').textContent = counts.knowledge_base || 0; | |
| document.getElementById('dataConnectorsCount').textContent = counts.data_connectors || 0; | |
| document.getElementById('apiConnectorsCount').textContent = counts.api_connectors || 0; | |
| document.getElementById('promptTemplatesCount').textContent = counts.prompt_templates || 0; | |
| } | |
| function clearRecordCounts() { | |
| document.getElementById('knowledgeBaseCount').textContent = 0; | |
| document.getElementById('dataConnectorsCount').textContent = 0; | |
| document.getElementById('apiConnectorsCount').textContent = 0; | |
| document.getElementById('promptTemplatesCount').textContent = 0; | |
| } | |
| 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('APIName').value = ""; | |
| document.getElementById('APIEndpoint').value = ""; | |
| document.getElementById('Auth_Bearer').value = ""; | |
| document.getElementById('Inputjson').value = ""; | |
| document.getElementById('OutputJson').value = ""; | |
| document.getElementById('Description').value = ""; | |
| } | |
| </script> | |
| </body> | |
| </html> | |