function makePdServiceSelectBox() {
function filterList() {
let searchText = $("#searchInput").val().toLowerCase();
let hasResults = false;
$("#reqAddTableSelect li:not(:first)").each(function () {
let itemText = $(this).text().toLowerCase();
if (itemText.includes(searchText)) {
$(this).show();
hasResults = true;
} else {
$(this).hide();
}
});
if (!hasResults) {
if ($("#noResultsMessage").length === 0) {
$("#reqAddTableSelect").append(
'
검색 결과가 없습니다.
'
);
}
} else {
$("#noResultsMessage").remove();
}
}
//제품 서비스 셀렉트 박스 이니시에이터
$(".chzn-select").each(function () {
$(this).select2($(this).data());
});
//제품 서비스 셀렉트 박스 데이터 바인딩
$.ajax({
url: "/auth-user/api/arms/pdServicePure/getPdServiceMonitor.do",
type: "GET",
contentType: "application/json;charset=UTF-8",
dataType: "json",
progress: true,
statusCode: {
200: function (data) {
//////////////////////////////////////////////////////////
$("#reqAddTableSelect").append(
''
);
for (var k in data.response) {
var obj = data.response[k];
$("#reqAddTableSelect").append(tableSelectOption(obj));
var newOption = new Option(obj.c_title, obj.c_id, false, false);
$("#selected_pdService").append(newOption).trigger("change");
}
$("#searchInput").on("keyup", filterList);
$("#searchInput").on("keydown", function (e) {
if (e.key === " ") {
e.preventDefault();
$(this).val($(this).val() + " ");
}
});
//////////////////////////////////////////////////////////
jSuccess("제품(서비스) 조회가 완료 되었습니다.");
}
},
// beforeSend: function () {
// //$("#regist_pdservice").hide(); 버튼 감추기
// },
// complete: function () {
// //$("#regist_pdservice").show(); 버튼 보이기
// },
error: function (e) {
jError("제품(서비스) 조회 중 에러가 발생했습니다.");
}
});
$("#selected_pdService").on("select2:open", function () {
// common.js에 정의됨
makeSlimScroll(".select2-results__options");
});
// --- select2 ( 제품(서비스) 검색 및 선택 ) 이벤트 --- //
$("#selected_pdService").on("select2:select", function (e) {
// 제품( 서비스 ) 선택했으니까 자동으로 버전을 선택할 수 있게 유도
// 디폴트는 base version 을 선택하게 하고 ( select all )
// 선택된 제품(서비스) 데이터 바인딩
var selectedService = $("#selected_pdService").select2("data")[0].text;
$("#select_PdService").text(selectedService);
var selectedHtml =
`
선택된 서버 :
` +
selectedService +
`
`;
$("#reqSender").html(selectedHtml); // 선택된 제품(서비스)
//~> 이벤트 연계 함수 :: 요구사항 표시 jsTree 빌드
//서비스(어플리케이션) 트리 로드
build_ReqData_By_PdService();
function bind_VersionData_By_PdService() {
$(".multiple-select option").remove();
$.ajax({
url: "/auth-user/api/arms/pdService/getVersionList?c_id=" + $("#selected_pdService").val(),
type: "GET",
dataType: "json",
progress: true,
statusCode: {
200: function (data) {
//////////////////////////////////////////////////////////
for (var k in data.response) {
var obj = data.response[k];
var $opt = $("", {
value: obj.c_id,
text: obj.c_title
});
$(".multiple-select").append($opt);
}
if (data.length > 0) {
// console.log("[ reqAdd :: bind_VersionData_By_PdService ] :: result = display 재설정.");
}
$(".multiple-select").multipleSelect("refresh");
//////////////////////////////////////////////////////////
jSuccess("버전 조회가 완료 되었습니다.");
}
},
error: function (e) {
jError("버전 조회 중 에러가 발생했습니다.");
}
});
}
//~> 이벤트 연계 함수 :: Version 표시 jsTree 빌드
bind_VersionData_By_PdService();
// setDefaultBtnText();
});
}
function makeVersionMultiSelectBox() {
//버전 선택 셀렉트 박스 이니시에이터
$(".multiple-select").multipleSelect();
}
function changeMultipleSelected() {
//초기화
$("#req_tree #node_2 ul li").each(function (a, item) {
$(this)
.find("a i")
.each(function () {
if (!$(this).hasClass("status-icon")) {
// 요구사항 상태 아이콘은 초기화에서 제외
$(this).replaceWith(" ");
}
});
});
var result = [];
var result_cids = [];
$("#multiversion option:selected").map(function (a, item) {
result.push(item.innerText);
result_cids.push(item.value);
});
$("#select_Version").text(isEmpty(result) ? "선택되지 않음" : result);
// console.log("[ reqAdd :: changeMultipleSelected ] :: version result = " + result_cids);
// 필터할 대상을 아이디로 잡아서 처리해야 하는데,
// $("#selected_pdService").val() 로 선택한 제품(서비스)를 구분하고
// version 정보를 매치 해서 대상 요구사항 이슈 c_id 를 받아오는 로직이 필요.
// console.log("select pdservice:: " + $("#selected_pdService").val());
if (result_cids != "") {
// 아무 버전도 선택 하지 않을 경우 처리 아이콘 초기화 까지만 수행
$.ajax({
url:
"/auth-user/api/arms/reqAdd/T_ARMS_REQADD_" +
$("#selected_pdService").val() +
"/getReqAddListByFilter?c_req_pdservice_versionset_link=" +
result_cids,
type: "GET",
dataType: "json",
progress: true,
statusCode: {
200: function (data) {
// reportSWOT.js
if (data && data.length > 0) {
reqEntityList = data;
renderFunctionPoints();
}
var appIds = [];
var loopCount = data.length;
for (var i = 0; i < loopCount; i++) {
if (data[i].attr.rel != "folder") {
appIds.push(data[i].c_id); // 조회해온 노드 아이디
}
}
// console.log(appIds);
var mappedApps = [];
for (var appId of appIds) {
$("#req_tree #node_2 ul li").each(function (a, item) {
$(this)
.find("a i")
.each(function () {
if (!$(this).hasClass("status-icon")) {
// 상태 아이콘 제외
$(this).replaceWith(" ");
}
});
// console.log(
// "[ reqAdd :: changeMultipleSelected ] :: version node value = " +
// item.id.substring(item.id.indexOf("_") + 1)
// );
// console.log("[ reqAdd :: changeMultipleSelected ] :: version filterNode value = " + appId);
if (item.id.substring(item.id.indexOf("_") + 1) == appId) {
mappedApps.push($(this));
return false;
}
});
}
// console.log(" mappedApps::: " + mappedApps);
for (var mappedApp of mappedApps) {
mappedApp.find("a ins").each(function () {
$(this).replaceWith("");
});
}
}
},
error: function (e) {
jError("버전 조회 중 에러가 발생했습니다.");
}
});
}
}
function build_ReqData_By_PdService() {
var jQueryElementID = "#req_tree";
var serviceNameForURL = "/auth-user/api/arms/reqAdd/T_ARMS_REQADD_" + $("#selected_pdService").val();
var serviceNameForSyncURL = "/auth-user/api/arms/reqAdd/sync/T_ARMS_REQADD_" + $("#selected_pdService").val();
jsTreeBuild(jQueryElementID, serviceNameForURL, serviceNameForSyncURL);
}
// DO NOT REMOVE :: jsTree 텍스트 검색 이벤트
$("#text").on("input", function () {
var searchString = $(this).val();
$("#req_tree").jstree("search", searchString);
});
function tableSelectOption(obj) {
const $li = document.createElement("li");
const $title = document.getElementById("tableTitle");
$li.innerHTML = `${obj.c_title}`;
$li.addEventListener("click", (e) => {
tableSelect(obj.c_id);
$title.innerText = obj.c_title;
});
return $li;
}
// usage:: reportSWOT의 onChange
function checkAnswer(e) {
const selectEl = document.querySelector(".select-type select");
changeTableType(selectEl.value);
}
function selectTreeNodeByReqId(reqId) {
$("#req_tree").jstree("select_node", "#node_" + reqId);
}