From 92d614b2a66a3385386a626ac0b94e22313eb8dc Mon Sep 17 00:00:00 2001 From: Kevin Chung Date: Wed, 6 Sep 2017 23:55:11 -0400 Subject: [PATCH] Call updatesolves on chal update (#376) * Reorder function calls so that solves are ready to be rendered --- CTFd/themes/original/static/js/chalboard.js | 45 ++++++++++++--------- 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/CTFd/themes/original/static/js/chalboard.js b/CTFd/themes/original/static/js/chalboard.js index 157a0fbe..e3ba47cc 100644 --- a/CTFd/themes/original/static/js/chalboard.js +++ b/CTFd/themes/original/static/js/chalboard.js @@ -31,7 +31,7 @@ function updateChalWindow(obj) { template_data['script_root'] = script_root; var template = Handlebars.compile(template_data); var solves = obj.solves == 1 ? " Solve" : " Solves"; - solves = obj.solves + solves; + var solves = obj.solves + solves; var nonce = $('#nonce').val(); var wrapper = { @@ -168,10 +168,10 @@ function updatesolves(cb){ var chalids = Object.keys(solves); for (var i = 0; i < chalids.length; i++) { - var obj = $.grep(challenges['game'], function (e) { - return e.id == chalids[i]; - })[0]; - obj.solves = solves[chalids[i]] + for (var i = 0; i < challenges['game'].length; i++) { + var obj = challenges['game'][i]; + obj.solves = solves[chalids[i]]; + } }; if (cb) { cb(); @@ -193,11 +193,15 @@ function getsolves(id){ }); } -function loadchals(refresh) { +function loadchals(cb) { $.get(script_root + "/chals", function (data) { var categories = []; challenges = $.parseJSON(JSON.stringify(data)); + challenges['game'].sort(function(a, b) { + return a.id - b.id || a.name.localeCompare(b.name); + }); + $('#challenges-board').html(""); for (var i = challenges['game'].length - 1; i >= 0; i--) { @@ -242,21 +246,15 @@ function loadchals(refresh) { $("#"+ catid +"-row").find(".category-challenges > .chal-row").append(chalwrap); }; - var load_location_hash = function () { - if (window.location.hash.length > 0) { - loadchalbyname(window.location.hash.substring(1)); - $("#chal-window").modal("show"); - } - }; - - if (!refresh){ - updatesolves(load_location_hash); - } marksolves(); $('.challenge-button').click(function (e) { loadchal(this.value); }); + + if (cb){ + cb(); + } }); } @@ -312,12 +310,23 @@ function colorhash (x) { return "#" + color.substring(0, 6); } +var load_location_hash = function () { + if (window.location.hash.length > 0) { + loadchalbyname(window.location.hash.substring(1)); + $("#chal-window").modal("show"); + } +}; + function update(){ - loadchals(true); + loadchals(function(){ + updatesolves(); + }); } $(function() { - loadchals(); + loadchals(function(){ + updatesolves(load_location_hash); + }); }); $('.nav-tabs a').click(function (e) {