Attendance/templates/group_teach.html
2021-09-26 21:37:34 +08:00

208 lines
No EOL
10 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 分組 - Attendance 點名</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">
<link rel="shortcut icon" type="image/x-icon" href="/static/favicon.ico" />
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-H6D61RSBHR"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() { dataLayer.push(arguments); }
gtag('js', new Date());
gtag('config', 'G-H6D61RSBHR');
</script>
</head>
<body>
<div class="showTime"><span id="showTime"></span></div>
<div class="container">
<h1 class="margin-top">Group Class View | 分組課頁面</h1>
<h2 class="margin-top">{{cclass['category']}}: {{cclass['class_id']}}: {{cclass['name']}}</h2>
<h2>[{{currDate}}]</h2>
<a href="/logout"><button class="btn btn-primary margin-top logout">Logout 登出</button></a>
<form action="/manage/date" id="dateSelForm" method="post">
<select name="date" id="date" class="form-select logout" 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" style="margin-top: 30px;">
<div class="row title sticky-top" style="background-color: white">
<div class="col">Grade 年級</div>
<div class="col">Class 班級</div>
<div class="col">Number 座號</div>
<div class="col">Name 姓名</div>
<div class="col">English Name 英文名</div>
<div class="col">Period {{i}} | 第 {{i}} 節</div>
</div>
{% if data != None %}
{% for grade in absData[i] %}
{% for homeroom in absData[i][grade] %}
{% for student in absData[i][grade][homeroom] %}
{% if student != 'notes' %}
<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>
{% endif %}
{% 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}}')">
↑ Confirm 確認 (Period {{i}}) ↑</button>
{% endif %}
<div class="signDiv" id="sign^{{i}}" hidden="hidden">
<div class="alert alert-warning margin-top" id="allPresentWarning" role="alert" hidden="hidden">
<h4 class="alert-heading">請確認是否全班全到Please check if everyone is present!</h4>
</div>
<h3 class="margin-top">Please Sign Below 請在下方簽名</h3>
<div class="forSign"><canvas id="signature_pad^{{i}}"></canvas></div>
<h3 class="margin-top">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 margin-top" type="button" onclick="signaturePad.clear()">Clear
Signature 清除簽名</button><button class="btn btn-primary margin-top" 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;
var width = $(window).width();
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);
width = $(window).width();
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", () => {
if (width != $(window).width()) {
resizeCanvas();
width = $(window).width();
}
});
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>
{% include 'footer.html' %}
<script>
function loadingAnimation() {
$("div.container").hide();
$('#loading').show();
}
function chgDate(sel) {
loadingAnimation();
document.getElementById('dateSelForm').submit();
}
</script>
<script src="/static/time.js"></script>
</body>
</html>