// ドロワーメニューの表示状態の判別用 var positionKey = 'data-position'; var $defaultHtml = $(''); var initialSortList; var currentSortList; var defaultSuggestList = null; var isDefaultSort = true; $(function() { var lastKeyword = ''; var nowSearchNumber = 0; $('#suggestion-form').on('submit', function(event) { event.preventDefault(); }); /** open */ $('[data-category-modal="open"]').on('click', function(event) { var href = $(this).attr("href"); if (href != null && href != "") { return; } event.preventDefault(); var searchRefineId = $(this).attr("data-category-id"); var searchRefineName = $(this).attr("data-category-name"); var refineId = ''; if (1 < searchRefineId) { refineId = searchRefineId; $('[data-category-modal="inner"]').addClass('sub-category'); } else { $('[data-category-modal="inner"]').removeClass('sub-category'); } $('[data-category-modal="box"]').attr('data-refine-id', refineId); _categories.suggestion('', refineId); if (!$('body').hasClass("hidden")) { var scrollPosition = $(window).scrollTop(); $('body').addClass('hidden').css({'top': -scrollPosition}); $('body').attr(positionKey, scrollPosition); } $('[data-category-modal="box"]').fadeIn(300); $('[data-category-modal="word"]').focus(); // カテゴリー一覧の高さを設定 var modalHeight = $('[data-category-modal="inner"]').height(); var headHeight = $('[data-category-modal="head"]').height(); var listHeight = modalHeight - headHeight; var categoryId = $('[data-refine-id]').data('refine-id'); console.log(categoryId); if (categoryId == '') { $('[data-category-modal="result"]').css('height', listHeight + 'px'); } else { $('[data-category-modal="result"]').css('height', listHeight - 51 + 'px'); } }); /** close */ $('[data-category-modal="box"], [data-category-modal="close"]').on('click', function() { lastKeyword = ''; _categories.close(); }); $('[data-category-modal="inner"]').on('click', function(event) { event.stopPropagation(); }); /** accordion */ $('[data-category-modal="result"]').on('click', '[data-accordion]', function(e) { e.stopPropagation(); var $this = $(this); var id = $this.attr('data-accordion'); var icon = $this.closest('.material-icons'); var subList = $('[data-sub-list="'+ id +'"]'); if ($(subList).hasClass('hide')) { $this.closest('.material-icons').text('remove_circle'); $(subList).removeClass('hide'); return; } if (icon.text() === 'remove_circle') { $this.closest('.material-icons').text('add_circle'); $(subList).addClass('hide'); return; } var element = $(this).closest('.category-modal-list-item'); $.getJSON("/subCategories", {cat: id}, function(json) { var categoryList = json.result; var $html = $('
', {'class': 'category-caption'})) .append($('
', {'class': 'category-title'}).append(list.name)); var $block = $('
', {'class': 'category-caption'})) .append($('
', {'class': 'category-title'}).append(list.name)); var $block = $('
', {'class': 'category-caption', 'text': list.parentName})) .append($('
', {'class': 'category-title'}).append(list.name)); var $block = $('
', {'class': 'category-caption'})) .append($('
', {'class': 'category-title', 'text': '選択できるカテゴリーがありません'})); var $block = $('
', {'class': 'opinion-form', 'text': 'カテゴリーのご意見・ご要望はこちら'})); $html.append($category.clone().append($opinion)); $('[data-category-modal="result"]').html($html.html()).scrollTop(0); }); } }).on('keyup', function() { if ($(this).val() == "" && lastKeyword != $(this).val()) { defaultSuggestList = null; currentSortList = initialSortList; if (isDefaultSort == true) { _sort.initial(); } else { _sort.popular(); } } }); /*============================================ カテゴリーモーダルのテキスト検索クリアボタン ============================================*/ $('[data-category-modal="word"]').on('keyup', function(){ if ($('[data-category-modal="word"]').val() != "") { $('[data-category-clear]').css('display','block'); } }); $('[data-category-clear]').on('click',function(){ $('[data-category-modal="word"]').val(''); $('[data-category-clear]').css('display','none'); _categories.suggestion('', ''); }); }); /** default */ var _categories = { close : function() { $('[data-category-modal="word"]').val(""); $('[data-category-modal="result"]').empty(); isDefaultSort = true; $('[data-category-sort="default"]').addClass('active'); $('[data-category-sort="popular"]').removeClass('active'); var scrollPosition = $('body').attr(positionKey); if (typeof scrollPosition !== 'undefined' && scrollPosition !== false) { $('body').removeAttr(positionKey).removeClass('hidden').css({'top': 0}); window.scrollTo(0 , scrollPosition); } $('[data-category-modal="box"]').fadeOut(300); }, suggestion : function(word, refineId) { var refineId = $('[data-category-modal="box"]').attr("data-refine-id"); $.getJSON("/categories/suggestion", {word: word, cat: refineId}, function(json) { var categoryList = json.result; currentSortList = Object.create(categoryList); initialSortList = Object.create(categoryList); var $html = $('
', {'class': 'category-caption'})) .append($('
', {'class': 'category-title'}).append(list.name)); var $block = $('
', {'class': 'category-caption', 'text': list.parentName})) .append($('
', {'class': 'category-title'}).append(list.name)); var $block = $('
', {'class': 'category-modal-list-item-caption'})) .append($('
', {'class': 'category-modal-list-item-title', 'text': '選択できるカテゴリーがありません'}));
$html.append($category.clone().append($none));
}
var $opinion = $('', {'class': 'category-block opinion',
'href': 'https://docs.google.com/forms/d/e/1FAIpQLScqbnSZwiDIIF9cmTPBJEWZuPZ2HT1DfyiBfuOhpqRMV1M89Q/viewform?usp=sf_link',
'target': '_blank',
'rel': 'noopener'})
.append($('', {'class': 'material-icons'}).text('link'))
.append($(' ', {'class': 'opinion-form', 'text': 'カテゴリーのご意見・ご要望はこちら'}));
$html.append($category.clone().append($opinion));
$('[data-category-modal="result"]').html($html.html()).scrollTop(0);
});
}
}
/** sort */
var _sort = {
initial : function() {
var $html = $(' ', {'class': 'category-caption'}))
.append($(' ', {'class': 'category-title'}).append(list.name));
var $block = $(' ', {'class': 'category-caption', 'text': list.parentName}))
.append($(' ', {'class': 'category-title'}).append(list.name));
var $block = $(' ', {'class': 'opinion-form', 'text': 'カテゴリーのご意見・ご要望はこちら'}));
$html.append($category.clone().append($opinion));
$('[data-category-modal="result"]').html($html.html()).scrollTop(0);
},
popular : function() {
var $html = $(' ', {'class': 'category-caption'}))
.append($(' ', {'class': 'category-title'}).append(list.name));
var $block = $(' ', {'class': 'category-caption', 'text': list.parentName}))
.append($(' ', {'class': 'category-title'}).append(list.name));
var $block = $(' ', {'class': 'opinion-form', 'text': 'カテゴリーのご意見・ご要望はこちら'}));
$html.append($category.clone().append($opinion));
$('[data-category-modal="result"]').html($html.html()).scrollTop(0);
}
}
');
var $category = $('
');
var $category = $('