151 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			151 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
// Variable Declarations
 | 
						|
const $control_panel = $('.control-panel')
 | 
						|
const $info_panel = $('.info-panel')
 | 
						|
const $viewer_panel = $('.viewer-panel')
 | 
						|
 | 
						|
var element_index = 0
 | 
						|
 | 
						|
// Info Button Listener
 | 
						|
$control_panel.find('button').click(function(event){
 | 
						|
    if ($info_panel.is(":hidden")) {
 | 
						|
        $viewer_panel.hide()
 | 
						|
        $info_panel.fadeIn()
 | 
						|
        $(this).addClass('active')
 | 
						|
    } else {
 | 
						|
        $info_panel.hide()
 | 
						|
        $viewer_panel.fadeIn()
 | 
						|
        $(this).removeClass('active')
 | 
						|
    }
 | 
						|
    event.preventDefault()
 | 
						|
})
 | 
						|
 | 
						|
function parse_data(data) {
 | 
						|
    var block
 | 
						|
    var obj
 | 
						|
    for (let i = 0; i < data.length; i++) {
 | 
						|
        block = data[i]
 | 
						|
        obj = document.createElement('div')
 | 
						|
        obj.classList = 'block'
 | 
						|
        if (block['type'] == 'question') {
 | 
						|
            text = document.createElement('p')
 | 
						|
            text.innerHTML = `<strong>Question ${block['q_no'] + 1}.</strong> ${block['text']}`
 | 
						|
            obj.append(text)
 | 
						|
            question_body = document.createElement('div')
 | 
						|
            question_body.className ='question-body'
 | 
						|
            type = document.createElement('p')
 | 
						|
            type.innerHTML = `<strong>Question Type:</strong> ${block['q_type']}`
 | 
						|
            question_body.append(type)
 | 
						|
            options = document.createElement('p')
 | 
						|
            options.innerHTML = '<strong>Options:</strong>'
 | 
						|
            option_list = document.createElement('ul')
 | 
						|
            for (let _i = 0; _i < block['options'].length; _i++) {
 | 
						|
                option = document.createElement('li')
 | 
						|
                option.innerHTML = block['options'][_i]
 | 
						|
                if (block['correct'] == _i) {
 | 
						|
                    option.innerHTML += ' <span class="badge rounded-pill bg-success">Correct</span>'
 | 
						|
                }
 | 
						|
                option_list.append(option)
 | 
						|
            }
 | 
						|
            options.append(option_list)
 | 
						|
            question_body.append(options)
 | 
						|
            tags = document.createElement('p')
 | 
						|
            tags.innerHTML = `<strong>Tags:</strong>`
 | 
						|
            tag_list = document.createElement('ul')
 | 
						|
            for (let _i = 0; _i < block['tags'].length; _i++) {
 | 
						|
                tag = document.createElement('li')
 | 
						|
                tag.innerHTML = block['tags'][_i]
 | 
						|
                tag_list.append(tag)
 | 
						|
            }
 | 
						|
            tags.append(tag_list)
 | 
						|
            question_body.append(tags)
 | 
						|
            obj.append(question_body)
 | 
						|
        } else if (block['type'] == 'block') {
 | 
						|
            meta = document.createElement('p')
 | 
						|
            meta.innerHTML = `<strong>Block ${i+1}.</strong> ${block['questions'].length} questions.`
 | 
						|
            obj.append(meta)
 | 
						|
            header = document.createElement('blockquote')
 | 
						|
            header.innerText = block['question_header']
 | 
						|
            obj.append(header)
 | 
						|
            var block_question = document.createElement('div')
 | 
						|
            var question
 | 
						|
            block_question.className = 'question-block'
 | 
						|
            for (let _i = 0; _i < block['questions'].length; _i++) {
 | 
						|
                question = block['questions'][_i]
 | 
						|
                text = document.createElement('p')
 | 
						|
                text.innerHTML = `<strong>Question ${question['q_no'] + 1}.</strong> ${question['text']}`
 | 
						|
                block_question.append(text)
 | 
						|
                question_body = document.createElement('div')
 | 
						|
                question_body.className ='question-body'
 | 
						|
                type = document.createElement('p')
 | 
						|
                type.innerHTML = `<strong>Question Type:</strong> ${question['q_type']}`
 | 
						|
                question_body.append(type)
 | 
						|
                options = document.createElement('p')
 | 
						|
                options.innerHTML = '<strong>Options:</strong>'
 | 
						|
                option_list = document.createElement('ul')
 | 
						|
                for (let __i = 0; __i < question['options'].length; __i++) {
 | 
						|
                    option = document.createElement('li')
 | 
						|
                    option.innerHTML = question['options'][__i]
 | 
						|
                    if (question['correct'] == __i) {
 | 
						|
                        option.innerHTML += ' <span class="badge rounded-pill bg-success">Correct</span>'
 | 
						|
                    }
 | 
						|
                    option_list.append(option)
 | 
						|
                }
 | 
						|
                options.append(option_list)
 | 
						|
                question_body.append(options)
 | 
						|
                tags = document.createElement('p')
 | 
						|
                tags.innerHTML = `<strong>Tags:</strong>`
 | 
						|
                tag_list = document.createElement('ul')
 | 
						|
                for (let __i = 0; __i < question['tags'].length; __i++) {
 | 
						|
                    tag = document.createElement('li')
 | 
						|
                    tag.innerHTML = question['tags'][__i]
 | 
						|
                    tag_list.append(tag)
 | 
						|
                }
 | 
						|
                tags.append(tag_list)
 | 
						|
                question_body.append(tags)
 | 
						|
                block_question.append(question_body)
 | 
						|
                obj.append(block_question)
 | 
						|
            }
 | 
						|
        }
 | 
						|
        $viewer_panel.append(obj)
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
// Analyse Button
 | 
						|
$('.dataset-analyse').click(function(event) {
 | 
						|
    
 | 
						|
    let id = $(this).data('id')
 | 
						|
 | 
						|
    $.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()
 | 
						|
})
 | 
						|
 | 
						|
// Fetch data once page finishes loading
 | 
						|
$(window).on('load', function() {
 | 
						|
    $.ajax({
 | 
						|
        url: target,
 | 
						|
        type: 'POST',
 | 
						|
        data: JSON.stringify({
 | 
						|
            'id': id,
 | 
						|
            'action': 'fetch'
 | 
						|
        }),
 | 
						|
        contentType: 'application/json',
 | 
						|
        success: function(response) {
 | 
						|
            parse_data(response['data'])
 | 
						|
        },
 | 
						|
        error: function(response) {
 | 
						|
            console.log(response)
 | 
						|
        }
 | 
						|
    })
 | 
						|
}) |