Index: arms/html/reqAdd/content-container.html =================================================================== diff -u -r3abc1c9a99e84470d32dc1d7669409486080c084 -rc135d33efc76ec264de92161e2731cffff48da8c --- arms/html/reqAdd/content-container.html (.../content-container.html) (revision 3abc1c9a99e84470d32dc1d7669409486080c084) +++ arms/html/reqAdd/content-container.html (.../content-container.html) (revision c135d33efc76ec264de92161e2731cffff48da8c) @@ -420,20 +420,21 @@
- 요구사항 별로 JIRA 연결을 재설정 할 수 있다.
- 1. 요구사항은 무조건 한개 이상의 버전을 적용받는다.
- 2. 요구사항이 예를 들어 2개 이상일 때. ( A버전, B버전 ~ )
- 2-1 . A버전의 요구사항과 연결되는 JIRA 설정은 따로이고
- 2-2 . B버전의 요구사항과 연결되는 JIRA 설정도 따로이다.
- 2-3 . 단 별도의 JIRA 설정이 없다면 BaseVersion 설정을 유지한다.
-
- 3. 따라서, 제품(서비스) - 버전 - 요구사항 - JIRA 연결 Mapper 테이블은 아래와 같다.
- ex) a-RMS - BaseVersion - 요구사항A - JIRA Project Z - 요구사항 타입의 이슈 아이디 ( 연결 포인트 )
- ex) a-RMS - 1.1.2 - 요구사항A - JIRA Project Z - 요구사항 타입의 이슈 아이디 ( 연결 포인트 )
- ex) a-RMS - 1.1.2 - 요구사항A - JIRA Project X - 요구사항 타입의 이슈 아이디 ( 연결 포인트 )
-
- 4. JIRA 프로젝트 테이블은 이미 있다 - 버전이랑 연결해야 하기 때문에 사용되었다. JIRA API 참조 - 5. +
+ +
+ + + + + + + + + +
제품(서비스)버전 이름JIRA Project
Index: reference/jquery-plugins/select2-4.0.13/src/scss/theme/default/layout.scss =================================================================== diff -u -rb210b3765af9a6302a8876ae84b72da094f8dd1b -rc135d33efc76ec264de92161e2731cffff48da8c --- reference/jquery-plugins/select2-4.0.13/src/scss/theme/default/layout.scss (.../layout.scss) (revision b210b3765af9a6302a8876ae84b72da094f8dd1b) +++ reference/jquery-plugins/select2-4.0.13/src/scss/theme/default/layout.scss (.../layout.scss) (revision c135d33efc76ec264de92161e2731cffff48da8c) @@ -121,6 +121,12 @@ }, 1000); } + +/////////////////////////////////////////////////////////////////////////////// +// buildDataTables +/////////////////////////////////////////////////////////////////////////////// + + // --- 데이터 테이블 설정 ( 곧 삭제 대상 ) --- // function setTable(tableDataUrl, dataList, options = null, selectedView = null) { jstreeDataTableReload(tableDataUrl, dataList, options, selectedView); Index: arms/js/reqAdd.js =================================================================== diff -u -re10a95615c0190af659583054b14ca83642f7d47 -rc135d33efc76ec264de92161e2731cffff48da8c --- arms/js/reqAdd.js (.../reqAdd.js) (revision e10a95615c0190af659583054b14ca83642f7d47) +++ arms/js/reqAdd.js (.../reqAdd.js) (revision c135d33efc76ec264de92161e2731cffff48da8c) @@ -2,6 +2,7 @@ //Document Ready //////////////////////////////////////////////////////////////////////////////////////// var selectedJsTreeId; // 요구사항 아이디 +var defaultTypeDataTable; $(function () { @@ -158,6 +159,8 @@ //상세보기 탭 셋팅 setDetailAndEditViewTab(); + defaultTypeDataTable = defaultType_dataTableLoad(selectedJsTreeId); + }else{ $('#folderTab').get(0).click(); $('.newReqDiv').show(); @@ -180,7 +183,7 @@ //////////////////////////////////////////////////////////////////////////////////////// //리스트 :: DataTable //////////////////////////////////////////////////////////////////////////////////////// -// --- 데이터 테이블 설정 --- // +// --- Root, Drive, Folder 데이터 테이블 설정 --- // function dataTableLoad(selectId) { // 데이터 테이블 컬럼 및 열그룹 구성 var columnList = [ @@ -219,6 +222,116 @@ $("body").find("[aria-controls='pdserviceTable']").css("width", "100px"); $("select[name=pdserviceTable_length]").css("width", "50px"); } + +// --- default 데이터 테이블 설정 --- // +// -------------------- checkbox 가 들어가야 하는 데이터테이블 이므로 row code를 사용함 ------------------ // +// -------------------- 데이터 테이블을 만드는 템플릿으로 쓰기에 적당하게 리팩토링 함. ------------------ // +function defaultType_dataTableLoad(selectId) { + + var jQueryElementID = "#jiraVerTable"; + var reg = /[\{\}\[\]\/?.,;:|\)*~`!^\-_+<>@\#$%&\\\=\(\'\"]/gi; + var jQueryElementStr = jQueryElementID.replace(reg,''); + console.log("jQueryElementStr ======== " + jQueryElementStr ); + var serviceNameForURL = "pdServiceJiraVer"; + var endPointUrl = "/getMonitor_Without_Root.do"; + // 데이터 테이블 컬럼 및 열그룹 구성 + var columnList = [ + { + data: "c_id", + render: function ( data, type, row ) { + if ( type === 'display' ) { + return ''; + } + return data; + }, + className: "dt-body-center" + }, + { data: "c_pdservice_name" }, + { data: "c_pdservice_version_name" }, + { data: "c_pdservice_jira_name"} + ]; + var rowsGroupList = []; + var columnDefList = [ + { + orderable: false, + className: 'select-checkbox', + targets: 0 + } + ]; + var selectList = { + style: 'os', + selector: 'td:first-child' + }; + var orderList = [[ 1, 'asc' ]]; + console.log("defaultType_dataTableLoad selectId -> " + selectId); + console.log("dataTableBuild :: jQueryElementID -> " + jQueryElementID + ", serviceNameForURL -> " + serviceNameForURL); + console.log("dataTableBuild :: columnList -> " + columnList + ", rowsGroupList -> " + rowsGroupList); + + console.log("dataTableBuild :: href: " + $(location).attr("href")); + console.log("dataTableBuild :: protocol: " + $(location).attr("protocol")); + console.log("dataTableBuild :: host: " + $(location).attr("host")); + console.log("dataTableBuild :: pathname: " + $(location).attr("pathname")); + console.log("dataTableBuild :: search: " + $(location).attr("search")); + console.log("dataTableBuild :: hostname: " + $(location).attr("hostname")); + console.log("dataTableBuild :: port: " + $(location).attr("port")); + + var authCheckURL = "/auth-user"; + + var tempDataTable = $(jQueryElementID).DataTable({ + ajax: { + url: authCheckURL + "/api/arms/" + serviceNameForURL + endPointUrl, + dataSrc: '' + }, + destroy: true, + processing: true, + responsive: true, + columns: columnList, + rowsGroup: rowsGroupList, + columnDefs: columnDefList, + select: selectList, + order: orderList, + drawCallback: function() { + console.log("dataTableBuild :: drawCallback"); + if ($.isFunction(dataTableCallBack )) { + dataTableCallBack(); + } + } + }); + + $(jQueryElementID + " tbody").on("click", "tr", function () { + + if ($(this).hasClass("selected")) { + $(this).removeClass("selected"); + } else { + tempDataTable.$("tr.selected").removeClass("selected"); + $(this).addClass("selected"); + } + + var selectedData = tempDataTable.row(this).data(); + selectedData.selectedIndex = $(this).closest('tr').index(); + + var info = tempDataTable.page.info(); + console.log( 'Showing page: '+info.page+' of '+info.pages ); + selectedData.selectedPage = info.page; + + dataTableClick(selectedData); + }); + + // ----- 데이터 테이블 빌드 이후 스타일 구성 ------ // + //datatable 좌상단 datarow combobox style + $(".dataTables_length").find("select:eq(0)").addClass("darkBack"); + $(".dataTables_length").find("select:eq(0)").css("min-height", "30px"); + //min-height: 30px; + + // ----- 데이터 테이블 빌드 이후 별도 스타일 구성 ------ // + //datatable 좌상단 datarow combobox style + $("body").find("[aria-controls='" + jQueryElementStr + "']").css("width", "100px"); + $("select[name=" + jQueryElementStr + "]").css("width", "50px"); + + return tempDataTable; +} +// -------------------- 데이터 테이블을 만드는 템플릿으로 쓰기에 적당하게 리팩토링 함. ------------------ // + // 데이터 테이블 구성 이후 꼭 구현해야 할 메소드 : 열 클릭시 이벤트 function dataTableClick(selectedData) { console.log(selectedData); @@ -1065,4 +1178,107 @@ }) .ajaxSend(function(){ console.log("ajaxComplete"); - }); \ No newline at end of file + }); + +/////////////////////////////////////////////////////////////////////////////// +// 탭 클릭 이벤트 +/////////////////////////////////////////////////////////////////////////////// +$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) { + var target = $(e.target).attr("href"); // activated tab + + if (target == "#jira") { + console.log("jira tab click event"); + //1-1. 제품(서비스) 아이디를 기준으로, -- $('#country').val() + //1-2. 요구사항 jsTree ID 가져와서 -- selectedJsTreeId + //2. 요구사항 테이블 ( REQADD ) 을 검색하여 + //3. JIRA_VER 정보에 체크해 주기. + //제품 서비스 셀렉트 박스 데이터 바인딩 + //요구사항 클릭하면 자세히보기 탭으로 가니까 이 로직은 유효하다. + var tableName = "T_ARMS_REQADD_" + $('#country').val(); + $.ajax({ + url: "/auth-user/api/arms/reqAdd/" + tableName + "/getNode.do", + data: { + c_id: selectedJsTreeId + }, + type: "GET", + contentType: "application/json;charset=UTF-8", + dataType : "json", + progress: true + }).done(function(data) { + + console.log(data.c_jira_ver_link); + + for(var key in data){ + var value = data[key]; + //console.log(key + "=" + value); + } + + if(isEmpty(data.c_jira_ver_link)){ + console.log("jiraVerArr is empty"); + }else{ + var jiraVerArrStr = data.c_jira_ver_link; + //특수 문자 중에 콤마는 빼고 지움 + var reg = /[\{\}\[\]\/?.;:|\)*~`!^\-_+<>@\#$%&\\\=\(\'\"]/gi; + jiraVerArrStr = jiraVerArrStr.replace(reg,''); + var jiraVerArr = jiraVerArrStr.split(','); + + var loopCount = jiraVerArr.length; + + for (var i = 0; i< loopCount ; i++) { + console.log( "loop check i = " + i ); + console.log( "loop check value = " + jiraVerArr[i] ); + $("input:checkbox[value='" + jiraVerArr[i] +"']").prop("checked", true); + } + } + + }).fail(function(e) { + }).always(function() { + }); + + } +}); + +/////////////////////////////////////////////////////////////////////////////// +// 요구사항 - 지라 연결 변경 버튼 클릭 이벤트 +/////////////////////////////////////////////////////////////////////////////// +$("#req_JiraVer_Connect_Change").click(function () { + + console.log("req_JiraVer_Connect_Change"); + + //JiraVersion 정보 셋팅 + var chk_Val = []; + $("input:checkbox[name=jiraVerList]:checked").each(function(i,iVal) { + chk_Val.push(iVal.value); + }); + console.log(JSON.stringify(chk_Val)); + + //반영할 테이블 네임 값 셋팅 + var tableName = "T_ARMS_REQADD_" + $('#country').val(); + + $.ajax({ + url: "/auth-user/api/arms/reqAdd/" + tableName + "/updateNode.do", + data: { + c_id: selectedJsTreeId, + c_version_link: "[]", + c_jira_link: "independent", + c_jira_ver_link: JSON.stringify(chk_Val) + }, + type: "POST", + progress: true + }).done(function(data) { + + for(var key in data){ + var value = data[key]; + console.log(key + "=" + value); + } + + var loopCount = 3; + for (var i = 0; i < loopCount ; i++) { + console.log( "loop check i = " + i ); + } + + }).fail(function(e) { + }).always(function() { + }); + +}); \ No newline at end of file