var isLoading = false;
var afterCount = 0;
var hasMoreData = true;
var currentSearchAfter = [];
////////////////////////////////////////////////////////////////////////////////////////
//Document Ready
////////////////////////////////////////////////////////////////////////////////////////
function execDocReady() {
checkAdminAccess(function() {
let pluginGroups = [
["../reference/light-blue/lib/vendor/jquery.ui.widget.js", "../reference/lightblue4/docs/lib/widgster/widgster.js"],
["../reference/lightblue4/docs/lib/bootstrap-select/dist/js/bootstrap-select.min.js"]
];
loadPluginGroupsParallelAndSequential(pluginGroups)
.then(function () {
console.log("모든 플러그인 로드 완료");
$(".widget").widgster();
$('.selectpicker').selectpicker();
$("#sidebar").hide();
$(".wrap").css("margin-left", 0);
$("#footer").load("/cover/html/template/landing-footer.html");
loadPocData([], false);
loadStatistics();
})
.catch(function (error) {
console.error("플러그인 로드 중 오류 발생");
console.error(error);
});
});
}
function createLoadingRow() {
return `
|
로딩 중...
|
`;
}
function createLoadMoreButton(_searchAfter) {
return `
|
|
`;
}
function createNoDataRow() {
return `
|
등록된 POC 요청이 없습니다.
|
`;
}
function loadPocData(_searchAfter, _append) {
var $tbody = $("#poc-tbody");
var SIZE = 10;
if (isLoading) {
return;
}
isLoading = true;
if (_searchAfter && _searchAfter.length > 0) {
afterCount++;
}
var params = {
size: SIZE,
searchAfter: _searchAfter
};
$.ajax({
url: "/auth-anon/api/arms/poc/getPocList.do",
type: "GET",
data: params,
beforeSend: function () {
if (!_append) {
$tbody.html(createLoadingRow());
}
},
success: function (response) {
if (!response.success || !response.response) {
$(".loading-row").remove();
if (!_append) {
$tbody.html(createNoDataRow());
}
hasMoreData = false;
isLoading = false;
return;
}
let data = response.response;
let totalCount = data.totalHits || 0;
let items = data.pocEntities || [];
let strTotalCount = Number(totalCount).toLocaleString();
if (totalCount >= 10000) {
strTotalCount += "+";
}
$("#table_total_counts").text(strTotalCount);
if (!_append) {
$tbody.empty();
afterCount = 0;
} else {
$("#load-more-row").remove();
}
if (totalCount > 0 && totalCount <= (1 + afterCount) * SIZE) {
hasMoreData = false;
} else {
hasMoreData = !(items && items.length < SIZE);
}
if (totalCount === 0 || !items || items.length === 0) {
$tbody.html(createNoDataRow());
isLoading = false;
return;
}
items.forEach(function (item) {
$tbody.append(createPocRow(item));
});
currentSearchAfter = data.searchAfter;
if (hasMoreData) {
$tbody.append(createLoadMoreButton(currentSearchAfter));
}
isLoading = false;
},
error: function () {
$(".loading-row").remove();
$("#load-more-row").remove();
isLoading = false;
hasMoreData = false;
},
complete: function () {
isLoading = false;
}
});
}
function createPocRow(item) {
let statusBadge = getStatusBadge(item.c_poc_status);
return `
| ${statusBadge} |
${item.c_poc_assignee_name || ''} |
${item.c_poc_company_name || ''} |
${item.c_poc_full_name} |
${item.c_poc_job_title || ''} |
${item.c_poc_company_size || ''} |
${item.c_poc_email_address || ''} |
${item.c_poc_contact_number || ''} |
${item.c_poc_inquiry_reason || ''} |
${item.c_poc_country || ''} |
${formatDate(item.c_poc_inquiry_date)} |
|
`;
}
function formatDate(dateObj) {
if (!dateObj) return '';
if (typeof dateObj === 'object' && dateObj.year) {
return dateObj.year + '.' +
String(dateObj.monthValue).padStart(2, '0') + '.' +
String(dateObj.dayOfMonth).padStart(2, '0');
}
try {
let date = new Date(dateObj);
if (!isNaN(date.getTime())) {
return date.toLocaleDateString();
}
} catch (e) {
console.error("날짜 파싱 실패:", e);
}
return '';
}
function getStatusBadge(status) {
if (!status) return '';
let lowerStatus = status.toLowerCase();
let badges = {
pending: '대기',
inprogress: '진행',
completed: '완료',
canceled: '취소'
};
return badges[lowerStatus] || status;
}
function goToDetail(id) {
window.location.href = "/cover/template.html?page=pocAdminDetail&id=" + id;
}
function loadStatistics() {
$.ajax({
url: "/auth-anon/api/arms/poc/getPocList.do",
type: "GET",
data: {
page: 0,
size: 1
},
success: function(response) {
if (response.success && response.response) {
$("#totalCount").text(response.response.totalHits || 0);
}
},
error: function(xhr, status, error) {
console.error("통계 데이터 로드 실패:", error);
$("#totalCount").text("0");
}
});
}
function checkAdminAccess(callback) {
$.ajax({
url: "/auth-user/me",
type: "GET",
timeout: 7313,
global: false,
statusCode: {
200: function (json) {
console.log("[ POC Admin :: authUserCheck ] userName = " + json.preferred_username);
console.log("[ POC Admin :: authUserCheck ] roles = " + json.realm_access.roles);
var permissions = json.realm_access.roles;
if (permissions && permissions.indexOf("ROLE_ADMIN") != -1) {
if (callback) callback();
} else {
window.location.href = '/cover/template.html?page=poc';
}
},
401: function() {
window.location.href = '/cover/template.html?page=poc';
}
},
error: function() {
window.location.href = '/cover/template.html?page=poc';
}
});
}