Vaibhav Surve 2dfe150a5c feat: AMS V1 — multi-page HTML prototype
- Login page with animated floating stat cards
- Executive dashboard with Chart.js KPIs and activity feed
- Full asset registry (list, search, filter, bulk actions, QR)
- Asset detail page with 6 tabs (financial, maintenance, history…)
- 3-step asset creation wizard with category-specific fields
- Inventory: stock overview, GRN, location tree, physical audit
- Procurement: PR → approval → PO → GRN → asset lifecycle
- Maintenance: Kanban board, PM schedule, AMC contracts
- Reports: depreciation schedule, utilization, compliance gauge
- User management: roles, permission matrix, session control
- Settings: 8 config sections (org, depreciation, security, integrations)
- Premium dark UI with CSS variables, Chart.js 4, toast system
2026-05-28 18:09:32 +05:30

198 lines
24 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// ================================================================
// AMS — Sample Data Store | Version 1.0
// ================================================================
const AMS = {
currentUser: {
id: 'u001', name: 'Arjun Sharma', email: 'arjun.sharma@acmecorp.com',
role: 'Asset Manager', dept: 'IT', avatar: 'AS', location: 'HQ Bengaluru'
},
company: {
name: 'Acme Corporation Pvt. Ltd.', currency: '₹', currencyCode: 'INR',
fy: 'Apr 2025 Mar 2026', gst: '29AABCU9603R1ZX',
address: '12th Floor, Prestige Tech Park, Outer Ring Road, Bengaluru 560103'
},
stats: {
total: 1247, active: 1089, maintenance: 47, idle: 63, disposed: 48,
totalValue: 42850000, netValue: 30100000, depreciated: 12750000,
pendingTickets: 12, lowStock: 5, expiringAMC: 3, pendingPRs: 8
},
assets: [
{ id:'AST-2025-001', name:'Dell Latitude 5540', cat:'Laptops', serial:'DL5540-8K2J9', status:'Active', dept:'IT', loc:'IT Dept Floor 2', assignee:'Priya Kumar', purchase:'2024-01-15', cost:85000, value:68000, vendor:'Dell India', warranty:'2027-01-15', depM:'SLM', depR:20, icon:'💻' },
{ id:'AST-2025-002', name:'HP LaserJet Pro M404', cat:'Printers', serial:'HP-LJ404-3F7K1', status:'Active', dept:'Finance', loc:'Finance Floor 1', assignee:'Shared', purchase:'2023-08-20', cost:24000, value:17600, vendor:'HP India', warranty:'2025-08-20', depM:'SLM', depR:25, icon:'🖨️' },
{ id:'AST-2025-003', name:'Apple MacBook Pro 14"', cat:'Laptops', serial:'MPB14-C7R5X', status:'Active', dept:'Marketing', loc:'Marketing Floor 3', assignee:'Sneha Patel', purchase:'2024-03-10', cost:195000, value:175500, vendor:'Apple India', warranty:'2026-03-10', depM:'SLM', depR:20, icon:'💻' },
{ id:'AST-2025-004', name:'Dell PowerEdge R740', cat:'Servers', serial:'PE-R740-9M4L2', status:'Active', dept:'IT', loc:'Server Room B1', assignee:'IT Team', purchase:'2023-05-01', cost:380000, value:266000, vendor:'Dell India', warranty:'2026-05-01', depM:'WDV', depR:30, icon:'🖥️' },
{ id:'AST-2025-005', name:'Daikin 1.5T Split AC', cat:'HVAC', serial:'DK-FTKG-2024-05', status:'Under Maintenance', dept:'HR', loc:'HR Floor 2', assignee:'Shared', purchase:'2022-04-15', cost:45000, value:25650, vendor:'Daikin India', warranty:'2024-04-15', depM:'SLM', depR:15, icon:'❄️' },
{ id:'AST-2025-006', name:'Lenovo ThinkPad X1 Carbon',cat:'Laptops', serial:'LN-X1C-7P3Q8', status:'Active', dept:'Operations',loc:'Operations Floor 1', assignee:'Vikram Reddy', purchase:'2024-02-01', cost:125000, value:112500, vendor:'Lenovo India', warranty:'2027-02-01', depM:'SLM', depR:20, icon:'💻' },
{ id:'AST-2025-007', name:'Epson EB-2250U Projector', cat:'AV Equipment', serial:'EP-EB2250-6N9R', status:'Idle', dept:'Admin', loc:'Conference Room A', assignee:'Unassigned', purchase:'2023-11-10', cost:78000, value:62400, vendor:'Epson India', warranty:'2025-11-10', depM:'SLM', depR:20, icon:'📽️' },
{ id:'AST-2025-008', name:'Cisco Catalyst 9300', cat:'Networking', serial:'CS-C9300-4K7J', status:'Active', dept:'IT', loc:'Server Room B1', assignee:'Network Team', purchase:'2023-07-20', cost:145000, value:101500, vendor:'Cisco Systems', warranty:'2026-07-20', depM:'WDV', depR:30, icon:'🔌' },
{ id:'AST-2025-009', name:'iPhone 15 Pro', cat:'Mobile Devices', serial:'IP15P-A2M8K', status:'Active', dept:'Marketing', loc:'Sales Floor', assignee:'Raj Patel', purchase:'2024-01-05', cost:134900, value:121410, vendor:'Apple India', warranty:'2026-01-05', depM:'SLM', depR:20, icon:'📱' },
{ id:'AST-2025-010', name:'Canon EOS R5 Camera', cat:'AV Equipment', serial:'CN-EOSR5-2B7K', status:'Active', dept:'Marketing', loc:'Marketing Floor 3', assignee:'Content Team', purchase:'2023-09-15', cost:285000, value:228000, vendor:'Canon India', warranty:'2025-09-15', depM:'SLM', depR:20, icon:'📷' },
{ id:'AST-2025-011', name:'Steelcase Leap V2 Chair', cat:'Furniture', serial:'SC-LV2-9P3X2', status:'Active', dept:'IT', loc:'IT Dept Floor 2', assignee:'Priya Kumar', purchase:'2022-06-01', cost:35000, value:21000, vendor:'Steelcase India', warranty:'2027-06-01', depM:'SLM', depR:10, icon:'🪑' },
{ id:'AST-2025-012', name:'APC Smart UPS 3KVA', cat:'Power Equipment',serial:'APC-SM3K-7Y4L', status:'Active', dept:'IT', loc:'Server Room B1', assignee:'IT Team', purchase:'2023-03-10', cost:28000, value:21000, vendor:'Schneider Elec.', warranty:'2025-03-10', depM:'SLM', depR:25, icon:'🔋' },
{ id:'AST-2025-013', name:'Samsung 43" Display', cat:'Displays', serial:'SM-43D-5R2M9', status:'Active', dept:'Admin', loc:'Reception Floor 1', assignee:'Shared', purchase:'2024-01-20', cost:42000, value:39900, vendor:'Samsung India', warranty:'2025-01-20', depM:'SLM', depR:25, icon:'🖥️' },
{ id:'AST-2025-014', name:'Honda City (Company Car)', cat:'Vehicles', serial:'MH12CC4567', status:'Active', dept:'Admin', loc:'Parking B1', assignee:'Driver Pool', purchase:'2022-12-01', cost:1350000, value:945000, vendor:'Honda Dealers', warranty:'2025-12-01', depM:'WDV', depR:15, icon:'🚗' },
{ id:'AST-2025-015', name:'HP ProDesk 600 Desktop', cat:'Desktops', serial:'HP-PD600-8K3X', status:'Idle', dept:'Finance', loc:'Finance Floor 1', assignee:'Unassigned', purchase:'2021-08-15', cost:55000, value:11000, vendor:'HP India', warranty:'2023-08-15', depM:'SLM', depR:20, icon:'🖥️' },
{ id:'AST-2025-016', name:'Ricoh Aficio Photocopier', cat:'Printers', serial:'RC-AF-5502-7P', status:'Under Maintenance',dept:'Admin', loc:'Admin Floor 1', assignee:'Shared', purchase:'2022-03-20', cost:175000, value:87500, vendor:'Ricoh India', warranty:'2024-03-20', depM:'SLM', depR:25, icon:'🖨️' },
{ id:'AST-2025-017', name:'Cisco IP Phone 8841', cat:'Networking', serial:'CS-8841-3P7K', status:'Active', dept:'HR', loc:'HR Floor 2', assignee:'Anita Singh', purchase:'2023-06-10', cost:18500, value:12950, vendor:'Cisco Systems', warranty:'2025-06-10', depM:'SLM', depR:25, icon:'☎️' },
{ id:'AST-2025-018', name:'Tata Nexon EV', cat:'Vehicles', serial:'MH12EV1234', status:'Active', dept:'Admin', loc:'Parking B1', assignee:'Exec Pool', purchase:'2024-02-15', cost:1650000, value:1567500, vendor:'Tata Motors', warranty:'2027-02-15', depM:'WDV', depR:15, icon:'🚗' },
{ id:'AST-2025-019', name:'Synology NAS DS920+', cat:'Storage', serial:'SY-DS920-4M7K', status:'Active', dept:'IT', loc:'Server Room B1', assignee:'IT Team', purchase:'2023-10-05', cost:62000, value:49600, vendor:'Synology', warranty:'2026-10-05', depM:'SLM', depR:20, icon:'💾' },
{ id:'AST-2025-020', name:'Godrej Steel Almirah', cat:'Furniture', serial:'GJ-SS-2023-012', status:'Active', dept:'Finance', loc:'Finance Floor 1', assignee:'Shared', purchase:'2021-05-20', cost:22000, value:13200, vendor:'Godrej Interio', warranty:'N/A', depM:'SLM', depR:10, icon:'🗄️' }
],
users: [
{ id:'u001', name:'Arjun Sharma', email:'arjun.sharma@acmecorp.com', role:'Asset Manager', dept:'IT', status:'Active', lastLogin:'2025-05-28 09:12', av:'AS', color:'#6366F1' },
{ id:'u002', name:'Priya Kumar', email:'priya.kumar@acmecorp.com', role:'IT Head', dept:'IT', status:'Active', lastLogin:'2025-05-28 08:45', av:'PK', color:'#10B981' },
{ id:'u003', name:'Rahul Mehta', email:'rahul.mehta@acmecorp.com', role:'Finance Head', dept:'Finance', status:'Active', lastLogin:'2025-05-27 17:30', av:'RM', color:'#F59E0B' },
{ id:'u004', name:'Anita Singh', email:'anita.singh@acmecorp.com', role:'HR Manager', dept:'HR', status:'Active', lastLogin:'2025-05-28 10:02', av:'AS', color:'#A855F7' },
{ id:'u005', name:'Vikram Reddy', email:'vikram.reddy@acmecorp.com', role:'Operations Head', dept:'Operations',status:'Active', lastLogin:'2025-05-26 14:20', av:'VR', color:'#06B6D4' },
{ id:'u006', name:'Sneha Patel', email:'sneha.patel@acmecorp.com', role:'Marketing Lead', dept:'Marketing', status:'Active', lastLogin:'2025-05-28 11:00', av:'SP', color:'#EF4444' },
{ id:'u007', name:'Deepak Joshi', email:'deepak.joshi@acmecorp.com', role:'Admin Officer', dept:'Admin', status:'Active', lastLogin:'2025-05-27 09:30', av:'DJ', color:'#3B82F6' },
{ id:'u008', name:'Kavya Nair', email:'kavya.nair@acmecorp.com', role:'Asset Coordinator',dept:'IT', status:'Active', lastLogin:'2025-05-28 09:55', av:'KN', color:'#10B981' },
{ id:'u009', name:'Raj Patel', email:'raj.patel@acmecorp.com', role:'Sales Executive', dept:'Marketing', status:'Inactive',lastLogin:'2025-05-20 16:10', av:'RP', color:'#6366F1' },
{ id:'u010', name:'System Admin', email:'admin@acmecorp.com', role:'Super Admin', dept:'IT', status:'Active', lastLogin:'2025-05-28 07:00', av:'SA', color:'#F59E0B' }
],
tickets: [
{ id:'TKT-001', title:'Laptop keyboard not working', asset:'AST-2025-001', assetName:'Dell Latitude 5540', priority:'High', status:'In Progress', assignedTo:'Kavya Nair', created:'2025-05-26', dept:'IT', category:'Hardware Failure' },
{ id:'TKT-002', title:'AC not cooling HR floor', asset:'AST-2025-005', assetName:'Daikin 1.5T Split AC', priority:'Critical', status:'In Progress', assignedTo:'External AMC', created:'2025-05-27', dept:'HR', category:'Performance Issue' },
{ id:'TKT-003', title:'Printer paper jam frequent', asset:'AST-2025-002', assetName:'HP LaserJet Pro M404', priority:'Medium', status:'Open', assignedTo:'Unassigned', created:'2025-05-28', dept:'Finance', category:'Mechanical Issue' },
{ id:'TKT-004', title:'Projector lamp replacement', asset:'AST-2025-007', assetName:'Epson EB-2250U Projector', priority:'Low', status:'Pending Parts', assignedTo:'Kavya Nair', created:'2025-05-22', dept:'Admin', category:'Consumable Replacement' },
{ id:'TKT-005', name:'Photocopier not turning on', asset:'AST-2025-016', assetName:'Ricoh Aficio Photocopier', priority:'High', status:'Open', assignedTo:'Unassigned', created:'2025-05-28', dept:'Admin', category:'Electrical Issue' },
{ id:'TKT-006', title:'Network switch port failure', asset:'AST-2025-008', assetName:'Cisco Catalyst 9300', priority:'Critical', status:'Resolved', assignedTo:'IT Team', created:'2025-05-24', dept:'IT', category:'Network Issue' },
{ id:'TKT-007', title:'UPS battery replacement due', asset:'AST-2025-012', assetName:'APC Smart UPS 3KVA', priority:'High', status:'Pending Parts', assignedTo:'Vendor', created:'2025-05-25', dept:'IT', category:'Battery Replacement' },
{ id:'TKT-008', title:'Server fan making loud noise', asset:'AST-2025-004', assetName:'Dell PowerEdge R740', priority:'Medium', status:'In Progress', assignedTo:'Dell Support',created:'2025-05-27', dept:'IT', category:'Hardware Issue' }
],
purchaseRequests: [
{ id:'PR-2025-001', item:'Dell Laptop i7 Gen 13', qty:5, estCost:425000, dept:'IT', requester:'Priya Kumar', status:'Approved', date:'2025-05-10', justification:'New developer hires Q2 onboarding', poRef:'PO-2025-001' },
{ id:'PR-2025-002', item:'Office Chairs Mesh Type', qty:20, estCost:280000, dept:'Admin', requester:'Deepak Joshi', status:'Pending', date:'2025-05-20', justification:'Old chairs worn out, ergonomic upgrade', poRef:null },
{ id:'PR-2025-003', item:'TP-Link WAP EAP670', qty:8, estCost:96000, dept:'IT', requester:'Kavya Nair', status:'Approved', date:'2025-05-18', justification:'Wi-Fi dead zones on floor 3 and 4', poRef:'PO-2025-002' },
{ id:'PR-2025-004', item:'Epson Projector Lamp Kit', qty:2, estCost:14000, dept:'Admin', requester:'Deepak Joshi', status:'Pending', date:'2025-05-25', justification:'TKT-004 Lamp life expired', poRef:null },
{ id:'PR-2025-005', item:'UPS Replacement Batteries', qty:1, estCost:18000, dept:'IT', requester:'Arjun Sharma', status:'Submitted', date:'2025-05-27', justification:'TKT-007 Battery at 15% health', poRef:null },
{ id:'PR-2025-006', item:'Ricoh Toner Cartridges', qty:10, estCost:22000, dept:'Admin', requester:'Deepak Joshi', status:'Submitted', date:'2025-05-28', justification:'Stock depleted photocopier usage high', poRef:null },
{ id:'PR-2025-007', item:'iPad Pro 12.9" M4', qty:3, estCost:195000, dept:'Marketing', requester:'Sneha Patel', status:'Rejected', date:'2025-05-15', justification:'Field sales presentations & demos', poRef:null },
{ id:'PR-2025-008', item:'Cisco IP Phones 8841', qty:15, estCost:277500, dept:'HR', requester:'Anita Singh', status:'Draft', date:'2025-05-28', justification:'Office expansion new HR team seats', poRef:null }
],
vendors: [
{ id:'v001', name:'Dell India Pvt. Ltd.', contact:'Suresh Iyer', email:'suresh.iyer@dell.com', phone:'+91-80-4258-9001', cat:'IT Hardware', gst:'29AAACL0532H1ZV', rating:4.5, status:'Active', contracts:3 },
{ id:'v002', name:'HP India Pvt. Ltd.', contact:'Meera Rao', email:'meera.rao@hp.com', phone:'+91-80-6688-1234', cat:'IT Hardware', gst:'07AAACH0132Q1ZB', rating:4.2, status:'Active', contracts:2 },
{ id:'v003', name:'Cisco Systems India', contact:'Arun Kumar', email:'arun.k@cisco.com', phone:'+91-80-4156-7890', cat:'Networking', gst:'29AAACI0141G1ZM', rating:4.8, status:'Active', contracts:4 },
{ id:'v004', name:'Daikin Aircon India', contact:'Ravi Shenoy', email:'ravi.s@daikin.in', phone:'+91-80-2222-3456', cat:'HVAC', gst:'29AACCD0524P1ZF', rating:3.9, status:'Active', contracts:1 },
{ id:'v005', name:'Godrej Interio', contact:'Priya Menon', email:'priya.m@godrej.com', phone:'+91-22-6796-5000', cat:'Furniture', gst:'27AAACG0534E1ZD', rating:4.0, status:'Active', contracts:1 },
{ id:'v006', name:'Epson India Pvt. Ltd.', contact:'Kiran Shah', email:'kiran.s@epson.in', phone:'+91-80-4600-1234', cat:'AV Equipment', gst:'29AAACE0149N1Z8', rating:4.3, status:'Active', contracts:2 }
],
categories: [
{ id:'c01', name:'Laptops', icon:'💻', count:187, depM:'SLM', depR:20, life:5, parent:'IT Equipment', minStock:10 },
{ id:'c02', name:'Desktops', icon:'🖥️', count:94, depM:'SLM', depR:20, life:5, parent:'IT Equipment', minStock:5 },
{ id:'c03', name:'Servers', icon:'🖥️', count:23, depM:'WDV', depR:30, life:4, parent:'IT Equipment', minStock:2 },
{ id:'c04', name:'Printers', icon:'🖨️', count:34, depM:'SLM', depR:25, life:4, parent:'IT Equipment', minStock:3 },
{ id:'c05', name:'Networking', icon:'🔌', count:67, depM:'WDV', depR:30, life:4, parent:'IT Equipment', minStock:5 },
{ id:'c06', name:'Mobile Devices', icon:'📱', count:145, depM:'SLM', depR:20, life:3, parent:'IT Equipment', minStock:10 },
{ id:'c07', name:'AV Equipment', icon:'📽️', count:29, depM:'SLM', depR:20, life:5, parent:'Electronics', minStock:2 },
{ id:'c08', name:'Displays', icon:'🖥️', count:78, depM:'SLM', depR:25, life:4, parent:'Electronics', minStock:5 },
{ id:'c09', name:'Furniture', icon:'🪑', count:312, depM:'SLM', depR:10, life:10, parent:'Office Furniture', minStock:20 },
{ id:'c10', name:'Vehicles', icon:'🚗', count:8, depM:'WDV', depR:15, life:8, parent:'Fleet', minStock:1 },
{ id:'c11', name:'HVAC', icon:'❄️', count:45, depM:'SLM', depR:15, life:7, parent:'Building Assets', minStock:2 },
{ id:'c12', name:'Power Equipment', icon:'🔋', count:22, depM:'SLM', depR:25, life:4, parent:'Electrical', minStock:2 },
{ id:'c13', name:'Storage', icon:'💾', count:14, depM:'SLM', depR:20, life:5, parent:'IT Equipment', minStock:2 }
],
departments: [
{ id:'d1', name:'Information Technology', code:'IT', head:'Priya Kumar', assetCount:384, headcount:45 },
{ id:'d2', name:'Finance & Accounts', code:'FIN', head:'Rahul Mehta', assetCount:156, headcount:23 },
{ id:'d3', name:'Human Resources', code:'HR', head:'Anita Singh', assetCount:112, headcount:18 },
{ id:'d4', name:'Operations', code:'OPS', head:'Vikram Reddy', assetCount:298, headcount:67 },
{ id:'d5', name:'Marketing', code:'MKT', head:'Sneha Patel', assetCount:187, headcount:31 },
{ id:'d6', name:'Administration', code:'ADMIN', head:'Deepak Joshi', assetCount:110, headcount:12 }
],
locations: [
{ id:'l1', name:'HQ Bengaluru', children: [
{ id:'l1a', name:'Basement', children:[{id:'l1a1',name:'Server Room B1'},{id:'l1a2',name:'Parking B1'}] },
{ id:'l1b', name:'Floor 1', children:[{id:'l1b1',name:'Reception'},{id:'l1b2',name:'Finance Floor 1'},{id:'l1b3',name:'Admin Floor 1'},{id:'l1b4',name:'Operations Floor 1'}] },
{ id:'l1c', name:'Floor 2', children:[{id:'l1c1',name:'IT Dept Floor 2'},{id:'l1c2',name:'HR Floor 2'},{id:'l1c3',name:'Conference Room A'},{id:'l1c4',name:'Conference Room B'}] },
{ id:'l1d', name:'Floor 3', children:[{id:'l1d1',name:'Marketing Floor 3'},{id:'l1d2',name:'Sales Floor'},{id:'l1d3',name:'Executive Suite'}] }
]},
{ id:'l2', name:'Warehouse Whitefield', children:[{id:'l2a',name:'Store A'},{id:'l2b',name:'Store B'}] },
{ id:'l3', name:'Branch Hyderabad', children:[{id:'l3a',name:'Office Floor 1'},{id:'l3b',name:'Office Floor 2'}] }
],
amcContracts: [
{ id:'AMC-001', vendor:'Daikin Aircon India', scope:'25 AC units Annual Maintenance', value:180000, start:'2025-04-01', end:'2026-03-31', status:'Active', nextService:'2025-07-01' },
{ id:'AMC-002', vendor:'Dell India Pvt. Ltd.', scope:'Server Infra 24×7 Onsite Support',value:450000, start:'2025-01-01', end:'2025-12-31', status:'Active', nextService:'2025-06-15' },
{ id:'AMC-003', vendor:'Cisco Systems India', scope:'Network Infrastructure AMC', value:280000, start:'2024-07-01', end:'2025-06-30', status:'Expiring',nextService:'2025-06-01' },
{ id:'AMC-004', vendor:'Godrej Security', scope:'Physical Access Control Systems', value:95000, start:'2025-03-01', end:'2026-02-28', status:'Active', nextService:'2025-09-01' }
],
pmSchedule: [
{ id:'PM-001', asset:'Daikin 1.5T Split AC', assetId:'AST-2025-005', freq:'Quarterly', lastDone:'2025-02-15', nextDue:'2025-05-15', status:'Overdue', assignee:'Daikin AMC Team' },
{ id:'PM-002', asset:'Dell PowerEdge R740 Server', assetId:'AST-2025-004', freq:'Monthly', lastDone:'2025-04-28', nextDue:'2025-05-28', status:'Due Today', assignee:'IT Team' },
{ id:'PM-003', asset:'Honda City (Company Car)', assetId:'AST-2025-014', freq:'Quarterly', lastDone:'2025-03-01', nextDue:'2025-06-01', status:'Upcoming', assignee:'Honda Service' },
{ id:'PM-004', asset:'APC Smart UPS 3KVA', assetId:'AST-2025-012', freq:'Half-Yearly',lastDone:'2024-12-10',nextDue:'2025-06-10', status:'Upcoming', assignee:'IT Team' },
{ id:'PM-005', asset:'Ricoh Aficio Photocopier', assetId:'AST-2025-016', freq:'Quarterly', lastDone:'2025-01-20', nextDue:'2025-04-20', status:'Overdue', assignee:'Ricoh Service' }
],
activityFeed: [
{ user:'Arjun Sharma', av:'AS', color:'#6366F1', action:'assigned', target:'Dell Latitude 5540', detail:'to Priya Kumar', time:'2 hours ago' },
{ user:'Kavya Nair', av:'KN', color:'#10B981', action:'raised ticket', target:'TKT-003', detail:'Printer paper jam Finance', time:'3 hours ago' },
{ user:'Priya Kumar', av:'PK', color:'#10B981', action:'approved PR', target:'PR-2025-001', detail:'5× Dell Laptops', time:'Yesterday' },
{ user:'System', av:'🤖', color:'#6366F1', action:'auto-generated', target:'Depreciation Report', detail:'Monthly SLM run completed', time:'Yesterday' },
{ user:'Deepak Joshi', av:'DJ', color:'#3B82F6', action:'created PR', target:'PR-2025-002', detail:'20× Office Chairs', time:'2 days ago' },
{ user:'Arjun Sharma', av:'AS', color:'#6366F1', action:'disposed', target:'HP ProBook 450 (×2)', detail:'Written off fully depreciated', time:'3 days ago' },
{ user:'Kavya Nair', av:'KN', color:'#10B981', action:'completed PM', target:'Cisco Catalyst 9300', detail:'Monthly firmware update', time:'4 days ago' },
{ user:'Anita Singh', av:'AS', color:'#A855F7', action:'transferred', target:'Cisco IP Phone 8841', detail:'From Admin to HR team', time:'5 days ago' }
],
notifications: [
{ id:'n1', type:'warning', text:'<strong>3 AMC contracts</strong> expiring within 30 days', time:'1 hour ago', read:false },
{ id:'n2', type:'danger', text:'<strong>PM overdue:</strong> Daikin AC & Ricoh Copier service pending', time:'3 hours ago', read:false },
{ id:'n3', type:'info', text:'<strong>8 Purchase Requests</strong> awaiting your approval', time:'Today 9 AM', read:false },
{ id:'n4', type:'warning', text:'<strong>Low stock alert:</strong> Toner cartridges below threshold', time:'Yesterday', read:true },
{ id:'n5', type:'success', text:'Physical audit completed for Floor 2 100% assets verified', time:'2 days ago', read:true }
]
};
// ── Helper Functions ──────────────────────────────────────────
function fmt(n, cur='₹') {
if (n >= 1e7) return `${cur}${(n/1e7).toFixed(2)}Cr`;
if (n >= 1e5) return `${cur}${(n/1e5).toFixed(2)}L`;
if (n >= 1e3) return `${cur}${(n/1e3).toFixed(1)}K`;
return `${cur}${n.toLocaleString('en-IN')}`;
}
function fmtDate(d) {
if (!d || d==='N/A') return 'N/A';
return new Date(d).toLocaleDateString('en-IN',{day:'2-digit',month:'short',year:'numeric'});
}
function statusBadge(s) {
const m = {
'Active':'badge-success','Idle':'badge-warning','Under Maintenance':'badge-info',
'Disposed':'badge-neutral','Lost':'badge-danger','Stolen':'badge-danger',
'Pending':'badge-warning','Approved':'badge-success','Rejected':'badge-danger',
'Draft':'badge-neutral','Submitted':'badge-info','PO Raised':'badge-primary',
'GRN Done':'badge-success','Open':'badge-danger','In Progress':'badge-info',
'Resolved':'badge-success','Closed':'badge-neutral','Pending Parts':'badge-purple',
'Critical':'badge-danger','High':'badge-warning','Medium':'badge-info','Low':'badge-neutral',
'Overdue':'badge-danger','Due Today':'badge-warning','Upcoming':'badge-info',
'Expiring':'badge-warning','Inactive':'badge-neutral'
};
return m[s] || 'badge-neutral';
}
function statusDot(s) {
const m = {
'Active':'var(--success)','Idle':'var(--warning)','Under Maintenance':'var(--info)',
'Disposed':'var(--text-muted)','Lost':'var(--danger)','Open':'var(--danger)',
'In Progress':'var(--info)','Resolved':'var(--success)','Closed':'var(--text-muted)'
};
return m[s] || 'var(--text-muted)';
}