');
} else {
popPanel.find(".no-result").remove();
}
}
function toggleLoadingView(that, show, clearItems) {
var popPanel = $(that).find(".menu.pop-panel");
var scrollingView = $(that).find(".scrolling.menu");
var hasLoading = popPanel.find('.message').hasClass('loading')
if (show && !hasLoading) {
if (clearItems) scrollingView.html("");
popPanel.append('
å è½½ä¸...
');
toggleNoResultView(that, false);
} else {
popPanel.find(".loading").remove();
}
}
function fetchTags(that, search, page) {
var searchParams = search || "";
var pageParams = page || 1;
if (flag_is_loading) return;
flag_is_loading = true;
var clearItems = pageParams === 1;
toggleLoadingView(that, true, clearItems);
$.ajax({
url: "/" + gon.user_project + "/tags.json",
data: {
search: searchParams,
page: pageParams,
},
type: "GET",
xhrFields: {
withCredentials: true,
},
success: function (data) {
var _scrollingView = $(that).find(".scrolling.menu");
flag_total_pager = data.total_pages;
if (data.tags && data.count > 0) {
if (pageParams === 1) {
_scrollingView.html('');
}
data.tags.forEach((tag) => {
       const itemDiv = document.createElement('div');
       itemDiv.classList.add('item');
       itemDiv.setAttribute('data-value', tag.name);
itemDiv.setAttribute('title', tag.name);
       itemDiv.innerText = window.filterXSS(tag.name);
       _scrollingView.append(itemDiv)
});
return;
}
// æ æ°æ®
if (pageParams === 1 && data.count === 0) {
toggleNoResultView(that, true);
}
},
error: function () {
toggleNoResultView(that, true);
},
complete: function () {
flag_is_loading = false;
toggleLoadingView(that, false);
},
});
}
var debounceFetch = window.globalUtils.debouce(function (search, page) {
fetchTags(this, search, page);
}, 350);
var debounceLoadMore = window.globalUtils.debouce(function () {
if (flag_is_loading) return;
flag_page_number += 1;
if (flag_page_number > flag_total_pager) return;
fetchTags(this, flag_search_text, flag_page_number);
}, 350);
function scrollLoadMore(that) {
var scrollingView = $(that).find(".scrolling.menu");
scrollingView.on("scroll", function () {
var containerHeight = scrollingView.height();
var totalHeight = 0; // ææåå
ç´ æ»é«åº¦
scrollingView.children().each(function () {
totalHeight += $(this).outerHeight(true); // å°åå
ç´ é«åº¦ç¸å
});
var scrollTopVal = scrollingView.scrollTop();
if (totalHeight - containerHeight - scrollTopVal <= 30) {
debounceLoadMore.call(that);
}
});
}
function resetFlagVal() {
flag_is_loading = false;
flag_search_text = "";
flag_page_number = 1;
flag_total_pager = 1;
}
function onEventInputChange(e) {
resetFlagVal();
flag_search_text = e.target.value;
debounceFetch.call(this, flag_search_text, 1);
}
$(".release_compare.ui.dropdown").dropdown({
forceSelection: false,
selectOnKeydown: false,
selector: { search: ".none" },
onShow: function () {
resetFlagVal();
fetchTags(this);
scrollLoadMore(this);
var searchInput = $(this).find(".search.input input");
searchInput.on("input", onEventInputChange.bind(this));
},
onHide: function () {
resetFlagVal();
var searchInput = $(this).find(".search.input input");
searchInput.off("input", onEventInputChange.bind(this));
searchInput.val("");
var scrollingView = $(this).find(".scrolling.menu");
scrollingView.append('
');
},
onChange: function (tag) {
var compareTag = tag;
var curTag = $(this).parents(".release-meta").find(".tag-name").attr("data-tag-name");
var slug = [compareTag, curTag].join('...');
window.location.href = "/" + gon.user_project + "/compare/" + slug;
}
});
});