- results are grouped by nickname
This commit is contained in:
		
							parent
							
								
									de0ba48e73
								
							
						
					
					
						commit
						640cdbbc1a
					
				@ -1,6 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
  "require": {
 | 
			
		||||
    "rakibtg/sleekdb": "2.15",
 | 
			
		||||
    "ext-json": "*"
 | 
			
		||||
    "rakibtg/sleekdb": "2.15"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@ -227,34 +227,90 @@ function list_results_by_game(game) {
 | 
			
		||||
            return Number(b["testid"]) - Number(a["testid"])
 | 
			
		||||
        }); // sort records by ID
 | 
			
		||||
 | 
			
		||||
        let results_by_nickname = {};
 | 
			
		||||
        results.forEach((record) => {
 | 
			
		||||
            if (record["state"] !== "concluded") {
 | 
			
		||||
                return;
 | 
			
		||||
            let nickname = record["nickname"];
 | 
			
		||||
            if (!results_by_nickname.hasOwnProperty(nickname)) {
 | 
			
		||||
                results_by_nickname[nickname] = [];
 | 
			
		||||
            }
 | 
			
		||||
            results_by_nickname[nickname].push(record);
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
            let test_summary_record = document.createElement("section");
 | 
			
		||||
            test_summary_record.classList.add("test-summary-record");
 | 
			
		||||
        let nicknames = Object.keys(results_by_nickname);
 | 
			
		||||
 | 
			
		||||
            let sequence_number_sec = document.createElement("section");
 | 
			
		||||
            sequence_number_sec.classList.add("summary-name-id-block");
 | 
			
		||||
            sequence_number_sec.innerText = record["nickname"] + "#" + n;
 | 
			
		||||
            let duration_sec = document.createElement("section");
 | 
			
		||||
            duration_sec.classList.add("summary-duration");
 | 
			
		||||
            let start_time = unix_time_to_human_readable(record["start_time"]);
 | 
			
		||||
            let end_time = unix_time_to_human_readable(record["end_time"]);
 | 
			
		||||
        // mark best of the results
 | 
			
		||||
        nicknames.forEach((nickname) => {
 | 
			
		||||
            let result_group = results_by_nickname[nickname];
 | 
			
		||||
            let best_entry = null;
 | 
			
		||||
            let best_percentage = -1.0;
 | 
			
		||||
            result_group.forEach((result) => {
 | 
			
		||||
                result["best"] = false;
 | 
			
		||||
                if (result["state"] === "concluded") {
 | 
			
		||||
                    let percentage = result["summary"]["correct_answer_n"] / result["summary"]["challenge_n"];
 | 
			
		||||
                    if ((best_entry === null) || (percentage >= best_percentage)) {
 | 
			
		||||
                        best_percentage = percentage;
 | 
			
		||||
                        best_entry = result;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
            if (best_entry !== null) {
 | 
			
		||||
                best_entry["best"] = true;
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
            let summary = record["summary"];
 | 
			
		||||
            duration_sec.innerHTML = `${start_time}-<br>${end_time}<br>${summary["correct_answer_n"]}/${summary["challenge_n"]}`;
 | 
			
		||||
        // print the grouped results
 | 
			
		||||
        nicknames.forEach((nickname) => {
 | 
			
		||||
            let result_group = results_by_nickname[nickname];
 | 
			
		||||
 | 
			
		||||
            let percentage = document.createElement("section");
 | 
			
		||||
            percentage.classList.add("summary-percentage");
 | 
			
		||||
            let r = Math.floor((summary["correct_answer_n"] / summary["challenge_n"]) * 100);
 | 
			
		||||
            percentage.innerHTML = `${r}%`;
 | 
			
		||||
            let test_group_box = document.createElement("section");
 | 
			
		||||
            test_group_box.classList.add("summary-group")
 | 
			
		||||
 | 
			
		||||
            test_summary_record.append(sequence_number_sec, duration_sec, percentage);
 | 
			
		||||
            rd.appendChild(test_summary_record);
 | 
			
		||||
            let nickname_box = document.createElement("section");
 | 
			
		||||
            nickname_box.classList.add("summary-nickname-box");
 | 
			
		||||
            nickname_box.innerText = nickname;
 | 
			
		||||
 | 
			
		||||
            n--;
 | 
			
		||||
            test_group_box.append(nickname_box);
 | 
			
		||||
 | 
			
		||||
            result_group.forEach((record) => {
 | 
			
		||||
                if (record["state"] !== "concluded") {
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                let test_summary_record = document.createElement("section");
 | 
			
		||||
                test_summary_record.classList.add("test-summary-record");
 | 
			
		||||
 | 
			
		||||
                // let sequence_number_sec = document.createElement("section");
 | 
			
		||||
                // sequence_number_sec.classList.add("summary-name-id-block");
 | 
			
		||||
                // sequence_number_sec.innerText = record["nickname"] + "#" + n;
 | 
			
		||||
                let duration_sec = document.createElement("section");
 | 
			
		||||
                duration_sec.classList.add("summary-duration");
 | 
			
		||||
                let start_time = unix_time_to_human_readable(record["start_time"]);
 | 
			
		||||
                let end_time = unix_time_to_human_readable(record["end_time"]);
 | 
			
		||||
 | 
			
		||||
                let summary = record["summary"];
 | 
			
		||||
                duration_sec.innerHTML = `${start_time}-<br>${end_time}<br>${summary["correct_answer_n"]}/${summary["challenge_n"]}`;
 | 
			
		||||
 | 
			
		||||
                let percentage = document.createElement("section");
 | 
			
		||||
                percentage.classList.add("summary-percentage");
 | 
			
		||||
                let r = Math.floor((summary["correct_answer_n"] / summary["challenge_n"]) * 100);
 | 
			
		||||
                percentage.innerHTML = `${r}%`;
 | 
			
		||||
 | 
			
		||||
                test_summary_record.append(duration_sec, percentage);
 | 
			
		||||
 | 
			
		||||
                if (record["best"]) {
 | 
			
		||||
                    let best_badge = document.createElement("section");
 | 
			
		||||
                    best_badge.classList.add("summary-best-badge");
 | 
			
		||||
                    best_badge.innerText = "LEGJOBB";
 | 
			
		||||
                    test_summary_record.append(best_badge);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                test_group_box.appendChild(test_summary_record);
 | 
			
		||||
 | 
			
		||||
                n--;
 | 
			
		||||
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            rd.append(test_group_box);
 | 
			
		||||
 | 
			
		||||
        });
 | 
			
		||||
        show("results_viewer_window");
 | 
			
		||||
 | 
			
		||||
@ -62,20 +62,35 @@ section.window-inner tr td:first-of-type {
 | 
			
		||||
    text-align: right !important;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.summary-name-id-block {
 | 
			
		||||
.summary-nickname-box {
 | 
			
		||||
    display: inline-block;
 | 
			
		||||
    position: relative;
 | 
			
		||||
    background-color: #176767;
 | 
			
		||||
    color: whitesmoke;
 | 
			
		||||
    padding: 0.5em;
 | 
			
		||||
    height: 3.5em;
 | 
			
		||||
    top: -1.1em;
 | 
			
		||||
    box-shadow: 5px 0 #d3e5e5;
 | 
			
		||||
    min-width: 12em;
 | 
			
		||||
    margin: 0.5em 0;
 | 
			
		||||
    width: 90%;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.test-summary-record {
 | 
			
		||||
    min-width: 25em;
 | 
			
		||||
    height: 3.5em;
 | 
			
		||||
    overflow: clip;
 | 
			
		||||
    margin-left: 2em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.summary-group {
 | 
			
		||||
    margin: 0.5em 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.summary-best-badge {
 | 
			
		||||
    position: absolute;
 | 
			
		||||
    display: block;
 | 
			
		||||
    font-size: 0.8em;
 | 
			
		||||
    top: 0;
 | 
			
		||||
    right: 0;
 | 
			
		||||
    padding: 0.2em;
 | 
			
		||||
    color: #671b17;
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user