Index: arms/js/reqKanban.js
===================================================================
diff -u -r6d094671150d3f37ebbabbb45f2ddbba5a5348c8 -r0e3a5693602d94493b5a268df7c23869c4524bf2
--- arms/js/reqKanban.js (.../reqKanban.js) (revision 6d094671150d3f37ebbabbb45f2ddbba5a5348c8)
+++ arms/js/reqKanban.js (.../reqKanban.js) (revision 0e3a5693602d94493b5a268df7c23869c4524bf2)
@@ -1,6 +1,11 @@
-let selectedPdServiceId; // 제품(서비스) 아이디
-let selectedVersionId; // 선택된 버전 아이디
-
+let selectedPdServiceId; // 선택한 제품(서비스) 아이디
+let selectedVersionId; // 선택한 버전 아이디
+const reqStateToIdMapping = { // 요구사항 상태에 id 매핑
+ '열림': 'kanban-open',
+ '진행중': 'kanban-progress',
+ '해결됨': 'kanban-resolved',
+ '닫힘': 'kanban-closed'
+};
////////////////////////////////////////////////////////////////////////////////////////
//Document Ready
////////////////////////////////////////////////////////////////////////////////////////
@@ -127,7 +132,7 @@
function bind_VersionData_By_PdService() {
$(".multiple-select option").remove();
$.ajax({
- url: "/auth-user/api/arms/pdService/getVersionList.do?c_id=" + $("#selected_pdService").val(),
+ url: "/auth-user/api/arms/pdService/getVersionList.do?c_id=" + selectedPdServiceId,
type: "GET",
dataType: "json",
progress: true,
@@ -181,20 +186,46 @@
progress: true,
statusCode: {
200: function (data) {
- console.log("리스트!!!: " + JSON.stringify(data));
- let reqList = data.map((item, index) => ({
- title: `${item.c_title} `,
- info: {
- reqVersions: "",
- reqPriority: (item.reqPriorityEntity && item.reqPriorityEntity.c_title) || "우선순위 정보 없음",
- reqState: (item.reqStateEntity && item.reqStateEntity.c_title) || "상태 정보 없음",
- reqDifficulty: (item.reqDifficultyEntity && item.reqDifficultyEntity.c_title) || "난이도 정보 없음",
- reqPlan: item.c_req_plan_time || "예상 일정 정보 없음"
+ // 요구사항 상태 별 리스트
+ const reqListByState = data.reduce((reqList, item, index) => {
+
+ // 요구사항 상태 가져오기
+ const state = (item.reqStateEntity && item.reqStateEntity.c_title) || "상태 정보 없음";
+
+ // 해당 상태의 리스트가 없으면 초기화
+ if (!reqList[state]) {
+ reqList[state] = [];
}
- }));
- loadKanban(reqList);
+ // 현재 상태에 해당하는 리스트에 아이템 추가
+ reqList[state].push({
+ id: state + "-" + index,
+ title: `${item.c_title} `,
+ info: {
+ reqVersions: "",
+ reqPriority: (item.reqPriorityEntity && item.reqPriorityEntity.c_title) || "우선순위 정보 없음",
+ reqDifficulty: (item.reqDifficultyEntity && item.reqDifficultyEntity.c_title) || "난이도 정보 없음",
+ reqState: state,
+ reqPlan: item.c_req_plan_time || "예상 일정 정보 없음"
+ }
+ });
+
+ return reqList;
+ }, {});
+
+ //console.log("reqListByState: ", JSON.stringify(reqListByState));
+
+ // 칸반 보드 구성
+ const reqBoardByState = Object.keys(reqStateToIdMapping).map(state => ({
+ id: reqStateToIdMapping[state], // 요구사항 상태 별 id
+ title: state, // 요구사항 제목
+ item: reqListByState[state] // 요구사항 상태 별 리스트
+ }));
+
+ // 칸반 보드 로드
+ loadKanban(reqListByState, reqBoardByState);
+ jSuccess("보드가 로드 되었습니다.");
}
},
error: function (e) {
@@ -203,7 +234,7 @@
});
}
-function loadKanban(reqList) {
+function loadKanban(reqListByState, reqBoardByState) {
$("#myKanban").empty();
@@ -212,35 +243,21 @@
gutter : '15px',
responsivePercentage: true,
dragBoards: false,
- /*click : function(el){
- alert(el.innerHTML);
- },*/
- boards :[
- {
- 'id' : 'kanban_open',
- 'title' : '열림',
- 'item' : reqList
- },
- {
- 'id' : 'kanban_progress',
- 'title' : '진행 중'
- },
- {
- 'id' : 'kanban_resolved',
- 'title' : '해결됨'
- },
- {
- 'id' : 'kanban_closed',
- 'title' : '닫힘'
- }
- ]
+ boards : reqBoardByState
});
// 상세 정보 클릭 이벤트
$('.show-info').click(function() {
- const index = $(this).data('index');
- console.log("$$ " + JSON.stringify(reqList[index].info));
- alert(JSON.stringify(reqList[index].info));
+ const id = $(this).data('id');
+ const state = $(this).data('state');
+
+ const item = reqListByState[state].find(item => item.id === id);
+
+ if (item && item.info) {
+ alert(JSON.stringify(item.info));
+ } else {
+ console.error('[ reqKanban :: loadKanban ] :: info 정보를 찾을 수 없습니다.', { id, state });
+ }
});
}