diff options
author | pzread <netfirewall@gmail.com> | 2013-04-10 20:39:16 +0800 |
---|---|---|
committer | pzread <netfirewall@gmail.com> | 2013-04-10 20:39:16 +0800 |
commit | 12f106053c740962fe9d3f80f2a5f77b52154f44 (patch) | |
tree | ca05b2422eacacefc17af97eeaf89b77eaacbdb2 | |
parent | 6935a81c6b852d78e1fb6e2454ef50f353ad6ae0 (diff) | |
download | taiwan-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-x | toj/index.html | 23 | ||||
-rwxr-xr-x | toj/jcs/common.js | 48 | ||||
-rwxr-xr-x | toj/jcs/stat.css | 26 | ||||
-rwxr-xr-x | toj/jcs/stat.js | 76 | ||||
-rwxr-xr-x | toj/jcs/user.css | 6 | ||||
-rwxr-xr-x | toj/jcs/user.js | 4 | ||||
-rwxr-xr-x | toj/php/status.inc.php | 5 |
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>'); |