ÿþ<!DOCTYPE html> <html lang="hi"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>UP TET Paper-II (, > 2 5 ?  > 8  5  6 ?  M 7 > 6 > 8 M $ M 0 ) & H ( ?   - M / > 8  ( 0 G  0 </title> <link href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Ctext x='50' y='50' font-size='50' text-anchor='middle' dy='.3em' fill='%234361ee'%3E=ØÚÜ%3C/text%3E%3C/svg%3E" rel="icon"> <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> <style> :root { --primary: #2b5c8f; --primary-dark: #1e3e62; --secondary: #4a9eff; --danger: #e63946; --success: #2a9d8f; --light: #f8f9fa; --dark: #212529; --gray: #6c757d; --border-radius: 12px; --box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1); --transition: all 0.3s ease; } * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; } body { background: linear-gradient(135deg, #f0f4f8 0%, #d9e2ec 100%); min-height: 100vh; display: flex; justify-content: center; align-items: center; padding: 20px; color: var(--dark); line-height: 1.6; } .container { width: 100%; max-width: 950px; background: white; border-radius: var(--border-radius); box-shadow: var(--box-shadow); overflow: hidden; transition: var(--transition); animation: fadeIn 0.5s ease-out; } @keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .header { background: linear-gradient(135deg, var(--primary), var(--primary-dark)); color: white; padding: 30px 20px; text-align: center; position: relative; overflow: hidden; } .header::before { content: ''; position: absolute; top: -50px; right: -50px; width: 150px; height: 150px; background: rgba(255, 255, 255, 0.1); border-radius: 50%; } .header h1 { font-size: 1.8rem; margin-bottom: 10px; font-weight: 700; position: relative; z-index: 1; } .header p { font-size: 1rem; opacity: 0.9; position: relative; z-index: 1; } .content-area { padding: 30px; } .hidden { display: none !important; } .btn { display: inline-block; padding: 12px 28px; border-radius: 50px; font-weight: 600; cursor: pointer; transition: var(--transition); border: none; text-align: center; box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1); margin: 10px 5px; } .btn-primary { background: var(--primary); color: white; } .btn-primary:hover { background: var(--primary-dark); transform: translateY(-2px); } .btn-success { background: var(--success); color: white; } .btn-success:hover { background: #21867a; transform: translateY(-2px); } .btn-danger { background: var(--danger); color: white; } .btn-danger:hover { background: #c1121f; transform: translateY(-2px); } .btn-level { background: var(--light); color: var(--dark); border: 2px solid var(--gray); font-size: 1.2rem; padding: 15px 30px; width: 200px; } .btn-level:hover { transform: translateY(-5px); box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2); } .btn-level.selected { background: var(--primary); color: white; border-color: var(--primary); } .btn-group { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; margin: 20px 0; } .level-buttons { display: flex; justify-content: center; gap: 20px; margin: 30px 0; flex-wrap: wrap; } .section-title { text-align: center; margin-bottom: 25px; color: var(--primary-dark); font-size: 1.5rem; position: relative; padding-bottom: 10px; } .section-title::after { content: ''; position: absolute; bottom: 0; left: 50%; transform: translateX(-50%); width: 80px; height: 3px; background: var(--secondary); border-radius: 3px; } .checkbox-container { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 15px; margin: 25px 0; max-height: 450px; overflow-y: auto; padding: 10px; border: 1px solid #eee; border-radius: 12px; background: #fff; } .checkbox-item { display: flex; align-items: center; } .checkbox-item input { margin-right: 10px; width: 18px; height: 18px; cursor: pointer; } .checkbox-item label { cursor: pointer; font-size: 0.9rem; font-weight: 500; } .question { margin-bottom: 20px; page-break-inside: avoid; } .question-text { font-weight: 500; margin-bottom: 8px; } .option { margin-left: 20px; margin-bottom: 5px; } .action-buttons { display: flex; justify-content: center; flex-wrap: wrap; gap: 15px; margin-top: 40px; } .answer-sheet { margin-top: 40px; padding: 20px; background: #f8f9fa; border-radius: var(--border-radius); } .answer-table { width: 100%; border-collapse: collapse; margin-top: 15px; } .answer-table th, .answer-table td { border: 1px solid #ddd; padding: 8px; text-align: center; } .answer-table th { background-color: var(--primary); color: white; } .streak-container { display: flex; justify-content: center; align-items: center; margin: 20px 0; gap: 15px; flex-wrap: wrap; } .streak-counter { background: var(--success); color: white; padding: 10px 20px; border-radius: 50px; font-weight: bold; } .date-display { font-size: 1.1rem; font-weight: 600; color: var(--primary-dark); } .progress-container { margin: 20px 0; background: #f8f9fa; padding: 20px; border-radius: var(--border-radius); } .progress-bar { height: 10px; background: #e9ecef; border-radius: 5px; overflow: hidden; margin-top: 10px; } .progress-fill { height: 100%; background: var(--success); border-radius: 5px; transition: width 0.5s ease; } .problem-of-day { background: linear-gradient(135deg, #fff5f5, #fff0f6); border-left: 4px solid var(--danger); padding: 20px; margin: 20px 0; border-radius: var(--border-radius); } .daily-summary { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 15px; margin: 20px 0; } .summary-card { flex: 1; min-width: 120px; background: white; padding: 15px; border-radius: var(--border-radius); box-shadow: 0 4px 10px rgba(0,0,0,0.05); text-align: center; } .home-icon { position: absolute; top: 20px; left: 20px; color: white; font-size: 24px; cursor: pointer; transition: var(--transition); z-index: 2; } .home-icon:hover { transform: scale(1.1); } .instructions { margin-bottom: 30px; padding: 20px; background: #eef2fa; border-radius: var(--border-radius); } .instructions ol { padding-left: 20px; margin-top: 10px; } @media (max-width: 768px) { .header h1 { font-size: 1.4rem; } .btn-level { width: 160px; font-size: 1rem; } .checkbox-container { grid-template-columns: 1fr; } } @media print { .action-buttons, .streak-container, .progress-container, .problem-of-day, .daily-summary, .home-icon { display: none; } } .text-center { text-align: center; } </style> </head> <body> <div class="container" id="startContainer"> <div class="header"> <a href="up-tet-exam-paper2-daily-practice-problem-generator.html" class="home-icon" ><i class="fas fa-home"></i></a> <h1>UP TET (Paper-II) , > 2 5 ?  > 8  5  6 ?  M 7 > 6 > 8 M $ M 0 </h1> <p>& H ( ?   - M / > 8 8 . 8 M / >  ( 0 G  0 (9 ?  & @ /8  8 M  C $ . > ' M / . )</p> </div> <div class="content-area"> <div id="startScreen"> <h2 class="section-title">, > 2 5 ?  > 8 , 6 ?  M 7 # 5 ? ' ? / >   5  8 . > 5 G 6 @ 6 ?  M 7 > </h2> <div class="streak-container"> <div class="streak-counter"><i class="fas fa-fire"></i> 2  > $ > 0 : <span id="streakDays">0</span> & ? ( </div> <div class="date-display" id="currentDate"></div> </div> <div class="progress-container"> <h3> *  @ * M 0  $ ? </h3> <div class="progress-bar"><div class="progress-fill" id="progressFill" style="width: 0%"></div></div> <p id="progressText">0% * B 0 M # </p> </div> <div class="btn-group"> <button class="btn btn-primary" id="problemOfDayBtn">& ? (  @ 5 ? 6 G 7 8 . 8 M / > </button> <button class="btn btn-success" id="customPracticeBtn">5 ? 7 / 5 > 0  8 M  .  - M / > 8 </button> </div> </div> <div id="subjectSelection" class="hidden"> <h2 class="section-title">* G * 0 -II: , > 2 5 ?  > 8  5  6 ?  M 7 > 6 > 8 M $ M 0 </h2> <div class="btn-group"><button class="btn btn-primary" id="selectPedagogyBtn">, > 2 5 ?  > 8 ,  ' ?  . 8 ? & M ' > ( M $ , 6 ?  M 7 # 5 ? ' ? / >   5  8 . > 5 G 6 @ 6 ?  M 7 > </button></div> </div> <div id="topicSelection" class="hidden"> <h2 class="section-title"> ' M / > / K   >  / (  0 G  (( 5 @ ( $ . UP TET * > M /  M 0 . )</h2> <form id="topicForm"> <div class="checkbox-container" id="topicsContainer"></div> </form> <div class="btn-group"> <button class="btn btn-danger" id="backToStartBtn">* M 0 > 0  - * C 7 M </button> <button class="btn btn-success" id="generateAssignmentBtn"> - M / > 8 8 G   ( 0 G   0 G  </button> </div> </div> <div id="levelSelection" class="hidden"> <h2 class="section-title"> ? ( >  8 M $ 0  A ( G  (UP TET * 0 @  M 7 > 8 M $ 0 )</h2> <p class="text-center"> * ( @ $ H / > 0 @  ( A 8 > 0 8 M $ 0  A ( G  :</p> <div class="level-buttons"> <button class="btn btn-level" id="level1Btn">8 M $ 0 1<br><small> ' > 0 - B $  5 ' > 0 # >   </small></button> <button class="btn btn-level" id="level2Btn">8 M $ 0 2<br><small>. ' M / . (6 ?  M 7  * > $ M 0 $ > * 0 @  M 7 > 8 M $ 0 )</small></button> <button class="btn btn-level" id="level3Btn">8 M $ 0 3<br><small> ( M ( $ (8 . > 2 K  ( > $ M .   ?  $ ( )</small></button> </div> <div class="btn-group"> <button class="btn btn-danger" id="backToTopicsBtn">5 ? 7 /  / ( * 0 5 > * 8 </button> <button class="btn btn-success" id="generateFinalBtn">* M 0 6 M (  G ( 0 G   0 G  </button> </div> </div> </div> </div> <div class="container hidden" id="generatedPaperContainer"></div> <script> const { jsPDF } = window.jspdf; const startContainer = document.getElementById('startContainer'); const startScreen = document.getElementById('startScreen'); const subjectSelection = document.getElementById('subjectSelection'); const topicSelection = document.getElementById('topicSelection'); const levelSelection = document.getElementById('levelSelection'); const generatedPaperContainer = document.getElementById('generatedPaperContainer'); const problemOfDayBtn = document.getElementById('problemOfDayBtn'); const customPracticeBtn = document.getElementById('customPracticeBtn'); const selectPedagogyBtn = document.getElementById('selectPedagogyBtn'); const backToStartBtn = document.getElementById('backToStartBtn'); const generateAssignmentBtn = document.getElementById('generateAssignmentBtn'); const backToTopicsBtn = document.getElementById('backToTopicsBtn'); const generateFinalBtn = document.getElementById('generateFinalBtn'); const level1Btn = document.getElementById('level1Btn'); const level2Btn = document.getElementById('level2Btn'); const level3Btn = document.getElementById('level3Btn'); const homeIcon = document.getElementById('homeIcon'); const streakDays = document.getElementById('streakDays'); const currentDate = document.getElementById('currentDate'); const progressFill = document.getElementById('progressFill'); const progressText = document.getElementById('progressText'); // ======================== , > 2 5 ?  > 8  5  6 ?  M 7 > 6 > 8 M $ M 0 -  ' M / > / 5 > 0 * M 0 6 M ( ! G  > , G 8 (8 . C & M ' ) ======================== const questions = { // 1. , > 2 5 ?  > 8  5  6 ?  M 7 # 5 ? ' ? / >  ( *   ! ) ", > 2 5 ?  > 8  >  0 M % ,  5 6 M /  $ >  5   M 7 G $ M 0 ": { level1: [{ question: ", > 2 5 ?  > 8  > $ > $ M * 0 M / 9 H :", options: [", > 2   > 6 > 0 @ 0 ?  * 0 ? 5 0 M $ ( ", ", > 2  . G   A # > $ M .   5  * 0 ? . > # > $ M .  * 0 ? 5 0 M $ ( ", " G 5 2 . > ( 8 ?  5 ?  > 8 ", " G 5 2 8 > . >  ?  5 ?  > 8 "], answer: "B" }, { question: ", > 2 5 ?  > 8  > 8 0 M 5 > ' ?  * M 0 - > 5 ? $  0 ( G 5 > 2 >  > 0  9 H :", options: ["5  6 > ( A  M 0 . ", "5 > $ > 5 0 # ", "5  6 > ( A  M 0 .  0 5 > $ > 5 0 # & K ( K  ", "* K 7 # "], answer: "C" }], level2: [{ question: "* ? / >  G  G  ( A 8 > 0 , > 2 5 ?  > 8 . G  8 , 8 G . 9 $ M 5 * B 0 M #  5 8 M % >  L ( -8 @ 9 H ?", options: ["8  5 G & @ - > .   5 8 M % > ", "* B 0 M 5 -8   M 0 ? / > $ M .  ", ". B 0 M $ -8   M 0 ? / > $ M .  ", " *  > 0 ?  8   M 0 ? / > $ M .  "], answer: "A" }], level3: [{ question: "5 > /  K $ M 8 M  @  G 8 ? & M ' >  $  G  ( A 8 > 0 '8 . @ * 8 M % 5 ?  > 8  M 7 G $ M 0 ' (ZPD)  >  0 M % 9 H :", options: [", > 2   > 5 0 M $ . > ( 5 ?  > 8 8 M $ 0 ", "8 9 > / $ > 8 G * M 0 > * M $  0 ( G / K  M /  M 7 . $ > ", " 0 M  ? $  M  > (  @ . > $ M 0 > ", " ( A 5  6 ?  8 @ . >   "], answer: "B" }] }, ", > 2 5 ?  > 8  @  5 8 M % >   , 6 > 0 @ 0 ?  , . > ( 8 ?  , 8  5 G  > $ M .  , - > 7 >  5  8 C  ( > $ M .  $ > ": { level1: [{ question: "- > 7 > 5 ?  > 8  G 8 ( M & 0 M - . G  '  -6 , M & 5 >  M / '  0 #  ? 8  / A . G  9 K $ > 9 H ?", options: ["6-8 . > 9 ", "9-12 . > 9 ", "12-18 . > 9 ", "2-3 5 0 M 7 "], answer: "C" }, { question: "8 C  ( > $ M .  $ >  > 5 ?  > 8 8 , 8 G  ' ?   ? 8 8 G 9 K $ > 9 H ?", options: ["0  ( G 8 G ", " ( A  0 # 8 G ", ". A  M $  5   2 M * ( > 6 @ 2 5 > $ > 5 0 # ", " K 0  ( A 6 > 8 ( 8 G "], answer: "C" }], level2: [{ question: "8  5 G  > $ M .  5 ?  > 8 . G  '5 M / >  A 2 $ > '  @  5 8 M % >  ? 8  > 2 . G   ' ?  9 K $ @ 9 H ?", options: ["6 H 6 5 > 5 8 M % > ", ", > 2 M / > 5 8 M % > ", " ? 6 K 0 > 5 8 M % > ", "* M 0 L " < > 5 8 M % > "], answer: "C" }], level3: [{ question: "2 I 0 G  8  K 9 2 , 0 M   G  ( A 8 > 0 ( H $ ?  5 ?  > 8  >  M  $ . 8 M $ 0 9 H :", options: ["* B 0 M 5 -* > 0 . M * 0 ?  ", "* > 0 . M * 0 ?  ", " $ M $ 0 -* > 0 . M * 0 ?  ", "8 > . >  ?  5 M / 5 8 M % > "], answer: "C" }] }, //  ' ?  . (8 @  ( G )  >  0 M % , 8 ? & M ' > ( M $ " ' ?  . 8 ? & M ' > ( M $ (% > 0 M ( ! >   , * H 5 2 5 , 8 M  ? ( 0 ,  K 9 2 0 , * ? / >  G , 5 > /  K $ M 8 M  @ )": { level1: [{ question: "% > 0 M ( ! >    G 8 @  ( G  G  ? 8 ( ? / .  K '* M 0 - > 5  > ( ? / . '  9 >  > $ > 9 H ?", options: ["$ $ M * 0 $ >  > ( ? / . ", " - M / > 8  > ( ? / . ", "* M 0 - > 5  > ( ? / . ", ", 9 A -* M 0 $ ?  M 0 ? / >  > ( ? / . "], answer: "C" }, { question: "8 M  ? ( 0  >  M 0 ? / > -* M 0 8 B $  ( A ,  ' ( 8 ? & M ' >  $  ? 8 * 0  ' > 0 ? $ 9 H ?", options: [" & M & @ *  - ( A  M 0 ? / > ", "* A 0 8 M  > 0  5  & # M ! ", "  $ 0 M & C 7 M  ? ", " ( A  0 # "], answer: "B" }], level2: [{ question: " K 9 2 0  G 8 B  (  $ 0 M & C 7 M  ? ) 8 ? & M ' >  $  > * M 0 / K   ? 8 * 0  ? / >  / > ?", options: [" B 9 G ", " A $ M $ G ", "5 > ( 0 ", ", ? 2 M 2 @ "], answer: "C" }], level3: [{ question: "5 > /  K $ M 8 M  @  G 8 ? & M ' >  $  G  ( A 8 > 0 '.  > ( (scaffolding)'  >  0 M % 9 H :", options: ["6 ?  M 7  & M 5 > 0 >  8 M % > / @ 8 9 > / $ > ", "* 0 @  M 7 > 9 G $ A $ H / > 0 @ ", "* > M / * A 8 M $  ", "* > / K  ( > "], answer: "A" }] }, "6 ?  M 7 #  5  6 ?  M 7 # 5 ? ' >   , 8 B  M 7 M . 6 ?  M 7 # ": { level1: [{ question: "6 ?  M 7 #  > 8 , 8 G . 9 $ M 5 * B 0 M # & M & G 6 M /  M / > 9 H ?", options: ["* 0 @  M 7 > . G  8 + 2 $ > ", " ' ?  .  K 8 > 0 M %  , ( > ( > ", " ( A 6 > 8 ( 8 M % > * ? $  0 ( > ", "* > M / * A 8 M $  8 . > * M $  0 ( > "], answer: "B" }], level2: [{ question: "8 B  M 7 M . 6 ?  M 7 # . G   ? 8  L 6 2 * 0 8 0 M 5 > ' ?  ' M / > ( & ? / >  > $ > 9 H ?", options: ["* M 0 6 M (  L 6 2 ", "5 M / >  M / >  L 6 2 ", "* M 0 8 M $ > 5 ( >  L 6 2 ", "* A ( 0 M , 2 (  L 6 2 "], answer: "D" }], level3: [{ question: "0  ( > 5 > & @ 6 ?  M 7 # & C 7 M  ?  K # . G  6 ?  M 7   @ - B . ?  > 9 K $ @ 9 H :", options: ["8 B  ( >  > 8 M 0 K $ ", ". > 0 M  & 0 M 6   5  8 A  .  0 M $ > ", "( ? /  $ M 0  ", "* 0 @  M 7  "], answer: "B" }] }, "8 . > 5 G 6 @ 6 ?  M 7 > , ( ? 0 M & G 6 (  5  * 0 > . 0 M 6 ": { level1: [{ question: "8 . > 5 G 6 @ 6 ?  M 7 >  >  0 M % 9 H :", options: ["8 - @ ,  M  K   K   8 > % 6 ?  M 7 > ", " G 5 2 & ? 5 M / >   ,  M  K   G 2 ?  6 ?  M 7 > ", "* M 0 $ ? - > 6 > 2 @ ,  M  K   G 2 ?   2    M 7 > ", "( ?  @ 8 M  B 2 K  . G  6 ?  M 7 > "], answer: "A" }], level2: [{ question: "& C 7 M  ? , > ' ? $ ,  M  K   G 2 ?   L ( 8 @ 6 ?  M 7 # 5 ? ' ? 8 0 M 5 > ' ?  * / A  M $ 9 H ?", options: [", M 0 G 2 2 ? * ? ", "8 >   G $ ?  - > 7 > ", " ! ? / K * A 8 M $  G  ", " * 0 K  M $ 8 - @ "], answer: "D" }], level3: [{ question: "UP . G  . # M ! 2 @ / . ( K 5 ?  M  > (  G ( M & M 0  > . A  M / & M & G 6 M /  M / > 9 H ?", options: ["6 ?  M 7  * M 0 6 ?  M 7 # ", ", > 2  K   > . > 0 M  & 0 M 6 (  5  * 0 > . 0 M 6 ", "* > M /  M 0 . ( ? 0 M . > # ", "* 0 @  M 7 >  / K  ( "], answer: "B" }] }, " ' ?  . ,  ' M / / (  0  ' M / > * ( (, > 2   @ 8 K  ,  8 + 2 $ >  G  > 0 # , * M 0 G 0 # > )": { level1: [{ question: ", > 2  5 ? & M / > 2 / . G   8 + 2  M / K  9 K  > $ G 9 H  ? * M 0 . A   > 0 # :", options: [" ( A  ? $ 6 ?  M 7 # 5 ? ' ? / >  ", " - ? * M 0 G 0 # >  @  . @ ", "5 H /  M $ ?  - ? ( M ( $ >  @  ( & G  @ ", " * 0 K  M $ 8 - @ "], answer: "D" }], level2: [{ question: " ' ?  . . G  * M 0 G 0 # > (Motivation)  >  M / > / K  & > ( 9 H ?", options: ["2  M 7 M / * M 0 > * M $ ? 9 G $ A 0 M  > * M 0 & > (  0 ( > ", "8 . / , 0 M , > &  0 ( > ", "$ ( > 5 , " < > ( > ", " G 5 2 , > 9 M / * A 0 8 M  > 0 "], answer: "A" }], level3: [{ question: ", > 2   K '5 H  M  > ( ?   ( M 5 G 7  '  @ $ 0 9 8 @  ( G  G 2 ?   5 6 M /  9 H :", options: ["* M 0 / K  > $ M .   5 8 0 ", " A 2 > 5 > $ > 5 0 # ", " ?  M  > 8 >  K * M 0 K $ M 8 > 9 ( ", " * 0 K  M $ 8 - @ "], answer: "D" }] }, "( ? 0 M & G 6 (  5  * 0 > . 0 M 6 . G  8 9 / K  @ 8  8 M % >   (. ( K 5 ?  M  > ( 6 > 2 > , * M 0 / >  0 >  , ! >    & ? )": { level1: [{ question: " ? 2 > 8 M $ 0 * 0 6 ?  M 7  K   K 5 ? 6 G 7 6 ?  M 7 > 9 G $ A * M 0 6 ?  M 7 ? $  L (  0 $ > 9 H ?", options: ["DIET (. G   0 )", "* M 0 > % . ?  5 ? & M / > 2 / ", "(  0 ( ?  . ", "* A 2 ? 8 5 ? - >  "], answer: "A" }], level2: [{ question: "* M 0 / >  0 >  8 M % ? $ '. ( K 5 ?  M  > ( 6 > 2 > '  ? 8  M 7 G $ M 0 . G  * M 0 8 ? & M ' 9 H ?", options: [", > 2 . ( K 5 ?  M  > ( 6 K ' ", " G 2 . ( K 5 ?  M  > ( ", " * 0 > ' . ( K 5 ?  M  > ( ", " & M / K  . ( K 5 ?  M  > ( "], answer: "A" }], level3: [{ question: "8 . > 5 G 6 @ 6 ?  M 7 > 9 G $ A 8 > . A & > / ?  8 9 / K  8 . ? $ ? / K   > . A  M /  > 0 M /  M / > 9 H ?", options: ["' (   $ M 0  0 ( > ", " >  0 B  $ >  5  8  8 > ' (  A  > ( > ", "* 0 @  M 7 > 2 G ( > ", " ( A 6 > 8 ( & G ( > "], answer: "B" }] } }; // * B 0 M #  ' M / > / 8 B  @ ((  * > M /  M 0 .  ( A 8 > 0 ) const finalTopicList = Object.keys(questions); let selectedTopics = []; let selectedLevel = null; let practiceType = null; // 'custom' or 'daily' let userProgress = { streak: 0, lastPracticeDate: null, totalProblemsSolved: 0, topicsCompleted: 0, totalTopics: finalTopicList.length }; function loadUserProgress() { const saved = localStorage.getItem('upTetPedagogyProgress'); if (saved) userProgress = JSON.parse(saved); const today = new Date().toDateString(); if (userProgress.lastPracticeDate !== today) { const yesterday = new Date(); yesterday.setDate(yesterday.getDate() - 1); if (userProgress.lastPracticeDate === yesterday.toDateString()) userProgress.streak++; else userProgress.streak = 1; userProgress.lastPracticeDate = today; saveUserProgress(); } updateUI(); } function saveUserProgress() { localStorage.setItem('upTetPedagogyProgress', JSON.stringify(userProgress)); } function updateUI() { streakDays.textContent = userProgress.streak; const today = new Date(); currentDate.textContent = today.toLocaleDateString('hi-IN', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }); const percent = Math.round((userProgress.topicsCompleted / userProgress.totalTopics) * 100); progressFill.style.width = `${percent}%`; progressText.textContent = `${percent}% * B 0 M # `; } function getRandomQuestions(topicsArray, level, count) { let allQs = []; topicsArray.forEach(topic => { if (questions[topic] && questions[topic][`level${level}`]) { allQs = allQs.concat(questions[topic][`level${level}`]); } }); if(allQs.length === 0) return []; allQs = allQs.sort(() => Math.random() - 0.5); return allQs.slice(0, count); } function renderTopics() { const container = document.getElementById('topicsContainer'); container.innerHTML = `<div class="checkbox-item"><input type="checkbox" id="fullSyllabus" value="full"><label for="fullSyllabus"><strong>=ØÖÜ 8  * B 0 M # * > M /  M 0 . (8 - @  ' M / > / )</strong></label></div>`; finalTopicList.forEach(topic => { container.innerHTML += `<div class="checkbox-item"><input type="checkbox" id="topic_${topic.replace(/\s/g, '')}" name="topic" value="${topic}"><label for="topic_${topic.replace(/\s/g, '')}">=ØÌÜ ${topic}</label></div>`; }); document.getElementById('fullSyllabus')?.addEventListener('change', (e) => { document.querySelectorAll('input[name="topic"]').forEach(cb => cb.disabled = e.target.checked); }); } customPracticeBtn.addEventListener('click', () => { practiceType = 'custom'; startScreen.classList.add('hidden'); subjectSelection.classList.remove('hidden'); }); selectPedagogyBtn.addEventListener('click', () => { renderTopics(); subjectSelection.classList.add('hidden'); topicSelection.classList.remove('hidden'); }); backToStartBtn.addEventListener('click', () => { topicSelection.classList.add('hidden'); startContainer.classList.remove('hidden'); startScreen.classList.remove('hidden'); updateUI(); }); generateAssignmentBtn.addEventListener('click', () => { const full = document.getElementById('fullSyllabus')?.checked; if (full) selectedTopics = [...finalTopicList]; else { selectedTopics = Array.from(document.querySelectorAll('input[name="topic"]:checked')).map(cb => cb.value); } if (selectedTopics.length === 0) { alert(" C * / >  . 8 G  .    ' M / > /  A ( G  / > 8  * B 0 M # * > M /  M 0 .  A ( G  !"); return; } topicSelection.classList.add('hidden'); levelSelection.classList.remove('hidden'); }); backToTopicsBtn.addEventListener('click', () => { levelSelection.classList.add('hidden'); topicSelection.classList.remove('hidden'); }); [level1Btn, level2Btn, level3Btn].forEach((btn, idx) => { btn.addEventListener('click', () => { [level1Btn, level2Btn, level3Btn].forEach(b => b.classList.remove('selected')); btn.classList.add('selected'); selectedLevel = idx+1; });}); generateFinalBtn.addEventListener('click', () => { if (!selectedLevel) { alert(" C * / >  ? ( >  8 M $ 0  A ( G  !"); return; } generateAssignment(); }); function generateAssignment() { startContainer.classList.add('hidden'); levelSelection.classList.add('hidden'); generatedPaperContainer.classList.remove('hidden'); const topicNames = selectedTopics.join(", "); const mcqs = getRandomQuestions(selectedTopics, selectedLevel, 10); if(mcqs.length === 0) { alert(" / ( ? $  ' M / > / /8 M $ 0  G 2 ?  * 0 M / > * M $ * M 0 6 M ( ( 9 @  9 H  ,  C * / >  ( M / 8 M $ 0 / >  ' M / > /  A ( G  d "); backToStart(); return; } let paperContent = ` <div class="header"> <h2>UP TET (Paper-II) , > 2 5 ?  > 8  5  6 ?  M 7 > 6 > 8 M $ M 0  - M / > 8 8 G  </h2> <h3>${selectedTopics.length === finalTopicList.length ? "8  * B 0 M # * > M /  M 0 . (, > 2 5 ?  > 8 ,  ' ?  . 8 ? & M ' > ( M $ , 8 . > 5 G 6 @ 6 ?  M 7 > )" : topicNames.substring(0, 70)}</h3> <p>8 M $ 0 ${selectedLevel} - ${selectedLevel === 1 ? " ' > 0 - B $ " : selectedLevel === 2 ? ". ' M / . (TET 8 M $ 0 )" : " ( M ( $ (8 . > 2 K  ( > $ M .  )"}</p> </div> <div class="content-area"> <div class="instructions"><p><strong>( ? 0 M & G 6 :</strong></p><ol><li> 8 8 G  . G  10 , 9 A 5 ?  2 M * @ / * M 0 6 M ( 9 H  d </li><li>* M 0 $ M / G  * M 0 6 M (  G  > 0 5 ?  2 M * 9 H  ,  G 5 2   8 9 @ 9 H d </li><li> - M / > 8 20 . ? (  . G  * B 0 >  0 G  d </li><li> $ M $ 0  A   @ 8 G 8 M 5 /  . B 2 M / >   (  0 G  d </li><li>* M 0 $ M / G  * M 0 6 M ( UP TET * 0 @  M 7 > * H  0 M ( * 0  ' > 0 ? $ 9 H d </li></ol></div> <div class="question-section"><div class="section-heading" style="font-size:1.3rem; font-weight:bold; margin-bottom:20px;">=ØÝÜ  - M / > 8 * M 0 6 M ( </div>`; let qNum = 1; mcqs.forEach(mcq => { paperContent += `<div class="question"><div class="question-text">${qNum}. ${mcq.question}</div> <div class="option">(A) ${mcq.options[0]}</div><div class="option">(B) ${mcq.options[1]}</div> <div class="option">(C) ${mcq.options[2]}</div><div class="option">(D) ${mcq.options[3]}</div></div>`; qNum++; }); paperContent += `</div><div class="answer-sheet"><h3 class="section-title">=ØÝ $ M $ 0  A   @ (8 9 @ $ M $ 0 )</h3> <table class="answer-table"><thead><tr><th>* M 0 6 M ( 8  .</th><th> $ M $ 0 </th><th>* M 0 6 M ( 8  .</th><th> $ M $ 0 </th></tr></thead><tbody>`; for (let i = 0; i < mcqs.length; i += 2) { paperContent += `<tr><td>${i+1}</td><td>${mcqs[i].answer}</td>`; if (i+1 < mcqs.length) paperContent += `<td>${i+2}</td><td>${mcqs[i+1].answer}</td>`; else paperContent += `<td></td><td></td>`; paperContent += `</tr>`; } paperContent += `</tbody></table></div> <div class="action-buttons"><button class="btn btn-success" id="markCompleteBtn"><i class="fas fa-check-circle"></i>  - M / > 8 * B 0 M #  ? 9 M ( ? $  0 G  </button> <button class="btn btn-primary" id="printBtn"><i class="fas fa-print"></i> * M 0 ?   /PDF</button> <button class="btn btn-danger" id="newAssignmentBtn"><i class="fas fa-arrow-left"></i> ( / >  - M / > 8 </button></div></div>`; generatedPaperContainer.innerHTML = paperContent; document.getElementById('markCompleteBtn')?.addEventListener('click', markPracticeComplete); document.getElementById('printBtn')?.addEventListener('click', () => window.print()); document.getElementById('newAssignmentBtn')?.addEventListener('click', backToStart); } function markPracticeComplete() { userProgress.totalProblemsSolved += 10; let completedCount = 0; if (selectedTopics.length > 0 && !(selectedTopics.length === finalTopicList.length)) { selectedTopics.forEach(t => { if (finalTopicList.includes(t)) completedCount++; }); userProgress.topicsCompleted = Math.max(userProgress.topicsCompleted, completedCount); } else if (selectedTopics.length === finalTopicList.length) userProgress.topicsCompleted = userProgress.totalTopics; saveUserProgress(); updateUI(); alert("<Ø‰ß 6 > ( & > 0 !  *  >  - M / > 8 8 $ M 0 * B 0 M # 9 A  d * M 0  $ ? 8 9 G  @   d UP TET  @ $ H / > 0 @ ( ? 0  $ 0  > 0 @ 0  G  !"); backToStart(); } function generateProblemOfDay() { const randomTopic = finalTopicList[Math.floor(Math.random() * finalTopicList.length)]; const randomLevel = Math.floor(Math.random() * 3) + 1; selectedTopics = [randomTopic]; selectedLevel = randomLevel; startContainer.classList.add('hidden'); generatedPaperContainer.classList.remove('hidden'); const mcqs = getRandomQuestions(selectedTopics, selectedLevel, 1); if(mcqs.length === 0) { backToStart(); alert("$  ( @  @ 8 . 8 M / > , * A (  * M 0 / > 8  0 G  "); return; } let paperContent = ` <div class="header"><h2>UP TET , > 2 5 ?  > 8  5  6 ?  M 7 > 6 > 8 M $ M 0 </h2><h3>(' & ? (  @ 5 ? 6 G 7 8 . 8 M / > ('</h3><p>${randomTopic} " 8 M $ 0 ${randomLevel}</p></div> <div class="content-area"><div class="problem-of-day"><h3><i class="fas fa-star-of-life"></i>    @ TET  H 2 G   </h3><p> * ( @ 2  > $ > 0 , ( >  0  ( G  G 2 ?   8 8 . 8 M / >  K 9 2  0 G   0 6 ?  M 7  , ( ( G  @  0    & . , " < >   !</p></div> <div class="daily-summary"><div class="summary-card"><h4>=Ø%Ý 2  > $ > 0 </h4><p>${userProgress.streak} & ? ( </p></div> <div class="summary-card"><h4>=ØÊÜ  A 2 9 2 * M 0 6 M ( </h4><p>${userProgress.totalProblemsSolved}</p></div> <div class="summary-card"><h4>=ØÚÜ  ' M / > / * M 0  $ ? </h4><p>${Math.round((userProgress.topicsCompleted / userProgress.totalTopics) * 100)}%</p></div></div> <div class="instructions"><p><strong>5 ? 6 G 7 ( ? 0 M & G 6 :</strong></p><ol><li>* M 0 6 M ( TET 8 M $ 0 * 0  ' > 0 ? $ 9 H d </li><li>5 . ? (  . G  9 2  0 G  d </li><li>5 M / >  M / > * " <  0  5 ' > 0 # > 8 M * 7 M   0 G  d </li></ol></div> <div class="question-section"><div class="section-heading"><Ø¯ß & ? (  > * M 0 6 M ( </div>`; mcqs.forEach(mcq => { paperContent += `<div class="question"><div class="question-text">${mcq.question}</div> <div class="option">(A) ${mcq.options[0]}</div><div class="option">(B) ${mcq.options[1]}</div> <div class="option">(C) ${mcq.options[2]}</div><div class="option">(D) ${mcq.options[3]}</div></div>`; }); paperContent += `</div><div class="answer-sheet"><h3 class="section-title">=ØÖÜ 8 . > ' > (  5  5 M / >  M / > </h3> <p><strong>8 9 @ $ M $ 0 :</strong> ${mcqs[0].answer}</p><p><strong>5 M / >  M / > :</strong> / 9 * M 0 6 M ( ${randomTopic}  G . 9 $ M 5 * B 0 M # * 9 2 B * 0  ' > 0 ? $ 9 H d UP TET * 0 @  M 7 > . G   8 * M 0  > 0  G * M 0 6 M (   M 8 0 * B  G  > $ G 9 H  d </p></div> <div class="action-buttons"><button class="btn btn-success" id="markCompleteBtn"><i class="fas fa-check"></i> * B 0 M #  ? 9 M ( ? $  0 G  </button> <button class="btn btn-primary" id="printBtn"><i class="fas fa-print"></i> * M 0 ?    0 G  </button> <button class="btn btn-danger" id="newAssignmentBtn"><i class="fas fa-home"></i> 9 K . * G  </button></div></div>`; generatedPaperContainer.innerHTML = paperContent; document.getElementById('markCompleteBtn')?.addEventListener('click', () => { userProgress.totalProblemsSolved++; saveUserProgress(); updateUI(); alert(", ' >  9 K !    @ 8 . 8 M / > 9 2  @ d  2 (  8 . 8 M / >  G 2 ?  5 > * 8    d "); backToStart(); }); document.getElementById('printBtn')?.addEventListener('click', () => window.print()); document.getElementById('newAssignmentBtn')?.addEventListener('click', backToStart); } function backToStart() { generatedPaperContainer.classList.add('hidden'); startContainer.classList.remove('hidden'); topicSelection.classList.add('hidden'); levelSelection.classList.add('hidden'); subjectSelection.classList.add('hidden'); startScreen.classList.remove('hidden'); updateUI(); selectedTopics = []; selectedLevel = null; } problemOfDayBtn.addEventListener('click', generateProblemOfDay); homeIcon.addEventListener('click', (e) => { e.preventDefault(); backToStart(); }); document.addEventListener('DOMContentLoaded', () => { loadUserProgress(); }); </script> </body> </html>