Last active
August 29, 2015 13:56
-
-
Save marushu/8878520 to your computer and use it in GitHub Desktop.
イベントデータをロード。 データのポップアップを非表示(閉じるをクリックしたら) ・イベントの終了時間 ・イベントid をsessionStorageに格納。 それぞれのイベントが終わって、 かつ非表示設定になっているイベントデータの情報をクリアする。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var nagasa = $(".each_creature_event li.live").size(); | |
var storage = sessionStorage; | |
var storageLength = storage.length; | |
var arr = new Array(); | |
var checkarr = new Array(); | |
var date = new Date(); | |
var unixTimestamp = Math.round( date.getTime() / 1000 ); | |
var pageAttribute = $("html").attr("lang"); | |
// 「×」ボタンクリックでli.liveを非表示にする | |
$(".btn_close").on("click", function(){ | |
var key = $(this).parents("li").attr("id"); | |
var actual_end_time = $(this).attr("id"); | |
// sessionStorageへキーと値をセット | |
storage.setItem( key, actual_end_time ); | |
//jaDisplayCounter = jaDisplayCounter - 1; | |
//enDisplayCounter = enDisplayCounter - 1; | |
if(pageAttribute == "ja") { | |
jaDisplayCounter = jaDisplayCounter - 1; | |
$("#counter").text(jaDisplayCounter); | |
} else if(pageAttribute == "en") { | |
enDisplayCounter = enDisplayCounter - 1; | |
$("#counter").text(enDisplayCounter); | |
} | |
if(jaDisplayCounter > 0 || enDisplayCounter > 0) { | |
$("#counter").show(); | |
} else if(jaDisplayCounter == 0 || enDisplayCounter == 0) { | |
$("#counter").hide(); | |
$("#btn_toggle").hide(); | |
$("#load_area").slideUp(300, "linear").remove(); | |
} | |
// クリックで親要素 liをfadeOut | |
var parentList = $(this).parents("li"); | |
parentList.addClass("checked").fadeOut(); | |
}); | |
// liを個別に数える | |
$(".each_creature_event li").each(function(i){ | |
// storage用に値をセット | |
if(storageLength != 0) { | |
var _key = storage.key(i); | |
arr[i] = _key; | |
} | |
// 現在時刻より10分前のイベントのみ表示 | |
// 各言語毎に表示を分ける | |
if(pageAttribute == "ja") { | |
if(!$(this).hasClass("hide") && ($(this).is(".ja.coming_soon") || $(this).is(".ja.just_now")) /* || $(this).hasClass("just_now") */) { | |
$(this).show(); | |
} | |
} else if(pageAttribute == "en") { | |
if(!$(this).hasClass("hide") && ($(this).is(".en.coming_soon") || $(this).is(".en.just_now")) /* || $(this).hasClass("just_now") */) { | |
$(this).show(); | |
} | |
} | |
// storage用にイベントのidをセット | |
var checkId = $(this).attr("id"); | |
checkarr[i] = checkId; | |
}); | |
// 非表示確認 | |
for(j=0; j < storageLength; j++) { | |
if($.inArray( arr[j], checkarr ) >= 0 ) { | |
$("#" + arr[j]).hide(); | |
// 非表示にしたイベントのliにhideクラスを追加 | |
$("#" + arr[j]).addClass("hide").hide(); | |
} | |
} | |
// この時点でのcoming_soonクラスの数をカウントする | |
// 日本語イベント | |
var jaCominglCouter = $(".each_creature_event .ja.coming_soon").length; | |
var jaJustnowCounter = $(".each_creature_event .en.just_now").length; | |
var jaRealCouter = jaCominglCouter + jaJustnowCounter; | |
// この時点でcoming_soonとhide両方持っている数をカウントする | |
var jaTwosoonClases = $(".each_creature_event .ja.coming_soon.hide").length; | |
var jaTwojustnowCounter = $(".each_creature_event .ja.just_now.hide").length; | |
var jaTwoClases = jaTwosoonClases + jaTwojustnowCounter; | |
jaDisplayCounter = jaRealCouter - jaTwoClases; | |
// この時点でのcoming_soonクラスの数をカウントする | |
// 英語イベント | |
var enCominglCouter = $(".each_creature_event .en.coming_soon").length; | |
var enJustnowCounter = $(".each_creature_event .en.just_now").length; | |
var enRealCouter = enCominglCouter + enJustnowCounter; | |
// この時点でcoming_soonとhide両方持っている数をカウントする | |
var enTwosoonClases = $(".each_creature_event .en.coming_soon.hide").length; | |
var enTwojustnowCounter = $(".each_creature_event .en.just_now.hide").length; | |
var enTwoClases = enTwosoonClases + enTwojustnowCounter; | |
enDisplayCounter = enRealCouter - enTwoClases; | |
if(pageAttribute == "ja") { | |
if($(".eventbox").find("#counter").length <= 0) { | |
$("#counter").fadeIn(); | |
$("<span id='counter'></span>").appendTo(".eventbox h1"); | |
$("#counter").text("なに?ここか!!" + jaDisplayCounter); | |
} | |
} else if(pageAttribute == "en") { | |
if($(".eventbox").find("#counter").length <= 0) { | |
$("#counter").fadeIn(); | |
$("<span id='counter'></span>").appendTo(".eventbox h1"); | |
$("#counter").text("なに?ここか!!" + enDisplayCounter); | |
} | |
} | |
if(pageAttribute == "ja") { | |
$("#counter").text(jaDisplayCounter); | |
$("#counter").show(); | |
if($("#clickable").length <= 0) { | |
$("#event").wrapAll("<div id='clickable'></div>"); | |
} | |
} else if(pageAttribute == "en") { | |
$("#counter").text(enDisplayCounter); | |
$("#counter").show(); | |
if($("#clickable").length <= 0) { | |
$("#event").wrapAll("<div id='clickable'></div>"); | |
} | |
} | |
if(jaDisplayCounter == 0 || enDisplayCounter == 0) { | |
$("#event").unwrap(); | |
} | |
// 非表示にしたイベントが終わったらsesseionStorageも削除する | |
if(storageLength != 0) { | |
for( i = 0; i < storageLength; i++ ) { | |
var endkey = storage.key(i); | |
var endtime = storage.getItem(endkey) - ( 9 * 60 * 60 ); | |
if( endtime < unixTimestamp ) { | |
storage.removeItem(endkey); | |
arr.splice(0, endkey); | |
} | |
} | |
} | |
//footer information box | |
function addCloseBtn() { | |
if($("btn_toggle").size() == 0) { | |
$("<p id='btn_toggle'>×</p>").appendTo(".eventbox").fadeIn(300, "linear", function(){ | |
$("#btn_toggle").on("click", boxSlideUp); | |
}); | |
} | |
} | |
function boxSlideUp() { | |
$("#load_area:not(:animated)").slideUp(300, "linear", function(){ | |
$("#btn_toggle").remove(); | |
}); | |
} | |
$("#clickable").on("click", function(){ | |
$("#load_area:not(:animated)").slideToggle( 300, "linear", function(){ | |
}); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
修正。イベントの数を出して、クリックで画面下から出す方式に変更。
開閉部分のcallbackがやたらと入れ子になってるのをどうにかしたい。。。