This commit is contained in:
raman 2025-08-07 14:53:44 +05:30
parent e88f7da488
commit 0b93dd1a87
7 changed files with 115 additions and 40 deletions

View File

@ -11,7 +11,7 @@ from pdf2image import convert_from_bytes
from PIL import Image
import pytesseract
import json
from docx import Document
# from docx import Document
# import binascii
from odoo.tools.mimetypes import guess_mimetype

View File

@ -138,7 +138,7 @@ body.ats-app {
/* ===== Main Content Area ===== */
.ats-app .content-area {
flex: 1;
padding: 2rem;
padding: 5px;
background-color: var(--content-bg);
overflow-y: auto;
box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.02);
@ -210,8 +210,23 @@ body.ats-app {
}
.ats-app .content-area {
padding: 1rem;
border-left: none;
padding: 8px;
}
}
#sidebar.collapsed {
width: 0;
overflow: hidden;
padding: 0;
}
.menu-list a.active {
background-color: #DBEDFE;
color: #0061FF;
transform: translateX(6px);
box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.2);
font-weight: 600;
letter-spacing: 0.5px;
border-radius: 0.375rem;
padding: 0.5rem 0.75rem;
display: block;
}

View File

@ -437,7 +437,13 @@
padding-bottom: 12px;
border-bottom: 2px solid var(--gray-200);
}
.ats-grid .fa{
padding-right:5px;
}
.ats-list {
background-color:linear-gradient(90deg,rgba(2, 0, 36, 1) 0%, rgba(9, 9, 121, 1) 35%, rgba(0, 212, 255, 1) 100%);
}
.ats-grid .detail-label {
font-weight: 600;
color: var(--text-secondary);

View File

@ -5,19 +5,60 @@ document.addEventListener("DOMContentLoaded", function () {
const contentArea = document.getElementById("main-content");
const jobDetailArea = document.getElementById("job-detail");
const toggleBtn = document.getElementById("sidebar-toggle-btn");
const sidebar = document.getElementById("sidebar");
// const toggleBtn = document.getElementById("sidebar-toggle-btn");
// const sidebar = document.getElementById("sidebar");
//
// // ✅ Sidebar Toggle
// if (toggleBtn && sidebar) {
// toggleBtn.addEventListener("click", function () {
// sidebar.classList.toggle("collapsed");
// sidebar.classList.toggle("expanded");
// });
// }
document.getElementById('sidebar-toggle-btn').addEventListener('click', function () {
const sidebar = document.getElementById('sidebar');
const icon = this.querySelector('i');
// ✅ Sidebar Toggle
if (toggleBtn && sidebar) {
toggleBtn.addEventListener("click", function () {
sidebar.classList.toggle("collapsed");
sidebar.classList.toggle("expanded");
sidebar.classList.toggle('collapsed');
if (sidebar.classList.contains('collapsed')) {
icon.classList.remove('fas fa-angle-left');
icon.classList.add('fas fa-angle-right');
} else {
icon.classList.remove('fas fa-angle-right');
icon.classList.add('fas fa-angle-left');
}
});
const links = document.querySelectorAll('.menu-list a');
function highlightCurrentMenu() {
const hash = window.location.hash;
links.forEach(link => {
if (link.getAttribute('href') === hash) {
link.classList.add('active');
} else {
link.classList.remove('active');
}
});
}
// Run on page load
highlightCurrentMenu();
// Optional: update on hash change (if user navigates)
window.addEventListener('hashchange', highlightCurrentMenu);
// Optional: highlight on click if you're using JS navigation
links.forEach(link => {
link.addEventListener('click', () => {
links.forEach(l => l.classList.remove('active'));
link.classList.add('active');
});
});
document.querySelectorAll('.menu-list a[data-page]').forEach(link => {
link.addEventListener('click', async function (e) {
debugger;
e.preventDefault();
const page = this.dataset.page;

View File

@ -86,7 +86,10 @@
<link rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"/>
<div class="ats-grid" id="ats-details-container">
<div class="ats-card span-3" style="grid-row: span 2;" id="candidate-overview">
<button type="button" class="close-detail" aria-label="Close">
<span aria-hidden="true">&amp;times;</span>
</button>
<div class="ats-card span-3" style="grid-row: span 2;" id="ats-overview">
<h4 class="section-title">
<i class="fa fa-list-ul me-2"></i>Quick Nav
</h4>
@ -156,7 +159,13 @@
</span>
<span class="me-3 meta-item" t-if="candidate.employee_id">
<i class="fa fa-id-card me-1"></i>
<span t-esc="candidate.employee_id.name or 'No employee record'"/>
<t t-if="candidate.employee_id.employee_id">
<span t-esc="candidate.employee_id.employee_id or 'No employee record'"/>
</t>
<t t-else="">
<span t-esc="'Not Specified'"/>
</t>
</span>
</div>
</div>
@ -183,8 +192,8 @@
</div>
</div>
</div>
<div class="ats-card span-3" style="grid-row: span 1;">
</div>
<!-- <div class="ats-card span-3" style="grid-row: span 1;">-->
<!-- </div>-->
<div class="ats-card span-6" style="grid-row: span 1;" id="candidate-basic-info">
<h4 class="section-title">
<i class="fa fa-info-circle me-2"></i>Basic Information

View File

@ -16,10 +16,12 @@
src="/hr_recruitment_web_app/static/src/js/select2.min.js"></script>
<link rel="stylesheet" href="/hr_recruitment_web_app/static/src/css/ats.css"/>
<link rel="stylesheet" href="/hr_recruitment_web_app/static/src/css/list.css?v=34"/>
<link rel="stylesheet" href="/hr_recruitment_web_app/static/src/css/content.css?v=5"/>
<link rel="stylesheet" href="/hr_recruitment_web_app/static/src/css/content.css?v=8"/>
<link rel="stylesheet" href="/hr_recruitment_web_app/static/src/css/jd.css"/>
<link rel="stylesheet" href="/hr_recruitment_web_app/static/src/css/applicants.css?v=3"/>
<link rel="stylesheet" href="/hr_recruitment_web_app/static/src/css/candidate.css?v=1"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"/>
<!-- <link rel="stylesheet" href="/hr_recruitment_web_app/static/src/css/applicants.css"/>-->
<!-- <link rel="stylesheet" href="/hr_recruitment_web_app/static/src/css/applicants_details.css"/>-->
<!-- <link ref="stylesheet" href="/hr_recruitment_web_app/static/src/css/ats_candidate.css"/>-->
@ -43,13 +45,15 @@
style="height: 40px; width: auto;" />
<span style="font-size: 24px; font-weight: bold;">Opsentra ATS</span>
</div>
<ul class="menu-list">
<ul class="menu-list list-unstyled">
<!-- <span class="list-title">RECRUITING</span>-->
<li><a href="#jobs" data-page="job_requests"><i class="bi bi-file-earmark-text"></i> JD</a></li>
<li><a href="#applicants" data-page="applicants"><i class="bi bi-people"></i> Applicants</a></li>
<li><a href="#candidates" data-page="candidates"><i class="bi bi-person-check"></i> Candidates</a></li>
</ul>
<button id="sidebar-toggle-btn" class="toggle-btn"></button>
<button id="sidebar-toggle-btn" class="btn btn-outline-secondary position-absolute top-0 start-100 translate-middle-y mt-3">
<i class="fas fa-angle-left"></i>
</button>
</aside>
<main class="content-area">

View File

@ -1,24 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<record id="res_config_settings_view_form_inherited_qwen" model="ir.ui.view">
<field name="name">res.config.settings.view.form.inherit.account</field>
<field name="model">res.config.settings</field>
<field name="priority" eval="40"/>
<field name="inherit_id" ref="hr_recruitment.res_config_settings_view_form"/>
<field name="arch" type="xml">
<xpath expr="//block[@name='recruitment_in_app_purchases']" position="after">
<h2>Qwen API</h2>
<div class="row mt16 o_settings_container" name="performance">
<div class="col-12 col-lg-6 o_setting_box" id="qwen_api_key">
<label for="qwen_api_key"/>
<field name="qwen_api_key"/>
<div class="text-muted">
Enter Your API key of the Together.ai.
</div>
</div>
</div>
<!-- <record id="res_config_settings_view_form_inherited_qwen" model="ir.ui.view">-->
<!-- <field name="name">res.config.settings.view.form.inherit.account</field>-->
<!-- <field name="model">res.config.settings</field>-->
<!-- <field name="priority" eval="40"/>-->
<!-- <field name="inherit_id" ref="hr_recruitment.res_config_settings_view_form"/>-->
<!-- <field name="arch" type="xml">-->
<!-- <xpath expr="//block[@name='recruitment_in_app_purchases']" position="after">-->
<!-- <h2>Qwen API</h2>-->
<!-- <div class="row mt16 o_settings_container" name="performance">-->
<!-- <div class="col-12 col-lg-6 o_setting_box" id="qwen_api_key">-->
<!-- <label for="qwen_api_key"/>-->
<!-- <field name="qwen_api_key"/>-->
<!-- <div class="text-muted">-->
<!-- Enter Your API key of the Together.ai.-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
</xpath>
</field>
</record>
<!-- </xpath>-->
<!-- </field>-->
<!-- </record>-->
</odoo>