Skip to content

Commit

Permalink
feat: custom input date
Browse files Browse the repository at this point in the history
  • Loading branch information
Dup4 committed May 29, 2023
1 parent c2270d7 commit 5529f96
Show file tree
Hide file tree
Showing 4 changed files with 109 additions and 58 deletions.
2 changes: 2 additions & 0 deletions contest.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
{
"contest_name": "The 2015 ACM-ICPC Asia Beijing Regional Contest",
"problem_count":20,
"frozen_seconds": 7200,
"solutions":{
"499293":{
"user_id":"1",
Expand Down
4 changes: 2 additions & 2 deletions hiho-resolver.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
function Resolver(solutions, users, problem_count){
function Resolver(solutions, users, problem_count, frozen_seconds){
this.solutions = solutions;
this.users = users;
this.problem_count = problem_count;
this.frozen_seconds = 3600*2;
this.frozen_seconds = frozen_seconds;
this.operations = [];
}

Expand Down
26 changes: 19 additions & 7 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,27 +3,29 @@
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>The 2015 ACM-ICPC Asia Beijing Regional Contest</title>
<title></title>
<link type="text/css" rel="stylesheet" href="libs/style/bootstrap.min.css">
<link type="text/css" rel="stylesheet" href="libs/style/sticky-footer.css">
<link type="text/css" rel="stylesheet" href="css/main.css">
</head>

<body class="app">

<!-- top navbar -->
<nav class="navbar navbar-default">
<!-- <nav class="navbar navbar-default">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="#">The 2015 ACM-ICPC Asia Beijing Regional Contest</a>
</div>
<div id="navbar" class="navbar-collapse collapse" aria-expanded="false" style="height: 1px;">
<!-- <ul class="nav navbar-nav">
<ul class="nav navbar-nav">
<li class="active"><a href="#">Home</a></li>
<li><a href="#about">About</a></li>
<li><a href="#contact">Contact</a></li>
</ul> -->
</div><!--/.nav-collapse -->
</ul>
</div>
</div>
</nav>
</nav> -->

<!-- page content -->
<div class="rank-list">
Expand All @@ -47,7 +49,16 @@
<!-- sticky footer -->
<footer class="footer">
<div class="container clearfix">
<p class="text-muted pull-left"><button @click="reset">重置排名</button></p>
<p class="text-muted pull-left">
<textarea id="input-data" cols="100" rows="1">
</textarea>
</p>
<p class="text-muted pull-left" style="margin-left: 10px;">
<button onclick="main()">加载数据</button>
</p>
<p class="text-muted pull-left" style="margin-left: 10px;">
<button onclick="clear_cache()">清空缓存</button>
</p>
</div>
</footer>

Expand All @@ -58,5 +69,6 @@
<script type="text/javascript" src="libs/js/vue.1.js"></script>
<script type="text/javascript" src="hiho-resolver.js"></script>
<script type="text/javascript" src="js/main.js"></script>

</body>
</html>
135 changes: 86 additions & 49 deletions js/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@ function vuejs() {
var RANKS_KEY = 'icpc-ranks';
var OPER_FLAG_KEY = 'operation-flag';

var FLAHING_TIME = 100; //闪烁时间
var ROLLING_TIME = 1000; //排名上升时间
var FLAHING_TIME = 100; // 闪烁时间
var ROLLING_TIME = 600; // 排名上升时间

window.Storage = {
fetch: function(type) {
if(type == 'ranks')
Expand All @@ -31,9 +32,13 @@ function vuejs() {
vm.$data.op_status = false;
var op = vm.$data.operations[vm.$data.op_flag];
var op_length = vm.$data.operations.length - 1;
if(vm.$data.op_flag < op_length)

if(vm.$data.op_flag < op_length) {
var op_next = vm.$data.operations[vm.$data.op_flag+1];
}

console.log(op);

var ranks = vm.$data.ranks;
var rank_old = ranks[op.old_rank];

Expand All @@ -43,15 +48,19 @@ function vuejs() {
el_old
.find('.p-'+op.problem_index).addClass('uncover')
.find('.p-content').addClass('uncover');
if(op.new_rank == op.old_rank){
if(vm.$data.op_flag < op_length)

if (op.new_rank == op.old_rank) {
if (vm.$data.op_flag < op_length) {
var el_old_next = $('#rank-' + op_next.old_rank);
setTimeout(function(){
if(op.new_verdict == 'AC'){
}

setTimeout(function() {
if (op.new_verdict == 'AC') {
rank_old.score += 1;
rank_old.penalty += op.new_penalty;
rank_old.problem[op.problem_index].old_penalty = op.new_penalty;
}

rank_old.problem[op.problem_index].old_verdict = op.new_verdict;
rank_old.problem[op.problem_index].new_verdict = "NA";

Expand All @@ -60,19 +69,19 @@ function vuejs() {
rank_old.problem[op.problem_index].old_submissions = op.new_submissions;
rank_old.problem[op.problem_index].frozen_submissions = 0;
rank_old.problem[op.problem_index].new_submissions = 0;
}
else {
} else {
rank_old.problem[op.problem_index].old_submissions += op.frozen_submissions;
rank_old.problem[op.problem_index].frozen_submissions = 0;
rank_old.problem[op.problem_index].new_submissions = 0;
}
Vue.nextTick(function(){

Vue.nextTick(function() {
el_old
.find('.p-'+op.problem_index).addClass('uncover')
.find('.p-content').removeClass('uncover');
});

setTimeout(function(){
setTimeout(function() {
vm.selected(el_old, 'remove');
if(vm.$data.op_flag < op_length)
vm.selected(el_old_next, 'add');
Expand All @@ -81,53 +90,60 @@ function vuejs() {
vm.$data.op_flag += 1;
vm.$data.op_status = true;
}, FLAHING_TIME + 100);

}, FLAHING_TIME);
}else{
} else {
var old_pos_top = el_old.position().top;
var new_pos_top = el_new.position().top;
var distance = new_pos_top - old_pos_top;
var win_heigth = $(window).height();
if(Math.abs(distance) > win_heigth){

if (Math.abs(distance) > win_heigth) {
distance = -(win_heigth + 100);
}

var j = op.old_rank - 1;
var el_obj = [];
for(j; j >= op.new_rank; j--){

for (j; j >= op.new_rank; j--) {
var el = $('#rank-'+ j);
el.rank_obj = ranks[j];
el_obj.push(el);
}
setTimeout(function(){

setTimeout(function() {
// return function(){
// 修改原始数据

if(op.new_verdict == 'AC'){
rank_old.score += 1;
rank_old.rank_show = op.new_rank_show;
console.log("new_rank_show" + op.new_rank_show);
rank_old.penalty += op.new_penalty;
rank_old.problem[op.problem_index].old_penalty = op.new_penalty;
}

rank_old.problem[op.problem_index].old_verdict = op.new_verdict;
rank_old.problem[op.problem_index].new_verdict = "NA";

//if(op.new_submissions > 0) {
if(op.new_verdict == 'AC'){
if (op.new_verdict == 'AC') {
rank_old.problem[op.problem_index].old_submissions = op.new_submissions;
rank_old.problem[op.problem_index].frozen_submissions = 0;
rank_old.problem[op.problem_index].new_submissions = 0;
}
else {
} else {
rank_old.problem[op.problem_index].old_submissions += op.frozen_submissions;
rank_old.problem[op.problem_index].frozen_submissions = 0;
rank_old.problem[op.problem_index].new_submissions = 0;
alert(rank_old.problem[op.problem_index].old_submissions);
}
//

Vue.nextTick(function(){
//添加揭晓题目闪动效果
el_old
.find('.p-'+op.problem_index).addClass('uncover')
.find('.p-content').removeClass('uncover');

//修改排名
el_old.find('.rank').text(op.new_rank_show);
el_obj.forEach(function(val,i){
Expand All @@ -141,7 +157,7 @@ function vuejs() {
});
});

setTimeout(function(){
setTimeout(function() {
el_old
.css('position', 'relative')
.animate({ top: distance+'px' }, ROLLING_TIME, function(){
Expand All @@ -168,18 +184,19 @@ function vuejs() {
vm.$data.op_status = true;
});
});
for(var i = 0 ; i<el_obj.length ; ++i) {
if(106*(i-1)<=win_heigth){
el_obj[i].animate({'top': 106+'px'},ROLLING_TIME);
}
else {

for (var i = 0 ; i<el_obj.length ; ++i) {
if (106 * (i - 1) <= win_heigth) {
el_obj[i].animate({'top': 106+'px'}, ROLLING_TIME);
} else {
el_obj[i].css({'top': 106+'px'});
}
}
}, FLAHING_TIME + 100);// two loop
}, FLAHING_TIME + 100); // two loop
// };
}, FLAHING_TIME);
}

},

back: function() {
Expand Down Expand Up @@ -255,7 +272,6 @@ function vuejs() {
// window.scrollTo(0, offset);
}else if(type == 'remove')
el.removeClass('selected');

},

// scrollToTop: function(old_rank, new_rank){
Expand All @@ -273,25 +289,46 @@ function vuejs() {
});
}

$.getJSON("contest.json", function(data){
var resolver = new Resolver(data.solutions, data.users, data.problem_count);
window.resolver = resolver;
resolver.calcOperations();
vuejs();

// var el = $("#rank-0").position().top;
// alert(el);
// alert(window.scrollY);
// alert($(document).height());
// alert(document.body.clientHeight);

document.onkeydown = function(event){
var e = event || window.event || arguments.callee.caller.arguments[0];
if(e && e.keyCode == 37 /*&& vm.$data.op_status*/){ // key left
Operation.back();
}
if(e && e.keyCode == 39 && vm.$data.op_status){ // key right
Operation.next();
}
};
});
function clear_cache() {
if (confirm('确定要清除缓存吗?')) {
localStorage.clear();
window.location.reload();
}
}

function main() {

if (confirm('确定要加载数据吗?')) {
var data = JSON.parse($('#input-data').val());

$('title').text(data.contest_name)

var resolver = new Resolver(data.solutions, data.users, data.problem_count, data.frozen_seconds);
window.resolver = resolver;
resolver.calcOperations();

vuejs();

// var el = $("#rank-0").position().top;
// alert(el);
// alert(window.scrollY);
// alert($(document).height());
// alert(document.body.clientHeight);

document.onkeydown = function(event){
var e = event || window.event || arguments.callee.caller.arguments[0];

if (e && e.keyCode == 37 /*&& vm.$data.op_status*/) { // key left
Operation.back();
}

if (e && e.keyCode == 39 && vm.$data.op_status) { // key right
Operation.next();
}
};

// $.getJSON("contest.json", function(data) {

// });
}
}

0 comments on commit 5529f96

Please sign in to comment.