Online Admission From Skill Development & Technical Education Application for Trade Admission Please complete every field marked in the form below. Fields with an upload box require a clear scanned copy or photograph. Trade & Candidate 1 Name of the Trade applied for 2 Full name of the candidate 3 Date of birth Day Month Year 4 Gender Male Female Identification 5 Aadhar number & Kanyashree number (if any) 6 Father's / Husband's name, and Mother's name 7 Address 8 Contact numbers 9 Email ID (if any) Background 10 Nationality 11 Whether physically handicapped? Yes No 12 Community SC ST OBC-A OBC-B General Minority: Yes No Bank Details (Student) 13 Account number, IFSC, bank & branch Qualification Level Board / Institution Year Marks / Grade Below Madhyamik Madhyamik or Equivalent Higher Secondary or 12th Technical Qualification Uploads Passport Size Photo JPG / PNG, one file Choose Photo Qualification Marksheet Photos JPG / PNG, multiple files Choose Marksheets ▸ application.json Copy JSON ${thumbs.join('')} `; root.getElementById('marksheetStatus').textContent = `✓ ${files.length} file${files.length>1?'s':''} selected`; }); form.addEventListener('submit', function(e){ e.preventDefault(); const fd = new FormData(form); const community = fd.getAll('community'); const qualification = {}; root.querySelectorAll('#qualTableBody tr').forEach(tr=>{ const level = tr.getAttribute('data-level'); const inputs = tr.querySelectorAll('input'); qualification[level] = { institution: inputs[0].value || "", year: inputs[1].value || "", marks: inputs[2].value || "" }; }); const payload = { tradeName: fd.get('tradeName') || "", fullName: fd.get('fullName') || "", dateOfBirth: { day: fd.get('dobDay') || "", month: fd.get('dobMonth') || "", year: fd.get('dobYear') || "" }, gender: fd.get('gender') || "", aadharNumber: fd.get('aadhar') || "", kanyashreeNo: fd.get('kanyashree') || "", fatherHusbandName: fd.get('fatherName') || "", motherName: fd.get('motherName') || "", address: fd.get('address') || "", pinCode: fd.get('pinCode') || "", contactStudent: fd.get('contactStudent') || "", contactGuardian: fd.get('contactGuardian') || "", email: fd.get('email') || "", nationality: fd.get('nationality') || "", physicallyHandicapped: fd.get('physicallyHandicapped') || "", community: community, minority: fd.get('minority') || "", bankDetails: { accountNo: fd.get('acNo') || "", ifsc: fd.get('ifsc') || "", bankName: fd.get('bankName') || "", branchName: fd.get('branchName') || "" }, qualification: qualification, uploads: { passportPhoto: photoData ? { name: photoData.name, type: photoData.type, size: photoData.size, dataUrl: "[base64 omitted for display]" } : null, qualificationMarksheets: marksheetData.map(m => ({ name: m.name, type: m.type, size: m.size, dataUrl: "[base64 omitted for display]" })) } }; const wrap = root.getElementById('json-output-wrap'); wrap.classList.add('show'); root.getElementById('jsonPanel').textContent = JSON.stringify(payload, null, 2); wrap.scrollIntoView({ behavior: 'smooth', block: 'start' }); // keep full base64 available on window for actual downstream use window.__tradeApplicationPayloadFull = Object.assign({}, payload, { uploads: { passportPhoto: photoData, qualificationMarksheets: marksheetData } }); }); root.getElementById('copyJsonBtn').addEventListener('click', function(){ const text = root.getElementById('jsonPanel').textContent; navigator.clipboard && navigator.clipboard.writeText(text); this.textContent = 'Copied!'; setTimeout(()=>{ this.textContent = 'Copy JSON'; }, 1500); }); })();