Index: arms/js/analysisCost.js =================================================================== diff -u -rd698a97ba19caff12bd6611e51a898c584b1c51f -r83edfd67668048e964394a067f6326e29b3d937b --- arms/js/analysisCost.js (.../analysisCost.js) (revision d698a97ba19caff12bd6611e51a898c584b1c51f) +++ arms/js/analysisCost.js (.../analysisCost.js) (revision 83edfd67668048e964394a067f6326e29b3d937b) @@ -287,7 +287,7 @@ console.log(" [ analysisCost :: costInput ] :: 인력데이터 => " + JSON.stringify(인력맵)); - versionInput(); + versionInput(pdServiceVersionLinks); manpowerInput(인력맵); /*if ($.fn.dataTable.isDataTable('#version-cost')) { @@ -378,12 +378,26 @@ });*/ } -function versionInput() { +function versionInput(pdServiceVersionLinks) { if ($.fn.dataTable.isDataTable('#version-cost')) { $('#version-cost').DataTable().clear().destroy(); } + let selectedVersions = pdServiceVersionLinks.split(','); + + let versionTableData = selectedVersions.map(versionId => { + let item = versionListData[versionId]; + let startDate = item.c_pds_version_start_date === "start" ? formatDate(new Date()) : formatDate(item.c_pds_version_start_date); + let endDate = item.c_pds_version_end_date === "end" ? formatDate(new Date()) : formatDate(item.c_pds_version_end_date); + return { // 객체를 바로 반환 + version: item.c_title, + period: startDate + " ~ " + endDate, + cost: 0, + c_id: item.c_id + }; + }); + var columnList = [ { name: "versionId", @@ -403,7 +417,7 @@ { name: "version", title: "버전", - data: "c_title", + data: "version", render: function (data, type, row, meta) { if (isEmpty(data) || data === "unknown") { return "
N/A
"; @@ -418,19 +432,21 @@ { name: "period", title: "기간", - data: "c_pds_version_start_date", + data: "period", render: function (data, type, row, meta) { - let startDate = row.c_pds_version_start_date === "start" ? formatDate(new Date()) : formatDate(row.c_pds_version_start_date); - let endDate = row.c_pds_version_end_date === "end" ? formatDate(new Date()) : formatDate(row.c_pds_version_end_date); - return startDate + ' ~ ' + endDate; + var dates = data.split(' ~ '); + if(type === 'sort' || type === 'type'){ + return dates[0]; // startDate로 정렬 + } + return data; // 원래 형태로 표시 }, className: "dt-center", visible: true }, { name: "cost", title: "비용 (입력)", - data: "", + data: "cost", render: function(data, type, row) { return ' 만원'; }, @@ -443,11 +459,14 @@ var columnDefList = []; var orderList = [[2, "desc"]]; var jquerySelector = "#version-cost"; - var ajaxUrl = "/auth-user/api/arms/pdServiceVersion/getVersionListBy.do?c_ids=" + selectedVersionId; + var ajaxUrl = ""; var jsonRoot = ""; var buttonList = []; var selectList = {}; var isServerSide = false; + var scrollY = false; + var data = versionTableData; + var isAjax = false; dataTableRef = dataTable_build( jquerySelector, @@ -459,7 +478,10 @@ selectList, orderList, buttonList, - isServerSide + isServerSide, + scrollY, + data, + isAjax ); } @@ -471,17 +493,17 @@ let manpowerData = Object.keys(인력맵).map((key) => { let data = {}; - data.이름 = key; + data.이름 = 인력맵[key].이름; + data.키 = key; data.연봉 = 인력맵[key].연봉; - data.성과 = 인력맵[key].성과; return data; }); console.log(" [ analysisCost :: manpowerInput ] :: manpowerData => " + JSON.stringify(manpowerData)); var columnList = [ { name: "name", - title: "투입 인력", + title: "이름", data: "이름", render: function (data, type, row, meta) { if (isEmpty(data) || data === "unknown") { @@ -495,11 +517,27 @@ visible: true }, { + name: "key", + title: "고유 키", + data: "키", + render: function (data, type, row, meta) { + if (isEmpty(data) || data === "unknown") { + return "
N/A
"; + } else { + return "
" + data + "
"; + } + return data; + }, + className: "dt-center", + visible: true + }, + { name: "annualIncome", title: "연봉 (입력)", - data: "", + data: "연봉", render: function(data, type, row) { - return ' 만원'; + var formattedData = parseInt(data).toLocaleString(); + return ' 만원'; }, className: "dt-center", visible: true @@ -508,7 +546,7 @@ var rowsGroupList = []; var columnDefList = []; - var orderList = [[1, "asc"]]; + var orderList = []; var jquerySelector = "#manpower-annual-income"; var ajaxUrl = null; var jsonRoot = null; @@ -589,28 +627,31 @@ function 비용분석계산() { $("#cost-analysis-calculation").click(function() { - /*let selectedVersions = selectedVersionId.split(','); // 문자열을 배열로 변환 + let isNumber = true; + // 버전 비용 + let selectedVersions = selectedVersionId.split(','); // 문자열을 배열로 변환 + let selectVersionData = []; for (let i = 0; i < selectedVersions.length; i++) { let item = versionListData[selectedVersions[i]]; let inputVersionValue = $(`input[name="version-cost"][data-owner=${selectedVersions[i]}]`).val(); let number = Number(inputVersionValue.replace(/,/g, '')); if (isNaN(Number(number))) { - alert("버전 비용 입력란에 숫자를 입력하여주세요."); - return; + isNumber = false; + break; } item.versionCost = number * 10000; item.consumptionCost = 9000000; selectVersionData.push(item); - console.log("***** " + JSON.stringify(selectVersionData)); - }*/ + } + console.log(" [ analysisCost :: 비용 분석 계산 ] :: selectVersionData -> " + JSON.stringify(selectVersionData)); - let isNumber = true; + /* // 버전 비용 var versionCost = []; @@ -633,7 +674,7 @@ consumptionCost: 9000000 }); }); - console.log(" [ analysisCost :: 비용 분석 계산 ] :: versionCost -> " + JSON.stringify(versionCost)); + console.log(" [ analysisCost :: 비용 분석 계산 ] :: versionCost -> " + JSON.stringify(versionCost));*/ // 인력별 연봉 @@ -643,6 +684,7 @@ // DataTable의 모든 행에 대해 반복 table.rows().every(function() { var name = this.data()['이름']; // 인력 + var key = this.data()['키']; // 키 var cost = Number(this.nodes().to$().find('td:last input').val().replace(/,/g, '')); // 비용 if (isNaN(Number(cost))) { @@ -652,20 +694,19 @@ annualIncome.push({ 사용자: name, - 연봉: cost + 키: key, + 연봉: cost * 10000 }); }); console.log(" [ analysisCost :: 비용 분석 계산 ] :: annualIncome -> " + JSON.stringify(annualIncome)); if (!isNumber) { alert("비용 입력란에 숫자를 입력해 주세요."); - return; } $("#compare_costs").height("620px"); // 버전별 투자 대비 소모 비용 차트 - //compareCostsChart(selectVersionData); - compareCostsChart(versionCost); + compareCostsChart(selectVersionData); $("#circularPacking").height("620px"); // Circular Packing with D3 차트