ローディング中...
//初期ページ if(opts.page == ''){ this.page = 0; //デフォルト }else{ this.page = Number(opts.page) - 1; } // ページの中にあるコンテンツ数 if(opts.pagesize == ''){ this.pagesize = 20; //デフォルト }else{ this.pagesize = Number(opts.pagesize); } this.page_list_width = window.page_list_width; // 自分のページの前後に表示するページ数 this.result_count = g_res.length; window.return_page_flg = false; update_page_list(){ // 基本はsearch();を実行するとページネーションは元に戻す。ただし、pagenation情報をhashに入れてあり、かつ件数が超えていればpageを元に戻さない if(location.hash != ""){ var hash_page = location.hash.slice(1).split('&')[0].split('=')[1]; var hash_pagesize = location.hash.slice(1).split('&')[1].split('=')[1]; if((Number(hash_page)-1) * Number(hash_pagesize) > g_res.length){ this.page = 0; this.push_state(); window.return_page_flg = false; } } if(window.return_page_flg && location.hash == ""){ this.page = 0; this.push_state(); window.return_page_flg = false; } this.result_count = g_res.length; page_arr = []; max_page_number = Math.ceil(g_res.length / this.pagesize) - 1; max_page_width = Math.min(this.page_list_width*2 + 1, max_page_number + 1); if(this.page + 1 <= this.page_list_width){ for (var i = 0; i < max_page_width; i++) { page_arr[i] = i + 1; } }else if(this.page >= max_page_number - this.page_list_width){ for (var i = 0; i < max_page_width; i++) { page_arr[i] = i + max_page_number - max_page_width + 2; } }else{ for (var i = 0; i < max_page_width; i++) { page_arr[i] = i + this.page + 1 - this.page_list_width; } } this.page_list = page_arr; } push_state(){ if( window.history && window.history.pushState ){ if(location.search.indexOf('favorite') < 0){ window.history.pushState({page: this.page+1, pagesize: this.pagesize}, null, '#page=' + (this.page+1) + '&pagesize=' + this.pagesize); } } } this.on('update', this.update_page_list); //ボタンの動作 first() { this.page = 0 this.push_state(); } prev() { if (this.page > 0) { this.page-- } this.push_state(); } next() { if (this.page < (g_res.length / this.pagesize) - 1) { this.page++ } this.push_state(); //this.update_page_list(); } last() { this.page = Math.ceil(g_res.length / this.pagesize) - 1 this.push_state(); } filter(array) { return array.slice(this.page * this.pagesize, (this.page + 1) * this.pagesize) } move_page(event){ this.page = event.item.page_number - 1; this.push_state(); } disp_number_change(event){ this.pagesize = event.target.attributes.disp_number.value; this.page = 0; this.push_state(); }