Skip to content
Snippets Groups Projects
tasks.js 6.45 KiB
Newer Older
/**
 * TODO @Axel use rendertemplate for participantcount and link manual groups creation as option
 */
$(document).ready(function(){
    let userEmail = $('#userEmail').html().trim();
    let projectName = $('#projectName').html().trim();
    fillTasks(projectName, userEmail);
});

function fillTasks(projectName, userEmail){
    $.ajax({
        url: '../rest/tasks/user/'+encodeURI(userEmail)+'/project/' + projectName,
        headers: {
            "Content-Type": "application/json",
            "Cache-Control": "no-cache"
        },
        type: 'GET',
        success: function (response) {
            let object = fillObjectWithTasks(response);
            for (let task in object){
                let tmplObject = fitObjectInTmpl(object[task]);
                $('#taskTemplate').tmpl(tmplObject).appendTo('#listOfTasks');
            }
        },
        error: function(a){}


    });
}

function fitObjectInTmpl(object){
    let result = {
        taskType: "",
        infoText: "",
        phase: "",
        solveTaskWith: "",
        helpLink: "",
        timeFrame: "",
        taskData: object.taskData

    };
    if (object.taskType!=="INFO"){
        if (object.groupTask===true){
            result.taskType="grouptask"
        }else{
            result.taskType="usertask"
        }
    }else{
        result.taskType="infotask"
    }
    switch (object.phase){
        case "CourseCreation":
            result.phase="card-draft";
            break;
        case "GroupFormation":
            result.phase="card-grouping";
            break;
        case "DossierFeedback":
            result.phase="card-feedback";
            break;
        case "Execution":
            result.phase="card-execution";
            break;
        case "Assessment":
            result.phase="card-assessment";
            break;
        case "Projectfinished":
            result.phase="card-grades";
            break;
        default:
            result.phase="";
    }
    if (object.deadline != null){
        let daysLeft = Math.round((object.deadline - Date.now())/1000/60/60/24);
        if (daysLeft>=1)
            result.timeFrame="<div class='status icon'><p>Noch "+daysLeft+" Tage Zeit</p></div>";
        else
            result.timeFrame="<div class='status alert icon'><p>Du bist zu spät.</p></div>";
    }else {result.timeFrame="";}
    switch (object.taskName){
        case "WAIT_FOR_PARTICPANTS":
            result.infoText = "Warten Sie auf die Anmeldungen der Studenten.";
            break;
        case "BUILD_GROUPS":
            result.infoText="Erstellen Sie die Gruppen.";
            break;
        case "CLOSE_GROUP_FINDING_PHASE":
            result.infoText="Gehen Sie zur nächsten Phase über.";
            break;
        case "WAITING_FOR_GROUP":
            result.infoText="[STUDENT] Die Arbeitsgruppen werden gebildet. Sie werden informiert, wenn es so weit" +
                " ist.";
            break;
        case "EDIT_FORMED_GROUPS":
            result.infoText = "[TEACHER] Die Gruppen wurden vom Algorithmus gebildet. Sie können noch manuell" +
                " editiert werden." // hier müsste noch ein Link eingefügt werden, zur manuellen Gruppenbildung
            break;
        default:
            result.infoText="";
    }
    if (object.taskType.includes("LINKED")){
        switch (object.taskName) {
           /* case "CLOSE_GROUP_FINDING_PHASE":
                result.solveTaskWith="Entwurfsphase starten";
                result.solveTaskWithLink="../../rest/phases/GroupFormation/project/"+object.projectName+"/end";
                break;*/
            case "UPLOAD_DOSSIER":
                result.solveTaskWith="Lege ein Dossier an";
                result.solveTaskWithLink="../annotation/upload-unstructured-dossier.jsp?projectName="+object.projectName;
                break;
            case "GIVE_FEEDBACK":
                result.solveTaskWith="Erteile Feedback";
                result.solveTaskWithLink="../feedback/give-feedback.jsp?projectName="+object.projectName;
                break;
            case "CREATE_QUIZ":
                result.solveTaskWith="Erstelle ein Quiz";
                result.solveTaskWithLink="../assessment/create-quiz.jsp?projectName="+object.projectName;
                break;
            case "WRITE_EJOURNAL":
                result.solveTaskWith="Lege ein EJournal an";
                result.solveTaskWithLink="../journal/create-journal.jsp?projectName="+object.projectName;
                break;
            case "ANNOTATE_DOSSIER":
                result.solveTaskWith="Annotiere das Dossier";
                result.solveTaskWithLink="../annotation/create-unstructured-annotation.jsp?projectName="+object.projectName+"&submissionId=" + object.taskData.fullSubmissionId;
                break;
            case "FINALIZE_DOSSIER":
                result.solveTaskWith="Finalisiere das Dossier";
                result.solveTaskWithLink="../annotation/create-unstructured-annotation.jsp?projectName="+object.projectName+"&submissionId=" + object.taskData.fullSubmissionId;
                break;
            case "FINALIZE_EJOURNAL":
                result.solveTaskWith="Finalisiere dein EJournal";
                result.solveTaskWithLink="../journal/edit-description.jsp?projectName="+object.projectName;
                break;
            case "ASSESSMENT":
                result.solveTaskWith="Starte Bewertung";
                result.solveTaskWithLink="../assessment/assess-work.jsp?projectName="+object.projectName;
                break;
            default:
                result.solveTaskWith=null;

        }
    }
    return result;
}

function fillObjectWithTasks(response){
    let tempObject=[];
    for (let task in response){
        if (response.hasOwnProperty(task))
            tempObject.push({
                taskType: response[task].taskType,  //
                taskData: response[task].taskData,
                taskName: response[task].taskName,  //
                hasRenderModel: response[task].hasRenderModel,
                eventCreated: response[task].eventCreated,
                deadline: response[task].deadline, //
                groupTask: response[task].groupTask,//
                importance: response[task].importance,
                phase: response[task].phase,  //
                link: response[task].link,  //
                userEmail: response[task].userEmail,
                projectName: response[task].projectName,
                progress: response[task].progress
            });
    }
    return tempObject;