mirror of
https://github.com/aaronleetw/Attendance.git
synced 2024-11-14 11:01:39 -08:00
Finish edit functionality (limit admin)
This commit is contained in:
parent
862a9bd9ce
commit
35acf7a64b
9 changed files with 178 additions and 74 deletions
5
.gitignore
vendored
5
.gitignore
vendored
|
@ -1,7 +1,4 @@
|
|||
*.DS_Store
|
||||
*.env
|
||||
test.py
|
||||
demoData/*
|
||||
dummyData/*
|
||||
users.txt
|
||||
test*.*
|
||||
__pycache__/*
|
|
@ -76,3 +76,10 @@ def addZeroesUntil(str, number):
|
|||
else:
|
||||
str = str + '0'
|
||||
return addZeroesUntil(str, number)
|
||||
|
||||
|
||||
# MANAGE
|
||||
def removeprefix(s, prefix):
|
||||
if s.startswith(prefix):
|
||||
return s[len(prefix):]
|
||||
return s
|
||||
|
|
67
manage.py
67
manage.py
|
@ -3,12 +3,6 @@ from functions import *
|
|||
manage = Blueprint('manage', __name__)
|
||||
|
||||
|
||||
def removeprefix(s, prefix):
|
||||
if s.startswith(prefix):
|
||||
return s[len(prefix):]
|
||||
return s
|
||||
|
||||
|
||||
def manageProcess(fCommand, fData):
|
||||
if (check_login_status()):
|
||||
return redirect('/logout')
|
||||
|
@ -134,8 +128,8 @@ def manageProcess(fCommand, fData):
|
|||
absData[p][h[0]][h[1]][num] = {
|
||||
"name": hrData[num]['name'],
|
||||
"eng_name": hrData[num]['eng_name'],
|
||||
"alr_fill": ('signature' in tmpAbsData[currDate][p] and
|
||||
cclass['class_id'] in tmpAbsData[currDate][p]['signature']),
|
||||
"alr_fill": (('signature' in tmpAbsData[currDate][p]) and
|
||||
(cclass['class_id'] in tmpAbsData[currDate][p]['signature'] or 'STUD_AFFAIR_OFFICE' in tmpAbsData[currDate][p]['signature'])),
|
||||
"absent": False if not num in tmpAbsData[currDate][p] else tmpAbsData[currDate][p][num]
|
||||
}
|
||||
return render_template('group_teach.html', dateKeys=sorted(tmpAbsData.keys()), cclass=cclass, absData=absData, dow=dow, currDate=currDate, tmpAbsData=tmpAbsData, confirmed=confirmed)
|
||||
|
@ -254,8 +248,6 @@ def group_teach_publish():
|
|||
else:
|
||||
db.child("Homerooms").child(h[0]).child(h[1]).child(
|
||||
"Absent").child(date).child(period).update({'notes': notes}, session['token'])
|
||||
|
||||
# upload notes
|
||||
os.remove(os.path.join('temp', rand))
|
||||
return redirect('/manage')
|
||||
|
||||
|
@ -269,15 +261,6 @@ def homeroom_abs_publish():
|
|||
homeroom = request.form['homeroom'].split('^')
|
||||
period = request.form['period']
|
||||
signature = request.form['signatureData']
|
||||
if (request.form['stype'] == 'edit'):
|
||||
oldData = list(db.child("Homerooms").child(homeroom[0]).child(homeroom[1]).child(
|
||||
"Absent").child(date).child(period).shallow().get(session['token']).val())
|
||||
print(oldData, type(oldData))
|
||||
for k in oldData:
|
||||
if k == 'name' or k == 'teacher':
|
||||
continue
|
||||
db.child("Homerooms").child(homeroom[0]).child(homeroom[1]).child(
|
||||
"Absent").child(date).child(period).child(k).remove(session['token'])
|
||||
formData = request.form.to_dict()
|
||||
notes = ""
|
||||
if "confirm" in db.child("Homerooms").child(homeroom[0]).child(homeroom[1]).child("Absent").child(date).get(session['token']).val():
|
||||
|
@ -310,6 +293,52 @@ def homeroom_abs_publish():
|
|||
return redirect('/manage')
|
||||
|
||||
|
||||
@manage.route('/manage/edit_abs', methods=['POST'])
|
||||
def edit_abs():
|
||||
if (check_login_status() or not check_permission()):
|
||||
return redirect('/logout')
|
||||
refresh_token()
|
||||
date = request.form['date']
|
||||
homeroom = request.form['homeroom'].split('^')
|
||||
period = request.form['period']
|
||||
signature = "https://firebasestorage.googleapis.com/v0/b/attendance-be176.appspot.com/o/stud_affairs.png?alt=media"
|
||||
formData = request.form.to_dict()
|
||||
notes = ""
|
||||
oldData = list(db.child("Homerooms").child(homeroom[0]).child(homeroom[1]).child(
|
||||
"Absent").child(date).child(period).shallow().get(session['token']).val())
|
||||
for k in oldData:
|
||||
if k == 'name' or k == 'teacher':
|
||||
continue
|
||||
db.child("Homerooms").child(homeroom[0]).child(homeroom[1]).child(
|
||||
"Absent").child(date).child(period).child(k).remove(session['token'])
|
||||
cfrmstatus = db.child("Homerooms").child(homeroom[0]).child(
|
||||
homeroom[1]).child("Absent").child(date).get(session['token']).val()
|
||||
if "confirm" in cfrmstatus:
|
||||
db.child("Homerooms").child(homeroom[0]).child(homeroom[1]).child(
|
||||
"Absent").child(date).update({'notes': cfrmstatus['notes'] + '; (確認後學務處有更改)'}, session['token'])
|
||||
if 'notes' in request.form:
|
||||
notes = request.form['notes']
|
||||
formData.pop('notes')
|
||||
formData.pop('date')
|
||||
formData.pop('homeroom')
|
||||
formData.pop('period')
|
||||
for i in formData:
|
||||
i = i.split('^')
|
||||
db.child("Homerooms").child(homeroom[0]).child(
|
||||
homeroom[1]).child("Absent").child(date).child(period).update({i[1]: int(i[0])}, session['token'])
|
||||
db.child("Homerooms").child(homeroom[0]).child(homeroom[1]).child(
|
||||
"Absent").child(date).child(period).update({'notes': notes}, session['token'])
|
||||
if cfrmstatus[period]['name'] == 'GP':
|
||||
db.child("Homerooms").child(homeroom[0]).child(
|
||||
homeroom[1]).child("Absent").child(date).child(period).child("signature").set({'STUD_AFFAIR_OFFICE': signature}, session['token'])
|
||||
db.child("Homerooms").child(homeroom[0]).child(
|
||||
homeroom[1]).child("Absent").child(date).child(period).child("names").set({'STUD_AFFAIR_OFFICE': "學務處已編輯"}, session['token'])
|
||||
else:
|
||||
db.child("Homerooms").child(homeroom[0]).child(
|
||||
homeroom[1]).child("Absent").child(date).child(period).child("signature").set(signature, session['token'])
|
||||
return redirect('/manage/admin/'+homeroom[0]+'/'+homeroom[1]+'/'+date)
|
||||
|
||||
|
||||
@manage.route('/manage/homeroom_confirm', methods=['POST'])
|
||||
def homeroom_confirm():
|
||||
if (check_login_status()):
|
||||
|
|
|
@ -24,3 +24,55 @@ function redirAdmin() {
|
|||
$('.container').hide();
|
||||
$('#loading').show();
|
||||
}
|
||||
|
||||
function edit(string) {
|
||||
$('.view-' + string).each(function (i, obj) {
|
||||
var num = $(this.firstElementChild).attr('class').split(' ')[2].replace('view-n-', '');
|
||||
if ($(this.firstElementChild).attr('class').split(' ')[1] == "n-1") {
|
||||
$(this).html("")
|
||||
$(this).append("<input type=\"checkbox\" class=\"tobeform 2^" + string + "^" + num + " late\" id=\"late^" + string + "^" + num + "\" onchange=\"unCheckAbs('" + string + "^" + num + "')\">");
|
||||
$(this).append("\n<input type=\"checkbox\" class=\"tobeform 1^" + string + "^" + num + " absent\" id=\"absent^" + string + "^" + num + "\" onchange=\"unCheckLate('" + string + "^" + num + "')\">");
|
||||
} else if ($(this.firstElementChild).attr('class').split(' ')[1] == "n-2") {
|
||||
$(this).html("")
|
||||
$(this).append("<input type=\"checkbox\" class=\"tobeform 2^" + string + "^" + num + " late\" id=\"late^" + string + "^" + num + "\" onchange=\"unCheckAbs('" + string + "^" + num + "')\">");
|
||||
$(this).append("\n<input type=\"checkbox\" class=\"tobeform 1^" + string + "^" + num + " absent\" id=\"absent^" + string + "^" + num + "\" onchange=\"unCheckLate('" + string + "^" + num + "')\" checked>");
|
||||
} else if ($(this.firstElementChild).attr('class').split(' ')[1] == "n-3") {
|
||||
$(this).html("")
|
||||
$(this).append("<input type=\"checkbox\" class=\"tobeform 2^" + string + "^" + num + " late\" id=\"late^" + string + "^" + num + "\" onchange=\"unCheckAbs('" + string + "^" + num + "')\" checked>");
|
||||
$(this).append("\n<input type=\"checkbox\" class=\"tobeform 1^" + string + "^" + num + " absent\" id=\"absent^" + string + "^" + num + "\" onchange=\"unCheckLate('" + string + "^" + num + "')\">");
|
||||
}
|
||||
});
|
||||
$('#btns-' + string).html("")
|
||||
$('.afterSelButton').attr('disabled', 'disabled');
|
||||
$('#btns-' + string).append("<button class=\"btn btn-secondary editSaveButton\" onclick=\"afterSelAbs('" + string + "', 'edit')\">Save</button>");
|
||||
}
|
||||
|
||||
function unCheckLate(string) {
|
||||
document.getElementById('late^' + string).checked = false;
|
||||
}
|
||||
function unCheckAbs(string) {
|
||||
document.getElementById('absent^' + string).checked = false;
|
||||
}
|
||||
|
||||
function afterSelAbs(period) {
|
||||
$('#postHomeroomAbs #HR-period').attr('value', period);
|
||||
$('.tobeform').attr('disabled', 'disabled');
|
||||
$('.afterSelButton').attr('disabled', 'disabled');
|
||||
$('.tobeform').each(function (i, obj) {
|
||||
if ($(this).attr('class').split(' ')[1].split('^')[1] == period &&
|
||||
$(this).is(":checked")) {
|
||||
$('#postHomeroomAbs').append('<input type="checkbox" name="' + $(this).attr('class').split(' ')[1].split('^')[0] + '^'
|
||||
+ $(this).attr('class').split(' ')[1].split('^')[2]
|
||||
+ '" checked="checked">');
|
||||
}
|
||||
});
|
||||
$('#finalCheck').modal('show');
|
||||
}
|
||||
|
||||
function submitForm() {
|
||||
$('#HR-notes').attr('value', $('#subjectNotes').val());
|
||||
$('#postHomeroomAbs').submit();
|
||||
$('#finalCheck').modal('hide');
|
||||
$('.container').hide();
|
||||
$('#loading').show();
|
||||
}
|
|
@ -57,7 +57,6 @@ function showSignaturePad() {
|
|||
resizeCanvas();
|
||||
}
|
||||
function afterSelAbs(period) {
|
||||
var tobeformArr = [];
|
||||
$('#postHomeroomAbs #HR-period').attr('value', period);
|
||||
$('.tobeform').attr('disabled', 'disabled');
|
||||
$('.afterSelButton').attr('disabled', 'disabled');
|
||||
|
|
BIN
static/stud_affairs.png
Normal file
BIN
static/stud_affairs.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 25 KiB |
BIN
static/stud_affairs.xcf
Normal file
BIN
static/stud_affairs.xcf
Normal file
Binary file not shown.
|
@ -66,8 +66,8 @@
|
|||
<div class="col">座號</div>
|
||||
<div class="col">姓名</div>
|
||||
<div class="col">英文姓名</div>
|
||||
{% for p in periods %}
|
||||
<div class="col">{{p}}</div>
|
||||
{% for i in periods %}
|
||||
<div class="col">{{i}}</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="row title">
|
||||
|
@ -76,11 +76,8 @@
|
|||
<div class="col"></div>
|
||||
<div class="col"></div>
|
||||
{% for i in periods %}
|
||||
<div class="col">{{absData[currDate][i]['name']}}
|
||||
{% if 'changed' in absData[currDate][i] %}
|
||||
<span style="color: red;">(換)</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="col">
|
||||
{{absData[currDate][i]['name']}}</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="row title">
|
||||
|
@ -93,7 +90,6 @@
|
|||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% if data != None %}
|
||||
{% for i in homeroomData %}
|
||||
<div class="row">
|
||||
<div class="col">{{homeroomCode[0]}}{{homeroomCode[1]}}</div>
|
||||
|
@ -101,23 +97,23 @@
|
|||
<div class="col">{{ homeroomData[i]['name'] }}</div>
|
||||
<div class="col">{{ homeroomData[i]['eng_name'] }}</div>
|
||||
{% for j in periods %}
|
||||
<div class="col" {% if currPeriod==j %} style="background-color: #ffdf81;" {% endif %}>
|
||||
<div class="col view-{{j}}">
|
||||
{% if 'signature' in absData[currDate][j] %}
|
||||
{% if i in absData[currDate][j] %}
|
||||
{% if absData[currDate][j][i] == 1 %}
|
||||
<p class="highlightAbs n-2">X</p>
|
||||
<p class="highlightAbs n-2 view-n-{{i}}">X</p>
|
||||
{% else %}
|
||||
<p class="highlightAbs n-3">𝜑</p>
|
||||
<p class="highlightAbs n-3 view-n-{{i}}">𝜑</p>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% if absData[currDate][j]['name'] != 'GP' %}
|
||||
<p class="highlightAbs n-1">V</p>
|
||||
<p class="highlightAbs n-1 view-n-{{i}}">V</p>
|
||||
{% else %}
|
||||
{% if (homeroomData[i]['GP_Class'][absData[currDate][j]['teacher']] in
|
||||
absData[currDate][j]['signature'])%}
|
||||
<p class="highlightAbs n-1">V</p>
|
||||
absData[currDate][j]['signature'] or 'STUD_AFFAIR_OFFICE' in absData[currDate][j]['signature'])%}
|
||||
<p class="highlightAbs n-1 view-n-{{i}}">V</p>
|
||||
{% else %}
|
||||
<p class="highlightAbs n-2"></p>
|
||||
<p class="highlightAbs n-2 view-n-{{i}}"></p>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
@ -135,7 +131,28 @@
|
|||
{% endfor %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% if showUpload == '1' %}
|
||||
<div class="row">
|
||||
<div class="col"></div>
|
||||
<div class="col"></div>
|
||||
<div class="col"></div>
|
||||
<div class="col"></div>
|
||||
{% for i in periods %}
|
||||
<div id="btns-{{i}}" class="col">
|
||||
{% if ('signature' in absData[currDate][i] or 'confirm' in absData[currDate][i]) %}
|
||||
<button class="btn btn-danger afterSelButton" onclick="edit('{{i|string}}')">編輯
|
||||
<br>{{absData[currDate][i]['name']}}</button>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
<form action="/manage/edit_abs" id="postHomeroomAbs" hidden="hidden" method="post">
|
||||
<input type="text" id="HR-date" name="date" value="{{currDate}}">
|
||||
<input type="text" id="HR-period" name="period" value="">
|
||||
<input type="text" id="HR-notes" name="notes" value="">
|
||||
<input type="text" id="HR-homeroom" name="homeroom" value="{{homeroomCode[0]}}^{{homeroomCode[1]}}">
|
||||
</form>
|
||||
{% for c in range(periods|length + 1) %}
|
||||
{% if c % 4 == 0 %}
|
||||
<div class="row signatures">
|
||||
|
@ -153,7 +170,8 @@
|
|||
{% if absData[currDate][periods[c-1]]['name'] == 'GP' %}
|
||||
{% if 'signature' in absData[currDate][periods[c-1]] %}
|
||||
{% for i in absData[currDate][periods[c-1]]['signature'] %}
|
||||
<div class="row needborder">{{periods[c-1]}}: {{absData[currDate][periods[c-1]]['teacher']}}: {{i}}:
|
||||
<div class="row needborder">{{periods[c-1]}}:
|
||||
{{absData[currDate][periods[c-1]]['teacher']}}: {{i}}:
|
||||
{{absData[currDate][periods[c-1]]['names'][i]}}</div>
|
||||
<div class="row"><img src="{{absData[currDate][periods[c-1]]['signature'][i]}}" alt="">
|
||||
{% if loop.index == loop.length %}
|
||||
|
@ -162,7 +180,8 @@
|
|||
</div>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<div class="row needborder">{{periods[c-1]}}: {{absData[currDate][periods[c-1]]['teacher']}}: No
|
||||
<div class="row needborder">{{periods[c-1]}}:
|
||||
{{absData[currDate][periods[c-1]]['teacher']}}: No
|
||||
Signature
|
||||
</div>
|
||||
<div class="row"></div>
|
||||
|
@ -171,8 +190,8 @@
|
|||
<div class="row needborder">{{periods[c-1]}}: {{absData[currDate][periods[c-1]]['name']}}:
|
||||
{{absData[currDate][periods[c-1]]['teacher']}}
|
||||
</div>
|
||||
<div class="row"><img src="{{absData[currDate][periods[c-1]]['signature']}}"
|
||||
alt=""><br>備註:{{absData[currDate][periods[c-1]]['notes']}}</div>
|
||||
<div class="row"><img src="{{absData[currDate][periods[c-1]]['signature']}}" alt=""><br>備註:
|
||||
{{absData[currDate][periods[c-1]]['notes']}}</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
||||
|
@ -181,6 +200,29 @@
|
|||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div id="finalCheck" class="modal fade" id="staticBackdrop" data-bs-backdrop="static" data-bs-keyboard="false"
|
||||
tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-xl">
|
||||
<form onsubmit="return false;">
|
||||
<div class="modal-content">
|
||||
<div class="modal-body">
|
||||
<div class="alert alert-danger margin-top" id="allPresentWarning" role="alert">
|
||||
<h4 class="alert-heading">請確認更改!Please confirm that you are editting records!</h4>
|
||||
</div>
|
||||
<h3 class="margin-top">Notes 備註欄</h3>
|
||||
<input type="textarea" class="form-control" name="notes" id="subjectNotes"
|
||||
placeholder="Enter Notes 請輸入備註" style="width: 80%; margin-left: 10%;" row="3">
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-danger" onclick="location.reload();">Cancel
|
||||
取消</button>
|
||||
<button type="submit" class="btn btn-primary submitButton" onclick="submitForm()">Submit
|
||||
提交</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
{% if showUpload == '1' %}
|
||||
<div class="row margin-top">
|
||||
<div class="col">
|
||||
|
@ -204,7 +246,9 @@
|
|||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"
|
||||
integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p"
|
||||
crossorigin="anonymous"></script>
|
||||
<script type="text/javascript" src="/static/jquery.min.js"></script>
|
||||
<div id="loading" style="text-align:center; width:100%; display:none;"><img src="/static/loading.gif" alt=""
|
||||
style="height:100%;" />
|
||||
|
|
|
@ -94,7 +94,7 @@
|
|||
<p class="highlightAbs n-1 view-n-{{i}}">V</p>
|
||||
{% else %}
|
||||
{% if (homeroomData[i]['GP_Class'][absData[currDate][j]['teacher']] in
|
||||
absData[currDate][j]['signature'])%}
|
||||
absData[currDate][j]['signature'] or 'STUD_AFFAIR_OFFICE' in absData[currDate][j]['signature'])%}
|
||||
<p class="highlightAbs n-1 view-n-{{i}}">V</p>
|
||||
{% else %}
|
||||
<p class="highlightAbs n-2 view-n-{{i}}"></p>
|
||||
|
@ -125,11 +125,9 @@
|
|||
<div class="col"></div>
|
||||
{% for i in periods %}
|
||||
<div id="btns-{{i}}" class="col" {% if currPeriod==i %} style="background-color: #ffdf81;" {% endif %}>
|
||||
{% if (absData[currDate][i]['name'] == 'GP' or 'confirm' in absData[currDate]) %}
|
||||
<button class="btn btn-danger afterSelButton" disabled="disabled"></button>
|
||||
{% elif ('signature' in absData[currDate][i]) %}
|
||||
<button class="btn btn-danger afterSelButton" onclick="edit('{{i|string}}')">Edit
|
||||
<br>{{absData[currDate][i]['name']}}</button>
|
||||
{% if (absData[currDate][i]['name'] == 'GP' or 'confirm' in absData[currDate] or 'signature' in
|
||||
absData[currDate][i]) %}
|
||||
<button class="btn btn-primary afterSelButton" disabled="disabled"></button>
|
||||
{% else %}
|
||||
<button class="btn btn-primary afterSelButton"
|
||||
onclick="afterSelAbs('{{i|string}}', 'newSubmit')">Confirm<br>{{absData[currDate][i]['name']}}</button>
|
||||
|
@ -242,28 +240,6 @@
|
|||
{% for i in periods %}
|
||||
periodData['{{i}}'] = '{{ absData[currDate][i]['name'] }}'
|
||||
{% endfor %}
|
||||
|
||||
function edit(string) {
|
||||
$('.view-' + string).each(function (i, obj) {
|
||||
var num = $(this.firstElementChild).attr('class').split(' ')[2].replace('view-n-', '');
|
||||
if ($(this.firstElementChild).attr('class').split(' ')[1] == "n-1") {
|
||||
$(this).html("")
|
||||
$(this).append("<input type=\"checkbox\" class=\"tobeform 2^" + string + "^" + num + " late\" id=\"late^" + string + "^" + num + "\" onchange=\"unCheckAbs('" + string + "^" + num + "')\">");
|
||||
$(this).append("\n<input type=\"checkbox\" class=\"tobeform 1^" + string + "^" + num + " absent\" id=\"absent^" + string + "^" + num + "\" onchange=\"unCheckLate('" + string + "^" + num + "')\">");
|
||||
} else if ($(this.firstElementChild).attr('class').split(' ')[1] == "n-2") {
|
||||
$(this).html("")
|
||||
$(this).append("<input type=\"checkbox\" class=\"tobeform 2^" + string + "^" + num + " late\" id=\"late^" + string + "^" + num + "\" onchange=\"unCheckAbs('" + string + "^" + num + "')\">");
|
||||
$(this).append("\n<input type=\"checkbox\" class=\"tobeform 1^" + string + "^" + num + " absent\" id=\"absent^" + string + "^" + num + "\" onchange=\"unCheckLate('" + string + "^" + num + "')\" checked>");
|
||||
} else {
|
||||
$(this).html("")
|
||||
$(this).append("<input type=\"checkbox\" class=\"tobeform 2^" + string + "^" + num + " late\" id=\"late^" + string + "^" + num + "\" onchange=\"unCheckAbs('" + string + "^" + num + "')\" checked>");
|
||||
$(this).append("\n<input type=\"checkbox\" class=\"tobeform 1^" + string + "^" + num + " absent\" id=\"absent^" + string + "^" + num + "\" onchange=\"unCheckLate('" + string + "^" + num + "')\" checked>");
|
||||
}
|
||||
});
|
||||
$('#btns-' + string).html("")
|
||||
$('.afterSelButton').attr('disabled', 'disabled');
|
||||
$('#btns-' + string).append("<button class=\"btn btn-secondary editSaveButton\" onclick=\"afterSelAbs('" + string + "', 'edit')\">Save</button>");
|
||||
}
|
||||
</script>
|
||||
<script src="/static/pagejs/homeroom.js"></script>
|
||||
<script src="/static/time.js"></script>
|
||||
|
|
Loading…
Reference in a new issue