diff --git a/oioioi/contests/fixtures/test_contest_search.json b/oioioi/contests/fixtures/test_contest_search.json new file mode 100644 index 000000000..7761c138b --- /dev/null +++ b/oioioi/contests/fixtures/test_contest_search.json @@ -0,0 +1,203 @@ +[ + { + "pk": "cs1", + "model": "contests.contest", + "fields": { + "name": "AAAcontest", + "controller_name": "oioioi.programs.controllers.ProgrammingContestController", + "creation_date": "2011-07-31T20:27:58.768Z", + "is_archived": "False" + } + }, + { + "pk": 1, + "model": "contests.round", + "fields": { + "name": "Round 1", + "contest": "cs1", + "start_date": "2011-07-31T20:27:58.768Z", + "results_date": "2012-07-31T20:27:58.768Z" + } + }, + { + "pk": "cs2", + "model": "contests.contest", + "fields": { + "name": "ABAcontest", + "controller_name": "oioioi.programs.controllers.ProgrammingContestController", + "creation_date": "2011-07-31T20:27:58.768Z", + "is_archived": "False" + } + }, + { + "pk": 1, + "model": "contests.round", + "fields": { + "name": "Round 1", + "contest": "cs2", + "start_date": "2011-07-31T20:27:58.768Z", + "results_date": "2012-07-31T20:27:58.768Z" + } + }, + { + "pk": "cs3", + "model": "contests.contest", + "fields": { + "name": "ACAcontest", + "controller_name": "oioioi.programs.controllers.ProgrammingContestController", + "creation_date": "2011-07-31T20:27:58.768Z", + "is_archived": "False" + } + }, + { + "pk": 1, + "model": "contests.round", + "fields": { + "name": "Round 1", + "contest": "cs3", + "start_date": "2011-07-31T20:27:58.768Z", + "results_date": "2012-07-31T20:27:58.768Z" + } + }, + { + "pk": "cs4", + "model": "contests.contest", + "fields": { + "name": "AA contest", + "controller_name": "oioioi.programs.controllers.ProgrammingContestController", + "creation_date": "2011-07-31T20:27:58.768Z", + "is_archived": "False" + } + }, + { + "pk": 1, + "model": "contests.round", + "fields": { + "name": "Round 1", + "contest": "cs4", + "start_date": "2011-07-31T20:27:58.768Z", + "results_date": "2012-07-31T20:27:58.768Z" + } + }, + { + "pk": "cs5", + "model": "contests.contest", + "fields": { + "name": "BA contest", + "controller_name": "oioioi.programs.controllers.ProgrammingContestController", + "creation_date": "2011-07-31T20:27:58.768Z", + "is_archived": "False" + } + }, + { + "pk": 1, + "model": "contests.round", + "fields": { + "name": "Round 1", + "contest": "cs5", + "start_date": "2011-07-31T20:27:58.768Z", + "results_date": "2012-07-31T20:27:58.768Z" + } + }, + { + "pk": "cs6", + "model": "contests.contest", + "fields": { + "name": "CA contest", + "controller_name": "oioioi.programs.controllers.ProgrammingContestController", + "creation_date": "2011-07-31T20:27:58.768Z", + "is_archived": "False" + } + }, + { + "pk": 1, + "model": "contests.round", + "fields": { + "name": "Round 1", + "contest": "cs6", + "start_date": "2011-07-31T20:27:58.768Z", + "results_date": "2012-07-31T20:27:58.768Z" + } + }, + { + "pk": "cs7", + "model": "contests.contest", + "fields": { + "name": "DA contest", + "controller_name": "oioioi.programs.controllers.ProgrammingContestController", + "creation_date": "2011-07-31T20:27:58.768Z", + "is_archived": "False" + } + }, + { + "pk": 1, + "model": "contests.round", + "fields": { + "name": "Round 1", + "contest": "cs7", + "start_date": "2011-07-31T20:27:58.768Z", + "results_date": "2012-07-31T20:27:58.768Z" + } + }, + { + "pk": "cs8", + "model": "contests.contest", + "fields": { + "name": "EA contest", + "controller_name": "oioioi.programs.controllers.ProgrammingContestController", + "creation_date": "2011-07-31T20:27:58.768Z", + "is_archived": "False" + } + }, + { + "pk": 1, + "model": "contests.round", + "fields": { + "name": "Round 1", + "contest": "cs8", + "start_date": "2011-07-31T20:27:58.768Z", + "results_date": "2012-07-31T20:27:58.768Z" + } + }, + { + "pk": "cs9", + "model": "contests.contest", + "fields": { + "name": "FA contest", + "controller_name": "oioioi.programs.controllers.ProgrammingContestController", + "creation_date": "2011-07-31T20:27:58.768Z", + "is_archived": "False" + } + }, + { + "pk": 1, + "model": "contests.round", + "fields": { + "name": "Round 1", + "contest": "cs9", + "start_date": "2011-07-31T20:27:58.768Z", + "results_date": "2012-07-31T20:27:58.768Z" + } + }, + { + "pk": "cs10", + "model": "contests.contest", + "fields": { + "name": "Archived contest", + "controller_name": "oioioi.programs.controllers.ProgrammingContestController", + "creation_date": "2011-07-31T20:27:58.768Z", + "is_archived": "True" + } + }, + { + "pk": 1, + "model": "contests.round", + "fields": { + "name": "Round 1", + "contest": "cs10", + "start_date": "2011-07-31T20:27:58.768Z", + "results_date": "2012-07-31T20:27:58.768Z" + } + } + ] + \ No newline at end of file diff --git a/oioioi/contests/static/common/contest_hints.js b/oioioi/contests/static/common/contest_hints.js new file mode 100644 index 000000000..9d2eb1274 --- /dev/null +++ b/oioioi/contests/static/common/contest_hints.js @@ -0,0 +1,32 @@ +function init_search_selection(id) { + $(function(){ + const input = $('#' + id); + + const source_default = function(query, process) { + $.getJSON(input.data("hintsUrl"), {q: query}, process); + }; + + input.typeahead({ + source: source_default, + minLength: 2, + fitToElement: true, + autoSelect: false, + followLinkOnSelect: true, + itemLink: function(item) { + return item.url; + }, + matcher: function(item) { + if(!input.val()) { + return false; + } + return true; + }, + updater: function(item) { + const typeahead = input.data('typeahead'); + let result = item.search_name || item.name; + + return result; + }, + }); + }); +} diff --git a/oioioi/contests/templates/contests/select_contest.html b/oioioi/contests/templates/contests/select_contest.html index 9440d467c..a46ca26c2 100644 --- a/oioioi/contests/templates/contests/select_contest.html +++ b/oioioi/contests/templates/contests/select_contest.html @@ -11,7 +11,14 @@