// 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(`