277 lines
8.2 KiB
JavaScript
277 lines
8.2 KiB
JavaScript
// Menu Highlight Scripts
|
|
const menuItems = document.getElementsByClassName('nav-link')
|
|
for(let i = 0; i < menuItems.length; i++) {
|
|
if(menuItems[i].pathname == window.location.pathname) {
|
|
menuItems[i].classList.add('active')
|
|
}
|
|
}
|
|
const dropdownItems = document.getElementsByClassName('dropdown-item')
|
|
for(let i = 0; i< dropdownItems.length; i++) {
|
|
if(dropdownItems[i].pathname == window.location.pathname) {
|
|
dropdownItems[i].classList.add('active')
|
|
$( "#" + dropdownItems[i].id ).closest( '.dropdown' ).find('.dropdown-toggle').addClass('active')
|
|
}
|
|
}
|
|
|
|
// General Post Method Form Processing Script
|
|
$('form.form-post').submit(function(event) {
|
|
|
|
var $form = $(this)
|
|
var data = $form.serialize()
|
|
var url = $(this).prop('action')
|
|
var rel_success = $(this).data('rel-success')
|
|
|
|
$.ajax({
|
|
url: url,
|
|
type: 'POST',
|
|
data: data,
|
|
dataType: 'json',
|
|
success: function(response) {
|
|
if (response.redirect_to) {
|
|
window.location.href = response.redirect_to
|
|
}
|
|
else {
|
|
window.location.href = rel_success
|
|
}
|
|
},
|
|
error: function(response) {
|
|
error_response(response)
|
|
}
|
|
})
|
|
|
|
event.preventDefault()
|
|
})
|
|
|
|
// Form Upload Questions - Special case, needs to handle files.
|
|
$('form[name=form-upload-questions]').submit(function(event) {
|
|
|
|
var $form = $(this)
|
|
var data = new FormData($form[0])
|
|
var file = $('input[name=data_file]')[0].files[0]
|
|
data.append('file', file)
|
|
|
|
$.ajax({
|
|
url: window.location.pathname,
|
|
type: 'POST',
|
|
data: data,
|
|
processData: false,
|
|
contentType: false,
|
|
success: function(response) {
|
|
window.location.reload()
|
|
},
|
|
error: function(response) {
|
|
error_response(response)
|
|
}
|
|
})
|
|
|
|
event.preventDefault()
|
|
})
|
|
|
|
// Edit and Delete Test Button Handlers
|
|
$('.test-action').click(function(event) {
|
|
|
|
let id = $(this).data('id')
|
|
let action = $(this).data('action')
|
|
|
|
if (action == 'delete' || action == 'start' || action == 'end') {
|
|
$.ajax({
|
|
url: `/admin/tests/edit/`,
|
|
type: 'POST',
|
|
data: JSON.stringify({'id': id, 'action': action}),
|
|
contentType: 'application/json',
|
|
success: function(response) {
|
|
window.location.href = '/admin/tests/'
|
|
},
|
|
error: function(response){
|
|
error_response(response)
|
|
},
|
|
})
|
|
} else if (action == 'edit') {
|
|
window.location.href = `/admin/test/${id}/`
|
|
} else if (action == 'analyse') {
|
|
$.ajax({
|
|
url: `/admin/analysis/`,
|
|
type: 'POST',
|
|
data: JSON.stringify({'id': id, 'class': 'test'}),
|
|
contentType: 'application/json',
|
|
success: function(response) {
|
|
window.location.href = response
|
|
},
|
|
error: function(response){
|
|
error_response(response)
|
|
},
|
|
})
|
|
}
|
|
|
|
event.preventDefault()
|
|
})
|
|
|
|
// Edit Dataset Button Handlers
|
|
$('.edit-question-dataset').click(function(event) {
|
|
|
|
var id = $(this).data('id')
|
|
var action = $(this).data('action')
|
|
var disabled = $(this).hasClass('disabled')
|
|
|
|
if ( !disabled ) {
|
|
if (action == 'delete') {
|
|
$.ajax({
|
|
url: `/admin/settings/questions/${action}/`,
|
|
type: 'POST',
|
|
data: JSON.stringify({
|
|
'id': id,
|
|
'action': action,
|
|
}),
|
|
contentType: 'application/json',
|
|
success: function(response) {
|
|
window.location.reload()
|
|
},
|
|
error: function(response){
|
|
error_response(response)
|
|
},
|
|
})
|
|
} else if (action == 'edit') {
|
|
window.location.href = `/admin/editor/${id}/`
|
|
} else if (action == 'view') {
|
|
window.location.href = `/admin/view/${id}`
|
|
} else if (action == 'download') {
|
|
window.location.href = `/admin/settings/questions/download/${id}/`
|
|
} else if (action == 'analyse') {
|
|
$.ajax({
|
|
url: `/admin/analysis/`,
|
|
type: 'POST',
|
|
data: JSON.stringify({'id': id, 'class': 'dataset'}),
|
|
contentType: 'application/json',
|
|
success: function(response) {
|
|
window.location.href = response
|
|
},
|
|
error: function(response){
|
|
error_response(response)
|
|
},
|
|
})
|
|
}
|
|
}
|
|
event.preventDefault()
|
|
})
|
|
|
|
function error_response(response) {
|
|
|
|
const $alert = $("#alert-box")
|
|
$alert.html('')
|
|
|
|
if (typeof response.responseJSON.error === 'string' || response.responseJSON.error instanceof String) {
|
|
$alert.html(`
|
|
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
|
<i class="bi bi-exclamation-triangle-fill" title="Danger"></i>
|
|
${response.responseJSON.error}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
`)
|
|
} else if (response.responseJSON.error instanceof Array) {
|
|
var output = ''
|
|
for (let i = 0; i < response.responseJSON.error.length; i ++) {
|
|
output += `
|
|
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
|
<i class="bi bi-exclamation-triangle-fill" title="Danger"></i>
|
|
${response.responseJSON.error[i]}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
`
|
|
$alert.html(output)
|
|
}
|
|
}
|
|
|
|
$alert.focus()
|
|
}
|
|
|
|
// Dismiss Cookie Alert
|
|
$('#dismiss-cookie-alert').click(function(event){
|
|
|
|
$.ajax({
|
|
url: '/cookies/',
|
|
type: 'POST',
|
|
data: {
|
|
time: Date.now()
|
|
},
|
|
dataType: 'json',
|
|
success: function(response){
|
|
console.log(response)
|
|
},
|
|
error: function(response){
|
|
console.log(response)
|
|
}
|
|
})
|
|
|
|
event.preventDefault()
|
|
})
|
|
|
|
// Script for Result Actions
|
|
$('.result-action-buttons').click(function(event){
|
|
|
|
var id = $(this).data('id')
|
|
|
|
if ($(this).data('result-action') == 'generate') {
|
|
$.ajax({
|
|
url: '/admin/certificate/',
|
|
type: 'POST',
|
|
data: JSON.stringify({'id': id}),
|
|
contentType: 'application/json',
|
|
dataType: 'html',
|
|
success: function(response) {
|
|
var display_window = window.open()
|
|
display_window.document.write(response)
|
|
},
|
|
error: function(response){
|
|
error_response(response)
|
|
},
|
|
})
|
|
} else {
|
|
var action = $(this).data('result-action')
|
|
$.ajax({
|
|
url: window.location.href,
|
|
type: 'POST',
|
|
data: JSON.stringify({'id': id, 'action': action}),
|
|
contentType: 'application/json',
|
|
success: function(response) {
|
|
if (action == 'delete') {
|
|
window.location.href = '/admin/results/'
|
|
} else window.location.reload()
|
|
},
|
|
error: function(response){
|
|
error_response(response)
|
|
},
|
|
})
|
|
}
|
|
|
|
event.preventDefault()
|
|
})
|
|
|
|
// Script for Deleting Time Adjustment
|
|
$('.adjustment-delete').click(function(event){
|
|
|
|
var user_code = $(this).data('user_code')
|
|
var location = window.location.href
|
|
location = location.replace('#', '')
|
|
|
|
$.ajax({
|
|
url: location + 'delete-adjustment/',
|
|
type: 'POST',
|
|
data: JSON.stringify({'user_code': user_code}),
|
|
contentType: 'application/json',
|
|
success: function(response) {
|
|
window.location.reload()
|
|
},
|
|
error: function(response){
|
|
error_response(response)
|
|
},
|
|
})
|
|
|
|
event.preventDefault()
|
|
})
|
|
|
|
// Detailed Results view questions
|
|
$('.view-full-questions').click(function(event) {
|
|
var dataset = $(this).data('dataset')
|
|
window.open(`/admin/view/${dataset}`, '_blank')
|
|
event.preventDefault()
|
|
}) |