ÿþ<!DOCTYPE html> <html lang="hi"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>UP TET * G * 0 -1 | * 0 M / > 5 0 #  ' M / / ( (EVS) | & 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%3Ccircle cx='50' cy='50' r='45' fill='%234361ee'/%3E%3Ctext x='50' y='68' font-size='48' text-anchor='middle' fill='white' font-weight='bold'%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: #2e7d32; --primary-dark: #1b5e20; --secondary: #43a047; --danger: #f72585; --success: #4cc9f0; --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', 'Poppins', system-ui, sans-serif; } body { background: linear-gradient(135deg, #e8f5e9 0%, #c8e6c9 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: 1100px; 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; bottom: 10px; right: 20px; font-size: 70px; opacity: 0.1; } .header h1 { font-size: 1.9rem; margin-bottom: 10px; font-weight: 700; letter-spacing: -0.5px; } .header p { font-size: 1rem; opacity: 0.9; } .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: #2e7d32; color: white; } .btn-success:hover { background: #1b5e20; transform: translateY(-2px); } .btn-danger { background: var(--danger); color: white; } .btn-danger:hover { background: #d3166b; transform: translateY(-2px); } .btn-level { background: var(--light); color: var(--dark); border: 2px solid var(--gray); font-size: 1.1rem; padding: 14px 28px; 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: 12px; margin: 20px 0; } .level-buttons { display: flex; justify-content: center; gap: 25px; margin: 30px 0; flex-wrap: wrap; } .section-title { text-align: center; margin-bottom: 25px; color: var(--primary-dark); font-size: 1.6rem; position: relative; padding-bottom: 12px; font-weight: 600; } .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(310px, 1fr)); gap: 14px; margin: 25px 0; max-height: 480px; overflow-y: auto; padding: 15px; border: 1px solid #e2e8f0; border-radius: 18px; background: #fafef7; } .checkbox-item { display: flex; align-items: center; background: white; padding: 8px 12px; border-radius: 40px; transition: all 0.2s; border: 1px solid #e9ecef; } .checkbox-item:hover { background: #e8f5e9; transform: translateX(3px); } .checkbox-item input { margin-right: 12px; width: 18px; height: 18px; cursor: pointer; accent-color: var(--primary); } .checkbox-item label { cursor: pointer; font-size: 0.92rem; font-weight: 500; } .question { margin-bottom: 25px; page-break-inside: avoid; background: #ffffff; padding: 15px; border-radius: 16px; box-shadow: 0 1px 2px rgba(0,0,0,0.05); border-left: 4px solid var(--secondary); } .question-text { font-weight: 700; margin-bottom: 12px; font-size: 1.05rem; color: #2d3748; } .option { margin-left: 24px; margin-bottom: 6px; color: #4a5568; } .action-buttons { display: flex; justify-content: center; flex-wrap: wrap; gap: 18px; margin-top: 40px; } .answer-sheet { margin-top: 40px; padding: 20px; background: #f0faf4; border-radius: var(--border-radius); } .answer-table { width: 100%; border-collapse: collapse; margin-top: 15px; border-radius: 12px; overflow: hidden; } .answer-table th, .answer-table td { border: 1px solid #cbd5e0; padding: 10px; text-align: center; } .answer-table th { background-color: var(--primary); color: white; font-weight: 600; } .streak-container { display: flex; justify-content: center; align-items: center; margin: 20px 0; gap: 20px; flex-wrap: wrap; } .streak-counter { background: #ff9100; color: white; padding: 10px 20px; border-radius: 60px; font-weight: bold; box-shadow: 0 4px 10px rgba(0,0,0,0.1); } .date-display { font-size: 1rem; font-weight: 600; background: #e2e8f0; padding: 8px 18px; border-radius: 40px; color: var(--primary-dark); } .progress-container { margin: 20px 0; background: #edf2f7; padding: 20px; border-radius: 28px; } .progress-bar { height: 12px; background: #cbd5e0; border-radius: 20px; overflow: hidden; margin-top: 12px; } .progress-fill { height: 100%; background: var(--secondary); border-radius: 20px; transition: width 0.5s ease; } .problem-of-day { background: linear-gradient(115deg, #fff6e5, #ffedd5); border-left: 5px solid var(--danger); padding: 20px; margin: 20px 0; border-radius: 24px; } .daily-summary { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 15px; margin: 20px 0; } .summary-card { flex: 1; min-width: 110px; background: white; padding: 15px; border-radius: 20px; box-shadow: 0 8px 20px rgba(0,0,0,0.05); text-align: center; border: 1px solid #e2e8f0; } .home-icon { position: absolute; top: 20px; left: 20px; color: white; font-size: 26px; cursor: pointer; transition: transform 0.2s; z-index: 5; background: rgba(0,0,0,0.2); width: 40px; height: 40px; border-radius: 50%; display: flex; align-items: center; justify-content: center; } .home-icon:hover { transform: scale(1.08); background: rgba(0,0,0,0.4); } .instructions { margin-bottom: 30px; padding: 18px 22px; background: #f7fafc; border-radius: 24px; border: 1px solid #e2e8f0; } @media (max-width: 680px) { .header h1 { font-size: 1.3rem; } .btn-level { width: 140px; font-size: 0.9rem; padding: 12px 16px; } .checkbox-container { grid-template-columns: 1fr; } } @media print { .action-buttons, .streak-container, .progress-container, .problem-of-day, .daily-summary, .home-icon { display: none; } .question { break-inside: avoid; } } </style> </head> <body> <div class="container" id="startContainer"> <div class="header"> <a href="up-tet-exam-paper1-daily-practice-problem-generator.html" class="home-icon" ><i class="fas fa-leaf"></i></a> <h1><i class="fas fa-globe-asia"></i> UP TET * G * 0 -1</h1> <p>* 0 M / > 5 0 #  ' M / / ( (EVS) | & H ( ?   - M / > 8 8 . 8 M / >  ( 0 G  0 (9 ?  & @ . G  )</p> </div> <div class="content-area"> <div id="startScreen"> <h2 class="section-title"><Øß * 0 M / > 5 0 #  ' M / / ( (EVS)</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><i class="fas fa-chart-line"></i>  *  @ * M 0  $ ? </h3> <div class="progress-bar"><div class="progress-fill" id="progressFill" style="width: 0%"></div></div> <p id="progressText" style="margin-top: 8px;">0% * B 0 M # </p> </div> <div class="btn-group"> <button class="btn btn-primary" id="problemOfDayBtn"><i class="fas fa-calendar-day"></i> & ? (  @ 8 . 8 M / > </button> <button class="btn btn-success" id="customPracticeBtn"><i class="fas fa-pen-ruler"></i>  8 M  .  - M / > 8 </button> </div> </div> <div id="subjectSelection" class="hidden"> <h2 class="section-title"><Ø¯ß 5 ? 7 /  / ( </h2> <div class="btn-group"><button class="btn btn-primary" id="selectEVSBtn"><i class="fas fa-tree"></i> * 0 M / > 5 0 #  ' M / / ( (EVS)</button></div> </div> <div id="topicSelection" class="hidden"> <h2 class="section-title">=ØÚÜ  ' M / > / K   >  / (  0 G  (25  ' M / > / )</h2> <form id="topicForm"> <div class="checkbox-container" id="topicsContainer"></div> </form> <div class="btn-group"> <button class="btn btn-danger" id="backToStartBtn"><i class="fas fa-arrow-left"></i> * M 0 > 0  - * 0 5 > * 8 </button> <button class="btn btn-success" id="generateAssignmentBtn"><i class="fas fa-cogs"></i>  - M / > 8 * M 0 6 M (  G ( 0 G   0 G  </button> </div> </div> <div id="levelSelection" class="hidden"> <h2 class="section-title">¡&  ? ( >  8 M $ 0  A ( G  </h2> <p class="text-center" style="text-align:center; margin-bottom:10px;"> * ( G TET 8 M $ 0  G  ( A 8 > 0  A ( G  :</p> <div class="level-buttons"> <button class="btn btn-level" id="level1Btn">8 M $ 0 1 <br><small>, G 8 ?  / TET  ' > 0 </small></button> <button class="btn btn-level" id="level2Btn">8 M $ 0 2 <br><small>. ' M / . (UP TET . > (  )</small></button> <button class="btn btn-level" id="level3Btn">8 M $ 0 3 <br><small> ( M ( $ (5 ? 6 M 2 G 7 # > $ M .  )</small></button> </div> <div class="btn-group"> <button class="btn btn-danger" id="backToTopicsBtn">5 ? 7 / K  * 0 5 > * 8 </button> <button class="btn btn-success" id="generateFinalBtn"> - M / > 8 * 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'); // ======================== * 0 M / > 5 0 #  ' M / / ( (EVS) - 25  ' M / > / ======================== const chaptersList = [ "* 0 ? 5 > 0 (Family)", "- K  ( , 8 M 5 > 8 M % M /  5  8 M 5  M  $ > (Food, Health and Hygiene)", " 5 > 8 (Shelter)", "* G ! < -* L ' G 5  ( M $ A (Plants and Animals)", "9 . > 0 > * 0 ? 5 G 6 (Our Surroundings)", " 0 M  ? $ . G 2 G (Famous Fairs)", "8 M % > ( @ / * G 6 G  5  5 M / 5 8 > / (Local Professions and Occupations)", " 2 (Water)", "/ > $ > / > $  5  8   > 0 (Transport and Communication)", " G 2 5  G 2 - > 5 ( > (Sports and Sportsmanship)", "9 . > 0 @ * C % M 5 @ (5 ? 6 M 5  G . 9 > & M 5 @ *  5  . 9 > 8 >  0 ) (Our Earth: Continents and Oceans)", "- > 0 $  > - L $ ?  8 M 5 0 B * (Physical Form of India)", "9 . > 0 > * M 0 & G 6 : ( & ? / >  , * 0 M 5 $ , * > 0 , 5 (  5  / > $ > / > $ (Our State)", "- > 0 $ @ / 8  5 ? ' > ( (Indian Constitution)", "- > 0 $ @ / 6 > 8 ( 5 M / 5 8 M % > (Indian Governance System)", "0 > 7 M  M 0 @ / * 0 M 5 , 0 > 7 M  M 0 @ / * M 0 $ @  5 0 > 7 M  M 0 @ /   $ > (National Festivals, Symbols and Unity)", "* 0 M / > 5 0 # (Environment)", "* 0 M / > 5 0 #  ' M / / ( :  5 ' > 0 # > , 5 M / > * M $ ?  5   M 7 G $ M 0 (EVS: Concept, Scope)", "* 0 M / > 5 0 # @ / 6 ?  M 7 >  5   ' ?  .  G 8 ? & M ' > ( M $ (Principles of Environmental Education)", "5 ?  M  > (  5  8 > . >  ?  5 ?  M  > ( . G  8 . M , ( M ' (Relation between Science and Social Science)", "* 0 M / > 5 0 # @ /  5 ' > 0 # > * M 0 8 M $ A $  0 ( G  G & C 7 M  ?  K # (5 ? ' ? / >  ) (Teaching Approaches)", "* 0 M / > 5 0 #  ' M / / (  @ 5 ? 5 ? '  $ ? 5 ? ' ? / >  (Activities and Discussions)", "8 $ $ M  5  5 M / > *  . B 2 M / >   ( (Continuous and Comprehensive Evaluation)", "6 ?  M 7 # 8 9 > /  8 > .  M 0 @ / *  0 # (Teaching Support Materials/Tools)", "* 0 M / > 5 0 # @ /  ' M / / (  @ 8 . 8 M / >   (Problems of Environmental Studies)" ]; // ===============  ' M / > / 5 > 0 * M 0 6 M ( ! G  > , G 8 (8 . C & M ' , 8 M $ 0 > ( A 8 > 0 ) =============== const questions = {}; // 1. * 0 ? 5 > 0 questions["* 0 ? 5 > 0 (Family)"] = { level1: [ { question: "* 0 ? 5 > 0  ? 8 G  9 $ G 9 H  ?", options: ["0  M $ 8  ,  ' K  8 G  A ! < G 2 K  K   > 8 . B 9 ", "  9 @  0 . G  0 9 ( G 5 > 2 G 2 K  ", "* ! < K 8 @ ", ". ? $ M 0 K   > 8 . B 9 "], answer: "A" }, { question: "8  / A  M $ * 0 ? 5 > 0  > . A  M / 2  M 7 #  M / > 9 H ?", options: ["  * @ " < ? / >    8 > % 0 9 $ @ 9 H  ", " G 5 2 . > $ > -* ? $ >  0 ,  M  G ", "  2 5 M /  M $ ? ", " G 5 2 & > & > -& > & @ "], answer: "A" } ], level2: [ { question: "  2 * 0 ? 5 > 0  G  M / > 2 > - 9 H  ?", options: ["8 M 5 $  $ M 0 $ >  0 5 M /  M $ ?  $ 8 M % > ( ", " 0 M % ?  8 A 0  M 7 > ", " ' ?  8  8 > ' ( ", "8 > . B 9 ?  ( ? 0 M # / "], answer: "A" } ], level3: [ { question: "* 0 ? 5 > 0  > 8 > . >  ?  5 ?  > 8 . G   M / > / K  & > ( 9 H ?", options: [". B 2 M / K   0 8  8 M  > 0 K   > 9 8 M $ >  $ 0 # ", " G 5 2  0 M % ?  8 9 > / $ > ", "0 >  ( @ $ ?  * M 0 6 ?  M 7 # ", "5 H  M  > ( ?  6 ?  M 7 > "], answer: "A" } ] }; // 2. - K  ( , 8 M 5 > 8 M % M /  5  8 M 5  M  $ > questions["- K  ( , 8 M 5 > 8 M % M /  5  8 M 5  M  $ > (Food, Health and Hygiene)"] = { level1: [ { question: "8  $ A 2 ? $  9 > 0  >  M / >  0 M % 9 H ?", options: ["8 - @ * K 7  $ $ M 5 K   >  ? $ . > $ M 0 > . G  8 . > 5 G 6 ", " G 5 2 * M 0 K  @ ( ", " G 5 2  > 0 M , K 9 >  ! M 0 G  ", " G 5 2 5 8 > "], answer: "A" }, { question: "9 > % ' K ( G  > 8 , 8 G * / A  M $ 8 . /  L ( 8 > 9 H ?", options: ["- K  ( 8 G * 9 2 G  0 6 L   G , > & ", "8 A , 9 . G  ", "0 > $ . G  ", " - @ ( 9 @  "], answer: "A" } ], level2: [ { question: " A * K 7 #  > . A  M /  > 0 #  M / > 9 H ?", options: [" * 0 M / > * M $  5   8  $ A 2 ? $ - K  ( ", " ' ?  - K  ( ", "5 M / > / > .  @  . @ ", "( @  &  @  . @ "], answer: "A" } ], level3: [ { question: "8 M 5  M  - > 0 $ . ? 6 (  > . A  M / & M & G 6 M /  M / > 9 H ?", options: [" A 2 G . G  6 L   K  $ M .  0 ( > ", "5 C  M 7 > 0 K * # ", " 2 8  0  M 7 # ", "5 > / A * M 0 & B 7 #  .  0 ( > "], answer: "A" } ] }; // 4. * G ! < -* L ' G 5  ( M $ A questions["* G ! < -* L ' G 5  ( M $ A (Plants and Animals)"] = { level1: [ { question: "* G ! < * L ' K   G 2 ?   M / >  5 6 M /  9 H ?", options: ["8 B 0 M /  > * M 0  > 6 ,  2 , 5 > / A , . ?  M  @ ", " G 5 2 * > ( @ ", " G 5 2 ' B * ", " G 5 2 . ?  M  @ "], answer: "A" }, { question: "* M 0  > 6 8  6 M 2 G 7 #  @ * M 0  M 0 ? / > . G   M / > , ( $ > 9 H ?", options: ["- K  ( ( M 2 B  K  )", " > 0 M , ( ! >    M 8 >  ! ", "( >   M 0 K  ( ", "  M 8 @  ( . > $ M 0 "], answer: "A" } ], level2: [ { question: "5 ( K   G   ( G 8 G  M / > 9 K $ > 9 H ?", options: ["* 0 M / > 5 0 #  8  $ A 2 ( ", " ' ?  5 0 M 7 > ", ". C & > 0 M 5 0 $ > , " < ( > ", " 2 5 > / A  ! @ 9 K ( > "], answer: "A" } ], level3: [ { question: " H 5 5 ? 5 ? ' $ > 8  0  M 7 #  > 8 , 8 G * M 0 - > 5 @ $ 0 @  >  M / > 9 H ?", options: [" H 5 .  ! 2  0  M 7 ? $  M 7 G $ M 0 , ( > ( > ", "5 ( K   K * B 0 M # $   >  ( > ", " ' ?  * G ! < 2  > ( > ", "6 ?  > 0  K * M 0 K $ M 8 > 9 ( "], answer: "A" } ] }; // 8.  2 questions[" 2 (Water)"] = { level1: [ { question: "* C % M 5 @ * 0  ? $ ( G * M 0 $ ? 6 $  2  > 0 > (8 . A & M 0 @ ) 9 H ?", options: ["97%", "70%", "50%", "30%"], answer: "A" }, { question: "5 0 M 7 >  2 8   / (  >  M / > & M & G 6 M / 9 H ?", options: [" 2 8  0  M 7 #  5  - B  2 8 M $ 0 , " < > ( > ", "* M 0 & B 7 # + H 2 > ( > ", "( & ? / >  8 A  > ( > ", "8 . A & M 0 - 0 ( > "], answer: "A" } ], level2: [ { question: " 2   M 0 . G   L ( 8 @ * M 0  M 0 ? / > 6 > . ? 2 ( 9 @  9 H ?", options: ["5 ? 8 0 # ", "5 > 7 M * @  0 # ", "8   ( ( ", "5 0 M 7 # "], answer: "A" } ], level3: [ { question: "- B  2 8 M $ 0   ( G  > . A  M /  > 0 #  M / > 9 H ?", options: [" $ M / ' ?  & K 9 (  0  . * A ( 0 M - 0 # ", " ' ?  5 0 M 7 > ", " ' ?  ( & ? / >  ", " 2 5 > / A * 0 ? 5 0 M $ ( . > $ M 0 "], answer: "A" } ] }; // 11. 9 . > 0 @ * C % M 5 @ questions["9 . > 0 @ * C % M 5 @ (5 ? 6 M 5  G . 9 > & M 5 @ *  5  . 9 > 8 >  0 ) (Our Earth: Continents and Oceans)"] = { level1: [ { question: "5 ? 6 M 5 . G   ? $ ( G . 9 > & M 5 @ * 9 H  ?", options: ["7", "5", "6", "8"], answer: "A" }, { question: "8 , 8 G , ! < > . 9 > 8 >  0  L ( 8 > 9 H ?", options: ["* M 0 6 >  $ . 9 > 8 >  0 ", "9 ? ( M & . 9 > 8 >  0 ", "  2 >   ?  . 9 > 8 >  0 ", " 0 M   ?  . 9 > 8 >  0 "], answer: "A" } ], level2: [ { question: " 6 ? / > . 9 > & M 5 @ *  >  M 7 G $ M 0 + 2  ? $ ( > 9 H ?", options: ["2  -  44.6 . ? 2 ? / ( 5 0 M   ? . @ ", "30 . ? 2 ? / ( ", "25 . ? 2 ? / ( ", "50 . ? 2 ? / ( "], answer: "A" } ], level3: [ { question: "* C % M 5 @ * 0 8 , 8 G   @ * 0 M 5 $  K  @ . >    5 0 G 8 M   ? 8 . 9 > & M 5 @ * . G  8 M % ? $ 9 H ?", options: [" 6 ? / > ", " + M 0 @  > ", "&  M 7 ? #  . G 0 ?  > ", " $ M $ 0 @  . G 0 ?  > "], answer: "A" } ] }; // 14. - > 0 $ @ / 8  5 ? ' > ( questions["- > 0 $ @ / 8  5 ? ' > ( (Indian Constitution)"] = { level1: [ { question: "- > 0 $ @ / 8  5 ? ' > (  , 2 >  B 9 A  ?", options: ["26  ( 5 0 @ 1950", "15   8 M $ 1947", "26 ( 5  , 0 1949", "2   M  B , 0 1950"], answer: "A" }, { question: "- > 0 $ @ / 8  5 ? ' > (  G . A  M / 5 > 8 M $ A  > 0  L ( % G ?", options: ["! I . - @ . 0 > 5  . M , G !  0 ", ". 9 > $ M . >  >  ' @ ", " 5 > 9 0 2 > 2 ( G 9 0 B ", "8 0 & > 0 *  G 2 "], answer: "A" } ], level2: [ { question: "- > 0 $ @ / 8  5 ? ' > ( . G  . L 2 ?   0 M $ 5 M /  ? 8  ( A  M  G & . G  5 0 M # ? $ 9 H  ?", options: [" ( A  M  G & 51A", " ( A  M  G & 21", " ( A  M  G & 14", " ( A  M  G & 32"], answer: "A" } ], level3: [ { question: "0 >  M / 8 - >  G 8 & 8 M / K   >  > 0 M /  > 2  ? $ ( > 9 K $ > 9 H ?", options: ["6 5 0 M 7 ", "5 5 0 M 7 ", "4 5 0 M 7 ", "3 5 0 M 7 "], answer: "A" } ] }; // 16. 0 > 7 M  M 0 @ / * 0 M 5 , * M 0 $ @  5   $ > questions["0 > 7 M  M 0 @ / * 0 M 5 , 0 > 7 M  M 0 @ / * M 0 $ @  5 0 > 7 M  M 0 @ /   $ > (National Festivals, Symbols and Unity)"] = { level1: [ { question: "- > 0 $  > 0 > 7 M  M 0 @ / * 6 A  L ( 8 > 9 H ?", options: [", >  ", "6 G 0 ", "9 > % @ ", ". K 0 "], answer: "A" }, { question: " # $  $ M 0 & ? 5 8  , . ( > / >  > $ > 9 H ?", options: ["26  ( 5 0 @ ", "15   8 M $ ", "2   M  B , 0 ", "26 ( 5  , 0 "], answer: "A" } ], level2: [ { question: "0 > 7 M  M 0 @ /   $ >  G 2 ?   L ( 8 > 8 ? & M ' >  $ . 9 $ M 5 * B 0 M # 9 H ?", options: ["  $ > . G  5 ? 5 ? ' $ > ", "- G & - > 5 ", " 2  > 5 ", "* M 0 $ ? 8 M * 0 M ' > "], answer: "A" } ], level3: [ { question: "0 > 7 M  M 0 @ / ' M 5   G   M 0 . G   ? $ ( @ $ @ 2 ? / >  9 K $ @ 9 H  ?", options: ["24", "20", "18", "22"], answer: "A" } ] }; // 17. * 0 M / > 5 0 # questions["* 0 M / > 5 0 # (Environment)"] = { level1: [ { question: "* 0 M / > 5 0 #  >  L ( 8 >     H 5 ?  9 H ?", options: ["* G ! < -* L ' G  0  @ 5 -  $ A ", "* > ( @ ", "9 5 > ", ". ?  M  @ "], answer: "A" }, { question: " M 2 K , 2 5 > 0 M . ?    > . A  M /  > 0 #  M / > 9 H ?", options: [" M 0 @ ( 9 > 8  H 8 K  . G  5 C & M ' ? ", "  K ( * 0 $  >  M 7 0 # ", " M 5 > 2 > . A  @ 5 ? 8 M + K  ", "8 B 0 M /  @ $ @ 5 M 0 $ > "], answer: "A" } ], level2: [ { question: "  K ( * 0 $  >  M 7 0 # . A  M / $   ? 8  H 8  G  > 0 # 9 K $ > 9 H ?", options: ["CFC ( M 2 K 0 K + M 2 K 0 K  > 0 M , ( )", " > 0 M , ( ! >    M 8 >  ! ", ". @ % G ( ", "( >   M 0 8   M 8 >  ! "], answer: "A" } ], level3: [ { question: "8 $ $ 5 ?  > 8  > . A  M / & M & G 6 M /  M / > 9 H ?", options: ["5 0 M $ . > (  @  0 B 0 $ G  * B 0 @  0 ( > - 5 ? 7 M /  @ * @ " < ? / K  8 G 8 .  L $ >  ?  , ? ( > ", " ' ?  $ .  0 M % ?  5 ?  > 8 ", "* M 0 >  C $ ?  8  8 > ' ( K   >   ' > ' A  ' * / K  ", " & M / K  @  0 #  K , " < > 5 > "], answer: "A" } ] }; // 23. 8 $ $  5  5 M / > *  . B 2 M / >   ( (CCE) questions["8 $ $ M  5  5 M / > *  . B 2 M / >   ( (Continuous and Comprehensive Evaluation)"] = { level1: [ { question: "CCE  > * B 0 M # 0 B *  M / > 9 H ?", options: ["Continuous and Comprehensive Evaluation", "Central Comprehensive Exam", "Continuous Class Evaluation", "Comprehensive Children Evaluation"], answer: "A" }, { question: "CCE . G  . B 2 M / >   (  G  ? $ ( G * 9 2 B 9 K $ G 9 H  ?", options: ["& K (6 H  M 7 ?   0 8 9 -6 H  M 7 ?  )", "  ", "$ @ ( ", " > 0 "], answer: "A" } ], level2: [ { question: "CCE  G   $ 0 M  $ '+ I 0 M . G  ? 5  8 G 8 . G   '  > & M & G 6 M /  M / > 9 H ?", options: [" ' ?  .  G & L 0 > ( ( ? / . ? $ + @ ! , H  & G ( > ", ["5 > 0 M 7 ?  * 0 @  M 7 > "], ["* M 0 $ ? / K  ? $ > "], ["* M 0 . > # ( "]], answer: "A" } ], level3: [ { question: "CCE . G  '8 9 -6 H  M 7 ?  '  M 7 G $ M 0 K  . G   M / > 6 > . ? 2 9 H ?", options: [" G 2 ,  2 > , 8   @ $ , ( H $ ?  6 ?  M 7 > ", " G 5 2  # ? $ ", " G 5 2 5 ?  M  > ( ", " G 5 2 - > 7 >   "], answer: "A" } ] }; // 6 G 7  ' M / > / K   G 2 ?  ! ? + < I 2 M  * M 0 6 M ( (8 - @ 25  ' M / > /  5 0 ) for (let i = 0; i < chaptersList.length; i++) { const chap = chaptersList[i]; if (!questions[chap]) { questions[chap] = { level1: [ { question: `${chap}  G   $ 0 M  $ . A  M / 6 H  M 7 ?  & M & G 6 M /  M / > 9 H ?`, options: ["* 0 M / > 5 0 # @ /  >  0 B  $ >  5  8  0  M 7 # ", " G 5 2 * > M /  M 0 . * B 0 >  0 ( > ", "0  ( > ", "* M 0 $ ? / K  ? $ > . G  - >  2 G ( > "], answer: "A" }, { question: `UP TET * 0 @  M 7 > . G  ${chap} 8 G  ? 8 * M 0  > 0  G * M 0 6 M ( * B  G  > $ G 9 H  ?`, options: [" 5 ' > 0 # > $ M .   5   ( A * M 0 / K  > $ M .  ", " G 5 2 * 0 ? - > 7 >   ", " G 5 2    ! < G ", " G 5 2 ( > . / > &  0 ( > "], answer: "A" } ], level2: [ { question: `${chap}  G * M 0 - > 5 @ 6 ?  M 7 #  G 2 ?   L ( 8 @ 5 ? ' ? 8 0 M 5 K $ M $ . 9 H ?`, options: ["* M 0 > / K  ?   5   M 0 ? / >  2 > *  ' > 0 ? $ ", "5 M / >  M / > ( 5 ? ' ? ", "  8 M % @  0 # ", "* M 0 6 M ( - $ M $ 0 . > $ M 0 "], answer: "A" } ], level3: [ { question: `${chap} . G  5 ? 6 M 2 G 7 # > $ M .  * M 0 6 M ( K   K 9 2  0 ( G  G 2 ?   M / >  5 6 M /  9 H ?`, options: ["5 ? 7 /  @  9 0 @ 8 .   5    $  5 ? 7 / 8  ,  ' ", "0  ( > ", " ( A . > ( 2  > ( > ", "8 B $ M 0 / > &  0 ( > "], answer: "A" } ] }; } } const finalTopicList = chaptersList; let selectedTopics = []; let selectedLevel = null; let userProgress = { streak: 0, lastPracticeDate: null, totalProblemsSolved: 0, topicsCompleted: 0, totalTopics: finalTopicList.length }; function loadUserProgress() { const saved = localStorage.getItem('upTetEVSProgress'); 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('upTetEVSProgress', JSON.stringify(userProgress)); } function updateUI() { document.getElementById('streakDays').textContent = userProgress.streak; const today = new Date(); document.getElementById('currentDate').textContent = today.toLocaleDateString('hi-IN', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }); const percent = Math.min(100, Math.round((userProgress.topicsCompleted / userProgress.totalTopics) * 100)); document.getElementById('progressFill').style.width = `${percent}%`; document.getElementById('progressText').textContent = `${percent}% * B 0 M # (${userProgress.topicsCompleted}/${userProgress.totalTopics}  ' 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 [{ question: "* 0 M / > 5 0 #  ' M / / (  > . A  M / & M & G 6 M /  M / > 9 H ?", options: ["* 0 M / > 5 0 # @ /  >  0 B  $ >  5  8  5 G & ( 6 @ 2 $ > 5 ?  8 ? $  0 ( > ", " G 5 2  > (  > 0 @ & G ( > ", "* 0 @  M 7 > $ M $ @ 0 M #  0 ( > ", "$ % M / / > &  0 ( > "], answer: "A" }]; 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" style="background:#e9f5ec;"><input type="checkbox" id="fullSyllabus" value="full"><label for="fullSyllabus"><strong>' 8  * B 0 M # * > M /  M 0 . (8 - @ 25  ' M / > / )</strong></label></div>`; finalTopicList.forEach(topic => { const id = `topic_${topic.replace(/[\s,?()]/g, '_').substring(0, 30)}`; container.innerHTML += `<div class="checkbox-item"><input type="checkbox" id="${id}" name="topic" value="${topic}"><label for="${id}">${topic}</label></div>`; }); document.getElementById('fullSyllabus')?.addEventListener('change', (e) => { const allCheckboxes = document.querySelectorAll('input[name="topic"]'); allCheckboxes.forEach(cb => cb.disabled = e.target.checked); if(e.target.checked) allCheckboxes.forEach(cb => cb.checked = false); }); } // Event listeners document.getElementById('customPracticeBtn').addEventListener('click', () => { startScreen.classList.add('hidden'); subjectSelection.classList.remove('hidden'); }); document.getElementById('selectEVSBtn').addEventListener('click', () => { renderTopics(); subjectSelection.classList.add('hidden'); topicSelection.classList.remove('hidden'); }); document.getElementById('backToStartBtn').addEventListener('click', () => { topicSelection.classList.add('hidden'); startContainer.classList.remove('hidden'); startScreen.classList.remove('hidden'); updateUI(); }); document.getElementById('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  !"); return; } topicSelection.classList.add('hidden'); levelSelection.classList.remove('hidden'); }); document.getElementById('backToTopicsBtn').addEventListener('click', () => { levelSelection.classList.add('hidden'); topicSelection.classList.remove('hidden'); }); document.getElementById('level1Btn').addEventListener('click', () => { document.querySelectorAll('.btn-level').forEach(b => b.classList.remove('selected')); document.getElementById('level1Btn').classList.add('selected'); selectedLevel = 1; }); document.getElementById('level2Btn').addEventListener('click', () => { document.querySelectorAll('.btn-level').forEach(b => b.classList.remove('selected')); document.getElementById('level2Btn').classList.add('selected'); selectedLevel = 2; }); document.getElementById('level3Btn').addEventListener('click', () => { document.querySelectorAll('.btn-level').forEach(b => b.classList.remove('selected')); document.getElementById('level3Btn').classList.add('selected'); selectedLevel = 3; }); document.getElementById('generateFinalBtn').addEventListener('click', () => { if (!selectedLevel) { alert(" C * / >  ? ( >  8 M $ 0  A ( G  !"); return; } generateAssignment(); }); document.getElementById('homeIconBtn').addEventListener('click', (e) => { e.preventDefault(); backToStart(); }); document.getElementById('problemOfDayBtn').addEventListener('click', generateProblemOfDay); function generateAssignment() { startContainer.classList.add('hidden'); levelSelection.classList.add('hidden'); generatedPaperContainer.classList.remove('hidden'); const topicNames = selectedTopics.length > 5 ? selectedTopics.slice(0,5).join(", ")+" ..." : selectedTopics.join(", "); const mcqs = getRandomQuestions(selectedTopics, selectedLevel, 10); let paperContent = ` <div class="header"><h2>=ØØÜ UP TET * G * 0 -1 (* 0 M / > 5 0 #  ' M / / ( - EVS)</h2><h3>=ØÌÜ ${selectedTopics.length === finalTopicList.length ? "8  * B 0 M # * > M /  M 0 . (25  ' M / > / )" : topicNames.substring(0, 85)}</h3><p>¡&  ? ( >  8 M $ 0 ${selectedLevel}  ${selectedLevel === 1 ? ", G 8 ?  " : selectedLevel === 2 ? ". ' M / . (UP TET . > (  )" : " ( M ( $ "}</p></div> <div class="content-area"><div class="instructions"><p><strong>( ? 0 M & G 6 (EVS Practice):</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 ( * 0 M / > 5 0 #  ' M / / (  G 5 ? - ? ( M (  ' M / > / K  * 0  ' > 0 ? $ 9 H d </li><li>15-20 . ? (  . G  9 2  0 G  , + ? 0 $ M $ 0  A   @ 8 G . ? 2 >   d </li></ol></div> <div class="question-section"><div style="font-size:1.4rem; margin-bottom:20px; font-weight:bold;">'þ  - 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   @ </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><strong>${mcqs[i].answer}</strong></td>`; if (i+1 < mcqs.length) paperContent += `<td>${i+2}</td><td><strong>${mcqs[i+1].answer}</strong></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> * 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-undo-alt"></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 newlyCompleted = 0; selectedTopics.forEach(t => { if (!userProgress[`comp_${t}`]) { userProgress[`comp_${t}`] = true; newlyCompleted++; } }); userProgress.topicsCompleted = Math.min(userProgress.totalTopics, userProgress.topicsCompleted + newlyCompleted); saveUserProgress(); updateUI(); alert("<Ø‰ß 6 > ( & > 0 !  - M / > 8 * B 0 M # 9 A  d * M 0  $ ? 8 9 G  @   d "); 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 mcq = getRandomQuestions(selectedTopics, selectedLevel, 1)[0]; let content = `<div class="header"><h2><Øß & ? (  @  A ( L $ @ (* 0 M / > 5 0 #  ' M / / ( )</h2><h3><Ø¯ß ${randomTopic}</h3><p>8 M $ 0 ${randomLevel}</p></div><div class="content-area"><div class="problem-of-day"><h3><i class="fas fa-star-of-life"></i>    >  - M / > 8 * M 0 6 M ( </h3><p> * ( @ * 0 M / > 5 0 # @ /  >  0 B  $ > , " < >   !</p></div><div class="daily-summary"><div class="summary-card"><h4>=Ø%Ý 2  > $ > 0 </h4><p>${userProgress.streak} & ? ( </p></div><div class="summary-card"><h4>' 9 2 * M 0 6 M ( </h4><p>${userProgress.totalProblemsSolved}</p></div><div class="summary-card"><h4>=ØÚÜ * M 0  $ ? </h4><p>${Math.round((userProgress.topicsCompleted / userProgress.totalTopics) * 100)}%</p></div></div><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><div class="answer-sheet"><h3>=ØÌÜ 8 . > ' > ( </h3><p><strong>8 9 @ $ M $ 0 :</strong> ${mcq.answer}</p><p><strong>5 M / >  M / > :</strong> UP TET * 0 M / > 5 0 #  ' M / / (  5 ' > 0 # >  G  ( A 8 > 0 </p></div><div class="action-buttons"><button class="btn btn-success" id="markCompleteDailyBtn"><i class="fas fa-check"></i> * B 0 M #  ? / > </button><button class="btn btn-primary" id="printBtn">* M 0 ?    0 G  </button><button class="btn btn-danger" id="newAssignmentBtn">( / >  - M / > 8 </button></div></div>`; generatedPaperContainer.innerHTML = content; document.getElementById('markCompleteDailyBtn')?.addEventListener('click', () => { userProgress.totalProblemsSolved++; saveUserProgress(); updateUI(); alert(", ' >  9 K ! & ? (  @ 8 . 8 M / > 9 2 9 A  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(); } document.addEventListener('DOMContentLoaded', () => { loadUserProgress(); }); </script> </body> </html>