chnages in product details

This commit is contained in:
Malini 2025-11-13 14:48:25 +05:30
parent 8eee109297
commit 346790205a
5 changed files with 116 additions and 16 deletions

View File

@ -97,7 +97,7 @@ const AdminHeader = () => {
// ignore storage errors // ignore storage errors
} }
setProfileOpen(false); setProfileOpen(false);
navigate('/login'); navigate('/index');
}; };
return ( return (

View File

@ -78,15 +78,24 @@ const SubmissionTable = ({ selectedQuarter, selectedYear }) => {
const formatDate = (dateStr) => { const formatDate = (dateStr) => {
if (!dateStr) return '-'; if (!dateStr) return '-';
const date = new Date(dateStr); const date = new Date(dateStr);
const formatted = date.toLocaleString('en-GB', { // Format for Dubai timezone (Asia/Dubai)
const options = {
timeZone: 'Asia/Dubai',
day: '2-digit', day: '2-digit',
month: '2-digit', month: '2-digit',
year: 'numeric', year: 'numeric',
hour: '2-digit', hour: '2-digit',
minute: '2-digit', minute: '2-digit',
hour12: true, hour12: true,
}); };
return formatted.replace(/\s?(am|pm)$/i, (match) => match.toUpperCase());
// Format the date in Dubai time
let formatted = new Intl.DateTimeFormat('en-GB', options).format(date);
// Convert to uppercase AM/PM and ensure consistent formatting
formatted = formatted.replace(/\s?(am|pm)$/i, (match) => match.toUpperCase());
return formatted;
}; };
const renderStatusBadge = (status) => { const renderStatusBadge = (status) => {
@ -388,11 +397,11 @@ const SubmissionTable = ({ selectedQuarter, selectedYear }) => {
)} )}
</div> </div>
<div className="flex justify-end px-6 pb-14 pt-6"> <div className="flex justify-end px-6 mt-2 mb-1">
<button <button
type="button" type="button"
onClick={() => navigate('/admin/validations')} onClick={() => navigate('/admin/validations')}
className="inline-flex h-[44px] w-[190px] items-center justify-center gap-2 rounded-md bg-[#9E792B] text-sm font-medium text-white shadow-[0_8px_18px_rgba(146,114,42,0.35)] hover:bg-[#846522] py-6" className="h-9 px-4 text-sm font-medium text-white rounded-md bg-[#9E792B] hover:bg-[#846522] shadow-[0_2px_8px_rgba(146,114,42,0.25)]"
> >
View All Submissions View All Submissions
</button> </button>

View File

@ -61,7 +61,7 @@ const HeaderBar = () => {
sessionStorage.removeItem('establishment_id'); sessionStorage.removeItem('establishment_id');
} catch {} } catch {}
setUserOpen(false); setUserOpen(false);
navigate('/login'); navigate('/index');
}; };
const onChangePassword = () => { const onChangePassword = () => {

View File

@ -182,11 +182,15 @@ const AdminDashboard = () => {
<StatCard <StatCard
label="Due Date" label="Due Date"
labelClassName="text-sm" labelClassName="text-sm"
value={loading ? '--' : quarterlyWindows.end_date ? new Date(quarterlyWindows.end_date).toLocaleDateString('en-GB') : '--'} value={loading ? '--' :
(selectedQuarter === 'All' || selectedYear === 'All') ? 'NA' :
(quarterlyWindows.end_date ? new Date(quarterlyWindows.end_date).toLocaleDateString('en-GB') : '--')}
valueClassName="text-sm" valueClassName="text-sm"
width={190} width={190}
icon={<img src={dueDateIconSrc} alt="Due Date" className="h-5 w-5" />} icon={<img src={dueDateIconSrc} alt="Due Date" className="h-5 w-5" />}
tooltipText={`Submission deadline for ${selectedQuarter} ${selectedYear}`} tooltipText={selectedQuarter === 'All' || selectedYear === 'All' ?
"Due date is not applicable when viewing all quarters or years" :
`Submission deadline for ${selectedQuarter} ${selectedYear}`}
/> />
</div> </div>
</div> </div>

View File

@ -78,6 +78,7 @@ const UnitMaster = () => {
const [editingRow, setEditingRow] = useState(null); const [editingRow, setEditingRow] = useState(null);
const [deletingRow, setDeletingRow] = useState(null); const [deletingRow, setDeletingRow] = useState(null);
const [modalMode, setModalMode] = useState(null); const [modalMode, setModalMode] = useState(null);
const [selectedUnit, setSelectedUnit] = useState(null);
const [currentPage, setCurrentPage] = useState(1); const [currentPage, setCurrentPage] = useState(1);
const [form, setForm] = useState(createEmptyUnitForm()); const [form, setForm] = useState(createEmptyUnitForm());
const [formErrors, setFormErrors] = useState({}); const [formErrors, setFormErrors] = useState({});
@ -199,10 +200,18 @@ const UnitMaster = () => {
setIsProductDropdownOpen(false); setIsProductDropdownOpen(false);
}; };
const handleView = (index) => {
const selected = units[index];
if (!selected) return;
setSelectedUnit(selected);
setModalMode('view');
};
const handleEdit = (index) => { const handleEdit = (index) => {
const selected = units[index]; const selected = units[index];
if (!selected) return; if (!selected) return;
setEditingRow(index); setEditingRow(index);
setSelectedUnit(selected);
setForm({ setForm({
unitName: selected.uom || selected.unitName, unitName: selected.uom || selected.unitName,
description: selected.uom_short_name || selected.description, description: selected.uom_short_name || selected.description,
@ -220,6 +229,7 @@ const UnitMaster = () => {
const closeModal = () => { const closeModal = () => {
setModalMode(null); setModalMode(null);
setSelectedUnit(null);
setForm(createEmptyUnitForm()); setForm(createEmptyUnitForm());
setFormErrors({}); setFormErrors({});
setEditingRow(null); setEditingRow(null);
@ -472,6 +482,19 @@ const UnitMaster = () => {
className="h-4 w-4" className="h-4 w-4"
/> />
</button> </button>
<button
type="button"
className="h-8 w-8 grid place-items-center rounded hover:bg-gray-50 cursor-pointer"
title="View"
aria-label="View unit"
onClick={() => handleView(rowIndex)}
>
<img
src="/assets/images/Eye.svg"
alt="View"
className="h-4 w-4"
/>
</button>
<button <button
type="button" type="button"
className="h-8 w-8 grid place-items-center rounded hover:bg-gray-50 cursor-pointer" className="h-8 w-8 grid place-items-center rounded hover:bg-gray-50 cursor-pointer"
@ -499,8 +522,72 @@ const UnitMaster = () => {
/> />
)} )}
{/* View Modal */}
{modalMode === 'view' && selectedUnit && (
<div className="fixed inset-0 z-50">
<div className="absolute inset-0 bg-black/40" onClick={closeModal} />
<div
className="absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 rounded-[16px] bg-white"
style={{
width: '628px',
maxWidth: '92vw',
boxShadow: '0 24px 40px rgba(27, 29, 33, 0.16)',
border: '1px solid #E5E7EB',
}}
>
<div className="flex items-center justify-between px-6 py-4 border-b border-[#F1F2F4]">
<h3 className="text-[18px] font-medium text-[#232528]">
View Unit
</h3>
<button
type="button"
aria-label="Close"
className="h-8 w-8 grid place-items-center rounded hover:bg-gray-100"
onClick={closeModal}
>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" strokeWidth="2" className="h-4 w-4 text-[#92722A]" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" d="M6 6l12 12M18 6L6 18" />
</svg>
</button>
</div>
<div className="px-6 py-5">
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
<div>
<label className="block text-sm font-medium text-gray-700 mb-1 ">
Unit Name <span className="text-red-500">*</span>
</label>
<div className="mt-1 px-3 py-2 border border-[#92722A] rounded-md bg-gray-50">
<p className="text-gray-900">{selectedUnit.uom || selectedUnit.unitName || 'N/A'}</p>
</div>
</div>
<div>
<label className="block text-sm font-medium text-gray-700 mb-1">
Description <span className="text-red-500">*</span>
</label>
<div className="mt-1 px-3 py-2 border border-[#92722A] rounded-md bg-gray-50 min-h-[42px]">
<p className="text-gray-900">{selectedUnit.uom_short_name || selectedUnit.description || 'N/A'}</p>
</div>
</div>
</div>
<div className="mt-6 flex items-center justify-end gap-3">
<button
type="button"
className="h-10 px-6 rounded-md border border-[#92722A] text-sm font-medium text-[#92722A] bg-white"
onClick={closeModal}
>
Close
</button>
</div>
</div>
</div>
</div>
)}
{/* Add/Edit Modal */} {/* Add/Edit Modal */}
{modalMode && ( {modalMode && modalMode !== 'view' && (
<div className="fixed inset-0 z-50"> <div className="fixed inset-0 z-50">
<div className="absolute inset-0 bg-black/40" onClick={closeModal} /> <div className="absolute inset-0 bg-black/40" onClick={closeModal} />
<div <div