Bottaajat/cultura

View on GitHub
public/js/task.edit.js

Summary

Maintainability
F
3 days
Test Coverage
function Edit_OrderingWords(draggables,droppables,showables,id) {
    var words = 0;
    $('<input type="button" class="btn btn-success" value="Lisää uusi"/>').attr( 'id', 'edit-'+id+'-add' ).appendTo( '#edit-'+id+'-input' );
    $('<input type="button" class="btn btn-danger" value="Poista viimeisin"/>').attr( 'id', 'edit-'+id+'-del' ).appendTo( '#edit-'+id+'-input' );

    $('#edit-'+id+'-add').on( 'click', function() {
        var pair_add = $('<div id="edit-'+id+'-pair-'+words+'" class="word_pair">');
        $(pair_add).append('<input type="text" name="droppable[]"  id="edit-'+id+'-droppable-'+words+'" placeholder="kohde" required/>');
        $(pair_add).append('<input type="text" name="draggable[]"  id="edit-'+id+'-draggable-'+words+'" placeholder="vedettävä" required/>');
        $(pair_add).append('<input type="text" name="showable[]"  id="edit-'+id+'-showable-'+words+'" placeholder="näytettävä" required/>');
        $(pair_add).append('</div>');
        $('#edit-'+id+'-input').append(pair_add);
        words++;
    });
    
    $('#edit-'+id+'-del').on( 'click', function() {
        if (words > 3) {
            $( '#edit-'+id+'-pair-'+(words-1) ).remove();
            words--;
        }
    });
    
    for (var i = 0; i < draggables.length; i++){
        $('#edit-'+id+'-add').click();
        $('#edit-'+id+'-draggable-'+i).val(draggables[i]);
        $('#edit-'+id+'-droppable-'+i).val(droppables[i]);
        $('#edit-'+id+'-showable-'+i).val(showables[i]);
        //if (droppables[i] != 'no img') $('#edit-'+id+'-droppable-'+i).val(droppables[i]);
    }
}

function Edit_OrderingImages(draggables,droppables,id) {
    var words = 0;
    $('<input type="button" class="btn btn-success" value="Lisää uusi"/>').attr( 'id', 'edit-'+id+'-add' ).appendTo( '#edit-'+id+'-input' );
    $('<input type="button" class="btn btn-danger" value="Poista viimeisin"/>').attr( 'id', 'edit-'+id+'-del' ).appendTo( '#edit-'+id+'-input' );

    $('#edit-'+id+'-add').on( 'click', function() {
        var pair_add = $('<div id="edit-'+id+'-pair-'+words+'" class="word_pair">');
        $(pair_add).append('<span><input type="file" name="droppable[]"  id="edit-'+id+'-droppable-'+words+'" required/></span>');
        $(pair_add).append('<input type="text" name="draggable[]"  id="edit-'+id+'-draggable-'+words+'" placeholder="vedettävä" required/>');
        $(pair_add).append('</div>');
        $('#edit-'+id+'-input').append(pair_add);
        words++;
    });
    
    $('#edit-'+id+'-del').on( 'click', function() {
        if (words > 3) {
            $( '#edit-'+id+'-pair-'+(words-1) ).remove();
            words--;
        }
    });
    
    for (var i = 0; i < draggables.length; i++){
        $('#edit-'+id+'-add').click();
        $('#edit-'+id+'-draggable-'+i).val(draggables[i]);
        if (droppables[i] === 'no img') $('#edit-'+id+'-droppable-'+i).addClass("warning");
        else document.getElementById('edit-'+id+'-droppable-'+i).required = false;
    }
}

function Edit_MultipleChoice(questions,choices,solutions,id) {
    var questions_count = 0;
    $('<input type="button" class="btn btn-success" value="Lisää uusi"/>').attr( 'id', 'edit-'+id+'-add' ).appendTo( '#edit-'+id+'-input' );
    $('<input type="button" class="btn btn-danger" value="Poista viimeisin"/>').attr( 'id', 'edit-'+id+'-del' ).appendTo( '#edit-'+id+'-input' );
    
    $('#edit-'+id+'-add').on( 'click', function() {
        var question_add = $('<div id="edit-'+id+'-question-'+questions_count+'" class="edit-question question">');
        $(question_add).append('<textarea class="column" name="questions[]" rows="4" id="edit-'+id+'-questions-'+questions_count+'" placeholder="kysymys" required />');
        $(question_add).append('<textarea class="column" name="choices[]" rows="4" id="edit-'+id+'-choices-'+questions_count+'" placeholder="vaihtoehdot" required />');
        $(question_add).append('<textarea class="column" name="solutions[]" rows="4" id="edit-'+id+'-solutions-'+questions_count+'" placeholder="vastaukset" required />');
        $(question_add).append('</div>');
        $('#edit-'+id+'-input').append(question_add);
        questions_count++;
    });
    
    $('#edit-'+id+'-del').on( 'click', function() {
        if (questions_count > 1) {
            $( '#edit-'+id+'-question-'+(questions_count-1) ).remove();
            questions_count--;
        }
    });
    
    for (var i = 0; i < questions.length; i++){
        $('#edit-'+id+'-add').click();
        var choices_lines = (choices[i]).replace(/###/g,"\r\n");
        var solutions_lines = (solutions[i]).replace(/###/g,"\r\n");
        $('#edit-'+id+'-questions-'+i).val(questions[i]);
        $('#edit-'+id+'-choices-'+i).val(choices_lines);
        $('#edit-'+id+'-solutions-'+i).val(solutions_lines);
    }
}

function Edit_Crossword(answers,clues,positions,id) {
    var words = 0;
    $('<input type="button" class="btn btn-success" value="Lisää uusi"/>').attr( 'id', 'edit-'+id+'-add' ).appendTo( '#edit-'+id+'-input' );
    $('<input type="button" class="btn btn-danger" value="Poista viimeisin"/>').attr( 'id', 'edit-'+id+'-del' ).appendTo( '#edit-'+id+'-input' );
    $('<input type="text" name="vertical" readonly/>').attr( 'id', 'edit-'+id+'-vertical' ).attr( 'value', answers[answers.length-1] ).attr( 'placeholder', 'pystysana' ).appendTo( '#edit-'+id+'-preview' );
    $('<input type="text" name="vertical_clue"/>').attr( 'id', 'edit-'+id+'-vertical_clue' ).attr( 'value', clues[answers.length-1] ).attr( 'placeholder', 'pystysanan vihje' ).appendTo( '#edit-'+id+'-preview' );
    
    $('#edit-'+id+'-add').on( 'click', function() {
        var word_add = $('<div id="edit-'+id+'-word-'+words+'" class="word">');
        $(word_add).append('<input type="text" class="edit-'+id+'-words" name="words[]" id="edit-'+id+'-words-'+words+'" placeholder="sana" required/>');
        $(word_add).append('<input type="number" class="edit-'+id+'-middles" name="middles[]" id="edit-'+id+'-middles-'+words+'" min="1" max="1" value="1" required/>');
        $(word_add).append('<input type="text" class="clues" name="clues[]" id="edit-'+id+'-clues-'+words+'" placeholder="vihje" required/>');
        $(word_add).append('</div>');
        $('#edit-'+id+'-input').append(word_add);
        words++;
    });
    
    $('#edit-'+id+'-del').on( 'click', function() {
        if (words > 4) {
            $( '#edit-'+id+'-word-'+(words-1) ).remove();
            words--;
        }
        var middle = $('#edit-'+id+'-vertical').val();
        $('#edit-'+id+'-vertical').val(middle.substring(0, words));
    });
    
    for (var i = 0; i < answers.length-1; i++){
        $('#edit-'+id+'-add').click();
    }
    
    $('.edit-'+id+'-words').each(function(i, obj) {
        var x = positions[i].split('.')[0];
        var letter_number = (-1*x+1);
        $('#edit-'+id+'-words-'+i).val(answers[i]);
        $('#edit-'+id+'-middles-'+i).attr('max', answers[i].length);
        $('#edit-'+id+'-middles-'+i).val(letter_number);
        $('#edit-'+id+'-clues-'+i).val(clues[i]);
    });
    
    $('#edit-'+id+'-input').on( 'keyup', '.edit-'+id+'-words', function () {
        var change_id = this.id;
        change_id = change_id.split('-');
        $('#edit-'+id+'-middles-'+change_id[3]).attr('max', $(this).val().length);
        refresh_middle();
    });
    
    $('#edit-'+id+'-input').on( 'change', '.edit-'+id+'-middles', function () {
        refresh_middle();
    });
    
    function refresh_middle() {
        var middle = '';
        $('.edit-'+id+'-middles').each(function(i, obj) {
            var word = '';
            var letter ='';
            if ($('#edit-'+id+'-words-'+i).val().length != 0) {
                word = $('#edit-'+id+'-words-'+i).val();
                letter = word[$(this).val()-1];
            }
            middle = middle+letter;
        });
        $('#edit-'+id+'-vertical').val(middle);
    }
}

function Edit_Filling(text,id) {
    $('<textarea name="text" id="edit-'+id+'-text" class="text" rows="8" required>'+text+'</textarea>').appendTo( '#edit-'+id+'-input' );
}