Skip to content

Instantly share code, notes, and snippets.

@marushu
Last active August 29, 2015 13:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save marushu/8878520 to your computer and use it in GitHub Desktop.
Save marushu/8878520 to your computer and use it in GitHub Desktop.
イベントデータをロード。 データのポップアップを非表示(閉じるをクリックしたら) ・イベントの終了時間 ・イベントid をsessionStorageに格納。 それぞれのイベントが終わって、 かつ非表示設定になっているイベントデータの情報をクリアする。
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(){
});
});
@marushu
Copy link
Author

marushu commented Feb 14, 2014

修正。イベントの数を出して、クリックで画面下から出す方式に変更。
開閉部分のcallbackがやたらと入れ子になってるのをどうにかしたい。。。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment