[项目实训]5.28 contest前端硬苟日志
2017-05-29 10:38
169 查看
最近几天和绩成在热火朝天地苟VJ的contest部分的前端,除了新建contest的部分,其他前端页面在参照前辈的基础上已经设计完毕。contest.html{% extends "base.html" %}{% block title %}{{ contest.name }}{% endblock %}{% block navbar %}{% include "include/navbar-contest.html" %}{% endblock %}{% block header %}<h1 class="text-center text-info">{{ contest.name }}</h1><ul class="text-center" style="list-style:none;"><li>Start Time: {{ contest.start_time }} Duration Time: {{ contest.duration_time }}</li><li id="current">Current Time: 1970-01-01 00:00:00</li></ul><div id="current2" style="width: 0%; text-align: right; float; left;"><span></span></div><div class="progress"><div class="progress-bar progress-bar-success " role="progressbar" aria-valuenow="30" aria-valuemin="0" aria-valuemax="100" id ="progress" style="width:0%"></div></div><script type="text/javascript">function getServerTime(){// return new Date()return new Date($.ajax({async: false}).getResponseHeader("Date"));// var xmlHttp = false;// try {// xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");// } catch (e) {// try {// xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");// } catch (e2) {// xmlHttp = false;// }// }// if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {// xmlHttp = new XMLHttpRequest();// }// xmlHttp.open("GET", window.location.href.toString(), false);// xmlHttp.setRequestHeader("Range", "bytes=-1");// xmlHttp.send(null);// var severtime=new Date(xmlHttp.getResponseHeader("Date"));// return severtime}var start;var duration;var current;var servertime;$(document).ready(function () {$.ajax({type: "post",url: "/contest/" + {{ contest.id }} + "/time/",dataType: "json",success: function(data){start=new Date(data.start);duration=data.duration;syncServerTime();setInterval(function(){syncServerTime();},1000*60);setInterval(function(){refreshtime(start);},1000);}});});function str_pad_left(string,pad,length) {return (new Array(length+1).join(pad)+string).slice(-length);}function secondsToTime(secs){var hours = Math.floor(secs / (60 * 60));var divisor_for_minutes = secs % (60 * 60);var minutes = Math.floor(divisor_for_minutes / 60);var divisor_for_seconds = divisor_for_minutes % 60;var seconds = Math.ceil(divisor_for_seconds);return hours + ":" + str_pad_left(minutes,'0',2)+':'+str_pad_left(seconds,'0',2);;}function syncServerTime(){servertime=getServerTime();current=servertime;}function refreshtime(start){var tmpTime = current.getTime();current.setTime(tmpTime+1000);var elapsed;elapsed=(current-start.getTime())/1000;var cutdown;cutdown=duration-elapsed;var elapsedrate;elapsedrate2=(elapsed/duration+0.01)*100+"%"elapsedrate=(elapsed/duration)*100+"%";var cutdowntime= secondsToTime(cutdown);$("#current").html("Current Time: "+current);if(elapsed>duration){$("#current2").html("<span></span>");$("#current2").css("width", "101%");$("#progress").css("width", "100%");} else if(elapsed<0){$("#current2").html("<span>-"+(secondsToTime(-elapsed))+"</span>");$("#current2").css("width", "1%");$("#progress").css("width", "0%");} else {$("#current2").html("<span>"+cutdowntime+"</span>");$("#current2").css("width", elapsedrate2);$("#progress").css("width", elapsedrate);}if(elapsed==0){parent.location.reload();}}</script>{% endblock %}{% block content %}<div class="tabbable" id="contest_content"><ul class="nav nav-tabs"><li class="active"><a data-toggle="tab" href="#panel-overview" id="overview">Overview</a></li><li id="Contest_Problem"><a data-toggle="tab" href="#panel-problem" id="problem_detail">Problem</a></li><li><a data-toggle="tab" href="#panel-status" id="get_status">Status</a></li><li><a data-toggle="tab" href="#panel-submit">Submit</a></li><li><a data-toggle="tab" href="#panel-rank" id="get_rank">Rank</a></li><li><a data-toggle="tab" href="#panel-clar" id="get_rank">Clarification</a></li></ul><div class="tab-content"><div class="tab-pane active" id="panel-overview">{% include "contest/contest_overview.html" %}</div><div class="tab-pane" id="panel-problem">{% include "contest/contest_problem.html" %}</div><div class="tab-pane" id="panel-status">{% include "contest/contest_status.html" %}</div><div class="tab-pane" id="panel-rank">{% include "contest/contest_rank.html" %}</div><div class="tab-clar" id="panel-clar">{% include "contest/contest_clar.html" %}</div></div></div><script type="text/javascript">var start;var duration;$(document).ready(function () {$.ajax({type: "post",url: "/contest/" + {{ contest.id }} + "/time/",dataType: "json",success: function(data){start=new Date(data.start);duration=data.duration;// setInterval(function(){refreshtime(start);},1000);}});$('#get_status').click(function () {// alert("Hello!");contest_id = {{contest.id}};$.ajax({type: 'post',url: "/contest/" + contest_id + "/status/",success: function (responseData) {$('#panel-status').html(responseData);//MathJax.Hub.Queue(["Typeset", MathJax.Hub]);}})})$('#get_rank').click(function(){refreshRankList();})$('#submit_button').click(function(){var current=getServerTime();var elapsed;elapsed=(current-start.getTime())/1000;if(elapsed>duration){alert("Contest is Over!");return false;}else{$('#submit_form').ajaxForm($.ajax({type: 'post',url: "/contest/" + {{ contest.id }} + "/status/",success: function (responseData) {$('#panel-status').html(responseData);$('#overview').tab('show');}}))}})$('#overview').tab('show');})</script>{% endblock %}
篇幅原因,一些细节的html文件就不列出了
界面如下:
相关文章推荐
- [项目实训]6.4 contest的add功能起步
- FreeCodeCamp日志-基础前端项目完成
- FreeCodeCamp日志-基础前端项目完成
- [项目实训]VJ前端之Problem的显示
- [项目实训]6.8 contest的add功能最终完成
- 前端网页工程师项目实训教程(一)-在线商城的前端编码
- [项目实训]6.13 contest_modify html文件编写
- 如何收集项目日志统一发送到kafka中?
- 【前端开发与项目管理】
- BLENDER项目工作日志2
- Angular企业级开发(6)-使用Gulp构建和打包前端项目
- 日志框架学习(4)— Web项目中使用Log4j实例
- [置顶] sprign boot项目实战:日志
- [置顶] sprign boot项目实战:日志
- java项目实训方案
- [置顶] sprign boot项目实战:日志
- 在做j2ee的web项目,前端研发的时候,在写html、jsp、JavaScript代码的时候,卡壳了,特别是JavaScript,f12,没有解决不了的问题
- 【实训项目】银行储蓄系统
- Hadoop学习笔记—20.网站日志分析项目案例(二)数据清洗
- 实训项目第一周2