aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpzread <netfirewall@gmail.com>2013-04-10 20:39:16 +0800
committerpzread <netfirewall@gmail.com>2013-04-10 20:39:16 +0800
commit12f106053c740962fe9d3f80f2a5f77b52154f44 (patch)
treeca05b2422eacacefc17af97eeaf89b77eaacbdb2
parent6935a81c6b852d78e1fb6e2454ef50f353ad6ae0 (diff)
downloadtaiwan-online-judge-lantw44-12f106053c740962fe9d3f80f2a5f77b52154f44.tar.gz
taiwan-online-judge-lantw44-12f106053c740962fe9d3f80f2a5f77b52154f44.tar.zst
taiwan-online-judge-lantw44-12f106053c740962fe9d3f80f2a5f77b52154f44.zip
Add submit list base filter. Fix home redirect bug
-rwxr-xr-xtoj/index.html23
-rwxr-xr-xtoj/jcs/common.js48
-rwxr-xr-xtoj/jcs/stat.css26
-rwxr-xr-xtoj/jcs/stat.js76
-rwxr-xr-xtoj/jcs/user.css6
-rwxr-xr-xtoj/jcs/user.js4
-rwxr-xr-xtoj/php/status.inc.php5
7 files changed, 146 insertions, 42 deletions
diff --git a/toj/index.html b/toj/index.html
index 294fa35..d158e40 100755
--- a/toj/index.html
+++ b/toj/index.html
@@ -133,7 +133,7 @@ input,select{
<div id="index_panel_box" exminheight=true class="index_panel_box"><ul id="index_panel" class="index_panel">
<li class="button home"><a href="/toj/home/" class="button">首頁</a></li>
- <li class="button stat"><a href="/toj/stat/allsub/" class="button">狀態</a></li>
+ <li class="button stat"><a href="/toj/stat/sub/" class="button">狀態</a></li>
<li class="button user" style="display:none;"><a class="button">個人</a></li>
<li class="button square"><a class="button">方塊</a></li>
<ul class="square_box"></ul>
@@ -163,7 +163,23 @@ input,select{
</div>
<div class="stat_page">
- <div class="com_pbox sub_pbox allsub_pbox">
+ <div class="com_pbox sub_pbox">
+ <div class="subset">
+ <table class="filter">
+ <tr class="head">
+ <th class="key"><h3>過濾器</h3></th>
+ <th class="value"><button class="clear">清除</button></th>
+ </tr>
+ <tr class="item uid">
+ <td class="key">UID</td>
+ <td class="value">None</td>
+ </tr>
+ <tr class="item result">
+ <td class="key">Result</td>
+ <td class="value">None</td>
+ </tr>
+ </table>
+ </div>
<table class="sublist">
<tr class="head">
<th class="subid">SubID</th>
@@ -186,6 +202,9 @@ input,select{
<img class="avatar"></img>
<div class="aboutme"></div>
</div>
+ <div class="data_box">
+ <button class="looksub">查看動態</button>
+ </div>
</div>
<div class="com_pbox edit_pbox">
<div class="edit_box">
diff --git a/toj/jcs/common.js b/toj/jcs/common.js
index e1b1d82..3cecce7 100755
--- a/toj/jcs/common.js
+++ b/toj/jcs/common.js
@@ -133,7 +133,7 @@ var com = new function(){
that.url_prev = location.href;
that.url_back = that.url_prev;
window.history.pushState(null,document.title,url);
- com.url_chg();
+ that.url_chg();
};
that.url_push_back = function(block_regexp){
if(that.url_back == null || that.url_back.search(block_regexp) != -1){
@@ -149,7 +149,7 @@ var com = new function(){
that.url_prev = location.href;
window.history.replaceState(null,document.title,url);
- com.url_chg();
+ that.url_chg();
};
that.url_pull = function(){
that.url_update(that.url_back);
@@ -172,17 +172,16 @@ var com = new function(){
var url_dpart;
var node_curr;
var node_parent;
+ var node_bottom;
var _chg_in = function(url_cpart,idx,node_curr,url_upart,url_dpart){
var delay_obj;
for(;idx < url_cpart.length;idx++){
- console.log(node_curr.child[url_cpart[idx]]);
-
node_parent = node_curr;
if((node_curr = node_parent.child[url_cpart[idx]]) == undefined){
if((delay_obj = node_parent.delay_child[url_cpart[idx]]) == undefined){
- com.url_update('/toj/none/');
+ that.url_update('/toj/none/');
}else{
delay_obj.url_curr = that.url_curr;
delay_obj.defer.done(function(){
@@ -221,6 +220,10 @@ var com = new function(){
url_cpart = that.url_curr.match(/toj\/(.*)/)[1].split('/');
url_cpart.pop();
+ if(url_cpart.length == 0){
+ that.url_update('/toj/home/');
+ continue;
+ }
if(that.url_prev == null){
is_mbox_prev = false;
@@ -230,45 +233,54 @@ var com = new function(){
is_mbox_curr = check_mbox_url(that.url_curr);
if(that.url_prev == null || (is_mbox_prev == false && is_mbox_curr == true)){
+ i = 0;
node_curr = that.vus_root;
url_upart = new Array;
url_dpart = url_cpart.slice(0);
- j = 0;
}else{
url_ppart = that.url_prev.match(/toj\/(.*)/)[1].split('/');
url_ppart.pop();
len = Math.min(url_ppart.length,url_cpart.length);
+ node_bottom = that.vus_root;
+ node_curr = node_bottom;
for(i = 0;i < len;i++){
if(url_ppart[i] != url_cpart[i]){
break;
}
+ if((node_curr = node_curr.child[url_ppart[i]]) == undefined){
+ break;
+ }
+ node_bottom = node_curr;
}
+ if(node_curr != undefined){
+ for(;i < url_ppart.length;i++){
+ if(node_curr.child[url_ppart[i]] == undefined){
+ break;
+ }
+ node_curr = node_curr.child[url_ppart[i]];
+ }
- if((node_curr = that.vus_root.lookup(that.url_prev,true)) != undefined){
url_upart = url_ppart.slice(0);
url_dpart = new Array;
- for(j = url_ppart.length - 1;j >=i;j--){
- node_parent = node_curr.parent;
+ while(node_curr != node_bottom){
node_curr.url_chg('out',url_upart,url_dpart);
url_dpart = url_dpart.splice(0,0,url_upart.pop());
- node_curr = node_parent;
+ node_curr = node_curr.parent;
}
}
+ i = 0;
node_curr = that.vus_root;
url_upart = new Array;
url_dpart = url_cpart.slice(0);
- for(j = 0;j < i;j++){
- if((node_curr = node_curr.child[url_cpart[j]]) == undefined){
+ while(node_curr != node_bottom){
+ if((node_curr = node_curr.child[url_cpart[i]]) == undefined){
break;
}
url_upart.push(url_dpart.shift());
-
- ret = node_curr.url_chg('same',url_upart,url_dpart);
- if(ret == 'stop'){
- break;
- }
+ node_curr.url_chg('same',url_upart,url_dpart);
+ i++;
}
}
@@ -276,7 +288,7 @@ var com = new function(){
index.page_scroll_reset();
}
if(that.url_prev == null || that.pbox_exist == false || !(is_mbox_prev == true && is_mbox_curr == false)){
- _chg_in(url_cpart,j,node_curr,url_upart,url_dpart);
+ _chg_in(url_cpart,i,node_curr,url_upart,url_dpart);
}
if(that.pbox_exist == false && is_mbox_curr == false){
diff --git a/toj/jcs/stat.css b/toj/jcs/stat.css
index 6036a0f..6d4d992 100755
--- a/toj/jcs/stat.css
+++ b/toj/jcs/stat.css
@@ -1,8 +1,32 @@
+div.stat_page > div.sub_pbox > div.subset{
+ width:240px;
+ margin:0px 0px 6px 0px;
+ float:left;
+}
+div.stat_page > div.sub_pbox > div.subset > table.filter{
+ width:100%;
+ border-collapse:collapse;
+ text-align:left;
+}
+div.stat_page > div.sub_pbox > div.subset > table.filter tr.head{
+ height:64px;
+}
+div.stat_page > div.sub_pbox > div.subset > table.filter tr.item{
+ height:32px;
+}
+div.stat_page > div.sub_pbox > div.subset > table.filter th.key,div.stat_page > div.sub_pbox > div.subset > table.filter td.key{
+ width:76px;
+}
+div.stat_page > div.sub_pbox > div.subset > table.filter th.value,div.stat_page > div.sub_pbox > div.subset > table.filter td.value{
+ width:158px;
+ padding:0px 0px 0px 6px;
+}
div.stat_page > div.sub_pbox > table.sublist{
width:978px;
- margin:0px 0px 6px 164px;
+ margin:0px 0px 6px 6px;
border-collapse:collapse;
text-align:left;
+ float:left;
}
div.stat_page > div.sub_pbox > table.sublist tr.head{
height:64px;
diff --git a/toj/jcs/stat.js b/toj/jcs/stat.js
index 67edcf1..44d1981 100755
--- a/toj/jcs/stat.js
+++ b/toj/jcs/stat.js
@@ -1,6 +1,6 @@
var stat = new function(){
var that = this;
- var stat_allsub_pbox = null;
+ var stat_sub_pbox = null;
var sub_node = null;
@@ -15,7 +15,7 @@ var stat = new function(){
that.sub_subid = null;
that.init = function(){
- stat_allsub_pbox = new class_stat_sub_pbox('allsub');
+ stat_sub_pbox = new class_stat_sub_pbox('sub');
subfile_mbox = new class_stat_subfile_mbox;
j_subres_mbox = $('#index_mask > div.stat_mask > div.subres_mbox');
@@ -24,9 +24,9 @@ var stat = new function(){
if(direct == 'in'){
index.title_set('TOJ-狀態');
- index.tab_add('allsub','/toj/stat/allsub/','全部動態');
- if(url_dpart[0] != 'allsub'){
- com.url_update('/toj/stat/allsub/');
+ index.tab_add('sub','/toj/stat/sub/','全部動態');
+ if(url_dpart[0] != 'sub'){
+ com.url_update('/toj/stat/sub/');
return 'stop';
}
}else if(direct == 'out'){
@@ -35,7 +35,7 @@ var stat = new function(){
return 'cont';
};
- that.stat_node.child_set(stat_allsub_pbox.node);
+ that.stat_node.child_set(stat_sub_pbox.node);
com.vus_root.child_set(that.stat_node);
@@ -174,6 +174,7 @@ var stat = new function(){
var class_stat_sub_pbox = function(pbox_name){
var that = this;
var j_pbox = $('#index_page > div.stat_page > div.' + pbox_name + '_pbox');
+ var j_filter = j_pbox.find('div.subset > table.filter');
var j_table = j_pbox.find('table.sublist');
var refresh_flag = false;
@@ -185,6 +186,8 @@ var class_stat_sub_pbox = function(pbox_name){
var top_queue = new Array;
var down_block = false;
+ var filter = new Object;
+
var sub_listset = function(j_item,subo){
var j_a;
@@ -230,7 +233,7 @@ var class_stat_sub_pbox = function(pbox_name){
}
j_ajax = $.post('/toj/php/status.php',{'action':'get_submit',
'data':JSON.stringify({
- 'filter':{'uid':null,'result':null,'proid':null,'lang':null},
+ 'filter':{'uid':filter.uid,'result':filter.result,'proid':null,'lang':null},
'sort':{'score':null,'runtime':null,'memory':null,'subid':[1,0]},
'wait':10,
'count':100,
@@ -289,7 +292,7 @@ var class_stat_sub_pbox = function(pbox_name){
down_block = true;
$.post('/toj/php/status.php',{'action':'get_submit',
'data':JSON.stringify({
- 'filter':{'uid':null,'result':null,'proid':null,'lang':null},
+ 'filter':{'uid':filter.uid,'result':filter.result,'proid':null,'lang':null},
'sort':{'score':null,'runtime':null,'memory':null,'subid':[0,esubid]},
'wait':0,
'count':50,
@@ -360,17 +363,13 @@ var class_stat_sub_pbox = function(pbox_name){
that.__super();
- that.node.url_chg = function(direct){
- if(direct == 'in'){
- index.tab_hl(pbox_name);
- that.fadein(j_pbox);
- refresh_flag = true;
+ that.node.url_chg = function(direct,url_upart,url_dpart){
+ var i;
+ var filter_part;
- sub_update(1);
- }else if(direct == 'out'){
- index.tab_ll(pbox_name);
- that.fadeout(j_pbox);
+ var _clear = function(){
$(window).off('scorll');
+ j_filter.find('td.value').text('None');
j_table.find('tr.item').remove();
if(j_ajax != null){
@@ -386,11 +385,52 @@ var class_stat_sub_pbox = function(pbox_name){
top_queue = new Array;
down_block = false;
subid_curr = null;
+
+ filter = new Object;
}
- return 'cont';
+ if(direct == 'in' || direct == 'same'){
+ if(direct == 'same'){
+ _clear();
+ }else{
+ index.tab_hl(pbox_name);
+ that.fadein(j_pbox);
+ }
+ refresh_flag = true;
+
+ filter.uid = null;
+ filter.result = null;
+ if(url_dpart[0] != undefined){
+ filter_part = url_dpart[0].split(':');
+ for(i = 0;i < filter_part.length;i += 2){
+ if(filter_part[i] == 'uid'){
+ filter.uid = parseInt(filter_part[i + 1]);
+ }else if(filter_part[i] == 'result'){
+ filter.result = parseInt(filter_part[i + 1]);
+ }
+ }
+ }
+
+ if(filter.uid != null){
+ j_filter.find('tr.uid > td.value').text(filter.uid);
+ }
+ if(filter.result != null){
+ j_filter.find('tr.result > td.value').text(filter.result);
+ }
+
+ sub_update(1);
+ }else if(direct == 'out'){
+ index.tab_ll(pbox_name);
+ that.fadeout(j_pbox);
+ _clear();
+ }
+
+ return 'stop';
};
+ j_pbox.find('div.subset > table.filter button.clear').on('click',function(e){
+ com.url_push('/toj/stat/sub/');
+ });
j_table.on('mousedown',function(e){
return false;
});
diff --git a/toj/jcs/user.css b/toj/jcs/user.css
index dc36dfe..0bd7e69 100755
--- a/toj/jcs/user.css
+++ b/toj/jcs/user.css
@@ -11,6 +11,12 @@ div.user_page > div.main_pbox > div.info_box > img.avatar{
width:100%;
display:block;
}
+div.user_page > div.main_pbox > div.data_box{
+ width:978px;
+ margin:0px 0px 0px 6px;
+ padding:32px 0px 32px 0px;
+ float:left;
+}
div.user_page > div.edit_pbox > div.edit_box{
width:240px;
margin:0px 0px 0px 246px;
diff --git a/toj/jcs/user.js b/toj/jcs/user.js
index 505d3ad..b20bdf0 100755
--- a/toj/jcs/user.js
+++ b/toj/jcs/user.js
@@ -284,6 +284,10 @@ var class_user_main_pbox = function(){
that.fadeout(j_pbox);
}
};
+
+ j_pbox.find('div.data_box > button.looksub').on('click',function(e){
+ com.url_push('/toj/stat/sub/uid:' + user.view_uid + '/');
+ });
}; __extend(class_user_main_pbox,class_com_pbox);
var class_user_edit_pbox = function(){
diff --git a/toj/php/status.inc.php b/toj/php/status.inc.php
index 33765b0..adc749f 100755
--- a/toj/php/status.inc.php
+++ b/toj/php/status.inc.php
@@ -29,9 +29,9 @@ class status
$condstr = $condstr.'"last_update">\''.pg_escape_string($last_update).'\' AND ';
}
- if($filter->userid != null)
+ if($filter->uid != null)
{
- $condstr = $condstr.'"uid"='.pg_escape_string($filter->userid).' AND ';
+ $condstr = $condstr.'"submit"."uid"='.pg_escape_string($filter->uid).' AND ';
}
if($filter->result != null)
{
@@ -70,7 +70,6 @@ class status
$ordstr = $ordstr.'"subid" '.($sort->subid[0]==0 ? 'DESC' : 'ASC');
}
-
$sqlstr = 'SELECT "submit".*, "user"."nickname", "problem"."proname" FROM ("submit" INNER JOIN "user" ON "submit"."uid"="user"."uid") INNER JOIN "problem" ON "submit"."proid"="problem"."proid" WHERE '.$condstr.' ORDER BY '.$ordstr.' LIMIT '.pg_escape_string($count).';';
//echo($sqlstr.'<br>');