Attendance/templates/group_teach.html
2021-09-14 17:49:16 +08:00

195 lines
No EOL
9.3 KiB
HTML
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.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Group_Teach_View</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU" crossorigin="anonymous">
<link rel="stylesheet" href="/static/allpages.css">
<link rel="stylesheet" href="/static/login.css">
</head>
<body>
<div class="container">
<h1>Group_Teach_View</h1>
<h2>{{cclass['category']}}: {{cclass['class_id']}}: {{cclass['name']}}</h2>
<h2>({{currDate}}) ({{dow}})</h2>
<a href="/logout"><button class="btn btn-primary">Logout 登出</button></a>
<form action="/manage/date" id="dateSelForm" method="post">
<select name="date" id="date" class="form-select" onchange="chgDate(this);">
{% for date in tmpAbsData %}
{% if date == currDate %}
<option value="{{date}}" selected="selected">{{date}}</option>
{% else %}
<option value="{{date}}">{{date}}</option>
{% endif %}
{% endfor %}
</select>
</form>
{% for i in absData %}
{% set alr_fill = namespace(found=false) %}
<form action="/manage/group_teach_publish" id="attendanceData^{{i}}" method="post">
<input type="hidden" name="date" value="{{currDate}}">
<input type="hidden" name="period" value="{{i}}">
<input type="hidden" class="signatureData" name="signatureData" value="">
<div class="col">
<div class="row title sticky-top" style="background-color: white">
<div class="col">Grade</div>
<div class="col">Class Code</div>
<div class="col">Number</div>
<div class="col">Name</div>
<div class="col">Eng Name</div>
<div class="col">Period {{i}}</div>
</div>
{% if data != None %}
{% for grade in absData[i] %}
{% for homeroom in absData[i][grade] %}
{% for student in absData[i][grade][homeroom] %}
<div class="row">
<div class="col">{{grade}}</div>
<div class="col">{{homeroom}}</div>
<div class="col">{{ student }}</div>
<div class="col">{{ absData[i][grade][homeroom][student]['name'] }}</div>
<div class="col">{{ absData[i][grade][homeroom][student]['eng_name'] }}</div>
{% if absData[i][grade][homeroom][student]['alr_fill'] %}
{% set alr_fill.found = true %}
{% if absData[i][grade][homeroom][student]['absent'] == 1 %}
<div class="col">
<p class="highlightAbs n-2">X</p>
</div>
{% elif absData[i][grade][homeroom][student]['absent'] == 2 %}
<div class="col">
<p class="highlightAbs n-3">φ</p>
</div>
{% else %}
<div class="col">
<p class="highlightAbs n-1">V</p>
</div>
{% endif %}
{% else %}
<div class="col">
{% if [grade,homeroom] in confirmed %}
<p class="highlightAbs">--</p>
{% else %}
<input type="checkbox" class="tobeform {{grade}}^{{homeroom}}^{{student}} late"
id="late^{{i}}^{{grade}}^{{homeroom}}^{{student}}"
name="2^{{grade}}^{{homeroom}}^{{student}}"
onchange="unCheckAbs('{{i}}^{{grade}}^{{homeroom}}^{{student}}')">
<input type="checkbox" class="tobeform {{grade}}^{{homeroom}}^{{student}} absent"
id="absent^{{i}}^{{grade}}^{{homeroom}}^{{student}}"
name="1^{{grade}}^{{homeroom}}^{{student}}"
onchange="unCheckLate('{{i}}^{{grade}}^{{homeroom}}^{{student}}')">
{% endif %}
</div>
{% endif %}
</div>
{% endfor %}
{% endfor %}
{% endfor %}
{% endif %}
{% if alr_fill.found %}
<button class="btn btn-primary margin-bottom viewSignatureBtn" type="button"
onclick="viewSignature('{{i}}')" disabled="disabled">
Already Submitted</button>
{% else %}
<button class="btn btn-primary margin-bottom viewSignatureBtn" type="button"
onclick="viewSignature('{{i}}')">
↑ Confirmed, Sign (Period {{i}}) ↑</button>
{% endif %}
<div class="signDiv" id="sign^{{i}}" hidden="hidden">
<div class="alert alert-warning" id="allPresentWarning" role="alert" hidden="hidden">
<h4 class="alert-heading">請確認是否全班全到Please check if everyone is present!</h4>
</div>
<h3>Please Sign Below</h3>
<div class="forSign"><canvas id="signature_pad^{{i}}"></canvas></div>
<h3>Notes 備註欄</h3>
<input class="form-control" name="notes" id="subjectNotes^{{i}}" placeholder="Enter Notes 請輸入備註"
style="width: 80%; margin-left: 10%;">
<button class="btn btn-secondary" type="button" onclick="signaturePad.clear()">Clear
Signature</button><button class="btn btn-primary" type="button"
onclick="submitForm()">Submit</button>
</div>
</div>
</form>
{% endfor %}
</div>
<script src=" https://cdn.jsdelivr.net/npm/signature_pad@2.3.2/dist/signature_pad.min.js"></script>
<script type="text/javascript" src="/static/jquery.min.js"></script>
<script>
var signaturePad, selPeriod;
function submitForm() {
if (!signaturePad.isEmpty()) {
loadingAnimation();
signaturePad.off();
var data = signaturePad.toDataURL('image/png');
document.getElementById("attendanceData^" + selPeriod).getElementsByClassName("signatureData")[0].value = data;
document.getElementById("attendanceData^" + selPeriod).submit();
}
else {
alert("Please sign first");
}
}
function viewSignature(period) {
selPeriod = period
$('.viewSignatureBtn').attr({ 'disabled': 'disabled' });
$('.viewSignatureBtn').removeClass('margin-bottom');
document.getElementById('sign^' + period).removeAttribute('hidden');
var cnt = 0;
$('.tobeform').each(function (i, obj) {
if ($(this).is(":checked")) {
cnt++;
$('#postHomeroomAbs').append('<input type="checkbox" name="' + $(this).attr('class').split(' ')[1].split('^')[1]
+ '" checked="checked">');
}
});
if (cnt == 0) {
$('#allPresentWarning').removeAttr('hidden');
}
var canvas = document.getElementById("signature_pad^" + period);
signaturePad = new SignaturePad(canvas);
function resizeCanvas() {
var ratio = Math.max(window.devicePixelRatio || 1, 1);
canvas.width = canvas.offsetWidth * ratio;
canvas.height = canvas.offsetHeight * ratio;
canvas.getContext("2d").scale(ratio, ratio);
signaturePad.clear(); // otherwise isEmpty() might return incorrect value
}
window.addEventListener("resize", resizeCanvas);
resizeCanvas();
}
function unCheckAbs(string) {
document.getElementById('absent^' + string).checked = false;
}
function unCheckLate(string) {
document.getElementById('late^' + string).checked = false;
}
</script>
<div id="loading" style="text-align:center; width:100%; display:none;"><img src="/static/loading.gif" alt=""
style="height:100%;" />
</div>
<footer>
<hr>
<p style="text-align: center;">&copy; 2021 Attendance (β) | Made by <a target="_blank"
href="https://github.com/aaronleetw">Aaron Lee 李翊愷</a> for <a target="_blank"
href="https://www.fhjh.tp.edu.tw">Taipei Fuhsing Private School</a>
<br>
Consultants: Mr. Raymond Tsai 蔡瑋倫老師, Alvin Tsao 曹庭睿
</p>
</footer>
<script>
function loadingAnimation() {
$("div.container").hide();
$('#loading').show();
}
function chgDate(sel) {
loadingAnimation();
document.getElementById('dateSelForm').submit();
}
</script>
</body>
</html>