Changes to teachercalc.scroll.pub

root
root
25 days ago
Initial commit
body.html
Changed around line 1
+
+

Teacher Calculator

+

Efficiently manage grades and track academic performance

+
+
+
+
+

Grade Management

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Student NameSubjectGradeActions
+
+
+
+

Performance Analysis

+
+

Average Grade: 0

+

Highest Grade: 0

+

Lowest Grade: 0

+
+
+
+
+
+
+

Simplify your grading process with Teacher Calculator

+
index.scroll
Changed around line 1
+ buildHtml
+ baseUrl https://teachercalc.scroll.pub
+ metaTags
+ editButton /edit.html
+ title Teacher Calculator - Manage Grades & Academic Performance
+ style.css
+ body.html
+ script.js
prompt.json
Changed around line 1
+ {
+ "id": "4db49474-b13e-4f1a-bb62-2b724b2821c2",
+ "object": "chat.completion",
+ "created": 1735358338,
+ "model": "deepseek-chat",
+ "choices": [
+ {
+ "index": 0,
+ "message": {
+ "role": "assistant",
+ "content": "---domain---\nteachercalc.scroll.pub\n---index.scroll---\nbuildHtml\nbaseUrl https://teachercalc.scroll.pub\nmetaTags\neditButton /edit.html\ntitle Teacher Calculator - Manage Grades & Academic Performance\nstyle.css\nbody.html\nscript.js\n---body.html---\n
\n

Teacher Calculator

\n

Efficiently manage grades and track academic performance

\n
\n\n
\n
\n

Grade Management

\n
\n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
Student NameSubjectGradeActions
\n
\n \n
\n

Performance Analysis

\n
\n

Average Grade: 0

\n

Highest Grade: 0

\n

Lowest Grade: 0

\n
\n \n
\n
\n\n
\n

Simplify your grading process with Teacher Calculator

\n
\n---style.css---\n:root {\n --primary-color: #4a90e2;\n --secondary-color: #f5f5f5;\n --accent-color: #ff6b6b;\n --text-color: #333;\n --border-radius: 8px;\n --box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n}\n\nbody {\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n line-height: 1.6;\n color: var(--text-color);\n margin: 0;\n padding: 0;\n background-color: var(--secondary-color);\n}\n\nheader {\n background-color: var(--primary-color);\n color: white;\n padding: 2rem;\n text-align: center;\n border-bottom: 4px solid var(--accent-color);\n}\n\nmain {\n max-width: 1200px;\n margin: 2rem auto;\n padding: 1rem;\n}\n\nsection {\n background: white;\n padding: 2rem;\n margin-bottom: 2rem;\n border-radius: var(--border-radius);\n box-shadow: var(--box-shadow);\n}\n\nh2 {\n color: var(--primary-color);\n margin-bottom: 1.5rem;\n}\n\nform {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 1rem;\n margin-bottom: 2rem;\n}\n\nlabel {\n font-weight: bold;\n}\n\ninput {\n padding: 0.5rem;\n border: 1px solid #ddd;\n border-radius: var(--border-radius);\n}\n\nbutton {\n background-color: var(--primary-color);\n color: white;\n padding: 0.75rem;\n border: none;\n border-radius: var(--border-radius);\n cursor: pointer;\n transition: background-color 0.3s ease;\n}\n\nbutton:hover {\n background-color: var(--accent-color);\n}\n\ntable {\n width: 100%;\n border-collapse: collapse;\n margin-top: 1rem;\n}\n\nth, td {\n padding: 1rem;\n text-align: left;\n border-bottom: 1px solid #ddd;\n}\n\nth {\n background-color: var(--primary-color);\n color: white;\n}\n\ntr:hover {\n background-color: var(--secondary-color);\n}\n\n#stats {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));\n gap: 1rem;\n margin-bottom: 2rem;\n}\n\n#stats p {\n background: var(--secondary-color);\n padding: 1rem;\n border-radius: var(--border-radius);\n text-align: center;\n}\n\nfooter {\n text-align: center;\n padding: 1rem;\n background-color: var(--primary-color);\n color: white;\n margin-top: 2rem;\n}\n\n@media (max-width: 768px) {\n form {\n grid-template-columns: 1fr;\n }\n \n #stats {\n grid-template-columns: 1fr;\n }\n}\n---script.js---\nconst gradeForm = document.getElementById('grade-form');\nconst gradeTable = document.getElementById('grade-table').getElementsByTagName('tbody')[0];\nconst averageGrade = document.getElementById('average-grade');\nconst highestGrade = document.getElementById('highest-grade');\nconst lowestGrade = document.getElementById('lowest-grade');\nconst gradeChart = document.getElementById('grade-chart').getContext('2d');\n\nlet grades = [];\n\ngradeForm.addEventListener('submit', function(e) {\n e.preventDefault();\n \n const studentName = document.getElementById('student-name').value;\n const subject = document.getElementById('subject').value;\n const grade = parseInt(document.getElementById('grade').value);\n \n const newGrade = {\n id: Date.now(),\n studentName,\n subject,\n grade\n };\n \n grades.push(newGrade);\n addGradeToTable(newGrade);\n updateStats();\n updateChart();\n gradeForm.reset();\n});\n\nfunction addGradeToTable(grade) {\n const row = gradeTable.insertRow();\n \n row.innerHTML = `\n ${grade.studentName}\n ${grade.subject}\n ${grade.grade}\n \n \n \n \n `;\n}\n\nfunction updateStats() {\n const gradeValues = grades.map(g => g.grade);\n const total = gradeValues.reduce((sum, grade) => sum + grade, 0);\n const avg = total / gradeValues.length || 0;\n const max = Math.max(...gradeValues) || 0;\n const min = Math.min(...gradeValues) || 0;\n \n averageGrade.textContent = avg.toFixed(2);\n highestGrade.textContent = max;\n lowestGrade.textContent = min;\n}\n\nfunction updateChart() {\n const chart = new Chart(gradeChart, {\n type: 'line',\n data: {\n labels: grades.map((_, i) => `Grade ${i + 1}`),\n datasets: [{\n label: 'Grades',\n data: grades.map(g => g.grade),\n backgroundColor: 'rgba(74, 144, 226, 0.2)',\n borderColor: 'rgba(74, 144, 226, 1)',\n borderWidth: 2\n }]\n },\n options: {\n scales: {\n y: {\n beginAtZero: true,\n max: 100\n }\n }\n }\n });\n}\n\nfunction editGrade(id) {\n const grade = grades.find(g => g.id === id);\n if (grade) {\n document.getElementById('student-name').value = grade.studentName;\n document.getElementById('subject').value = grade.subject;\n document.getElementById('grade').value = grade.grade;\n \n deleteGrade(id);\n }\n}\n\nfunction deleteGrade(id) {\n grades = grades.filter(g => g.id !== id);\n gradeTable.innerHTML = '';\n grades.forEach(addGradeToTable);\n updateStats();\n updateChart();\n}\n---end---"
+ },
+ "logprobs": null,
+ "finish_reason": "stop"
+ }
+ ],
+ "usage": {
+ "prompt_tokens": 249,
+ "completion_tokens": 1805,
+ "total_tokens": 2054,
+ "prompt_cache_hit_tokens": 0,
+ "prompt_cache_miss_tokens": 249
+ },
+ "system_fingerprint": "fp_f1afce2943"
+ }
readme.scroll
Changed around line 1
+ # teachercalc.scroll.pub
+ Website generated by DeepSeek from prompt: I want teacher calculator crud operation that helps teacher Manage grades and academic performance
script.js
Changed around line 1
+ const gradeForm = document.getElementById('grade-form');
+ const gradeTable = document.getElementById('grade-table').getElementsByTagName('tbody')[0];
+ const averageGrade = document.getElementById('average-grade');
+ const highestGrade = document.getElementById('highest-grade');
+ const lowestGrade = document.getElementById('lowest-grade');
+ const gradeChart = document.getElementById('grade-chart').getContext('2d');
+
+ let grades = [];
+
+ gradeForm.addEventListener('submit', function(e) {
+ e.preventDefault();
+
+ const studentName = document.getElementById('student-name').value;
+ const subject = document.getElementById('subject').value;
+ const grade = parseInt(document.getElementById('grade').value);
+
+ const newGrade = {
+ id: Date.now(),
+ studentName,
+ subject,
+ grade
+ };
+
+ grades.push(newGrade);
+ addGradeToTable(newGrade);
+ updateStats();
+ updateChart();
+ gradeForm.reset();
+ });
+
+ function addGradeToTable(grade) {
+ const row = gradeTable.insertRow();
+
+ row.innerHTML = `
+ ${grade.studentName}
+ ${grade.subject}
+ ${grade.grade}
+
+
+
+
+ `;
+ }
+
+ function updateStats() {
+ const gradeValues = grades.map(g => g.grade);
+ const total = gradeValues.reduce((sum, grade) => sum + grade, 0);
+ const avg = total / gradeValues.length || 0;
+ const max = Math.max(...gradeValues) || 0;
+ const min = Math.min(...gradeValues) || 0;
+
+ averageGrade.textContent = avg.toFixed(2);
+ highestGrade.textContent = max;
+ lowestGrade.textContent = min;
+ }
+
+ function updateChart() {
+ const chart = new Chart(gradeChart, {
+ type: 'line',
+ data: {
+ labels: grades.map((_, i) => `Grade ${i + 1}`),
+ datasets: [{
+ label: 'Grades',
+ data: grades.map(g => g.grade),
+ backgroundColor: 'rgba(74, 144, 226, 0.2)',
+ borderColor: 'rgba(74, 144, 226, 1)',
+ borderWidth: 2
+ }]
+ },
+ options: {
+ scales: {
+ y: {
+ beginAtZero: true,
+ max: 100
+ }
+ }
+ }
+ });
+ }
+
+ function editGrade(id) {
+ const grade = grades.find(g => g.id === id);
+ if (grade) {
+ document.getElementById('student-name').value = grade.studentName;
+ document.getElementById('subject').value = grade.subject;
+ document.getElementById('grade').value = grade.grade;
+
+ deleteGrade(id);
+ }
+ }
+
+ function deleteGrade(id) {
+ grades = grades.filter(g => g.id !== id);
+ gradeTable.innerHTML = '';
+ grades.forEach(addGradeToTable);
+ updateStats();
+ updateChart();
+ }
style.css
Changed around line 1
+ :root {
+ --primary-color: #4a90e2;
+ --secondary-color: #f5f5f5;
+ --accent-color: #ff6b6b;
+ --text-color: #333;
+ --border-radius: 8px;
+ --box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
+ }
+
+ body {
+ font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
+ line-height: 1.6;
+ color: var(--text-color);
+ margin: 0;
+ padding: 0;
+ background-color: var(--secondary-color);
+ }
+
+ header {
+ background-color: var(--primary-color);
+ color: white;
+ padding: 2rem;
+ text-align: center;
+ border-bottom: 4px solid var(--accent-color);
+ }
+
+ main {
+ max-width: 1200px;
+ margin: 2rem auto;
+ padding: 1rem;
+ }
+
+ section {
+ background: white;
+ padding: 2rem;
+ margin-bottom: 2rem;
+ border-radius: var(--border-radius);
+ box-shadow: var(--box-shadow);
+ }
+
+ h2 {
+ color: var(--primary-color);
+ margin-bottom: 1.5rem;
+ }
+
+ form {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
+ gap: 1rem;
+ margin-bottom: 2rem;
+ }
+
+ label {
+ font-weight: bold;
+ }
+
+ input {
+ padding: 0.5rem;
+ border: 1px solid #ddd;
+ border-radius: var(--border-radius);
+ }
+
+ button {
+ background-color: var(--primary-color);
+ color: white;
+ padding: 0.75rem;
+ border: none;
+ border-radius: var(--border-radius);
+ cursor: pointer;
+ transition: background-color 0.3s ease;
+ }
+
+ button:hover {
+ background-color: var(--accent-color);
+ }
+
+ table {
+ width: 100%;
+ border-collapse: collapse;
+ margin-top: 1rem;
+ }
+
+ th, td {
+ padding: 1rem;
+ text-align: left;
+ border-bottom: 1px solid #ddd;
+ }
+
+ th {
+ background-color: var(--primary-color);
+ color: white;
+ }
+
+ tr:hover {
+ background-color: var(--secondary-color);
+ }
+
+ #stats {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
+ gap: 1rem;
+ margin-bottom: 2rem;
+ }
+
+ #stats p {
+ background: var(--secondary-color);
+ padding: 1rem;
+ border-radius: var(--border-radius);
+ text-align: center;
+ }
+
+ footer {
+ text-align: center;
+ padding: 1rem;
+ background-color: var(--primary-color);
+ color: white;
+ margin-top: 2rem;
+ }
+
+ @media (max-width: 768px) {
+ form {
+ grid-template-columns: 1fr;
+ }
+
+ #stats {
+ grid-template-columns: 1fr;
+ }
+ }