Attendance/templates/group_teach.html

214 lines
10 KiB
HTML
Raw Normal View History

2021-09-09 06:29:31 -07:00
<!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">
2021-09-24 22:31:36 -07:00
<title>Group 分組 - Attendance 點名</title>
2021-09-09 06:29:31 -07:00
<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">
2021-09-18 04:26:06 -07:00
<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>
2021-09-09 06:29:31 -07:00
</head>
<body>
2021-09-26 06:37:34 -07:00
<div class="showTime"><span id="showTime"></span></div>
<div class="container">
2021-09-18 04:26:06 -07:00
<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>
2021-10-03 07:33:53 -07:00
<a href="/select"><button class="btn btn-primary margin-top logout">Choose Subuser 選擇其他帳號</button></a>
2021-10-15 05:32:24 -07:00
<select name="date" id="date" class="form-select logout" onchange="chgDate();">
{% for date in tmpAbsData %}
{% if date == currDate %}
<option value="{{date}}" selected="selected">{{date}}</option>
{% else %}
<option value="{{date}}">{{date}}</option>
{% endif %}
{% endfor %}
</select>
2021-09-12 02:39:09 -07:00
{% for i in absData %}
2021-09-14 02:49:16 -07:00
{% set alr_fill = namespace(found=false) %}
2021-09-12 02:39:09 -07:00
<form action="/manage/group_teach_publish" id="attendanceData^{{i}}" method="post">
<input type="hidden" name="date" value="{{currDate}}">
2021-09-12 02:39:09 -07:00
<input type="hidden" name="period" value="{{i}}">
<input type="hidden" class="signatureData" name="signatureData" value="">
2021-09-18 04:26:06 -07:00
<div class="col" style="margin-top: 30px;">
<div class="row title sticky-top" style="background-color: white">
2021-09-18 07:04:31 -07:00
<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 %}
2021-09-12 02:39:09 -07:00
{% for grade in absData[i] %}
{% for homeroom in absData[i][grade] %}
{% for student in absData[i][grade][homeroom] %}
2021-09-14 03:42:17 -07:00
{% if student != 'notes' %}
<div class="row">
<div class="col">{{grade}}</div>
<div class="col">{{homeroom}}</div>
<div class="col">{{ student }}</div>
2021-09-12 02:39:09 -07:00
<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 %}
2021-09-12 02:39:09 -07:00
<div class="col">
<p class="highlightAbs n-2">X</p>
</div>
{% elif absData[i][grade][homeroom][student]['absent'] == 2 %}
<div class="col">
2021-09-18 07:04:31 -07:00
<p class="highlightAbs n-3">𝜑</p>
</div>
2021-09-12 02:39:09 -07:00
{% else %}
<div class="col">
<p class="highlightAbs n-1">V</p>
</div>
{% endif %}
{% else %}
<div class="col">
{% if [grade,homeroom] in confirmed %}
2021-09-12 02:39:09 -07:00
<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}}')">
2021-09-12 02:39:09 -07:00
{% endif %}
</div>
{% endif %}
</div>
2021-09-14 03:42:17 -07:00
{% endif %}
{% endfor %}
{% endfor %}
{% endfor %}
{% endif %}
2021-09-12 02:39:09 -07:00
{% 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}}')">
2021-09-18 07:04:31 -07:00
↑ Confirm 確認 (Period {{i}}) ↑</button>
2021-09-12 02:39:09 -07:00
{% endif %}
<div class="signDiv" id="sign^{{i}}" hidden="hidden">
2021-10-07 07:03:30 -07:00
<div class="alert alert-warning margin-top" id="allPresentWarning-{{i}}" role="alert"
hidden="hidden">
<h4 class="alert-heading">請確認是否全班全到Please check if everyone is present!</h4>
</div>
2021-09-18 07:04:31 -07:00
<h3 class="margin-top">Please Sign Below 請在下方簽名</h3>
2021-09-12 02:39:09 -07:00
<div class="forSign"><canvas id="signature_pad^{{i}}"></canvas></div>
2021-09-18 07:04:31 -07:00
<h3 class="margin-top">Notes 備註欄</h3>
2021-09-14 02:49:16 -07:00
<input class="form-control" name="notes" id="subjectNotes^{{i}}" placeholder="Enter Notes 請輸入備註"
style="width: 80%; margin-left: 10%;">
2021-09-18 07:04:31 -07:00
<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>
2021-09-12 02:39:09 -07:00
</div>
</div>
</form>
2021-09-12 02:39:09 -07:00
{% endfor %}
</div>
2021-09-12 02:39:09 -07:00
<script src=" https://cdn.jsdelivr.net/npm/signature_pad@2.3.2/dist/signature_pad.min.js"></script>
2021-09-12 02:44:27 -07:00
<script type="text/javascript" src="/static/jquery.min.js"></script>
<script>
2021-09-12 02:39:09 -07:00
var signaturePad, selPeriod;
var width = $(window).width();
function submitForm() {
if (!signaturePad.isEmpty()) {
loadingAnimation();
signaturePad.off();
var data = signaturePad.toDataURL('image/png');
2021-09-12 02:39:09 -07:00
document.getElementById("attendanceData^" + selPeriod).getElementsByClassName("signatureData")[0].value = data;
document.getElementById("attendanceData^" + selPeriod).submit();
}
else {
alert("Please sign first");
}
}
2021-09-12 02:39:09 -07:00
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) {
2021-10-07 07:03:30 -07:00
$('#allPresentWarning-' + period).removeAttr('hidden');
}
2021-09-12 02:39:09 -07:00
var canvas = document.getElementById("signature_pad^" + period);
signaturePad = new SignaturePad(canvas);
width = $(window).width();
2021-09-12 02:39:09 -07:00
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();
}
});
2021-09-12 02:39:09 -07:00
resizeCanvas();
2021-10-07 07:03:30 -07:00
$('html,body').unbind().animate({ scrollTop: document.getElementById("sign^" + period).offsetTop - $(".sticky-top").outerHeight() - 10 }, 'slow');
2021-09-12 02:39:09 -07:00
}
function unCheckAbs(string) {
document.getElementById('absent^' + string).checked = false;
}
function unCheckLate(string) {
document.getElementById('late^' + string).checked = false;
}
</script>
2021-09-26 06:37:34 -07:00
<div id="loading" style="text-align:center; width:100%; display:none;"><img src="/static/loading.gif" alt=""
style="height:100%;" />
2021-09-09 06:29:31 -07:00
</div>
2021-09-24 22:31:36 -07:00
{% include 'footer.html' %}
<script>
function loadingAnimation() {
$("div.container").hide();
$('#loading').show();
}
function chgDate(sel) {
loadingAnimation();
2021-10-15 05:32:24 -07:00
var url = '/manage/date/' + $('#date').val()
var new_form = document.createElement('form');
new_form.method = 'GET';
new_form.action = url;
document.body.appendChild(new_form);
new_form.submit();
}
</script>
2021-09-18 07:04:31 -07:00
<script src="/static/time.js"></script>
2021-09-09 06:29:31 -07:00
</body>
</html>